diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/.gitignore b/office/misc/goldendict/files/goldendict-1.5.0-RC2/.gitignore deleted file mode 100644 index f6cdc37afe..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/.gitignore +++ /dev/null @@ -1,40 +0,0 @@ -*.o -*~ - -mouseover_win32/*.dll -mouseover_win32/*.a - -locale/*.qm -debug/ -build/ -release/ -tmp/ -goldendict -winlibs/lib32-48/ - -Makefile -Makefile.Debug -Makefile.Release - -goldendict.pro.user -goldendict.pro.user.* -object_script.goldendict.Debug -object_script.goldendict.Release - -version.txt - -.gitattributes - -/goldendict.app/ -/GoldenDict.app/ -*.dmg - -.DS_Store -Info.plist -GoldenDict.xcodeproj/ - -# visual studio files -*.sdf -*.opensdf -*.suo -*.vcxproj.user diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/.gitmodules b/office/misc/goldendict/files/goldendict-1.5.0-RC2/.gitmodules deleted file mode 100644 index 5f74cc1a87..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "winlibs/lib/msvc"] - path = winlibs/lib/msvc - url = git://github.com/Tvangeste/goldendict-winlibs-prebuilt.git diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/CREDITS.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/CREDITS.txt deleted file mode 100644 index ff530d2ca9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/CREDITS.txt +++ /dev/null @@ -1,32 +0,0 @@ -Konstantin Isakov : Principal author of the program -Jennie Petoumenou : Greek transliteration and Greek translation -Mindaugas Baranauskas : Lithuanian translation -Vit Pelcak : Czech translation -Hero Phương , Trần Đình Anh Tuấn : Vietnamese translation -Daniele Di Pisa : Italian translation -Daniel Kaneider: German translation -Zhang Jinsong : Simplified Chinese translation -Usama Akkad , Linux Arab Community Team : Arabic translation -Korostil Daniel : Ukrainian translation -Grzegorz Karpowicz : Polish translation -Nardog : Japanese translation -Maha 吳寶原, Ray Chou 周邦信, Marcus Bingenheimer, 黃文龍 : Traditional Chinese translation -Besmir Godole : Albanian translation -Leonardo Montenegro , MCHAL , Alexandro Casanova : Brazilian Portuguese translation -Julian Depetris Chauvin : Interface enhancements -Yanina Weingast : Argentinian Spanish translation -Tvangeste : Interface enhancements -Zdenko Podobný : Slovak translation -Şükrü Yekta Karabulut : Turkish translation -Amos Batto : Quechua, Aymara and Bolivian Spanish translations -Carlos A. Cortijo Bon : Spanish from Spain translation -Victor Ibragimov : Tajik translation -Maksim Tamkovič : Belarusian translation and transliteration -VirtualTam : French translation -Panho Ku : Korean translation -Тим Перце : Serbian translation -Cris van Minnen: Dutch translation -Timon Wong : MDict (*.mdx/*.mdd) dictionary format -PICTT Turkmenistan: Turkmen translation -Nasrollah Noori : Persian translation -Vladimir Gerovski: Macedonian Translation diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/GoldenDict.exe.manifest b/office/misc/goldendict/files/goldendict-1.5.0-RC2/GoldenDict.exe.manifest deleted file mode 100644 index c1375d4eec..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/GoldenDict.exe.manifest +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/LICENSE.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/LICENSE.txt deleted file mode 100644 index 912db06be0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/LICENSE.txt +++ /dev/null @@ -1,691 +0,0 @@ - GoldenDict, a dictionary lookup program. - Copyright (C) 2008-2012 Konstantin Isakov - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - The text of the license follows. - - - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.props b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.props deleted file mode 100644 index 0b9d2d4aa4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - %(Filename).qm - false - $(QTDIR)\bin\lrelease.exe - %(LRELEASE) [AllOptions] [AdditionalOptions] [Inputs] - - - - $(BuildGenerateSourcesTargets);_QtTranslate - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.targets b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.targets deleted file mode 100644 index a9642e3109..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.targets +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - QtTranslate - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml - - - - - - - - - - - - - @(QtTranslate, '|') - - - - - - - - - - - True - %(QtTranslate.Identity) - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.xml b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.xml deleted file mode 100644 index 2a8e1affff..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/lrelease.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.props b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.props deleted file mode 100644 index f08bd9c54f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.props +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - %(Filename)%(Extension).$(Platform).$(Configuration).cpp - false - false - - - - false - - - - - $(QTDIR)\bin\moc.exe - - - - %(MOC) [AllOptions] [AdditionalOptions] [Inputs] - - - - $(BuildGenerateSourcesTargets);_QtMOCCompile - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.targets b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.targets deleted file mode 100644 index 5d3bb13058..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.targets +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - QtMOCCompile - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml - - - - - - - - - - - - - - - true - - - - - - @(BuddyClCompile->'%(AdditionalIncludeDirectories)') - @(BuddyClCompile->'%(PreprocessorDefinitions)') - @(BuddyClCompile->'%(UndefinePreprocessorDefinitions)') - - - - - @(QtMOCCompile, '|') - - - - - - - - - - - - - - - - - True - %(QtMOCCompile.Identity) - TurnOffAllWarnings - NotUsing - %(QtMOCCompile.AdditionalIncludeDirectories);%(QtMOCCompile.DefaultIncludeDirectories) - %(QtMOCCompile.DefaultPreprocessorDefinitions);%(QtMOCCompile.PreprocessorDefinitions) - %(QtMOCCompile.DefaultUndefinePreprocessorDefinitions);%(QtMOCCompile.UndefinePreprocessorDefinitions) - %(QtMOCCompile.ClCompileAssemblerListingLocation) - %(QtMOCCompile.ClCompileObjectFileName) - %(QtMOCCompile.ClCompileXMLDocumentationFileName) - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.xml b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.xml deleted file mode 100644 index faa0d21d62..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/moc.xml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.props b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.props deleted file mode 100644 index 2ea139663c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.props +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - %(Filename)%(Extension).cpp - %(Filename) - - -1 - - true - false - $(QTDIR)\bin\rcc.exe - $(QTDIR)\bin\rcc.exe;$(MSBuildProjectFile) - - - - %(RCC) [AllOptions] [AdditionalOptions] [Inputs] - - - - $(BuildGenerateSourcesTargets);_QtRCCCompile - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.targets b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.targets deleted file mode 100644 index 147b0599f0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.targets +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - QtRCCCompile - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml - - - - - - - - - - - - - - - - - - - - @(QtRCCDeps);%(QtRCCCompile.AdditionalDependencies) - - - - - - - - - - - @(QtRCCCompile, '|') - - - - - - - - - - - True - %(QtRCCCompile.Identity) - TurnOffAllWarnings - NotUsing - %(QtRCCCompile.ClCompileAssemblerListingLocation) - %(QtRCCCompile.ClCompileObjectFileName) - %(QtRCCCompile.ClCompileXMLDocumentationFileName) - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.xml b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.xml deleted file mode 100644 index 76627a5839..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/rcc.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.props b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.props deleted file mode 100644 index 39e8d4fa15..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.props +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - %(Filename)%(Extension).h - - false - $(QTDIR)\bin\uic.exe - %(UIC) [AllOptions] [AdditionalOptions] [Inputs] - - - - $(BuildGenerateSourcesTargets);_QtUICCompile - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.targets b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.targets deleted file mode 100644 index 3616fd8d66..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.targets +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - QtUICCompile - - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - $(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml - - - - - - - - - - - - - @(QtUICCompile, '|') - - - - - - - - - - - True - %(QtUICCompile.Identity) - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.xml b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.xml deleted file mode 100644 index fcdad7cdee..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/QtExtensions/uic.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/custom.props b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/custom.props deleted file mode 100644 index 30826fd3fe..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/custom.props +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/custom.targets b/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/custom.targets deleted file mode 100644 index ce64f4319c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/MSBuild/custom.targets +++ /dev/null @@ -1,43 +0,0 @@ - - - - - $(ProjectDir)version.txt - $(IntDir)version.txt - - - - - - - - - - $([System.IO.File]::ReadAllText($(VersionFile)).Trim()) - $([System.IO.File]::ReadAllText($(NewVersionFile)).Trim()) - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/README.md b/office/misc/goldendict/files/goldendict-1.5.0-RC2/README.md deleted file mode 100644 index 2d572f0fde..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/README.md +++ /dev/null @@ -1,118 +0,0 @@ -## Introduction - -GoldenDict is a feature-rich dictionary lookup program, supporting multiple dictionary formats (StarDict/Babylon/Lingvo/Dictd/AARD/MDict/SDict) and online dictionaries, featuring perfect article rendering with the complete markup, illustrations and other content retained, and allowing you to type in words without any accents or correct case. - -## Requirements - -This code has been run and tested on Windows XP/Vista/7, Ubuntu Linux, Mac OS X. - -### External Deps - -* Make, GCC, Git -* Qt framework. Minimum required version is 4.6 for Windows, 4.5 for all other platforms. But Qt 4.7 or 4.8 is recommended. -* If you want to use Qt 5.x then use branch qt4x5 -* Qt Creator IDE is recommended for development -* Various libraries on Linux (png, zlib, etc) -* On Mac and Windows all the libraries are already included in the repository - -### Installing External Deps on Ubuntu Linux - - sudo apt-get install git pkg-config build-essential qt4-qmake \ - libvorbis-dev zlib1g-dev libhunspell-dev x11proto-record-dev \ - libqt4-dev libqtwebkit-dev libxtst-dev liblzo2-dev libbz2-dev \ - libao-dev libavutil-dev libavformat-dev libtiff5-dev libeb16-dev - -## How to build - -First, clone this repository, e.g.: - - git clone git://github.com/goldendict/goldendict.git - -And then invoke `qmake-qt4` and `make`: - - cd goldendict && qmake-qt4 && make - -In case when qmake-qt4 does not exist, try using `qmake` but make sure it is indeed from the Qt 4 installation. -Alternatively, you might want to load `goldendict.pro` file from within Qt Creator, especially on Windows. - -### Building with Chinese conversion support - -To add Chinese conversion support you need at first install libopencc-dev package: - - sudo apt-get install libopencc-dev - -Then pass `"CONFIG+=chinese_conversion_support"` to `qmake` - - qmake "CONFIG+=chinese_conversion_support" - -### Building with Zim dictionaries support - -To add Zim and Slob formats support you need at first install lzma-dev package: - - sudo apt-get install liblzma-dev - -Then pass `"CONFIG+=zim_support"` to `qmake` - - qmake "CONFIG+=zim_support" - -### Building without extra tiff handler - -If you have problem building with libtiff5-dev package, you can pass -`"CONFIG+=no_extra_tiff_handler"` to `qmake` in order to disable extra tiff support -(without such extra support some b/w tiff images will not be displayed): - - qmake "CONFIG+=no_extra_tiff_handler" - -### Building without Epwing format support - -If you have problem building with libeb-dev package, you can pass -`"CONFIG+=no_epwing_support"` to `qmake` in order to disable Epwing format support - - qmake "CONFIG+=no_epwing_support" - -### Building without internal audio player - -If you have problem building with FFmpeg/libao (for example, Ubuntu older than 12.04), you can pass -`"DISABLE_INTERNAL_PLAYER=1"` to `qmake` in order to disable internal audio player completely: - - qmake "DISABLE_INTERNAL_PLAYER=1" - -NB: All additional settings for `qmake` that you need must be combined in one `qmake` launch, for example: - - qmake "CONFIG+=zim_support" "CONFIG+=no_extra_tiff_handler" "DISABLE_INTERNAL_PLAYER=1" - - -Then, invoke `make clean` before `make` because the setting change: - - make clean && make - -### Building under Windows with MS Visual Studio - -To build GoldenDict with Visual Studio take one of next library packs and unpack it to `"winlibs/lib/msvc"` folder in GoldenDict sources folder. -[GoldenDict_libs_VS2013_x86_v2.7z](http://www.mediafire.com/download/lu73ykqmjf7bqjs/GoldenDict_libs_VS2013_x86_v2.7z) - for MS Visual Studio 2013, 32 bit -[GoldenDict_libs_VS2013_x64_v2.7z](http://www.mediafire.com/download/wcwx8041ixixq3w/GoldenDict_libs_VS2013_x64_v2.7z) - for MS Visual Studio 2013, 64 bit -[GoldenDict_libs_VS2015_x86_v2.7z](http://www.mediafire.com/download/qu7xh7v6ar0x2oc/GoldenDict_libs_VS2015_x86_v2.7z) - for MS Visual Studio 2015, 32 bit -[GoldenDict_libs_VS2015_x64_v2.7z](http://www.mediafire.com/download/3jk6j55j6l9w902/GoldenDict_libs_VS2015_x64_v2.7z) - for MS Visual Studio 2015, 64 bit - -To create project files for Visual Studio you can pass `"-tp vc"` option to `qmake`. - -Note: In Qt 5.6.0 and later the `Webkit` module was removed from official release builds. You should to build it from sources to compile GoldenDict. - - -## Installation - -Installation is an optional step since the built binary can be used as-is without installation. But you can properly install via: - - make install - -NB: Don't do that on Windows! - -## License - -This project is licensed under the GNU GPLv3+ license, a copy of which can be found in the `LICENSE.txt` file. - -## Support - -Users looking for support should file an issue in the official [GoldenDict issue tracker](https://github.com/goldendict/goldendict/issues), -or even better: submit a [pull request](https://github.com/goldendict/goldendict/pulls) if you have a fix available. -General questions should be asked on the [official GoldenDict forum](http://goldendict.org/forum/). diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/aard.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/aard.cc deleted file mode 100644 index 8b7841e78d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/aard.cc +++ /dev/null @@ -1,1067 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "aard.hh" -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include "chunkedstorage.hh" -#include "langcoder.hh" -#include "fsencoding.hh" -#include "decompress.hh" -#include "gddebug.hh" -#include "ftshelpers.hh" -#include "htmlescape.hh" - -#include -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include -#include -#include - -#include "ufile.hh" -#include "wstring_qt.hh" -#include "qt4x5.hh" - -namespace Aard { - -using std::map; -using std::multimap; -using std::pair; -using std::set; -using std::string; -using gd::wstring; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX_STR( exNotAardFile, "Not an AARD file", Dictionary::Ex ) -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX_STR( exWordIsTooLarge, "Enountered a word that is too large:", Dictionary::Ex ) -DEF_EX_STR( exSuddenEndOfFile, "Sudden end of file", Dictionary::Ex ) - -#pragma pack( push, 1 ) - -/// AAR file header -struct AAR_header -{ - char signature[4]; - char checksum[40]; - quint16 version; - char uuid[16]; - quint16 volume; - quint16 totalVolumes; - quint32 metaLength; - quint32 wordsCount; - quint32 articleOffset; - char indexItemFormat[4]; - char keyLengthFormat[2]; - char articleLengthFormat[2]; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct IndexElement -{ - quint32 wordOffset; - quint32 articleOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct IndexElement64 -{ - quint32 wordOffset; - quint64 articleOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -enum -{ - Signature = 0x58524141, // AARX on little-endian, XRAA on big-endian - CurrentFormatVersion = 4 + BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - quint32 signature; // First comes the signature, AARX - quint32 formatVersion; // File format version (CurrentFormatVersion) - quint32 chunksOffset; // The offset to chunks' storage - quint32 indexBtreeMaxElements; // Two fields from IndexInfo - quint32 indexRootOffset; - quint32 wordCount; - quint32 articleCount; - quint32 langFrom; // Source language - quint32 langTo; // Target language -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -#pragma pack( pop ) - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -void readJSONValue( string const & source, string & str, string::size_type & pos) -{ - int level = 1; - char endChar; - str.push_back( source[pos] ); - if( source[pos] == '{') - endChar = '}'; - else if( source[pos] == '[' ) - endChar = ']'; - else if( source[pos] == '\"' ) - { - str.clear(); - endChar = '\"'; - } - else - endChar = ','; - - pos++; - char ch = 0; - char lastCh = 0; - while( !( ch == endChar && lastCh != '\\' && level == 0 ) - && pos < source.size() ) - { - lastCh = ch; - ch = source[ pos++ ]; - if( ( ch == '{' || ch == '[' ) && lastCh != '\\' ) - level++; - if( ( ch == '}' || ch == ']' ) && lastCh != '\\' ) - level--; - - if( ch == endChar && - ( ( ch == '\"' && lastCh != '\\' ) || ch == ',' ) - && level == 1) - break; - str.push_back( ch ); - } -} - -map< string, string > parseMetaData( string const & metaData ) -{ -// Parsing JSON string - map< string, string > data; - string name, value; - string::size_type n = 0; - - while( n < metaData.length() && metaData[n] != '{' ) - n++; - while( n < metaData.length() ) - { - // Skip to '"' - while( n < metaData.length() && metaData[n] != '\"' ) - n++; - if( ++n >= metaData.length() ) - break; - - // Read name - while( n < metaData.length() && - !( ( metaData[n] == '\"' || metaData[n] == '{' ) && metaData[n-1] != '\\' ) ) - name.push_back( metaData[n++]); - - // Skip to ':' - if( ++n >= metaData.length() ) - break; - while( n < metaData.length() && metaData[n] != ':' ) - n++; - if( ++n >= metaData.length() ) - break; - - // Find value start after ':' - while( n < metaData.length() - && !( ( metaData[n] == '\"' - || metaData[n] == '{' - || metaData[n] == '[' - || ( metaData[n] >= '0' && metaData[n] <= '9' ) ) - && metaData[n-1] != '\\' ) ) - n++; - if( n >= metaData.length() ) - break; - - readJSONValue( metaData, value, n); - - data[name] = value; - - name.clear(); - value.clear(); - if( ++n >= metaData.length() ) - break; - } - return data; -} - -class AardDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - Mutex aardMutex; - File::Class idx; - IdxHeader idxHeader; - ChunkedStorage::Reader chunks; - string dictionaryName; - File::Class df; - - public: - - AardDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - ~AardDictionary(); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual QString const& getDescription(); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "AARD", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } - -protected: - - virtual void loadIcon() throw(); - -private: - - /// Loads the article. - void loadArticle( quint32 address, - string & articleText, - bool rawText = false ); - string convert( string const & in_data ); - - friend class AardArticleRequest; -}; - -AardDictionary::AardDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - chunks( idx, idxHeader.chunksOffset ), - df( dictionaryFiles[ 0 ], "rb" ) -{ - // Read dictionary name - - idx.seek( sizeof( idxHeader ) ); - vector< char > dName( idx.read< quint32 >() ); - if( dName.size() ) - { - idx.read( &dName.front(), dName.size() ); - dictionaryName = string( &dName.front(), dName.size() ); - } - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -AardDictionary::~AardDictionary() -{ - df.close(); -} - -void AardDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_aard.png"); - } - - dictionaryIconLoaded = true; -} - -string AardDictionary::convert( const string & in ) -{ - string inConverted; - char inCh, lastCh = 0; - bool afterEol = false; - - for( string::const_iterator i = in.begin(), j = in.end(); i != j; ++i ) - { - inCh = *i; - if( lastCh == '\\' ) - { - inConverted.erase( inConverted.size() - 1 ); - lastCh = 0; - if( inCh == 'n' ) - { - inConverted.append( "
"); - afterEol = true; - continue; - } - else if( inCh == 'r') - continue; - } - else if( inCh == ' ' && afterEol ) - { - inConverted.append( " " ); - continue; - } else - lastCh = inCh; - afterEol = false; - inConverted.push_back( inCh ); - } - - QString text = QString::fromUtf8( inConverted.c_str() ); - text.replace( QRegExp( "<\\s*a\\s*href\\s*=\\s*\\\"(w:|s:){0,1}([^#](?!ttp://)[^\\\"]*)(.)" ), - "]*)/>", Qt::CaseInsensitive ); //
- text.replace( self_closing_divs, "\\1>
" ); - - // Fix outstanding elements - text += "
"; - - return text.toUtf8().data(); -} - -void AardDictionary::loadArticle( quint32 address, - string & articleText, - bool rawText ) -{ - quint32 articleOffset = address; - quint32 articleSize; - quint32 size; - - vector< char > articleBody; - - articleText.clear(); - - - while( 1 ) - { - articleText = string( QObject::tr( "Article loading error" ).toUtf8().constData() ); - try - { - Mutex::Lock _( aardMutex ); - df.seek( articleOffset ); - df.read( &size, sizeof(size) ); - articleSize = qFromBigEndian( size ); - - // Don't try to read and decode too big articles, - // it is most likely error in dictionary - if( articleSize > 1048576 ) - break; - - articleBody.resize( articleSize ); - df.read( &articleBody.front(), articleSize ); - } - catch( std::exception &ex ) - { - gdWarning( "AARD: Failed loading article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - break; - } - catch(...) - { - break; - } - - if ( articleBody.empty() ) - break; - - articleText.clear(); - - string text = decompressBzip2( articleBody.data(), articleSize ); - if( text.empty() ) - text = decompressZlib( articleBody.data(), articleSize ); - if( text.empty() ) - text = string( articleBody.data(), articleSize ); - - if( text.empty() || text[ 0 ] != '[' ) - break; - - string::size_type n = text.find( '\"' ); - if( n == string::npos ) - break; - - readJSONValue( text, articleText, n ); - - if( articleText.empty() ) - { - n = text.find( "\"r\"" ); - if( n != string::npos && n + 3 < text.size() ) - { - n = text.find( '\"', n + 3 ); - if( n == string::npos ) - break; - - string link; - readJSONValue( text, link, n ); - if( !link.empty() ) - { - string encodedLink; - encodedLink.reserve( link.size() ); - bool prev = false; - for( string::const_iterator i = link.begin(); i != link.end(); ++i ) - { - if( *i == '\\' ) - { - if( !prev ) - { - prev = true; - continue; - } - } - encodedLink.push_back( *i ); - prev = false; - } - encodedLink = string( QUrl( QString::fromUtf8( encodedLink.data(), encodedLink.size() ) ).toEncoded().data() ); - articleText = "
" + link + ""; - } - } - } - - break; - } - - if( !articleText.empty() ) - { - if( rawText ) - return; - - articleText = convert( articleText ); - } - else - articleText = string( QObject::tr( "Article decoding error" ).toUtf8().constData() ); - - // See Issue #271: A mechanism to clean-up invalid HTML cards. - string cleaner = """""""""""" - """""""""""" - "" - "" - ""; - - string prefix( "
"; -} - -QString const& AardDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - AAR_header dictHeader; - quint32 size; - vector< char > data; - - { - Mutex::Lock _( aardMutex ); - df.seek( 0 ); - df.read( &dictHeader, sizeof(dictHeader) ); - size = qFromBigEndian( dictHeader.metaLength ); - data.resize( size ); - df.read( &data.front(), size ); - } - - string metaStr = decompressBzip2( data.data(), size ); - if( metaStr.empty() ) - metaStr = decompressZlib( data.data(), size ); - - map< string, string > meta = parseMetaData( metaStr ); - - if( !meta.empty() ) - { - map< string, string >::const_iterator iter = meta.find( "copyright" ); - if( iter != meta.end() ) - dictionaryDescription = "Copyright: " + QString::fromUtf8( iter->second.c_str() ) + "\n\n"; - - iter = meta.find( "version" ); - if( iter != meta.end() ) - dictionaryDescription = "Version: " + QString::fromUtf8( iter->second.c_str() ) + "\n\n"; - - iter = meta.find( "description" ); - if( iter != meta.end() ) - { - QString desc = QString::fromUtf8( iter->second.c_str() ); - desc.replace( "\\n", "\n" ); - desc.replace( "\\t", "\t" ); - dictionaryDescription += desc; - } - } - - if( dictionaryDescription.isEmpty() ) - dictionaryDescription = "NONE"; - - return dictionaryDescription; -} - -void AardDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "Aard: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "Aard: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void AardDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - headword.clear(); - string articleText; - - loadArticle( articleAddress, articleText ); - - text = Html::unescape( QString::fromUtf8( articleText.data(), articleText.size() ) ); - } - catch( std::exception &ex ) - { - gdWarning( "Aard: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - -sptr< Dictionary::DataRequest > AardDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -/// AardDictionary::getArticle() - -class AardArticleRequest; - -class AardArticleRequestRunnable: public QRunnable -{ - AardArticleRequest & r; - QSemaphore & hasExited; - -public: - - AardArticleRequestRunnable( AardArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~AardArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class AardArticleRequest: public Dictionary::DataRequest -{ - friend class AardArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - AardDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - AardArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - AardDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new AardArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by DslArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~AardArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void AardArticleRequestRunnable::run() -{ - r.run(); -} - -void AardArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< quint32 > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now grab that article - - string headword, articleText; - - headword = chain[ x ].word; - try - { - dict.loadArticle( chain[ x ].articleOffset, articleText ); - } - catch(...) - { - } - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ); - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result; - - multimap< wstring, pair< string, string > >::const_iterator i; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - result += "

"; - result += i->second.first; - result += "

"; - result += i->second.second; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - result += "

"; - result += i->second.first; - result += "

"; - result += i->second.second; - } - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - - finish(); -} - -sptr< Dictionary::DataRequest > AardDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new AardArticleRequest( word, alts, *this ); -} - -} // anonymous namespace - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Skip files with the extensions different to .aar to speed up the - // scanning - if ( i->size() < 4 || - strcasecmp( i->c_str() + ( i->size() - 4 ), ".aar" ) != 0 ) - continue; - - // Got the file -- check if we need to rebuid the index - - vector< string > dictFiles( 1, *i ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - try - { - - gdDebug( "Aard: Building the index for dictionary: %s\n", i->c_str() ); - - { - QFileInfo info( FsEncoding::decode( i->c_str() ) ); - if( static_cast< quint64 >( info.size() ) > ULONG_MAX ) - { - gdWarning( "File %s is too large\n", i->c_str() ); - continue; - } - } - - File::Class df( *i, "rb" ); - - AAR_header dictHeader; - - df.read( &dictHeader, sizeof(dictHeader) ); - bool has64bitIndex = !strncmp( dictHeader.indexItemFormat, ">LQ", 4 ); - if( strncmp( dictHeader.signature, "aard", 4 ) - || ( !has64bitIndex && strncmp( dictHeader.indexItemFormat, ">LL", 4 ) ) - || strncmp( dictHeader.keyLengthFormat, ">H", 2 ) - || strncmp( dictHeader.articleLengthFormat, ">L", 2) ) - { - gdWarning( "File %s is not in supported aard format\n", i->c_str() ); - continue; - } - - vector< char > data; - quint32 size = qFromBigEndian( dictHeader.metaLength ); - - if( size == 0 ) - { - gdWarning( "File %s has invalid metadata", i->c_str() ); - continue; - } - - data.resize( size ); - df.read( &data.front(), size ); - string metaStr = decompressBzip2( data.data(), size ); - if( metaStr.empty() ) - metaStr = decompressZlib( data.data(), size ); - - map< string, string > meta = parseMetaData( metaStr ); - - if( meta.empty() ) - { - gdWarning( "File %s has invalid metadata", i->c_str() ); - continue; - } - - string dictName; - map< string, string >::const_iterator iter = meta.find( "title" ); - if( iter != meta.end() ) - dictName = iter->second; - - string langFrom; - iter = meta.find( "index_language" ); - if( iter != meta.end() ) - langFrom = iter->second; - - string langTo; - iter = meta.find( "article_language" ); - if( iter != meta.end() ) - langTo = iter->second; - - if( ( dictName.compare( "Wikipedia") == 0 || dictName.compare( "Wikiquote" ) == 0 || dictName.compare( "Wiktionary" ) == 0 ) - && !langTo.empty() ) - { - string capitalized = langTo.c_str(); - capitalized[0] = toupper( capitalized[0] ); - dictName = dictName + " (" + capitalized + ")"; - } - - quint16 volumes = qFromBigEndian( dictHeader.totalVolumes ); - if( volumes > 1 ) - { - QString ss; - ss.sprintf( " (%i/%i)", qFromBigEndian( dictHeader.volume ), volumes ); - dictName += ss.toLocal8Bit().data(); - } - - initializing.indexingDictionary( dictName ); - - File::Class idx( indexFile, "wb" ); - IdxHeader idxHeader; - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - idx.write( (quint32) dictName.size() ); - if( !dictName.empty() ) - idx.write( dictName.data(), dictName.size() ); - - IndexedWords indexedWords; - - ChunkedStorage::Writer chunks( idx ); - - quint32 wordCount = qFromBigEndian( dictHeader.wordsCount ); - set< quint32 > articleOffsets; - - quint32 pos = df.tell(); - quint32 wordsBase = pos + wordCount * ( has64bitIndex ? sizeof( IndexElement64 ) : sizeof( IndexElement ) ); - quint32 articlesBase = qFromBigEndian( dictHeader.articleOffset ); - - data.clear(); - for( quint32 j = 0; j < wordCount; j++ ) - { - quint32 articleOffset; - quint32 wordOffset; - - if( has64bitIndex ) - { - IndexElement64 el64; - - df.seek( pos ); - df.read( &el64, sizeof(el64) ); - articleOffset = articlesBase + qFromBigEndian( el64.articleOffset ); - wordOffset = wordsBase + qFromBigEndian( el64.wordOffset ); - } - else - { - IndexElement el; - - df.seek( pos ); - df.read( &el, sizeof(el) ); - articleOffset = articlesBase + qFromBigEndian( el.articleOffset ); - wordOffset = wordsBase + qFromBigEndian( el.wordOffset ); - } - - df.seek( wordOffset ); - - quint16 sizeBE; - df.read( &sizeBE, sizeof(sizeBE) ); - quint16 wordSize = qFromBigEndian( sizeBE ); - if( data.size() < wordSize ) - data.resize( wordSize ); - df.read( &data.front(), wordSize ); - - if( articleOffsets.find( articleOffset ) == articleOffsets.end() ) - articleOffsets.insert( articleOffset ); - - // Insert new entry - indexedWords.addWord( Utf8::decode( string( data.data(), wordSize ) ), articleOffset); - - pos += has64bitIndex ? sizeof( IndexElement64 ) : sizeof( IndexElement ); - } - data.clear(); - - idxHeader.articleCount = articleOffsets.size(); - articleOffsets.clear(); - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - indexedWords.clear(); // Release memory -- no need for this data - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.wordCount = wordCount; - - if( langFrom.size() == 3) - idxHeader.langFrom = LangCoder::code3toInt( langFrom.c_str() ); - else if( langFrom.size() == 2 ) - idxHeader.langFrom = LangCoder::code2toInt( langFrom.c_str() ); - - if( langTo.size() == 3) - idxHeader.langTo = LangCoder::code3toInt( langTo.c_str() ); - else if( langTo.size() == 2 ) - idxHeader.langTo = LangCoder::code2toInt( langTo.c_str() ); - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - catch( std::exception & e ) - { - gdWarning( "Aard dictionary indexing failed: %s, error: %s\n", - i->c_str(), e.what() ); - continue; - } - catch( ... ) - { - gdWarning( "Aard dictionary indexing failed\n" ); - continue; - } - } // if need to rebuild - try - { - dictionaries.push_back( new AardDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Aard dictionary initializing failed: %s, error: %s\n", - i->c_str(), e.what() ); - continue; - } - } - return dictionaries; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/aard.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/aard.hh deleted file mode 100644 index c9aabbcba2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/aard.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __AARD_HH_INCLUDED__ -#define __AARD_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for the aard dictionaries. -namespace Aard { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.cc deleted file mode 100644 index f2f7e83799..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.cc +++ /dev/null @@ -1,79 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "about.hh" -#include -#include - -#include "qt4x5.hh" - -About::About( QWidget * parent ): QDialog( parent ) -{ - ui.setupUi( this ); - - QFile versionFile( ":/version.txt" ); - - QString version; - - if ( !versionFile.open( QFile::ReadOnly ) ) - version = tr( "[Unknown]" ); - else - version = QString::fromLatin1( versionFile.readAll() ).trimmed(); - - ui.version->setText( version ); - -#if defined (_MSC_VER) - QString compilerVersion = QString( "Visual C++ %1.%2.%3" ) - .arg( GD_CXX_MSVC_MAJOR ) - .arg( GD_CXX_MSVC_MINOR ) - .arg( GD_CXX_MSVC_BUILD ); -#elif defined (__clang__) && defined (__clang_version__) - QString compilerVersion = QLatin1String( "Clang " ) + QLatin1String( __clang_version__ ); -#else - QString compilerVersion = QLatin1String( "GCC " ) + QLatin1String( __VERSION__ ); -#endif - - ui.qtVersion->setText( tr( "Based on Qt %1 (%2, %3 bit)" ).arg( - QLatin1String( qVersion() ), - compilerVersion, - QString::number( QSysInfo::WordSize ) ) ); - - QFile creditsFile( ":/CREDITS.txt" ); - - if ( creditsFile.open( QFile::ReadOnly ) ) - { - QStringList creditsList = - QString::fromUtf8( - creditsFile.readAll() ).split( '\n', QString::SkipEmptyParts ); - - QString html = ""; - - for( int x = 0; x < creditsList.size(); ++x ) - { - QString str = creditsList[ x ]; - - str.replace( "\\", "@" ); - - str = Qt4x5::escape( str ); - - int colon = str.indexOf( ":" ); - - if ( colon != -1 ) - { - QString name( str.left( colon ) ); - - name.replace( ", ", "
" ); - - str = "" + name + "
    " - + str.mid( colon + 1 ); - } - - html += str; - html += "
"; - } - - html += ""; - - ui.credits->setHtml( html ); - } -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.hh deleted file mode 100644 index 2376f19a19..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.hh +++ /dev/null @@ -1,36 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef ABOUT_HH -#define ABOUT_HH - -#include "ui_about.h" -#include - -// Microsoft Visual C++ version -#if defined (_MSC_VER) - // how many digits does the build number have? -# if _MSC_FULL_VER / 10000 == _MSC_VER -# define GD_CXX_MSVC_BUILD (_MSC_FULL_VER % 10000) // four digits -# elif _MSC_FULL_VER / 100000 == _MSC_VER -# define GD_CXX_MSVC_BUILD (_MSC_FULL_VER % 100000) // five digits -# else -# define GD_CXX_MSVC_BUILD 0 -# endif -# define GD_CXX_MSVC_MAJOR (_MSC_VER/100-6) -# define GD_CXX_MSVC_MINOR (_MSC_VER%100) -#endif - -class About: public QDialog -{ - Q_OBJECT -public: - - About( QWidget * parent = 0 ); - -private: - - Ui::About ui; -}; - -#endif // ABOUT_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.ui deleted file mode 100644 index 627aaa6640..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/about.ui +++ /dev/null @@ -1,197 +0,0 @@ - - - About - - - Qt::NonModal - - - - 0 - 0 - 400 - 400 - - - - About - - - true - - - - - - - - - 80 - 80 - - - - - 80 - 80 - - - - - - - :/icons/programicon.png - - - true - - - Qt::AlignCenter - - - 10 - - - - - - - - - 0 - - - - - GoldenDict dictionary lookup program, version - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - #.# - - - Qt::TextEditorInteraction - - - - - - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Licensed under GNU GPLv3 or later - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Based on Qt #.#.# (GCC #.#, 32/64 bit) - - - Qt::TextEditorInteraction - - - - - - - - - - - Credits: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - true - - - - 0 - 1 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - true - - - - - - - - - - - buttonBox - accepted() - About - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - About - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-print.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-print.css deleted file mode 100644 index d284bcb05c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-print.css +++ /dev/null @@ -1,14 +0,0 @@ -/* This stylesheet is used for printing only, overriding article-style.css */ - -body -{ - background: white; -} - -/* Hide audio icons */ - -.dsl_s_wav -{ - display: none; -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-babylon.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-babylon.css deleted file mode 100644 index a9c29a4d39..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-babylon.css +++ /dev/null @@ -1,100 +0,0 @@ -html -{ - background-color: white; -} - -body -{ - background: white; - font-size: 13px; -} - -.gdarticle -{ - background: white; -} - -h3 { - font-size: 1em; -} - -::selection -{ - background: #4492E8; - color: white; -} - -/* Dictionary's name heading */ -.gddictname -{ - font-weight: normal; - font-size: 11px; - border: none; - border-top-left-radius: 8px; - border-top-right-radius: 0px; - background: #F0EDED; - padding-top: 5px; - padding-bottom: 5px; -} - -.gddicticon -{ - display: inline; - padding-right: 5px; -} - -.gddicticon img -{ - border: 0; - height: 16px; - vertical-align: text-top; -} - -/* The 'From ' string which preceeds dictionary name in the heading */ -.gdfromprefix -{ - display: none; -} - -/* Move the collapse/expand buttons to the right */ -.collapse_expand_area -{ - float: right; - margin-right: 2px; -} - -.gdexpandicon, .gdexpandicon:hover, .gdcollapseicon, .gdcollapseicon:hover -{ - width:15px; - background-position: center; - background-repeat:no-repeat; - vertical-align: text-bottom; - padding-left: -5px; - margin-left: 0px; -} - -.gdexpandicon { - background-image: url('qrcx://localhost/icons/expand_article.png'); -} - -.gdexpandicon:hover { - background-image: url('qrcx://localhost/icons/expand_article_hovered.png'); -} - -.gdcollapseicon { - background-image: url('qrcx://localhost/icons/collapse_article.png'); -} - -.gdcollapseicon:hover { - background-image: url('qrcx://localhost/icons/collapse_article_hovered.png'); -} - -.bglpos { color: black; font-weight: bold; font-size: 11px; background: #F0EDED; display: inline; } - -.bgltrn { color: #808080; font-size: 12px; display: inline; } - -a, .mwiki a -{ - color: #0066CC; -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingoes-blue.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingoes-blue.css deleted file mode 100644 index 0d0504d9a2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingoes-blue.css +++ /dev/null @@ -1,369 +0,0 @@ -body { - background: #EAF0F8; - margin: 0.3em; - font-family: "Arial Unicode MS", "Lucida Sans Unicode", Tahoma, Verdana, "Palatino Linotype", sans-serif; - line-height: 120%; -} - -a { - text-decoration: none; - color: darkblue; -} - -a:hover { - text-decoration: underline; -} - -.gdarticle { - background: #FFFEF2; - margin-top: 0.1em; - margin-bottom: 0.35em; - padding: 5px; - padding-top: -10px; - border: 1px solid #C7D4DC; - border-radius: 8px; -} - -.gdactivearticle { - background: #FFFEF2; - border: 1px solid #92B0DD; -} - -.gdarticleseparator + script + .gdactivearticle .gddictname { - border-top: 1px solid #92B0DD; - border-right: 1px solid #92B0DD; -} - -.gddictname { - display: -webkit-box; /* needed to be able to reorder elements, e.g. icon, dictionary name, collapse icon */ - font-size: 12px; - font-weight: normal; - float: right; - border: 0px; - border-top: 1px solid #C7D4DC; - border-right: 1px solid #C7D4DC; - border-top-right-radius: 8px; - border-bottom-left-radius: 6px; - margin: -6px; - margin-bottom: 5px; - margin-left: 2px; - padding-right: 0.4em; - color: #34517D; - background: #DDE6F5; - -webkit-user-select: none; - user-select: none; - cursor: default; -} - -/* Actual text with the dictionary title */ -.gddicttitle -{ - display:block; - -webkit-box-ordinal-group: 1; - -webkit-box-flex: 1; -} - -.gdactivearticle .gddictname { - border-top: 1px solid #92B0DD; - border-right: 1px solid #92B0DD; - color: darkblue; - background: #CFDDF0; -} - -.gdcollapsedarticle .gddictname -{ - opacity: 0.7; -} - -/* Nice diagonal pattern for the collapsed article */ -.gdcollapsedarticle -{ - background-image: -webkit-linear-gradient(left top, #ccc 0%, #ccc 25%, #bbb 25%, #bbb 50%, #ccc 50%, #ccc 75%, #bbb 75%); - background-size: 50px 50px; -} - -/* Move the collapse/expand buttons to the last, 3rd position */ -.collapse_expand_area -{ - display: block; - -webkit-box-ordinal-group: 3; -} - -.gddicticon -{ - display: block; - vertical-align: text-bottom; - padding-right: -1em; - padding-left: 0.3em; - -webkit-box-ordinal-group: 2; -} - -.gdexpandicon, .gdexpandicon:hover, .gdcollapseicon, .gdcollapseicon:hover -{ - width:15px; - background-position: center 25%; - background-repeat:no-repeat; - vertical-align: top; - padding-left: -5px; - margin-left: 0px; -} - -.gdexpandicon { - background-image: url('qrcx://localhost/icons/expand_article.png'); -} - -.gdexpandicon:hover { - background-image: url('qrcx://localhost/icons/expand_article_hovered.png'); -} - -.gdcollapseicon { - background-image: url('qrcx://localhost/icons/collapse_article.png'); -} - -.gdcollapseicon:hover { - background-image: url('qrcx://localhost/icons/collapse_article_hovered.png'); -} - -.gdarticleseparator { - display: none; -} - -/* The 'From ' string which preceeds dictionary name in the heading */ -.gdfromprefix { - display: none; -} - -/* The first headword in a (possibly) multi-headword DSL article */ -.gdarticlebody > span:first-child .dsl_headwords, -.gdarticlebody > h3:first-child { - margin-top: -3px; - display: inline-block; -} - -.mwiki .toc, .mwiki .metadata mbox-small plainlinks { - display:none -} - - -.gddicticon img { - border: 0; - height: 15px; - vertical-align: text-top; -} - -/* Text selection */ -::selection { - background: #839EC7; - color:#fff; -} - -code::selection { - background: #839EC7; -} - -/* Headers */ -h3 { - color: inherit; - font-family: Arial; -} - -/******** DSL Dictionaries ****************/ - -/* DSL headwords */ -.dsl_headwords { - color: inherit; - font-family: Arial; -} - -/* Formatting */ -.dsl_b { - font-family: Arial; -} - -.dsl_ex, .dsl_ex .dsl_opt -{ - color: slategray; -} - -.dsl_ref { - color: #0000DD; -} - -.dsl_url { - color: #0000DD; -} - -/* Stress settings */ -.dsl_stress_without_accent, -.dsl_opt .dsl_ex .dsl_stress_without_accent { - display: none; - color: green; -} - -.dsl_stress_with_accent, -.dsl_opt .dsl_ex .dsl_stress_with_accent { - display: inline; - color: #DD0000; -} -.dsl_stress, -.dsl_opt .dsl_ex .dsl_stress { - display: inline; - color: blue; -} - -/* Sound icon */ -.dsl_s_wav img { - display: none; -} - -.dsl_s_wav a { - text-decoration: none; - -webkit-user-select: none; - display: inline-block; - width: 18px; - height: 18px; - -webkit-border-radius: 100px; - text-align: center; - vertical-align: text-bottom; -} - -.dsl_s_wav a { - color: #FFF; - border: 1px solid #798415; - -webkit-box-shadow: 1px 1px #CCC, inset -1px -1px #4E7500; - - background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,rgba(191,210,85,1)), color-stop(50%,rgba(142,185,42,1)), color-stop(51%,rgba(114,170,0,1)), color-stop(100%,rgba(158,203,45,1))); -} - -.dsl_s_wav a:hover { - background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#e6f0a3), color-stop(50%,#d2e638), color-stop(51%,#c3d825), color-stop(100%,#dbf043)); - - border: 1px solid #A2B01C; - -webkit-box-shadow: 1px 1px #CCC, inset -1px -1px #8A991A; -} - -.dsl_s_wav a:active { - -webkit-box-shadow: 1px 1px #CCC, inset 1px 1px #B1C421; -} - -.dsl_s_wav a:after { - display: inline-block; - font-family: "Webdings"; - content:"X"; - width: 18px; - height: 18px; - font-size: 16px; - text-align: center; - vertical-align: center; - -webkit-background-clip: text; - color: #E6EF8F; - -webkit-text-stroke: 1px #51580E; -} - -.dsl_s_wav a:hover:after { - -webkit-text-stroke: 1px #656E11; -} - - -/******** Verbix Dictionaries ****************/ - -.sdct_h .normal { - font-family: Arial; - font-size: 10pt; - color:#000000; - font-weight: normal; - text-decoration:none; -} - -.sdct_h .irregular { - font-family: Arial; - font-size: 10pt; - color:#FF0000; - font-weight: bold; - text-decoration:none; -} - -.sdct_h .orto { - font-family: Arial; - font-size: 10pt; - color:#0000FF; - font-weight: normal; - text-decoration:none; -} - -.sdct_h .archaic { - font-family: Arial; - font-size: 10pt; - color:#800080; - font-weight: normal; - text-decoration:none; -} - -.sdct_h .notused { - font-family: Arial; - font-size: 10pt; - color:#808080; - font-weight: normal; - text-decoration:none; -} - -.sdct_h .pronoun { - font-family: Arial; - font-size: 10pt; - color:#008000; - font-weight: normal; - text-decoration:none; -} - - -.sdct_h > table { - border: 1px solid #444444; - border-collapse: collapse; -} - -.sdct_h td.verbtable { - border: 1px solid #444444; -} - -.sdct_h th { - background-color: #A6C9EF; - font-weight: bold; -} - -.sdct_h .mini { - font-size: 8pt; font-weight: normal; color: #808080; -} - -.sdct_h div.spacerline { - clear: both; - margin-left: 8px; - width:100%; - border-top: 1px solid #ccc; -} - -.sdct_h div.spacer { - clear: both; -} - -.sdct_h div.float { - margin-left: 8px; - float: left; -} - -.sdct_h div.float400 { - margin-left: 8px; - float: left; - width: 400px; -} - -.sdct_h div.float250color { - margin-left: 8px; - float: left; - width: 250px; - border-style: dashed; - border-color:#0033CC; - border-collapse:collapse; - border-width:1px; - background-color:#eeeeee; - padding: 8px 8px 8px 8px; -} \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingoes.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingoes.css deleted file mode 100644 index fdae35d18c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingoes.css +++ /dev/null @@ -1,101 +0,0 @@ -a -{ - color: #2233bb; - text-decoration: none; -} - -a:hover -{ - color: #6677ff; -} - -::selection -{ - background: #3399ff; - color: white; -} - -body -{ - background: #fffef2; - color: black; - font-family: Tahoma, Verdana, SimSun, SimSun-ExtB, sans-serif; - margin: 5px; -} - -.gdarticle -{ - background: #fffef2; - margin-top: -8px; - position: relative; -} - -.gddicticon -{ - display: inline; - margin-left: -3px; - padding-right: 5px; -} - -.gddicticon img -{ - border: 0px; - height: 16px; - vertical-align: text-top; -} - -.gdfromprefix -{ - display: none; -} - -.gddictname -{ - display: inline-block; - border: 1px solid #92b0dd; - padding: 0.2em; - padding-left: 0.5em; - padding-right: 0.5em; - margin-top: 1em; - margin-bottom: -0.1em; - background: #cfddf0; - color: #000080; - font-weight: normal; - font-size: 12px; -} - -.collapse_expand_area -{ - position: absolute; - right: 0px; -} - -.gdexpandicon, .gdexpandicon:hover, .gdcollapseicon, .gdcollapseicon:hover -{ - background-position: center 35%; - background-repeat:no-repeat; -} - - -.gdexpandicon { - background-image: url('qrcx://localhost/icons/expand_article.png'); -} - -.gdexpandicon:hover { - background-image: url('qrcx://localhost/icons/expand_article_hovered.png'); -} - -.gdcollapseicon { - background-image: url('qrcx://localhost/icons/collapse_article.png'); -} - -.gdcollapseicon:hover { - background-image: url('qrcx://localhost/icons/collapse_article_hovered.png'); -} - -.gddictnamebodyseparator -{ - display: inline-block; - width: 100%; - border-top: 1px solid #92b0dd; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingvo.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingvo.css deleted file mode 100644 index b2e47958c6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-lingvo.css +++ /dev/null @@ -1,100 +0,0 @@ -html -{ - background-color: white; -} - -body -{ - background: white; -} - -a -{ - text-decoration: none; - color: darkblue; -} - -a:hover -{ - text-decoration: underline; -} - -.gdarticle -{ - background: white; -} - -/* Dictionary's name heading */ -.gddictname -{ - border: 1px dotted black; padding: 0.2em; padding-left: 0.5em; - margin-top: 1.2em; margin-bottom: 0.1em; font-weight: bold; font-size: 14px; - background: #87CEEB; -} - -/* The 'From ' string which preceeds dictionary name in the heading */ -.gdfromprefix -{ - display: none; -} - -.gddictname -{ - font-size: 13px; - font-weight: normal; - - float: right; - border: 1px solid white; - margin-top: 7px; - color: #7f7f7f; - background: white; -} - -.gdarticleseparator + script + .gdarticle .gddictname -{ - border-top: 1px solid #ccc; -/* margin-top: 11px;*/ -} - -.gdactivearticle .gddictname -{ - font-size: 13px; - font-weight: normal; - - float: right; - border: 1px solid #b3d7f7; - margin-top: 7px; - color: #0066ff; - background: #deecf8; -} - -.gdarticleseparator + script + .gdactivearticle .gddictname -{ - border-top: 1px solid #b3d7f7; -/* margin-top: 11px;*/ -} - -.gdarticleseparator -{ - margin-top: 10px; - border-bottom: 1px solid #cccccc; - margin-bottom: 0px; - width: 100%; - display: inline-block; - clear: both; -} - -.gddictname + h3, .gddictname + .dsl_article > .dsl_headwords -{ - margin-top: 10px; -} - -.dsl_ex, .dsl_ex .dsl_opt -{ - color: inherit; -} - -.dsl_com -{ - color: black; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-modern.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-modern.css deleted file mode 100644 index d32ed051b7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style-st-modern.css +++ /dev/null @@ -1,181 +0,0 @@ -html -{ - background-color: white; -} - -body -{ - margin-top: 1px; - margin-right: 3px; - margin-left: 2px; - margin-bottom: 3px; - background: white; - font-family: Tahoma, Verdana, "Lucida Sans Unicode", "Segoe UI", "Palatino Linotype", "Arial Unicode MS", sans-serif; -} - -a -{ - text-decoration: none; - color: darkblue; -} - -a:hover -{ - text-decoration: underline; -} - -.gdarticle -{ - margin-top: 0.1em; - margin-bottom: 0.4em; - padding: 5px; - border: 1px solid #d0dde2; - border-radius: 8px; - background: white; -} - -.gdactivearticle -{ - border: 1px solid #3399FF; -} - -.gdarticleseparator + script + .gdactivearticle .gddictname -{ - border-top: 1px solid #3399FF; -} - -.gdarticleseparator -{ - display: none; -} - -/* Hide the 'From ' string which preceeds dictionary name in the heading */ -.gdfromprefix -{ - display: none; -} - -.gddictname -{ - display: -webkit-box; /* needed to be able to reorder elements, e.g. icon, dictionary name, collapse icon */ - font-size: 12px; - font-weight: normal; - float: right; - border: 0px; - border-top-right-radius: 8px; - border-bottom-left-radius: 6px; - margin: -6px; - margin-bottom: 5px; - margin-left: 2px; - padding-right: 0.3em; - color: #4480f8; - background: #E0E8F0; - - -webkit-user-select: none; - user-select: none; - cursor: default; -} - -/* Actual text with the dictionary title */ -.gddicttitle -{ - display:block; - -webkit-box-ordinal-group: 1; - -webkit-box-flex: 1; -} - -.gdactivearticle .gddictname -{ - font-size: 13px; - font-weight: normal; - margin: -6px; - margin-bottom: 5px; - margin-left: 2px; - - float: right; - border: 1px solid #3399FF; - color: #0066cc; - background: #deecf8; -} - -.gdcollapsedarticle .gddictname -{ - opacity: 0.7; -} - -/* Nice diagonal pattern for the collapsed article */ -.gdcollapsedarticle -{ - background-image: -webkit-linear-gradient(left top, #ccc 0%, #ccc 25%, #bbb 25%, #bbb 50%, #ccc 50%, #ccc 75%, #bbb 75%); - background-size: 50px 50px; -} - -/* Move the collapse/expand buttons to the last, 3rd position */ -.collapse_expand_area -{ - display: block; - -webkit-box-ordinal-group: 3; -} - -.gddicticon -{ - display: block; - vertical-align: text-bottom; - padding-right: -1em; - padding-left: 0.3em; - -webkit-box-ordinal-group: 2; -} - -.gdexpandicon, .gdexpandicon:hover, .gdcollapseicon, .gdcollapseicon:hover -{ - width:15px; - background-position: center 35%; - background-repeat:no-repeat; - vertical-align: text-bottom; - padding-left: -5px; - margin-left: 0px; -} - -.gdexpandicon { - background-image: url('qrcx://localhost/icons/expand_article.png'); -} - -.gdexpandicon:hover { - background-image: url('qrcx://localhost/icons/expand_article_hovered.png'); -} - -.gdcollapseicon { - background-image: url('qrcx://localhost/icons/collapse_article.png'); -} - -.gdcollapseicon:hover { - background-image: url('qrcx://localhost/icons/collapse_article_hovered.png'); -} - -/* The first headword in a (possibly) multi-headword DSL article */ -.gdarticlebody > span:first-child .dsl_headwords, -.gdarticlebody > h3:first-child -{ - margin-top: -3px; - display: inline-block; -} - -.gdspellsuggestion -{ - /* Add some vertical space before the article */ - margin-top: 1.5em; -} - -.dsl_ex, .dsl_ex .dsl_opt -{ - color: steelblue; -} - -::selection { - background:#cc0000; - color:#fff; -} - -code::selection { - background: #333333; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style.css deleted file mode 100644 index 20495931f9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article-style.css +++ /dev/null @@ -1,2886 +0,0 @@ -/******** Global, non-dictionary-specific classes ***********/ - - -body -{ - background: #fefdeb; - font-family: Tahoma, Verdana, "Lucida Sans Unicode", sans-serif; - font-size: 13px; -} - -/* This stylesheet is used to highligh current selection when doing a search. - It changes the default selection color (e.g. blue under Windows, orange under Ubuntu) */ - -/* highlight/select color in Windows when a widget is inactive is nearly impossible to read (light gray). - * then change it to green to use with the find option. */ -::selection { - background: #c00; - color: #fff; -} - -/* Don't allow to select [] */ -:before, :after { - -webkit-user-select: none; - user-select: none; -} - -/* Plaintext dictionaries are usually 80-column formatted and take a lot - * of space. We try to use smaller fonts for them therefore. */ -pre -{ - font-size: 12px; -} - -/* Dictionary's name heading */ -.gddictname -{ - border: 1px dotted black; padding: 0.2em; padding-left: 0.5em; - margin-top: 1.2em; margin-bottom: 9px; font-weight: bold; font-size: 14px; - /*background: #ffffdd;*/ -} - -/* The 'From ' string which preceeds dictionary name in the heading */ -.gdfromprefix -{ -} - -/* The article span. Here we have a padding/margin hack to make fragment links - behave better (have some space before the start of article) */ -.gdarticle -{ - display: block; - padding-top: 1px; - margin-top: -9px; - margin-bottom: 8px; - background: #fefdeb; -/*fix for invalid blg*/ - font-style:normal; -} - -/* CSS trick to prevent the floating elements to overflow - the article boundaries, see Issue #333. */ -.gdarticle:after -{ - content: ""; - display: block; - height: 0; - clear: both; -} - -/* Appears between the articles */ -.gdarticleseparator -{ -} - -/* Dictionary query error description string */ -.gderrordesc -{ - font-style: italic; - background: url("qrcx://localhost/icons/warning.png") center left no-repeat !important; - padding-left: 22px !important; - margin: 1em; -} - -/********* Babylon dictionaries' classes *********/ - -/* Transcriptions in Babylon dictionaries */ -.bgltrn:before -{ - content:"["; -} - -.bgltrn:after -{ - content:"]"; -} - -.bgltrn { display:block; } - -/* Part of speech in Babylon dictionaries. Usually irrelevant, - * therefore hidden */ -.bglpos { display: none; } - -/* Right-to-left text */ -.bglrtl -{ - text-align: right; - direction: rtl; -} - -/******** StarDict dictionaries' classes *********/ - - -/* StarDict type 'h' -- Html content. We don't normally do anything here. */ -div.sdct_h -{ -} - -/* StarDict type 'm' -- Pure meaning. Presented as
 */
-pre.sdct_m
-{
-}
-
-/* StarDict type 'l' -- Pure meaning which used to be in locale encoding. */
-pre.sdct_m
-{
-}
-
-/* StarDict type 'g' -- Pango Markup */
-div.sdct_g
-{
-}
-
-/* StarDict type 't' -- Transcription */
-div.sdct_t
-{
-  font-weight: bold;
-}
-
-/* StarDict type 'y' -- Chinese YinBiao or Japanese KANA */
-div.sdct_y
-{
-}
-
-/* StarDict type 'x'. Should have xdxf_*-styled elements inside */
-div.sdct_x
-{
-}
-
-/* Blockquotes in XDXF-styled elements are used
-   for indentation purposes, see Issue #305. */
-.sdct_x blockquote
-{
-  margin: 0px;
-  padding-left: 9px;
-  display: inline-block;
-}
-
-/******** XDXF markup classes *********/
-
-div.xdxf
-{
-}
-
-/* Key -- keys shouldn't normally be present in the article's body since they
- * are accounted for separately, hence we hide them */
-.xdxf_k
-{
-  display: none;
-}
-
-/* ...and if there's a break after it, we hide it too so we don't have an
- * extra vertical spacing. */
-.xdxf_k + br
-{
-  display: none;
-}
-
-/* Article structure tag */
-.xdxf_num
-{
-    color: red;
-    font-weight: bold;
-    padding-left:-15px;
-}
-.xdxf_def
-{
-    display: block;
-    border-color: #e3e3e3;
-    border-width: 1px;
-    border-style: dashed;
-    margin: 1px;
-    margin-left: 15px;
-}
-
-.xdxf_def:target
-{
-    /* this pseudoclass is used to marked out the referenced  that was just clicked */
-    border-color: red;
-    border-width: 1px;
-    border-style: double;
-}
-
-/* Abbreviation */
-.xdxf_abbr
-{
-  font-style: italic;
-  color: seagreen;
-  cursor: default;
-  border-bottom: 1px seagreen dotted;
-}
-
-/* Editorial comment */
-.xdxf_co, .xdxf_co_old
-{
-    color: darkslateblue;
-    font-style: italic;
-}
-.xdxf_co:before
-{
-    content:"("
-}
-.xdxf_co:after
-{
-    content:")"
-}
-
-/* Grammar information */
-.xdxf_gr
-{
-    color: orangered;
-    display: block;
-}
-
-.xdxf_gr_old
-{
-    color: blue; /*orangered;*/
-}
-
-/* Example */
-.xdxf_ex
-{
-    color: #808080;
-    display: block;
-    margin-left: 14px;
-}
-
-.xdxf_ex_old
-{
-    color: #808080;
-}
-
-/* Direct translation */
-.xdxf_dtrn
-{
-    font-weight: bold;
-    color: #dd7800;
-}
-
-/* Transcription */
-.xdxf_tr:before
-{
-  content:"[";
-}
-
-.xdxf_tr:after
-{
-  content:"]";
-}
-
-.xdxf_tr, .xdxf_tr_old
-{
-  font-weight: bold;
-}
-
-/* Resource reference -- for now just a span. Since there's not yet a mechanism
- * to load resources off XDXF articles in GoldenDict, we just hide them. */
-.xdxf_rref
-{
-  display: none;
-}
-
-.xdxf_headwords
-{
-  font-size: 116%;
-  font-weight: bold;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-
-/* The words in examples that are meaked out; they are marked out only when placed into  tag */
-.xdxf_ex .xdxf_ex_markd, .xdxf_ex_old .xdxf_ex_markd
-{
-  color:black;
-  background-color:lightgray;
-}
-
-.xdxf_opt
-{
-  color: #808080;
-}
-
-/******** SDictionary markup classes *********/
-
-.sdict_forms
-{
-  font-style: italic;
-}
-
-/* Transcription */
-.sdict_tr:before
-{
-  content:"[";
-}
-
-.sdict_tr:after
-{
-  content:"] ";
-}
-
-.sdict_tr
-{
-  font-weight: bold;
-}
-
-/************* LSA audio archives **************/
-
-/* A table which contains a play icon and a word's link */
-.lsa_play
-{
-  margin-top: 8px;
-  margin-left: 8px;
-}
-
-.lsa_play a
-{
-  text-decoration: none;
-}
-
-/************* DSL dictionaries **************/
-
-.dsl_u
-{
-  text-decoration: underline;
-}
-
-.dsl_article font[color=c_default_color]
-{
-  color: green;
-}
-
-.dsl_m, .dsl_m0
-{
-  padding-left: 0px;
-}
-
-.dsl_m1
-{
-  padding-left: 9px;
-}
-
-.dsl_m2
-{
-  padding-left: 18px;
-}
-
-.dsl_m3
-{
-  padding-left: 27px;
-}
-
-.dsl_m4
-{
-  padding-left: 36px;
-}
-
-.dsl_m5
-{
-  padding-left: 45px;
-}
-
-.dsl_m6
-{
-  padding-left: 54px;
-}
-
-.dsl_m7
-{
-  padding-left: 63px;
-}
-
-.dsl_m8
-{
-  padding-left: 72px;
-}
-
-.dsl_m9
-{
-  padding-left: 81px;
-}
-
-.dsl_p, .dsl_p :not(a) /* DSL Feature: Enforce the style even if the childen tags say otherwise, except links */
-{
-  color: green !important; /* DSL label color must have highest priority */
-  font-style: italic;
-  cursor: default;
-  font-weight: normal; /* DSL feature: labels are always of normal weight */
-}
-
-.dsl_stress_without_accent {
-  display: none;
-}
-
-.dsl_t
-{
-  font-weight: bold;
-}
-
-.dsl_headwords
-{
-  font-weight: bold;
-  margin-top: 15px;
-  margin-bottom: 10px;
-}
-
-.dsl_headwords p
-{
-  font-weight: bold;
-  font-size: 15px;
-  margin: 0;
-}
-
-.dsl_definition p
-{
-  margin: 0;
-}
-
-.dsl_opt
-{
-  display: none;
-}
-
-.dsl_opt,
-.dsl_opt .dsl_ex,
-.dsl_opt .dsl_ex :not(a),
-.dsl_opt .dsl_ex font[color] /* DSL Feature: Enforce the optional zone color even if the childen tags say otherwise */
-{
-  color: gray;
-}
-
-.dsl_ex, .dsl_ex .dsl_opt
-{
-  color: gray;
-}
-
-/* Style for expand optional parts button */
-.hidden_expand_opt
-{
-  color: blue;
-  cursor: pointer;
-  vertical-align: text-bottom;
-}
-
-.dsl_s_wav img
-{
-  /* Ugly hack since "vertical-align: middle;" looks _terrible_ in Qt4's webkit: */
-  vertical-align: -30%;
-}
-
-.dsl_video .img
-{
-  display: inline-block;
-  background: url('qrcx://localhost/icons/video.png');
-  background-repeat: no-repeat;
-  /* Ugly hack since "vertical-align: middle;" looks _terrible_ in Qt4's webkit: */
-  vertical-align: -30%;
-  width: 22px;
-  height: 22px;
-  margin: 0;
-  padding: 0;
-}
-
-.dsl_video .filename
-{
-  display: none; /* by default, the file name is hidden */
-  padding-left: 5px;
-}
-
-/************* MDict dictionaries **************/
-.mdict
-{
-  margin-top: 1em;
-}
-
-.mdict a[name]
-{
-  text-decoration: none;
-  color: inherit;
-}
-
-/************* Zim dictionaries **************/
-
-.zimdict
-{
-  font-size: 110%!important;
-}
-
-.zimdict_headword
-{
-  font-weight: bold!important;
-}
-
-/************* Spelling suggestions *****************/
-
-.gdspellsuggestion
-{
-  /* Add some vertical space before the article */
-  margin-top: 1em;
-}
-
-/************* Stemmed suggestions *****************/
-
-.gdstemmedsuggestion
-{
-  /* Add some horizontal and vertical space */
-  margin-top: 1em;
-  margin-left: 1px;
-}
-
-
-.gdstemmedsuggestion_head
-{
-  margin-left: 11px;
-  font-style: italic;
-}
-
-.gdstemmedsuggestion_body
-{
-}
-
-/************* Dictd articles *****************/
-.dictd_article
-{
-  /* Add some vertical space before the article */
-  margin-top: 1em;
-}
-
-.dictd_phonetic:before, .dictd_phonetic:after
-{
-  content: "\\";
-  font-style: normal;
-}
-
-.dictd_phonetic:after
-{
-  margin-left: 3px;
-}
-
-.dictd_phonetic
-{
-  font-style: italic;
-  color: #009900;
-}
-
-.dictd_article a:link
-{
-  color: #0000FF;
-}
-
-.dictserver_from
-{
-  font-size: 110%;
-  font-weight: 600;
-}
-
-/************* Epwing dictionaries *****************/
-
-.epwing_narrow_font
-{
-  width: 7px;
-  height: 13px;
-  vertical-align: -15%;
-}
-
-.epwing_wide_font
-{
-  width: 13px;
-  height: 13px;
-  vertical-align: -15%;
-}
-
-/************* Websites *****************/
-
-.website_padding
-{
-  height: 1em;
-  clear:both;
-}
-
-/************* Forvo **************/
-
-.forvo_headword
-{
-  margin-top: 15px;
-  margin-bottom: 10px;
-  font-weight: bold;
-  font-size: 15px;
-}
-
-/* A table which contains a play icon and information about the sound */
-.forvo_play
-{
-  margin-top: 8px;
-  margin-left: 8px;
-}
-
-.forvo_user
-{
-  text-decoration: none;
-  color: green;
-}
-
-.forvo_location
-{
-  color: grey;
-}
-
-.forvo_positive_votes
-{
-  font-weight: bold;
-  color: green;
-}
-
-.forvo_negative_votes
-{
-  font-weight: bold;
-  color: red;
-}
-
-/************* Programs **************/
-
-/* A table which contains a play icon and a word's link */
-.programs_play
-{
-  margin-top: 8px;
-  margin-left: 8px;
-}
-
-.programs_play a
-{
-  text-decoration: none;
-}
-
-.programs_plaintext, .programs_html
-{
-  margin-top: 15px;
-}
-
-/************* Voice engines **************/
-
-.voiceengines_play
-{
-  margin-top: 8px;
-  margin-left: 8px;
-}
-
-.voiceengines_play a
-{
-  text-decoration: none;
-}
-
-/************* MediaWiki articles *****************
- The following consist of excerpts from different .css files edited
- with a .mwiki prepended to each record.
-*/
-
-.mwiki
-{
-  /* Add some vertical space before the article */
-  margin-top: 1em;
-}
-
-.mwiki .topicon
-{
-  /* Those are padlocks on top and such -- we disable those for GoldenDict
-     since they look really ugly here */
-  display: none;
-}
-
-/************ common.css **************/
-
-/**
- * CSS in this file is used by *all* skins (that have any CSS at all).  Be
- * careful what you put in here, since what looks good in one skin may not in
- * another, but don't ignore the poor non-Monobook users either.
- */
-.mwiki .mw-plusminus-null { color: #aaa; }
-
-.mwiki .texvc { direction: ltr; unicode-bidi: embed; }
-.mwiki img.tex { vertical-align: middle; }
-.mwiki span.texhtml { font-family: serif; }
-
-/* add a bit of margin space between the preview and the toolbar */
-/* this replaces the ugly 


we used to insert into the page source */ -.mwiki #wikiPreview.ontop { margin-bottom: 1em; } - -/* Stop floats from intruding into edit area in previews */ -.mwiki #toolbar, .mwiki #wpTextbox1 { clear: both; } - -.mwiki div#mw-js-message { - margin: 1em 5%; - padding: 0.5em 2.5%; - border: solid 1px #ddd; - background-color: #fcfcfc; -} - -/* Edit section links */ -.mwiki .editsection { - float: right; - margin-left: 5px; -} - -/** - * File histories - */ -.mwiki table.filehistory { - border:1px solid #ccc; - border-collapse:collapse; -} - -.mwiki table.filehistory th, -.mwiki table.filehistory td { - padding: 0 0.2em 0 0.2em; - vertical-align:top; - border:1px solid #ccc; -} -.mwiki table.filehistory th { - text-align: left; -} -.mwiki table.filehistory td.mw-imagepage-filesize, -.mwiki table.filehistory th.mw-imagepage-filesize { - white-space:nowrap; -} - -.mwiki table.filehistory td.filehistory-selected { - font-weight: bold; -} - -/* - * rev_deleted stuff - */ -.mwiki li span.deleted, .mwiki span.history-deleted { - text-decoration: line-through; - color: #888; - font-style: italic; -} - -/** - * Forms - */ -.mwiki body.ltr td.mw-label { text-align: right; } -.mwiki body.ltr td.mw-input { text-align: left; } -.mwiki body.ltr td.mw-submit { text-align: left; } -.mwiki body.rtl td.mw-label { text-align: left; } -.mwiki body.rtl td.mw-input { text-align: right; } -.mwiki body.rtl td.mw-submit { text-align: right; } - -.mwiki td.mw-label { vertical-align: top; } -.mwiki td.mw-submit { white-space: nowrap; } - -/** - * Image captions - */ -.mwiki body.rtl .thumbcaption { text-align:right; } -.mwiki body.rtl .magnify { float:left; } - -.mwiki body.ltr .thumbcaption { text-align:left; } -.mwiki body.ltr .magnify { float:right; } - -/** - * Hidden categories - */ -.mwiki .mw-hidden-cats-hidden { display: none; } -.mwiki .catlinks-allhidden { display: none; } - -/* Convenience links to edit block, delete and protect reasons */ -.mwiki p.mw-ipb-conveniencelinks, .mwiki p.mw-protect-editreasons, -.mwiki p.mw-filedelete-editreasons, .mwiki p.mw-delete-editreasons { - font-size: 90%; - float: right; -} - -/* Search results */ -.mwiki div.searchresult { - font-size: 95%; - width:38em; -} -.mwiki .mw-search-results li { - padding-bottom: 1em; - list-style:none; -} -.mwiki .mw-search-result-data { - color: green; - font-size: 97%; -} - -.mwiki td#mw-search-menu { - padding-left:6em; - font-size:85%; -} - -.mwiki div#mw-search-interwiki { - float: right; - width: 18em; - border-style: solid; - border-color: #AAAAAA; - border-width: 1px; - margin-top: 2ex; -} - -.mwiki div#mw-search-interwiki li { - font-size: 95%; -} - -.mwiki .mw-search-interwiki-more { - float: right; - font-size: 90%; -} - -.mwiki span.searchalttitle { - font-size: 95%; -} - -.mwiki div.searchdidyoumean { - font-size: 127%; - margin-bottom: 1ex; - margin-top: 1ex; - /* Note that this color won't affect the link, as desired. */ - color: #c00; -} - -.mwiki div.searchdidyoumean em { - font-weight: bold; -} - -.mwiki .searchmatch { - font-weight: bold; -} - -.mwiki div.searchresults { - border:1px solid darkblue; - padding-top: 10px; - padding-bottom: 10px; - padding-left: 20px; - padding-right: 20px; -} - -/* - * UserRights stuff - */ -.mwiki .mw-userrights-disabled { - color: #888; -} - -.mwiki table.mw-userrights-groups * td,.mwiki table.mw-userrights-groups * th { - padding-right: 1.5em; -} - -/* - * OpenSearch ajax suggestions - */ -.mwiki .os-suggest { - overflow: auto; - overflow-x: hidden; - position: absolute; - top: 0px; - left: 0px; - width: 0px; - background-color: white; - background-color: Window; - border-style: solid; - border-color: #AAAAAA; - border-width: 1px; - z-index:99; - visibility:hidden; - font-size:95%; -} - -.mwiki table.os-suggest-results { - font-size: 95%; - cursor: pointer; - border: 0; - border-collapse: collapse; - width: 100%; -} - -.mwiki td.os-suggest-result, .mwiki td.os-suggest-result-hl { - white-space: nowrap; - background-color: white; - background-color: Window; - color: black; - color: WindowText; - padding: 2px; -} -.mwiki td.os-suggest-result-hl, -.mwiki td.os-suggest-result-hl-webkit { - background-color: #4C59A6; - color: white; -} -.mwiki td.os-suggest-result-hl { - /* System colors are misimplemented in Safari 3.0 and earlier, - making highlighted text illegible... */ - background-color: Highlight; - color: HighlightText; -} - -.mwiki .os-suggest-toggle { - position: relative; - left: 1ex; - font-size: 65%; -} -.mwiki .os-suggest-toggle-def { - position: absolute; - top: 0px; - left: 0px; - font-size: 65%; - visibility: hidden; -} - -/* Page history styling */ -/* the auto-generated edit comments */ -.mwiki .autocomment { color: gray; } -.mwiki #pagehistory .history-user { - margin-left: 0.4em; - margin-right: 0.2em; -} -.mwiki #pagehistory span.minor { font-weight: bold; } -.mwiki #pagehistory li { border: 1px solid white; } -.mwiki #pagehistory li.selected { - background-color: #f9f9f9; - border: 1px dashed #aaa; -} - -/* - * Special:ListGroupRights styling - * Special:Statistics styling -*/ - -.mwiki table.mw-listgrouprights-table, -.mwiki table.mw-statistics-table { - border: 1px solid #ccc; - border-collapse: collapse; -} - -.mwiki table.mw-listgrouprights-table tr { - vertical-align: top; -} - -.mwiki table.mw-listgrouprights-table td, .mwiki table.mw-listgrouprights-table th, -.mwiki table.mw-statistics-table td, .mwiki table.mw-statistics-table th { - padding: 0.5em 0.2em 0.5em 0.2em; - border: 1px solid #ccc; -} - -.mwiki td.mw-statistics-numbers { - text-align: right; -} - -/* Special:SpecialPages styling */ -.mwiki h4.mw-specialpagesgroup { - background-color: #dcdcdc; - padding: 2px; - margin: .3em 0em 0em 0em; -} -.mwiki .mw-specialpagerestricted { - font-weight: bold; -} - -.mwiki #shared-image-dup, .mwiki #shared-image-conflict { - font-style: italic; -} - -/* Special:EmailUser styling */ -.mwiki table.mw-emailuser-table { - width: 98%; -} -.mwiki td#mw-emailuser-sender, .mwiki td#mw-emailuser-recipient { - font-weight: bold; -} - -/* Special:Prefixindex styling */ -.mwiki table#mw-prefixindex-list-table, -.mwiki table#mw-prefixindex-nav-table { - width: 98%; - background-color: transparent; -} -.mwiki td#mw-prefixindex-nav-form { - font-size: smaller; - margin-bottom: 1em; - text-align: right; - vertical-align: top; -} - -/* - * Recreating deleted page warning - * Reupload file warning - * Page protection warning - * incl. log entries for these warnings - */ -.mwiki div.mw-warning-with-logexcerpt { - padding: 3px; - margin-bottom: 3px; - border: 2px solid #2F6FAB; -} -.mwiki div.mw-warning-with-logexcerpt ul li { - font-size: 90%; -} - -/* (show/hide) revision deletion links */ -.mwiki span.mw-revdelundel-link, -.mwiki strong.mw-revdelundel-link { - font-family: monospace; - font-size: smaller -} - -/* feed links */ -.mwiki a.feedlink { - background: url("images/feed-icon.png") center left no-repeat; - padding-left: 16px; -} - -/************ monobook/main.css **************/ - -/* -** MediaWiki 'monobook' style sheet for CSS2-capable browsers. -** Copyright Gabriel Wicke - http://wikidev.net/ -** License: GPL (http://www.gnu.org/copyleft/gpl.html) -** -** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John -** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher, -** Michael Zeltner and Geir Bækholt) -** All you guys rock :) -*/ - -.mwiki #column-content { - width: 100%; - float: right; - margin: 0 0 .6em -12.2em; - padding: 0; -} -.mwiki #content { - margin: 2.8em 0 0 12.2em; - padding: 0 1em 1em 1em; - position: relative; - z-index: 2; -} -.mwiki #column-one { - padding-top: 160px; -} -.mwiki #content { - background: white; - color: black; - border: 1px solid #aaa; - border-right: none; - line-height: 1.5em; -} -/* the left column width is specified in class .portlet */ - -/* Font size: -** We take advantage of keyword scaling- browsers won't go below 9px -** More at http://www.w3.org/2003/07/30-font-size -** http://style.cleverchimp.com/font_size_intervals/altintervals.html -*/ - -/* -body { - font: x-small sans-serif; - background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat; - color: black; - margin: 0; - padding: 0; -} -*/ - -/* scale back up to a sane default */ -.mwiki #globalWrapper { - font-size: 127%; - width: 100%; - margin: 0; - padding: 0; -} -.mwiki .visualClear { - clear: both; -} - -/* general styles */ - -.mwiki table { - font-size: 100%; - color: black; - /* we don't want the bottom borders of

s to be visible through - floated tables */ - background-color: white; -} -.mwiki fieldset table { - /* but keep table layouts in forms clean... */ - background: none; -} -.mwiki a { - text-decoration: none; - color: #002bb8; - background: none; -} -.mwiki a:visited { - color: #5a3696; -} -.mwiki a:active { - color: #faa700; -} -.mwiki a:hover { - text-decoration: underline; -} -.mwiki a.stub { - color: #772233; -} -.mwiki a.new, .mwiki #p-personal a.new { - color: #ba0000; -} -.mwiki a.new:visited, .mwiki #p-personal a.new:visited { - color: #a55858; -} - -.mwiki img { - border: none; - vertical-align: middle; -} -.mwiki p { - margin: .4em 0 .5em 0; - line-height: 1.5em; -} -.mwiki p img { - margin: 0; -} - -.mwiki hr { - height: 1px; - color: #aaa; - background-color: #aaa; - border: 0; - margin: .2em 0 .2em 0; -} - -.mwiki h1, .mwiki h2, .mwiki h3, .mwiki h4, .mwiki h5, .mwiki h6 { - color: black; - background: none; - font-weight: normal; - margin: 0; - padding-top: .5em; - padding-bottom: .17em; - border-bottom: 1px solid #aaa; -} -.mwiki h1 { font-size: 188%; } -.mwiki h1 .editsection { font-size: 53%; } -.mwiki h2 { font-size: 150%; } -.mwiki h2 .editsection { font-size: 67%; } -.mwiki h3, .mwiki h4, .mwiki h5, .mwiki h6 { - border-bottom: none; - font-weight: bold; -} -.mwiki h3 { font-size: 132%; } -.mwiki h3 .editsection { font-size: 76%; font-weight: normal; } -.mwiki h4 { font-size: 116%; } -.mwiki h4 .editsection { font-size: 86%; font-weight: normal; } -.mwiki h5 { font-size: 100%; } -.mwiki h5 .editsection { font-weight: normal; } -.mwiki h6 { font-size: 80%; } -.mwiki h6 .editsection { font-size: 125%; font-weight: normal; } - -.mwiki ul { - line-height: 1.5em; - list-style-type: square; - margin: .3em 0 0 1.5em; - padding: 0; - list-style-image: url(bullet.gif); -} -.mwiki ol { - line-height: 1.5em; - margin: .3em 0 0 3.2em; - padding: 0; - list-style-image: none; -} -.mwiki li { - margin-bottom: .1em; -} -.mwiki dt { - font-weight: bold; - margin-bottom: .1em; -} -.mwiki dl { - margin-top: .2em; - margin-bottom: .5em; -} -.mwiki dd { - line-height: 1.5em; - margin-left: 2em; - margin-bottom: .1em; -} - -.mwiki fieldset { - border: 1px solid #2f6fab; - margin: 1em 0 1em 0; - padding: 0 1em 1em; - line-height: 1.5em; -} -.mwiki fieldset.nested { - margin: 0 0 0.5em 0; - padding: 0 0.5em 0.5em; -} -.mwiki legend { - padding: .5em; - font-size: 95%; -} -.mwiki form { - border: none; - margin: 0; -} - -.mwiki textarea { - width: 100%; - padding: .1em; -} - -.mwiki input.historysubmit { - padding: 0 .3em .3em .3em !important; - font-size: 94%; - cursor: pointer; - height: 1.7em !important; - margin-left: 1.6em; -} -.mwiki select { - vertical-align: top; -} -.mwiki abbr, .mwiki acronym, .mwiki .explain { - border-bottom: 1px dotted black; - color: black; - background: none; - cursor: help; -} -.mwiki q { - font-family: Times, "Times New Roman", serif; - font-style: italic; -} -/* disabled for now -.mwiki blockquote { - font-family: Times, "Times New Roman", serif; - font-style: italic; -}*/ -.mwiki code { - background-color: #f9f9f9; -} -.mwiki pre { - padding: 1em; - border: 1px dashed #2f6fab; - color: black; - background-color: #f9f9f9; - line-height: 1.1em; -} - -/* -** the main content area -*/ - -.mwiki #siteSub { - display: none; -} -.mwiki #jump-to-nav { - display: none; -} - -.mwiki #contentSub, .mwiki #contentSub2 { - font-size: 84%; - line-height: 1.2em; - margin: 0 0 1.4em 1em; - color: #7d7d7d; - width: auto; -} -.mwiki span.subpages { - display: block; -} - -/* Some space under the headers in the content area */ -.mwiki #bodyContent h1, .mwiki #bodyContent h2 { - margin-bottom: .6em; -} -.mwiki #bodyContent h3, .mwiki #bodyContent h4, .mwiki #bodyContent h5 { - margin-bottom: .3em; -} -.mwiki #firstHeading { - margin-bottom: .1em; - /* These two rules hack around bug 2013 (fix for more limited bug 11325). - When bug 2013 is fixed properly, they should be removed. */ - line-height: 1.2em; - padding-bottom: 0; -} - -/* user notification thing */ -.mwiki .usermessage { - background-color: #ffce7b; - border: 1px solid #ffa500; - color: black; - font-weight: bold; - margin: 2em 0 1em; - padding: .5em 1em; - vertical-align: middle; -} -.mwiki #siteNotice { - text-align: center; - font-size: 95%; - padding: 0 .9em; -} -.mwiki #siteNotice p { - margin: 0; - padding: 0; -} -.mwiki .success { - color: green; - font-size: larger; -} -.mwiki .error { - color: red; - font-size: larger; -} -.mwiki .errorbox, .mwiki .successbox { - font-size: larger; - border: 2px solid; - padding: .5em 1em; - float: left; - margin-bottom: 2em; - color: #000; -} -.mwiki .errorbox { - border-color: red; - background-color: #fff2f2; -} -.mwiki .successbox { - border-color: green; - background-color: #dfd; -} -.mwiki .errorbox h2, .mwiki .successbox h2 { - font-size: 1em; - font-weight: bold; - display: inline; - margin: 0 .5em 0 0; - border: none; -} - -.mwiki .catlinks { - border: 1px solid #aaa; - background-color: #f9f9f9; - padding: 5px; - margin-top: 1em; - clear: both; -} -/* currently unused, intended to be used by a metadata box -in the bottom-right corner of the content area */ -.mwiki .documentDescription { - /* The summary text describing the document */ - font-weight: bold; - display: block; - margin: 1em 0; - line-height: 1.5em; -} -.mwiki .documentByLine { - text-align: right; - font-size: 90%; - clear: both; - font-weight: normal; - color: #76797c; -} - -/* emulate center */ -.mwiki .center { - width: 100%; - text-align: center; -} -.mwiki *.center * { - margin-left: auto; - margin-right: auto; -} -/* small for tables and similar */ -.mwiki .small, .mwiki .small * { - font-size: 94%; -} -.mwiki table.small { - font-size: 100%; -} - -/* -** content styles -*/ - -.mwiki #toc, -.mwiki .toc, -.mwiki .mw-warning { - border: 1px solid #aaa; - background-color: #f9f9f9; - padding: 5px; - font-size: 95%; -} -.mwiki #toc h2, -.mwiki .toc h2 { - display: inline; - border: none; - padding: 0; - font-size: 100%; - font-weight: bold; -} -.mwiki #toc #toctitle, -.mwiki .toc #toctitle, -.mwiki #toc .toctitle, -.mwiki .toc .toctitle { - text-align: center; -} -.mwiki #toc ul, -.mwiki .toc ul { - list-style-type: none; - list-style-image: none; - margin-left: 0; - padding-left: 0; - text-align: left; -} -.mwiki #toc ul ul, -.mwiki .toc ul ul { - margin: 0 0 0 2em; -} -.mwiki #toc .toctoggle, -.mwiki .toc .toctoggle { - font-size: 94%; -} - -.mwiki .mw-warning { - margin-left: 50px; - margin-right: 50px; - text-align: center; -} - -/* images */ -.mwiki div.floatright, .mwiki table.floatright { - clear: right; - float: right; - position: relative; - margin: 0 0 .5em .5em; - border: 0; -/* - border: .5em solid white; - border-width: .5em 0 .8em 1.4em; -*/ -} -.mwiki div.floatright p { font-style: italic; } -.mwiki div.floatleft, .mwiki table.floatleft { - float: left; - clear: left; - position: relative; - margin: 0 .5em .5em 0; - border: 0; -/* - margin: .3em .5em .5em 0; - border: .5em solid white; - border-width: .5em 1.4em .8em 0; -*/ -} -.mwiki div.floatleft p { font-style: italic; } -/* thumbnails */ -.mwiki div.thumb { - margin-bottom: .5em; - border-style: solid; - border-color: white; - width: auto; -} -.mwiki div.thumbinner { - border: 1px solid #ccc; - padding: 3px !important; - background-color: #f9f9f9; - font-size: 94%; - text-align: center; - overflow: hidden; -} -.mwiki html .thumbimage { - border: 1px solid #ccc; -} -.mwiki html .thumbcaption { - border: none; - text-align: left; - line-height: 1.4em; - padding: 3px !important; - font-size: 94%; -} -.mwiki div.magnify { - float: right; - border: none !important; - background: none !important; -} -.mwiki div.magnify a, .mwiki div.magnify img { - display: block; - border: none !important; - background: none !important; -} -.mwiki div.tright { - clear: right; - float: right; - border-width: .5em 0 .8em 1.4em; -} -.mwiki div.tleft { - float: left; - clear: left; - margin-right: .5em; - border-width: .5em 1.4em .8em 0; -} -.mwiki img.thumbborder { - border: 1px solid #dddddd; -} -.mwiki .hiddenStructure { - display: none; -} - -/* -** classes for special content elements like town boxes -** intended to be referenced directly from the wiki src -*/ - -/* -** User styles -*/ -/* table standards */ -.mwiki table.rimage { - float: right; - position: relative; - margin-left: 1em; - margin-bottom: 1em; - text-align: center; -} -.mwiki .toccolours { - border: 1px solid #aaa; - background-color: #f9f9f9; - padding: 5px; - font-size: 95%; -} - -/* -** edit views etc -*/ -.mwiki .special li { - line-height: 1.4em; - margin: 0; - padding: 0; -} - -/* -** keep the whitespace in front of the ^=, hides rule from konqueror -** this is css3, the validator doesn't like it when validating as css2 -*/ -.mwiki #bodyContent a.external, -.mwiki #bodyContent a[href ^="gopher://"] { - background: url(external.png) center right no-repeat; - padding-right: 13px; -} -.mwiki #bodyContent a[href ^="https://"], -.mwiki .link-https { - background: url(lock_icon.gif) center right no-repeat; - padding-right: 16px; -} -.mwiki #bodyContent a[href ^="mailto:"], -.mwiki .link-mailto { - background: url(mail_icon.gif) center right no-repeat; - padding-right: 18px; -} -.mwiki #bodyContent a[href ^="news://"] { - background: url(news_icon.png) center right no-repeat; - padding-right: 18px; -} -.mwiki #bodyContent a[href ^="ftp://"], -.mwiki .link-ftp { - background: url(file_icon.gif) center right no-repeat; - padding-right: 18px; -} -.mwiki #bodyContent a[href ^="irc://"], -.mwiki #bodyContent a.extiw[href ^="irc://"], -.mwiki .link-irc { - background: url(discussionitem_icon.gif) center right no-repeat; - padding-right: 18px; -} -.mwiki #bodyContent a.external[href $=".ogg"], .mwiki #bodyContent a.external[href $=".OGG"], -.mwiki #bodyContent a.external[href $=".mid"], .mwiki #bodyContent a.external[href $=".MID"], -.mwiki #bodyContent a.external[href $=".midi"], .mwiki #bodyContent a.external[href $=".MIDI"], -.mwiki #bodyContent a.external[href $=".mp3"], .mwiki #bodyContent a.external[href $=".MP3"], -.mwiki #bodyContent a.external[href $=".wav"], .mwiki #bodyContent a.external[href $=".WAV"], -.mwiki #bodyContent a.external[href $=".wma"], .mwiki #bodyContent a.external[href $=".WMA"], -.mwiki .link-audio { - background: url("audio.png") center right no-repeat; - padding-right: 13px; -} -.mwiki #bodyContent a.external[href $=".ogm"], .mwiki #bodyContent a.external[href $=".OGM"], -.mwiki #bodyContent a.external[href $=".avi"], .mwiki #bodyContent a.external[href $=".AVI"], -.mwiki #bodyContent a.external[href $=".mpeg"], .mwiki #bodyContent a.external[href $=".MPEG"], -.mwiki #bodyContent a.external[href $=".mpg"], .mwiki #bodyContent a.external[href $=".MPG"], -.mwiki .link-video { - background: url("video.png") center right no-repeat; - padding-right: 13px; -} -.mwiki #bodyContent a.external[href $=".pdf"], .mwiki #bodyContent a.external[href $=".PDF"], -.mwiki #bodyContent a.external[href *=".pdf#"], .mwiki #bodyContent a.external[href *=".PDF#"], -.mwiki #bodyContent a.external[href *=".pdf?"], .mwiki #bodyContent a.external[href *=".PDF?"], -.mwiki .link-document { - background: url("document.png") center right no-repeat; - padding-right: 12px; -} - -/* disable interwiki styling */ -.mwiki #bodyContent a.extiw, -.mwiki #bodyContent a.extiw:active { - color: #36b; - background: none; - padding: 0; -} -.mwiki #bodyContent a.external { - color: #36b; -} -/* this can be used in the content area to switch off -special external link styling */ -.mwiki #bodyContent .plainlinks a { - background: none !important; - padding: 0 !important; -} -/* -** Structural Elements -*/ - -/* -** general portlet styles (elements in the quickbar) -*/ -.mwiki .portlet { - border: none; - margin: 0 0 .5em; - padding: 0; - float: none; - width: 11.6em; - overflow: hidden; -} -.mwiki .portlet h4 { - font-size: 95%; - font-weight: normal; - white-space: nowrap; -} -.mwiki .portlet h5 { - background: transparent; - padding: 0 1em 0 .5em; - display: inline; - height: 1em; - text-transform: lowercase; - font-size: 91%; - font-weight: normal; - white-space: nowrap; -} -.mwiki .portlet h6 { - background: #ffae2e; - border: 1px solid #2f6fab; - border-style: solid solid none solid; - padding: 0 1em 0 1em; - text-transform: lowercase; - display: block; - font-size: 1em; - height: 1.2em; - font-weight: normal; - white-space: nowrap; -} -.mwiki .pBody { - font-size: 95%; - background-color: white; - color: black; - border-collapse: collapse; - border: 1px solid #aaa; - padding: 0 .8em .3em .5em; -} -.mwiki .portlet h1, -.mwiki .portlet h2, -.mwiki .portlet h3, -.mwiki .portlet h4 { - margin: 0; - padding: 0; -} -.mwiki .portlet ul { - line-height: 1.5em; - list-style-type: square; - list-style-image: url(bullet.gif); - font-size: 95%; -} -.mwiki .portlet li { - padding: 0; - margin: 0; -} - -/* -** Logo properties -*/ - -.mwiki #p-logo { - top: 0; - left: 0; - position: absolute; /*needed to use z-index */ - z-index: 3; - height: 155px; - width: 12em; - overflow: visible; -} -.mwiki #p-logo h5 { - display: none; -} -.mwiki #p-logo a, -.mwiki #p-logo a:hover { - display: block; - height: 155px; - width: 12.2em; - background-repeat: no-repeat; - background-position: 35% 50% !important; - text-decoration: none; -} - -/* -** Search portlet -*/ -.mwiki #p-search { - position: relative; - z-index: 3; -} -.mwiki input.searchButton { - margin-top: 1px; - font-size: 95%; -} -.mwiki #searchGoButton { - padding-left: .5em; - padding-right: .5em; - font-weight: bold; -} -.mwiki #searchInput { - width: 10.9em; - margin: 0; - font-size: 95%; -} -.mwiki #p-search .pBody { - padding: .5em .4em .4em .4em; - text-align: center; -} -.mwiki #p-search #searchform div div { - margin-top: .4em; - font-size: 95%; -} -/* -** the personal toolbar -*/ -.mwiki #p-personal { - position: absolute; - left: 0; - top: 0; - z-index: 0; -} -.mwiki #p-personal { - width: 100%; - white-space: nowrap; - padding: 0; - margin: 0; - border: none; - background: none; - overflow: visible; - line-height: 1.2em; -} -.mwiki #p-personal h5 { - display: none; -} -.mwiki #p-personal .portlet, -.mwiki #p-personal .pBody { - z-index: 0; - padding: 0; - margin: 0; - border: none; - overflow: visible; - background: none; -} -/* this is the ul contained in the portlet */ -.mwiki #p-personal ul { - border: none; - line-height: 1.4em; - color: #2f6fab; - padding: 0 2em 0 3em; - margin: 0; - text-align: right; - list-style: none; - z-index: 0; - background: none; - cursor: default; -} -.mwiki #p-personal li { - z-index: 0; - border: none; - padding: 0; - display: inline; - color: #2f6fab; - margin-left: 1em; - line-height: 1.2em; - background: none; -} -.mwiki #p-personal li a { - text-decoration: none; - color: #005896; - padding-bottom: .2em; - background: none; -} -.mwiki #p-personal li a:hover { - background-color: white; - padding-bottom: .2em; - text-decoration: none; -} -.mwiki #p-personal li.active a:hover { - background-color: transparent; -} -/* the icon in front of the user name, single quotes -in bg url to hide it from iemac */ -.mwiki li#pt-userpage, -.mwiki li#pt-anonuserpage, -.mwiki li#pt-login { - background: url(user.gif) top left no-repeat; - padding-left: 20px; - text-transform: none; -} -.mwiki #p-personal ul { - text-transform: lowercase; -} -.mwiki #p-personal li.active { - font-weight: bold; -} -/* -** the page-related actions- page/talk, edit etc -*/ -.mwiki #p-cactions { - position: absolute; - top: 1.3em; - left: 11.5em; - margin: 0; - white-space: nowrap; - width: 76%; - line-height: 1.1em; - overflow: visible; - background: none; - border-collapse: collapse; - padding-left: 1em; - list-style: none; - font-size: 95%; -} -.mwiki #p-cactions ul { - list-style: none; -} -.mwiki #p-cactions li { - display: inline; - border: 1px solid #aaa; - border-bottom: none; - padding: 0 0 .1em 0; - margin: 0 .3em 0 0; - overflow: visible; - background: white; -} -.mwiki #p-cactions li.selected { - border-color: #fabd23; - padding: 0 0 .2em 0; - font-weight: bold; -} -.mwiki #p-cactions li a { - background-color: #fbfbfb; - color: #002bb8; - border: none; - padding: 0 .8em .3em; - position: relative; - z-index: 0; - margin: 0; - text-decoration: none; -} -.mwiki #p-cactions li.selected a { - z-index: 3; - padding: 0 1em .2em!important; - background-color: white; -} -.mwiki #p-cactions .new a { - color: #ba0000; -} -.mwiki #p-cactions li a:hover { - z-index: 3; - text-decoration: none; - background-color: white; -} -.mwiki #p-cactions h5 { - display: none; -} -.mwiki #p-cactions li.istalk { - margin-right: 0; -} -.mwiki #p-cactions li.istalk a { - padding-right: .5em; -} -.mwiki #p-cactions #ca-addsection a { - padding-left: .4em; - padding-right: .4em; -} -/* offsets to distinguish the tab groups */ -.mwiki li#ca-talk { - margin-right: 1.6em; -} -.mwiki li#ca-watch, .mwiki li#ca-unwatch, .mwiki li#ca-varlang-0, .mwiki li#ca-print { - margin-left: 1.6em; -} -.mwiki #p-cactions .pBody { - font-size: 1em; - background-color: transparent; - color: inherit; - border-collapse: inherit; - border: 0; - padding: 0; -} -.mwiki #p-cactions .hiddenStructure { - display: none; -} -.mwiki #p-cactions li a { - text-transform: lowercase; -} - -.mwiki #p-lang { - position: relative; - z-index: 3; -} - -/* TODO: #t-iscite is only used by the Cite extension, come up with some - * system which allows extensions to add to this file on the fly - */ -.mwiki #t-ispermalink, .mwiki #t-iscite { - color: #999; -} -/* -** footer -*/ -.mwiki #footer { - background-color: white; - border-top: 1px solid #fabd23; - border-bottom: 1px solid #fabd23; - margin: .6em 0 1em 0; - padding: .4em 0 1.2em 0; - text-align: center; - font-size: 90%; -} -.mwiki #footer li { - display: inline; - margin: 0 1.3em; -} -.mwiki #f-poweredbyico, .mwiki #f-copyrightico { - margin: 0 8px; - position: relative; - top: -2px; /* Bump it up just a tad */ -} -.mwiki #f-poweredbyico { - float: right; - height: 1%; -} -.mwiki #f-copyrightico { - float: left; - height: 1%; -} - -/* js pref toc */ -.mwiki #preftoc { - margin: 0; - padding: 0; - width: 100%; - clear: both; -} -.mwiki #preftoc li { - background-color: #f0f0f0; - color: #000; -} -.mwiki #preftoc li { - margin: 1px -2px 1px 2px; - float: left; - padding: 2px 0 3px 0; - border: 1px solid #fff; - border-right-color: #716f64; - border-bottom: 0; - position: relative; - white-space: nowrap; - list-style-type: none; - list-style-image: none; - z-index: 3; -} -.mwiki #preftoc li.selected { - font-weight: bold; - background-color: #f9f9f9; - border: 1px solid #aaa; - border-bottom: none; - cursor: default; - top: 1px; - padding-top: 2px; - margin-right: -3px; -} -.mwiki #preftoc > li.selected { - top: 2px; -} -.mwiki #preftoc a, -.mwiki #preftoc a:active { - display: block; - color: #000; - padding: 0 .7em; - position: relative; - text-decoration: none; -} -.mwiki #preftoc li.selected a { - cursor: default; - text-decoration: none; -} -.mwiki #prefcontrol { - padding-top: 2em; - clear: both; -} -.mwiki #preferences { - margin: 0; - border: 1px solid #aaa; - clear: both; - padding: 1.5em; - background-color: #F9F9F9; -} -.mwiki .prefsection { - border: none; - padding: 0; - margin: 0; -} -.mwiki .prefsection fieldset { - border: 1px solid #aaa; - float: left; - margin-right: 2em; -} -.mwiki .prefsection legend { - font-weight: bold; -} -.mwiki .prefsection table, .mwiki .prefsection legend { - background-color: #F9F9F9; -} -.mwiki .mainLegend { - display: none; -} -.mwiki div.prefsectiontip { - font-size: x-small; - padding: .2em 2em; - color: #666; -} -.mwiki .btnSavePrefs { - font-weight: bold; - padding-left: .3em; - padding-right: .3em; -} - -.mwiki .preferences-login { - clear: both; - margin-bottom: 1.5em; -} - -.mwiki .prefcache { - font-size: 90%; - margin-top: 2em; -} - -.mwiki div#userloginForm form, -.mwiki div#userlogin form#userlogin2 { - margin: 0 3em 1em 0; - border: 1px solid #aaa; - clear: both; - padding: 1.5em 2em; - background-color: #f9f9f9; - float: left; -} -.mwiki .rtl div#userloginForm form, -.mwiki .rtl div#userlogin form#userlogin2 { - float: right; -} - -.mwiki div#userloginForm table, -.mwiki div#userlogin form#userlogin2 table { - background-color: #f9f9f9; -} - -.mwiki div#userloginForm h2, -.mwiki div#userlogin form#userlogin2 h2 { - padding-top: 0; -} - -.mwiki div#userlogin .captcha, -.mwiki div#userloginForm .captcha { - border: 1px solid #bbb; - padding: 1.5em 2em; - background-color: white; -} - -.mwiki #loginend, .mwiki #signupend { - clear: both; -} - -.mwiki #userloginprompt, .mwiki #languagelinks { - font-size: 85%; -} - -.mwiki #login-sectiontip { - font-size: 85%; - line-height: 1.2; - padding-top: 2em; -} - -.mwiki #userlogin .loginText, .mwiki #userlogin .loginPassword { - width: 12em; -} - -.mwiki #userloginlink a, .mwiki #wpLoginattempt, .mwiki #wpCreateaccount { - font-weight: bold; -} - - -/* IE/Mac fixes were cut out */ - -.mwiki .redirectText { - font-size: 150%; - margin: 5px; -} - -.mwiki .printfooter { - display: none; -} - -.mwiki .not-patrolled { - background-color: #ffa; -} -.mwiki div.patrollink { - clear: both; - font-size: 75%; - text-align: right; -} -.mwiki span.newpage, .mwiki span.minor, .mwiki span.bot { - font-weight: bold; -} -.mwiki span.unpatrolled { - font-weight: bold; - color: red; -} - -.mwiki .sharedUploadNotice { - font-style: italic; -} - -.mwiki span.updatedmarker { - color: black; - background-color: #0f0; -} - -.mwiki table.gallery { - border: 1px solid #ccc; - margin: 2px; - padding: 2px; - background-color: white; -} - -.mwiki table.gallery tr { - vertical-align: top; -} - -.mwiki table.gallery td { - vertical-align: top; - background-color: #f9f9f9; - border: solid 2px white; -} -/* Keep this temporarily so that cached pages will display right */ -.mwiki table.gallery td.galleryheader { - text-align: center; - font-weight: bold; -} -.mwiki table.gallery caption { - font-weight: bold; -} - -.mwiki div.gallerybox { - margin: 2px; -} - -.mwiki div.gallerybox div.thumb { - text-align: center; - border: 1px solid #ccc; - margin: 2px; -} - -.mwiki div.gallerytext { - overflow: hidden; - font-size: 94%; - padding: 2px 4px; -} - -.mwiki span.comment { - font-style: italic; -} - -.mwiki span.changedby { - font-size: 95%; -} - -.mwiki .previewnote { - text-indent: 3em; - color: #c00; - border-bottom: 1px solid #aaa; - padding-bottom: 1em; - margin-bottom: 1em; -} - -.mwiki .previewnote p { - margin: 0; - padding: 0; -} - -.mwiki .editExternally { - border: 1px solid gray; - background-color: #ffffff; - padding: 3px; - margin-top: 0.5em; - float: left; - font-size: small; - text-align: center; -} -.mwiki .editExternallyHelp { - font-style: italic; - color: gray; -} - -.mwiki .toggle { - margin-left: 2em; - text-indent: -2em; -} - -/* Classes for EXIF data display */ -.mwiki table.mw_metadata { - font-size: 0.8em; - margin-left: 0.5em; - margin-bottom: 0.5em; - width: 300px; -} - -.mwiki table.mw_metadata caption { - font-weight: bold; -} - -.mwiki table.mw_metadata th { - font-weight: normal; -} - -.mwiki table.mw_metadata td { - padding: 0.1em; -} - -.mwiki table.mw_metadata { - border: none; - border-collapse: collapse; -} - -.mwiki table.mw_metadata td, .mwiki table.mw_metadata th { - text-align: center; - border: 1px solid #aaaaaa; - padding-left: 0.1em; - padding-right: 0.1em; -} - -.mwiki table.mw_metadata th { - background-color: #f9f9f9; -} - -.mwiki table.mw_metadata td { - background-color: #fcfcfc; -} - -.mwiki table.collapsed tr.collapsable { - display: none; -} - - -/* filetoc */ -.mwiki ul#filetoc { - text-align: center; - border: 1px solid #aaaaaa; - background-color: #f9f9f9; - padding: 5px; - font-size: 95%; - margin-bottom: 0.5em; - margin-left: 0; - margin-right: 0; -} - -.mwiki #filetoc li { - display: inline; - list-style-type: none; - padding-right: 2em; -} - -.mwiki input#wpSummary { - width: 80%; -} - -/* @bug 1714 */ -.mwiki input#wpSave, .mwiki input#wpDiff { - margin-right: 0.33em; -} - -.mwiki #wpSave { - font-weight: bold; -} - -/* Classes for article validation */ - -.mwiki table.revisionform_default { - border: 1px solid #000000; -} - -.mwiki table.revisionform_focus { - border: 1px solid #000000; - background-color:#00BBFF; -} - -.mwiki tr.revision_tr_default { - background-color:#EEEEEE; -} - -.mwiki tr.revision_tr_first { - background-color:#DDDDDD; -} - -.mwiki p.revision_saved { - color: green; - font-weight:bold; -} - -.mwiki #mw_trackbacks { - border: solid 1px #bbbbff; - background-color: #eeeeff; - padding: 0.2em; -} - - -/* Allmessages table */ - -.mwiki #allmessagestable th { - background-color: #b2b2ff; -} - -.mwiki #allmessagestable tr.orig { - background-color: #ffe2e2; -} - -.mwiki #allmessagestable tr.new { - background-color: #e2ffe2; -} - -.mwiki #allmessagestable tr.def { - background-color: #f0f0ff; -} - - -/* noarticletext */ -.mwiki div.noarticletext { - border: 1px solid #ccc; - background: #fff; - padding: .2em 1em; - color: #000; -} - -.mwiki div#searchTargetContainer { - left: 10px; - top: 10px; - width: 90%; - background: white; -} - -.mwiki div#searchTarget { - padding: 3px; - margin: 5px; - background: #F0F0F0; - border: solid 1px blue; -} - -.mwiki div#searchTarget ul li { - list-style: none; -} - -.mwiki div#searchTarget ul li:before { - color: orange; - content: "\00BB \0020"; -} - -.mwiki div#searchTargetHide { - float:right; - border:solid 1px black; - background:#DCDCDC; - padding:2px; -} - -.mwiki #powersearch p { - margin-top:0px; -} - -.mwiki div.multipageimagenavbox { - border: solid 1px silver; - padding: 4px; - margin: 1em; - background: #f0f0f0; -} - -.mwiki div.multipageimagenavbox div.thumb { - border: none; - margin-left: 2em; - margin-right: 2em; -} - -.mwiki div.multipageimagenavbox hr { - margin: 6px; -} - -.mwiki table.multipageimage td { - text-align: center; -} - -/** Special:Version */ - -.mwiki table#sv-ext, table#sv-hooks, .mwiki table#sv-software { - margin: 1em; - padding:0em; -} - -.mwiki #sv-ext td, .mwiki #sv-hooks td, .mwiki #sv-software td, -.mwiki #sv-ext th, .mwiki #sv-hooks th, .mwiki #sv-software th { - border: 1px solid #A0A0A0; - padding: 0 0.15em 0 0.15em; -} -.mwiki #sv-ext th, .mwiki #sv-hooks th, .mwiki #sv-software th { - background-color: #F0F0F0; - color: black; - padding: 0 0.15em 0 0.15em; -} -.mwiki tr.sv-space{ - height: 0.8em; - border:none; -} -.mwiki tr.sv-space td { display: none; } - -/* - Table pager (e.g. Special:Imagelist) - - remove underlines from the navigation link - - collapse borders - - set the borders to outsets (similar to Special:Allmessages) - - remove line wrapping for all td and th, set background color - - restore line wrapping for the last two table cells (description and size) -*/ -.mwiki .TablePager { min-width: 80%; } -.mwiki .TablePager_nav a { text-decoration: none; } -.mwiki .TablePager { border-collapse: collapse; } -.mwiki .TablePager, .mwiki .TablePager td, .mwiki .TablePager th { - border: 1px solid #aaaaaa; - padding: 0 0.15em 0 0.15em; -} -.mwiki .TablePager th { background-color: #eeeeff } -.mwiki .TablePager td { background-color: #ffffff } -.mwiki .TablePager tr:hover td { background-color: #eeeeff } - -.mwiki .imagelist td, .mwiki .imagelist th { white-space: nowrap } -.mwiki .imagelist .TablePager_col_links { background-color: #eeeeff } -.mwiki .imagelist .TablePager_col_img_description { white-space: normal } -.mwiki .imagelist th.TablePager_sort { background-color: #ccccff } - -.mwiki .templatesUsed { margin-top: 1.5em; } - -.mwiki .mw-summary-preview { - margin: 0.1em 0; -} - -/* Friendlier slave lag warnings */ -.mwiki div.mw-lag-warn-normal, -.mwiki div.mw-lag-warn-high { - padding: 3px; - text-align: center; - margin: 3px auto; -} -.mwiki div.mw-lag-warn-normal { - border: 1px solid #FFCC66; - background-color: #FFFFCC; -} -.mwiki div.mw-lag-warn-high { - font-weight: bold; - border: 2px solid #FF0033; - background-color: #FFCCCC; -} - -.mwiki .MediaTransformError { - background-color: #ccc; - padding: 0.1em; -} -.mwiki .MediaTransformError td { - text-align: center; - vertical-align: middle; - font-size: 90%; -} - -/** Special:Search stuff */ -.mwiki div#mw-search-interwiki-caption { - text-align: center; - font-weight: bold; - font-size: 95%; -} - -.mwiki .mw-search-interwiki-project { - font-size: 97%; - text-align: left; - padding-left: 0.2em; - padding-right: 0.15em; - padding-bottom: 0.2em; - padding-top: 0.15em; - background: #cae8ff; -} - -/* God-damned hack for the crappy layout */ -.mwiki .os-suggest { - font-size: 127%; -} - - -/**** Excerpts from http://en.wikipedia.org/wiki/MediaWiki:Common.css ******/ -/* Since GoldenDict support is not Wikipedia-specific, we don't include all - * of it, and besides, it's large and volatile anyway. */ -/* It was also edited for the usually narrow article view */ - - -/* Make the list of references smaller */ -.mwiki ol.references { - font-size: 100%; -} -.mwiki .references-small { - font-size: 90%; -} - -/* VALIDATOR NOTICE: the following is correct, but the W3C validator doesn't accept it */ -/* -moz-* is a vendor-specific extension (CSS 2.1 4.1.2.1) */ -/* column-count is from the CSS3 module "CSS Multi-column Layout" */ -/* Please ignore any validator errors caused by these two lines */ -.mwiki .references-2column { - font-size: 90%; - -moz-column-count: 2; - -webkit-column-count: 2; - column-count: 2; -} - -/* Highlight clicked reference in blue to help navigation */ -.mwiki ol.references > li:target { - background-color: #DEF; -} - -.mwiki sup.reference:target { - background-color: #DEF; -} - -/* Styling for citations */ -.mwiki cite { - font-style: normal; - word-wrap: break-word; -} - -/* If there is an inline link to a full citation, the full citation will turn blue when the inline link is clicked */ -.mwiki cite:target { - background-color: #DEF; -} - -/* wikitable/prettytable class for skinning normal tables */ -.mwiki table.wikitable, -.mwiki table.prettytable { - margin: 1em 1em 1em 0; - background: #f9f9f9; - border: 1px #aaa solid; - border-collapse: collapse; -} -.mwiki .wikitable th, .mwiki .wikitable td, -.mwiki .prettytable th, .mwiki .prettytable td { - border: 1px #aaa solid; - padding: 0.2em; -} -.mwiki .wikitable th, -.mwiki .prettytable th { - background: #f2f2f2; - text-align: center; -} -.mwiki .wikitable caption, -.mwiki .prettytable caption { - font-weight: bold; -} - -/* default skin for navigation boxes */ -.mwiki table.navbox { /* navbox container style */ - border:1px solid #aaa; - width:100%; - margin:auto; - clear:both; - font-size:88%; - text-align:center; - padding:1px; -} -.mwiki table.navbox + table.navbox { - margin-top:-1px; /* single pixel border between adjacent navboxes (doesn't work for IE6, but that's okay) */ -} -.mwiki .navbox-title, .mwiki .navbox-abovebelow, .mwiki table.navbox th { - text-align:center; /* title and above/below styles */ - padding-left:1em; - padding-right:1em; -} -.mwiki .navbox-group { /* group style */ - white-space:nowrap; - text-align:right; - font-weight:bold; - padding-left:1em; - padding-right:1em; -} -.mwiki .navbox, .mwiki .navbox-subgroup { - background:#fdfdfd; /* Background color */ -} -.mwiki .navbox-list { - border-color:#fdfdfd; /* Must match background color */ -} -.mwiki .navbox-title, .mwiki table.navbox th { - background:#ccccff; /* Level 1 color */ -} -.mwiki .navbox-abovebelow, .mwiki .navbox-group, .mwiki .navbox-subgroup .navbox-title { - background:#ddddff; /* Level 2 color */ -} -.mwiki .navbox-subgroup .navbox-group, .mwiki .navbox-subgroup .navbox-abovebelow { - background:#e6e6ff; /* Level 3 color */ -} -.mwiki .navbox-even { - background:#f7f7f7; /* Even row striping */ -} -.mwiki .navbox-odd { - background:transparent; /* Odd row striping */ -} - -.mwiki .collapseButton { /* 'show'/'hide' buttons created dynamically by the */ - float: right; /* CollapsibleTables javascript in [[MediaWiki:Common.js]] */ - font-weight: normal; /* are styled here so they can be customised. */ - text-align: right; - width: auto; -} -.mwiki .navbox .collapseButton { /* In navboxes, the show/hide button balances the vde links from */ - width: 6em; /* [[Template:Tnavbar]], so they need to be the same width. */ -} - - - -/* Infobox template style */ -.mwiki .infobox { - border: 1px solid #aaa; - background-color: #f9f9f9; - color: black; -/* margin: 0.5em 0 0.5em 1em;*/ - margin: 10px auto 0; - padding: 0.2em; -/* - float: right; - clear: right;*/ -} - -.mwiki .infobox td, -.mwiki .infobox th { - vertical-align: top; -} -.mwiki .infobox caption { - font-size: larger; -} -.mwiki .infobox.bordered { - border-collapse: collapse; -} -.mwiki .infobox.bordered td, -.mwiki .infobox.bordered th { - border: 1px solid #aaa; -} -.mwiki .infobox.bordered .borderless td, -.mwiki .infobox.bordered .borderless th { - border: 0; -} - -.mwiki .infobox.sisterproject { - width: 20em; - font-size: 90%; -} - -.mwiki .infobox.standard-talk { - border: 1px solid #c0c090; - background-color: #f8eaba; -} -.mwiki .infobox.standard-talk.bordered td, -.mwiki .infobox.standard-talk.bordered th { - border: 1px solid #c0c090; -} - -/* styles for bordered infobox with merged rows */ -.mwiki .infobox.bordered .mergedtoprow td, -.mwiki .infobox.bordered .mergedtoprow th { - border: 0; - border-top: 1px solid #aaa; - border-right: 1px solid #aaa; -} - -.mwiki .infobox.bordered .mergedrow td, -.mwiki .infobox.bordered .mergedrow th { - border: 0; - border-right: 1px solid #aaa; -} - -/* Styles for geography infoboxes, e.g. countries, country subdivisions, cities, etc. */ -.mwiki .infobox.geography { - text-align: left; - border-collapse: collapse; - line-height: 1.2em; - font-size: 90%; -} - -.mwiki .infobox.geography td, -.mwiki .infobox.geography th { - border-top: solid 1px #aaa; - padding: 0.4em 0.6em 0.4em 0.6em; -} -.mwiki .infobox.geography .mergedtoprow td, -.mwiki .infobox.geography .mergedtoprow th { - border-top: solid 1px #aaa; - padding: 0.4em 0.6em 0.2em 0.6em; -} - -.mwiki .infobox.geography .mergedrow td, -.mwiki .infobox.geography .mergedrow th { - border: 0; - padding: 0 0.6em 0.2em 0.6em; -} - -.mwiki .infobox.geography .mergedbottomrow td, -.mwiki .infobox.geography .mergedbottomrow th { - border-top: 0; - border-bottom: solid 1px #aaa; - padding: 0 0.6em 0.4em 0.6em; -} - -.mwiki .infobox.geography .maptable td, -.mwiki .infobox.geography .maptable th { - border: 0; - padding: 0; -} - -/* Style for "notices" */ -.mwiki .notice { - margin: 1em; - padding: 0.2em; -} - -.mwiki #disambig { - border-top: 1px solid #ccc; - border-bottom: 1px solid #ccc; -} - -.mwiki .rellink, -.mwiki .dablink { - font-style: italic; - padding-left: 2em; -} -.mwiki .rellink i, -.mwiki .dablink i { - font-style: normal; -} - -/* Article message box styles */ -.mwiki table.ambox { /* 10% = Will not overlap with other elements */ - margin: -1px 10% 0px; /* -1px = Single border between stacked boxes in all browsers */ - border: 1px solid #aaa; - border-left: 10px solid #1e90ff; /* Default "notice" blue */ - background: #fbfbfb; -} -.mwiki .ambox th.mbox-text, -.mwiki .ambox td.mbox-text { /* The message body cell(s) */ - padding: 0.25em 0.5em; /* 0.5em left/right */ -} -.mwiki .ambox td.mbox-image { /* The left image cell */ - padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ -} -.mwiki .ambox td.mbox-imageright { /* The right image cell */ - padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ -} - -/* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */ -.mwiki div.NavFrame { - margin: 0; - padding: 4px; - border: 1px solid #aaa; - text-align: center; - border-collapse: collapse; - font-size: 95%; -} -.mwiki div.NavFrame + div.NavFrame { - border-top-style: none; - border-top-style: hidden; -} -.mwiki div.NavPic { - background-color: #fff; - margin: 0; - padding: 2px; - float: left; -} -.mwiki div.NavFrame div.NavHead { - height: 1.6em; - font-weight: bold; - background-color: #ccf; - position:relative; -} -.mwiki div.NavFrame p { - font-size: 100%; -} -.mwiki div.NavFrame div.NavContent { - font-size: 100%; -} -.mwiki div.NavFrame div.NavContent p { - font-size: 100%; -} -.mwiki div.NavEnd { - margin: 0; - padding: 0; - line-height: 1px; - clear: both; -} -.mwiki a.NavToggle { - position: absolute; - top: 0; - right: 3px; - font-weight: normal; - font-size: 90%; -} - - -/****** Wiktionary-specific excerpts *********/ - -.mwiki .audiolink a { - background: url("http://upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Loudspeaker.svg/16px-Loudspeaker.svg.png") center left no-repeat !important; - padding-left: 20px !important; - padding-right: 0 !important; -} - -/* default setting for [[:Category:Inflection templates]] */ - -.mwiki .infl-inline { display: inline } -.mwiki .infl-table { display: none } -/****default hide dict icon ***/ -.gddicticon{display:none;} - -.gdexpandicon { - cursor:pointer; - width:16px; - height:16px; - vertical-align: text-bottom; - background-image:url('qrcx://localhost/icons/arrow.png'); -} - -.gdcollapseicon { - cursor:pointer; - width:16px; - height:16px; - vertical-align: text-bottom; - background-image:url('qrcx://localhost/icons/downarrow.png'); -} - -/********** Slob dictionaries ***********/ - -.slobdict img.imgtex -{ - vertical-align: baseline !important; -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_maker.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_maker.cc deleted file mode 100644 index eafbbf4b76..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_maker.cc +++ /dev/null @@ -1,1091 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "article_maker.hh" -#include "config.hh" -#include "htmlescape.hh" -#include "utf8.hh" -#include "wstring_qt.hh" -#include -#include -#include -#include -#include "folding.hh" -#include "langcoder.hh" -#include "gddebug.hh" -#include "qt4x5.hh" - -using std::vector; -using std::string; -using gd::wstring; -using std::set; -using std::list; - -ArticleMaker::ArticleMaker( vector< sptr< Dictionary::Class > > const & dictionaries_, - vector< Instances::Group > const & groups_, - QString const & displayStyle_, - QString const & addonStyle_): - dictionaries( dictionaries_ ), - groups( groups_ ), - displayStyle( displayStyle_ ), - addonStyle( addonStyle_ ), - needExpandOptionalParts( true ) -, collapseBigArticles( true ) -, articleLimitSize( 500 ) -{ -} - -void ArticleMaker::setDisplayStyle( QString const & st, QString const & adst ) -{ - displayStyle = st; - addonStyle = adst; -} - -std::string ArticleMaker::makeHtmlHeader( QString const & word, - QString const & icon, - bool expandOptionalParts ) const -{ - string result = - "" - "" - ""; - - // Add a css stylesheet - - { - QFile builtInCssFile( ":/article-style.css" ); - builtInCssFile.open( QFile::ReadOnly ); - QByteArray css = builtInCssFile.readAll(); - - if ( displayStyle.size() ) - { - // Load an additional stylesheet - QFile builtInCssFile( QString( ":/article-style-st-%1.css" ).arg( displayStyle ) ); - builtInCssFile.open( QFile::ReadOnly ); - css += builtInCssFile.readAll(); - } - - QFile cssFile( Config::getUserCssFileName() ); - - if ( cssFile.open( QFile::ReadOnly ) ) - css += cssFile.readAll(); - - if( !addonStyle.isEmpty() ) - { - QString name = Config::getStylesDir() + addonStyle - + QDir::separator() + "article-style.css"; - QFile addonCss( name ); - if( addonCss.open( QFile::ReadOnly ) ) - css += addonCss.readAll(); - } - - result += "\n"; - } - - // Add print-only css - - { - QFile builtInCssFile( ":/article-style-print.css" ); - builtInCssFile.open( QFile::ReadOnly ); - QByteArray css = builtInCssFile.readAll(); - - QFile cssFile( Config::getUserCssPrintFileName() ); - - if ( cssFile.open( QFile::ReadOnly ) ) - css += cssFile.readAll(); - - if( !addonStyle.isEmpty() ) - { - QString name = Config::getStylesDir() + addonStyle - + QDir::separator() + "article-style-print.css"; - QFile addonCss( name ); - if( addonCss.open( QFile::ReadOnly ) ) - css += addonCss.readAll(); - } - - result += "\n"; - } - - result += "" + Html::escape( Utf8::encode( gd::toWString( word ) ) ) + ""; - - // This doesn't seem to be much of influence right now, but we'll keep - // it anyway. - if ( icon.size() ) - result += "\n"; - - result += ""; - - result += ""; - - return result; -} - -std::string ArticleMaker::makeNotFoundBody( QString const & word, - QString const & group ) -{ - string result( "

" ); - - QString str( word ); - if( str.isRightToLeft() ) - { - str.insert( 0, (ushort)0x202E ); // RLE, Right-to-Left Embedding - str.append( (ushort)0x202C ); // PDF, POP DIRECTIONAL FORMATTING - } - - if ( word.size() ) - result += tr( "No translation for %1 was found in group %2." ). - arg( QString::fromUtf8( Html::escape( str.toUtf8().data() ).c_str() ) ). - arg( QString::fromUtf8( Html::escape( group.toUtf8().data() ).c_str() ) ). - toUtf8().data(); - else - result += tr( "No translation was found in group %1." ). - arg( QString::fromUtf8( Html::escape( group.toUtf8().data() ).c_str() ) ). - toUtf8().data(); - - result += "

"; - - return result; -} - -sptr< Dictionary::DataRequest > ArticleMaker::makeDefinitionFor( - QString const & inWord, unsigned groupId, - QMap< QString, QString > const & contexts, - QSet< QString > const & mutedDicts, - QStringList const & dictIDs ) const -{ - if( !dictIDs.isEmpty() ) - { - QStringList ids = dictIDs; - std::vector< sptr< Dictionary::Class > > ftsDicts; - - // Find dictionaries by ID's - for( unsigned x = 0; x < dictionaries.size(); x++ ) - { - for( QStringList::Iterator it = ids.begin(); it != ids.end(); ++it ) - { - if( *it == QString::fromStdString( dictionaries[ x ]->getId() ) ) - { - ftsDicts.push_back( dictionaries[ x ] ); - ids.erase( it ); - break; - } - } - if( ids.isEmpty() ) - break; - } - - string header = makeHtmlHeader( inWord.trimmed(), QString(), true ); - - return new ArticleRequest( inWord.trimmed(), "", - contexts, ftsDicts, header, - -1, true ); - } - - if ( groupId == Instances::Group::HelpGroupId ) - { - // This is a special group containing internal welcome/help pages - string result = makeHtmlHeader( inWord, QString(), needExpandOptionalParts ); - - if ( inWord == tr( "Welcome!" ) ) - { - result += tr( -"

Welcome to GoldenDict!

" -"

To start working with the program, first visit Edit|Dictionaries to add some directory paths where to search " -"for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups." -"

And then you're ready to look up your words! You can do that in this window " -"by using a pane to the left, or you can look up words from other active applications. " -"

To customize program, check out the available preferences at Edit|Preferences. " -"All settings there have tooltips, be sure to read them if you are in doubt about anything." -"

Should you need further help, have any questions, " -"suggestions or just wonder what the others think, you are welcome at the program's forum." -"

Check program's website for the updates. " -"

(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later." - - ).toUtf8().data(); - } - else - if ( inWord == tr( "Working with popup" ) ) - { - result += ( tr( "

Working with the popup

" - -"To look up words from other active applications, you would need to first activate the \"Scan popup functionality\" in Preferences, " -"and then enable it at any time either by triggering the 'Popup' icon above, or " -"by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. " ) + - -#ifdef Q_OS_WIN32 - tr( "Then just stop the cursor over the word you want to look up in another application, " - "and a window would pop up which would describe it to you." ) -#else - tr( "Then just select any word you want to look up in another application by your mouse " - "(double-click it or swipe it with mouse with the button pressed), " - "and a window would pop up which would describe the word to you." ) -#endif - ).toUtf8().data(); - } - else - { - // Not found - return makeNotFoundTextFor( inWord, "help" ); - } - - result += ""; - - sptr< Dictionary::DataRequestInstant > r = new Dictionary::DataRequestInstant( true ); - - r->getData().resize( result.size() ); - memcpy( &( r->getData().front() ), result.data(), result.size() ); - - return r; - } - - // Find the given group - - Instances::Group const * activeGroup = 0; - - for( unsigned x = 0; x < groups.size(); ++x ) - if ( groups[ x ].id == groupId ) - { - activeGroup = &groups[ x ]; - break; - } - - // If we've found a group, use its dictionaries; otherwise, use the global - // heap. - std::vector< sptr< Dictionary::Class > > const & activeDicts = - activeGroup ? activeGroup->dictionaries : dictionaries; - - string header = makeHtmlHeader( inWord.trimmed(), - activeGroup && activeGroup->icon.size() ? - activeGroup->icon : QString(), - needExpandOptionalParts ); - - if ( mutedDicts.size() ) - { - std::vector< sptr< Dictionary::Class > > unmutedDicts; - - unmutedDicts.reserve( activeDicts.size() ); - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - if ( !mutedDicts.contains( - QString::fromStdString( activeDicts[ x ]->getId() ) ) ) - unmutedDicts.push_back( activeDicts[ x ] ); - - return new ArticleRequest( inWord.trimmed(), activeGroup ? activeGroup->name : "", - contexts, unmutedDicts, header, - collapseBigArticles ? articleLimitSize : -1, - needExpandOptionalParts ); - } - else - return new ArticleRequest( inWord.trimmed(), activeGroup ? activeGroup->name : "", - contexts, activeDicts, header, - collapseBigArticles ? articleLimitSize : -1, - needExpandOptionalParts ); -} - -sptr< Dictionary::DataRequest > ArticleMaker::makeNotFoundTextFor( - QString const & word, QString const & group ) const -{ - string result = makeHtmlHeader( word, QString(), true ) + makeNotFoundBody( word, group ) + - ""; - - sptr< Dictionary::DataRequestInstant > r = new Dictionary::DataRequestInstant( true ); - - r->getData().resize( result.size() ); - memcpy( &( r->getData().front() ), result.data(), result.size() ); - - return r; -} - -sptr< Dictionary::DataRequest > ArticleMaker::makeEmptyPage() const -{ - string result = makeHtmlHeader( tr( "(untitled)" ), QString(), true ) + - ""; - - sptr< Dictionary::DataRequestInstant > r = - new Dictionary::DataRequestInstant( true ); - - r->getData().resize( result.size() ); - memcpy( &( r->getData().front() ), result.data(), result.size() ); - - return r; -} - -sptr< Dictionary::DataRequest > ArticleMaker::makePicturePage( string const & url ) const -{ - string result = makeHtmlHeader( tr( "(picture)" ), QString(), true ) - + "2) history.go(-1)\">" - + "" - + ""; - - sptr< Dictionary::DataRequestInstant > r = - new Dictionary::DataRequestInstant( true ); - - r->getData().resize( result.size() ); - memcpy( &( r->getData().front() ), result.data(), result.size() ); - - return r; -} - -void ArticleMaker::setExpandOptionalParts( bool expand ) -{ - needExpandOptionalParts = expand; -} - -void ArticleMaker::setCollapseParameters( bool autoCollapse, int articleSize ) -{ - collapseBigArticles = autoCollapse; - articleLimitSize = articleSize; -} - - -bool ArticleMaker::adjustFilePath( QString & fileName ) -{ - QFileInfo info( fileName ); - if( !info.isFile() ) - { - QString dir = Config::getConfigDir(); - dir.chop( 1 ); - info.setFile( dir + fileName); - if( info.isFile() ) - { - fileName = info.canonicalFilePath(); - return true; - } - } - return false; -} - -//////// ArticleRequest - -ArticleRequest::ArticleRequest( - QString const & word_, QString const & group_, - QMap< QString, QString > const & contexts_, - vector< sptr< Dictionary::Class > > const & activeDicts_, - string const & header, - int sizeLimit, bool needExpandOptionalParts_ ): - word( word_ ), group( group_ ), contexts( contexts_ ), - activeDicts( activeDicts_ ), - altsDone( false ), bodyDone( false ), foundAnyDefinitions( false ), - closePrevSpan( false ) -, articleSizeLimit( sizeLimit ) -, needExpandOptionalParts( needExpandOptionalParts_ ) -{ - // No need to lock dataMutex on construction - - hasAnyData = true; - - data.resize( header.size() ); - memcpy( &data.front(), header.data(), header.size() ); - - // Accumulate main forms - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - { - sptr< Dictionary::WordSearchRequest > s = activeDicts[ x ]->findHeadwordsForSynonym( gd::toWString( word ) ); - - connect( s.get(), SIGNAL( finished() ), - this, SLOT( altSearchFinished() ), Qt::QueuedConnection ); - - altSearches.push_back( s ); - } - - altSearchFinished(); // Handle any ones which have already finished -} - -void ArticleRequest::altSearchFinished() -{ - if ( altsDone ) - return; - - // Check every request for finishing - for( list< sptr< Dictionary::WordSearchRequest > >::iterator i = - altSearches.begin(); i != altSearches.end(); ) - { - if ( (*i)->isFinished() ) - { - // This one's finished - for( size_t count = (*i)->matchesCount(), x = 0; x < count; ++x ) - alts.insert( (**i)[ x ].word ); - - altSearches.erase( i++ ); - } - else - ++i; - } - - if ( altSearches.empty() ) - { -#ifdef QT_DEBUG - qDebug( "alts finished\n" ); -#endif - - // They all've finished! Now we can look up bodies - - altsDone = true; // So any pending signals in queued mode won't mess us up - - vector< wstring > altsVector( alts.begin(), alts.end() ); - -#ifdef QT_DEBUG - for( unsigned x = 0; x < altsVector.size(); ++x ) - { - qDebug() << "Alt:" << gd::toQString( altsVector[ x ] ); - } -#endif - - wstring wordStd = gd::toWString( word ); - - if( activeDicts.size() <= 1 ) - articleSizeLimit = -1; // Don't collapse article if only one dictionary presented - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - { - try - { - sptr< Dictionary::DataRequest > r = - activeDicts[ x ]->getArticle( wordStd, altsVector, - gd::toWString( contexts.value( QString::fromStdString( activeDicts[ x ]->getId() ) ) ) ); - - connect( r.get(), SIGNAL( finished() ), - this, SLOT( bodyFinished() ), Qt::QueuedConnection ); - - bodyRequests.push_back( r ); - } - catch( std::exception & e ) - { - gdWarning( "getArticle request error (%s) in \"%s\"\n", - e.what(), activeDicts[ x ]->getName().c_str() ); - } - } - - bodyFinished(); // Handle any ones which have already finished - } -} - -int ArticleRequest::findEndOfCloseDiv( const QString &str, int pos ) -{ - for( ; ; ) - { - int n1 = str.indexOf( "

", pos ); - if( n1 <= 0 ) - return n1; - - int n2 = str.indexOf( "
n1 ) - return n1 + 6; - - pos = findEndOfCloseDiv( str, n2 + 1 ); - if( pos <= 0 ) - return pos; - } -} - -void ArticleRequest::bodyFinished() -{ - if ( bodyDone ) - return; - - GD_DPRINTF( "some body finished\n" ); - - bool wasUpdated = false; - - while ( bodyRequests.size() ) - { - // Since requests should go in order, check the first one first - if ( bodyRequests.front()->isFinished() ) - { - // Good - - GD_DPRINTF( "one finished.\n" ); - - Dictionary::DataRequest & req = *bodyRequests.front(); - - QString errorString = req.getErrorString(); - - if ( req.dataSize() >= 0 || errorString.size() ) - { - sptr< Dictionary::Class > const & activeDict = - activeDicts[ activeDicts.size() - bodyRequests.size() ]; - - string dictId = activeDict->getId(); - - string head; - - string gdFrom = "gdfrom-" + Html::escape( dictId ); - - if ( closePrevSpan ) - { - head += "
"; - } - else - { - // This is the first article - head += ""; - } - - bool collapse = false; - if( articleSizeLimit >= 0 ) - { - try - { - Mutex::Lock _( dataMutex ); - QString text = QString::fromUtf8( req.getFullData().data(), req.getFullData().size() ); - - if( !needExpandOptionalParts ) - { - // Strip DSL optional parts - int pos = 0; - for( ; ; ) - { - pos = text.indexOf( "
0 ) - { - int endPos = findEndOfCloseDiv( text, pos + 1 ); - if( endPos > pos) - text.remove( pos, endPos - pos ); - else - break; - } - else - break; - } - } - - int size = QTextDocumentFragment::fromHtml( text ).toPlainText().length(); - if( size > articleSizeLimit ) - collapse = true; - } - catch(...) - { - } - } - - string jsVal = Html::escapeForJavaScript( dictId ); - head += ""; - - head += string( ""; - - closePrevSpan = true; - - head += string( "
" + - Html::escape( tr( "From " ).toUtf8().data() ) + "" + - Html::escape( activeDict->getName().c_str() ) + "" - + "" + "
"; - - head += "
"; - - head += "getLangFrom() ).toLatin1().data(); - head += "\" lang=\""; - head += LangCoder::intToCode2( activeDict->getLangTo() ).toLatin1().data(); - head += "\""; - head += " style=\"display:"; - head += collapse ? "none" : "inline"; - head += string( "\" id=\"gdarticlefrom-" ) + Html::escape( dictId ) + "\">"; - - if ( errorString.size() ) - { - head += "
" + - Html::escape( tr( "Query error: %1" ).arg( errorString ).toUtf8().data() ) - + "
"; - } - - Mutex::Lock _( dataMutex ); - - size_t offset = data.size(); - - data.resize( data.size() + head.size() + ( req.dataSize() > 0 ? req.dataSize() : 0 ) ); - - memcpy( &data.front() + offset, head.data(), head.size() ); - - try - { - if ( req.dataSize() > 0 ) - bodyRequests.front()->getDataSlice( 0, req.dataSize(), - &data.front() + offset + head.size() ); - } - catch( std::exception & e ) - { - gdWarning( "getDataSlice error: %s\n", e.what() ); - } - - wasUpdated = true; - - foundAnyDefinitions = true; - } - GD_DPRINTF( "erasing..\n" ); - bodyRequests.pop_front(); - GD_DPRINTF( "erase done..\n" ); - } - else - { - GD_DPRINTF( "one not finished.\n" ); - break; - } - } - - if ( bodyRequests.empty() ) - { - // No requests left, end the article - - bodyDone = true; - - { - string footer; - - if ( closePrevSpan ) - { - footer += "
"; - closePrevSpan = false; - } - - if ( !foundAnyDefinitions ) - { - // No definitions were ever found, say so to the user. - - // Larger words are usually whole sentences - don't clutter the ouput - // with their full bodies. - footer += ArticleMaker::makeNotFoundBody( word.size() < 40 ? word : "", group ); - - // When there were no definitions, we run stemmed search. - stemmedWordFinder = new WordFinder( this ); - - connect( stemmedWordFinder.get(), SIGNAL( finished() ), - this, SLOT( stemmedSearchFinished() ), Qt::QueuedConnection ); - - stemmedWordFinder->stemmedMatch( word, activeDicts ); - } - else - { - footer += ""; - } - - Mutex::Lock _( dataMutex ); - - size_t offset = data.size(); - - data.resize( data.size() + footer.size() ); - - memcpy( &data.front() + offset, footer.data(), footer.size() ); - } - - if ( stemmedWordFinder.get() ) - update(); - else - finish(); - } - else - if ( wasUpdated ) - update(); -} - -void ArticleRequest::stemmedSearchFinished() -{ - // Got stemmed matching results - - WordFinder::SearchResults sr = stemmedWordFinder->getResults(); - - string footer; - - bool continueMatching = false; - - if ( sr.size() ) - { - footer += "
" + - Html::escape( tr( "Close words: " ).toUtf8().data() ) + - ""; - - for( unsigned x = 0; x < sr.size(); ++x ) - { - footer += linkWord( sr[ x ].first ); - - if ( x != sr.size() - 1 ) - { - footer += ", "; - } - } - - footer += "
"; - } - - splittedWords = splitIntoWords( word ); - - if ( splittedWords.first.size() > 1 ) // Contains more than one word - { - disconnect( stemmedWordFinder.get(), SIGNAL( finished() ), - this, SLOT( stemmedSearchFinished() ) ); - - connect( stemmedWordFinder.get(), SIGNAL( finished() ), - this, SLOT( individualWordFinished() ), Qt::QueuedConnection ); - - currentSplittedWordStart = -1; - currentSplittedWordEnd = currentSplittedWordStart; - - firstCompoundWasFound = false; - - compoundSearchNextStep( false ); - - continueMatching = true; - } - - if ( !continueMatching ) - footer += ""; - - { - Mutex::Lock _( dataMutex ); - - size_t offset = data.size(); - - data.resize( data.size() + footer.size() ); - - memcpy( &data.front() + offset, footer.data(), footer.size() ); - } - - if ( continueMatching ) - update(); - else - finish(); -} - -void ArticleRequest::compoundSearchNextStep( bool lastSearchSucceeded ) -{ - if ( !lastSearchSucceeded ) - { - // Last search was unsuccessful. First, emit what we had. - - string footer; - - if ( lastGoodCompoundResult.size() ) // We have something to append - { -// DPRINTF( "Appending\n" ); - - if ( !firstCompoundWasFound ) - { - // Append the beginning - footer += "
" + - Html::escape( tr( "Compound expressions: " ).toUtf8().data() ) + - ""; - - firstCompoundWasFound = true; - } - else - { - // Append the separator - footer += " / "; - } - - footer += linkWord( lastGoodCompoundResult ); - - lastGoodCompoundResult.clear(); - } - - // Then, start a new search for the next word, if possible - - if ( currentSplittedWordStart >= splittedWords.first.size() - 2 ) - { - // The last word was the last possible to start from - - if ( firstCompoundWasFound ) - footer += ""; - - // Now add links to all the individual words. They conclude the result. - - footer += "
" + - Html::escape( tr( "Individual words: " ).toUtf8().data() ) + - "expressionMatch( currentSplittedWordCompound, activeDicts, 40, // Would one be enough? Leave 40 to be safe. - Dictionary::SuitableForCompoundSearching ); -} - -QString ArticleRequest::makeSplittedWordCompound() -{ - QString result; - - result.clear(); - - for( int x = currentSplittedWordStart; x <= currentSplittedWordEnd; ++x ) - { - result.append( splittedWords.first[ x ] ); - - if ( x < currentSplittedWordEnd ) - { - wstring ws( gd::toWString( splittedWords.second[ x + 1 ] ) ); - - Folding::normalizeWhitespace( ws ); - - result.append( gd::toQString( ws ) ); - } - } - - return result; -} - -void ArticleRequest::individualWordFinished() -{ - WordFinder::SearchResults const & results = stemmedWordFinder->getResults(); - - if ( results.size() ) - { - wstring source = Folding::applySimpleCaseOnly( gd::toWString( currentSplittedWordCompound ) ); - - bool hadSomething = false; - - for( unsigned x = 0; x < results.size(); ++x ) - { - if ( results[ x ].second ) - { - // Spelling suggestion match found. No need to continue. - hadSomething = true; - lastGoodCompoundResult = currentSplittedWordCompound; - break; - } - - // Prefix match found. Check if the aliases are acceptable. - - wstring result( Folding::applySimpleCaseOnly( gd::toWString( results[ x ].first ) ) ); - - if ( source.size() <= result.size() && result.compare( 0, source.size(), source ) == 0 ) - { - // The resulting string begins with the source one - - hadSomething = true; - - if ( source.size() == result.size() ) - { - // Got the match. No need to continue. - lastGoodCompoundResult = currentSplittedWordCompound; - break; - } - } - } - - if ( hadSomething ) - { - compoundSearchNextStep( true ); - return; - } - } - - compoundSearchNextStep( false ); -} - -void ArticleRequest::appendToData( std::string const & str ) -{ - Mutex::Lock _( dataMutex ); - - size_t offset = data.size(); - - data.resize( data.size() + str.size() ); - - memcpy( &data.front() + offset, str.data(), str.size() ); - -} - -QPair< ArticleRequest::Words, ArticleRequest::Spacings > ArticleRequest::splitIntoWords( QString const & input ) -{ - QPair< Words, Spacings > result; - - QChar const * ptr = input.data(); - - for( ; ; ) - { - QString spacing; - - for( ; ptr->unicode() && ( Folding::isPunct( ptr->unicode() ) || Folding::isWhitespace( ptr->unicode() ) ); ++ptr ) - spacing.append( *ptr ); - - result.second.append( spacing ); - - QString word; - - for( ; ptr->unicode() && !( Folding::isPunct( ptr->unicode() ) || Folding::isWhitespace( ptr->unicode() ) ); ++ptr ) - word.append( *ptr ); - - if ( word.isEmpty() ) - break; - - result.first.append( word ); - } - - return result; -} - -string ArticleRequest::linkWord( QString const & str ) -{ - QUrl url; - - url.setScheme( "gdlookup" ); - url.setHost( "localhost" ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( str ) ); - - string escapedResult = Html::escape( str.toUtf8().data() ); - return string( "" + escapedResult +""; -} - -std::string ArticleRequest::escapeSpacing( QString const & str ) -{ - QByteArray spacing = Html::escape( str.toUtf8().data() ).c_str(); - - spacing.replace( "\n", "
" ); - - return spacing.data(); -} - -void ArticleRequest::cancel() -{ - if( isFinished() ) - return; - if( !altSearches.empty() ) - { - for( list< sptr< Dictionary::WordSearchRequest > >::iterator i = - altSearches.begin(); i != altSearches.end(); ++i ) - { - (*i)->cancel(); - } - } - if( !bodyRequests.empty() ) - { - for( list< sptr< Dictionary::DataRequest > >::iterator i = - bodyRequests.begin(); i != bodyRequests.end(); ++i ) - { - (*i)->cancel(); - } - } - if( stemmedWordFinder.get() ) stemmedWordFinder->cancel(); - finish(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_maker.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_maker.hh deleted file mode 100644 index 8697354f78..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_maker.hh +++ /dev/null @@ -1,169 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ARTICLE_MAKER_HH_INCLUDED__ -#define __ARTICLE_MAKER_HH_INCLUDED__ - -#include -#include -#include -#include -#include "dictionary.hh" -#include "instances.hh" -#include "wordfinder.hh" - -/// This class generates the article's body for the given lookup request -class ArticleMaker: public QObject -{ - Q_OBJECT // We make it QObject to use tr() conveniently - - std::vector< sptr< Dictionary::Class > > const & dictionaries; - std::vector< Instances::Group > const & groups; - - QString displayStyle, addonStyle; - - bool needExpandOptionalParts; - bool collapseBigArticles; - int articleLimitSize; - -public: - - /// On construction, a reference to all dictionaries and a reference all - /// groups' instances are to be passed. Those references are kept stored as - /// references, and as such, any changes to them would reflect on the results - /// of the inquiries, although those changes are perfectly legal. - ArticleMaker( std::vector< sptr< Dictionary::Class > > const & dictionaries, - std::vector< Instances::Group > const & groups, - QString const & displayStyle, - QString const & addonStyle); - - /// Sets the display style to use for any new requests. This affects the - /// choice of the stylesheet file. - void setDisplayStyle( QString const &, QString const & addonStyle ); - - /// Looks up the given word within the given group, and creates a full html - /// page text containing its definition. - /// The result is returned as Dictionary::DataRequest just like dictionaries - /// themselves do. The difference is that the result is a complete html page - /// with all definitions from all the relevant dictionaries. - /// Contexts is a map of context values to be passed to each dictionary, where - /// the keys are dictionary ids. - /// If mutedDicts is not empty, the search would be limited only to those - /// dictionaries in group which aren't listed there. - sptr< Dictionary::DataRequest > makeDefinitionFor( QString const & word, unsigned groupId, - QMap< QString, QString > const & contexts, - QSet< QString > const & mutedDicts = - QSet< QString >(), - QStringList const & dictIDs = QStringList() ) const; - - /// Makes up a text which states that no translation for the given word - /// was found. Sometimes it's better to call this directly when it's already - /// known that there's no translation. - sptr< Dictionary::DataRequest > makeNotFoundTextFor( QString const & word, QString const & group ) const; - - /// Creates an 'untitled' page. The result is guaranteed to be instant. - sptr< Dictionary::DataRequest > makeEmptyPage() const; - - /// Create page with one picture - sptr< Dictionary::DataRequest > makePicturePage( std::string const & url ) const; - - /// Set auto expanding optional parts of articles - void setExpandOptionalParts( bool expand ); - - /// Add base path to file path if it's relative and file not found - /// Return true if path successfully adjusted - static bool adjustFilePath( QString & fileName ); - - /// Set collapse articles parameters - void setCollapseParameters( bool autoCollapse, int articleSize ); - -private: - - /// Makes everything up to and including the opening body tag. - std::string makeHtmlHeader( QString const & word, QString const & icon, - bool expandOptionalParts ) const; - - /// Makes the html body for makeNotFoundTextFor() - static std::string makeNotFoundBody( QString const & word, QString const & group ); - - friend class ArticleRequest; // Allow it calling makeNotFoundBody() -}; - -/// The request specific to article maker. This should really be private, -/// but we need it to be handled by moc. -class ArticleRequest: public Dictionary::DataRequest -{ - Q_OBJECT - - QString word, group; - QMap< QString, QString > contexts; - std::vector< sptr< Dictionary::Class > > activeDicts; - - std::set< gd::wstring > alts; // Accumulated main forms - std::list< sptr< Dictionary::WordSearchRequest > > altSearches; - bool altsDone, bodyDone; - std::list< sptr< Dictionary::DataRequest > > bodyRequests; - bool foundAnyDefinitions; - bool closePrevSpan; // Indicates whether the last opened article span is to - // be closed after the article ends. - sptr< WordFinder > stemmedWordFinder; // Used when there're no results - - /// A sequence of words and spacings between them, including the initial - /// spacing before the first word and the final spacing after the last word. - typedef QList< QString > Words; - typedef QList< QString > Spacings; - - /// Splits the given string into words and spacings between them. - QPair< Words, Spacings > splitIntoWords( QString const & ); - - QPair< Words, Spacings > splittedWords; - int currentSplittedWordStart; - int currentSplittedWordEnd; - QString currentSplittedWordCompound; - QString lastGoodCompoundResult; - bool firstCompoundWasFound; - int articleSizeLimit; - bool needExpandOptionalParts; - -public: - - ArticleRequest( QString const & word, QString const & group, - QMap< QString, QString > const & contexts, - std::vector< sptr< Dictionary::Class > > const & activeDicts, - std::string const & header, - int sizeLimit, bool needExpandOptionalParts_ ); - - virtual void cancel(); -// { finish(); } // Add our own requests cancellation here - -private slots: - - void altSearchFinished(); - void bodyFinished(); - void stemmedSearchFinished(); - void individualWordFinished(); - -private: - - /// Appends the given string to 'data', with locking its mutex. - void appendToData( std::string const & ); - - /// Uses stemmedWordFinder to perform the next step of looking up word - /// combinations. - void compoundSearchNextStep( bool lastSearchSucceeded ); - - /// Creates a single word out of the [currentSplittedWordStart..End] range. - QString makeSplittedWordCompound(); - - /// Makes an html link to the given word. - std::string linkWord( QString const & ); - - /// Escapes the spacing between the words to include in html. - std::string escapeSpacing( QString const & ); - - /// Find end of corresponding
tag - int findEndOfCloseDiv( QString const &, int pos ); -}; - - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_netmgr.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_netmgr.cc deleted file mode 100644 index 9c48b88e35..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_netmgr.cc +++ /dev/null @@ -1,396 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#if defined( _MSC_VER ) && _MSC_VER < 1800 // VS2012 and older -#include -#else -#include -#endif - -#include - -#include "article_netmgr.hh" -#include "wstring_qt.hh" -#include "gddebug.hh" -#include "qt4x5.hh" - -using std::string; - -namespace -{ - /// Uses some heuristics to chop off the first domain name from the host name, - /// but only if it's not too base. Returns the resulting host name. - QString getHostBase( QUrl const & url ) - { - QString host = url.host(); - - QStringList domains = host.split( '.' ); - - int left = domains.size(); - - // Skip last <=3-letter domain name - if ( left && domains[ left - 1 ].size() <= 3 ) - --left; - - // Skip another <=3-letter domain name - if ( left && domains[ left - 1 ].size() <= 3 ) - --left; - - if ( left > 1 ) - { - // We've got something like www.foobar.co.uk -- we can chop off the first - // domain - - return host.mid( domains[ 0 ].size() + 1 ); - } - else - return host; - } -} - -QNetworkReply * ArticleNetworkAccessManager::createRequest( Operation op, - QNetworkRequest const & req, - QIODevice * outgoingData ) -{ - if ( op == GetOperation ) - { - if ( req.url().scheme() == "qrcx" ) - { - // We have to override the local load policy for the qrc scheme, hence - // we use qrcx and redirect it here back to qrc - QUrl newUrl( req.url() ); - - newUrl.setScheme( "qrc" ); - newUrl.setHost( "" ); - - QNetworkRequest newReq( req ); - newReq.setUrl( newUrl ); - - return QNetworkAccessManager::createRequest( op, newReq, outgoingData ); - } - - QString contentType; - - sptr< Dictionary::DataRequest > dr = getResource( req.url(), contentType ); - - if ( dr.get() ) - return new ArticleResourceReply( this, req, dr, contentType ); - } - - // Check the Referer. If the user has opted-in to block elements from external - // pages, we block them. - - if ( disallowContentFromOtherSites && req.hasRawHeader( "Referer" ) ) - { - QByteArray referer = req.rawHeader( "Referer" ); - - //DPRINTF( "Referer: %s\n", referer.data() ); - - QUrl refererUrl = QUrl::fromEncoded( referer ); - - //DPRINTF( "Considering %s vs %s\n", getHostBase( req.url() ).toUtf8().data(), - // getHostBase( refererUrl ).toUtf8().data() ); - - if ( !req.url().host().endsWith( refererUrl.host() ) && - getHostBase( req.url() ) != getHostBase( refererUrl ) && !req.url().scheme().startsWith("data") ) - { - gdWarning( "Blocking element \"%s\"\n", req.url().toEncoded().data() ); - - return new BlockedNetworkReply( this ); - } - } - - if( req.url().scheme() == "file" ) - { - // Check file presence and adjust path if necessary - QString fileName = req.url().toLocalFile(); - if( req.url().host().isEmpty() && articleMaker.adjustFilePath( fileName ) ) - { - QUrl newUrl( req.url() ); - newUrl.setPath( Qt4x5::Url::ensureLeadingSlash( QUrl::fromLocalFile( fileName ).path() ) ); - - QNetworkRequest newReq( req ); - newReq.setUrl( newUrl ); - - return QNetworkAccessManager::createRequest( op, newReq, outgoingData ); - } - } - - // spoof User-Agent - if ( hideGoldenDictHeader && req.url().scheme().startsWith("http", Qt::CaseInsensitive)) - { - QNetworkRequest newReq( req ); - newReq.setRawHeader("User-Agent", req.rawHeader("User-Agent").replace(qApp->applicationName(), "")); - return QNetworkAccessManager::createRequest( op, newReq, outgoingData ); - } - - return QNetworkAccessManager::createRequest( op, req, outgoingData ); -} - -sptr< Dictionary::DataRequest > ArticleNetworkAccessManager::getResource( - QUrl const & url, QString & contentType ) -{ - GD_DPRINTF( "getResource: %ls\n", url.toString().toStdWString().c_str() ); - GD_DPRINTF( "scheme: %ls\n", url.scheme().toStdWString().c_str() ); - GD_DPRINTF( "host: %ls\n", url.host().toStdWString().c_str() ); - - if ( url.scheme() == "gdlookup" ) - { - if( !url.host().isEmpty() && url.host() != "localhost" ) - { - // Strange request - ignore it - return new Dictionary::DataRequestInstant( false ); - } - - contentType = "text/html"; - - if ( Qt4x5::Url::queryItemValue( url, "blank" ) == "1" ) - return articleMaker.makeEmptyPage(); - - bool groupIsValid = false; - - QString word = Qt4x5::Url::queryItemValue( url, "word" ); - unsigned group = Qt4x5::Url::queryItemValue( url, "group" ).toUInt( &groupIsValid ); - - QString dictIDs = Qt4x5::Url::queryItemValue( url, "dictionaries" ); - if( !dictIDs.isEmpty() ) - { - // Individual dictionaries set from full-text search - QStringList dictIDList = dictIDs.split( "," ); - return articleMaker.makeDefinitionFor( word, 0, QMap< QString, QString >(), QSet< QString >(), dictIDList ); - } - - - - // See if we have some dictionaries muted - - QSet< QString > mutedDicts = - QSet< QString >::fromList( Qt4x5::Url::queryItemValue( url, "muted" ).split( ',' ) ); - - // Unpack contexts - - QMap< QString, QString > contexts; - - QString contextsEncoded = Qt4x5::Url::queryItemValue( url, "contexts" ); - - if ( contextsEncoded.size() ) - { - QByteArray ba = QByteArray::fromBase64( contextsEncoded.toLatin1() ); - - QBuffer buf( & ba ); - - buf.open( QBuffer::ReadOnly ); - - QDataStream stream( &buf ); - - stream >> contexts; - } - - if ( groupIsValid && word.size() ) // Require group and word to be passed - return articleMaker.makeDefinitionFor( word, group, contexts, mutedDicts ); - } - - if ( ( url.scheme() == "bres" || url.scheme() == "gdau" || url.scheme() == "gdvideo" || url.scheme() == "gico" ) && - url.path().size() ) - { - //DPRINTF( "Get %s\n", req.url().host().toLocal8Bit().data() ); - //DPRINTF( "Get %s\n", req.url().path().toLocal8Bit().data() ); - - string id = url.host().toStdString(); - - bool search = ( id == "search" ); - - if ( !search ) - { - for( unsigned x = 0; x < dictionaries.size(); ++x ) - if ( dictionaries[ x ]->getId() == id ) - { - if( url.scheme() == "gico" ) - { - QByteArray bytes; - QBuffer buffer(&bytes); - buffer.open(QIODevice::WriteOnly); - dictionaries[ x ]->getIcon().pixmap( 16 ).save(&buffer, "PNG"); - buffer.close(); - sptr< Dictionary::DataRequestInstant > ico = new Dictionary::DataRequestInstant( true ); - ico->getData().resize( bytes.size() ); - memcpy( &( ico->getData().front() ), bytes.data(), bytes.size() ); - return ico; - } - try - { - return dictionaries[ x ]->getResource( Qt4x5::Url::path( url ).mid( 1 ).toUtf8().data() ); - } - catch( std::exception & e ) - { - gdWarning( "getResource request error (%s) in \"%s\"\n", e.what(), - dictionaries[ x ]->getName().c_str() ); - return sptr< Dictionary::DataRequest >(); - } - } - } - else - { - // We don't do search requests for now -#if 0 - for( unsigned x = 0; x < dictionaries.size(); ++x ) - { - if ( search || dictionaries[ x ]->getId() == id ) - { - try - { - dictionaries[ x ]->getResource( url.path().mid( 1 ).toUtf8().data(), - data ); - - return true; - } - catch( Dictionary::exNoSuchResource & ) - { - if ( !search ) - break; - } - } - } -#endif - } - } - - if ( url.scheme() == "gdpicture" ) - { - contentType = "text/html"; - QUrl imgUrl ( url ); - imgUrl.setScheme( "bres" ); - return articleMaker.makePicturePage( imgUrl.toEncoded().data() ); - } - - return sptr< Dictionary::DataRequest >(); -} - -ArticleResourceReply::ArticleResourceReply( QObject * parent, - QNetworkRequest const & netReq, - sptr< Dictionary::DataRequest > const & req_, - QString const & contentType ): - QNetworkReply( parent ), req( req_ ), alreadyRead( 0 ) -{ - setRequest( netReq ); - - setOpenMode( ReadOnly ); - - if ( contentType.size() ) - setHeader( QNetworkRequest::ContentTypeHeader, contentType ); - - connect( req.get(), SIGNAL( updated() ), - this, SLOT( reqUpdated() ) ); - - connect( req.get(), SIGNAL( finished() ), - this, SLOT( reqFinished() ) ); - - if ( req->isFinished() || req->dataSize() > 0 ) - { - connect( this, SIGNAL( readyReadSignal() ), - this, SLOT( readyReadSlot() ), Qt::QueuedConnection ); - connect( this, SIGNAL( finishedSignal() ), - this, SLOT( finishedSlot() ), Qt::QueuedConnection ); - - emit readyReadSignal(); - - if ( req->isFinished() ) - { - emit finishedSignal(); - GD_DPRINTF( "In-place finish.\n" ); - } - } -} - -ArticleResourceReply::~ArticleResourceReply() -{ - req->cancel(); -} - -void ArticleResourceReply::reqUpdated() -{ - emit readyRead(); -} - -void ArticleResourceReply::reqFinished() -{ - emit readyRead(); - finishedSlot(); -} - -qint64 ArticleResourceReply::bytesAvailable() const -{ - qint64 avail = req->dataSize(); - - if ( avail < 0 ) - return 0; - - return avail - alreadyRead + QNetworkReply::bytesAvailable(); -} - -qint64 ArticleResourceReply::readData( char * out, qint64 maxSize ) -{ - // From the doc: "This function might be called with a maxSize of 0, - // which can be used to perform post-reading operations". - if ( maxSize == 0 ) - return 0; - - GD_DPRINTF( "====reading %d bytes\n", (int)maxSize ); - - bool finished = req->isFinished(); - - qint64 avail = req->dataSize(); - - if ( avail < 0 ) - return finished ? -1 : 0; - - qint64 left = avail - alreadyRead; - - qint64 toRead = maxSize < left ? maxSize : left; - - try - { - req->getDataSlice( alreadyRead, toRead, out ); - } - catch( std::exception & e ) - { - qWarning( "getDataSlice error: %s\n", e.what() ); - } - - alreadyRead += toRead; - - if ( !toRead && finished ) - return -1; - else - return toRead; -} - -void ArticleResourceReply::readyReadSlot() -{ - readyRead(); -} - -void ArticleResourceReply::finishedSlot() -{ - if ( req->dataSize() < 0 ) - error( ContentNotFoundError ); - - finished(); -} - -BlockedNetworkReply::BlockedNetworkReply( QObject * parent ): QNetworkReply( parent ) -{ - setError( QNetworkReply::ContentOperationNotPermittedError, "Content Blocked" ); - - connect( this, SIGNAL( finishedSignal() ), this, SLOT( finishedSlot() ), - Qt::QueuedConnection ); - - emit finishedSignal(); // This way we call readyRead()/finished() sometime later -} - - -void BlockedNetworkReply::finishedSlot() -{ - emit readyRead(); - emit finished(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_netmgr.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_netmgr.hh deleted file mode 100644 index 1611aff772..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/article_netmgr.hh +++ /dev/null @@ -1,121 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ARTICLE_NETMGR_HH_INCLUDED__ -#define __ARTICLE_NETMGR_HH_INCLUDED__ - -#include -#include "dictionary.hh" -#include "article_maker.hh" - -using std::vector; - -/// A custom QNetworkAccessManager version which fetches images from the -/// dictionaries when requested. - -class ArticleNetworkAccessManager: public QNetworkAccessManager -{ - vector< sptr< Dictionary::Class > > const & dictionaries; - ArticleMaker const & articleMaker; - bool const & disallowContentFromOtherSites; - bool const & hideGoldenDictHeader; - -public: - - ArticleNetworkAccessManager( QObject * parent, - vector< sptr< Dictionary::Class > > const & - dictionaries_, - ArticleMaker const & articleMaker_, - bool const & disallowContentFromOtherSites_, - bool const & hideGoldenDictHeader_ ): - QNetworkAccessManager( parent ), dictionaries( dictionaries_ ), - articleMaker( articleMaker_ ), - disallowContentFromOtherSites( disallowContentFromOtherSites_ ), - hideGoldenDictHeader( hideGoldenDictHeader_ ) - {} - - /// Tries handling any kind of internal resources referenced by dictionaries. - /// If it succeeds, the result is a dictionary request object. Otherwise, an - /// empty pointer is returned. - /// The function can optionally set the Content-Type header correspondingly. - sptr< Dictionary::DataRequest > getResource( QUrl const & url, - QString & contentType ); - -protected: - - virtual QNetworkReply * createRequest( Operation op, - QNetworkRequest const & req, - QIODevice * outgoingData ); -}; - -class ArticleResourceReply: public QNetworkReply -{ - Q_OBJECT - - sptr< Dictionary::DataRequest > req; - qint64 alreadyRead; - -public: - - ArticleResourceReply( QObject * parent, - QNetworkRequest const &, - sptr< Dictionary::DataRequest > const &, - QString const & contentType ); - - ~ArticleResourceReply(); - -protected: - - virtual qint64 bytesAvailable() const; - - virtual void abort() - {} - virtual qint64 readData( char * data, qint64 maxSize ); - - // We use the hackery below to work around the fact that we need to emit - // ready/finish signals after we've been constructed. -signals: - - void readyReadSignal(); - void finishedSignal(); - -private slots: - - void reqUpdated(); - void reqFinished(); - - void readyReadSlot(); - void finishedSlot(); -}; - -class BlockedNetworkReply: public QNetworkReply -{ - Q_OBJECT - -public: - - BlockedNetworkReply( QObject * parent ); - - virtual qint64 readData( char *, qint64 ) - { - return -1; - } - - virtual void abort() - {} - -protected: - - // We use the hackery below to work around the fact that we need to emit - // ready/finish signals after we've been constructed. - -signals: - - void finishedSignal(); - -private slots: - - void finishedSlot(); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleinspector.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleinspector.cc deleted file mode 100644 index 7ab091a73d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleinspector.cc +++ /dev/null @@ -1,55 +0,0 @@ -#include "articleinspector.hh" - -#if QT_VERSION >= 0x040600 - -#include - -using std::list; - -list< ArticleInspector * > ArticleInspector::openedInspectors; - -ArticleInspector::ArticleInspector( Config::Class * cfg, QWidget* parent ) : - QWebInspector( parent ), - cfg( cfg ) -{ - if ( cfg == NULL ) - throw exInit(); -} - -ArticleInspector::~ArticleInspector() -{ -} - -void ArticleInspector::beforeClosed() -{ - list< ArticleInspector * >::iterator itemIter = std::find( openedInspectors.begin(), - openedInspectors.end(), this ); - if ( itemIter != openedInspectors.end() ) - { - openedInspectors.erase( itemIter ); - // Save geometry of the recent closed inspector window - QByteArray geometry = saveGeometry(); - cfg->inspectorGeometry = geometry; - } -} - -void ArticleInspector::showEvent( QShowEvent * event ) -{ - if ( openedInspectors.empty() ) - { - // Restore geometry from config, if no inspector opened - restoreGeometry( cfg->inspectorGeometry ); - } - else - { - // Load geometry from first inspector opened - ArticleInspector * p = openedInspectors.front(); - setGeometry( p->geometry() ); - } - - openedInspectors.push_back( this ); - - QWebInspector::showEvent( event ); -} - -#endif // QT_VERSION diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleinspector.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleinspector.hh deleted file mode 100644 index 97f0b593c7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleinspector.hh +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef ARTICLEINSPECTOR_HH -#define ARTICLEINSPECTOR_HH - -#include - -#if QT_VERSION >= 0x040600 - -#include -#include -#include "config.hh" -#include "ex.hh" - -class ArticleInspector : public QWebInspector -{ -Q_OBJECT - -public: - DEF_EX( exInit, "Article inspector failed to init", std::exception ) - - explicit ArticleInspector( Config::Class * cfg, QWidget* parent = 0 ); - ~ArticleInspector(); - -public slots: - void beforeClosed(); - -protected: - void showEvent( QShowEvent *event ); - -private: - Config::Class * cfg; - - static std::list< ArticleInspector * > openedInspectors; -}; - -#endif // QT_VERSION - -#endif // ARTICLEINSPECTOR_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.cc deleted file mode 100644 index a4df09bcf8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.cc +++ /dev/null @@ -1,2722 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "articleview.hh" -#include "externalviewer.hh" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "folding.hh" -#include "wstring_qt.hh" -#include "webmultimediadownload.hh" -#include "programs.hh" -#include "gddebug.hh" -#include "ffmpegaudio.hh" -#include -#include -#include "gestures.hh" -#include "fulltextsearch.hh" - -#if QT_VERSION >= 0x040600 -#include -#include -#endif - -#include "qt4x5.hh" - -#include - -#ifdef Q_OS_WIN32 -#include - -#include -#endif - -#include - -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) -#include "speechclient.hh" -#endif - -using std::map; -using std::list; - -/// AccentMarkHandler class -/// -/// Remove accent marks from text -/// and mirror position in normalized text to original text - -class AccentMarkHandler -{ - QString normalizedString; - QVector< int > accentMarkPos; -public: - static QChar accentMark() - { return QChar( 0x301 ); } - - /// Create text without accent marks - /// and store mark positions - void setText( QString const & baseString ) - { - accentMarkPos.clear(); - normalizedString.clear(); - int pos = 0; - QChar mark = accentMark(); - - for( int x = 0; x < baseString.length(); x++ ) - { - if( baseString.at( x ) == mark ) - { - accentMarkPos.append( pos ); - continue; - } - normalizedString.append( baseString.at( x ) ); - pos++; - } - } - - /// Return text without accent marks - QString const & normalizedText() const - { return normalizedString; } - - /// Convert position into position in original text - int mirrorPosition( int const & pos ) const - { - int newPos = pos; - for( int x = 0; x < accentMarkPos.size(); x++ ) - { - if( accentMarkPos.at( x ) < pos ) - newPos++; - else - break; - } - return newPos; - } -}; - -/// End of DslAccentMark class - -static QVariant evaluateJavaScriptVariableSafe( QWebFrame * frame, const QString & variable ) -{ - return frame->evaluateJavaScript( - QString( "( typeof( %1 ) !== 'undefined' && %1 !== undefined ) ? %1 : null;" ) - .arg( variable ) ); -} - -ArticleView::ArticleView( QWidget * parent, ArticleNetworkAccessManager & nm, - std::vector< sptr< Dictionary::Class > > const & allDictionaries_, - Instances::Groups const & groups_, bool popupView_, - Config::Class const & cfg_, - QAction & openSearchAction_, - QAction * dictionaryBarToggled_, - GroupComboBox const * groupComboBox_ ): - QFrame( parent ), - articleNetMgr( nm ), - allDictionaries( allDictionaries_ ), - groups( groups_ ), - popupView( popupView_ ), - cfg( cfg_ ), - pasteAction( this ), - articleUpAction( this ), - articleDownAction( this ), - goBackAction( this ), - goForwardAction( this ), - selectCurrentArticleAction( this ), - copyAsTextAction( this ), - inspectAction( this ), - openSearchAction( openSearchAction_ ), - searchIsOpened( false ), - dictionaryBarToggled( dictionaryBarToggled_ ), - groupComboBox( groupComboBox_ ), - ftsSearchIsOpened( false ), - ftsSearchMatchCase( false ), - ftsPosition( 0 ) -{ - ui.setupUi( this ); - - ui.definition->setUp( const_cast< Config::Class * >( &cfg ) ); - - goBackAction.setShortcut( QKeySequence( "Alt+Left" ) ); - ui.definition->addAction( &goBackAction ); - connect( &goBackAction, SIGNAL( triggered() ), - this, SLOT( back() ) ); - - goForwardAction.setShortcut( QKeySequence( "Alt+Right" ) ); - ui.definition->addAction( &goForwardAction ); - connect( &goForwardAction, SIGNAL( triggered() ), - this, SLOT( forward() ) ); - - ui.definition->pageAction( QWebPage::Copy )->setShortcut( QKeySequence::Copy ); - ui.definition->addAction( ui.definition->pageAction( QWebPage::Copy ) ); - - QAction * selectAll = ui.definition->pageAction( QWebPage::SelectAll ); - selectAll->setShortcut( QKeySequence::SelectAll ); - selectAll->setShortcutContext( Qt::WidgetWithChildrenShortcut ); - ui.definition->addAction( selectAll ); - - ui.definition->setContextMenuPolicy( Qt::CustomContextMenu ); - - ui.definition->page()->setLinkDelegationPolicy( QWebPage::DelegateAllLinks ); - - ui.definition->page()->setNetworkAccessManager( &articleNetMgr ); - - connect( ui.definition, SIGNAL( loadFinished( bool ) ), - this, SLOT( loadFinished( bool ) ) ); - - attachToJavaScript(); - connect( ui.definition->page()->mainFrame(), SIGNAL( javaScriptWindowObjectCleared() ), - this, SLOT( attachToJavaScript() ) ); - - connect( ui.definition, SIGNAL( titleChanged( QString const & ) ), - this, SLOT( handleTitleChanged( QString const & ) ) ); - - connect( ui.definition, SIGNAL( urlChanged( QUrl const & ) ), - this, SLOT( handleUrlChanged( QUrl const & ) ) ); - - connect( ui.definition, SIGNAL( customContextMenuRequested( QPoint const & ) ), - this, SLOT( contextMenuRequested( QPoint const & ) ) ); - - connect( ui.definition, SIGNAL( linkClicked( QUrl const & ) ), - this, SLOT( linkClicked( QUrl const & ) ) ); - - connect( ui.definition->page(), SIGNAL( linkHovered ( const QString &, const QString &, const QString & ) ), - this, SLOT( linkHovered ( const QString &, const QString &, const QString & ) ) ); - - connect( ui.definition, SIGNAL(doubleClicked()),this,SLOT(doubleClicked()) ); - - pasteAction.setShortcut( QKeySequence::Paste ); - ui.definition->addAction( &pasteAction ); - connect( &pasteAction, SIGNAL( triggered() ), this, SLOT( pasteTriggered() ) ); - - articleUpAction.setShortcut( QKeySequence( "Alt+Up" ) ); - ui.definition->addAction( &articleUpAction ); - connect( &articleUpAction, SIGNAL( triggered() ), this, SLOT( moveOneArticleUp() ) ); - - articleDownAction.setShortcut( QKeySequence( "Alt+Down" ) ); - ui.definition->addAction( &articleDownAction ); - connect( &articleDownAction, SIGNAL( triggered() ), this, SLOT( moveOneArticleDown() ) ); - - ui.definition->addAction( &openSearchAction ); - connect( &openSearchAction, SIGNAL( triggered() ), this, SLOT( openSearch() ) ); - - selectCurrentArticleAction.setShortcut( QKeySequence( "Ctrl+Shift+A" )); - selectCurrentArticleAction.setText( tr( "Select Current Article" ) ); - ui.definition->addAction( &selectCurrentArticleAction ); - connect( &selectCurrentArticleAction, SIGNAL( triggered() ), - this, SLOT( selectCurrentArticle() ) ); - - copyAsTextAction.setShortcut( QKeySequence( "Ctrl+Shift+C" ) ); - copyAsTextAction.setText( tr( "Copy as text" ) ); - ui.definition->addAction( ©AsTextAction ); - connect( ©AsTextAction, SIGNAL( triggered() ), - this, SLOT( copyAsText() ) ); - - inspectAction.setShortcut( QKeySequence( Qt::Key_F12 ) ); - inspectAction.setText( tr( "Inspect" ) ); - ui.definition->addAction( &inspectAction ); - connect( &inspectAction, SIGNAL( triggered() ), this, SLOT( inspect() ) ); - - ui.definition->installEventFilter( this ); - ui.searchFrame->installEventFilter( this ); - ui.ftsSearchFrame->installEventFilter( this ); - - // Load the default blank page instantly, so there would be no flicker. - - QString contentType; - QUrl blankPage( "gdlookup://localhost?blank=1" ); - - sptr< Dictionary::DataRequest > r = articleNetMgr.getResource( blankPage, - contentType ); - - ui.definition->setHtml( QString::fromUtf8( &( r->getFullData().front() ), - r->getFullData().size() ), - blankPage ); - - expandOptionalParts = cfg.preferences.alwaysExpandOptionalParts; - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - ui.definition->grabGesture( Gestures::GDPinchGestureType ); - ui.definition->grabGesture( Gestures::GDSwipeGestureType ); -#endif - - // Variable name for store current selection range - rangeVarName = QString( "sr_%1" ).arg( QString::number( (quint64)this, 16 ) ); -} - -// explicitly report the minimum size, to avoid -// sidebar widgets' improper resize during restore -QSize ArticleView::minimumSizeHint() const -{ - return ui.searchFrame->minimumSizeHint(); -} - -void ArticleView::setGroupComboBox( GroupComboBox const * g ) -{ - groupComboBox = g; -} - -ArticleView::~ArticleView() -{ - cleanupTemp(); - -#ifndef DISABLE_INTERNAL_PLAYER - if ( cfg.preferences.useInternalPlayer ) - Ffmpeg::AudioPlayer::instance().stop(); -#endif - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - ui.definition->ungrabGesture( Gestures::GDPinchGestureType ); - ui.definition->ungrabGesture( Gestures::GDSwipeGestureType ); -#endif -} - -void ArticleView::showDefinition( QString const & word, unsigned group, - QString const & scrollTo, - Contexts const & contexts_ ) -{ - -#ifndef DISABLE_INTERNAL_PLAYER - // first, let's stop the player - if ( cfg.preferences.useInternalPlayer ) - Ffmpeg::AudioPlayer::instance().stop(); -#endif - - QUrl req; - Contexts contexts( contexts_ ); - - req.setScheme( "gdlookup" ); - req.setHost( "localhost" ); - Qt4x5::Url::addQueryItem( req, "word", word ); - Qt4x5::Url::addQueryItem( req, "group", QString::number( group ) ); - - if ( scrollTo.size() ) - Qt4x5::Url::addQueryItem( req, "scrollto", scrollTo ); - - Contexts::Iterator pos = contexts.find( "gdanchor" ); - if( pos != contexts.end() ) - { - Qt4x5::Url::addQueryItem( req, "gdanchor", contexts[ "gdanchor" ] ); - contexts.erase( pos ); - } - - if ( contexts.size() ) - { - QBuffer buf; - - buf.open( QIODevice::WriteOnly ); - - QDataStream stream( &buf ); - - stream << contexts; - - buf.close(); - - Qt4x5::Url::addQueryItem( req, "contexts", QString::fromLatin1( buf.buffer().toBase64() ) ); - } - - QString mutedDicts = getMutedForGroup( group ); - - if ( mutedDicts.size() ) - Qt4x5::Url::addQueryItem( req, "muted", mutedDicts ); - - // Update both histories (pages history and headwords history) - saveHistoryUserData(); - emit sendWordToHistory( word ); - - // Any search opened is probably irrelevant now - closeSearch(); - - // Clear highlight all button selection - ui.highlightAllButton->setChecked(false); - - emit setExpandMode( expandOptionalParts ); - - ui.definition->load( req ); - - //QApplication::setOverrideCursor( Qt::WaitCursor ); - ui.definition->setCursor( Qt::WaitCursor ); -} - -void ArticleView::showDefinition( QString const & word, QStringList const & dictIDs, - QRegExp const & searchRegExp, unsigned group ) -{ - if( dictIDs.isEmpty() ) - return; - -#ifndef DISABLE_INTERNAL_PLAYER - // first, let's stop the player - if ( cfg.preferences.useInternalPlayer ) - Ffmpeg::AudioPlayer::instance().stop(); -#endif - - QUrl req; - - req.setScheme( "gdlookup" ); - req.setHost( "localhost" ); - Qt4x5::Url::addQueryItem( req, "word", word ); - Qt4x5::Url::addQueryItem( req, "dictionaries", dictIDs.join( ",") ); - Qt4x5::Url::addQueryItem( req, "regexp", searchRegExp.pattern() ); - if( searchRegExp.caseSensitivity() == Qt::CaseSensitive ) - Qt4x5::Url::addQueryItem( req, "matchcase", "1" ); - if( searchRegExp.patternSyntax() == QRegExp::WildcardUnix ) - Qt4x5::Url::addQueryItem( req, "wildcards", "1" ); - Qt4x5::Url::addQueryItem( req, "group", QString::number( group ) ); - - // Update both histories (pages history and headwords history) - saveHistoryUserData(); - emit sendWordToHistory( word ); - - // Any search opened is probably irrelevant now - closeSearch(); - - // Clear highlight all button selection - ui.highlightAllButton->setChecked(false); - - emit setExpandMode( expandOptionalParts ); - - ui.definition->load( req ); - - //QApplication::setOverrideCursor( Qt::WaitCursor ); - ui.definition->setCursor( Qt::WaitCursor ); -} - -void ArticleView::showAnticipation() -{ - ui.definition->setHtml( "" ); - ui.definition->setCursor( Qt::WaitCursor ); - //QApplication::setOverrideCursor( Qt::WaitCursor ); -} - -void ArticleView::loadFinished( bool ) -{ - QUrl url = ui.definition->url(); - - // See if we have any iframes in need of expansion - - QList< QWebFrame * > frames = ui.definition->page()->mainFrame()->childFrames(); - - bool wereFrames = false; - - for( QList< QWebFrame * >::iterator i = frames.begin(); i != frames.end(); ++i ) - { - if ( (*i)->frameName().startsWith( "gdexpandframe-" ) ) - { - //DPRINTF( "Name: %s\n", (*i)->frameName().toUtf8().data() ); - //DPRINTF( "Size: %d\n", (*i)->contentsSize().height() ); - //DPRINTF( ">>>>>>>>Height = %s\n", (*i)->evaluateJavaScript( "document.body.offsetHeight;" ).toString().toUtf8().data() ); - - // Set the height - ui.definition->page()->mainFrame()->evaluateJavaScript( QString( "document.getElementById('%1').height = %2;" ). - arg( (*i)->frameName() ). - arg( (*i)->contentsSize().height() ) ); - - // Show it - ui.definition->page()->mainFrame()->evaluateJavaScript( QString( "document.getElementById('%1').style.display = 'block';" ). - arg( (*i)->frameName() ) ); - - (*i)->evaluateJavaScript( "var gdLastUrlText;" ); - (*i)->evaluateJavaScript( "document.addEventListener( 'click', function() { gdLastUrlText = window.event.srcElement.textContent; }, true );" ); - (*i)->evaluateJavaScript( "document.addEventListener( 'contextmenu', function() { gdLastUrlText = window.event.srcElement.textContent; }, true );" ); - - wereFrames = true; - } - } - - if ( wereFrames ) - { - // There's some sort of glitch -- sometimes you need to move a mouse - - QMouseEvent ev( QEvent::MouseMove, QPoint(), Qt::MouseButton(), 0, 0 ); - - qApp->sendEvent( ui.definition, &ev ); - } - - QVariant userDataVariant = ui.definition->history()->currentItem().userData(); - - if ( userDataVariant.type() == QVariant::Map ) - { - QMap< QString, QVariant > userData = userDataVariant.toMap(); - - QString currentArticle = userData.value( "currentArticle" ).toString(); - - if ( currentArticle.size() ) - { - // There's an active article saved, so set it to be active. - setCurrentArticle( currentArticle ); - } - - double sx = 0, sy = 0; - - if ( userData.value( "sx" ).type() == QVariant::Double ) - sx = userData.value( "sx" ).toDouble(); - - if ( userData.value( "sy" ).type() == QVariant::Double ) - sy = userData.value( "sy" ).toDouble(); - - if ( sx != 0 || sy != 0 ) - { - // Restore scroll position - ui.definition->page()->mainFrame()->evaluateJavaScript( - QString( "window.scroll( %1, %2 );" ).arg( sx ).arg( sy ) ); - } - } - else - if ( Qt4x5::Url::queryItemValue( url, "scrollto" ).startsWith( "gdfrom-" ) ) - { - // There is no active article saved in history, but we have it as a parameter. - // setCurrentArticle will save it and scroll there. - setCurrentArticle( Qt4x5::Url::queryItemValue( url, "scrollto" ), true ); - } - - - ui.definition->unsetCursor(); - //QApplication::restoreOverrideCursor(); - - // Expand collapsed article if only one loaded - ui.definition->page()->mainFrame()->evaluateJavaScript( QString( "gdCheckArticlesNumber();" ) ); - - // Jump to current article after page reloading - if( !articleToJump.isEmpty() ) - { - setCurrentArticle( articleToJump, true ); - articleToJump.clear(); - } - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - if( !Qt4x5::Url::queryItemValue( url, "gdanchor" ).isEmpty() ) - { - QString anchor = QUrl::fromPercentEncoding( Qt4x5::Url::encodedQueryItemValue( url, "gdanchor" ) ); - - // Find GD anchor on page - - int n = anchor.indexOf( '_' ); - if( n == 32 ) - // MDict pattern: (dictionary ID (32 chars))_(articleID(quint64, hex))_(original anchor) - n = anchor.indexOf( '_', n + 1 ); - else - n = 0; - - if( n > 0 ) - { - QString originalAnchor = anchor.mid( n + 1 ); - - QRegExp rx; - rx.setMinimal( true ); - rx.setPattern( anchor.left( 33 ) + "[0-9a-f]*_" + originalAnchor ); - - QWebElementCollection coll = ui.definition->page()->mainFrame()->findAllElements( "a[name]" ); - - for( QWebElementCollection::iterator it = coll.begin(); it != coll.end(); ++it ) - { - QString name = (*it).attribute( "name" ); - if( rx.indexIn( name ) >= 0 ) - { - // Anchor found, jump to it - - url.clear(); - url.setFragment( rx.cap( 0 ) ); - ui.definition->page()->mainFrame()->evaluateJavaScript( - QString( "window.location.hash = \"%1\"" ).arg( QString::fromUtf8( url.toEncoded() ) ) ); - - break; - } - } - } - else - { - url.clear(); - url.setFragment( anchor ); - ui.definition->page()->mainFrame()->evaluateJavaScript( - QString( "window.location.hash = \"%1\"" ).arg( QString::fromUtf8( url.toEncoded() ) ) ); - } - } -#endif - - emit pageLoaded( this ); - - if( Qt4x5::Url::hasQueryItem( ui.definition->url(), "regexp" ) ) - highlightFTSResults(); -} - -void ArticleView::handleTitleChanged( QString const & title ) -{ - if( !title.isEmpty() ) // Qt 5.x WebKit raise signal titleChanges(QString()) while navigation within page - emit titleChanged( this, title ); -} - -void ArticleView::handleUrlChanged( QUrl const & url ) -{ - QIcon icon; - - unsigned group = getGroup( url ); - - if ( group ) - { - // Find the group's instance corresponding to the fragment value - for( unsigned x = 0; x < groups.size(); ++x ) - if ( groups[ x ].id == group ) - { - // Found it - - icon = groups[ x ].makeIcon(); - break; - } - } - - emit iconChanged( this, icon ); -} - -unsigned ArticleView::getGroup( QUrl const & url ) -{ - if ( url.scheme() == "gdlookup" && Qt4x5::Url::hasQueryItem( url, "group" ) ) - return Qt4x5::Url::queryItemValue( url, "group" ).toUInt(); - - return 0; -} - -QStringList ArticleView::getArticlesList() -{ - return evaluateJavaScriptVariableSafe( ui.definition->page()->mainFrame(), "gdArticleContents" ) - .toString().trimmed().split( ' ', QString::SkipEmptyParts ); -} - -QString ArticleView::getActiveArticleId() -{ - QString currentArticle = getCurrentArticle(); - if ( !currentArticle.startsWith( "gdfrom-" ) ) - return QString(); // Incorrect id - - return currentArticle.mid( 7 ); -} - -QString ArticleView::getCurrentArticle() -{ - QVariant v = evaluateJavaScriptVariableSafe( ui.definition->page()->mainFrame(), "gdCurrentArticle" ); - - if ( v.type() == QVariant::String ) - return v.toString(); - else - return QString(); -} - -void ArticleView::jumpToDictionary( QString const & id, bool force ) -{ - QString targetArticle = "gdfrom-" + id; - - // jump only if neceessary, or when forced - if ( force || targetArticle != getCurrentArticle() ) - { - setCurrentArticle( targetArticle, true ); - } -} - -void ArticleView::setCurrentArticle( QString const & id, bool moveToIt ) -{ - if ( !id.startsWith( "gdfrom-" ) ) - return; // Incorrect id - - if ( !ui.definition->isVisible() ) - return; // No action on background page, scrollIntoView there don't work - - if ( getArticlesList().contains( id.mid( 7 ) ) ) - { - if ( moveToIt ) - ui.definition->page()->mainFrame()->evaluateJavaScript( QString( "document.getElementById('%1').scrollIntoView(true);" ).arg( id ) ); - - QMap< QString, QVariant > userData = ui.definition->history()-> - currentItem().userData().toMap(); - userData[ "currentArticle" ] = id; - ui.definition->history()->currentItem().setUserData( userData ); - - ui.definition->page()->mainFrame()->evaluateJavaScript( - QString( "gdMakeArticleActive( '%1' );" ).arg( id.mid( 7 ) ) ); - } -} - -void ArticleView::selectCurrentArticle() -{ - ui.definition->page()->mainFrame()->evaluateJavaScript( - QString( "gdSelectArticle( '%1' );" ).arg( getActiveArticleId() ) ); -} - -bool ArticleView::isFramedArticle( QString const & ca ) -{ - if ( ca.isEmpty() ) - return false; - - return ui.definition->page()->mainFrame()-> - evaluateJavaScript( QString( "!!document.getElementById('gdexpandframe-%1');" ).arg( ca.mid( 7 ) ) ).toBool(); -} - -bool ArticleView::isExternalLink( QUrl const & url ) -{ - return url.scheme() == "http" || url.scheme() == "https" || - url.scheme() == "ftp" || url.scheme() == "mailto" || - url.scheme() == "file"; -} - -void ArticleView::tryMangleWebsiteClickedUrl( QUrl & url, Contexts & contexts ) -{ - // Don't try mangling audio urls, even if they are from the framed websites - - if( ( url.scheme() == "http" || url.scheme() == "https" ) - && ! Dictionary::WebMultimediaDownload::isAudioUrl( url ) ) - { - // Maybe a link inside a website was clicked? - - QString ca = getCurrentArticle(); - - if ( isFramedArticle( ca ) ) - { - QVariant result = evaluateJavaScriptVariableSafe( ui.definition->page()->currentFrame(), "gdLastUrlText" ); - - if ( result.type() == QVariant::String ) - { - // Looks this way - - contexts[ ca.mid( 7 ) ] = QString::fromLatin1( url.toEncoded() ); - - QUrl target; - - QString queryWord = result.toString(); - - // Empty requests are treated as no request, so we work this around by - // adding a space. - if ( queryWord.isEmpty() ) - queryWord = " "; - - target.setScheme( "gdlookup" ); - target.setHost( "localhost" ); - target.setPath( "/" + queryWord ); - - url = target; - } - } - } -} - -void ArticleView::updateCurrentArticleFromCurrentFrame( QWebFrame * frame ) -{ - if ( !frame ) - frame = ui.definition->page()->currentFrame(); - - for( ; frame; frame = frame->parentFrame() ) - { - QString frameName = frame->frameName(); - - if ( frameName.startsWith( "gdexpandframe-" ) ) - { - QString newCurrent = "gdfrom-" + frameName.mid( 14 ); - - if ( getCurrentArticle() != newCurrent ) - setCurrentArticle( newCurrent, false ); - - break; - } - } -} - -void ArticleView::saveHistoryUserData() -{ - QMap< QString, QVariant > userData = ui.definition->history()-> - currentItem().userData().toMap(); - - // Save current article, which can be empty - - userData[ "currentArticle" ] = getCurrentArticle(); - - // We also save window position. We restore it when the page is fully loaded, - // when any hidden frames are expanded. - - userData[ "sx" ] = ui.definition->page()->mainFrame()->evaluateJavaScript( "window.scrollX;" ).toDouble(); - userData[ "sy" ] = ui.definition->page()->mainFrame()->evaluateJavaScript( "window.scrollY;" ).toDouble(); - - ui.definition->history()->currentItem().setUserData( userData ); -} - -void ArticleView::cleanupTemp() -{ - if ( desktopOpenedTempFile.size() ) - { - QFile( desktopOpenedTempFile ).remove(); - desktopOpenedTempFile.clear(); - } -} - -bool ArticleView::handleF3( QObject * /*obj*/, QEvent * ev ) -{ - if ( ev->type() == QEvent::ShortcutOverride - || ev->type() == QEvent::KeyPress ) - { - QKeyEvent * ke = static_cast( ev ); - if ( ke->key() == Qt::Key_F3 && isSearchOpened() ) { - if ( !ke->modifiers() ) - { - if( ev->type() == QEvent::KeyPress ) - on_searchNext_clicked(); - - ev->accept(); - return true; - } - - if ( ke->modifiers() == Qt::ShiftModifier ) - { - if( ev->type() == QEvent::KeyPress ) - on_searchPrevious_clicked(); - - ev->accept(); - return true; - } - } - if ( ke->key() == Qt::Key_F3 && ftsSearchIsOpened ) - { - if ( !ke->modifiers() ) - { - if( ev->type() == QEvent::KeyPress ) - on_ftsSearchNext_clicked(); - - ev->accept(); - return true; - } - - if ( ke->modifiers() == Qt::ShiftModifier ) - { - if( ev->type() == QEvent::KeyPress ) - on_ftsSearchPrevious_clicked(); - - ev->accept(); - return true; - } - } - } - - return false; -} - -bool ArticleView::eventFilter( QObject * obj, QEvent * ev ) -{ -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - if( ev->type() == QEvent::Gesture ) - { - Gestures::GestureResult result; - QPoint pt; - - bool handled = Gestures::handleGestureEvent( obj, ev, result, pt ); - - if( handled ) - { - if( result == Gestures::ZOOM_IN ) - zoomIn(); - else - if( result == Gestures::ZOOM_OUT ) - zoomOut(); - else - if( result == Gestures::SWIPE_LEFT ) - back(); - else - if( result == Gestures::SWIPE_RIGHT ) - forward(); - else - if( result == Gestures::SWIPE_UP || result == Gestures::SWIPE_DOWN ) - { - int delta = result == Gestures::SWIPE_UP ? -120 : 120; - QWidget *widget = static_cast< QWidget * >( obj ); - - QWidget *child = widget->childAt( widget->mapFromGlobal( pt ) ); - if( child ) - { - QWheelEvent whev( child->mapFromGlobal( pt ), pt, delta, Qt::NoButton, Qt::NoModifier ); - qApp->sendEvent( child, &whev ); - } - else - { - QWheelEvent whev( widget->mapFromGlobal( pt ), pt, delta, Qt::NoButton, Qt::NoModifier ); - qApp->sendEvent( widget, &whev ); - } - } - } - - return handled; - } - - if( ev->type() == QEvent::MouseMove ) - { - if( Gestures::isFewTouchPointsPresented() ) - { - ev->accept(); - return true; - } - } -#endif - - if ( handleF3( obj, ev ) ) - { - return true; - } - - if ( obj == ui.definition ) - { - if ( ev->type() == QEvent::MouseButtonPress ) { - QMouseEvent * event = static_cast< QMouseEvent * >( ev ); - if ( event->button() == Qt::XButton1 ) { - back(); - return true; - } - if ( event->button() == Qt::XButton2 ) { - forward(); - return true; - } - } - else - if ( ev->type() == QEvent::KeyPress ) - { - QKeyEvent * keyEvent = static_cast< QKeyEvent * >( ev ); - - if ( keyEvent->modifiers() & - ( Qt::ControlModifier | Qt::AltModifier | Qt::MetaModifier ) ) - return false; // A non-typing modifier is pressed - - if ( keyEvent->key() == Qt::Key_Space || - keyEvent->key() == Qt::Key_Backspace || - keyEvent->key() == Qt::Key_Tab || - keyEvent->key() == Qt::Key_Backtab || - keyEvent->key() == Qt::Key_Return || - keyEvent->key() == Qt::Key_Enter ) - return false; // Those key have other uses than to start typing - - QString text = keyEvent->text(); - - if ( text.size() ) - { - emit typingEvent( text ); - return true; - } - } - } - else - return QFrame::eventFilter( obj, ev ); - - return false; -} - -QString ArticleView::getMutedForGroup( unsigned group ) -{ - if ( dictionaryBarToggled && dictionaryBarToggled->isChecked() ) - { - // Dictionary bar is active -- mute the muted dictionaries - Instances::Group const * groupInstance = groups.findGroup( group ); - - // Find muted dictionaries for current group - Config::Group const * grp = cfg.getGroup( group ); - Config::MutedDictionaries const * mutedDictionaries; - if( group == Instances::Group::AllGroupId ) - mutedDictionaries = popupView ? &cfg.popupMutedDictionaries : &cfg.mutedDictionaries; - else - mutedDictionaries = grp ? ( popupView ? &grp->popupMutedDictionaries : &grp->mutedDictionaries ) : 0; - if( !mutedDictionaries ) - return QString(); - - QStringList mutedDicts; - - if ( groupInstance ) - { - for( unsigned x = 0; x < groupInstance->dictionaries.size(); ++x ) - { - QString id = QString::fromStdString( - groupInstance->dictionaries[ x ]->getId() ); - - if ( mutedDictionaries->contains( id ) ) - mutedDicts.append( id ); - } - } - - if ( mutedDicts.size() ) - return mutedDicts.join( "," ); - } - - return QString(); -} - -void ArticleView::linkHovered ( const QString & link, const QString & , const QString & ) -{ - QString msg; - QUrl url(link); - - if ( url.scheme() == "bres" ) - { - msg = tr( "Resource" ); - } - else - if ( url.scheme() == "gdau" || Dictionary::WebMultimediaDownload::isAudioUrl( url ) ) - { - msg = tr( "Audio" ); - } - else - if ( url.scheme() == "gdtts" ) - { - msg = tr( "TTS Voice" ); - } - else - if ( url.scheme() == "gdpicture" ) - { - msg = tr( "Picture" ); - } - else - if ( url.scheme() == "gdvideo" ) - { - if ( url.path().isEmpty() ) - { - msg = tr( "Video" ); - } - else - { - QString path = url.path(); - if ( path.startsWith( '/' ) ) - { - path = path.mid( 1 ); - } - msg = tr( "Video: %1" ).arg( path ); - } - } - else - if (url.scheme() == "gdlookup" || url.scheme().compare( "bword" ) == 0) - { - QString def = url.path(); - if (def.startsWith("/")) - { - def = def.mid( 1 ); - } - - if( Qt4x5::Url::hasQueryItem( url, "dict" ) ) - { - // Link to other dictionary - QString dictName( Qt4x5::Url::queryItemValue( url, "dict" ) ); - if( !dictName.isEmpty() ) - msg = tr( "Definition from dictionary \"%1\": %2" ).arg( dictName ).arg( def ); - } - - if( msg.isEmpty() ) - msg = tr( "Definition: %1").arg( def ); - } - else - { - msg = link; - } - - emit statusBarMessage( msg ); -} - -void ArticleView::attachToJavaScript() -{ - ui.definition->page()->mainFrame()->addToJavaScriptWindowObject( QString( "articleview" ), this ); -} - -void ArticleView::linkClicked( QUrl const & url_ ) -{ - updateCurrentArticleFromCurrentFrame(); - - QUrl url( url_ ); - Contexts contexts; - - tryMangleWebsiteClickedUrl( url, contexts ); - - Qt::KeyboardModifiers kmod = QApplication::keyboardModifiers(); - if ( !popupView && - ( ui.definition->isMidButtonPressed() || - ( kmod & ( Qt::ControlModifier | Qt::ShiftModifier ) ) ) ) - { - // Mid button or Control/Shift is currently pressed - open the link in new tab - emit openLinkInNewTab( url, ui.definition->url(), getCurrentArticle(), contexts ); - } - else - openLink( url, ui.definition->url(), getCurrentArticle(), contexts ); -} - -void ArticleView::openLink( QUrl const & url, QUrl const & ref, - QString const & scrollTo, - Contexts const & contexts_ ) -{ - qDebug() << "clicked" << url; - - Contexts contexts( contexts_ ); - - if( url.scheme().compare( "gdpicture" ) == 0 ) - ui.definition->load( url ); - else - if ( url.scheme().compare( "bword" ) == 0 ) - { - if( Qt4x5::Url::hasQueryItem( ref, "dictionaries" ) ) - { - QStringList dictsList = Qt4x5::Url::queryItemValue( ref, "dictionaries" ) - .split( ",", QString::SkipEmptyParts ); - - showDefinition( url.path(), dictsList, QRegExp(), getGroup( ref ) ); - } - else - showDefinition( url.path(), - getGroup( ref ), scrollTo, contexts ); - } - else - if ( url.scheme() == "gdlookup" ) // Plain html links inherit gdlookup scheme - { - if ( url.hasFragment() ) - { - ui.definition->page()->mainFrame()->evaluateJavaScript( - QString( "window.location = \"%1\"" ).arg( QString::fromUtf8( url.toEncoded() ) ) ); - } - else - { - if( Qt4x5::Url::hasQueryItem( ref, "dictionaries" ) ) - { - // Specific dictionary group from full-text search - QStringList dictsList = Qt4x5::Url::queryItemValue( ref, "dictionaries" ) - .split( ",", QString::SkipEmptyParts ); - - showDefinition( url.path().mid( 1 ), dictsList, QRegExp(), getGroup( ref ) ); - return; - } - - QString newScrollTo( scrollTo ); - if( Qt4x5::Url::hasQueryItem( url, "dict" ) ) - { - // Link to other dictionary - QString dictName( Qt4x5::Url::queryItemValue( url, "dict" ) ); - for( unsigned i = 0; i < allDictionaries.size(); i++ ) - { - if( dictName.compare( QString::fromUtf8( allDictionaries[ i ]->getName().c_str() ) ) == 0 ) - { - newScrollTo = QString( "gdfrom-" ) + QString::fromUtf8( allDictionaries[ i ]->getId().c_str() ); - break; - } - } - } - - if( Qt4x5::Url::hasQueryItem( url, "gdanchor" ) ) - contexts[ "gdanchor" ] = Qt4x5::Url::queryItemValue( url, "gdanchor" ); - - showDefinition( url.path().mid( 1 ), - getGroup( ref ), newScrollTo, contexts ); - } - } - else - if ( url.scheme() == "bres" || url.scheme() == "gdau" || url.scheme() == "gdvideo" || - Dictionary::WebMultimediaDownload::isAudioUrl( url ) ) - { - // Download it - - // Clear any pending ones - - resourceDownloadRequests.clear(); - - resourceDownloadUrl = url; - - if ( Dictionary::WebMultimediaDownload::isAudioUrl( url ) ) - { - sptr< Dictionary::DataRequest > req = - new Dictionary::WebMultimediaDownload( url, articleNetMgr ); - - resourceDownloadRequests.push_back( req ); - - connect( req.get(), SIGNAL( finished() ), - this, SLOT( resourceDownloadFinished() ) ); - } - else - if ( url.scheme() == "gdau" && url.host() == "search" ) - { - // Since searches should be limited to current group, we just do them - // here ourselves since otherwise we'd need to pass group id to netmgr - // and it should've been having knowledge of the current groups, too. - - unsigned currentGroup = getGroup( ref ); - - std::vector< sptr< Dictionary::Class > > const * activeDicts = 0; - - if ( groups.size() ) - { - for( unsigned x = 0; x < groups.size(); ++x ) - if ( groups[ x ].id == currentGroup ) - { - activeDicts = &( groups[ x ].dictionaries ); - break; - } - } - else - activeDicts = &allDictionaries; - - if ( activeDicts ) - for( unsigned x = 0; x < activeDicts->size(); ++x ) - { - try - { - sptr< Dictionary::DataRequest > req = - (*activeDicts)[ x ]->getResource( - url.path().mid( 1 ).toUtf8().data() ); - - if ( req->isFinished() && req->dataSize() >= 0 ) - { - // A request was instantly finished with success. - // If we've managed to spawn some lingering requests already, - // erase them. - resourceDownloadRequests.clear(); - - // Handle the result - resourceDownloadRequests.push_back( req ); - resourceDownloadFinished(); - - return; - } - else - if ( !req->isFinished() ) - { - resourceDownloadRequests.push_back( req ); - - connect( req.get(), SIGNAL( finished() ), - this, SLOT( resourceDownloadFinished() ) ); - } - } - catch( std::exception & e ) - { - emit statusBarMessage( - tr( "ERROR: %1" ).arg( e.what() ), - 10000, QPixmap( ":/icons/error.png" ) ); - } - } - } - else - { - // Normal resource download - QString contentType; - - sptr< Dictionary::DataRequest > req = - articleNetMgr.getResource( url, contentType ); - - if ( !req.get() ) - { - // Request failed, fail - } - else - if ( req->isFinished() && req->dataSize() >= 0 ) - { - // Have data ready, handle it - resourceDownloadRequests.push_back( req ); - resourceDownloadFinished(); - - return; - } - else - if ( !req->isFinished() ) - { - // Queue to be handled when done - - resourceDownloadRequests.push_back( req ); - - connect( req.get(), SIGNAL( finished() ), - this, SLOT( resourceDownloadFinished() ) ); - } - } - - if ( resourceDownloadRequests.empty() ) // No requests were queued - { - QMessageBox::critical( this, "GoldenDict", tr( "The referenced resource doesn't exist." ) ); - return; - } - else - resourceDownloadFinished(); // Check any requests finished already - } - else - if ( url.scheme() == "gdprg" ) - { - // Program. Run it. - QString id( url.host() ); - - for( Config::Programs::const_iterator i = cfg.programs.begin(); - i != cfg.programs.end(); ++i ) - { - if ( i->id == id ) - { - // Found the corresponding program. - Programs::RunInstance * req = new Programs::RunInstance; - - connect( req, SIGNAL(finished(QByteArray,QString)), - req, SLOT( deleteLater() ) ); - - QString error; - - // Delete the request if it fails to start - if ( !req->start( *i, url.path().mid( 1 ), error ) ) - { - delete req; - - QMessageBox::critical( this, "GoldenDict", - error ); - } - - return; - } - } - - // Still here? No such program exists. - QMessageBox::critical( this, "GoldenDict", - tr( "The referenced audio program doesn't exist." ) ); - } - else - if ( url.scheme() == "gdtts" ) - { -// TODO: Port TTS -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) - // Text to speech - QString md5Id = Qt4x5::Url::queryItemValue( url, "engine" ); - QString text( url.path().mid( 1 ) ); - - for ( Config::VoiceEngines::const_iterator i = cfg.voiceEngines.begin(); - i != cfg.voiceEngines.end(); ++i ) - { - QString itemMd5Id = QString( QCryptographicHash::hash( - i->id.toUtf8(), - QCryptographicHash::Md5 ).toHex() ); - - if ( itemMd5Id == md5Id ) - { - SpeechClient * speechClient = new SpeechClient( *i, this ); - connect( speechClient, SIGNAL( finished() ), speechClient, SLOT( deleteLater() ) ); - speechClient->tell( text ); - break; - } - } -#endif - } - else - if ( isExternalLink( url ) ) - { - // Use the system handler for the conventional external links - QDesktopServices::openUrl( url ); - } -} - -vector< ResourceToSaveHandler * > ArticleView::saveResource( const QUrl & url, const QString & fileName ) -{ - return saveResource( url, ui.definition->url(), fileName ); -} - -vector< ResourceToSaveHandler * > ArticleView::saveResource( const QUrl & url, const QUrl & ref, const QString & fileName ) -{ - vector< ResourceToSaveHandler * > handlers; - sptr< Dictionary::DataRequest > req; - - if( url.scheme() == "bres" || url.scheme() == "gico" || url.scheme() == "gdau") - { - if ( url.host() == "search" ) - { - // Since searches should be limited to current group, we just do them - // here ourselves since otherwise we'd need to pass group id to netmgr - // and it should've been having knowledge of the current groups, too. - - unsigned currentGroup = getGroup( ref ); - - std::vector< sptr< Dictionary::Class > > const * activeDicts = 0; - - if ( groups.size() ) - { - for( unsigned x = 0; x < groups.size(); ++x ) - if ( groups[ x ].id == currentGroup ) - { - activeDicts = &( groups[ x ].dictionaries ); - break; - } - } - else - activeDicts = &allDictionaries; - - if ( activeDicts ) - { - for( unsigned x = 0; x < activeDicts->size(); ++x ) - { - try - { - req = (*activeDicts)[ x ]->getResource( - Qt4x5::Url::path( url ).mid( 1 ).toUtf8().data() ); - - ResourceToSaveHandler * handler = new ResourceToSaveHandler( this, req, fileName ); - handlers.push_back( handler ); - } - catch( std::exception & e ) - { - gdWarning( "getResource request error (%s) in \"%s\"\n", e.what(), - (*activeDicts)[ x ]->getName().c_str() ); - } - } - } - } - else - { - // Normal resource download - QString contentType; - req = articleNetMgr.getResource( url, contentType ); - - if( req.get() ) - { - ResourceToSaveHandler * handler = new ResourceToSaveHandler( this, req, fileName ); - handlers.push_back( handler ); - } - } - } - else - { - req = new Dictionary::WebMultimediaDownload( url, articleNetMgr ); - - ResourceToSaveHandler * handler = new ResourceToSaveHandler( this, req, fileName ); - handlers.push_back( handler ); - } - - if ( handlers.empty() ) // No requests were queued - { - emit statusBarMessage( - tr( "ERROR: %1" ).arg( tr( "The referenced resource doesn't exist." ) ), - 10000, QPixmap( ":/icons/error.png" ) ); - } - - return handlers; -} - -void ArticleView::updateMutedContents() -{ - QUrl currentUrl = ui.definition->url(); - - if ( currentUrl.scheme() != "gdlookup" ) - return; // Weird url -- do nothing - - unsigned group = getGroup( currentUrl ); - - if ( !group ) - return; // No group in url -- do nothing - - QString mutedDicts = getMutedForGroup( group ); - - if ( Qt4x5::Url::queryItemValue( currentUrl, "muted" ) != mutedDicts ) - { - // The list has changed -- update the url - - Qt4x5::Url::removeQueryItem( currentUrl, "muted" ); - - if ( mutedDicts.size() ) - Qt4x5::Url::addQueryItem( currentUrl, "muted", mutedDicts ); - - saveHistoryUserData(); - - ui.definition->load( currentUrl ); - - //QApplication::setOverrideCursor( Qt::WaitCursor ); - ui.definition->setCursor( Qt::WaitCursor ); - } -} - -bool ArticleView::canGoBack() -{ - // First entry in a history is always an empty page, - // so we skip it. - return ui.definition->history()->currentItemIndex() > 1; -} - -bool ArticleView::canGoForward() -{ - return ui.definition->history()->canGoForward(); -} - -void ArticleView::setSelectionBySingleClick( bool set ) -{ - ui.definition->setSelectionBySingleClick( set ); -} - -void ArticleView::back() -{ - // Don't allow navigating back to page 0, which is usually the initial - // empty page - if ( canGoBack() ) - { - saveHistoryUserData(); - ui.definition->back(); - } -} - -void ArticleView::forward() -{ - saveHistoryUserData(); - ui.definition->forward(); -} - -bool ArticleView::hasSound() -{ - QVariant v = ui.definition->page()->mainFrame()->evaluateJavaScript( "gdAudioLinks.first" ); - if ( v.type() == QVariant::String ) - return !v.toString().isEmpty(); - return false; -} - -void ArticleView::playSound() -{ - QVariant v; - QString soundScript; - - v = ui.definition->page()->mainFrame()->evaluateJavaScript( "gdAudioLinks[gdAudioLinks.current]" ); - - if ( v.type() == QVariant::String ) - soundScript = v.toString(); - - // fallback to the first one - if ( soundScript.isEmpty() ) - { - v = ui.definition->page()->mainFrame()->evaluateJavaScript( "gdAudioLinks.first" ); - if ( v.type() == QVariant::String ) - soundScript = v.toString(); - } - - if ( !soundScript.isEmpty() ) - openLink( QUrl::fromEncoded( soundScript.toUtf8() ), ui.definition->url() ); -} - -QString ArticleView::toHtml() -{ - return ui.definition->page()->mainFrame()->toHtml(); -} - -QString ArticleView::getTitle() -{ - return ui.definition->page()->mainFrame()->title(); -} - -void ArticleView::print( QPrinter * printer ) const -{ - ui.definition->print( printer ); -} - -void ArticleView::contextMenuRequested( QPoint const & pos ) -{ - // Is that a link? Is there a selection? - - QWebHitTestResult r = ui.definition->page()->mainFrame()-> - hitTestContent( pos ); - - updateCurrentArticleFromCurrentFrame( r.frame() ); - - QMenu menu( this ); - - QAction * followLink = 0; - QAction * followLinkExternal = 0; - QAction * followLinkNewTab = 0; - QAction * lookupSelection = 0; - QAction * lookupSelectionGr = 0; - QAction * lookupSelectionNewTab = 0; - QAction * lookupSelectionNewTabGr = 0; - QAction * maxDictionaryRefsAction = 0; - QAction * addWordToHistoryAction = 0; - QAction * addHeaderToHistoryAction = 0; - QAction * sendWordToInputLineAction = 0; - QAction * saveImageAction = 0; - QAction * saveSoundAction = 0; - - QUrl targetUrl( r.linkUrl() ); - Contexts contexts; - - tryMangleWebsiteClickedUrl( targetUrl, contexts ); - - if ( !r.linkUrl().isEmpty() ) - { - if ( !isExternalLink( targetUrl ) ) - { - followLink = new QAction( tr( "&Open Link" ), &menu ); - menu.addAction( followLink ); - - if ( !popupView ) - { - followLinkNewTab = new QAction( QIcon( ":/icons/addtab.png" ), - tr( "Open Link in New &Tab" ), &menu ); - menu.addAction( followLinkNewTab ); - } - } - - if ( isExternalLink( r.linkUrl() ) ) - { - followLinkExternal = new QAction( tr( "Open Link in &External Browser" ), &menu ); - menu.addAction( followLinkExternal ); - menu.addAction( ui.definition->pageAction( QWebPage::CopyLinkToClipboard ) ); - } - } - -#if QT_VERSION >= 0x040600 - QWebElement el = r.element(); - QUrl imageUrl; - if( !popupView && el.tagName().compare( "img", Qt::CaseInsensitive ) == 0 ) - { - imageUrl = QUrl::fromPercentEncoding( el.attribute( "src" ).toLatin1() ); - if( !imageUrl.isEmpty() ) - { - menu.addAction( ui.definition->pageAction( QWebPage::CopyImageToClipboard ) ); - saveImageAction = new QAction( tr( "Save &image..." ), &menu ); - menu.addAction( saveImageAction ); - } - } - - if( !popupView && ( targetUrl.scheme() == "gdau" - || Dictionary::WebMultimediaDownload::isAudioUrl( targetUrl ) ) ) - { - saveSoundAction = new QAction( tr( "Save s&ound..." ), &menu ); - menu.addAction( saveSoundAction ); - } -#endif - - QString selectedText = ui.definition->selectedText(); - - if ( selectedText.size() && selectedText.size() < 60 ) - { - // We don't prompt for selections larger or equal to 60 chars, since - // it ruins the menu and it's hardly a single word anyway. - - QString text = ui.definition->selectedText(); - if( text.isRightToLeft() ) - { - text.insert( 0, (ushort)0x202E ); // RLE, Right-to-Left Embedding - text.append( (ushort)0x202C ); // PDF, POP DIRECTIONAL FORMATTING - } - - lookupSelection = new QAction( tr( "&Look up \"%1\"" ). - arg( text ), - &menu ); - menu.addAction( lookupSelection ); - - if ( !popupView ) - { - lookupSelectionNewTab = new QAction( QIcon( ":/icons/addtab.png" ), - tr( "Look up \"%1\" in &New Tab" ). - arg( text ), - &menu ); - menu.addAction( lookupSelectionNewTab ); - - sendWordToInputLineAction = new QAction( tr( "Send \"%1\" to input line" ). - arg( text ), - &menu ); - menu.addAction( sendWordToInputLineAction ); - } - - addWordToHistoryAction = new QAction( tr( "&Add \"%1\" to history" ). - arg( text ), - &menu ); - menu.addAction( addWordToHistoryAction ); - - Instances::Group const * altGroup = - ( groupComboBox && groupComboBox->getCurrentGroup() != getGroup( ui.definition->url() ) ) ? - groups.findGroup( groupComboBox->getCurrentGroup() ) : 0; - - if ( altGroup ) - { - QIcon icon = altGroup->icon.size() ? QIcon( ":/flags/" + altGroup->icon ) : - QIcon(); - - lookupSelectionGr = new QAction( icon, tr( "Look up \"%1\" in %2" ). - arg( ui.definition->selectedText() ). - arg( altGroup->name ), &menu ); - menu.addAction( lookupSelectionGr ); - - if ( !popupView ) - { - lookupSelectionNewTabGr = new QAction( QIcon( ":/icons/addtab.png" ), - tr( "Look up \"%1\" in %2 in &New Tab" ). - arg( ui.definition->selectedText() ). - arg( altGroup->name ), &menu ); - menu.addAction( lookupSelectionNewTabGr ); - } - } - } - - if( selectedText.isEmpty() && !cfg.preferences.storeHistory) - { - QString txt = ui.definition->title(); - if( txt.size() > 60 ) - txt = txt.left( 60 ) + "..."; - - addHeaderToHistoryAction = new QAction( tr( "&Add \"%1\" to history" ). - arg( txt ), - &menu ); - menu.addAction( addHeaderToHistoryAction ); - } - - if ( selectedText.size() ) - { - menu.addAction( ui.definition->pageAction( QWebPage::Copy ) ); - menu.addAction( ©AsTextAction ); - } - else - { - menu.addAction( &selectCurrentArticleAction ); - menu.addAction( ui.definition->pageAction( QWebPage::SelectAll ) ); - } - - map< QAction *, QString > tableOfContents; - - // Add table of contents - QStringList ids = getArticlesList(); - - if ( !menu.isEmpty() && ids.size() ) - menu.addSeparator(); - - unsigned refsAdded = 0; - bool maxDictionaryRefsReached = false; - - for( QStringList::const_iterator i = ids.constBegin(); i != ids.constEnd(); - ++i, ++refsAdded ) - { - // Find this dictionary - - for( unsigned x = allDictionaries.size(); x--; ) - { - if ( allDictionaries[ x ]->getId() == i->toUtf8().data() ) - { - QAction * action = 0; - if ( refsAdded == cfg.preferences.maxDictionaryRefsInContextMenu ) - { - // Enough! Or the menu would become too large. - maxDictionaryRefsAction = new QAction( ".........", &menu ); - action = maxDictionaryRefsAction; - maxDictionaryRefsReached = true; - } - else - { - action = new QAction( - allDictionaries[ x ]->getIcon(), - QString::fromUtf8( allDictionaries[ x ]->getName().c_str() ), - &menu ); - // Force icons in menu on all platfroms, - // since without them it will be much harder - // to find things. - action->setIconVisibleInMenu( true ); - } - menu.addAction( action ); - - tableOfContents[ action ] = *i; - - break; - } - } - if( maxDictionaryRefsReached ) - break; - } - - menu.addSeparator(); - menu.addAction( &inspectAction ); - - if ( !menu.isEmpty() ) - { - connect( this, SIGNAL( closePopupMenu() ), &menu, SLOT( close() ) ); - QAction * result = menu.exec( ui.definition->mapToGlobal( pos ) ); - - if ( !result ) - return; - - if ( result == followLink ) - openLink( targetUrl, ui.definition->url(), getCurrentArticle(), contexts ); - else - if ( result == followLinkExternal ) - QDesktopServices::openUrl( r.linkUrl() ); - else - if ( result == lookupSelection ) - showDefinition( selectedText, getGroup( ui.definition->url() ), getCurrentArticle() ); - else - if ( result == lookupSelectionGr && groupComboBox ) - showDefinition( selectedText, groupComboBox->getCurrentGroup(), QString() ); - else - if ( result == addWordToHistoryAction ) - emit forceAddWordToHistory( selectedText ); - if ( result == addHeaderToHistoryAction ) - emit forceAddWordToHistory( ui.definition->title() ); - else - if( result == sendWordToInputLineAction ) - emit sendWordToInputLine( selectedText ); - else - if ( !popupView && result == followLinkNewTab ) - emit openLinkInNewTab( targetUrl, ui.definition->url(), getCurrentArticle(), contexts ); - else - if ( !popupView && result == lookupSelectionNewTab ) - emit showDefinitionInNewTab( selectedText, getGroup( ui.definition->url() ), - getCurrentArticle(), Contexts() ); - else - if ( !popupView && result == lookupSelectionNewTabGr && groupComboBox ) - emit showDefinitionInNewTab( selectedText, groupComboBox->getCurrentGroup(), - QString(), Contexts() ); - else - if( result == saveImageAction || result == saveSoundAction ) - { -#if QT_VERSION >= 0x040600 - QUrl url = ( result == saveImageAction ) ? imageUrl : targetUrl; - QString savePath; - QString fileName; - - if ( cfg.resourceSavePath.isEmpty() ) - savePath = QDir::homePath(); - else - { - savePath = QDir::fromNativeSeparators( cfg.resourceSavePath ); - if ( !QDir( savePath ).exists() ) - savePath = QDir::homePath(); - } - - QString name = Qt4x5::Url::path( url ).section( '/', -1 ); - - if ( result == saveSoundAction ) - { - // Audio data - if ( name.indexOf( '.' ) < 0 ) - name += ".wav"; - - fileName = savePath + "/" + name; - fileName = QFileDialog::getSaveFileName( parentWidget(), tr( "Save sound" ), - fileName, - tr( "Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*)" ) ); - } - else - { - // Image data - - // Check for babylon image name - if ( name[ 0 ] == '\x1E' ) - name.remove( 0, 1 ); - if ( name.length() && name[ name.length() - 1 ] == '\x1F' ) - name.chop( 1 ); - - fileName = savePath + "/" + name; - fileName = QFileDialog::getSaveFileName( parentWidget(), tr( "Save image" ), - fileName, - tr( "Image files (*.bmp *.jpg *.png *.tif);;All files (*.*)" ) ); - } - - if ( !fileName.isEmpty() ) - { - QFileInfo fileInfo( fileName ); - emit storeResourceSavePath( QDir::toNativeSeparators( fileInfo.absoluteDir().absolutePath() ) ); - saveResource( url, ui.definition->url(), fileName ); - } -#endif - } - else - { - if ( !popupView && result == maxDictionaryRefsAction ) - emit showDictsPane(); - - // Match against table of contents - QString id = tableOfContents[ result ]; - - if ( id.size() ) - setCurrentArticle( "gdfrom-" + id, true ); - } - } -#if 0 - DPRINTF( "%s\n", r.linkUrl().isEmpty() ? "null" : "not null" ); - - DPRINTF( "url = %s\n", r.linkUrl().toString().toLocal8Bit().data() ); - DPRINTF( "title = %s\n", r.title().toLocal8Bit().data() ); -#endif -} - -void ArticleView::resourceDownloadFinished() -{ - if ( resourceDownloadRequests.empty() ) - return; // Stray signal - - // Find any finished resources - for( list< sptr< Dictionary::DataRequest > >::iterator i = - resourceDownloadRequests.begin(); i != resourceDownloadRequests.end(); ) - { - if ( (*i)->isFinished() ) - { - if ( (*i)->dataSize() >= 0 ) - { - // Ok, got one finished, all others are irrelevant now - - vector< char > const & data = (*i)->getFullData(); - - if ( resourceDownloadUrl.scheme() == "gdau" || - Dictionary::WebMultimediaDownload::isAudioUrl( resourceDownloadUrl ) ) - { - // Audio data -#ifndef DISABLE_INTERNAL_PLAYER - if ( cfg.preferences.useInternalPlayer ) - { - Ffmpeg::AudioPlayer & player = Ffmpeg::AudioPlayer::instance(); - connect( &player, SIGNAL( error( QString ) ), this, SLOT( audioPlayerError( QString ) ), Qt::UniqueConnection ); - player.playMemory( data.data(), data.size() ); - } - else -#endif - { - // Use external viewer to play the file - try - { - ExternalViewer * viewer = new ExternalViewer( this, data, "wav", cfg.preferences.audioPlaybackProgram.trimmed() ); - - // Once started, it will erase itself - viewer->start(); - } - catch( ExternalViewer::Ex & e ) - { - QMessageBox::critical( this, "GoldenDict", tr( "Failed to run a player to play sound file: %1" ).arg( e.what() ) ); - } - } - } - else - { - // Create a temporary file - - - // Remove the one previously used, if any - cleanupTemp(); - - { - QTemporaryFile tmp( - QDir::temp().filePath( "XXXXXX-" + resourceDownloadUrl.path().section( '/', -1 ) ), this ); - - if ( !tmp.open() || (size_t) tmp.write( &data.front(), data.size() ) != data.size() ) - { - QMessageBox::critical( this, "GoldenDict", tr( "Failed to create temporary file." ) ); - return; - } - - tmp.setAutoRemove( false ); - - desktopOpenedTempFile = tmp.fileName(); - } - - if ( !QDesktopServices::openUrl( QUrl::fromLocalFile( desktopOpenedTempFile ) ) ) - QMessageBox::critical( this, "GoldenDict", - tr( "Failed to auto-open resource file, try opening manually: %1." ).arg( desktopOpenedTempFile ) ); - } - - // Ok, whatever it was, it's finished. Remove this and any other - // requests and finish. - - resourceDownloadRequests.clear(); - - return; - } - else - { - // This one had no data. Erase it. - resourceDownloadRequests.erase( i++ ); - } - } - else // Unfinished, try the next one. - i++; - } - - if ( resourceDownloadRequests.empty() ) - { - emit statusBarMessage( - tr( "WARNING: %1" ).arg( tr( "The referenced resource failed to download." ) ), - 10000, QPixmap( ":/icons/error.png" ) ); - } -} - -void ArticleView::audioPlayerError( QString const & message ) -{ - emit statusBarMessage( tr( "WARNING: FFmpeg Audio Player: %1" ).arg( message ), - 10000, QPixmap( ":/icons/error.png" ) ); -} - -void ArticleView::pasteTriggered() -{ - QString text = - gd::toQString( - Folding::trimWhitespaceOrPunct( - gd::toWString( - QApplication::clipboard()->text() ) ) ); - - if ( text.size() ) - { - unsigned groupId = getGroup( ui.definition->url() ); - if ( groupId == 0 ) - { - // We couldn't figure out the group out of the URL, - // so let's try the currently selected group. - groupId = groupComboBox->getCurrentGroup(); - } - showDefinition( text, groupId, getCurrentArticle() ); - } -} - -void ArticleView::moveOneArticleUp() -{ - QString current = getCurrentArticle(); - - if ( current.size() ) - { - QStringList lst = getArticlesList(); - - int idx = lst.indexOf( current.mid( 7 ) ); - - if ( idx != -1 ) - { - --idx; - - if ( idx < 0 ) - idx = lst.size() - 1; - - setCurrentArticle( "gdfrom-" + lst[ idx ], true ); - } - } -} - -void ArticleView::moveOneArticleDown() -{ - QString current = getCurrentArticle(); - - if ( current.size() ) - { - QStringList lst = getArticlesList(); - - int idx = lst.indexOf( current.mid( 7 ) ); - - if ( idx != -1 ) - { - idx = ( idx + 1 ) % lst.size(); - - setCurrentArticle( "gdfrom-" + lst[ idx ], true ); - } - } -} - -void ArticleView::openSearch() -{ - if( !isVisible() ) - return; - - if( ftsSearchIsOpened ) - closeSearch(); - - if ( !searchIsOpened ) - { - ui.searchFrame->show(); - ui.searchText->setText( getTitle() ); - searchIsOpened = true; - } - - ui.searchText->setFocus(); - ui.searchText->selectAll(); - - // Clear any current selection - if ( ui.definition->selectedText().size() ) - { - ui.definition->page()->currentFrame()-> - evaluateJavaScript( "window.getSelection().removeAllRanges();_=0;" ); - } - - if ( ui.searchText->property( "noResults" ).toBool() ) - { - ui.searchText->setProperty( "noResults", false ); - - // Reload stylesheet - reloadStyleSheet(); - } -} - -void ArticleView::on_searchPrevious_clicked() -{ - if ( searchIsOpened ) - performFindOperation( false, true ); -} - -void ArticleView::on_searchNext_clicked() -{ - if ( searchIsOpened ) - performFindOperation( false, false ); -} - -void ArticleView::on_searchText_textEdited() -{ - performFindOperation( true, false ); -} - -void ArticleView::on_searchText_returnPressed() -{ - on_searchNext_clicked(); -} - -void ArticleView::on_searchCloseButton_clicked() -{ - closeSearch(); -} - -void ArticleView::on_searchCaseSensitive_clicked() -{ - performFindOperation( false, false, true ); -} - -void ArticleView::on_highlightAllButton_clicked() -{ - performFindOperation( false, false, true ); -} - -void ArticleView::onJsActiveArticleChanged(QString const & id) -{ - if ( !id.startsWith( "gdfrom-" ) ) - return; // Incorrect id - - emit activeArticleChanged( this, id.mid( 7 ) ); -} - -void ArticleView::doubleClicked() -{ - // We might want to initiate translation of the selected word - - if ( cfg.preferences.doubleClickTranslates ) - { - QString selectedText = ui.definition->selectedText(); - - // Do some checks to make sure there's a sensible selection indeed - if ( Folding::applyWhitespaceOnly( gd::toWString( selectedText ) ).size() && - selectedText.size() < 60 ) - { - // Initiate translation - Qt::KeyboardModifiers kmod = QApplication::keyboardModifiers(); - if (kmod & (Qt::ControlModifier | Qt::ShiftModifier)) - { // open in new tab - emit showDefinitionInNewTab( selectedText, getGroup( ui.definition->url() ), - getCurrentArticle(), Contexts() ); - } - else - { - QUrl const & ref = ui.definition->url(); - - if( Qt4x5::Url::hasQueryItem( ref, "dictionaries" ) ) - { - QStringList dictsList = Qt4x5::Url::queryItemValue(ref, "dictionaries" ) - .split( ",", QString::SkipEmptyParts ); - showDefinition( selectedText, dictsList, QRegExp(), getGroup( ref ) ); - } - else - showDefinition( selectedText, getGroup( ref ), getCurrentArticle() ); - } - } - } -} - - -void ArticleView::performFindOperation( bool restart, bool backwards, bool checkHighlight ) -{ - QString text = ui.searchText->text(); - - if ( restart || checkHighlight ) - { - if( restart ) { - // Anyone knows how we reset the search position? - // For now we resort to this hack: - if ( ui.definition->selectedText().size() ) - { - ui.definition->page()->currentFrame()-> - evaluateJavaScript( "window.getSelection().removeAllRanges();_=0;" ); - } - } - - QWebPage::FindFlags f( 0 ); - - if ( ui.searchCaseSensitive->isChecked() ) - f |= QWebPage::FindCaseSensitively; -#if QT_VERSION >= 0x040600 - f |= QWebPage::HighlightAllOccurrences; -#endif - - ui.definition->findText( "", f ); - - if( ui.highlightAllButton->isChecked() ) - ui.definition->findText( text, f ); - - if( checkHighlight ) - return; - } - - QWebPage::FindFlags f( 0 ); - - if ( ui.searchCaseSensitive->isChecked() ) - f |= QWebPage::FindCaseSensitively; - - if ( backwards ) - f |= QWebPage::FindBackward; - - bool setMark = text.size() && !ui.definition->findText( text, f ); - - if ( ui.searchText->property( "noResults" ).toBool() != setMark ) - { - ui.searchText->setProperty( "noResults", setMark ); - - // Reload stylesheet - reloadStyleSheet(); - } -} - -void ArticleView::reloadStyleSheet() -{ - for( QWidget * w = parentWidget(); w; w = w->parentWidget() ) - { - if ( w->styleSheet().size() ) - { - w->setStyleSheet( w->styleSheet() ); - break; - } - } -} - - -bool ArticleView::closeSearch() -{ - if ( searchIsOpened ) - { - ui.searchFrame->hide(); - ui.definition->setFocus(); - searchIsOpened = false; - - return true; - } - else - if( ftsSearchIsOpened ) - { - allMatches.clear(); - uniqueMatches.clear(); - ftsPosition = 0; - ftsSearchIsOpened = false; - - ui.ftsSearchFrame->hide(); - ui.definition->setFocus(); - - QWebPage::FindFlags flags ( 0 ); - - #if QT_VERSION >= 0x040600 - flags |= QWebPage::HighlightAllOccurrences; - #endif - - ui.definition->findText( "", flags ); - - return true; - } - else - return false; -} - -bool ArticleView::isSearchOpened() -{ - return searchIsOpened; -} - -void ArticleView::showEvent( QShowEvent * ev ) -{ - QFrame::showEvent( ev ); - - if ( !searchIsOpened ) - ui.searchFrame->hide(); - - if( !ftsSearchIsOpened ) - ui.ftsSearchFrame->hide(); -} - -void ArticleView::receiveExpandOptionalParts( bool expand ) -{ - if( expandOptionalParts != expand ) - { - int n = getArticlesList().indexOf( getActiveArticleId() ); - if( n > 0 ) - articleToJump = getCurrentArticle(); - - emit setExpandMode( expand ); - expandOptionalParts = expand; - reload(); - } -} - -void ArticleView::switchExpandOptionalParts() -{ - expandOptionalParts = !expandOptionalParts; - - int n = getArticlesList().indexOf( getActiveArticleId() ); - if( n > 0 ) - articleToJump = getCurrentArticle(); - - emit setExpandMode( expandOptionalParts ); - reload(); -} - -void ArticleView::copyAsText() -{ - QString text = ui.definition->selectedText(); - if( !text.isEmpty() ) - QApplication::clipboard()->setText( text ); -} - -void ArticleView::inspect() -{ - ui.definition->triggerPageAction( QWebPage::InspectElement ); -} - -void ArticleView::highlightFTSResults() -{ - closeSearch(); - - AccentMarkHandler markHandler; - - const QUrl & url = ui.definition->url(); - QRegExp regexp( Qt4x5::Url::queryItemValue( url, "regexp" ).remove( AccentMarkHandler::accentMark() ), - Qt4x5::Url::hasQueryItem( url, "matchcase" ) ? Qt::CaseSensitive : Qt::CaseInsensitive, - Qt4x5::Url::hasQueryItem( url, "wildcards" ) ? QRegExp::WildcardUnix : QRegExp::RegExp2 ); - - if( regexp.pattern().isEmpty() ) - return; - - regexp.setMinimal( true ); - - // Clear any current selection - if ( ui.definition->selectedText().size() ) - { - ui.definition->page()->currentFrame()-> - evaluateJavaScript( "window.getSelection().removeAllRanges();_=0;" ); - } - - QString pageText = ui.definition->page()->currentFrame()->toPlainText(); - markHandler.setText( pageText ); - - int pos = 0; - - while( pos >= 0 ) - { - pos = regexp.indexIn( markHandler.normalizedText(), pos ); - if( pos >= 0 ) - { - // Mirror pos and matched length to original string - int spos = markHandler.mirrorPosition( pos ); - int matched = markHandler.mirrorPosition( pos + regexp.matchedLength() ) - spos; - - if( matched > FTS::MaxMatchLengthForHighlightResults ) - { - gdWarning( "ArticleView::highlightFTSResults(): Too long match - skipped (matched length %i, allowed %i)", - regexp.matchedLength(), FTS::MaxMatchLengthForHighlightResults ); - } - else - allMatches.append( pageText.mid( spos, matched ) ); - - pos += regexp.matchedLength(); - } - } - - ftsSearchMatchCase = Qt4x5::Url::hasQueryItem( url, "matchcase" ); - - QWebPage::FindFlags flags ( 0 ); - - if( ftsSearchMatchCase ) - flags |= QWebPage::FindCaseSensitively; - -#if QT_VERSION >= 0x040600 - flags |= QWebPage::HighlightAllOccurrences; - - for( int x = 0; x < allMatches.size(); x++ ) - ui.definition->findText( allMatches.at( x ), flags ); - - flags &= ~QWebPage::HighlightAllOccurrences; -#endif - - if( !allMatches.isEmpty() ) - { - if( ui.definition->findText( allMatches.at( 0 ), flags ) ) - { - ui.definition->page()->currentFrame()-> - evaluateJavaScript( QString( "%1=window.getSelection().getRangeAt(0);_=0;" ) - .arg( rangeVarName ) ); - } - } - - ui.ftsSearchFrame->show(); - ui.ftsSearchPrevious->setEnabled( false ); - ui.ftsSearchNext->setEnabled( !allMatches.isEmpty() ); - - ftsSearchIsOpened = true; -} - -void ArticleView::performFtsFindOperation( bool backwards ) -{ - if( !ftsSearchIsOpened ) - return; - - if( allMatches.isEmpty() ) - { - ui.ftsSearchNext->setEnabled( false ); - ui.ftsSearchPrevious->setEnabled( false ); - return; - } - - QWebPage::FindFlags flags( 0 ); - - if( ftsSearchMatchCase ) - flags |= QWebPage::FindCaseSensitively; - - - // Restore saved highlighted selection - ui.definition->page()->currentFrame()-> - evaluateJavaScript( QString( "var sel=window.getSelection();sel.removeAllRanges();sel.addRange(%1);_=0;" ) - .arg( rangeVarName ) ); - - bool res; - if( backwards ) - { - if( ftsPosition > 0 ) - { - res = ui.definition->findText( allMatches.at( ftsPosition - 1 ), - flags | QWebPage::FindBackward ); - ftsPosition -= 1; - } - else - res = ui.definition->findText( allMatches.at( ftsPosition ), - flags | QWebPage::FindBackward ); - - ui.ftsSearchPrevious->setEnabled( res ); - if( !ui.ftsSearchNext->isEnabled() ) - ui.ftsSearchNext->setEnabled( res ); - } - else - { - if( ftsPosition < allMatches.size() - 1 ) - { - res = ui.definition->findText( allMatches.at( ftsPosition + 1 ), flags ); - ftsPosition += 1; - } - else - res = ui.definition->findText( allMatches.at( ftsPosition ), flags ); - - ui.ftsSearchNext->setEnabled( res ); - if( !ui.ftsSearchPrevious->isEnabled() ) - ui.ftsSearchPrevious->setEnabled( res ); - } - - // Store new highlighted selection - ui.definition->page()->currentFrame()-> - evaluateJavaScript( QString( "%1=window.getSelection().getRangeAt(0);_=0;" ) - .arg( rangeVarName ) ); -} - -void ArticleView::on_ftsSearchPrevious_clicked() -{ - performFtsFindOperation( true ); -} - -void ArticleView::on_ftsSearchNext_clicked() -{ - performFtsFindOperation( false ); -} - -#ifdef Q_OS_WIN32 - -void ArticleView::readTag( const QString & from, QString & to, int & count ) -{ - QChar ch, prev_ch; - bool inQuote = false, inDoublequote = false; - - to.append( ch = prev_ch = from[ count++ ] ); - while( count < from.size() ) - { - ch = from[ count ]; - if( ch == '>' && !( inQuote || inDoublequote ) ) - { - to.append( ch ); - break; - } - if( ch == '\'' ) - inQuote = !inQuote; - if( ch == '\"' ) - inDoublequote = !inDoublequote; - to.append( prev_ch = ch ); - count++; - } -} - -QString ArticleView::insertSpans( QString const & html ) -{ - QChar ch; - QString newContent; - bool inSpan = false, escaped = false; - - /// Enclose every word in string (exclude tags) with - - for( int i = 0; i < html.size(); i++ ) - { - ch = html[ i ]; - if( ch == '&' ) - { - escaped = true; - if( inSpan ) - { - newContent.append( "" ); - inSpan = false; - } - newContent.append( ch ); - continue; - } - - if( ch == '<' ) // Skip tag - { - escaped = false; - if( inSpan ) - { - newContent.append( "" ); - inSpan = false; - } - readTag( html, newContent, i ); - continue; - } - - if( escaped ) - { - if( ch == ';' ) - escaped = false; - newContent.append( ch ); - continue; - } - - if( !inSpan && ( ch.isLetterOrNumber() || ch.isLowSurrogate() ) ) - { - newContent.append( ""); - inSpan = true; - } - - if( inSpan && !( ch.isLetterOrNumber() || ch.isLowSurrogate() ) ) - { - newContent.append( ""); - inSpan = false; - } - - if( ch.isLowSurrogate() ) - { - newContent.append( ch ); - ch = html[ ++i ]; - } - - newContent.append( ch ); - if( ch == '-' && !( html[ i + 1 ] == ' ' || ( i > 0 && html[ i - 1 ] == ' ' ) ) ) - newContent.append( " " ); - } - if( inSpan ) - newContent.append( "" ); - return newContent; -} - -QString ArticleView::checkElement( QWebElement & elem, QPoint const & pt ) -{ - /// Search for lower-level matching element - - QWebElement parentElem = elem; - QWebElement childElem = elem.firstChild(); - while( !childElem.isNull() ) - { - if( childElem.geometry().contains( pt ) ) - { - parentElem = childElem; - childElem = parentElem.firstChild(); - continue; - } - childElem = childElem.nextSibling(); - } - - return parentElem.toPlainText(); -} - -QString ArticleView::wordAtPoint( int x, int y ) -{ - QString word; - - if( popupView ) - return word; - - QPoint pos = mapFromGlobal( QPoint( x, y ) ); - QWebFrame *frame = ui.definition->page()->frameAt( pos ); - if( !frame ) - return word; - - QPoint posWithScroll = pos + frame->scrollPosition(); - - /// Find target HTML element - - QWebHitTestResult result = frame->hitTestContent( pos ); - QWebElement baseElem = result.enclosingBlockElement(); - - if( baseElem.tagName().compare( "BODY" ) == 0 || /// Assume empty field position - baseElem.tagName().compare( "HTML" ) == 0 || - baseElem.tagName().compare( "HEAD" ) == 0 ) - return word; - - /// Save selection position - - baseElem.evaluateJavaScript( "var __gd_sel=window.getSelection();" - "if(__gd_sel && __gd_sel.rangeCount>0) {" - "__gd_SelRange=__gd_sel.getRangeAt(0);" - "if(__gd_SelRange.collapsed) __gd_sel.removeAllRanges();" - "else {" - "__gd_StartTree=[]; __gd_EndTree=[];" - "var __gd_baseRange=document.createRange();" - "__gd_baseRange.selectNode(this);" - "if(__gd_baseRange.comparePoint(__gd_SelRange.startContainer,0)==0) {" - "__gd_StartOffset=__gd_SelRange.startOffset;" - "var __gd_child=__gd_SelRange.startContainer;" - "var __gd_parent='';" - "if(__gd_child==this) __gd_StartTree.push(-1);" - "else while(__gd_parent!=this) {" - "var n=0; __gd_parent=__gd_child.parentNode;" - "var __gd_el=__gd_parent.firstChild;" - "while(__gd_el!=__gd_child) { n++; __gd_el=__gd_el.nextSibling; }" - "__gd_StartTree.push(n);" - "__gd_child=__gd_parent;" - "}" - "}" - "if(__gd_baseRange.comparePoint(__gd_SelRange.endContainer,0)==0) {" - "__gd_EndOffset=__gd_SelRange.endOffset;" - "var __gd_child=__gd_SelRange.endContainer;" - "var __gd_parent='';" - "if(__gd_child==this) __gd_EndTree.push(-1);" - "else while(__gd_parent!=this) {" - "var n=0; __gd_parent=__gd_child.parentNode;" - "var __gd_el=__gd_parent.firstChild;" - "while(__gd_el!=__gd_child) { n++; __gd_el=__gd_el.nextSibling; }" - "__gd_EndTree.push(n);" - "__gd_child=__gd_parent;" - "}" - "}" - "}" - "}" - ); - - /// Enclose every word be - - QString content = baseElem.toInnerXml(); - QString newContent = insertSpans( content ); - - /// Set new code and re-render it to fill geometry - - QImage img( baseElem.geometry().width(), baseElem.geometry().height(), QImage::Format_Mono ); - img.fill( 0 ); - QPainter painter( & img ); - - baseElem.setInnerXml( newContent ); - baseElem.render( &painter ); - - /// Search in all child elements and check it - - QWebElementCollection elemCollection = baseElem.findAll( "*" ); - foreach ( QWebElement elem, elemCollection ) - { - if( elem.geometry().contains( posWithScroll ) ) - word = checkElement( elem, posWithScroll ); - if( !word.isEmpty() ) - break; - } - - /// Restore old content - baseElem.setInnerXml( content ); - - /// Restore selection - - baseElem.evaluateJavaScript( "var flag=0;" - "if(__gd_StartTree && __gd_StartTree.length) {" - "var __gd_el=this;" - "while(__gd_StartTree.length) {" - "__gd_el=__gd_el.firstChild;" - "var n=__gd_StartTree.pop();" - "if(n<0) __gd_el=this;" - "else for(var i=0;i0) {" - "var __gd_sel=window.getSelection();" - "__gd_sel.removeAllRanges();" - "__gd_sel.addRange(__gd_SelRange);" - "}" - ); - - return word; -} - -#endif - -ResourceToSaveHandler::ResourceToSaveHandler( - ArticleView * view, sptr< Dictionary::DataRequest > req, - QString const & fileName ) : - QObject( view ), - req( req ), - fileName( fileName ) -{ - connect( this, SIGNAL( statusBarMessage( QString, int, QPixmap ) ), - view, SIGNAL( statusBarMessage( QString, int, QPixmap ) ) ); - - // If DataRequest finsihed immediately, call our handler directly - if ( req.get()->isFinished() ) - { - QMetaObject::invokeMethod( this, "downloadFinished", Qt::QueuedConnection ); - } - else - { - connect( req.get(), SIGNAL( finished() ), this, SLOT( downloadFinished() ) ); - } -} - -void ResourceToSaveHandler::downloadFinished() -{ - assert( req && req.get()->isFinished() ); - - QByteArray resourceData; - - if ( req.get()->dataSize() >= 0 ) - { - vector< char > const & data = req.get()->getFullData(); - resourceData = QByteArray( data.data(), data.size() ); - } - - // Write data to file - - if ( !resourceData.isEmpty() && !fileName.isEmpty() ) - { - QFileInfo fileInfo( fileName ); - QDir().mkpath( fileInfo.absoluteDir().absolutePath() ); - - QFile file( fileName ); - if ( file.open( QFile::WriteOnly ) ) - { - file.write( resourceData.data(), resourceData.size() ); - file.close(); - } - - if ( file.error() ) - { - emit statusBarMessage( - tr( "ERROR: %1" ).arg( tr( "Resource saving error: " ) + file.errorString() ), - 10000, QPixmap( ":/icons/error.png" ) ); - } - } - else - { - emit statusBarMessage( - tr( "ERROR: %1" ).arg( tr( "The referenced resource failed to download." ) ), - 10000, QPixmap( ":/icons/error.png" ) ); - } - - emit done(); - deleteLater(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.hh deleted file mode 100644 index 52ea25da8e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.hh +++ /dev/null @@ -1,382 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ARTICLEVIEW_HH_INCLUDED__ -#define __ARTICLEVIEW_HH_INCLUDED__ - -#include -#include -#include -#include -#include "article_netmgr.hh" -#include "instances.hh" -#include "groupcombobox.hh" -#include "ui_articleview.h" - -class ResourceToSaveHandler; - -/// A widget with the web view tailored to view and handle articles -- it -/// uses the appropriate netmgr, handles link clicks, rmb clicks etc -class ArticleView: public QFrame -{ - Q_OBJECT - - ArticleNetworkAccessManager & articleNetMgr; - std::vector< sptr< Dictionary::Class > > const & allDictionaries; - Instances::Groups const & groups; - bool popupView; - Config::Class const & cfg; - - Ui::ArticleView ui; - - QAction pasteAction, articleUpAction, articleDownAction, - goBackAction, goForwardAction, selectCurrentArticleAction, - copyAsTextAction, inspectAction; - QAction & openSearchAction; - bool searchIsOpened; - bool expandOptionalParts; - QString articleToJump; - QString rangeVarName; - - /// Any resource we've decided to download off the dictionary gets stored here. - /// Full vector capacity is used for search requests, where we have to make - /// a multitude of requests. - std::list< sptr< Dictionary::DataRequest > > resourceDownloadRequests; - /// Url of the resourceDownloadRequests - QUrl resourceDownloadUrl; - - /// For resources opened via desktop services - QString desktopOpenedTempFile; - - QAction * dictionaryBarToggled; - GroupComboBox const * groupComboBox; - - /// Search in results of full-text search - QStringList allMatches; - QStringList uniqueMatches; - bool ftsSearchIsOpened, ftsSearchMatchCase; - int ftsPosition; - - void highlightFTSResults(); - void performFtsFindOperation( bool backwards ); - void showFindButtons(); - -public: - /// The popupView flag influences contents of the context menus to be - /// appropriate to the context of the view. - /// The groups aren't copied -- rather than that, the reference is kept - ArticleView( QWidget * parent, - ArticleNetworkAccessManager &, - std::vector< sptr< Dictionary::Class > > const & allDictionaries, - Instances::Groups const &, - bool popupView, - Config::Class const & cfg, - QAction & openSearchAction_, - QAction * dictionaryBarToggled = 0, - GroupComboBox const * groupComboBox = 0 ); - - /// Sets the currently active group combo box. When looking up selections, - /// this allows presenting a choice of looking up in the currently chosen - /// group. Setting this to 0 disables this. It is 0 by default. - void setGroupComboBox( GroupComboBox const * ); - - virtual QSize minimumSizeHint() const; - - ~ArticleView(); - - typedef QMap< QString, QString > Contexts; - - /// Shows the definition of the given word with the given group. - /// scrollTo can be optionally set to a "gdfrom-xxxx" identifier to position - /// the page to that article on load. - /// contexts is an optional map of context values to be passed for dictionaries. - /// The only values to pass here are ones obtained from showDefinitionInNewTab() - /// signal or none at all. - void showDefinition( QString const & word, unsigned group, - QString const & scrollTo = QString(), - Contexts const & contexts = Contexts() ); - - void showDefinition( QString const & word, QStringList const & dictIDs, - QRegExp const & searchRegExp, unsigned group ); - - /// Clears the view and sets the application-global waiting cursor, - /// which will be restored when some article loads eventually. - void showAnticipation(); - - /// Opens the given link. Supposed to be used in response to - /// openLinkInNewTab() signal. The link scheme is therefore supposed to be - /// one of the internal ones. - /// contexts is an optional map of context values to be passed for dictionaries. - /// The only values to pass here are ones obtained from showDefinitionInNewTab() - /// signal or none at all. - void openLink( QUrl const & url, QUrl const & referrer, - QString const & scrollTo = QString(), - Contexts const & contexts = Contexts() ); - - /// Called when the state of dictionary bar changes and the view is active. - /// The function reloads content if the change affects it. - void updateMutedContents(); - - bool canGoBack(); - bool canGoForward(); - - /// Called when preference changes - void setSelectionBySingleClick( bool set ); - -public slots: - - /// Goes back in history - void back(); - - /// Goes forward in history - void forward(); - -public: - - /// Takes the focus to the view - void focus() - { ui.definition->setFocus( Qt::ShortcutFocusReason ); } - - /// Reloads the view - void reload() - { ui.definition->reload(); } - - /// Returns true if there's an audio reference on the page, false otherwise. - bool hasSound(); - - /// Plays the first audio reference on the page, if any. - void playSound(); - - void setZoomFactor( qreal factor ) - { ui.definition->setZoomFactor( factor ); } - - /// Returns current article's text in .html format - QString toHtml(); - - /// Returns current article's title - QString getTitle(); - - /// Prints current article - void print( QPrinter * ) const; - - /// Closes search if it's open and returns true. Returns false if it - /// wasn't open. - bool closeSearch(); - - bool isSearchOpened(); - - /// Jumps to the article specified by the dictionary id, - /// by executing a javascript code. - void jumpToDictionary( QString const &, bool force ); - - /// Returns all articles currently present in view, as a list of dictionary - /// string ids. - QStringList getArticlesList(); - - /// Returns the dictionary id of the currently active article in the view. - QString getActiveArticleId(); - - std::vector< ResourceToSaveHandler * > saveResource( const QUrl & url, const QString & fileName ); - std::vector< ResourceToSaveHandler * > saveResource( const QUrl & url, const QUrl & ref, const QString & fileName ); - -signals: - - void iconChanged( ArticleView *, QIcon const & icon ); - - void titleChanged( ArticleView *, QString const & title ); - - void pageLoaded( ArticleView * ); - - /// Signals that the following link was requested to be opened in new tab - void openLinkInNewTab( QUrl const &, QUrl const & referrer, - QString const & fromArticle, - ArticleView::Contexts const & contexts ); - /// Signals that the following definition was requested to be showed in new tab - void showDefinitionInNewTab( QString const & word, unsigned group, - QString const & fromArticle, - ArticleView::Contexts const & contexts ); - - /// Put translated word into history - void sendWordToHistory( QString const & word ); - - /// Emitted when user types a text key. This should typically be used to - /// switch focus to word input. - void typingEvent( QString const & text ); - - void statusBarMessage( QString const & message, int timeout = 0, QPixmap const & pixmap = QPixmap()); - - /// Signals that the dictionaries pane was requested to be showed - void showDictsPane( ); - - /// Emitted when an article becomes active, - /// typically in response to user actions - /// (clicking on the article or using shortcuts). - /// id - the dictionary id of the active article. - void activeArticleChanged ( ArticleView const *, QString const & id ); - - /// Signal to add word to history even if history is disabled - void forceAddWordToHistory( const QString & word); - - /// Signal to close popup menu - void closePopupMenu(); - - /// Signal to set optional parts expand mode - void setExpandMode ( bool expand ); - - void sendWordToInputLine( QString const & word ); - - void storeResourceSavePath(QString const & ); - - void zoomIn(); - void zoomOut(); - -public slots: - - void on_searchPrevious_clicked(); - void on_searchNext_clicked(); - - void onJsActiveArticleChanged(QString const & id); - - /// Handles F3 and Shift+F3 for search navigation - bool handleF3( QObject * obj, QEvent * ev ); - - /// Control optional parts expanding - void receiveExpandOptionalParts( bool expand ); - void switchExpandOptionalParts(); - - /// Selects an entire text of the current article - void selectCurrentArticle(); - -private slots: - - void loadFinished( bool ok ); - void handleTitleChanged( QString const & title ); - void handleUrlChanged( QUrl const & url ); - void attachToJavaScript(); - void linkClicked( QUrl const & ); - void linkHovered( const QString & link, const QString & title, const QString & textContent ); - void contextMenuRequested( QPoint const & ); - - void resourceDownloadFinished(); - - /// We handle pasting by attempting to define the word in clipboard. - void pasteTriggered(); - - /// Nagivates to the previous article relative to the active one. - void moveOneArticleUp(); - - /// Nagivates to the next article relative to the active one. - void moveOneArticleDown(); - - /// Opens the search area - void openSearch(); - - void on_searchText_textEdited(); - void on_searchText_returnPressed(); - void on_searchCloseButton_clicked(); - void on_searchCaseSensitive_clicked(); - void on_highlightAllButton_clicked(); - - void on_ftsSearchPrevious_clicked(); - void on_ftsSearchNext_clicked(); - - /// Handles the double-click from the definition. - void doubleClicked(); - - /// Handles audio player error message - void audioPlayerError( QString const & message ); - - /// Copy current selection as plain text - void copyAsText(); - - /// Inspect element - void inspect(); - -private: - - /// Deduces group from the url. If there doesn't seem to be any group, - /// returns 0. - unsigned getGroup( QUrl const & ); - - - /// Returns current article in the view, in the form of "gdfrom-xxx" id. - QString getCurrentArticle(); - - /// Sets the current article by executing a javascript code. - /// If moveToIt is true, it moves the focus to it as well. - void setCurrentArticle( QString const &, bool moveToIt = false ); - - /// Checks if the given article in form of "gdfrom-xxx" is inside a "website" - /// frame. - bool isFramedArticle( QString const & ); - - /// Checks if the given link is to be opened externally, as opposed to opening - /// it in-place. - bool isExternalLink( QUrl const & url ); - - /// Sees if the last clicked link is from a website frame. If so, changes url - /// to point to url text translation instead, and saves the original - /// url to the appropriate "contexts" entry. - void tryMangleWebsiteClickedUrl( QUrl & url, Contexts & contexts ); - - /// Use the known information about the current frame to update the current - /// article's value. - void updateCurrentArticleFromCurrentFrame( QWebFrame * frame = 0 ); - - /// Saves current article and scroll position for the current history item. - /// Should be used when leaving the page. - void saveHistoryUserData(); - - /// Attempts removing last temporary file created. - void cleanupTemp(); - - bool eventFilter( QObject * obj, QEvent * ev ); - - void performFindOperation( bool restart, bool backwards, bool checkHighlight = false ); - - void reloadStyleSheet(); - - /// Returns the comma-separated list of dictionary ids which should be muted - /// for the given group. If there are none, returns empty string. - QString getMutedForGroup( unsigned group ); - -protected: - - // We need this to hide the search bar when we're showed - void showEvent( QShowEvent * ); - -#ifdef Q_OS_WIN32 - - /// Search inside web page for word under cursor - -private: - QString insertSpans( QString const & html ); - void readTag( QString const & from, QString & to, int & count ); - QString checkElement( QWebElement & elem, const QPoint & pt ); -public: - QString wordAtPoint( int x, int y ); -#endif - -}; - -class ResourceToSaveHandler: public QObject -{ - Q_OBJECT - -public: - explicit ResourceToSaveHandler( ArticleView * view, sptr< Dictionary::DataRequest > req, - QString const & fileName ); - -signals: - void done(); - void statusBarMessage( QString const & message, int timeout = 0, QPixmap const & pixmap = QPixmap() ); - -private slots: - void downloadFinished(); - -private: - sptr< Dictionary::DataRequest > req; - QString fileName; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.ui deleted file mode 100644 index bfb8b988dc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articleview.ui +++ /dev/null @@ -1,255 +0,0 @@ - - - ArticleView - - - - 0 - 0 - 833 - 634 - - - - Form - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - about:blank - - - - - - - - - - - QFrame::Raised - - - - - - &Previous - - - - :/icons/previous.png:/icons/previous.png - - - Qt::ToolButtonTextBesideIcon - - - - - - - &Next - - - - :/icons/next.png:/icons/next.png - - - Qt::ToolButtonTextBesideIcon - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - - - Find: - - - - - - - - - - x - - - - :/icons/closetab.png:/icons/closetab.png - - - true - - - - - - - - - - - &Previous - - - - :/icons/previous.png:/icons/previous.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - &Next - - - - :/icons/next.png:/icons/next.png - - - Ctrl+G - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - Highlight &all - - - - :/icons/highlighter.png:/icons/highlighter.png - - - true - - - false - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - &Case Sensitive - - - - - - - Qt::Horizontal - - - - 782 - 20 - - - - - - - - - - - - - - ArticleWebView - QWidget -
articlewebview.hh
-
-
- - - - -
diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articlewebview.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/articlewebview.cc deleted file mode 100644 index 8b8cf1498d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articlewebview.cc +++ /dev/null @@ -1,180 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "articlewebview.hh" -#include -#include -#include -#include "articleinspector.hh" - -#ifdef Q_OS_WIN32 -#include -#endif - -ArticleWebView::ArticleWebView( QWidget *parent ): - QWebView( parent ), -#if QT_VERSION >= 0x040600 - inspector( NULL ), -#endif - midButtonPressed( false ), - selectionBySingleClick( false ), - showInspectorDirectly( true ) -{ -} - -ArticleWebView::~ArticleWebView() -{ -#if QT_VERSION >= 0x040600 - if ( inspector ) - inspector->deleteLater(); -#endif -} - -void ArticleWebView::setUp( Config::Class * cfg ) -{ - this->cfg = cfg; -} - -void ArticleWebView::triggerPageAction( QWebPage::WebAction action, bool checked ) -{ -#if QT_VERSION >= 0x040600 - if ( action == QWebPage::InspectElement ) - { - // Get or create inspector instance for current view. - if ( !inspector ) - { - inspector = new ArticleInspector( cfg ); - inspector->setPage( page() ); - connect( this, SIGNAL( destroyed() ), inspector, SLOT( beforeClosed() ) ); - } - - if ( showInspectorDirectly ) - { - showInspectorDirectly = false; - // Bring up the inspector window and set focus - inspector->show(); - inspector->activateWindow(); - inspector->raise(); - return; - } - } -#endif - - QWebView::triggerPageAction( action, checked ); -} - -bool ArticleWebView::event( QEvent * event ) -{ - switch ( event->type() ) - { - case QEvent::MouseButtonRelease: - case QEvent::MouseButtonDblClick: - showInspectorDirectly = true; - break; - - case QEvent::ContextMenu: - showInspectorDirectly = false; - break; - - default: - break; - } - - return QWebView::event( event ); -} - -void ArticleWebView::mousePressEvent( QMouseEvent * event ) -{ - if ( event->buttons() & Qt::MidButton ) - midButtonPressed = true; - - QWebView::mousePressEvent( event ); - - if ( selectionBySingleClick && ( event->buttons() & Qt::LeftButton ) ) - { - findText(""); // clear the selection first, if any - QMouseEvent ev( QEvent::MouseButtonDblClick, event->pos(), Qt::LeftButton, Qt::LeftButton, event->modifiers() ); - QApplication::sendEvent( page(), &ev ); - } -} - -void ArticleWebView::mouseReleaseEvent( QMouseEvent * event ) -{ - bool noMidButton = !( event->buttons() & Qt::MidButton ); - - QWebView::mouseReleaseEvent( event ); - - if ( midButtonPressed & noMidButton ) - midButtonPressed = false; -} - -void ArticleWebView::mouseDoubleClickEvent( QMouseEvent * event ) -{ - QWebView::mouseDoubleClickEvent( event ); -#if QT_VERSION >= 0x040600 - int scrollBarWidth = page()->mainFrame()->scrollBarGeometry( Qt::Vertical ).width(); - int scrollBarHeight = page()->mainFrame()->scrollBarGeometry( Qt::Horizontal ).height(); -#else - int scrollBarWidth = 0; - int scrollBarHeight = 0; -#endif - - // emit the signal only if we are not double-clicking on scrollbars - if ( ( event->x() < width() - scrollBarWidth ) && - ( event->y() < height() - scrollBarHeight ) ) - { - emit doubleClicked(); - } - -} - -void ArticleWebView::focusInEvent( QFocusEvent * event ) -{ - QWebView::focusInEvent( event ); - - switch( event->reason() ) - { - case Qt::MouseFocusReason: - case Qt::TabFocusReason: - case Qt::BacktabFocusReason: - page()->mainFrame()->evaluateJavaScript("top.focus();"); - break; - - default: - break; - } -} - -void ArticleWebView::wheelEvent( QWheelEvent *ev ) -{ -#ifdef Q_OS_WIN32 - - // Avoid wrong mouse wheel handling in QWebView - // if system preferences is set to "scroll by page" - - if( ev->modifiers() == Qt::NoModifier ) - { - unsigned nLines; - SystemParametersInfo( SPI_GETWHEELSCROLLLINES, 0, &nLines, 0 ); - if( nLines == WHEEL_PAGESCROLL ) - { - QKeyEvent kev( QEvent::KeyPress, ev->delta() > 0 ? Qt::Key_PageUp : Qt::Key_PageDown, - Qt::NoModifier ); - QApplication::sendEvent( this, &kev ); - - ev->accept(); - return; - } - } -#endif - - if ( ev->modifiers().testFlag( Qt::ControlModifier ) ) - { - ev->ignore(); - } - else - { - QWebView::wheelEvent( ev ); - } - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articlewebview.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/articlewebview.hh deleted file mode 100644 index 54499a7a96..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/articlewebview.hh +++ /dev/null @@ -1,65 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ARTICLEWEBVIEW_HH_INCLUDED__ -#define __ARTICLEWEBVIEW_HH_INCLUDED__ - -#include -#include "config.hh" - -class ArticleInspector; - -/// A thin wrapper around QWebView to accomodate to some ArticleView's needs. -/// Currently the only added features: -/// 1. Ability to know if the middle mouse button is pressed or not according -/// to the view's current state. This is used to open links in new tabs when -/// they are clicked with middle button. There's also an added posibility to -/// get double-click events after the fact with the doubleClicked() signal. -/// 2. Manage our own QWebInspector instance. In order to show inspector correctly, -/// use triggerPageAction( QWebPage::InspectElement ) instead. -class ArticleWebView: public QWebView -{ - Q_OBJECT - -public: - - ArticleWebView( QWidget * parent ); - ~ArticleWebView(); - - void setUp( Config::Class * cfg ); - - bool isMidButtonPressed() const - { return midButtonPressed; } - void setSelectionBySingleClick( bool set ) - { selectionBySingleClick = set; } - - void triggerPageAction( QWebPage::WebAction action, bool checked = false ); - -signals: - - /// Signals that the user has just double-clicked. The signal is delivered - /// after the event was processed by the view -- that's the difference from - /// installing an event filter. This is used for translating the double-clicked - /// word, which gets selected by the view in response to double-click. - void doubleClicked(); - -protected: - - bool event( QEvent * event ); - void mousePressEvent( QMouseEvent * event ); - void mouseReleaseEvent( QMouseEvent * event ); - void mouseDoubleClickEvent( QMouseEvent * event ); - void focusInEvent( QFocusEvent * event ); - void wheelEvent( QWheelEvent * event ); - -private: - - Config::Class * cfg; - ArticleInspector * inspector; - - bool midButtonPressed; - bool selectionBySingleClick; - bool showInspectorDirectly; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/atomic_rename.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/atomic_rename.cc deleted file mode 100644 index 1d6b10706d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/atomic_rename.cc +++ /dev/null @@ -1,42 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "atomic_rename.hh" -#include -#include -#include // for wchar_t -#include -#include - -#ifdef Q_OS_WIN32 -#include -#endif - -#include - - -bool renameAtomically( QString const & oldName, QString const & newName ) -{ -#ifdef Q_OS_WIN32 - - QString srcFile( QDir::toNativeSeparators( oldName ) ); - QVector< wchar_t > srcFileW( srcFile.size() + 1 ); - srcFileW[ srcFile.toWCharArray( srcFileW.data() ) ] = 0; - - QString destFile( QDir::toNativeSeparators( newName ) ); - QVector< wchar_t > destFileW( destFile.size() + 1 ); - destFileW[ destFile.toWCharArray( destFileW.data() ) ] = 0; - - if ( !MoveFileExW( srcFileW.data(), destFileW.data(), MOVEFILE_REPLACE_EXISTING ) ) - return false; - -#else - - if ( rename( QFile::encodeName( QDir::toNativeSeparators( oldName ) ).data(), - QFile::encodeName( QDir::toNativeSeparators( newName ) ).data() ) ) - return false; - -#endif - - return true; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/atomic_rename.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/atomic_rename.hh deleted file mode 100644 index 4d28c568c6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/atomic_rename.hh +++ /dev/null @@ -1,14 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ATOMIC_RENAME_HH_INCLUDED__ -#define __ATOMIC_RENAME_HH_INCLUDED__ - -#include - -/// Performs an atomic rename of file, from oldBame to newName. If newName -/// exists, it gets overwritten. Names should feature Qt-style separators -/// (straight slashes). Returns true on success, false on failure. -bool renameAtomically( QString const & oldName, QString const & newName ); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/audiolink.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/audiolink.cc deleted file mode 100644 index 480d41beca..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/audiolink.cc +++ /dev/null @@ -1,39 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "audiolink.hh" - -std::string addAudioLink( std::string const & url, - std::string const & dictionaryId ) -{ - return std::string( "" ); -} - -std::string makeAudioLinkScript( std::string const & url, - std::string const & dictionaryId ) -{ - /// Convert "'" to "\'" - this char broke autoplay of audiolinks - - std::string ref; - bool escaped = false; - for( unsigned x = 0; x < url.size(); x++ ) - { - char ch = url[ x ]; - if( escaped ) - { - ref += ch; - escaped = false; - continue; - } - if( ch == '\'' ) - ref += '\\'; - ref += ch; - escaped = ( ch == '\\' ); - } - - std::string audioLinkForDict = "gdAudioLinks['" + dictionaryId + "']"; - return "gdAudioLinks.first = gdAudioLinks.first || " + ref + ";" + - audioLinkForDict + " = " + audioLinkForDict + " || " + ref + ";"; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/audiolink.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/audiolink.hh deleted file mode 100644 index 51f673b453..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/audiolink.hh +++ /dev/null @@ -1,21 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __AUDIOLINK_HH_INCLUDED__ -#define __AUDIOLINK_HH_INCLUDED__ - - -#include - -/// Adds a piece of javascript to save the given audiolink to a special -/// javascript variable. Embed this into article's html to enable the -/// 'say sound' functionality. -/// The url should be escaped and surrounded by quotes. -/// The dictionary id is used to make active dictionary feature work. -std::string addAudioLink( std::string const & url, - std::string const & dictionaryId ); - -std::string makeAudioLinkScript( std::string const & url, - std::string const & dictionaryId ); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/authentication.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/authentication.ui deleted file mode 100644 index 9fcdca5d6f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/authentication.ui +++ /dev/null @@ -1,111 +0,0 @@ - - - Dialog - - - - 0 - 0 - 389 - 120 - - - - Proxy authentication required - - - - - - You need to supply a Username and a Password to access via proxy - - - false - - - - - - - Username: - - - - - - - - - - Password: - - - - - - - QLineEdit::Password - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - buttonBox - accepted() - Dialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - Dialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/belarusiantranslit.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/belarusiantranslit.cc deleted file mode 100644 index be18245daa..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/belarusiantranslit.cc +++ /dev/null @@ -1,429 +0,0 @@ -/* This file is (c) 2013 Maksim Tamkovicz - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "belarusiantranslit.hh" -#include "transliteration.hh" -#include - -namespace BelarusianTranslit { - -class BelarusianLatinToClassicTable: public Transliteration::Table -{ -public: - BelarusianLatinToClassicTable() - { - // Utf8ins() - - // latin to cyrillic - ins( "a", "а" ); - ins( "b", "б" ); - ins( "c", "ц" ); - ins( "ć", "ць" ); - ins( "č", "ч" ); - ins( "cz", "ч" ); - ins( "d", "д" ); - ins( "e", "э" ); - ins( "f", "ф" ); - ins( "g", "ґ" ); - ins( "h", "г" ); - ins( "i", "і" ); - ins( "j", "й" ); - ins( "k", "к" ); - ins( "l", "ль" ); - ins( "ł", "л" ); - ins( "m", "м" ); - ins( "n", "н" ); - ins( "ń", "нь" ); - ins( "o", "о" ); - ins( "p", "п" ); - ins( "r", "р" ); - ins( "s", "с" ); - ins( "ś", "сь" ); - ins( "š", "ш" ); - ins( "sz", "ш" ); - ins( "t", "т" ); - ins( "u", "у" ); - ins( "ŭ", "ў" ); - ins( "v", "в" ); - ins( "w", "в" ); - ins( "y", "ы" ); - ins( "z", "з" ); - ins( "ź", "зь" ); - ins( "ž", "ж" ); - ins( "ż", "ж" ); - ins( "ch", "х" ); - - ins( "ja", "я" ); ins( "je", "е" ); ins( "jo", "ё" ); ins( "ju", "ю" ); - ins( "la", "ля" ); ins( "le", "ле" ); ins( "lo", "лё" ); ins( "lu", "лю" ); ins( "li", "лі" ); - - ins( "bia", "бя" ); ins( "bie", "бе" ); ins( "bio", "бё" ); ins( "biu", "бю" ); - ins( "cia", "ця" ); ins( "cie", "це" ); ins( "cio", "цё" ); ins( "ciu", "цю" ); - ins( "dzia","дзя" ); ins( "dzie","дзе" ); ins( "dzio","дзё" ); ins( "dziu","дзю" ); - ins( "fia", "фя" ); ins( "fie", "фе" ); ins( "fio", "фё" ); ins( "fiu", "фю" ); - ins( "gia", "ґя" ); ins( "gie", "ґе" ); ins( "gio", "ґё" ); ins( "giu", "ґю" ); - ins( "hia", "гя" ); ins( "hie", "ге" ); ins( "hio", "гё" ); ins( "hiu", "гю" ); - ins( "kia", "кя" ); ins( "kie", "ке" ); ins( "kio", "кё" ); ins( "kiu", "кю" ); - ins( "lia", "ліa" ); ins( "lie", "ліэ" ); ins( "lio", "ліо" ); ins( "liu", "ліу" ); - ins( "mia", "мя" ); ins( "mie", "ме" ); ins( "mio", "мё" ); ins( "miu", "мю" ); - ins( "nia", "ня" ); ins( "nie", "не" ); ins( "nio", "нё" ); ins( "niu", "ню" ); - ins( "pia", "пя" ); ins( "pie", "пе" ); ins( "pio", "пё" ); ins( "piu", "пю" ); - ins( "sia", "ся" ); ins( "sie", "се" ); ins( "sio", "сё" ); ins( "siu", "сю" ); - ins( "via", "вя" ); ins( "vie", "ве" ); ins( "vio", "вё" ); ins( "viu", "вю" ); - ins( "wia", "вя" ); ins( "wie", "ве" ); ins( "wio", "вё" ); ins( "wiu", "вю" ); - ins( "zia", "зя" ); ins( "zie", "зе" ); ins( "zio", "зё" ); ins( "ziu", "зю" ); - ins( "chia", "хя" ); ins( "chie", "хе" ); ins( "chio", "хё" ); ins( "chiu", "хю" ); - - ins( "bja", "б'я" ); ins( "bje", "б'е" ); ins( "bjo", "б'ё" ); ins( "bju", "б'ю" ); - ins( "cia", "ц'я" ); ins( "cje", "ц'е" ); ins( "cjo", "ц'ё" ); ins( "cju", "ц'ю" ); - ins( "fja", "ф'я" ); ins( "fje", "ф'е" ); ins( "fjo", "ф'ё" ); ins( "fju", "ф'ю" ); - ins( "hja", "г'я" ); ins( "hje", "г'е" ); ins( "hjo", "г'ё" ); ins( "hju", "г'ю" ); - ins( "kja", "к'я" ); ins( "kje", "к'е" ); ins( "kjo", "к'ё" ); ins( "kju", "к'ю" ); - ins( "łja", "л'я" ); ins( "łje", "л'е" ); ins( "łjo", "л'ё" ); ins( "łju", "л'ю" ); - ins( "mja", "м'я" ); ins( "mje", "м'е" ); ins( "mjo", "м'ё" ); ins( "mju", "м'ю" ); - ins( "nja", "н'я" ); ins( "nje", "н'е" ); ins( "njo", "н'ё" ); ins( "nju", "н'ю" ); - ins( "pja", "п'я" ); ins( "pje", "п'е" ); ins( "pjo", "п'ё" ); ins( "pju", "п'ю" ); - ins( "sja", "с'я" ); ins( "sje", "с'е" ); ins( "sjo", "с'ё" ); ins( "sju", "с'ю" ); - ins( "vja", "в'я" ); ins( "vje", "в'е" ); ins( "vjo", "в'ё" ); ins( "vju", "в'ю" ); - ins( "wja", "в'я" ); ins( "wje", "в'е" ); ins( "wjo", "в'ё" ); ins( "wju", "в'ю" ); - ins( "zja", "з'я" ); ins( "zje", "з'е" ); ins( "zjo", "з'ё" ); ins( "zju", "з'ю" ); - ins( "chja", "х'я" ); ins( "chje", "х'е" ); ins( "chjo", "х'ё" ); ins( "chju", "х'ю" ); - - ins( "nnia", "ньня" ); ins( "nnie", "ньне" ); ins( "nnio", "ньнё" ); ins( "nniu", "ньню" );ins( "nni", "ньні" ); - - // cyrillic to latin - ins( "а", "a" ); ins( "б", "b" ); ins( "в", "v" ); ins( "г", "h" ); - ins( "ґ", "g" ); ins( "д", "d" ); ins( "е", "je" ); ins( "ё", "jo" ); - ins( "ж", "ž" ); ins( "з", "z" ); ins( "і", "i" ); ins( "ї", "ï" ); - ins( "й", "j" ); ins( "к", "k" ); ins( "л", "ł" ); ins( "м", "m" ); - ins( "н", "n" ); ins( "о", "o" ); ins( "п", "p" ); ins( "р", "r" ); - ins( "с", "s" ); ins( "т", "t" ); ins( "у", "u" ); ins( "ў", "ŭ" ); - ins( "ф", "f" ); ins( "х", "ch" ); ins( "ц", "c" ); ins( "ч", "č" ); - ins( "ш", "š" ); ins( "ы", "y" ); ins( "э", "e" ); ins( "ю", "ju" ); - ins( "я", "ja" ); ins( "кг", "g" ); - ins( "бе", "bie" ); ins( "бё", "bio" ); ins( "бю", "biu" ); ins( "бя", "bia" ); - ins( "ве", "vie" ); ins( "вё", "vio" ); ins( "вю", "viu" ); ins( "вя", "via" ); - ins( "ге", "hie" ); ins( "гё", "hio" ); ins( "гю", "hiu" ); ins( "гя", "hia" ); - ins( "ґе", "gie" ); ins( "ґё", "gio" ); ins( "ґю", "giu" ); ins( "ґя", "gia" ); - ins( "кге", "gie" ); ins( "кгё", "gio" ); ins( "кгю", "giu" ); ins( "кгя", "gia" ); - ins( "зе", "zie" ); ins( "зё", "zio" ); ins( "зю", "ziu" ); ins( "зя", "zia" ); ins( "зь", "ź" ); - ins( "ке", "kie" ); ins( "кё", "kio" ); ins( "кю", "kiu" ); ins( "кя", "kia" ); - ins( "ле", "le" ); ins( "лё", "lo" ); ins( "лю", "lu" ); ins( "ля", "la" ); ins( "ль", "l" ); ins( "лі", "li" ); - ins( "ме", "mie" ); ins( "мё", "mio" ); ins( "мю", "miu" ); ins( "мя", "mia" ); ins( "мь", "m" ); - ins( "не", "nie" ); ins( "нё", "nio" ); ins( "ню", "niu" ); ins( "ня", "nia" ); ins( "нь", "ń" ); - ins( "пе", "pie" ); ins( "пё", "pio" ); ins( "пю", "piu" ); ins( "пя", "pia" ); ins( "пь", "p" ); - ins( "се", "sie" ); ins( "сё", "sio" ); ins( "сю", "siu" ); ins( "ся", "sia" ); ins( "сь", "ś" ); - ins( "фе", "fie" ); ins( "фё", "fio" ); ins( "фю", "fiu" ); ins( "фя", "fia" ); ins( "фь", "f" ); - ins( "хе", "chie" ); ins( "хё", "chio" ); ins( "хю", "chiu" ); ins( "хя", "chia" ); - ins( "це", "cie" ); ins( "цё", "cio" ); ins( "цю", "ciu" ); ins( "ця", "cia" ); ins( "ць", "ć" ); - ins( "бʼ", "b" ); ins( "б'", "b" ); ins( "б’", "b" ); - ins( "вʼ", "v" ); ins( "в'", "v" ); ins( "в’", "v" ); - ins( "гʼ", "h" ); ins( "г'", "h" ); ins( "г’", "h" ); - ins( "ґʼ", "g" ); ins( "ґ'", "g" ); ins( "ґ’", "g" ); - ins( "дʼ", "d" ); ins( "д'", "d" ); ins( "д’", "d" ); - ins( "жʼ", "ž" ); ins( "ж'", "ž" ); ins( "ж’", "ž" ); - ins( "зʼ", "z" ); ins( "з'", "z" ); ins( "з’", "z" ); - ins( "кʼ", "k" ); ins( "к'", "k" ); ins( "к’", "k" ); - ins( "лʼ", "ł" ); ins( "л'", "ł" ); ins( "л’", "ł" ); - ins( "мʼ", "m" ); ins( "м'", "m" ); ins( "м’", "m" ); - ins( "нʼ", "n" ); ins( "н'", "n" ); ins( "н’", "n" ); - ins( "пʼ", "p" ); ins( "п'", "p" ); ins( "п’", "p" ); - ins( "рʼ", "r" ); ins( "р'", "r" ); ins( "р’", "r" ); - ins( "сʼ", "s" ); ins( "с'", "s" ); ins( "с’", "s" ); - ins( "тʼ", "t" ); ins( "т'", "t" ); ins( "т’", "t" ); - ins( "фʼ", "f" ); ins( "ф'", "f" ); ins( "ф’", "f" ); - ins( "хʼ", "ch" ); ins( "х'", "ch" ); ins( "х’", "ch" ); - ins( "цʼ", "c" ); ins( "ц'", "c" ); ins( "ц’", "c" ); - ins( "чʼ", "č" ); ins( "ч'", "č" ); ins( "ч’", "č" ); - ins( "шʼ", "š" ); ins( "ш'", "š" ); ins( "ш’", "š" ); - } -}; - -class BelarusianLatinToSchoolTable: public Transliteration::Table -{ -public: - BelarusianLatinToSchoolTable() - { - // Utf8ins() - - // latin to cyrillic - ins( "a", "а" ); - ins( "b", "б" ); - ins( "c", "ц" ); - ins( "ć", "ць" ); - ins( "č", "ч" ); - ins( "cz", "ч" ); - ins( "d", "д" ); - ins( "e", "э" ); - ins( "f", "ф" ); - ins( "g", "г" ); - ins( "h", "г" ); - ins( "i", "і" ); - ins( "j", "й" ); - ins( "k", "к" ); - ins( "l", "ль" ); - ins( "ł", "л" ); - ins( "m", "м" ); - ins( "n", "н" ); - ins( "ń", "нь" ); - ins( "o", "о" ); - ins( "p", "п" ); - ins( "r", "р" ); - ins( "s", "с" ); - ins( "ś", "сь" ); - ins( "š", "ш" ); - ins( "sz", "ш" ); - ins( "t", "т" ); - ins( "u", "у" ); - ins( "ŭ", "ў" ); - ins( "v", "в" ); - ins( "w", "в" ); - ins( "y", "ы" ); - ins( "z", "з" ); - ins( "ź", "зь" ); - ins( "ž", "ж" ); - ins( "ż", "ж" ); - ins( "ch", "х" ); - - ins( "ja", "я" ); ins( "je", "е" ); ins( "jo", "ё" ); ins( "ju", "ю" ); - ins( "la", "ля" ); ins( "le", "ле" ); ins( "lo", "лё" ); ins( "lu", "лю" ); ins( "li", "лі" ); - - ins( "bia", "бя" ); ins( "bie", "бе" ); ins( "bio", "бё" ); ins( "biu", "бю" ); - ins( "cia", "ця" ); ins( "cie", "це" ); ins( "cio", "цё" ); ins( "ciu", "цю" ); - ins( "dzia","дзя" ); ins( "dzie","дзе" ); ins( "dzio","дзё" ); ins( "dziu","дзю" ); - ins( "fia", "фя" ); ins( "fie", "фе" ); ins( "fio", "фё" ); ins( "fiu", "фю" ); - ins( "gia", "гя" ); ins( "gie", "ге" ); ins( "gio", "гё" ); ins( "giu", "гю" ); - ins( "hia", "гя" ); ins( "hie", "ге" ); ins( "hio", "гё" ); ins( "hiu", "гю" ); - ins( "kia", "кя" ); ins( "kie", "ке" ); ins( "kio", "кё" ); ins( "kiu", "кю" ); - ins( "lia", "ліa" ); ins( "lie", "ліэ" ); ins( "lio", "ліо" ); ins( "liu", "ліу" ); - ins( "mia", "мя" ); ins( "mie", "ме" ); ins( "mio", "мё" ); ins( "miu", "мю" ); - ins( "nia", "ня" ); ins( "nie", "не" ); ins( "nio", "нё" ); ins( "niu", "ню" ); - ins( "pia", "пя" ); ins( "pie", "пе" ); ins( "pio", "пё" ); ins( "piu", "пю" ); - ins( "sia", "ся" ); ins( "sie", "се" ); ins( "sio", "сё" ); ins( "siu", "сю" ); - ins( "via", "вя" ); ins( "vie", "ве" ); ins( "vio", "вё" ); ins( "viu", "вю" ); - ins( "wia", "вя" ); ins( "wie", "ве" ); ins( "wio", "вё" ); ins( "wiu", "вю" ); - ins( "zia", "зя" ); ins( "zie", "зе" ); ins( "zio", "зё" ); ins( "ziu", "зю" ); - ins( "chia", "хя" ); ins( "chie", "хе" ); ins( "chio", "хё" ); ins( "chiu", "хю" ); - - ins( "bja", "б'я" ); ins( "bje", "б'е" ); ins( "bjo", "б'ё" ); ins( "bju", "б'ю" ); - ins( "cia", "ц'я" ); ins( "cje", "ц'е" ); ins( "cjo", "ц'ё" ); ins( "cju", "ц'ю" ); - ins( "fja", "ф'я" ); ins( "fje", "ф'е" ); ins( "fjo", "ф'ё" ); ins( "fju", "ф'ю" ); - ins( "hja", "г'я" ); ins( "hje", "г'е" ); ins( "hjo", "г'ё" ); ins( "hju", "г'ю" ); - ins( "kja", "к'я" ); ins( "kje", "к'е" ); ins( "kjo", "к'ё" ); ins( "kju", "к'ю" ); - ins( "łja", "л'я" ); ins( "łje", "л'е" ); ins( "łjo", "л'ё" ); ins( "łju", "л'ю" ); - ins( "mja", "м'я" ); ins( "mje", "м'е" ); ins( "mjo", "м'ё" ); ins( "mju", "м'ю" ); - ins( "nja", "н'я" ); ins( "nje", "н'е" ); ins( "njo", "н'ё" ); ins( "nju", "н'ю" ); - ins( "pja", "п'я" ); ins( "pje", "п'е" ); ins( "pjo", "п'ё" ); ins( "pju", "п'ю" ); - ins( "sja", "с'я" ); ins( "sje", "с'е" ); ins( "sjo", "с'ё" ); ins( "sju", "с'ю" ); - ins( "vja", "в'я" ); ins( "vje", "в'е" ); ins( "vjo", "в'ё" ); ins( "vju", "в'ю" ); - ins( "wja", "в'я" ); ins( "wje", "в'е" ); ins( "wjo", "в'ё" ); ins( "wju", "в'ю" ); - ins( "zja", "з'я" ); ins( "zje", "з'е" ); ins( "zjo", "з'ё" ); ins( "zju", "з'ю" ); - ins( "źja", "з'я" ); ins( "źje", "з'е" ); ins( "źjo", "з'ё" ); ins( "źju", "з'ю" ); - ins( "chja", "х'я" ); ins( "chje", "х'е" ); ins( "chjo", "х'ё" ); ins( "chju", "х'ю" ); - - ins( "śbia", "сбя" ); ins( "śbie", "сбе" ); ins( "śbio", "сбё" ); ins( "śbiu", "сбю" ); ins( "śbi", "сбі" ); - ins( "ścia", "сця" ); ins( "ście", "сце" ); ins( "ścio", "сцё" ); ins( "ściu", "сцю" ); ins( "ści", "сці" ); ins( "ść", "сць" ); - ins( "śdzia","сдзя" ); ins( "śdzie","сдзе" ); ins( "śdzio","сдзё" ); ins( "śdziu","сдзю" ); ins( "śdzi","сдзі" ); ins( "śdź","сдзь" ); - ins( "śfia", "сфя" ); ins( "śfie", "сфе" ); ins( "śfio", "сфё" ); ins( "śfiu", "сфю" ); ins( "śfi", "сфі" ); - ins( "ślia", "сліa" ); ins( "ślie", "сліэ" ); ins( "ślio", "сліо" ); ins( "śliu", "сліу" ); ins( "śli", "слі" ); ins( "śl", "сль" ); - ins( "śmia", "смя" ); ins( "śmie", "сме" ); ins( "śmio", "смё" ); ins( "śmiu", "смю" ); ins( "śmi", "смі" ); - ins( "śnia", "сня" ); ins( "śnie", "сне" ); ins( "śnio", "снё" ); ins( "śniu", "сню" ); ins( "śni", "сні" ); ins( "śń", "снь" ); - ins( "śpia", "спя" ); ins( "śpie", "спе" ); ins( "śpio", "спё" ); ins( "śpiu", "спю" ); ins( "śpi", "спі" ); - ins( "śsia", "сся" ); ins( "śsie", "ссе" ); ins( "śsio", "ссё" ); ins( "śsiu", "ссю" ); ins( "śsi", "ссі" ); - ins( "śvia", "свя" ); ins( "śvie", "све" ); ins( "śvio", "свё" ); ins( "śviu", "свю" ); ins( "śvi", "сві" ); - ins( "świa", "свя" ); ins( "świe", "све" ); ins( "świo", "свё" ); ins( "świu", "свю" ); ins( "świ", "сві" ); - ins( "śzia", "сзя" ); ins( "śzie", "сзе" ); ins( "śzio", "сзё" ); ins( "śziu", "сзю" ); ins( "śzi", "сзі" ); ins( "śź", "сзь" ); - - ins( "ćbia", "цбя" ); ins( "ćbie", "цбе" ); ins( "ćbio", "цбё" ); ins( "ćbiu", "цбю" ); ins( "ćbi", "цбі" ); - ins( "ćcia", "цця" ); ins( "ćcie", "цце" ); ins( "ćcio", "ццё" ); ins( "ćciu", "ццю" ); ins( "ćci", "цці" ); - ins( "ćdzia","цдзя" ); ins( "ćdzie","цдзе" ); ins( "ćdzio","цдзё" ); ins( "ćdziu","цдзю" ); ins( "ćdzi","цдзі" ); - ins( "ćfia", "цфя" ); ins( "ćfie", "цфе" ); ins( "ćfio", "цфё" ); ins( "ćfiu", "цфю" ); ins( "ćfi", "цфі" ); - ins( "ćlia", "цліa" ); ins( "ćlie", "цліэ" ); ins( "ćlio", "цліо" ); ins( "ćliu", "цліу" ); ins( "ćli", "цлі" ); ins( "ćl", "цль" ); - ins( "ćmia", "цмя" ); ins( "ćmie", "цме" ); ins( "ćmio", "цмё" ); ins( "ćmiu", "цмю" ); ins( "ćmi", "цмі" ); - ins( "ćnia", "цня" ); ins( "ćnie", "цне" ); ins( "ćnio", "цнё" ); ins( "ćniu", "цню" ); ins( "ćni", "цні" ); ins( "ćń", "цнь" ); - ins( "ćpia", "цпя" ); ins( "ćpie", "цпе" ); ins( "ćpio", "цпё" ); ins( "ćpiu", "цпю" ); ins( "ćpi", "цпі" ); - ins( "ćsia", "цся" ); ins( "ćsie", "цсе" ); ins( "ćsio", "цсё" ); ins( "ćsiu", "цсю" ); ins( "ćsi", "цсі" ); ins( "ćś", "цсь" ); - ins( "ćvia", "цвя" ); ins( "ćvie", "цве" ); ins( "ćvio", "цвё" ); ins( "ćviu", "цвю" ); ins( "ćvi", "цві" ); - ins( "ćwia", "цвя" ); ins( "ćwie", "цве" ); ins( "ćwio", "цвё" ); ins( "ćwiu", "цвю" ); ins( "ćwi", "цві" ); - ins( "ćzia", "цзя" ); ins( "ćzie", "цзе" ); ins( "ćzio", "цзё" ); ins( "ćziu", "цзю" ); ins( "ćzi", "цзі" ); ins( "ćź", "цзь" ); - - ins( "źbia", "збя" ); ins( "źbie", "збе" ); ins( "źbio", "збё" ); ins( "źbiu", "збю" ); ins( "źbi", "збі" ); - ins( "źcia", "зця" ); ins( "źcie", "зце" ); ins( "źcio", "зцё" ); ins( "źciu", "зцю" ); ins( "źci", "зці" ); ins( "źć", "зць" ); - ins( "ździa","здзя" ); ins( "ździe","здзе" ); ins( "ździo","здзё" ); ins( "ździu","здзю" ); ins( "ździ","здзі" ); ins( "źdź","здзь" ); - ins( "źfia", "зфя" ); ins( "źfie", "зфе" ); ins( "źfio", "зфё" ); ins( "źfiu", "зфю" ); ins( "źfi", "зфі" ); - ins( "źlia", "зліa" ); ins( "źlie", "зліэ" ); ins( "źlio", "зліо" ); ins( "źliu", "зліу" ); ins( "źli", "злі" ); ins( "źl", "зль" ); - ins( "źmia", "змя" ); ins( "źmie", "зме" ); ins( "źmio", "змё" ); ins( "źmiu", "змю" ); ins( "źmi", "змі" ); - ins( "źnia", "зня" ); ins( "źnie", "зне" ); ins( "źnio", "знё" ); ins( "źniu", "зню" ); ins( "źni", "зні" ); - ins( "źpia", "зпя" ); ins( "źpie", "зпе" ); ins( "źpio", "зпё" ); ins( "źpiu", "зпю" ); ins( "źpi", "зпі" ); - ins( "źsia", "зся" ); ins( "źsie", "зсе" ); ins( "źsio", "зсё" ); ins( "źsiu", "зсю" ); ins( "źsi", "зсі" ); - ins( "źvia", "звя" ); ins( "źvie", "зве" ); ins( "źvio", "звё" ); ins( "źviu", "звю" ); ins( "źvi", "зві" ); - ins( "źwia", "звя" ); ins( "źwie", "зве" ); ins( "źwio", "звё" ); ins( "źwiu", "звю" ); ins( "źwi", "зві" ); - ins( "źzia", "ззя" ); ins( "źzie", "ззе" ); ins( "źzio", "ззё" ); ins( "źziu", "ззю" ); ins( "źzi", "ззі" ); - - ins( "ńnia", "ння" ); ins( "ńnie", "нне" ); ins( "ńnio", "ннё" ); ins( "ńniu", "нню" ); ins( "ńni", "нні" ); - ins( "dździa", "ддзя" ); ins( "dździe", "ддзе" ); ins( "dździo", "ддзё" ); ins( "dździu", "ддзю" ); ins( "dździ", "ддзі" ); - - // cyrillic to latin - ins( "а", "a" ); ins( "б", "b" ); ins( "в", "v" ); ins( "г", "h" ); - ins( "ґ", "g" ); ins( "д", "d" ); ins( "е", "je" ); ins( "ё", "jo" ); - ins( "ж", "ž" ); ins( "з", "z" ); ins( "і", "i" ); ins( "ї", "ï" ); - ins( "й", "j" ); ins( "к", "k" ); ins( "л", "ł" ); ins( "м", "m" ); - ins( "н", "n" ); ins( "о", "o" ); ins( "п", "p" ); ins( "р", "r" ); - ins( "с", "s" ); ins( "т", "t" ); ins( "у", "u" ); ins( "ў", "ŭ" ); - ins( "ф", "f" ); ins( "х", "ch" ); ins( "ц", "c" ); ins( "ч", "č" ); - ins( "ш", "š" ); ins( "ы", "y" ); ins( "э", "e" ); ins( "ю", "ju" ); - ins( "я", "ja" ); ins( "кг", "g" ); - ins( "бе", "bie" ); ins( "бё", "bio" ); ins( "бю", "biu" ); ins( "бя", "bia" ); - ins( "ве", "vie" ); ins( "вё", "vio" ); ins( "вю", "viu" ); ins( "вя", "via" ); - ins( "ге", "hie" ); ins( "гё", "hio" ); ins( "гю", "hiu" ); ins( "гя", "hia" ); - ins( "ґе", "gie" ); ins( "ґё", "gio" ); ins( "ґю", "giu" ); ins( "ґя", "gia" ); - ins( "кге", "gie" ); ins( "кгё", "gio" ); ins( "кгю", "giu" ); ins( "кгя", "gia" ); - ins( "зе", "zie" ); ins( "зё", "zio" ); ins( "зю", "ziu" ); ins( "зя", "zia" ); ins( "зь", "ź" ); - ins( "ке", "kie" ); ins( "кё", "kio" ); ins( "кю", "kiu" ); ins( "кя", "kia" ); - ins( "ле", "le" ); ins( "лё", "lo" ); ins( "лю", "lu" ); ins( "ля", "la" ); ins( "ль", "l" ); ins( "лі", "li" ); - ins( "ме", "mie" ); ins( "мё", "mio" ); ins( "мю", "miu" ); ins( "мя", "mia" ); ins( "мь", "m" ); - ins( "не", "nie" ); ins( "нё", "nio" ); ins( "ню", "niu" ); ins( "ня", "nia" ); ins( "нь", "ń" ); - ins( "пе", "pie" ); ins( "пё", "pio" ); ins( "пю", "piu" ); ins( "пя", "pia" ); ins( "пь", "p" ); - ins( "се", "sie" ); ins( "сё", "sio" ); ins( "сю", "siu" ); ins( "ся", "sia" ); ins( "сь", "ś" ); - ins( "фе", "fie" ); ins( "фё", "fio" ); ins( "фю", "fiu" ); ins( "фя", "fia" ); ins( "фь", "f" ); - ins( "хе", "chie" ); ins( "хё", "chio" ); ins( "хю", "chiu" ); ins( "хя", "chia" ); - ins( "це", "cie" ); ins( "цё", "cio" ); ins( "цю", "ciu" ); ins( "ця", "cia" ); ins( "ць", "ć" ); - ins( "бʼ", "b" ); ins( "б'", "b" ); ins( "б’", "b" ); - ins( "вʼ", "v" ); ins( "в'", "v" ); ins( "в’", "v" ); - ins( "гʼ", "h" ); ins( "г'", "h" ); ins( "г’", "h" ); - ins( "ґʼ", "g" ); ins( "ґ'", "g" ); ins( "ґ’", "g" ); - ins( "дʼ", "d" ); ins( "д'", "d" ); ins( "д’", "d" ); - ins( "жʼ", "ž" ); ins( "ж'", "ž" ); ins( "ж’", "ž" ); - ins( "зʼ", "z" ); ins( "з'", "z" ); ins( "з’", "z" ); - ins( "кʼ", "k" ); ins( "к'", "k" ); ins( "к’", "k" ); - ins( "лʼ", "ł" ); ins( "л'", "ł" ); ins( "л’", "ł" ); - ins( "мʼ", "m" ); ins( "м'", "m" ); ins( "м’", "m" ); - ins( "нʼ", "n" ); ins( "н'", "n" ); ins( "н’", "n" ); - ins( "пʼ", "p" ); ins( "п'", "p" ); ins( "п’", "p" ); - ins( "рʼ", "r" ); ins( "р'", "r" ); ins( "р’", "r" ); - ins( "сʼ", "s" ); ins( "с'", "s" ); ins( "с’", "s" ); - ins( "тʼ", "t" ); ins( "т'", "t" ); ins( "т’", "t" ); - ins( "фʼ", "f" ); ins( "ф'", "f" ); ins( "ф’", "f" ); - ins( "хʼ", "ch" ); ins( "х'", "ch" ); ins( "х’", "ch" ); - ins( "цʼ", "c" ); ins( "ц'", "c" ); ins( "ц’", "c" ); - ins( "чʼ", "č" ); ins( "ч'", "č" ); ins( "ч’", "č" ); - ins( "шʼ", "š" ); ins( "ш'", "š" ); ins( "ш’", "š" ); - } -}; - -class BelarusianSchoolToClassicTable: public Transliteration::Table -{ -public: - BelarusianSchoolToClassicTable() - { - ins( "ньне", "нне" ); ins( "ньня", "ння" ); ins( "ньню", "нню" ); ins( "ньнё", "ннё" ); ins( "ньні", "нні" ); - ins( "нне", "ньне" ); ins( "ння", "ньня" ); ins( "нню", "ньню" ); ins( "ннё", "ньнё" ); ins( "нні", "ньні" ); - - ins( "льле", "лле" ); ins( "льля", "лля" ); ins( "льлю", "ллю" ); ins( "льлё", "ллё" ); ins( "льлі", "ллі" ); - ins( "лле", "льле" ); ins( "лля", "льля" ); ins( "ллю", "льлю" ); ins( "ллё", "льлё" ); ins( "ллі", "льлі" ); - - ins( "зьбе", "збе" ); ins( "зьбя", "збя" ); ins( "зьбю", "збю" ); ins( "зьбё", "збё" ); ins( "зьбі", "збі" ); - ins( "збе", "зьбе" ); ins( "збя", "зьбя" ); ins( "збю", "зьбю" ); ins( "збё", "зьбё" ); ins( "збі", "зьбі" ); - ins( "зьве", "зве" ); ins( "зьвя", "звя" ); ins( "зьвю", "звю" ); ins( "зьвё", "звё" ); ins( "зьві", "зві" ); - ins( "зве", "зьве" ); ins( "звя", "зьвя" ); ins( "звю", "зьвю" ); ins( "звё", "зьвё" ); ins( "зві", "зьві" ); - ins( "зьдзе", "здзе" ); ins( "зьдзя", "здзя" ); ins( "зьдзю", "здзю" ); ins( "зьдзё", "здзё" ); ins( "зьдзі", "здзі" ); ins( "зьдзь", "здзь" ); - ins( "здзе", "зьдзе" ); ins( "здзя", "зьдзя" ); ins( "здзю", "зьдзю" ); ins( "здзё", "зьдзё" ); ins( "здзі", "зьдзі" ); ins( "здзь", "здзь" ); - ins( "зьзе", "ззе" ); ins( "зьзя", "ззя" ); ins( "зьзю", "ззю" ); ins( "зьзё", "ззё" ); ins( "зьзі", "ззі" ); ins( "зьзь", "ззь" ); - ins( "ззе", "зьзе" ); ins( "ззя", "зьзя" ); ins( "ззю", "зьзю" ); ins( "ззё", "зьзё" ); ins( "ззі", "зьзі" ); ins( "ззь", "зьзь" ); - ins( "зьле", "зле" ); ins( "зьля", "зля" ); ins( "зьлю", "злю" ); ins( "зьлё", "злё" ); ins( "зьлі", "злі" ); ins( "зьль", "зль" ); - ins( "зле", "зьле" ); ins( "зля", "зьля" ); ins( "злю", "зьлю" ); ins( "злё", "зьлё" ); ins( "злі", "зьлі" ); ins( "зль", "зьль" ); - ins( "зьме", "зме" ); ins( "зьмя", "змя" ); ins( "зьмю", "змю" ); ins( "зьмё", "змё" ); ins( "зьмі", "змі" ); - ins( "зме", "зьме" ); ins( "змя", "зьмя" ); ins( "змю", "зьмю" ); ins( "змё", "зьмё" ); ins( "змі", "зьмі" ); - ins( "зьне", "зне" ); ins( "зьня", "зня" ); ins( "зьню", "зню" ); ins( "зьнё", "знё" ); ins( "зьні", "зні" ); ins( "зьнь", "знь" ); - ins( "зне", "зьне" ); ins( "зня", "зьня" ); ins( "зню", "зьню" ); ins( "знё", "зьнё" ); ins( "зні", "зьні" ); ins( "знь", "зьнь" ); - ins( "зьпе", "зпе" ); ins( "зьпя", "зпя" ); ins( "зьпю", "зпю" ); ins( "зьпё", "зпё" ); ins( "зьпі", "зпі" ); - ins( "зпе", "зьпе" ); ins( "зпя", "зьпя" ); ins( "зпю", "зьпю" ); ins( "зпё", "зьпё" ); ins( "зпі", "зьпі" ); - ins( "зьсе", "зсе" ); ins( "зься", "зся" ); ins( "зьсю", "зсю" ); ins( "зьсё", "зсё" ); ins( "зьсі", "зсі" ); ins( "зьсь", "зсь" ); - ins( "зсе", "зьсе" ); ins( "зся", "зься" ); ins( "зсю", "зьсю" ); ins( "зсё", "зьсё" ); ins( "зсі", "зьсі" ); ins( "зсь", "зьсь" ); - ins( "зьфе", "зфе" ); ins( "зьфя", "зфя" ); ins( "зьфю", "зфю" ); ins( "зьфё", "зфё" ); ins( "зьфі", "зфі" ); - ins( "зфе", "зьфе" ); ins( "зфя", "зьфя" ); ins( "зфю", "зьфю" ); ins( "зфё", "зьфё" ); ins( "зфі", "зьфі" ); - ins( "зьхе", "зхе" ); ins( "зьхя", "зхя" ); ins( "зьхю", "зхю" ); ins( "зьхё", "зхё" ); ins( "зьхі", "зхі" ); - ins( "зхе", "зьхе" ); ins( "зхя", "зьхя" ); ins( "зхю", "зьхю" ); ins( "зхё", "зьхё" ); ins( "зхі", "зьхі" ); - ins( "зьце", "зце" ); ins( "зьця", "зця" ); ins( "зьцю", "зцю" ); ins( "зьцё", "зцё" ); ins( "зьці", "зці" ); ins( "зьць", "зць" ); - ins( "зце", "зьце" ); ins( "зця", "зьця" ); ins( "зцю", "зьцю" ); ins( "зцё", "зьцё" ); ins( "зці", "зьці" ); ins( "зць", "зьць" ); - - ins( "сьбе", "сбе" ); ins( "сьбя", "сбя" ); ins( "сьбю", "сбю" ); ins( "сьбё", "сбё" ); ins( "сьбі", "сбі" ); - ins( "сбе", "сьбе" ); ins( "сбя", "сьбя" ); ins( "сбю", "сьбю" ); ins( "сбё", "сьбё" ); ins( "сбі", "сьбі" ); - ins( "сьве", "све" ); ins( "сьвя", "свя" ); ins( "сьвю", "свю" ); ins( "сьвё", "свё" ); ins( "сьві", "сві" ); - ins( "све", "сьве" ); ins( "свя", "сьвя" ); ins( "свю", "сьвю" ); ins( "свё", "сьвё" ); ins( "сві", "зьві" ); - ins( "сьдзе", "сдзе" ); ins( "сьдзя", "сдзя" ); ins( "сьдзю", "сдзю" ); ins( "сьдзё", "сдзё" ); ins( "сьдзі", "сдзі" ); ins( "сьдзь", "сдзь" ); - ins( "сдзе", "сьдзе" ); ins( "сдзя", "сьдзя" ); ins( "сдзю", "сьдзю" ); ins( "сдзё", "сьдзё" ); ins( "сдзі", "сьдзі" ); ins( "сдзь", "сьдзь" ); - ins( "сьзе", "сзе" ); ins( "сьзя", "сзя" ); ins( "сьзю", "сзю" ); ins( "сьзё", "сзё" ); ins( "сьзі", "сзі" ); ins( "сьзь", "сзь" ); - ins( "сзе", "сьзе" ); ins( "сзя", "сьзя" ); ins( "сзю", "сьзю" ); ins( "сзё", "сьзё" ); ins( "сзі", "сьзі" ); ins( "сзь", "сьзь" ); - ins( "сьле", "сле" ); ins( "сьля", "сля" ); ins( "сьлю", "слю" ); ins( "сьлё", "слё" ); ins( "сьлі", "слі" ); ins( "сьль", "сль" ); - ins( "сле", "сьле" ); ins( "сля", "сьля" ); ins( "слю", "сьлю" ); ins( "слё", "сьлё" ); ins( "слі", "сьлі" ); ins( "сль", "сьль" ); - ins( "сьме", "сме" ); ins( "сьмя", "смя" ); ins( "сьмю", "смю" ); ins( "сьмё", "смё" ); ins( "сьмі", "смі" ); - ins( "сме", "сьме" ); ins( "смя", "сьмя" ); ins( "смю", "сьмю" ); ins( "смё", "сьмё" ); ins( "смі", "сьмі" ); - ins( "сьне", "сне" ); ins( "сьня", "сня" ); ins( "сьню", "сню" ); ins( "сьнё", "снё" ); ins( "сьні", "сні" ); ins( "сьнь", "снь" ); - ins( "сне", "сьне" ); ins( "сня", "сьня" ); ins( "сню", "сьню" ); ins( "снё", "сьнё" ); ins( "сні", "сьні" ); ins( "снь", "сьнь" ); - ins( "сьпе", "спе" ); ins( "сьпя", "спя" ); ins( "сьпю", "спю" ); ins( "сьпё", "спё" ); ins( "сьпі", "спі" ); - ins( "спе", "сьпе" ); ins( "спя", "сьпя" ); ins( "спю", "сьпю" ); ins( "спё", "сьпё" ); ins( "спі", "сьпі" ); - ins( "сьсе", "ссе" ); ins( "сься", "сся" ); ins( "сьсю", "ссю" ); ins( "сьсё", "ссё" ); ins( "сьсі", "ссі" ); ins( "сьсь", "ссь" ); - ins( "ссе", "сьсе" ); ins( "сся", "сься" ); ins( "ссю", "сьсю" ); ins( "ссё", "сьсё" ); ins( "ссі", "сьсі" ); ins( "ссь", "сьсь" ); - ins( "сьфе", "сфе" ); ins( "сьфя", "сфя" ); ins( "сьфю", "сфю" ); ins( "сьфё", "сфё" ); ins( "сьфі", "сфі" ); - ins( "сфе", "сьфе" ); ins( "сфя", "сьфя" ); ins( "сфю", "сьфю" ); ins( "сфё", "сьфё" ); ins( "сфі", "сьфі" ); - ins( "сьхе", "схе" ); ins( "сьхя", "схя" ); ins( "сьхю", "схю" ); ins( "сьхё", "схё" ); ins( "сьхі", "схі" ); - ins( "схе", "сьхе" ); ins( "схя", "сьхя" ); ins( "схю", "сьхю" ); ins( "схё", "сьхё" ); ins( "схі", "сьхі" ); - ins( "сьце", "сце" ); ins( "сьця", "сця" ); ins( "сьцю", "сцю" ); ins( "сьцё", "сцё" ); ins( "сьці", "сці" ); ins( "сьць", "сць" ); - ins( "сце", "сьце" ); ins( "сця", "сьця" ); ins( "сцю", "сьцю" ); ins( "сцё", "сьцё" ); ins( "сці", "сьці" ); ins( "сць", "сьць" ); - - ins( "цьбе", "цбе" ); ins( "цьбя", "цбя" ); ins( "цьбю", "цбю" ); ins( "цьбё", "цбё" ); ins( "цьбі", "цбі" ); - ins( "цбе", "цьбе" ); ins( "цбя", "цьбя" ); ins( "цбю", "цьбю" ); ins( "цбё", "цьбё" ); ins( "цбі", "цьбі" ); - ins( "цьве", "цве" ); ins( "цьвя", "цвя" ); ins( "цьвю", "цвю" ); ins( "цьвё", "цвё" ); ins( "цьві", "цві" ); - ins( "цве", "цьве" ); ins( "цвя", "цьвя" ); ins( "цвю", "цьвю" ); ins( "цвё", "цьвё" ); ins( "цві", "цьві" ); - ins( "цьдзе", "цдзе" ); ins( "цьдзя", "цдзя" ); ins( "цьдзю", "цдзю" ); ins( "цьдзё", "цдзё" ); ins( "цьдзі", "цдзі" ); ins( "цьдзь", "цдзь" ); - ins( "цдзе", "цьдзе" ); ins( "цдзя", "цьдзя" ); ins( "цдзю", "цьдзю" ); ins( "цдзё", "цьдзё" ); ins( "цдзі", "цьдзі" ); ins( "цдзь", "цьдзь" ); - ins( "цьзе", "цзе" ); ins( "цьзя", "цзя" ); ins( "цьзю", "цзю" ); ins( "цьзё", "цзё" ); ins( "цьзі", "цзі" ); ins( "цьзь", "цзь" ); - ins( "цзе", "цьзе" ); ins( "цзя", "цьзя" ); ins( "цзю", "цьзю" ); ins( "цзё", "цьзё" ); ins( "цзі", "цьзі" ); ins( "цзь", "цьзь" ); - ins( "цьле", "цле" ); ins( "цьля", "цля" ); ins( "цьлю", "цлю" ); ins( "цьлё", "цлё" ); ins( "цьлі", "цлі" ); ins( "цьль", "цль" ); - ins( "цле", "цьле" ); ins( "цля", "цьля" ); ins( "цлю", "цьлю" ); ins( "цлё", "цьлё" ); ins( "цлі", "цьлі" ); ins( "цль", "цьль" ); - ins( "цьме", "цме" ); ins( "цьмя", "цмя" ); ins( "цьмю", "цмю" ); ins( "цьмё", "цмё" ); ins( "цьмі", "цмі" ); - ins( "цме", "цьме" ); ins( "цмя", "цьмя" ); ins( "цмю", "цьмю" ); ins( "цмё", "цьмё" ); ins( "цмі", "цьмі" ); - ins( "цьне", "цне" ); ins( "цьня", "цня" ); ins( "цьню", "цню" ); ins( "цьнё", "цнё" ); ins( "цьні", "цні" ); ins( "цьнь", "цнь" ); - ins( "цне", "цьне" ); ins( "цня", "цьня" ); ins( "цню", "цьню" ); ins( "цнё", "цьнё" ); ins( "цні", "цьні" ); ins( "цнь", "цьнь" ); - ins( "цьпе", "цпе" ); ins( "цьпя", "цпя" ); ins( "цьпю", "цпю" ); ins( "цьпё", "цпё" ); ins( "цьпі", "цпі" ); - ins( "цпе", "цьпе" ); ins( "цпя", "цьпя" ); ins( "цпю", "цьпю" ); ins( "цпё", "цьпё" ); ins( "цпі", "цьпі" ); - ins( "цьсе", "цсе" ); ins( "цься", "цся" ); ins( "цьсю", "цсю" ); ins( "цьсё", "цсё" ); ins( "цьсі", "цсі" ); ins( "цьсь", "цсь" ); - ins( "цсе", "цьсе" ); ins( "цся", "цься" ); ins( "цсю", "цьсю" ); ins( "цсё", "цьсё" ); ins( "цсі", "цьсі" ); ins( "цсь", "цьсь" ); - ins( "цьфе", "цфе" ); ins( "цьфя", "цфя" ); ins( "цьфю", "цфю" ); ins( "цьфё", "цфё" ); ins( "цьфі", "цфі" ); - ins( "цфе", "цьфе" ); ins( "цфя", "цьфя" ); ins( "цфю", "цьфю" ); ins( "цфё", "цьфё" ); ins( "цфі", "цьфі" ); - ins( "цьце", "цце" ); ins( "цьця", "цця" ); ins( "цьцю", "ццю" ); ins( "цьцё", "ццё" ); ins( "цьці", "цці" ); ins( "цьць", "цць" ); - ins( "цце", "цьце" ); ins( "цця", "цьця" ); ins( "ццю", "цьцю" ); ins( "ццё", "цьцё" ); ins( "цці", "цьці" ); ins( "цць", "цьць" ); - - ins( "дзьдзе", "ддзе" ); ins( "дзьдзя", "ддзя" ); ins( "дзьдзю", "ддзю" ); ins( "дзьдзё", "ддзё" ); ins( "дзьдзі", "ддзі" ); - ins( "ддзе", "дзьдзе" ); ins( "ддзя", "дзьдзя" ); ins( "ддзю", "дзьдзю" ); ins( "ддзё", "дзьдзё" ); ins( "ддзі", "дзьдзі" ); - - ins( "з'е", "зье" ); ins( "з'я", "зья" ); ins( "з'ю", "зью" ); ins( "з'ё", "зьё" ); ins( "з'і", "зьі" ); - ins( "зье", "з'е" ); ins( "зья", "з'я" ); ins( "зью", "з'ю" ); ins( "зьё", "з'ё" ); ins( "зьі", "з'і" ); - ins( "зʼе", "зье" ); ins( "зʼя", "зья" ); ins( "зʼю", "зью" ); ins( "зʼё", "зьё" ); ins( "зʼі", "зьі" ); - ins( "зье", "зʼе" ); ins( "зья", "зʼя" ); ins( "зью", "зʼю" ); ins( "зьё", "зʼё" ); ins( "зьі", "зʼі" ); - ins( "з’е", "зье" ); ins( "з’я", "зья" ); ins( "з’ю", "зью" ); ins( "з’ё", "зьё" ); ins( "з’і", "зьі" ); - ins( "зье", "з’е" ); ins( "зья", "з’я" ); ins( "зью", "з’ю" ); ins( "зьё", "з’ё" ); ins( "зьі", "з’і" ); - } -}; - -std::vector< sptr< Dictionary::Class > > makeDictionaries() throw( std::exception ) -{ - static BelarusianLatinToClassicTable t0; - static BelarusianLatinToSchoolTable t1; - static BelarusianSchoolToClassicTable t2; - std::vector< sptr< Dictionary::Class > > dicts; - - dicts.push_back( new Transliteration::TransliterationDictionary( "c31b24abf412abc9b23bb40a898f1040", - QCoreApplication::translate( "BelarusianTranslit", "Belarusian transliteration from latin to cyrillic (classic orthography)" ).toUtf8().data(), - QIcon( ":/flags/by.png" ), t0, false ) ); - dicts.push_back( new Transliteration::TransliterationDictionary( "c31b24abf412abc9b23bb40a898f1041", - QCoreApplication::translate( "BelarusianTranslit", "Belarusian transliteration from latin to cyrillic (school orthography)" ).toUtf8().data(), - QIcon( ":/flags/by.png" ), t1, false ) ); - dicts.push_back( new Transliteration::TransliterationDictionary( "c31b24abf412abc9b23bb40a898f1042", - QCoreApplication::translate( "BelarusianTranslit", "Belarusian transliteration (smoothes out the difference\n" - "between classic and school orthography in cyrillic)" ).toUtf8().data(), - QIcon( ":/flags/by.png" ), t2, false ) ); - return dicts; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/belarusiantranslit.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/belarusiantranslit.hh deleted file mode 100644 index 47e3dffb23..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/belarusiantranslit.hh +++ /dev/null @@ -1,17 +0,0 @@ -/* This file is (c) 2013 Maksim Tamkovicz - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __BELARUSIANTRANSLIT_HH_INCLUDED__ -#define __BELARUSIANTRANSLIT_HH_INCLUDED__ - -#include -#include "dictionary.hh" - -// Support for Belarusian transliteration -namespace BelarusianTranslit { - -std::vector< sptr< Dictionary::Class > > makeDictionaries() throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl.cc deleted file mode 100644 index cbd2cafbc5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl.cc +++ /dev/null @@ -1,1337 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "bgl.hh" -#include "btreeidx.hh" -#include "bgl_babylon.hh" -#include "file.hh" -#include "folding.hh" -#include "utf8.hh" -#include "chunkedstorage.hh" -#include "langcoder.hh" -#include "language.hh" -#include "gddebug.hh" -#include "fsencoding.hh" -#include "htmlescape.hh" -#include "ftshelpers.hh" - -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include - -#include - -#include "qt4x5.hh" - -namespace Bgl { - -using std::map; -using std::multimap; -using std::set; -using gd::wstring; -using gd::wchar; -using std::list; -using std::pair; -using std::string; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace -{ - enum - { - Signature = 0x584c4742, // BGLX on little-endian, XLGB on big-endian - CurrentFormatVersion = 19 + BtreeIndexing::FormatVersion - }; - - struct IdxHeader - { - uint32_t signature; // First comes the signature, BGLX - uint32_t formatVersion; // File format version, currently 1. - uint32_t parserVersion; // Version of the parser used to parse the BGL file. - // If it's lower than the current one, the file is to - // be re-parsed. - uint32_t foldingVersion; // Version of the folding algorithm used when building - // index. If it's different from the current one, - // the file is to be rebuilt. - uint32_t articleCount; // Total number of articles, for informative purposes only - uint32_t wordCount; // Total number of words, for informative purposes only - /// Add more fields here, like name, description, author and such. - uint32_t chunksOffset; // The offset to chunks' storage - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t resourceListOffset; // The offset of the list of resources - uint32_t resourcesCount; // Number of resources stored - uint32_t langFrom; // Source language - uint32_t langTo; // Target language - uint32_t iconAddress; // Address of the icon in the chunks' storage - uint32_t iconSize; // Size of the icon in the chunks' storage, 0 = no icon - uint32_t descriptionAddress; // Address of the dictionary description in the chunks' storage - uint32_t descriptionSize; // Size of the description in the chunks' storage, 0 = no description - } - #ifndef _MSC_VER - __attribute__((packed)) - #endif - ; - - bool indexIsOldOrBad( string const & indexFile ) - { - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion || - header.parserVersion != Babylon::ParserVersion || - header.foldingVersion != Folding::Version; - } - - // Removes the $1$-like postfix - string removePostfix( string const & in ) - { - if ( in.size() && in[ in.size() - 1 ] == '$' ) - { - // Find the end of it and cut it, barring any unexpectedness - for( long x = in.size() - 2; x >= 0; x-- ) - { - if ( in[ x ] == '$' ) - return in.substr( 0, x ); - else - if ( !isdigit( in[ x ] ) ) - break; - } - } - - return in; - } - - // Removes any leading or trailing whitespace - void trimWs( string & word ) - { - if ( word.size() ) - { - unsigned begin = 0; - - while( begin < word.size() && Utf8::isspace( word[ begin ] ) ) - ++begin; - - if ( begin == word.size() ) // Consists of ws entirely? - word.clear(); - else - { - unsigned end = word.size(); - - // Doesn't consist of ws entirely, so must end with just isspace() - // condition. - while( Utf8::isspace( word[ end - 1 ] ) ) - --end; - - if ( end != word.size() || begin ) - word = string( word, begin, end - begin ); - } - } - } - - void addEntryToIndex( string & word, - uint32_t articleOffset, - IndexedWords & indexedWords, - vector< wchar > & wcharBuffer ) - { - // Strip any leading or trailing whitespaces - trimWs( word ); - - // If the word starts with a slash, we drop it. There are quite a lot - // of them, and they all seem to be redudant duplicates. - - if ( word.size() && word[ 0 ] == '/' ) - return; - - // Check the input word for a superscript postfix ($1$, $2$ etc), which - // signifies different meaning in Bgl files. We emit different meaning - // as different articles, but they appear in the index as the same word. - - if ( word.size() && word[ word.size() - 1 ] == '$' ) - { - word = removePostfix( word ); - trimWs( word ); - } - - // Convert the word from utf8 to wide chars - - if ( wcharBuffer.size() <= word.size() ) - wcharBuffer.resize( word.size() + 1 ); - - long result = Utf8::decode( word.c_str(), word.size(), - &wcharBuffer.front() ); - - if ( result < 0 ) - { - gdWarning( "Failed to decode utf8 of headword \"%s\", skipping it.", word.c_str() ); - return; - } - - indexedWords.addWord( wstring( &wcharBuffer.front(), result ), articleOffset ); - } - - - DEF_EX( exFailedToDecompressArticle, "Failed to decompress article's body", Dictionary::Ex ) - DEF_EX( exChunkIndexOutOfRange, "Chunk index is out of range", Dictionary::Ex ) - - class BglDictionary: public BtreeIndexing::BtreeDictionary - { - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - string dictionaryName; - ChunkedStorage::Reader chunks; - - public: - - BglDictionary( string const & id, string const & indexFile, - string const & dictionaryFile ); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::WordSearchRequest > findHeadwordsForSynonym( wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual QString const& getDescription(); - - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "BGL", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } - - protected: - - virtual void loadIcon() throw(); - - private: - - - /// Loads an article with the given offset, filling the given strings. - void loadArticle( uint32_t offset, string & headword, - string & displayedHeadword, string & articleText ); - - static void replaceCharsetEntities( string & ); - - friend class BglHeadwordsRequest; - friend class BglArticleRequest; - friend class BglResourceRequest; - }; - - BglDictionary::BglDictionary( string const & id, string const & indexFile, - string const & dictionaryFile ): - BtreeDictionary( id, vector< string >( 1, dictionaryFile ) ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - chunks( idx, idxHeader.chunksOffset ) - { - idx.seek( sizeof( idxHeader ) ); - - // Read the dictionary's name - - size_t len = idx.read< uint32_t >(); - - vector< char > nameBuf( len ); - - idx.read( &nameBuf.front(), len ); - - dictionaryName = string( &nameBuf.front(), len ); - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); - } - - void BglDictionary::loadIcon() throw() - { - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if( !loadIconFromFile( fileName ) ) - { - if( idxHeader.iconSize ) - { - - // Try loading icon now - - vector< char > chunk; - - Mutex::Lock _( idxMutex ); - - char * iconData = chunks.getBlock( idxHeader.iconAddress, chunk ); - - QImage img; - - if (img.loadFromData( ( unsigned char *) iconData, idxHeader.iconSize ) ) - { - // Load successful - - dictionaryNativeIcon = QIcon( QPixmap::fromImage( img ) ); - - // Transform it to be square - int max = img.width() > img.height() ? img.width() : img.height(); - - QImage result( max, max, QImage::Format_ARGB32 ); - result.fill( 0 ); // Black transparent - - QPainter painter( &result ); - - painter.drawImage( QPoint( img.width() == max ? 0 : ( max - img.width() ) / 2, - img.height() == max ? 0 : ( max - img.height() ) / 2 ), - img ); - - painter.end(); - - dictionaryIcon = QIcon( QPixmap::fromImage( result ) ); - } - } - - if ( dictionaryIcon.isNull() ) - dictionaryIcon = dictionaryNativeIcon = QIcon(":/icons/icon32_bgl.png"); - } - - dictionaryIconLoaded = true; - } - - void BglDictionary::loadArticle( uint32_t offset, string & headword, - string & displayedHeadword, - string & articleText ) - { - vector< char > chunk; - - Mutex::Lock _( idxMutex ); - - char * articleData = chunks.getBlock( offset, chunk ); - - headword = articleData; - - displayedHeadword = articleData + headword.size() + 1; - - articleText = - string( articleData + headword.size() + - displayedHeadword.size() + 2 ); - } - - QString const& BglDictionary::getDescription() - { - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - if( idxHeader.descriptionSize == 0 ) - dictionaryDescription = "NONE"; - else - { - Mutex::Lock _( idxMutex ); - vector< char > chunk; - char * dictDescription = chunks.getBlock( idxHeader.descriptionAddress, chunk ); - string str( dictDescription ); - if( !str.empty() ) - dictionaryDescription += "Copyright: " + Html::unescape( QString::fromUtf8( str.data(), str.size() ) ) + "\n\n"; - dictDescription += str.size() + 1; - - str = string( dictDescription ); - if( !str.empty() ) - dictionaryDescription += "Author: " + QString::fromUtf8( str.data(), str.size() ) + "\n\n"; - dictDescription += str.size() + 1; - - str = string( dictDescription ); - if( !str.empty() ) - dictionaryDescription += "E-mail: " + QString::fromUtf8( str.data(), str.size() ) + "\n\n"; - dictDescription += str.size() + 1; - - str = string( dictDescription ); - if( !str.empty() ) - dictionaryDescription += Html::unescape( QString::fromUtf8( str.data(), str.size() ) ); - } - - return dictionaryDescription; - } - - void BglDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) - { - try - { - string headwordStr, displayedHeadwordStr, articleStr; - loadArticle( articleAddress, headwordStr, displayedHeadwordStr, articleStr ); - - // Some headword normalization similar while indexing - trimWs( headwordStr ); - - if ( headwordStr.size() && headwordStr[ 0 ] == '/' ) - headwordStr.erase(); // We will take headword from index later - - if ( headwordStr.size() - && headwordStr[ headwordStr.size() - 1 ] == '$' ) - { - headwordStr = removePostfix( headwordStr ); - trimWs( headwordStr ); - } - - headword = QString::fromUtf8( headwordStr.data(), headwordStr.size() ); - - wstring wstr = Utf8::decode( articleStr ); - - if ( getLangTo() == LangCoder::code2toInt( "he" ) ) - { - for ( unsigned int i = 0; i < wstr.size(); i++ ) - { - if ( (wstr[ i ] >= 224 && wstr[ i ] <= 250) || (wstr[ i ] >= 192 && wstr[ i ] <= 210) ) // Hebrew chars encoded ecoded as windows-1255 or ISO-8859-8, or as vowel-points of windows-1255 - wstr[ i ] += 1488 - 224; // Convert to Hebrew unicode - } - } - - text = Html::unescape( gd::toQString( wstr ) ); - } - catch( std::exception &ex ) - { - gdWarning( "BGL: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } - } - - void BglDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) - { - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "Bgl: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "Bgl: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } - } - -/// BglDictionary::findHeadwordsForSynonym() - -class BglHeadwordsRequest; - -class BglHeadwordsRequestRunnable: public QRunnable -{ - BglHeadwordsRequest & r; - QSemaphore & hasExited; - -public: - - BglHeadwordsRequestRunnable( BglHeadwordsRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~BglHeadwordsRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class BglHeadwordsRequest: public Dictionary::WordSearchRequest -{ - friend class BglHeadwordsRequestRunnable; - - wstring str; - BglDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - BglHeadwordsRequest( wstring const & word_, - BglDictionary & dict_ ): - str( word_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new BglHeadwordsRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by BglHeadwordsRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~BglHeadwordsRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void BglHeadwordsRequestRunnable::run() -{ - r.run(); -} - -void BglHeadwordsRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( str ); - - wstring caseFolded = Folding::applySimpleCaseOnly( str ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - string headword, displayedHeadword, articleText; - - dict.loadArticle( chain[ x ].articleOffset, - headword, displayedHeadword, articleText ); - - wstring headwordDecoded; - try - { - headwordDecoded = Utf8::decode( removePostfix( headword ) ); - } - catch( Utf8::exCantDecode ) - { - } - - if ( caseFolded != Folding::applySimpleCaseOnly( headwordDecoded ) && !headwordDecoded.empty() ) - { - // The headword seems to differ from the input word, which makes the - // input word its synonym. - Mutex::Lock _( dataMutex ); - - matches.push_back( headwordDecoded ); - } - } - - finish(); -} - -sptr< Dictionary::WordSearchRequest > - BglDictionary::findHeadwordsForSynonym( wstring const & word ) - throw( std::exception ) -{ - return new BglHeadwordsRequest( word, *this ); -} - -// Converts a $1$-like postfix to a 1 one -string postfixToSuperscript( string const & in ) -{ - if ( !in.size() || in[ in.size() - 1 ] != '$' ) - return in; - - for( long x = in.size() - 2; x >= 0; x-- ) - { - if ( in[ x ] == '$' ) - { - if ( in.size() - x - 2 > 2 ) - { - // Large postfixes seem like something we wouldn't want to show -- - // some dictionaries seem to have each word numbered using the - // postfix. - return in.substr( 0, x ); - } - else - return in.substr( 0, x ) + "" + in.substr( x + 1, in.size() - x - 2 ) + ""; - } - else - if ( !isdigit( in[ x ] ) ) - break; - } - - return in; -} - - -/// BglDictionary::getArticle() - -class BglArticleRequest; - -class BglArticleRequestRunnable: public QRunnable -{ - BglArticleRequest & r; - QSemaphore & hasExited; - -public: - - BglArticleRequestRunnable( BglArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~BglArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class BglArticleRequest: public Dictionary::DataRequest -{ - friend class BglArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - BglDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - BglArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - BglDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new BglArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by BglArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - void fixHebString(string & hebStr); // Hebrew support - void fixHebArticle(string & hebArticle); // Hebrew support - - ~BglArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void BglArticleRequestRunnable::run() -{ - r.run(); -} - -void BglArticleRequest::fixHebString(string & hebStr) // Hebrew support - convert non-unicode to unicode -{ - wstring hebWStr; - try - { - hebWStr = Utf8::decode(hebStr); - } - catch( Utf8::exCantDecode ) - { - hebStr = "Utf-8 decoding error"; - return; - } - - for (unsigned int i=0; i= 224 && hebWStr[ i ] <= 250) || (hebWStr[ i ] >= 192 && hebWStr[ i ] <= 210) ) // Hebrew chars encoded ecoded as windows-1255 or ISO-8859-8, or as vowel-points of windows-1255 - hebWStr[i]+=1488-224; // Convert to Hebrew unicode - } - hebStr=Utf8::encode(hebWStr); -} - -void BglArticleRequest::fixHebArticle(string & hebArticle) // Hebrew support - remove extra chars at the end -{ - unsigned nulls; - - for ( nulls = hebArticle.size(); nulls > 0 && - ( ( hebArticle[ nulls - 1 ] <= 32 && - hebArticle[ nulls - 1 ] >= 0 ) || - ( hebArticle[ nulls - 1 ] >= 65 && - hebArticle[ nulls - 1 ] <= 90 ) ); --nulls ) ; //special chars and A-Z - - hebArticle.resize( nulls ); -} - -void BglArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - static Language::Id hebrew = LangCoder::code2toInt( "he" ); // Hebrew support - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - // Sometimes the articles are physically duplicated. We store hashes of - // the bodies to account for this. - set< QByteArray > articleBodiesIncluded; - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - try - { - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now grab that article - - string headword, displayedHeadword, articleText; - - dict.loadArticle( chain[ x ].articleOffset, - headword, displayedHeadword, articleText ); - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded and postfix-less comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( removePostfix( headword ) ) ); - - // Hebrew support - fix Hebrew text - if (dict.idxHeader.langFrom == hebrew) - { - displayedHeadword= displayedHeadword.size() ? displayedHeadword : headword; - fixHebString(articleText); - fixHebArticle(articleText); - fixHebString(displayedHeadword); - } - - string const & targetHeadword = displayedHeadword.size() ? - displayedHeadword : headword; - - QCryptographicHash hash( QCryptographicHash::Md5 ); - hash.addData( targetHeadword.data(), targetHeadword.size() + 1 ); // with 0 - hash.addData( articleText.data(), articleText.size() ); - - if ( !articleBodiesIncluded.insert( hash.result() ).second ) - continue; // Already had this body - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( targetHeadword, articleText ) ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - - } // try - catch( std::exception &ex ) - { - gdWarning( "BGL: Failed loading article from \"%s\", reason: %s\n", dict.getName().c_str(), ex.what() ); - } - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result; - - multimap< wstring, pair< string, string > >::const_iterator i; - - string cleaner = """""""""""" - """""""""""" - "" - ""; - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - if (dict.isFromLanguageRTL() ) // RTL support - result += "

"; - else - result += "

"; - result += postfixToSuperscript( i->second.first ); - result += "

"; - if ( dict.isToLanguageRTL() ) - result += "
" + i->second.second + "
"; - else - result += "
" + i->second.second + "
"; - result += cleaner; - } - - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - if (dict.isFromLanguageRTL() ) // RTL support - result += "

"; - else - result += "

"; - result += postfixToSuperscript( i->second.first ); - result += "

"; - if ( dict.isToLanguageRTL() ) - result += "
" + i->second.second + "
"; - else - result += "
" + i->second.second + "
"; - result += cleaner; - } - // Do some cleanups in the text - - BglDictionary::replaceCharsetEntities( result ); - result = QString::fromUtf8( result.c_str() ) - // onclick location to link - .replace( QRegExp( "<([a-z0-9]+)\\s+[^>]*onclick=\"[a-z.]*location(?:\\.href)\\s*=\\s*'([^']+)[^>]*>([^<]+)", Qt::CaseInsensitive ), - "\\3") - .replace( QRegExp( "(<\\s*a\\s+[^>]*href\\s*=\\s*[\"']\\s*)bword://", Qt::CaseInsensitive ), - "\\1bword:" ) - //remove invalid width, height attrs - .replace(QRegExp( "(width|height)\\s*=\\s*[\"']\\d{7,}[\"'']" ), - "" ) - //remove invalid
tag - .replace( QRegExp( "
(|||||function addScript|var scNode|scNode|var atag|while\\(atag|atag=atag|document\\.getElementsByTagName|addScript|src=\"bres||addScript\\('JS_FILE_PHONG_VT_45634'\\);|appendChild\\(scNode\\);|atag\\.firstChild;)
", Qt::CaseInsensitive ), - " \\1 " ) - .toUtf8().data(); - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - - finish(); -} - -sptr< Dictionary::DataRequest > BglDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new BglArticleRequest( word, alts, *this ); -} - - -//// BglDictionary::getResource() - -class BglResourceRequest; - -class BglResourceRequestRunnable: public QRunnable -{ - BglResourceRequest & r; - QSemaphore & hasExited; - -public: - - BglResourceRequestRunnable( BglResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~BglResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class BglResourceRequest: public Dictionary::DataRequest -{ - friend class BglResourceRequestRunnable; - - Mutex & idxMutex; - File::Class & idx; - uint32_t resourceListOffset, resourcesCount; - string name; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - BglResourceRequest( Mutex & idxMutex_, - File::Class & idx_, - uint32_t resourceListOffset_, - uint32_t resourcesCount_, - string const & name_ ): - idxMutex( idxMutex_ ), - idx( idx_ ), - resourceListOffset( resourceListOffset_ ), - resourcesCount( resourcesCount_ ), - name( name_ ) - { - QThreadPool::globalInstance()->start( - new BglResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by BglResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~BglResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void BglResourceRequestRunnable::run() -{ - r.run(); -} - -void BglResourceRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - string nameLowercased = name; - - for( string::iterator i = nameLowercased.begin(); i != nameLowercased.end(); - ++i ) - *i = tolower( *i ); - - Mutex::Lock _( idxMutex ); - - idx.seek( resourceListOffset ); - - for( size_t count = resourcesCount; count--; ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - vector< char > nameData( idx.read< uint32_t >() ); - idx.read( &nameData.front(), nameData.size() ); - - for( size_t x = nameData.size(); x--; ) - nameData[ x ] = tolower( nameData[ x ] ); - - uint32_t offset = idx.read< uint32_t >(); - - if ( string( &nameData.front(), nameData.size() ) == nameLowercased ) - { - // We have a match. - - idx.seek( offset ); - - Mutex::Lock _( dataMutex ); - - data.resize( idx.read< uint32_t >() ); - - vector< unsigned char > compressedData( idx.read< uint32_t >() ); - - idx.read( &compressedData.front(), compressedData.size() ); - - unsigned long decompressedLength = data.size(); - - if ( uncompress( (unsigned char *) &data.front(), - &decompressedLength, - &compressedData.front(), - compressedData.size() ) != Z_OK || - decompressedLength != data.size() ) - { - gdWarning( "Failed to decompress resource \"%s\", ignoring it.\n", name.c_str() ); - } - else - hasAnyData = true; - - break; - } - } - - finish(); -} - -sptr< Dictionary::DataRequest > BglDictionary::getResource( string const & name ) - throw( std::exception ) -{ - return new BglResourceRequest( idxMutex, idx, idxHeader.resourceListOffset, - idxHeader.resourcesCount, name ); -} - - /// Replaces 1234; occurences with ሴ - void BglDictionary::replaceCharsetEntities( string & text ) - { - QRegExp charsetExp( "<\\s*charset\\s+c\\s*=\\s*[\"']?t[\"']?\\s*>((?:\\s*[0-9a-fA-F]+\\s*;\\s*)*)<\\s*/\\s*charset\\s*>", - Qt::CaseInsensitive ); - - charsetExp.setMinimal( true ); - - QRegExp oneValueExp( "\\s*([0-9a-fA-F]+)\\s*;" ); - - QString str = QString::fromUtf8( text.c_str() ); - - for( int pos = 0; ( pos = charsetExp.indexIn( str, pos ) ) != -1; ) - { - //DPRINTF( "Match: %s\n", str.mid( pos, charsetExp.matchedLength() ).toUtf8().data() ); - - QString out; - - for( int p = 0; ( p = oneValueExp.indexIn( charsetExp.cap( 1 ), p ) ) != -1; ) - { - //DPRINTF( "Cap: %s\n", oneValueExp.cap( 1 ).toUtf8().data() ); - out += "&#x" + oneValueExp.cap( 1 ) + ";"; - - p += oneValueExp.matchedLength(); - } - - str.replace( pos, charsetExp.matchedLength(), out ); - } - - text = str.toUtf8().data(); - } - - class ResourceHandler: public Babylon::ResourceHandler - { - File::Class & idxFile; - list< pair< string, uint32_t > > resources; - - public: - - ResourceHandler( File::Class & idxFile_ ): idxFile( idxFile_ ) - {} - - list< pair< string, uint32_t > > const & getResources() const - { return resources; } - - protected: - virtual void handleBabylonResource( string const & filename, - char const * data, size_t size ); - }; - - void ResourceHandler::handleBabylonResource( string const & filename, - char const * data, size_t size ) - { - //DPRINTF( "Handling resource file %s (%u bytes)\n", filename.c_str(), size ); - - vector< unsigned char > compressedData( compressBound( size ) ); - - unsigned long compressedSize = compressedData.size(); - - if ( compress( &compressedData.front(), &compressedSize, - (unsigned char const *) data, size ) != Z_OK ) - { - gdWarning( "Failed to compress the body of resource \"%s\", dropping it.\n", filename.c_str() ); - return; - } - - resources.push_back( pair< string, uint32_t >( filename, idxFile.tell() ) ); - - idxFile.write< uint32_t >( size ); - idxFile.write< uint32_t >( compressedSize ); - idxFile.write( &compressedData.front(), compressedSize ); - } -} - -sptr< Dictionary::DataRequest > BglDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Skip files with the extensions different to .bgl to speed up the - // scanning - if ( i->size() < 4 || - strcasecmp( i->c_str() + ( i->size() - 4 ), ".bgl" ) != 0 ) - continue; - - // Got the file -- check if we need to rebuid the index - - vector< string > dictFiles( 1, *i ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - // Building the index - - gdDebug( "Bgl: Building the index for dictionary: %s\n", i->c_str() ); - - try - { - Babylon b( *i ); - - if ( !b.open() ) - continue; - - std::string sourceCharset, targetCharset; - - if ( !b.read( sourceCharset, targetCharset ) ) - { - gdWarning( "Failed to start reading from %s, skipping it\n", i->c_str() ); - continue; - } - - initializing.indexingDictionary( b.title() ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - idx.write< uint32_t >( b.title().size() ); - idx.write( b.title().data(), b.title().size() ); - - // This is our index data that we accumulate during the loading process. - // For each new word encountered, we emit the article's body to the file - // immediately, inserting the word itself and its offset in this map. - // This map maps folded words to the original words and the corresponding - // articles' offsets. - IndexedWords indexedWords; - - // We use this buffer to decode utf8 into it. - vector< wchar > wcharBuffer; - - ChunkedStorage::Writer chunks( idx ); - - uint32_t articleCount = 0, wordCount = 0; - - ResourceHandler resourceHandler( idx ); - - b.setResourcePrefix( string( "bres://" ) + dictId + "/" ); - - // Save icon if there's one - if ( size_t sz = b.getIcon().size() ) - { - idxHeader.iconAddress = chunks.startNewBlock(); - chunks.addToBlock( &b.getIcon().front(), sz ); - idxHeader.iconSize = sz; - } - - // Save dictionary description if there's one - idxHeader.descriptionSize = 0; - idxHeader.descriptionAddress = chunks.startNewBlock(); - - chunks.addToBlock( b.copyright().c_str(), b.copyright().size() + 1 ); - idxHeader.descriptionSize += b.copyright().size() + 1; - - chunks.addToBlock( b.author().c_str(), b.author().size() + 1 ); - idxHeader.descriptionSize += b.author().size() + 1; - - chunks.addToBlock( b.email().c_str(), b.email().size() + 1 ); - idxHeader.descriptionSize += b.email().size() + 1; - - chunks.addToBlock( b.description().c_str(), b.description().size() + 1 ); - idxHeader.descriptionSize += b.description().size() + 1; - - for( ; ; ) - { - bgl_entry e = b.readEntry( &resourceHandler ); - - if ( e.headword.empty() ) - break; - - // Save the article's body itself first - - uint32_t articleAddress = chunks.startNewBlock(); - - chunks.addToBlock( e.headword.c_str(), e.headword.size() + 1 ); - chunks.addToBlock( e.displayedHeadword.c_str(), e.displayedHeadword.size() + 1 ); - chunks.addToBlock( e.definition.c_str(), e.definition.size() + 1 ); - - // Add entries to the index - - addEntryToIndex( e.headword, articleAddress, indexedWords, wcharBuffer ); - - for( unsigned x = 0; x < e.alternates.size(); ++x ) - addEntryToIndex( e.alternates[ x ], articleAddress, indexedWords, wcharBuffer ); - - wordCount += 1 + e.alternates.size(); - ++articleCount; - } - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - GD_DPRINTF( "Writing index...\n" ); - - // Good. Now build the index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - // Save the resource's list. - - idxHeader.resourceListOffset = idx.tell(); - idxHeader.resourcesCount = resourceHandler.getResources().size(); - - for( list< pair< string, uint32_t > >::const_iterator j = - resourceHandler.getResources().begin(); - j != resourceHandler.getResources().end(); ++j ) - { - idx.write< uint32_t >( j->first.size() ); - idx.write( j->first.data(), j->first.size() ); - idx.write< uint32_t >( j->second ); - } - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - idxHeader.parserVersion = Babylon::ParserVersion; - idxHeader.foldingVersion = Folding::Version; - idxHeader.articleCount = articleCount; - idxHeader.wordCount = wordCount; - idxHeader.langFrom = b.sourceLang();//LangCoder::findIdForLanguage( Utf8::decode( b.sourceLang() ) ); - idxHeader.langTo = b.targetLang();//LangCoder::findIdForLanguage( Utf8::decode( b.targetLang() ) ); - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - catch( std::exception & e ) - { - gdWarning( "BGL dictionary indexing failed: %s, error: %s\n", - i->c_str(), e.what() ); - } - } - - try - { - dictionaries.push_back( new BglDictionary( dictId, - indexFile, - *i ) ); - } - catch( std::exception & e ) - { - gdWarning( "BGL dictionary initializing failed: %s, error: %s\n", - i->c_str(), e.what() ); - } - } - - return dictionaries; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl.hh deleted file mode 100644 index 67548b62ce..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl.hh +++ /dev/null @@ -1,30 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __BGL_HH_INCLUDED__ -#define __BGL_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for the Babylon's .bgl dictionaries. -namespace Bgl { - -using std::vector; -using std::string; - -/// Goes through the given list of file names, trying each one as a possible -/// dictionary. Upon finding one, creates a corresponding dictionary instance. -/// As a result, a list of dictionaries is created. -/// indicesDir indicates a directory where index files can be created, should -/// there be need for them. The index file name would be the same as the -/// dictionary's id, made by makeDictionaryId() from the list of file names. -/// Any exception thrown would terminate the program with an error. -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl_babylon.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl_babylon.cc deleted file mode 100644 index 2b6b5513d8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl_babylon.cc +++ /dev/null @@ -1,834 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2007 by Raul Fernandes and Karl Grill * - * rgbr@yahoo.com.br * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ - -/* Various improvements were made by Konstantin Isakov for the GoldenDict - * program. */ - -#include "bgl_babylon.hh" -#include -#include -#include -#include -#include -#include -#include "gddebug.hh" -#include "ufile.hh" -#include "iconv.hh" -#include "htmlescape.hh" -#include -#include -#include "dictionary.hh" - -#ifdef _WIN32 -#include -#define DUP _dup -#else -#define DUP dup -#endif - -using std::string; - -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX( exUserAbort, "User abort", Dictionary::Ex ) -DEF_EX( exIconv, "Iconv library error", Dictionary::Ex ) -DEF_EX( exAllocation, "Error memory allocation", Dictionary::Ex ) - -Babylon::Babylon( std::string filename ) : -m_filename( filename ) -{ - file = NULL; -} - - -Babylon::~Babylon() -{ - close(); -} - - -bool Babylon::open() -{ - FILE *f; - unsigned char buf[6]; - int i; - - f = gd_fopen( m_filename.c_str(), "rb" ); - if( f == NULL ) - return false; - - i = fread( buf, 1, 6, f ); - - /* First four bytes: BGL signature 0x12340001 or 0x12340002 (big-endian) */ - if( i < 6 || memcmp( buf, "\x12\x34\x00", 3 ) || buf[3] == 0 || buf[3] > 2 ) - { - fclose( f ); - return false; - } - - /* Calculate position of gz header */ - - i = buf[4] << 8 | buf[5]; - - if( i < 6 ) - { - fclose( f ); - return false; - } - - if( fseek( f, i, SEEK_SET ) ) /* can't seek - emulate */ - for(int j=0;j < i - 6;j++) fgetc( f ); - - if( ferror( f ) || feof( f ) ) - { - fclose( f ); - return false; - } - - /* we need to flush the file because otherwise some nfs mounts don't seem - * to properly update the file position for the following reopen */ - - fflush( f ); - -#ifdef Q_OS_MAC - /* Under Mac OS X the above technique don't set reopen position properly */ - int fn = DUP( fileno( f ) ); - lseek( fn, i, SEEK_SET ); - file = gzdopen( fn, "r" ); -#else - file = gzdopen( DUP( fileno( f ) ), "r" ); -#endif - - fclose( f ); - - if( file == NULL ) - return false; - - return true; -} - - -void Babylon::close() -{ - if ( file ) - { - gzclose( file ); - file = 0; - } -} - - -bool Babylon::readBlock( bgl_block &block ) -{ - if( gzeof( file ) || file == NULL ) - return false; - - block.length = bgl_readnum( 1 ); - block.type = block.length & 0xf; - if( block.type == 4 ) return false; // end of file marker - block.length >>= 4; - block.length = block.length < 4 ? bgl_readnum( block.length + 1 ) : block.length - 4 ; - if( block.length ) - { - block.data = (char *)malloc( block.length ); - if( !block.data ) - throw exAllocation(); - - unsigned res = gzread( file, block.data, block.length ); - if( block.length != res ) - { - free( block.data ); - block.length = 0; - gzclearerr( file ); - return false; - } - } - - return true; -} - - -unsigned int Babylon::bgl_readnum( int bytes ) -{ - unsigned char buf[4]; - unsigned val = 0; - - if ( bytes < 1 || bytes > 4 ) return (0); - - int res = gzread( file, buf, bytes ); - - if( res != bytes ) - { - gzclearerr( file ); - return 4; // Read error - return end of file marker - } - - for(int i=0;i 64 ) type -= 65; - - if ( type >= 14 ) - type = 0; - - m_defaultCharset = bgl_charset[type]; - break; - default: - break; - } - break; - case 1: - case 7: - case 10: - case 11: - // Only count entries - m_numEntries++; - break; - case 3: - pos = 2; - switch( block.data[1] ) - { - case 1: - headword.reserve( block.length - 2 ); - for(unsigned int a=0;a= 5 && ( (unsigned char) block.data[ 4 ] & 0x80 ) != 0 ) - isUtf8File = true; - break; - case 26: - type = (unsigned int)block.data[2]; - if( type == 67 ) type = 1; - if( type > 64 ) type -= 65; - if ( type >= 14 ) - type = 0; - if (m_sourceCharset.empty()) - m_sourceCharset = bgl_charset[type]; - break; - case 27: - type = (unsigned int)block.data[2]; - if( type == 67 ) type = 1; - if( type > 64 ) type -= 65; - if ( type >= 14 ) - type = 0; - if (m_targetCharset.empty()) - m_targetCharset = bgl_charset[type]; - break; - default: - break; - } - break; - default: - ; - } - if( block.length ) free( block.data ); - } - gzseek( file, 0, SEEK_SET ); - - if ( isUtf8File ) - { - //FDPRINTF( stderr, "%s: utf8 file.\n", m_title.c_str() ); - m_defaultCharset = "UTF-8"; - m_sourceCharset = "UTF-8"; - m_targetCharset = "UTF-8"; - } - - convertToUtf8( m_title, BGL_TARGET_CHARSET ); - convertToUtf8( m_author, BGL_TARGET_CHARSET ); - convertToUtf8( m_email, BGL_TARGET_CHARSET ); - convertToUtf8( m_copyright, BGL_TARGET_CHARSET ); - convertToUtf8( m_description, BGL_TARGET_CHARSET ); - GD_DPRINTF("Default charset: %s\nSource Charset: %s\nTargetCharset: %s\n", m_defaultCharset.c_str(), m_sourceCharset.c_str(), m_targetCharset.c_str()); - return true; -} - - -bgl_entry Babylon::readEntry( ResourceHandler * resourceHandler ) -{ - bgl_entry entry; - - if( file == NULL ) - { - entry.headword = ""; - return entry; - } - - bgl_block block; - unsigned int len, pos; - unsigned int alts_num; - std::string headword, displayedHeadword; - std::string definition; - std::string temp; - std::vector alternates; - std::string alternate; - std::string root; - bool defBodyEnded = false; - std::string transcription; - - while( readBlock( block ) ) - { - switch( block.type ) - { - case 2: - { - pos = 0; - len = (unsigned char)block.data[pos++]; - if( pos + len > block.length ) - break; - std::string filename( block.data+pos, len ); - //if (filename != "8EAF66FD.bmp" && filename != "C2EEF3F6.html") { - pos += len; - if ( resourceHandler ) - resourceHandler->handleBabylonResource( filename, - block.data + pos, - block.length - pos ); - #if 0 - FILE *ifile = gd_fopen(filename.c_str(), "w"); - fwrite(block.data + pos, 1, block.length -pos, ifile); - fclose(ifile); - #endif - break; - } - case 1: - case 7: - case 10: - case 11: - alternate.clear(); - headword.clear(); - displayedHeadword.clear(); - root.clear(); - definition.clear(); - temp.clear(); - pos = 0; - - // Headword - if( block.type == 11 ) - { - pos = 1; - len = 0; - if( pos + 4 > block.length ) - break; - for( int i = 0; i < 4; i++ ) - { - len = len << 8; - len |= (unsigned char)block.data[ pos++ ]; - } - } - else - { - len = (unsigned char)block.data[pos++]; - } - - if( pos + len > block.length ) - break; - - headword.reserve( len ); - for(unsigned int a=0;a= block.length ) - break; - - alts_num = 0; - for( int i = 0; i < 4; i++ ) - { - alts_num = alts_num << 8; - alts_num |= (unsigned char)block.data[ pos++ ]; - } - - for( unsigned j = 0; j < alts_num; j++ ) - { - len = 0; - if( pos + 4 > block.length ) - break; - for( int i = 0; i < 4; i++ ) - { - len = len << 8; - len |= (unsigned char)block.data[ pos++ ]; - } - if( pos + len >= block.length ) - break; - alternate.reserve( len ); - for(unsigned int a=0;a block.length ) - break; - for( int i = 0; i < 4; i++ ) - { - len = len << 8; - len |= (unsigned char)block.data[ pos++ ]; - } - } - else - { - len = (unsigned char)block.data[pos++] << 8; - len |= (unsigned char)block.data[pos++]; - } - - if( pos + len > block.length ) - break; - - definition.reserve( len ); - - for(unsigned int a=0;a= 0x40 && - len - a >= 2 && - (unsigned char)block.data[pos + 1 ] == 0x18 ) - { - // Hidden displayed headword (a displayed headword which - // contains some garbage and shouldn't probably be visible). - unsigned length = (unsigned char)block.data[ pos ] - 0x3F; - - if ( length > len - a - 2 ) - { - GD_FDPRINTF( stderr, "Hidden displayed headword is too large %s\n", headword.c_str() ); - pos += len - a; - break; - } - - pos += length + 2; - a += length + 1; - } - else if ( (unsigned char)block.data[pos] == 0x18 ) - { - // Displayed headword - unsigned length = (unsigned char)block.data[ pos + 1 ]; - - if ( length > len - a - 2 ) - { - GD_FDPRINTF( stderr, "Displayed headword's length is too large for headword %s\n", headword.c_str() ); - pos += len - a; - break; - } - - displayedHeadword = std::string( block.data + pos + 2, length ); - pos += length + 2; - a += length + 1; - } - else - if ( block.data[ pos ] == 0x28 && defBodyEnded && - len - a >= 3 ) - { - // 2-byte sized displayed headword - unsigned length = (unsigned char)block.data[ pos + 1 ]; - length <<= 8; - length += (unsigned char)block.data[ pos + 2 ]; - - if ( length > len - a - 3 ) - { - GD_FDPRINTF( stderr, "2-byte sized displayed headword for %s is too large\n", headword.c_str() ); - pos += len - a; - break; - } - - displayedHeadword = std::string( block.data + pos + 3, length ); - - pos += length + 3; - a += length + 2; - } - else if ( (unsigned char)block.data[pos] == 0x50 && len - a - 1 >= 2 && - (unsigned char)block.data[pos + 1 ] == 0x1B ) - { - // 1-byte-sized transcription - unsigned length = (unsigned char)block.data[pos + 2 ]; - - if ( length > len - a - 3 ) - { - GD_FDPRINTF( stderr, "1-byte-sized transcription's length is too large for headword %s\n", headword.c_str() ); - pos += len - a; - break; - } - - if( m_targetCharset.compare( "UTF-8" ) != 0 ) - { - try - { - transcription = Iconv::toUtf8( "CP1252", block.data + pos + 3, length ); - } - catch( Iconv::Ex & e ) - { - qWarning( "Bgl: charset convertion error, no trancription processing's done: %s\n", e.what() ); - transcription = std::string( block.data + pos + 3, length ); - } - } - else - transcription = std::string( block.data + pos + 3, length ); - - pos += length + 3; - a += length + 2; - } - else if ( (unsigned char)block.data[pos] == 0x60 && len - a - 1 >= 3 && - (unsigned char)block.data[pos + 1 ] == 0x1B ) - { - // 2-byte-sized transcription - unsigned length = (unsigned char)block.data[pos + 2 ]; - length <<= 8; - length += (unsigned char)block.data[pos + 3 ]; - - if ( length > len - a - 4) - { - GD_FDPRINTF( stderr, "2-byte-sized transcription's length is too large for headword %s\n", headword.c_str() ); - pos += len - a; - break; - } - - if( m_targetCharset.compare( "UTF-8" ) != 0 ) - { - try - { - transcription = Iconv::toUtf8( "CP1252", block.data + pos + 4, length ); - } - catch( Iconv::Ex & e ) - { - qWarning( "Bgl: charset convertion error, no trancription processing's done: %s\n", e.what() ); - transcription = std::string( block.data + pos + 4, length ); - } - } - else - transcription = std::string( block.data + pos + 4, length ); - - pos += length + 4; - a += length + 3; - } - else if ( (unsigned char)block.data[pos] >= 0x40 && - len - a >= 2 && - (unsigned char)block.data[pos + 1 ] == 0x1B ) - { - // Hidden transcription (a transcription which is usually the same - // as the headword and shouldn't probably be visible). - unsigned length = (unsigned char)block.data[ pos ] - 0x3F; - - if ( length > len - a - 2 ) - { - GD_FDPRINTF( stderr, "Hidden transcription is too large %s\n", headword.c_str() ); - pos += len - a; - break; - } - - pos += length + 2; - a += length + 1; - } - else if ( (unsigned char)block.data[pos] == 0x1E ) - { - // Resource reference begin marker - definition += m_resourcePrefix; - ++pos; - } - else if ( (unsigned char)block.data[pos] == 0x1F ) - { - // Resource reference end marker - ++pos; - } - else if( (unsigned char)block.data[pos] < 0x20 ) - { - if( a <= len - 3 && block.data[pos] == 0x14 && block.data[pos+1] == 0x02 ) { - int index = (unsigned char)block.data[pos+2] - 0x30; - if (index >= 0 && index <= 10) { - definition = "" + partOfSpeech[index] + " " + definition; - } - pos += 3; - a += 2; - //pos += len - a; - //break; - } - else - if (block.data[pos] == 0x14) { - defBodyEnded = true; // Presumably - pos++; - } else if ((unsigned char)block.data[pos] == 0x1A){ - unsigned length = (unsigned char)block.data[ pos + 1 ]; - if (length <= 10){// 0x1A identifies two different data types. - // data about the Hebrew root should be shorter then - // 10 bytes, and in the other data type the byte - // after 0x1A is > 10 (at least it is in Bybylon's - // Hebrew dictionaries). - root = std::string( block.data + pos + 2, length ); - std::reverse(root.begin(),root.end()); - definition += " (" + root + ")"; - pos += length + 2; - a += length + 1; - } - else - pos++; - } else { - definition += block.data[pos++]; - } - }else definition += block.data[pos++]; - } - convertToUtf8( definition, BGL_TARGET_CHARSET ); - if( !transcription.empty() ) - definition = std::string( "" ) + transcription + "" + definition; - - if ( displayedHeadword.size() ) - convertToUtf8( displayedHeadword, BGL_TARGET_CHARSET ); - - // Alternate forms - while( pos < block.length ) - { - len = (unsigned char)block.data[pos++]; - if( pos + len > block.length ) break; - alternate.reserve( len ); - for(unsigned int a=0;a= '0' && *p <= '9' ) - { - if ( ++totalDigits > 1 ) - break; - } - - if ( totalDigits > 1 ) - { - // Ok, let's add it. - - // Does it contain HTML? If it does, we need to strip it - if ( displayedHeadword.find( '<' ) != string::npos || - displayedHeadword.find( '&' ) != string::npos ) - { - string result = Html::unescapeUtf8( displayedHeadword ); - - if ( result != headword ) - alternates.push_back( result ); - } - else - alternates.push_back(displayedHeadword); - } - } - - entry.headword = headword; - - entry.displayedHeadword = displayedHeadword; - entry.definition = definition; - - entry.alternates = alternates; - - if( block.length ) free( block.data ); - - // Some dictionaries can in fact have an empty headword, so we - // make it non-empty here to differentiate between the end of entries. - if ( entry.headword.empty() ) - entry.headword += ' '; - - return entry; - - break; - default: - ; - } - if( block.length ) free( block.data ); - } - entry.headword = ""; - return entry; -} - - - -void Babylon::convertToUtf8( std::string &s, unsigned int type ) -{ - if( s.size() < 1 ) return; - if( type > 2 ) return; - - if( s.compare( 0, 13, "") == 0 ) - return; - - std::string charset; - switch( type ) - { - case BGL_DEFAULT_CHARSET: - if(!m_defaultCharset.empty()) charset = m_defaultCharset; - else charset = m_sourceCharset; - break; - case BGL_SOURCE_CHARSET: - if(!m_sourceCharset.empty()) charset = m_sourceCharset; - else charset = m_defaultCharset; - break; - case BGL_TARGET_CHARSET: - if(!m_targetCharset.empty()) charset = m_targetCharset; - else charset = m_defaultCharset; - break; - default: - ; - } - - if( charset == "UTF-8" ) - return; - - iconv_t cd = iconv_open( "UTF-8", charset.c_str() ); - if( cd == (iconv_t)(-1) ) - throw exIconv(); - - char *outbuf, *defbuf; - size_t inbufbytes, outbufbytes; - - inbufbytes = s.size(); - outbufbytes = s.size() * 6; - - char *inbuf; - inbuf = (char *)s.data(); - outbuf = (char*)malloc( outbufbytes + 1 ); - if( !outbuf ) - { - iconv_close( cd ); - throw exAllocation(); - } - - memset( outbuf, '\0', outbufbytes + 1 ); - defbuf = outbuf; - while (inbufbytes) { - if (iconv(cd, &inbuf, &inbufbytes, &outbuf, &outbufbytes) == (size_t)-1) { - gdWarning( "\"%s\" - error in iconv conversion\n", inbuf ); - break; -// inbuf++; -// inbufbytes--; - } - } - - // Flush the state. This fixes CP1255 problems. - iconv( cd, 0, 0, &outbuf, &outbufbytes ); - - if( inbufbytes == 0 ) - s = std::string( defbuf ); - - free( defbuf ); - iconv_close( cd ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl_babylon.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl_babylon.hh deleted file mode 100644 index 89c9b8d383..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/bgl_babylon.hh +++ /dev/null @@ -1,235 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2007 by Raul Fernandes and Karl Grill * - * rgbr@yahoo.com.br * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ - -#ifndef BABYLON_H -#define BABYLON_H - -#include -#include - -#include -#include -#include -#if defined( _MSC_VER ) && _MSC_VER < 1800 // VS2012 and older -#include -#else -#include -#endif - -//const std::string bgl_language[] = { -#ifndef blgCode2Int -#define blgCode2Int( index, code0, code1 ) (((uint32_t)index) << 16 ) + (((uint32_t)code1) << 8 ) + (uint32_t)code0 -#endif -const quint32 bgl_language[] = { - blgCode2Int( 0, 'e', 'n' ),// "English", - blgCode2Int( 0, 'f', 'r' ),//"French", - blgCode2Int( 0, 'i', 't' ),//"Italian", - blgCode2Int( 0, 'e', 's' ),//"Spanish", - blgCode2Int( 0, 'n', 'l' ),//"Dutch", - blgCode2Int( 0, 'p', 't' ),//"Portuguese", - blgCode2Int( 0, 'd', 'e' ),//"German", - blgCode2Int( 0, 'r', 'u' ),//"Russian", - blgCode2Int( 0, 'j', 'a' ),//"Japanese", - blgCode2Int( 1, 'z', 'h' ),//"\x01",//"Traditional Chinese", - blgCode2Int( 2, 'z', 'h' ),//"\x02",//"Simplified Chinese", - blgCode2Int( 0, 'e', 'l' ),//"Greek", - blgCode2Int( 0, 'k', 'o' ),//"Korean", - blgCode2Int( 0, 't', 'r' ),//"Turkish", - blgCode2Int( 0, 'h', 'e' ),//"Hebrew", - blgCode2Int( 0, 'a', 'r' ),//"Arabic", - blgCode2Int( 0, 't', 'h' ),//"Thai", - blgCode2Int( 3, 0, 0 ),//"\x03",//"Other", - blgCode2Int( 4, 'z', 'h' ),//"\x04",//"Other Simplified Chinese dialects", - blgCode2Int( 5, 'z', 'h' ),//"\x05",//Other Traditional Chinese dialects", - blgCode2Int( 6, 0, 0 ),//"\x06",//Other Eastern-European languages", - blgCode2Int( 7, 0, 0 ),//"\x07",//Other Western-European languages", - blgCode2Int( 8, 'r', 'u' ),//"\x08",//Other Russian languages", - blgCode2Int( 9, 'j', 'a' ),//"\x09",//Other Japanese languages", - blgCode2Int( 10, 0, 0 ),//"\x0A",//"Other Baltic languages", - blgCode2Int( 11, 'e', 'l' ),//"\x0B",//Other Greek languages", - blgCode2Int( 12, 'k', 'o' ),//"\x0C",//"Other Korean dialects", - blgCode2Int( 13, 't', 'r' ),//"\x0D",//Other Turkish dialects", - blgCode2Int( 14, 't', 'h' ),//"\x0E",//"Other Thai dialects", - blgCode2Int( 0, 'p', 'l' ),//"Polish", - blgCode2Int( 0, 'h', 'u' ),//"Hungarian", - blgCode2Int( 0, 'c', 's' ),//"Czech", - blgCode2Int( 0, 'l', 't' ),//"Lithuanian", - blgCode2Int( 0, 'l', 'v' ),//"Latvian", - blgCode2Int( 0, 'c', 'a' ),//"Catalan", - blgCode2Int( 0, 'h', 'r' ),//"Croatian", - blgCode2Int( 0, 's', 'r' ),//"Serbian", - blgCode2Int( 0, 's', 'k' ),//"Slovak", - blgCode2Int( 0, 's', 'q' ),//"Albanian", - blgCode2Int( 0, 'u', 'r' ),//"Urdu", - blgCode2Int( 0, 's', 'l' ),//"Slovenian", - blgCode2Int( 0, 'e', 't' ),//"Estonian", - blgCode2Int( 0, 'b', 'g' ),//"Bulgarian", - blgCode2Int( 0, 'd', 'a' ),//"Danish", - blgCode2Int( 0, 'f', 'i' ),//"Finnish", - blgCode2Int( 0, 'i', 's' ),//"Icelandic", - blgCode2Int( 0, 'n', 'o' ),//"Norwegian", - blgCode2Int( 0, 'r', 'o' ),//"Romanian", - blgCode2Int( 0, 's', 'v' ),//"Swedish", - blgCode2Int( 0, 'u', 'k' ),//"Ukrainian", - blgCode2Int( 0, 'b', 'e' ),//"Belarusian", - blgCode2Int( 0, 'f', 'a' ),//"Farsi"=Persian, - blgCode2Int( 0, 'e', 'u' ),//"Basque", - blgCode2Int( 0, 'm', 'k' ),//"Macedonian", - blgCode2Int( 0, 'a', 'f' ),//"Afrikaans", - blgCode2Int( 0, 'f', 'o' ),//"Faeroese"=Faroese, - blgCode2Int( 0, 'l', 'a' ),//"Latin", - blgCode2Int( 0, 'e', 'o' ),//"Esperanto", - blgCode2Int( 15, 0, 0 ),//"Tamazight", - blgCode2Int( 0, 'h', 'y' )//"Armenian" -}; - - -const std::string bgl_charsetname[] = { - "Default" , - "Latin", - "Eastern European", - "Cyrillic", - "Japanese", - "Traditional Chinese", - "Simplified Chinese", - "Baltic", - "Greek", - "Korean", - "Turkish", - "Hebrew", - "Arabic", - "Thai" }; - -const std::string bgl_charset[] = { - "WINDOWS-1252", /*Default*/ - "WINDOWS-1252", /*Latin*/ - "ISO-8859-2", /*Eastern European*/ - "WINDOWS-1251", /*Cyriilic*/ - "CP932", /*Japanese*/ - "BIG5", /*Traditional Chinese*/ - "GB18030", /*Simplified Chinese*/ - "CP1257", /*Baltic*/ - "CP1253", /*Greek*/ - "EUC-KR", /*Korean*/ - "ISO-8859-9", /*Turkish*/ - "WINDOWS-1255", /*Hebrew*/ - "CP1256", /*Arabic*/ - "CP874" /*Thai*/ }; - -const std::string partOfSpeech[] = { - "n.", - "adj.", - "v.", - "adv.", - "interj.", - "pron.", - "prep.", - "conj.", - "suff.", - "pref.", - "art." }; - -typedef struct { - unsigned type; - unsigned length; - char * data; -} bgl_block; - -typedef struct { - std::string headword; - std::string definition; - std::string displayedHeadword; - std::vector alternates; -} bgl_entry; - -class Babylon -{ -public: - Babylon( std::string ); - ~Babylon(); - - // Subclass this to store resources - class ResourceHandler - { - public: - - virtual void handleBabylonResource( std::string const & filename, - char const * data, size_t size )=0; - - virtual ~ResourceHandler() - {} - }; - - /// Sets a prefix string to append to each resource reference in hyperlinks. - void setResourcePrefix( std::string const & prefix ) - { m_resourcePrefix = prefix; } - - bool open(); - void close(); - bool readBlock( bgl_block& ); - bool read(std::string &source_charset, std::string &target_charset); - bgl_entry readEntry( ResourceHandler * = 0 ); - - inline std::string title() const { return m_title; } - inline std::string author() const { return m_author; } - inline std::string email() const { return m_email; } - inline std::string description() const { return m_description; } - inline std::string copyright() const { return m_copyright; } - inline quint32 sourceLang() const { return m_sourceLang; }//std::string sourceLang() const { return m_sourceLang; } - inline quint32 targetLang() const { return m_targetLang; }//inline std::string targetLang() const { return m_targetLang; } - inline unsigned int numEntries() const { return m_numEntries; } - inline std::string charset() const { return m_defaultCharset; } - - inline std::string filename() const { return m_filename; } - - std::vector< char > const & getIcon() const - { return icon; } - - enum - { - ParserVersion = 17 - }; - -private: - unsigned int bgl_readnum( int ); - void convertToUtf8( std::string &, unsigned int = 0 ); - - std::string m_filename; - gzFile file; - - std::string m_title; - std::string m_author; - std::string m_email; - std::string m_description; - std::string m_copyright; - quint32 m_sourceLang; //std::string m_sourceLang; - quint32 m_targetLang;//std::string m_targetLang; - unsigned int m_numEntries; - std::string m_defaultCharset; - std::string m_sourceCharset; - std::string m_targetCharset; - std::vector< char > icon; - - std::string m_resourcePrefix; - - enum CHARSET { BGL_DEFAULT_CHARSET, BGL_SOURCE_CHARSET, BGL_TARGET_CHARSET }; -}; - -#endif // BABYLON_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/broken_xrecord.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/broken_xrecord.cc deleted file mode 100644 index d3f1b00a9d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/broken_xrecord.cc +++ /dev/null @@ -1,30 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "broken_xrecord.hh" - -#include - -#ifdef HAVE_X11 -#include -#include -#include -#endif - -bool isRECORDBroken() -{ -#ifdef HAVE_X11 - - char const * vendor = ServerVendor( QX11Info::display() ); - - if ( vendor && strstr( vendor, "X.Org" ) ) - { - int release = VendorRelease( QX11Info::display() ); - - return release >= 10600000 && release < 10701000; - } - -#endif - - return false; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/broken_xrecord.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/broken_xrecord.hh deleted file mode 100644 index 976e10337d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/broken_xrecord.hh +++ /dev/null @@ -1,13 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __BROKEN_XRECORD_HH_INCLUDED__ -#define __BROKEN_XRECORD_HH_INCLUDED__ - -/// Returns true if the RECORD extension is likely to be broken. Under Windows -/// it always returns false. -/// This function is to be removed once the RECORD extension is working again -/// on all the major distributions. -bool isRECORDBroken(); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/btreeidx.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/btreeidx.cc deleted file mode 100644 index 256e396114..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/btreeidx.cc +++ /dev/null @@ -1,1503 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include -#include -#include -#include -#include -#include -#include "gddebug.hh" -#include "wstring_qt.hh" -#include "qt4x5.hh" - -//#define __BTREE_USE_LZO -// LZO mode is experimental and unsupported. Tests didn't show any substantial -// speed improvements. - -#ifdef __BTREE_USE_LZO -#include - -namespace { -struct __LzoInit -{ - __LzoInit() - { - lzo_init(); - } -} __lzoInit; -} - -#else -#include -#endif - -namespace BtreeIndexing { - -using gd::wstring; -using gd::wchar; -using std::pair; - -enum -{ - BtreeMinElements = 64, - BtreeMaxElements = 2048 -}; - -BtreeIndex::BtreeIndex(): - idxFile( 0 ), rootNodeLoaded( false ) -{ -} - -BtreeDictionary::BtreeDictionary( string const & id, - vector< string > const & dictionaryFiles ): - Dictionary::Class( id, dictionaryFiles ) -{ -} - -string const & BtreeDictionary::ensureInitDone() -{ - static string empty; - - return empty; -} - -void BtreeIndex::openIndex( IndexInfo const & indexInfo, - File::Class & file, Mutex & mutex ) -{ - indexNodeSize = indexInfo.btreeMaxElements; - rootOffset = indexInfo.rootOffset; - - idxFile = &file; - idxFileMutex = &mutex; - - rootNodeLoaded = false; - rootNode.clear(); -} - -vector< WordArticleLink > BtreeIndex::findArticles( wstring const & word ) -{ - vector< WordArticleLink > result; - - try - { - wstring folded = Folding::apply( word ); - if( folded.empty() ) - folded = Folding::applyWhitespaceOnly( word ); - - bool exactMatch; - - vector< char > leaf; - uint32_t nextLeaf; - - char const * leafEnd; - - char const * chainOffset = findChainOffsetExactOrPrefix( folded, exactMatch, - leaf, nextLeaf, - leafEnd ); - - if ( chainOffset && exactMatch ) - { - result = readChain( chainOffset ); - - antialias( word, result ); - } - } - catch( std::exception & e ) - { - gdWarning( "Articles searching failed, error: %s\n", e.what() ); - result.clear(); - } - catch(...) - { - qWarning( "Articles searching failed\n" ); - result.clear(); - } - - return result; -} - -class BtreeWordSearchRunnable: public QRunnable -{ - BtreeWordSearchRequest & r; - QSemaphore & hasExited; - -public: - - BtreeWordSearchRunnable( BtreeWordSearchRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~BtreeWordSearchRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -void BtreeWordSearchRunnable::run() -{ - r.run(); -} - -BtreeWordSearchRequest::BtreeWordSearchRequest( BtreeDictionary & dict_, - wstring const & str_, - unsigned minLength_, - int maxSuffixVariation_, - bool allowMiddleMatches_, - unsigned long maxResults_, - bool startRunnable ): - dict( dict_ ), str( str_ ), - maxResults( maxResults_ ), - minLength( minLength_ ), - maxSuffixVariation( maxSuffixVariation_ ), - allowMiddleMatches( allowMiddleMatches_ ) -{ - if( startRunnable ) - { - QThreadPool::globalInstance()->start( - new BtreeWordSearchRunnable( *this, hasExited ) ); - } -} - -void BtreeWordSearchRequest::findMatches() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - QRegExp regexp; - bool useWildcards = false; - if( allowMiddleMatches ) - useWildcards = ( str.find( '*' ) != wstring::npos || - str.find( '?' ) != wstring::npos || - str.find( '[' ) != wstring::npos || - str.find( ']' ) != wstring::npos ); - - wstring folded = Folding::apply( str ); - - int minMatchLength = 0; - - if( useWildcards ) - { - regexp.setPattern( gd::toQString( Folding::applyDiacriticsOnly( Folding::applySimpleCaseOnly( str ) ) ) ); - regexp.setPatternSyntax( QRegExp::WildcardUnix ); - regexp.setCaseSensitivity( Qt::CaseInsensitive ); - - bool bNoLetters = folded.empty(); - wstring foldedWithWildcards; - - if( bNoLetters ) - foldedWithWildcards = Folding::applyWhitespaceOnly( str ); - else - foldedWithWildcards = Folding::apply( str, useWildcards ); - - // Calculate minimum match length - - bool insideSet = false; - bool escaped = false; - for( wstring::size_type x = 0; x < foldedWithWildcards.size(); x++ ) - { - wchar ch = foldedWithWildcards[ x ]; - - if( ch == L'\\' && !escaped ) - { - escaped = true; - continue; - } - - if( ch == L']' && !escaped ) - { - insideSet = false; - continue; - } - - if( insideSet ) - { - escaped = false; - continue; - } - - if( ch == L'[' && !escaped ) - { - minMatchLength += 1; - insideSet = true; - continue; - } - - if( ch == L'*' && !escaped ) - continue; - - escaped = false; - minMatchLength += 1; - } - - // Fill first match chars - - folded.clear(); - folded.reserve( foldedWithWildcards.size() ); - escaped = false; - for( wstring::size_type x = 0; x < foldedWithWildcards.size(); x++ ) - { - wchar ch = foldedWithWildcards[ x ]; - - if( escaped ) - { - if( bNoLetters || ( ch != L'*' && ch != L'?' && ch != L'[' && ch != L']' ) ) - folded.push_back( ch ); - escaped = false; - continue; - } - - if( ch == L'\\' ) - { - if( bNoLetters || folded.empty() ) - { - escaped = true; - continue; - } - else - break; - } - - if( ch == '*' || ch == '?' || ch == '[' || ch == ']' ) - break; - - folded.push_back( ch ); - } - } - else - { - if( folded.empty() ) - folded = Folding::applyWhitespaceOnly( str ); - } - - int initialFoldedSize = folded.size(); - - int charsLeftToChop = 0; - - if ( maxSuffixVariation >= 0 ) - { - charsLeftToChop = initialFoldedSize - (int)minLength; - - if ( charsLeftToChop < 0 ) - charsLeftToChop = 0; - else - if ( charsLeftToChop > maxSuffixVariation ) - charsLeftToChop = maxSuffixVariation; - } - - try - { - for( ; ; ) - { - bool exactMatch; - vector< char > leaf; - uint32_t nextLeaf; - char const * leafEnd; - - char const * chainOffset = dict.findChainOffsetExactOrPrefix( folded, exactMatch, - leaf, nextLeaf, - leafEnd ); - - if ( chainOffset ) - for( ; ; ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - //DPRINTF( "offset = %u, size = %u\n", chainOffset - &leaf.front(), leaf.size() ); - - vector< WordArticleLink > chain = dict.readChain( chainOffset ); - - wstring chainHead = Utf8::decode( chain[ 0 ].word ); - - wstring resultFolded = Folding::apply( chainHead ); - if( resultFolded.empty() ) - resultFolded = Folding::applyWhitespaceOnly( chainHead ); - - if ( ( useWildcards && folded.empty() ) || - ( resultFolded.size() >= folded.size() - && !resultFolded.compare( 0, folded.size(), folded ) ) ) - { - // Exact or prefix match - - Mutex::Lock _( dataMutex ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if( useWildcards ) - { - wstring word = Utf8::decode( chain[ x ].prefix + chain[ x ].word ); - wstring result = Folding::applyDiacriticsOnly( word ); - if( result.size() >= (wstring::size_type)minMatchLength - && regexp.indexIn( gd::toQString( result ) ) == 0 - && regexp.matchedLength() >= minMatchLength ) - { - addMatch( word ); - } - } - else - { - // Skip middle matches, if requested. If suffix variation is specified, - // make sure the string isn't larger than requested. - if ( ( allowMiddleMatches || Folding::apply( Utf8::decode( chain[ x ].prefix ) ).empty() ) && - ( maxSuffixVariation < 0 || (int)resultFolded.size() - initialFoldedSize <= maxSuffixVariation ) ) - addMatch( Utf8::decode( chain[ x ].prefix + chain[ x ].word ) ); - } - } - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if ( matches.size() >= maxResults ) - { - // For now we actually allow more than maxResults if the last - // chain yield more than one result. That's ok and maybe even more - // desirable. - break; - } - } - else - // Neither exact nor a prefix match, end this - break; - - // Fetch new leaf if we're out of chains here - - if ( chainOffset >= leafEnd ) - { - // We're past the current leaf, fetch the next one - - //DPRINTF( "advancing\n" ); - - if ( nextLeaf ) - { - Mutex::Lock _( *dict.idxFileMutex ); - - dict.readNode( nextLeaf, leaf ); - leafEnd = &leaf.front() + leaf.size(); - - nextLeaf = dict.idxFile->read< uint32_t >(); - chainOffset = &leaf.front() + sizeof( uint32_t ); - - uint32_t leafEntries = *(uint32_t *)&leaf.front(); - - if ( leafEntries == 0xffffFFFF ) - { - //DPRINTF( "bah!\n" ); - exit( 1 ); - } - } - else - break; // That was the last leaf - } - } - - if ( charsLeftToChop && !Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - --charsLeftToChop; - folded.resize( folded.size() - 1 ); - } - else - break; - } - } - catch( std::exception & e ) - { - qWarning( "Index searching failed: \"%s\", error: %s\n", - dict.getName().c_str(), e.what() ); - } - catch(...) - { - gdWarning( "Index searching failed: \"%s\"\n", dict.getName().c_str() ); - } -} - -void BtreeWordSearchRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - findMatches(); - - finish(); -} - -BtreeWordSearchRequest::~BtreeWordSearchRequest() -{ - isCancelled.ref(); - hasExited.acquire(); -} - -sptr< Dictionary::WordSearchRequest > BtreeDictionary::prefixMatch( - wstring const & str, unsigned long maxResults ) - throw( std::exception ) -{ - return new BtreeWordSearchRequest( *this, str, 0, -1, true, maxResults ); -} - -sptr< Dictionary::WordSearchRequest > BtreeDictionary::stemmedMatch( - wstring const & str, unsigned minLength, unsigned maxSuffixVariation, - unsigned long maxResults ) - throw( std::exception ) -{ - return new BtreeWordSearchRequest( *this, str, minLength, (int)maxSuffixVariation, - false, maxResults ); -} - -void BtreeIndex::readNode( uint32_t offset, vector< char > & out ) -{ - idxFile->seek( offset ); - - uint32_t uncompressedSize = idxFile->read< uint32_t >(); - uint32_t compressedSize = idxFile->read< uint32_t >(); - - //DPRINTF( "%x,%x\n", uncompressedSize, compressedSize ); - - out.resize( uncompressedSize ); - - vector< unsigned char > compressedData( compressedSize ); - - idxFile->read( &compressedData.front(), compressedData.size() ); - - #ifdef __BTREE_USE_LZO - - lzo_uint decompressedLength = out.size(); - - if ( lzo1x_decompress( &compressedData.front(), compressedData.size(), - (unsigned char *)&out.front(), &decompressedLength, 0 ) - != LZO_E_OK || decompressedLength != out.size() ) - throw exFailedToDecompressNode(); - - #else - - unsigned long decompressedLength = out.size(); - - if ( uncompress( (unsigned char *)&out.front(), - &decompressedLength, - &compressedData.front(), - compressedData.size() ) != Z_OK || - decompressedLength != out.size() ) - throw exFailedToDecompressNode(); - #endif -} - -char const * BtreeIndex::findChainOffsetExactOrPrefix( wstring const & target, - bool & exactMatch, - vector< char > & extLeaf, - uint32_t & nextLeaf, - char const * & leafEnd ) -{ - if ( !idxFile ) - throw exIndexWasNotOpened(); - - Mutex::Lock _( *idxFileMutex ); - - // Lookup the index by traversing the index btree - - vector< wchar > wcharBuffer; - - exactMatch = false; - - // Read a node - - uint32_t currentNodeOffset = rootOffset; - - if ( !rootNodeLoaded ) - { - // Time to load our root node. We do it only once, at the first request. - readNode( rootOffset, rootNode ); - rootNodeLoaded = true; - } - - char const * leaf = &rootNode.front(); - leafEnd = leaf + rootNode.size(); - - if( target.empty() ) - { - //For empty target string we return first chain in index - for( ; ; ) - { - uint32_t leafEntries = *(uint32_t *)leaf; - - if ( leafEntries == 0xffffFFFF ) - { - // A node - currentNodeOffset = *( (uint32_t *)leaf + 1 ); - readNode( currentNodeOffset, extLeaf ); - leaf = &extLeaf.front(); - leafEnd = leaf + extLeaf.size(); - nextLeaf = idxFile->read< uint32_t >(); - } - else - { - // A leaf - return leaf + sizeof( uint32_t ); - } - } - } - - for( ; ; ) - { - // Is it a leaf or a node? - - uint32_t leafEntries = *(uint32_t *)leaf; - - if ( leafEntries == 0xffffFFFF ) - { - // A node - - //DPRINTF( "=>a node\n" ); - - uint32_t const * offsets = (uint32_t *)leaf + 1; - - char const * ptr = leaf + sizeof( uint32_t ) + - ( indexNodeSize + 1 ) * sizeof( uint32_t ); - - // ptr now points to a span of zero-separated strings, up to leafEnd. - // We find our match using a binary search. - - char const * closestString; - - int compareResult; - - char const * window = ptr; - unsigned windowSize = leafEnd - ptr; - - for( ; ; ) - { - // We boldly shoot in the middle of the whole mess, and then adjust - // to the beginning of the string that we've hit. - char const * testPoint = window + windowSize/2; - - closestString = testPoint; - - while( closestString > ptr && closestString[ -1 ] ) - --closestString; - - size_t wordSize = strlen( closestString ); - - if ( wcharBuffer.size() <= wordSize ) - wcharBuffer.resize( wordSize + 1 ); - - long result = Utf8::decode( closestString, wordSize, &wcharBuffer.front() ); - - if ( result < 0 ) - throw Utf8::exCantDecode( closestString ); - - wcharBuffer[ result ] = 0; - - //DPRINTF( "Checking against %s\n", closestString ); - - compareResult = target.compare( &wcharBuffer.front() ); - - if ( !compareResult ) - { - // The target string matches the current one. Finish the search. - break; - } - if ( compareResult < 0 ) - { - // The target string is smaller than the current one. - // Go to the left. - windowSize = closestString - window; - - if ( !windowSize ) - break; - } - else - { - // The target string is larger than the current one. - // Go to the right. - windowSize -= ( closestString - window ) + wordSize + 1; - window = closestString + wordSize + 1; - - if ( !windowSize ) - break; - } - } - - #if 0 - DPRINTF( "The winner is %s, compareResult = %d\n", closestString, compareResult ); - - if ( closestString != ptr ) - { - char const * left = closestString -1; - - while( left != ptr && left[ -1 ] ) - --left; - - DPRINTF( "To the left: %s\n", left ); - } - else - DPRINTF( "To the lest -- nothing\n" ); - - char const * right = closestString + strlen( closestString ) + 1; - - if ( right != leafEnd ) - { - DPRINTF( "To the right: %s\n", right ); - } - else - DPRINTF( "To the right -- nothing\n" ); - #endif - - // Now, whatever the outcome (compareResult) is, we need to find - // entry number for the closestMatch string. - - unsigned entry = 0; - - for( char const * next = ptr; next != closestString; - next += strlen( next ) + 1, ++entry ) ; - - // Ok, now check the outcome - - if ( !compareResult ) - { - // The target string matches the one found. - // Go to the right, since it's there where we store such results. - currentNodeOffset = offsets[ entry + 1 ]; - } - if ( compareResult < 0 ) - { - // The target string is smaller than the one found. - // Go to the left. - currentNodeOffset = offsets[ entry ]; - } - else - { - // The target string is larger than the one found. - // Go to the right. - currentNodeOffset = offsets[ entry + 1 ]; - } - - //DPRINTF( "reading node at %x\n", currentNodeOffset ); - readNode( currentNodeOffset, extLeaf ); - leaf = &extLeaf.front(); - leafEnd = leaf + extLeaf.size(); - } - else - { - //DPRINTF( "=>a leaf\n" ); - // A leaf - - // If this leaf is the root, there's no next leaf, it just can't be. - // We do this check because the file's position indicator just won't - // be in the right place for root node anyway, since we precache it. - nextLeaf = ( currentNodeOffset != rootOffset ? idxFile->read< uint32_t >() : 0 ); - - if ( !leafEntries ) - { - // Empty leaf? This may only be possible for entirely empty trees only. - if ( currentNodeOffset != rootOffset ) - throw exCorruptedChainData(); - else - return 0; // No match - } - - // Build an array containing all chain pointers - char const * ptr = leaf + sizeof( uint32_t ); - - uint32_t chainSize; - - vector< char const * > chainOffsets( leafEntries ); - - { - char const ** nextOffset = &chainOffsets.front(); - - while( leafEntries-- ) - { - *nextOffset++ = ptr; - - memcpy( &chainSize, ptr, sizeof( uint32_t ) ); - - //DPRINTF( "%s + %s\n", ptr + sizeof( uint32_t ), ptr + sizeof( uint32_t ) + strlen( ptr + sizeof( uint32_t ) ) + 1 ); - - ptr += sizeof( uint32_t ) + chainSize; - } - } - - // Now do a binary search in it, aiming to find where our target - // string lands. - - char const ** window = &chainOffsets.front(); - unsigned windowSize = chainOffsets.size(); - - for( ; ; ) - { - //DPRINTF( "window = %u, ws = %u\n", window - &chainOffsets.front(), windowSize ); - - char const ** chainToCheck = window + windowSize/2; - ptr = *chainToCheck; - - memcpy( &chainSize, ptr, sizeof( uint32_t ) ); - ptr += sizeof( uint32_t ); - - size_t wordSize = strlen( ptr ); - - if ( wcharBuffer.size() <= wordSize ) - wcharBuffer.resize( wordSize + 1 ); - - //DPRINTF( "checking agaist word %s, left = %u\n", ptr, leafEntries ); - - long result = Utf8::decode( ptr, wordSize, &wcharBuffer.front() ); - - if ( result < 0 ) - throw Utf8::exCantDecode( ptr ); - - wcharBuffer[ result ] = 0; - - wstring foldedWord = Folding::apply( &wcharBuffer.front() ); - if( foldedWord.empty() ) - foldedWord = Folding::applyWhitespaceOnly( &wcharBuffer.front() ); - - int compareResult = target.compare( foldedWord ); - - if ( !compareResult ) - { - // Exact match -- return and be done - exactMatch = true; - - return ptr - sizeof( uint32_t ); - } - else - if ( compareResult < 0 ) - { - // The target string is smaller than the current one. - // Go to the first half - - windowSize /= 2; - - if ( !windowSize ) - { - // That finishes our search. Since our target string - // landed before the last tested chain, we return a possible - // prefix match against that chain. - return ptr - sizeof( uint32_t ); - } - } - else - { - // The target string is larger than the current one. - // Go to the second half - - windowSize -= windowSize/2 + 1; - - if ( !windowSize ) - { - // That finishes our search. Since our target string - // landed after the last tested chain, we return the next - // chain. If there's no next chain in this leaf, this - // would mean the first element in the next leaf. - if ( chainToCheck == &chainOffsets.back() ) - { - if ( nextLeaf ) - { - readNode( nextLeaf, extLeaf ); - - leafEnd = &extLeaf.front() + extLeaf.size(); - - nextLeaf = idxFile->read< uint32_t >(); - - return &extLeaf.front() + sizeof( uint32_t ); - } - else - return 0; // This was the last leaf - } - else - return chainToCheck[ 1 ]; - } - - window = chainToCheck + 1; - } - } - } - } -} - -vector< WordArticleLink > BtreeIndex::readChain( char const * & ptr ) -{ - uint32_t chainSize; - - memcpy( &chainSize, ptr, sizeof( uint32_t ) ); - - ptr += sizeof( uint32_t ); - - vector< WordArticleLink > result; - - while( chainSize ) - { - string str = ptr; - ptr += str.size() + 1; - - string prefix = ptr; - ptr += prefix.size() + 1; - - uint32_t articleOffset; - - memcpy( &articleOffset, ptr, sizeof( uint32_t ) ); - - ptr += sizeof( uint32_t ); - - result.push_back( WordArticleLink( str, articleOffset, prefix ) ); - - if ( chainSize < str.size() + 1 + prefix.size() + 1 + sizeof( uint32_t ) ) - throw exCorruptedChainData(); - else - chainSize -= str.size() + 1 + prefix.size() + 1 + sizeof( uint32_t ); - } - - return result; -} - -void BtreeIndex::antialias( wstring const & str, - vector< WordArticleLink > & chain ) -{ - wstring caseFolded = Folding::applySimpleCaseOnly( gd::normalize( str ) ); - - for( unsigned x = chain.size(); x--; ) - { - // If after applying case folding to each word they wouldn't match, we - // drop the entry. - if ( Folding::applySimpleCaseOnly( gd::normalize( Utf8::decode( chain[ x ].prefix + chain[ x ].word ) ) ) != - caseFolded ) - chain.erase( chain.begin() + x ); - else - if ( chain[ x ].prefix.size() ) // If there's a prefix, merge it with the word, - // since it's what dictionaries expect - { - chain[ x ].word.insert( 0, chain[ x ].prefix ); - chain[ x ].prefix.clear(); - } - } -} - - -/// A function which recursively creates btree node. -/// The nextIndex iterator is being iterated over and increased when building -/// leaf nodes. -static uint32_t buildBtreeNode( IndexedWords::const_iterator & nextIndex, - size_t indexSize, - File::Class & file, size_t maxElements, - uint32_t & lastLeafLinkOffset ) -{ - // We compress all the node data. This buffer would hold it. - vector< unsigned char > uncompressedData; - - bool isLeaf = indexSize <= maxElements; - - if ( isLeaf ) - { - // A leaf. - - uint32_t totalChainsLength = 0; - - IndexedWords::const_iterator nextWord = nextIndex; - - for( unsigned x = indexSize; x--; ++nextWord ) - { - totalChainsLength += sizeof( uint32_t ); - - vector< WordArticleLink > const & chain = nextWord->second; - - for( unsigned y = 0; y < chain.size(); ++y ) - totalChainsLength += chain[ y ].word.size() + 1 + chain[ y ].prefix.size() + 1 + sizeof( uint32_t ); - } - - uncompressedData.resize( sizeof( uint32_t ) + totalChainsLength ); - - // First uint32_t indicates that this is a leaf. - *(uint32_t *)&uncompressedData.front() = indexSize; - - unsigned char * ptr = &uncompressedData.front() + sizeof( uint32_t ); - - for( unsigned x = indexSize; x--; ++nextIndex ) - { - vector< WordArticleLink > const & chain = nextIndex->second; - - unsigned char * saveSizeHere = ptr; - - ptr += sizeof( uint32_t ); - - uint32_t size = 0; - - for( unsigned y = 0; y < chain.size(); ++y ) - { - memcpy( ptr, chain[ y ].word.c_str(), chain[ y ].word.size() + 1 ); - ptr += chain[ y ].word.size() + 1; - - memcpy( ptr, chain[ y ].prefix.c_str(), chain[ y ].prefix.size() + 1 ); - ptr += chain[ y ].prefix.size() + 1; - - memcpy( ptr, &(chain[ y ].articleOffset), sizeof( uint32_t ) ); - ptr += sizeof( uint32_t ); - - size += chain[ y ].word.size() + 1 + chain[ y ].prefix.size() + 1 + sizeof( uint32_t ); - } - - memcpy( saveSizeHere, &size, sizeof( uint32_t ) ); - } - } - else - { - // A node which will have children. - - uncompressedData.resize( sizeof( uint32_t ) + ( maxElements + 1 ) * sizeof( uint32_t ) ); - - // First uint32_t indicates that this is a node. - *(uint32_t *)&uncompressedData.front() = 0xffffFFFF; - - unsigned prevEntry = 0; - - for( unsigned x = 0; x < maxElements; ++x ) - { - unsigned curEntry = (uint64_t) indexSize * ( x + 1 ) / ( maxElements + 1 ); - - uint32_t offset = buildBtreeNode( nextIndex, - curEntry - prevEntry, - file, maxElements, - lastLeafLinkOffset ); - - memcpy( &uncompressedData.front() + sizeof( uint32_t ) + x * sizeof( uint32_t ), &offset, sizeof( uint32_t ) ); - - size_t sz = nextIndex->first.size() + 1; - - size_t prevSize = uncompressedData.size(); - uncompressedData.resize( prevSize + sz ); - - memcpy( &uncompressedData.front() + prevSize, nextIndex->first.c_str(), - sz ); - - prevEntry = curEntry; - } - - // Rightmost child - uint32_t offset = buildBtreeNode( nextIndex, - indexSize - prevEntry, - file, maxElements, - lastLeafLinkOffset ); - memcpy( &uncompressedData.front() + sizeof( uint32_t ) + - maxElements * sizeof( uint32_t ), &offset, sizeof( offset ) ); - } - - // Save the result. - - #ifdef __BTREE_USE_LZO - - vector< unsigned char > compressedData( uncompressedData.size() + uncompressedData.size() / 16 + 64 + 3 ); - - char workMem[ LZO1X_1_MEM_COMPRESS ]; - - lzo_uint compressedSize; - - if ( lzo1x_1_compress( &uncompressedData.front(), uncompressedData.size(), - &compressedData.front(), &compressedSize, workMem ) - != LZO_E_OK ) - { - FDPRINTF( stderr, "Failed to compress btree node.\n" ); - abort(); - } - - #else - - vector< unsigned char > compressedData( compressBound( uncompressedData.size() ) ); - - unsigned long compressedSize = compressedData.size(); - - if ( compress( &compressedData.front(), &compressedSize, - &uncompressedData.front(), uncompressedData.size() ) != Z_OK ) - { - qFatal( "Failed to compress btree node." ); - abort(); - } - - #endif - - uint32_t offset = file.tell(); - - file.write< uint32_t >( uncompressedData.size() ); - file.write< uint32_t >( compressedSize ); - file.write( &compressedData.front(), compressedSize ); - - if ( isLeaf ) - { - // A link to the next leef, which is zero and which will be updated - // should we happen to have another leaf. - - file.write( ( uint32_t ) 0 ); - - uint32_t here = file.tell(); - - if ( lastLeafLinkOffset ) - { - // Update the previous leaf to have the offset of this one. - file.seek( lastLeafLinkOffset ); - file.write( offset ); - file.seek( here ); - } - - // Make sure next leaf knows where to write its offset for us. - lastLeafLinkOffset = here - sizeof( uint32_t ); - } - - return offset; -} - -void IndexedWords::addWord( wstring const & word, uint32_t articleOffset, unsigned int maxHeadwordSize ) -{ - wchar const * wordBegin = word.c_str(); - string::size_type wordSize = word.size(); - - // Safeguard us against various bugs here. Don't attempt adding words - // which are freakishly huge. - if ( wordSize > maxHeadwordSize ) - { -#define MAX_LOG_WORD_SIZE 500 - string headword; - if( wordSize <= MAX_LOG_WORD_SIZE ) - headword = Utf8::encode( word ); - else - { - std::vector< char > buffer( MAX_LOG_WORD_SIZE * 4 ); - headword = string( &buffer.front(), - Utf8::encode( wordBegin, MAX_LOG_WORD_SIZE, &buffer.front() ) ); - headword += "..."; - } - gdWarning( "Skipped too long headword: \"%s\"", headword.c_str() ); - return; -#undef MAX_LOG_WORD_SIZE - } - - // Skip any leading whitespace - while( *wordBegin && Folding::isWhitespace( *wordBegin ) ) - { - ++wordBegin; - --wordSize; - } - - // Skip any trailing whitespace - while( wordSize && Folding::isWhitespace( wordBegin[ wordSize - 1 ] ) ) - --wordSize; - - wchar const * nextChar = wordBegin; - - vector< char > utfBuffer( wordSize * 4 ); - - int wordsAdded = 0; // Number of stored parts - - for( ; ; ) - { - // Skip any whitespace/punctuation - for( ; ; ++nextChar ) - { - if ( !*nextChar ) // End of string ends everything - { - if( wordsAdded == 0) - { - wstring folded = Folding::applyWhitespaceOnly( wstring( wordBegin, wordSize ) ); - if( !folded.empty() ) - { - iterator i = insert( - IndexedWords::value_type( - string( &utfBuffer.front(), - Utf8::encode( folded.data(), folded.size(), &utfBuffer.front() ) ), - vector< WordArticleLink >() ) ).first; - - // Try to conserve memory somewhat -- slow insertions are ok - i->second.reserve( i->second.size() + 1 ); - - string utfWord( &utfBuffer.front(), - Utf8::encode( wordBegin, wordSize, &utfBuffer.front() ) ); - string utfPrefix; - i->second.push_back( WordArticleLink( utfWord, articleOffset, utfPrefix ) ); - } - } - return; - } - - if ( !Folding::isWhitespace( *nextChar ) && !Folding::isPunct( *nextChar ) ) - break; - } - - // Insert this word - wstring folded = Folding::apply( nextChar ); - - iterator i = insert( - IndexedWords::value_type( - string( &utfBuffer.front(), - Utf8::encode( folded.data(), folded.size(), &utfBuffer.front() ) ), - vector< WordArticleLink >() ) ).first; - - if ( ( i->second.size() < 1024 ) || ( nextChar == wordBegin ) ) // Don't overpopulate chains with middle matches - { - // Try to conserve memory somewhat -- slow insertions are ok - i->second.reserve( i->second.size() + 1 ); - - string utfWord( &utfBuffer.front(), - Utf8::encode( nextChar, wordSize - ( nextChar - wordBegin ), &utfBuffer.front() ) ); - - string utfPrefix( &utfBuffer.front(), - Utf8::encode( wordBegin, nextChar - wordBegin, &utfBuffer.front() ) ); - - i->second.push_back( WordArticleLink( utfWord, articleOffset, utfPrefix ) ); - } - - wordsAdded += 1; - - // Skip all non-whitespace/punctuation - for( ++nextChar; ; ++nextChar ) - { - if ( !*nextChar ) - return; // End of string ends everything - - if ( Folding::isWhitespace( *nextChar ) || Folding::isPunct( *nextChar ) ) - break; - } - } -} - -void IndexedWords::addSingleWord( wstring const & word, uint32_t articleOffset ) -{ - wstring folded = Folding::apply( word ); - if( folded.empty() ) - folded = Folding::applyWhitespaceOnly( word ); - operator []( Utf8::encode( folded ) ).push_back( - WordArticleLink( Utf8::encode( word ), articleOffset ) ); -} - -IndexInfo buildIndex( IndexedWords const & indexedWords, File::Class & file ) -{ - size_t indexSize = indexedWords.size(); - IndexedWords::const_iterator nextIndex = indexedWords.begin(); - - // Skip any empty words. No point in indexing those, and some dictionaries - // are known to have buggy empty-word entries (Stardict's jargon for instance). - - while( indexSize && nextIndex->first.empty() ) - { - indexSize--; - ++nextIndex; - } - - // We try to stick to two-level tree for most dictionaries. Try finding - // the right size for it. - - size_t btreeMaxElements = ( (size_t) sqrt( (double) indexSize ) ) + 1; - - if ( btreeMaxElements < BtreeMinElements ) - btreeMaxElements = BtreeMinElements; - else - if ( btreeMaxElements > BtreeMaxElements ) - btreeMaxElements = BtreeMaxElements; - - GD_DPRINTF( "Building a tree of %u elements\n", (unsigned) btreeMaxElements ); - - - uint32_t lastLeafOffset = 0; - - uint32_t rootOffset = buildBtreeNode( nextIndex, indexSize, - file, btreeMaxElements, - lastLeafOffset ); - - return IndexInfo( btreeMaxElements, rootOffset ); -} - -void BtreeIndex::getAllHeadwords( QSet< QString > & headwords ) -{ - if ( !idxFile ) - throw exIndexWasNotOpened(); - - findArticleLinks( NULL, NULL, &headwords ); -} - -void BtreeIndex::findAllArticleLinks( QVector< WordArticleLink > & articleLinks ) -{ - if ( !idxFile ) - throw exIndexWasNotOpened(); - - QSet< uint32_t > offsets; - - findArticleLinks( &articleLinks, &offsets, NULL ); -} - -void BtreeIndex::findArticleLinks( QVector< WordArticleLink > * articleLinks, - QSet< uint32_t > * offsets, - QSet< QString > *headwords, - QAtomicInt * isCancelled ) -{ - uint32_t currentNodeOffset = rootOffset; - uint32_t nextLeaf = 0; - uint32_t leafEntries; - - Mutex::Lock _( *idxFileMutex ); - - if ( !rootNodeLoaded ) - { - // Time to load our root node. We do it only once, at the first request. - readNode( rootOffset, rootNode ); - rootNodeLoaded = true; - } - - char const * leaf = &rootNode.front(); - char const * leafEnd = leaf + rootNode.size(); - char const * chainPtr = 0; - - vector< char > extLeaf; - - // Find first leaf - - for( ; ; ) - { - leafEntries = *(uint32_t *)leaf; - - if( isCancelled && Qt4x5::AtomicInt::loadAcquire( *isCancelled ) ) - return; - - if ( leafEntries == 0xffffFFFF ) - { - // A node - currentNodeOffset = *( (uint32_t *)leaf + 1 ); - readNode( currentNodeOffset, extLeaf ); - leaf = &extLeaf.front(); - leafEnd = leaf + extLeaf.size(); - nextLeaf = idxFile->read< uint32_t >(); - } - else - { - // A leaf - chainPtr = leaf + sizeof( uint32_t ); - break; - } - } - - if ( !leafEntries ) - { - // Empty leaf? This may only be possible for entirely empty trees only. - if ( currentNodeOffset != rootOffset ) - throw exCorruptedChainData(); - else - return; // No match - } - - // Read all chains - - for( ; ; ) - { - vector< WordArticleLink > result = readChain( chainPtr ); - for( unsigned i = 0; i < result.size(); i++ ) - { - if( isCancelled && Qt4x5::AtomicInt::loadAcquire( *isCancelled ) ) - return; - - if( headwords ) - headwords->insert( QString::fromUtf8( ( result[ i ].prefix + result[ i ].word ).c_str() ) ); - - if( offsets && offsets->contains( result[ i ].articleOffset ) ) - continue; - - if( offsets ) - offsets->insert( result[ i ].articleOffset ); - - if( articleLinks ) - articleLinks->push_back( WordArticleLink( result[ i ].prefix + result[ i ].word, result[ i ].articleOffset ) ); - } - - if ( chainPtr >= leafEnd ) - { - // We're past the current leaf, fetch the next one - - if ( nextLeaf ) - { - readNode( nextLeaf, extLeaf ); - leaf = &extLeaf.front(); - leafEnd = leaf + extLeaf.size(); - - nextLeaf = idxFile->read< uint32_t >(); - chainPtr = leaf + sizeof( uint32_t ); - - leafEntries = *(uint32_t *)leaf; - - if ( leafEntries == 0xffffFFFF ) - throw exCorruptedChainData(); - } - else - break; // That was the last leaf - } - } -} - -void BtreeIndex::getHeadwordsFromOffsets( QList & offsets, - QVector & headwords, - QAtomicInt * isCancelled ) -{ - uint32_t currentNodeOffset = rootOffset; - uint32_t nextLeaf = 0; - uint32_t leafEntries; - - Mutex::Lock _( *idxFileMutex ); - - if ( !rootNodeLoaded ) - { - // Time to load our root node. We do it only once, at the first request. - readNode( rootOffset, rootNode ); - rootNodeLoaded = true; - } - - char const * leaf = &rootNode.front(); - char const * leafEnd = leaf + rootNode.size(); - char const * chainPtr = 0; - - vector< char > extLeaf; - - // Find first leaf - - for( ; ; ) - { - leafEntries = *(uint32_t *)leaf; - - if( isCancelled && Qt4x5::AtomicInt::loadAcquire( *isCancelled ) ) - return; - - if ( leafEntries == 0xffffFFFF ) - { - // A node - currentNodeOffset = *( (uint32_t *)leaf + 1 ); - readNode( currentNodeOffset, extLeaf ); - leaf = &extLeaf.front(); - leafEnd = leaf + extLeaf.size(); - nextLeaf = idxFile->read< uint32_t >(); - } - else - { - // A leaf - chainPtr = leaf + sizeof( uint32_t ); - break; - } - } - - if ( !leafEntries ) - { - // Empty leaf? This may only be possible for entirely empty trees only. - if ( currentNodeOffset != rootOffset ) - throw exCorruptedChainData(); - else - return; // No match - } - - // Read all chains - - QList< uint32_t >::Iterator begOffsets = offsets.begin(); - QList< uint32_t >::Iterator endOffsets = offsets.end(); - - for( ; ; ) - { - vector< WordArticleLink > result = readChain( chainPtr ); - - for( unsigned i = 0; i < result.size(); i++ ) - { - QList< uint32_t >::Iterator it = qBinaryFind( begOffsets, endOffsets, - result.at( i ).articleOffset ); - - if( it != offsets.end() ) - { - if( isCancelled && Qt4x5::AtomicInt::loadAcquire( *isCancelled ) ) - return; - - headwords.append( QString::fromUtf8( ( result[ i ].prefix + result[ i ].word ).c_str() ) ); - offsets.erase( it ); - begOffsets = offsets.begin(); - endOffsets = offsets.end(); - } - - if( offsets.isEmpty() ) - break; - } - - if( offsets.isEmpty() ) - break; - - if ( chainPtr >= leafEnd ) - { - // We're past the current leaf, fetch the next one - - if ( nextLeaf ) - { - readNode( nextLeaf, extLeaf ); - leaf = &extLeaf.front(); - leafEnd = leaf + extLeaf.size(); - - nextLeaf = idxFile->read< uint32_t >(); - chainPtr = leaf + sizeof( uint32_t ); - - leafEntries = *(uint32_t *)leaf; - - if ( leafEntries == 0xffffFFFF ) - throw exCorruptedChainData(); - } - else - break; // That was the last leaf - } - } -} - -bool BtreeDictionary::getHeadwords( QStringList &headwords ) -{ - QSet< QString > setOfHeadwords; - - headwords.clear(); - setOfHeadwords.reserve( getWordCount() ); - - try - { - getAllHeadwords( setOfHeadwords ); - - if( setOfHeadwords.size() ) - { -#if QT_VERSION >= 0x040700 - headwords.reserve( setOfHeadwords.size() ); -#endif - - QSet< QString >::const_iterator it = setOfHeadwords.constBegin(); - QSet< QString >::const_iterator end = setOfHeadwords.constEnd(); - - for( ; it != end; ++it ) - headwords.append( *it ); - } - } - catch( std::exception &ex ) - { - gdWarning( "Failed headwords retrieving for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } - - return headwords.size() > 0; -} - -void BtreeDictionary::getArticleText(uint32_t, QString &, QString & ) -{ -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/btreeidx.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/btreeidx.hh deleted file mode 100644 index 30817a9646..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/btreeidx.hh +++ /dev/null @@ -1,268 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __BTREEIDX_HH_INCLUDED__ -#define __BTREEIDX_HH_INCLUDED__ - -#include "dictionary.hh" -#include "file.hh" - -#include -#include -#include -#include -#include -#include - -#if defined( _MSC_VER ) && _MSC_VER < 1800 // VS2012 and older -#include -#else -#include -#endif - -/// A base for the dictionary which creates a btree index to look up -/// the words. -namespace BtreeIndexing { - -using std::string; -using gd::wstring; -using std::vector; -using std::map; - -enum -{ - /// This is to be bumped up each time the internal format changes. - /// The value isn't used here by itself, it is supposed to be added - /// to each dictionary's internal format version. - FormatVersion = 4 -}; - -// These exceptions which might be thrown during the index traversal - -DEF_EX( exIndexWasNotOpened, "The index wasn't opened", Dictionary::Ex ) -DEF_EX( exFailedToDecompressNode, "Failed to decompress a btree's node", Dictionary::Ex ) -DEF_EX( exCorruptedChainData, "Corrupted chain data in the leaf of a btree encountered", Dictionary::Ex ) - -/// This structure describes a word linked to its translation. The -/// translation is represented as an abstract 32-bit offset. -struct WordArticleLink -{ - string word, prefix; // in utf8 - uint32_t articleOffset; - - WordArticleLink() - {} - - WordArticleLink( string const & word_, uint32_t articleOffset_, string const & prefix_ = string() ): - word( word_ ), prefix( prefix_ ), articleOffset( articleOffset_ ) - {} -}; - -/// Information needed to open the index -struct IndexInfo -{ - uint32_t btreeMaxElements, rootOffset; - - IndexInfo( uint32_t btreeMaxElements_, uint32_t rootOffset_ ): - btreeMaxElements( btreeMaxElements_ ), rootOffset( rootOffset_ ) - {} -}; - -/// Base btree indexing class which allows using what buildIndex() function -/// created. It's quite low-lovel and is basically a set of 'bulding blocks' -/// functions. -class BtreeIndex -{ -public: - - BtreeIndex(); - - /// Opens the index. The file reference is saved to be used for - /// subsequent lookups. - /// The mutex is the one to be locked when working with the file. - void openIndex( IndexInfo const &, File::Class &, Mutex & ); - - /// Finds articles that match the given string. A case-insensitive search - /// is performed. - vector< WordArticleLink > findArticles( wstring const & ); - - /// Find all unique article links in the index - void findAllArticleLinks( QVector< WordArticleLink > & articleLinks ); - - /// Retrieve all unique headwors from index - void getAllHeadwords( QSet< QString > & headwords ); - - /// Find all article links and/or headwords in the index - void findArticleLinks( QVector< WordArticleLink > * articleLinks, - QSet< uint32_t > * offsets, - QSet< QString > * headwords, - QAtomicInt * isCancelled = 0 ); - - /// Retrieve headwords for presented article adresses - void getHeadwordsFromOffsets( QList< uint32_t > & offsets, - QVector< QString > & headwords, - QAtomicInt * isCancelled = 0 ); - -protected: - - /// Finds the offset in the btree leaf for the given word, either matching - /// by an exact match, or by finding the smallest entry that might match - /// by prefix. It can return zero if there isn't even a possible prefx - /// match. The input string must already be folded. The exactMatch is set - /// to true when an exact match is located, and to false otherwise. - /// The located leaf is loaded to 'leaf', and the pointer to the next - /// leaf is saved to 'nextLeaf'. - /// However, due to root node being permanently cached, the 'leaf' passed - /// might not get used at all if the root node was the terminal one. In that - /// case, the returned pointer wouldn't belong to 'leaf' at all. To that end, - /// the leafEnd pointer always holds the pointer to the first byte outside - /// the node data. - char const * findChainOffsetExactOrPrefix( wstring const & target, - bool & exactMatch, - vector< char > & leaf, - uint32_t & nextLeaf, - char const * & leafEnd ); - - /// Reads a node or leaf at the given offset. Just uncompresses its data - /// to the given vector and does nothing more. - void readNode( uint32_t offset, vector< char > & out ); - - /// Reads the word-article links' chain at the given offset. The pointer - /// is updated to point to the next chain, if there's any. - vector< WordArticleLink > readChain( char const * & ); - - /// Drops any alises which arose due to folding. Only case-folded aliases - /// are left. - void antialias( wstring const &, vector< WordArticleLink > & ); - -protected: - - Mutex * idxFileMutex; - File::Class * idxFile; - -private: - - uint32_t indexNodeSize; - uint32_t rootOffset; - bool rootNodeLoaded; - vector< char > rootNode; // We load root note here and keep it at all times, - // since all searches always start with it. -}; - -/// A base for the dictionary that utilizes a btree index build using -/// buildIndex() function declared below. -class BtreeDictionary: public Dictionary::Class, public BtreeIndex -{ -public: - - BtreeDictionary( string const & id, vector< string > const & dictionaryFiles ); - - /// Btree-indexed dictionaries are usually a good source for compound searches. - virtual Dictionary::Features getFeatures() const throw() - { return Dictionary::SuitableForCompoundSearching; } - - /// This function does the search using the btree index. Derivatives usually - /// need not to implement this function. - virtual sptr< Dictionary::WordSearchRequest > prefixMatch( wstring const &, - unsigned long ) - throw( std::exception ); - - virtual sptr< Dictionary::WordSearchRequest > stemmedMatch( wstring const &, - unsigned minLength, - unsigned maxSuffixVariation, - unsigned long maxResults ) - throw( std::exception ); - - virtual bool isLocalDictionary() - { return true; } - - virtual bool getHeadwords( QStringList &headwords ); - - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - string const & ftsIndexName() const - { return ftsIdxName; } - - Mutex & getFtsMutex() - { return ftsIdxMutex; } - - virtual uint32_t getFtsIndexVersion() - { return 0; } - - /// Called before each matching operation to ensure that any child init - /// has completed. Mainly used for deferred init. The default implementation - /// does nothing. - /// The function returns an empty string if the initialization is or was - /// successful, or a human-readable error string otherwise. - virtual string const & ensureInitDone(); - -protected: - Mutex ftsIdxMutex; - string ftsIdxName; - - friend class BtreeWordSearchRequest; - friend class FTSResultsRequest; -}; - -class BtreeWordSearchRequest: public Dictionary::WordSearchRequest -{ - friend class BtreeWordSearchRunnable; -protected: - BtreeDictionary & dict; - wstring str; - unsigned long maxResults; - unsigned minLength; - int maxSuffixVariation; - bool allowMiddleMatches; - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - BtreeWordSearchRequest( BtreeDictionary & dict_, - wstring const & str_, - unsigned minLength_, - int maxSuffixVariation_, - bool allowMiddleMatches_, - unsigned long maxResults_, - bool startRunnable = true ); - - virtual void findMatches(); - - void run(); // Run from another thread by BtreeWordSearchRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~BtreeWordSearchRequest(); -}; - -// Everything below is for building the index data. - -/// This represents the index in its source form, as a map which binds folded -/// words to sequences of their unfolded source forms and the corresponding -/// article offsets. The words are utf8-encoded -- it doesn't break Unicode -/// sorting, but conserves space. -struct IndexedWords: public map< string, vector< WordArticleLink > > -{ - /// Instead of adding to the map directly, use this function. It does folding - /// itself, and for phrases/sentences it adds additional entries beginning with - /// each new word. - void addWord( wstring const & word, uint32_t articleOffset, unsigned int maxHeadwordSize = 256U ); - - /// Differs from addWord() in that it only adds a single entry. We use this - /// for zip's file names. - void addSingleWord( wstring const & word, uint32_t articleOffset ); -}; - -/// Builds the index, as a compressed btree. Returns IndexInfo. -/// All the data is stored to the given file, beginning from its current -/// position. -IndexInfo buildIndex( IndexedWords const &, File::Class & file ); - -} - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chinese.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/chinese.cc deleted file mode 100644 index 0e49e6e37b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chinese.cc +++ /dev/null @@ -1,151 +0,0 @@ -/* This file is (c) 2015 Zhe Wang <0x1997@gmail.com> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "chinese.hh" -#include -#include -#ifdef Q_OS_MAC -#include -#endif -#include -#include -#include "folding.hh" -#include "gddebug.hh" -#include "transliteration.hh" -#include "utf8.hh" - -namespace Chinese { - -class CharacterConversionDictionary: public Transliteration::BaseTransliterationDictionary -{ -#ifdef Q_OS_MAC - opencc_t converter; -#else - opencc::SimpleConverter* converter; -#endif - -public: - - CharacterConversionDictionary( std::string const & id, std::string const & name, - QIcon icon, QString const & openccConfig); - ~CharacterConversionDictionary(); - - std::vector< gd::wstring > getAlternateWritings( gd::wstring const & ) - throw(); -}; - -CharacterConversionDictionary::CharacterConversionDictionary( std::string const & id, - std::string const & name_, - QIcon icon_, - QString const & openccConfig): - Transliteration::BaseTransliterationDictionary( id, name_, icon_, false ), - converter( NULL ) -{ - try { -#ifdef Q_OS_MAC - converter = opencc_open( openccConfig.toLocal8Bit().constData() ); - if( converter == reinterpret_cast< opencc_t >( -1 ) ) - { - gdWarning( "CharacterConversionDictionary: failed to initialize OpenCC from config %s: %s\n", - openccConfig.toLocal8Bit().constData(), opencc_error() ); - } -#else - converter = new opencc::SimpleConverter( openccConfig.toLocal8Bit().constData() ); -#endif - } catch ( std::runtime_error& e ) { - gdWarning( "CharacterConversionDictionary: failed to initialize OpenCC from config %s: %s\n", - openccConfig.toLocal8Bit().constData(), e.what() ); - } -} - -CharacterConversionDictionary::~CharacterConversionDictionary() -{ -#ifdef Q_OS_MAC - if ( converter != NULL && converter != reinterpret_cast< opencc_t >( -1 ) ) - opencc_close( converter ); -#else - if ( converter != NULL ) - delete converter; -#endif -} - -std::vector< gd::wstring > CharacterConversionDictionary::getAlternateWritings( gd::wstring const & str ) - throw() -{ - std::vector< gd::wstring > results; - - if ( converter != NULL ) { - gd::wstring folded = Folding::applySimpleCaseOnly( str ); - std::string input = Utf8::encode( folded ); - std::string output; - gd::wstring result; - - try { -#ifdef Q_OS_MAC - if ( converter != NULL && converter != reinterpret_cast< opencc_t >( -1 ) ) - { - char * tmp = opencc_convert_utf8( converter, input.c_str(), input.length() ); - if( tmp ) - { - output = std::string( tmp ); - opencc_convert_utf8_free( tmp ); - } - else - gdWarning( "OpenCC: convertion failed %s\n", opencc_error() ); - } -#else - output = converter->Convert( input ); -#endif - result = Utf8::decode( output ); - } catch ( std::exception& ex ) { - gdWarning( "OpenCC: convertion failed %s\n", ex.what() ); - } - - if ( !result.empty() && result != folded ) - results.push_back( result ); - } - - return results; -} - -std::vector< sptr< Dictionary::Class > > makeDictionaries( Config::Chinese const & cfg ) - throw( std::exception ) -{ - std::vector< sptr< Dictionary::Class > > result; - -#ifdef Q_OS_LINUX - QString configDir = ""; -#else - QString configDir = Config::getOpenCCDir(); - if( !configDir.isEmpty() ) - configDir += "/"; -#endif - - if ( cfg.enable ) - { - if ( cfg.enableSCToTWConversion ) - { - result.push_back( new CharacterConversionDictionary( "bf1c33a59cbacea8f39b5b5475787cfd", - QCoreApplication::translate( "ChineseConversion", "Simplified to traditional Chinese (Taiwan variant) conversion" ).toUtf8().data(), - QIcon( ":/flags/tw.png" ), configDir + "s2tw.json" ) ); - } - - if ( cfg.enableSCToHKConversion ) - { - result.push_back( new CharacterConversionDictionary( "9e0681fb9e1c0b6c90e6fb46111d96b5", - QCoreApplication::translate( "ChineseConversion", "Simplified to traditional Chinese (Hong Kong variant) conversion" ).toUtf8().data(), - QIcon( ":/flags/hk.png" ), configDir + "s2hk.json" ) ); - } - - if ( cfg.enableTCToSCConversion ) - { - result.push_back( new CharacterConversionDictionary( "0db536ce0bdc52ea30d11a82c5db4a27", - QCoreApplication::translate( "ChineseConversion", "Traditional to simplified Chinese conversion" ).toUtf8().data(), - QIcon( ":/flags/cn.png" ), configDir + "t2s.json" ) ); - } - } - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chinese.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/chinese.hh deleted file mode 100644 index dabd232f57..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chinese.hh +++ /dev/null @@ -1,19 +0,0 @@ -/* This file is (c) 2015 Zhe Wang <0x1997@gmail.com> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __CHINESE_HH_INCLUDED__ -#define __CHINESE_HH_INCLUDED__ - -#include -#include "config.hh" -#include "dictionary.hh" - -/// Chinese character conversion support. -namespace Chinese { - -std::vector< sptr< Dictionary::Class > > makeDictionaries( Config::Chinese const & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.cc deleted file mode 100644 index 7fa6bc9daf..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.cc +++ /dev/null @@ -1,30 +0,0 @@ -/* This file is (c) 2015 Zhe Wang <0x1997@gmail.com> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "chineseconversion.hh" -#include "ui_chineseconversion.h" - -ChineseConversion::ChineseConversion(QWidget * parent, Config::Chinese const & cfg) : - QGroupBox(parent), - ui(new Ui::ChineseConversion) -{ - ui->setupUi( this ); - - setChecked( cfg.enable ); - ui->enableSCToTWConversion->setChecked( cfg.enableSCToTWConversion ); - ui->enableSCToHKConversion->setChecked( cfg.enableSCToHKConversion ); - ui->enableTCToSCConversion->setChecked( cfg.enableTCToSCConversion ); -} - -ChineseConversion::~ChineseConversion() -{ - delete ui; -} - -void ChineseConversion::getConfig( Config::Chinese & cfg ) const -{ - cfg.enable = isChecked(); - cfg.enableSCToTWConversion = ui->enableSCToTWConversion->isChecked(); - cfg.enableSCToHKConversion = ui->enableSCToHKConversion->isChecked(); - cfg.enableTCToSCConversion = ui->enableTCToSCConversion->isChecked(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.hh deleted file mode 100644 index 9bc7cba5d2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* This file is (c) 2015 Zhe Wang <0x1997@gmail.com> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __CHINESE_CONVERSION_HH_INCLUDED__ -#define __CHINESE_CONVERSION_HH_INCLUDED__ - -#include -#include "config.hh" - -namespace Ui { -class ChineseConversion; -} - -class ChineseConversion : public QGroupBox -{ - Q_OBJECT - -public: - ChineseConversion( QWidget * parent, Config::Chinese const & ); - ~ChineseConversion(); - - void getConfig( Config::Chinese & ) const; - -private: - Ui::ChineseConversion *ui; -}; - -#endif // __CHINESE_CONVERSION_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.ui deleted file mode 100644 index 8c50729e38..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chineseconversion.ui +++ /dev/null @@ -1,66 +0,0 @@ - - - ChineseConversion - - - - 0 - 0 - 689 - 128 - - - - - 0 - 0 - - - - GroupBox - - - Enable conversion between simplified and traditional Chinese characters - - - Chinese Con&version - - - true - - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - SC to TC (Taiwan variant) - - - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - SC to TC (Hong Kong variant) - - - - - - - Enable conversion from traditional characters to simplified characters - - - TC to SC - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chunkedstorage.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/chunkedstorage.cc deleted file mode 100644 index aaf11e886d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chunkedstorage.cc +++ /dev/null @@ -1,166 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "chunkedstorage.hh" -#include -#include - -namespace ChunkedStorage { - -enum -{ - ChunkMaxSize = 65536 // Can't be more since it would overflow the address -}; - -Writer::Writer( File::Class & f ): - file( f ), chunkStarted( false ), bufferUsed( 0 ) -{ - // Create a sratchpad at the beginning of file. We use it to write chunk - // table if it would fit, in order to save some seek times. - - char zero[ 4096 ]; - - memset( zero, 0, sizeof( zero ) ); - - scratchPadOffset = file.tell(); - scratchPadSize = sizeof( zero ); - - file.write( zero, sizeof( zero ) ); -} - -uint32_t Writer::startNewBlock() -{ - if ( bufferUsed >= ChunkMaxSize ) - { - // Need to flush first. - saveCurrentChunk(); - } - - chunkStarted = true; - - // The address is comprised of the offset within the chunk (in lower - // 16 bits, always fits there since ChunkMaxSize-1 does) and the - // number of the chunk, which is therefore limited to be 65535 max. - return bufferUsed | ( (uint32_t)offsets.size() << 16 ); -} - -void Writer::addToBlock( void const * data, size_t size ) -{ - if ( !size ) - return; - - if ( buffer.size() - bufferUsed < size ) - buffer.resize( bufferUsed + size ); - - memcpy( &buffer.front() + bufferUsed, data, size ); - - bufferUsed += size; - - chunkStarted = false; -} - -void Writer::saveCurrentChunk() -{ - size_t maxCompressedSize = compressBound( bufferUsed ); - - if ( bufferCompressed.size() < maxCompressedSize ) - bufferCompressed.resize( maxCompressedSize ); - - unsigned long compressedSize = bufferCompressed.size(); - - if ( compress( &bufferCompressed.front(), &compressedSize, - &buffer.front(), bufferUsed ) != Z_OK ) - throw exFailedToCompressChunk(); - - offsets.push_back( file.tell() ); - - file.write( (uint32_t) bufferUsed ); - file.write( (uint32_t) compressedSize ); - file.write( &bufferCompressed.front(), compressedSize ); - - bufferUsed = 0; - - chunkStarted = false; -} - -uint32_t Writer::finish() -{ - if ( bufferUsed || chunkStarted ) - saveCurrentChunk(); - - bool useScratchPad = false; - uint32_t savedOffset = 0; - - if ( scratchPadSize >= offsets.size() * sizeof( uint32_t ) + sizeof( uint32_t ) ) - { - useScratchPad = true; - savedOffset = file.tell(); - file.seek( scratchPadOffset ); - } - - uint32_t offset = file.tell(); - - file.write( (uint32_t) offsets.size() ); - - if ( offsets.size() ) - file.write( &offsets.front(), offsets.size() * sizeof( uint32_t ) ); - - if ( useScratchPad ) - file.seek( savedOffset ); - - offsets.clear(); - chunkStarted = false; - - return offset; -} - -Reader::Reader( File::Class & f, uint32_t offset ): file( f ) -{ - file.seek( offset ); - - uint32_t size = file.read< uint32_t >(); - if ( size == 0 ) - return; - offsets.resize( size ); - file.read( &offsets.front(), offsets.size() * sizeof( uint32_t ) ); -} - -char * Reader::getBlock( uint32_t address, vector< char > & chunk ) -{ - size_t chunkIdx = address >> 16; - - if ( chunkIdx >= offsets.size() ) - throw exAddressOutOfRange(); - - // Read and decompress the chunk - { - file.seek( offsets[ chunkIdx ] ); - - uint32_t uncompressedSize = file.read< uint32_t >(); - uint32_t compressedSize = file.read< uint32_t >(); - - chunk.resize( uncompressedSize ); - - vector< unsigned char > compressedData( compressedSize ); - - file.read( &compressedData.front(), compressedData.size() ); - - unsigned long decompressedLength = chunk.size(); - - if ( uncompress( (unsigned char *)&chunk.front(), - &decompressedLength, - &compressedData.front(), - compressedData.size() ) != Z_OK || - decompressedLength != chunk.size() ) - throw exFailedToDecompressChunk(); - } - - size_t offsetInChunk = address & 0xffFF; - - if ( offsetInChunk > chunk.size() ) // It can be equal to for 0-sized blocks - throw exAddressOutOfRange(); - - return &chunk.front() + offsetInChunk; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chunkedstorage.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/chunkedstorage.hh deleted file mode 100644 index 0ef2a01789..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/chunkedstorage.hh +++ /dev/null @@ -1,94 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __CHUNKEDSTORAGE_HH_INCLUDED__ -#define __CHUNKEDSTORAGE_HH_INCLUDED__ - -#include "ex.hh" -#include "file.hh" - -#include -#if defined( _MSC_VER ) && _MSC_VER < 1800 // VS2012 and older -#include -#else -#include -#endif - -/// A chunked compression storage. We use this for articles' bodies. The idea -/// is to store data in a separately-compressed chunks, much like in dictzip, -/// but without any fancy gzip-compatibility or whatever. Another difference -/// is that any block of data saved is always contained within one chunk, -/// even if its size does exceed its maximum allowed size. This is very -/// handy since we're retrieving the data by the same blocks we used to save -/// it as, that' the only kind of seek we support, really. -namespace ChunkedStorage { - -using std::vector; - -DEF_EX( Ex, "Chunked storage exception", std::exception ) -DEF_EX( exFailedToCompressChunk, "Failed to compress a chunk", Ex ) -DEF_EX( exAddressOutOfRange, "The given chunked address is out of range", Ex ) -DEF_EX( exFailedToDecompressChunk, "Failed to decompress a chunk", Ex ) - -/// This class writes data blocks in chunks. -class Writer -{ - vector< uint32_t > offsets; - File::Class & file; - size_t scratchPadOffset, scratchPadSize; - -public: - - Writer( File::Class & ); - - /// Starts new block. Returns its address. - uint32_t startNewBlock(); - - /// Add data to the previously started block. - void addToBlock( void const * data, size_t size ); - - /// Finishes writing chunks and returns the offset to the chunk table which - /// gets written at the moment of finishing. - uint32_t finish(); - -private: - - /// Indicates that an address was allocated, which would mean the writeout - /// of the pending chunk is required even if its size is zero. - bool chunkStarted; - - // This buffer accumulates the chunk data until either enough data is - // stored (>=ChunkMaxSize), or there's no more data left to store. - vector< unsigned char > buffer; - - // Here we compress the chunk before writing it out to file. - vector< unsigned char > bufferCompressed; - - // The amount of data stored in buffer so far. We keep it separate - // from buffer.size() for performance reasons; the latter one only - // grows, but never shrinks. - size_t bufferUsed; - - void saveCurrentChunk(); -}; - -/// This class reads data blocks previously written by Writer. -class Reader -{ - vector< uint32_t > offsets; - File::Class & file; - -public: - /// Creates reader by giving it a file to read from and the offset returned - /// by Writer::finish(). - Reader( File::Class &, uint32_t ); - - /// Reads the block previously written by Writer, identified by its address. - /// Uses the user-provided storage to load the entire chunk, and then to - /// return a pointer to the requested block inside it. - char * getBlock( uint32_t address, vector< char > & ); -}; - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/config.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/config.cc deleted file mode 100644 index 9b27b31586..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/config.cc +++ /dev/null @@ -1,2091 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "config.hh" -#include -#include -#include -#include "gddebug.hh" - -#if defined( _MSC_VER ) && _MSC_VER < 1800 // VS2012 and older -#include -#else -#include -#endif - -#ifdef Q_OS_WIN32 -#include "shlobj.h" -#endif - -#include "atomic_rename.hh" -#include "qt4x5.hh" - -namespace Config { - -namespace -{ - QDir getHomeDir() - { - if ( isPortableVersion() ) - return QDir( QCoreApplication::applicationDirPath() + "/portable" ); - - QDir result; - - result = QDir::home(); - #ifdef Q_OS_WIN32 - if ( result.cd( "Application Data/GoldenDict" ) ) - return result; - char const * pathInHome = "GoldenDict"; - result = QDir::fromNativeSeparators( QString::fromWCharArray( _wgetenv( L"APPDATA" ) ) ); - #else - char const * pathInHome = ".goldendict"; - #endif - - result.mkpath( pathInHome ); - - if ( !result.cd( pathInHome ) ) - throw exCantUseHomeDir(); - - return result; - } - -} - -ProxyServer::ProxyServer(): enabled( false ), useSystemProxy( false ), type( Socks5 ), port( 3128 ) -{ -} - -HotKey::HotKey(): modifiers( 0 ), key1( 0 ), key2( 0 ) -{ -} - -// Does anyone know how to separate modifiers from the keycode? We'll -// use our own mask. - -uint32_t const keyMask = 0x01FFFFFF; - -HotKey::HotKey( QKeySequence const & seq ): - modifiers( seq[ 0 ] & ~keyMask ), - key1( seq[ 0 ] & keyMask ), - key2( seq[ 1 ] & keyMask ) -{ -} - -QKeySequence HotKey::toKeySequence() const -{ - int v2 = key2 ? ( key2 | modifiers ): 0; - - return QKeySequence( key1 | modifiers, v2 ); -} - -Preferences::Preferences(): - newTabsOpenAfterCurrentOne( false ), - newTabsOpenInBackground( true ), - hideSingleTab( false ), - mruTabOrder ( false ), - hideMenubar( false ), - enableTrayIcon( true ), - startToTray( false ), - closeToTray( true ), - autoStart( false ), - doubleClickTranslates( true ), - selectWordBySingleClick( false ), - escKeyHidesMainWindow( false ), - alwaysOnTop ( false ), - searchInDock ( false ), - - enableMainWindowHotkey( true ), - mainWindowHotkey( QKeySequence( "Ctrl+F11,F11" ) ), - enableClipboardHotkey( true ), - clipboardHotkey( QKeySequence( "Ctrl+C,C" ) ), - - enableScanPopup( true ), - startWithScanPopupOn( false ), - enableScanPopupModifiers( false ), - scanPopupModifiers( 0 ), - scanPopupAltMode( false ), - scanPopupAltModeSecs( 3 ), - scanPopupUseUIAutomation( true ), - scanPopupUseIAccessibleEx( true ), - scanPopupUseGDMessage( true ), - scanToMainWindow( false ), - pronounceOnLoadMain( false ), - pronounceOnLoadPopup( false ), -#ifndef DISABLE_INTERNAL_PLAYER - useExternalPlayer( false ), - useInternalPlayer( true ), -#else - useExternalPlayer( true ), - useInternalPlayer( false ), -#endif - checkForNewReleases( true ), - disallowContentFromOtherSites( false ), - enableWebPlugins( false ), - hideGoldenDictHeader( false ), - zoomFactor( 1 ), - helpZoomFactor( 1 ), - wordsZoomLevel( 0 ), - maxStringsInHistory( 500 ), - storeHistory( 1 ), - alwaysExpandOptionalParts( false ) -, historyStoreInterval( 0 ) -, collapseBigArticles( false ) -, articleSizeLimit( 2000 ) -, maxDictionaryRefsInContextMenu ( 20 ) -#ifndef Q_WS_X11 -, trackClipboardChanges( false ) -#endif -{ -} - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT -Chinese::Chinese(): - enable( false ), - enableSCToTWConversion( true ), - enableSCToHKConversion( true ), - enableTCToSCConversion( true ) -{ -} -#endif - -Romaji::Romaji(): - enable( false ), - enableHepburn( true ), - enableNihonShiki( false ), - enableKunreiShiki( false ), - enableHiragana( true ), - enableKatakana( true ) -{ -} - -Group * Class::getGroup( unsigned id ) -{ - for( int x = 0; x < groups.size(); x++ ) - if( groups.at( x ).id == id ) - return &groups[ x ]; - return 0; -} - -Group const * Class::getGroup( unsigned id ) const -{ - for( int x = 0; x < groups.size(); x++ ) - if( groups.at( x ).id == id ) - return &groups.at( x ); - return 0; -} - -void Events::signalMutedDictionariesChanged() -{ - emit mutedDictionariesChanged(); -} - -namespace { - -MediaWikis makeDefaultMediaWikis( bool enable ) -{ - MediaWikis mw; - - mw.push_back( MediaWiki( "ae6f89aac7151829681b85f035d54e48", "English Wikipedia", "https://en.wikipedia.org/w", enable, "" ) ); - mw.push_back( MediaWiki( "affcf9678e7bfe701c9b071f97eccba3", "English Wiktionary", "https://en.wiktionary.org/w", false, "" ) ); - mw.push_back( MediaWiki( "8e0c1c2b6821dab8bdba8eb869ca7176", "Russian Wikipedia", "https://ru.wikipedia.org/w", false, "" ) ); - mw.push_back( MediaWiki( "b09947600ae3902654f8ad4567ae8567", "Russian Wiktionary", "https://ru.wiktionary.org/w", false, "" ) ); - mw.push_back( MediaWiki( "a8a66331a1242ca2aeb0b4aed361c41d", "German Wikipedia", "https://de.wikipedia.org/w", false, "" ) ); - mw.push_back( MediaWiki( "21c64bca5ec10ba17ff19f3066bc962a", "German Wiktionary", "https://de.wiktionary.org/w", false, "" ) ); - mw.push_back( MediaWiki( "96957cb2ad73a20c7a1d561fc83c253a", "Portuguese Wikipedia", "https://pt.wikipedia.org/w", false, "" ) ); - mw.push_back( MediaWiki( "ed4c3929196afdd93cc08b9a903aad6a", "Portuguese Wiktionary", "https://pt.wiktionary.org/w", false, "" ) ); - mw.push_back( MediaWiki( "f3b4ec8531e52ddf5b10d21e4577a7a2", "Greek Wikipedia", "https://el.wikipedia.org/w", false, "" ) ); - mw.push_back( MediaWiki( "5d45232075d06e002dea72fe3e137da1", "Greek Wiktionary", "https://el.wiktionary.org/w", false, "" ) ); - - return mw; -} - -WebSites makeDefaultWebSites() -{ - WebSites ws; - - ws.push_back( WebSite( "b88cb2898e634c6638df618528284c2d", "Google En-En (Oxford)", "https://www.google.com/dictionary?aq=f&langpair=en|en&q=%GDWORD%&hl=en", false, "" ) ); - ws.push_back( WebSite( "f376365a0de651fd7505e7e5e683aa45", "Urban Dictionary", "https://www.urbandictionary.com/define.php?term=%GDWORD%", false, "" ) ); - ws.push_back( WebSite( "324ca0306187df7511b26d3847f4b07c", "Multitran (En)", "https://multitran.ru/c/m.exe?CL=1&l1=1&s=%GD1251%", false, "" ) ); - ws.push_back( WebSite( "924db471b105299c82892067c0f10787", "Lingvo (En-Ru)", "http://lingvopro.abbyyonline.com/en/Search/en-ru/%GDWORD%", false, "" ) ); - ws.push_back( WebSite( "087a6d65615fb047f4c80eef0a9465db", "Michaelis (Pt-En)", "http://michaelis.uol.com.br/moderno/ingles/index.php?lingua=portugues-ingles&palavra=%GDISO1%", false, "" ) ); - - return ws; -} - -DictServers makeDefaultDictServers() -{ - DictServers ds; - - return ds; -} - -Programs makeDefaultPrograms() -{ - Programs programs; - - // The following list doesn't make a lot of sense under Windows -#ifndef Q_OS_WIN - programs.push_back( Program( false, Program::Audio, "428b4c2b905ef568a43d9a16f59559b0", "Festival", "festival --tts", "" ) ); - programs.push_back( Program( false, Program::Audio, "2cf8b3a60f27e1ac812de0b57c148340", "Espeak", "espeak %GDWORD%", "" ) ); - programs.push_back( Program( false, Program::Html, "4f898f7582596cea518c6b0bfdceb8b3", "Manpages", "man -a --html=/bin/cat %GDWORD%", "" ) ); -#endif - - return programs; -} - -/// Sets option to true of false if node is "1" or "0" respectively, or leaves -/// it intact if it's neither "1" nor "0". -void applyBoolOption( bool & option, QDomNode const & node ) -{ - QString value = node.toElement().text(); - - if ( value == "1" ) - option = true; - else - if ( value == "0" ) - option = false; -} - -Group loadGroup( QDomElement grp, unsigned * nextId = 0 ) -{ - Group g; - - if ( grp.hasAttribute( "id" ) ) - g.id = grp.attribute( "id" ).toUInt(); - else - g.id = nextId ? (*nextId)++ : 0; - - g.name = grp.attribute( "name" ); - g.icon = grp.attribute( "icon" ); - - if ( !grp.attribute( "iconData" ).isEmpty() ) - g.iconData = QByteArray::fromBase64( grp.attribute( "iconData" ).toLatin1() ); - - if ( !grp.attribute( "shortcut" ).isEmpty() ) - g.shortcut = QKeySequence::fromString( grp.attribute( "shortcut" ) ); - - QDomNodeList dicts = grp.elementsByTagName( "dictionary" ); - - for( Qt4x5::Dom::size_type y = 0; y < dicts.length(); ++y ) - g.dictionaries.push_back( DictionaryRef( dicts.item( y ).toElement().text(), - dicts.item( y ).toElement().attribute( "name" ) ) ); - - QDomNode muted = grp.namedItem( "mutedDictionaries" ); - dicts = muted.toElement().elementsByTagName( "mutedDictionary" ); - for( Qt4x5::Dom::size_type x = 0; x < dicts.length(); ++x ) - g.mutedDictionaries.insert( dicts.item( x ).toElement().text() ); - - dicts = muted.toElement().elementsByTagName( "popupMutedDictionary" ); - for( Qt4x5::Dom::size_type x = 0; x < dicts.length(); ++x ) - g.popupMutedDictionaries.insert( dicts.item( x ).toElement().text() ); - - return g; -} - -MutedDictionaries loadMutedDictionaries( QDomNode mutedDictionaries ) -{ - MutedDictionaries result; - - if ( !mutedDictionaries.isNull() ) - { - QDomNodeList nl = mutedDictionaries.toElement(). - elementsByTagName( "mutedDictionary" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - result.insert( nl.item( x ).toElement().text() ); - } - - return result; -} - -void saveMutedDictionaries( QDomDocument & dd, QDomElement & muted, - MutedDictionaries const & mutedDictionaries ) -{ - for( MutedDictionaries::const_iterator i = mutedDictionaries.begin(); - i != mutedDictionaries.end(); ++i ) - { - QDomElement dict = dd.createElement( "mutedDictionary" ); - muted.appendChild( dict ); - - QDomText value = dd.createTextNode( *i ); - dict.appendChild( value ); - } -} - -} - -Class load() throw( exError ) -{ - QString configName = getConfigFileName(); - - bool loadFromTemplate = false; - - if ( !QFile::exists( configName ) ) - { - // Make the default config, save it and return it - Class c; - - #ifdef Q_OS_LINUX - if ( QDir( "/usr/share/stardict/dic" ).exists() ) - c.paths.push_back( Path( "/usr/share/stardict/dic", true ) ); - - if ( QDir( "/usr/share/dictd" ).exists() ) - c.paths.push_back( Path( "/usr/share/dictd", true ) ); - - if ( QDir( "/usr/share/opendict/dictionaries" ).exists() ) - c.paths.push_back( Path( "/usr/share/opendict/dictionaries", true ) ); - - if ( QDir( "/usr/share/goldendict-wordnet" ).exists() ) - c.paths.push_back( Path( "/usr/share/goldendict-wordnet", true ) ); - - if ( QDir( "/usr/share/WyabdcRealPeopleTTS" ).exists() ) - c.soundDirs.push_back( SoundDir( "/usr/share/WyabdcRealPeopleTTS", "WyabdcRealPeopleTTS" ) ); - - if ( QDir( "/usr/share/myspell/dicts" ).exists() ) - c.hunspell.dictionariesPath = "/usr/share/myspell/dicts"; - - #endif - - #ifdef Q_OS_WIN32 - - // get path to Program Files - wchar_t buf[ MAX_PATH ]; - SHGetFolderPathW( NULL, CSIDL_PROGRAM_FILES, NULL, 0, buf ); - QString pathToProgramFiles = QString::fromWCharArray( buf ); - if ( pathToProgramFiles.isEmpty() ) - pathToProgramFiles = "C:\\Program Files"; - - if ( QDir( pathToProgramFiles + "\\StarDict\\dic" ).exists() ) - c.paths.push_back( Path( pathToProgramFiles + "\\StarDict\\dic", true ) ); - - if ( QDir( pathToProgramFiles + "\\StarDict\\WyabdcRealPeopleTTS" ).exists() ) - c.soundDirs.push_back( SoundDir( pathToProgramFiles + "\\StarDict\\WyabdcRealPeopleTTS", "WyabdcRealPeopleTTS" ) ); - else - if ( QDir( pathToProgramFiles + "\\WyabdcRealPeopleTTS" ).exists() ) - c.soundDirs.push_back( SoundDir( pathToProgramFiles + "\\WyabdcRealPeopleTTS", "WyabdcRealPeopleTTS" ) ); - - // #### "C:/Program Files" is bad! will not work for German Windows etc. - // #### should be replaced to system path - -// if ( QDir( "C:/Program Files/StarDict/dic" ).exists() ) -// c.paths.push_back( Path( "C:/Program Files/StarDict/dic", true ) ); -// -// if ( QDir( "C:/Program Files/StarDict/WyabdcRealPeopleTTS" ).exists() ) -// c.soundDirs.push_back( SoundDir( "C:/Program Files/StarDict/WyabdcRealPeopleTTS", "WyabdcRealPeopleTTS" ) ); -// else -// if ( QDir( "C:/Program Files/WyabdcRealPeopleTTS" ).exists() ) -// c.soundDirs.push_back( SoundDir( "C:/Program Files/WyabdcRealPeopleTTS", "WyabdcRealPeopleTTS" ) ); - - #endif - - #ifndef Q_OS_WIN32 - c.preferences.audioPlaybackProgram = "mplayer"; - #endif - - QString possibleMorphologyPath = getProgramDataDir() + "/content/morphology"; - - if ( QDir( possibleMorphologyPath ).exists() ) - c.hunspell.dictionariesPath = possibleMorphologyPath; - - c.mediawikis = makeDefaultMediaWikis( true ); - c.webSites = makeDefaultWebSites(); - c.dictServers = makeDefaultDictServers(); - - // Check if we have a template config file. If we do, load it instead - - configName = getProgramDataDir() + "/content/defconfig"; - loadFromTemplate = QFile( configName ).exists(); - - if ( !loadFromTemplate ) - { - save( c ); - - return c; - } - } - - getStylesDir(); - - QFile configFile( configName ); - - if ( !configFile.open( QFile::ReadOnly ) ) - throw exCantReadConfigFile(); - - QDomDocument dd; - - QString errorStr; - int errorLine, errorColumn; - - if ( !loadFromTemplate ) - { - // Load the config as usual - if ( !dd.setContent( &configFile, false, &errorStr, &errorLine, &errorColumn ) ) - { - GD_DPRINTF( "Error: %s at %d,%d\n", errorStr.toLocal8Bit().constData(), errorLine, errorColumn ); - throw exMalformedConfigFile(); - } - } - else - { - // We need to replace all %PROGRAMDIR% with the program data dir - QByteArray data = configFile.readAll(); - - data.replace( "%PROGRAMDIR%", getProgramDataDir().toUtf8() ); - - QBuffer bufferedData( &data ); - - if ( !dd.setContent( &bufferedData, false, &errorStr, &errorLine, &errorColumn ) ) - { - GD_DPRINTF( "Error: %s at %d,%d\n", errorStr.toLocal8Bit().constData(), errorLine, errorColumn ); - throw exMalformedConfigFile(); - } - } - - configFile.close(); - - QDomNode root = dd.namedItem( "config" ); - - Class c; - - QDomNode paths = root.namedItem( "paths" ); - - if ( !paths.isNull() ) - { - QDomNodeList nl = paths.toElement().elementsByTagName( "path" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - c.paths.push_back( - Path( nl.item( x ).toElement().text(), - nl.item( x ).toElement().attribute( "recursive" ) == "1" ) ); - } - - QDomNode soundDirs = root.namedItem( "sounddirs" ); - - if ( !soundDirs.isNull() ) - { - QDomNodeList nl = soundDirs.toElement().elementsByTagName( "sounddir" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - c.soundDirs.push_back( - SoundDir( nl.item( x ).toElement().text(), - nl.item( x ).toElement().attribute( "name" ), - nl.item( x ).toElement().attribute( "icon" ) ) ); - } - - QDomNode dictionaryOrder = root.namedItem( "dictionaryOrder" ); - - if ( !dictionaryOrder.isNull() ) - c.dictionaryOrder = loadGroup( dictionaryOrder.toElement() ); - - QDomNode inactiveDictionaries = root.namedItem( "inactiveDictionaries" ); - - if ( !inactiveDictionaries.isNull() ) - c.inactiveDictionaries = loadGroup( inactiveDictionaries.toElement() ); - - QDomNode groups = root.namedItem( "groups" ); - - if ( !groups.isNull() ) - { - c.groups.nextId = groups.toElement().attribute( "nextId", "1" ).toUInt(); - - QDomNodeList nl = groups.toElement().elementsByTagName( "group" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - { - QDomElement grp = nl.item( x ).toElement(); - - c.groups.push_back( loadGroup( grp, &c.groups.nextId ) ); - } - } - - QDomNode hunspell = root.namedItem( "hunspell" ); - - if ( !hunspell.isNull() ) - { - c.hunspell.dictionariesPath = hunspell.toElement().attribute( "dictionariesPath" ); - - QDomNodeList nl = hunspell.toElement().elementsByTagName( "enabled" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - c.hunspell.enabledDictionaries.push_back( nl.item( x ).toElement().text() ); - } - - QDomNode transliteration = root.namedItem( "transliteration" ); - - if ( !transliteration.isNull() ) - { - applyBoolOption( c.transliteration.enableRussianTransliteration, - transliteration.namedItem( "enableRussianTransliteration" ) ); - - applyBoolOption( c.transliteration.enableGermanTransliteration, - transliteration.namedItem( "enableGermanTransliteration" ) ); - - applyBoolOption( c.transliteration.enableGreekTransliteration, - transliteration.namedItem( "enableGreekTransliteration" ) ); - - applyBoolOption( c.transliteration.enableBelarusianTransliteration, - transliteration.namedItem( "enableBelarusianTransliteration" ) ); - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - QDomNode chinese = transliteration.namedItem( "chinese" ); - - if ( !chinese.isNull() ) - { - applyBoolOption( c.transliteration.chinese.enable, chinese.namedItem( "enable" ) ); - applyBoolOption( c.transliteration.chinese.enableSCToTWConversion, chinese.namedItem( "enableSCToTWConversion" ) ); - applyBoolOption( c.transliteration.chinese.enableSCToHKConversion, chinese.namedItem( "enableSCToHKConversion" ) ); - applyBoolOption( c.transliteration.chinese.enableTCToSCConversion, chinese.namedItem( "enableTCToSCConversion" ) ); - } -#endif - - QDomNode romaji = transliteration.namedItem( "romaji" ); - - if ( !romaji.isNull() ) - { - applyBoolOption( c.transliteration.romaji.enable, romaji.namedItem( "enable" ) ); - applyBoolOption( c.transliteration.romaji.enableHepburn, romaji.namedItem( "enableHepburn" ) ); - applyBoolOption( c.transliteration.romaji.enableNihonShiki, romaji.namedItem( "enableNihonShiki" ) ); - applyBoolOption( c.transliteration.romaji.enableKunreiShiki, romaji.namedItem( "enableKunreiShiki" ) ); - applyBoolOption( c.transliteration.romaji.enableHiragana, romaji.namedItem( "enableHiragana" ) ); - applyBoolOption( c.transliteration.romaji.enableKatakana, romaji.namedItem( "enableKatakana" ) ); - } - } - - QDomNode forvo = root.namedItem( "forvo" ); - - if ( !forvo.isNull() ) - { - applyBoolOption( c.forvo.enable, - forvo.namedItem( "enable" ) ); - - c.forvo.apiKey = forvo.namedItem( "apiKey" ).toElement().text(); - c.forvo.languageCodes = forvo.namedItem( "languageCodes" ).toElement().text(); - } - else - c.forvo.languageCodes = "en, ru"; // Default demo values - - QDomNode programs = root.namedItem( "programs" ); - - if ( !programs.isNull() ) - { - QDomNodeList nl = programs.toElement().elementsByTagName( "program" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - { - QDomElement pr = nl.item( x ).toElement(); - - Program p; - - p.id = pr.attribute( "id" ); - p.name = pr.attribute( "name" ); - p.commandLine = pr.attribute( "commandLine" ); - p.enabled = ( pr.attribute( "enabled" ) == "1" ); - p.type = (Program::Type)( pr.attribute( "type" ).toInt() ); - p.iconFilename = pr.attribute( "icon" ); - - c.programs.push_back( p ); - } - } - else - c.programs = makeDefaultPrograms(); - - QDomNode mws = root.namedItem( "mediawikis" ); - - if ( !mws.isNull() ) - { - QDomNodeList nl = mws.toElement().elementsByTagName( "mediawiki" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - { - QDomElement mw = nl.item( x ).toElement(); - - MediaWiki w; - - w.id = mw.attribute( "id" ); - w.name = mw.attribute( "name" ); - w.url = mw.attribute( "url" ); - w.enabled = ( mw.attribute( "enabled" ) == "1" ); - w.icon = mw.attribute( "icon" ); - - c.mediawikis.push_back( w ); - } - } - else - { - // When upgrading, populate the list with some choices, but don't enable - // anything. - c.mediawikis = makeDefaultMediaWikis( false ); - } - - QDomNode wss = root.namedItem( "websites" ); - - if ( !wss.isNull() ) - { - QDomNodeList nl = wss.toElement().elementsByTagName( "website" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - { - QDomElement ws = nl.item( x ).toElement(); - - WebSite w; - - w.id = ws.attribute( "id" ); - w.name = ws.attribute( "name" ); - w.url = ws.attribute( "url" ); - w.enabled = ( ws.attribute( "enabled" ) == "1" ); - w.iconFilename = ws.attribute( "icon" ); - - c.webSites.push_back( w ); - } - } - else - { - // Upgrading - c.webSites = makeDefaultWebSites(); - } - - QDomNode dss = root.namedItem( "dictservers" ); - - if ( !dss.isNull() ) - { - QDomNodeList nl = dss.toElement().elementsByTagName( "server" ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - { - QDomElement ds = nl.item( x ).toElement(); - - DictServer d; - - d.id = ds.attribute( "id" ); - d.name = ds.attribute( "name" ); - d.url = ds.attribute( "url" ); - d.enabled = ( ds.attribute( "enabled" ) == "1" ); - d.databases = ds.attribute( "databases" ); - d.strategies = ds.attribute( "strategies" ); - d.iconFilename = ds.attribute( "icon" ); - - c.dictServers.push_back( d ); - } - } - else - { - // Upgrading - c.dictServers = makeDefaultDictServers(); - } - - QDomNode ves = root.namedItem( "voiceEngines" ); - - if ( !ves.isNull() ) - { - QDomNodeList nl = ves.toElement().elementsByTagName( "voiceEngine" ); - - for ( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - { - QDomElement ve = nl.item( x ).toElement(); - VoiceEngine v; - - v.enabled = ve.attribute( "enabled" ) == "1"; - v.id = ve.attribute( "id" ); - v.name = ve.attribute( "name" ); - v.iconFilename = ve.attribute( "icon" ); - v.volume = ve.attribute( "volume", "50" ).toInt(); - if( v.volume < 0 || v.volume > 100 ) - v.volume = 50; - v.rate = ve.attribute( "rate", "50" ).toInt(); - if( v.rate < 0 || v.rate > 100 ) - v.rate = 50; - c.voiceEngines.push_back( v ); - } - } - - c.mutedDictionaries = loadMutedDictionaries( root.namedItem( "mutedDictionaries" ) ); - c.popupMutedDictionaries = loadMutedDictionaries( root.namedItem( "popupMutedDictionaries" ) ); - - QDomNode preferences = root.namedItem( "preferences" ); - - if ( !preferences.isNull() ) - { - c.preferences.interfaceLanguage = preferences.namedItem( "interfaceLanguage" ).toElement().text(); - c.preferences.helpLanguage = preferences.namedItem( "helpLanguage" ).toElement().text(); - c.preferences.displayStyle = preferences.namedItem( "displayStyle" ).toElement().text(); - c.preferences.newTabsOpenAfterCurrentOne = ( preferences.namedItem( "newTabsOpenAfterCurrentOne" ).toElement().text() == "1" ); - c.preferences.newTabsOpenInBackground = ( preferences.namedItem( "newTabsOpenInBackground" ).toElement().text() == "1" ); - c.preferences.hideSingleTab = ( preferences.namedItem( "hideSingleTab" ).toElement().text() == "1" ); - c.preferences.mruTabOrder = ( preferences.namedItem( "mruTabOrder" ).toElement().text() == "1" ); - c.preferences.hideMenubar = ( preferences.namedItem( "hideMenubar" ).toElement().text() == "1" ); - c.preferences.enableTrayIcon = ( preferences.namedItem( "enableTrayIcon" ).toElement().text() == "1" ); - c.preferences.startToTray = ( preferences.namedItem( "startToTray" ).toElement().text() == "1" ); - c.preferences.closeToTray = ( preferences.namedItem( "closeToTray" ).toElement().text() == "1" ); - c.preferences.autoStart = ( preferences.namedItem( "autoStart" ).toElement().text() == "1" ); - c.preferences.alwaysOnTop = ( preferences.namedItem( "alwaysOnTop" ).toElement().text() == "1" ); - c.preferences.searchInDock = ( preferences.namedItem( "searchInDock" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "doubleClickTranslates" ).isNull() ) - c.preferences.doubleClickTranslates = ( preferences.namedItem( "doubleClickTranslates" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "selectWordBySingleClick" ).isNull() ) - c.preferences.selectWordBySingleClick = ( preferences.namedItem( "selectWordBySingleClick" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "escKeyHidesMainWindow" ).isNull() ) - c.preferences.escKeyHidesMainWindow = ( preferences.namedItem( "escKeyHidesMainWindow" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "zoomFactor" ).isNull() ) - c.preferences.zoomFactor = preferences.namedItem( "zoomFactor" ).toElement().text().toDouble(); - - if ( !preferences.namedItem( "helpZoomFactor" ).isNull() ) - c.preferences.helpZoomFactor = preferences.namedItem( "helpZoomFactor" ).toElement().text().toDouble(); - - if ( !preferences.namedItem( "wordsZoomLevel" ).isNull() ) - c.preferences.wordsZoomLevel = preferences.namedItem( "wordsZoomLevel" ).toElement().text().toInt(); - - applyBoolOption( c.preferences.enableMainWindowHotkey, preferences.namedItem( "enableMainWindowHotkey" ) ); - if ( !preferences.namedItem( "mainWindowHotkey" ).isNull() ) - c.preferences.mainWindowHotkey = QKeySequence::fromString( preferences.namedItem( "mainWindowHotkey" ).toElement().text() ); - applyBoolOption( c.preferences.enableClipboardHotkey, preferences.namedItem( "enableClipboardHotkey" ) ); - if ( !preferences.namedItem( "clipboardHotkey" ).isNull() ) - c.preferences.clipboardHotkey = QKeySequence::fromString( preferences.namedItem( "clipboardHotkey" ).toElement().text() ); - - c.preferences.enableScanPopup = ( preferences.namedItem( "enableScanPopup" ).toElement().text() == "1" ); - c.preferences.startWithScanPopupOn = ( preferences.namedItem( "startWithScanPopupOn" ).toElement().text() == "1" ); - c.preferences.enableScanPopupModifiers = ( preferences.namedItem( "enableScanPopupModifiers" ).toElement().text() == "1" ); - c.preferences.scanPopupModifiers = ( preferences.namedItem( "scanPopupModifiers" ).toElement().text().toULong() ); - c.preferences.scanPopupAltMode = ( preferences.namedItem( "scanPopupAltMode" ).toElement().text() == "1" ); - if ( !preferences.namedItem( "scanPopupAltModeSecs" ).isNull() ) - c.preferences.scanPopupAltModeSecs = preferences.namedItem( "scanPopupAltModeSecs" ).toElement().text().toUInt(); - c.preferences.scanToMainWindow = ( preferences.namedItem( "scanToMainWindow" ).toElement().text() == "1" ); - c.preferences.scanPopupUseUIAutomation = ( preferences.namedItem( "scanPopupUseUIAutomation" ).toElement().text() == "1" ); - c.preferences.scanPopupUseIAccessibleEx = ( preferences.namedItem( "scanPopupUseIAccessibleEx" ).toElement().text() == "1" ); - c.preferences.scanPopupUseGDMessage = ( preferences.namedItem( "scanPopupUseGDMessage" ).toElement().text() == "1" ); - - c.preferences.pronounceOnLoadMain = ( preferences.namedItem( "pronounceOnLoadMain" ).toElement().text() == "1" ); - c.preferences.pronounceOnLoadPopup = ( preferences.namedItem( "pronounceOnLoadPopup" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "useExternalPlayer" ).isNull() ) - c.preferences.useExternalPlayer = ( preferences.namedItem( "useExternalPlayer" ).toElement().text() == "1" ); - -#ifndef DISABLE_INTERNAL_PLAYER - if ( !preferences.namedItem( "useInternalPlayer" ).isNull() ) - c.preferences.useInternalPlayer = ( preferences.namedItem( "useInternalPlayer" ).toElement().text() == "1" ); -#else - c.preferences.useInternalPlayer = false; - c.preferences.useExternalPlayer = true; -#endif - - if ( !preferences.namedItem( "audioPlaybackProgram" ).isNull() ) - c.preferences.audioPlaybackProgram = preferences.namedItem( "audioPlaybackProgram" ).toElement().text(); - else - c.preferences.audioPlaybackProgram = "mplayer"; - - QDomNode proxy = preferences.namedItem( "proxyserver" ); - - if ( !proxy.isNull() ) - { - c.preferences.proxyServer.enabled = ( proxy.toElement().attribute( "enabled" ) == "1" ); - c.preferences.proxyServer.useSystemProxy = ( proxy.toElement().attribute( "useSystemProxy" ) == "1" ); - c.preferences.proxyServer.type = ( ProxyServer::Type ) proxy.namedItem( "type" ).toElement().text().toULong(); - c.preferences.proxyServer.host = proxy.namedItem( "host" ).toElement().text(); - c.preferences.proxyServer.port = proxy.namedItem( "port" ).toElement().text().toULong(); - c.preferences.proxyServer.user = proxy.namedItem( "user" ).toElement().text(); - c.preferences.proxyServer.password = proxy.namedItem( "password" ).toElement().text(); - c.preferences.proxyServer.systemProxyUser = proxy.namedItem( "systemProxyUser" ).toElement().text(); - c.preferences.proxyServer.systemProxyPassword = proxy.namedItem( "systemProxyPassword" ).toElement().text(); - } - - if ( !preferences.namedItem( "checkForNewReleases" ).isNull() ) - c.preferences.checkForNewReleases = ( preferences.namedItem( "checkForNewReleases" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "disallowContentFromOtherSites" ).isNull() ) - c.preferences.disallowContentFromOtherSites = ( preferences.namedItem( "disallowContentFromOtherSites" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "enableWebPlugins" ).isNull() ) - c.preferences.enableWebPlugins = ( preferences.namedItem( "enableWebPlugins" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "hideGoldenDictHeader" ).isNull() ) - c.preferences.hideGoldenDictHeader = ( preferences.namedItem( "hideGoldenDictHeader" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "maxStringsInHistory" ).isNull() ) - c.preferences.maxStringsInHistory = preferences.namedItem( "maxStringsInHistory" ).toElement().text().toUInt() ; - - if ( !preferences.namedItem( "storeHistory" ).isNull() ) - c.preferences.storeHistory = preferences.namedItem( "storeHistory" ).toElement().text().toUInt() ; - - if ( !preferences.namedItem( "alwaysExpandOptionalParts" ).isNull() ) - c.preferences.alwaysExpandOptionalParts = preferences.namedItem( "alwaysExpandOptionalParts" ).toElement().text().toUInt() ; - - if ( !preferences.namedItem( "addonStyle" ).isNull() ) - c.preferences.addonStyle = preferences.namedItem( "addonStyle" ).toElement().text(); - - if ( !preferences.namedItem( "historyStoreInterval" ).isNull() ) - c.preferences.historyStoreInterval = preferences.namedItem( "historyStoreInterval" ).toElement().text().toUInt() ; - - if ( !preferences.namedItem( "collapseBigArticles" ).isNull() ) - c.preferences.collapseBigArticles = ( preferences.namedItem( "collapseBigArticles" ).toElement().text() == "1" ); - - if ( !preferences.namedItem( "articleSizeLimit" ).isNull() ) - c.preferences.articleSizeLimit = preferences.namedItem( "articleSizeLimit" ).toElement().text().toUInt() ; - - if ( !preferences.namedItem( "maxDictionaryRefsInContextMenu" ).isNull() ) - c.preferences.maxDictionaryRefsInContextMenu = preferences.namedItem( "maxDictionaryRefsInContextMenu" ).toElement().text().toUShort(); - -#ifndef Q_WS_X11 - if ( !preferences.namedItem( "trackClipboardChanges" ).isNull() ) - c.preferences.trackClipboardChanges = ( preferences.namedItem( "trackClipboardChanges" ).toElement().text() == "1" ); -#endif - - QDomNode fts = preferences.namedItem( "fullTextSearch" ); - - if ( !fts.isNull() ) - { - if ( !fts.namedItem( "searchMode" ).isNull() ) - c.preferences.fts.searchMode = fts.namedItem( "searchMode" ).toElement().text().toInt(); - - if ( !fts.namedItem( "matchCase" ).isNull() ) - c.preferences.fts.matchCase = ( fts.namedItem( "matchCase" ).toElement().text() == "1" ); - - if ( !fts.namedItem( "maxArticlesPerDictionary" ).isNull() ) - c.preferences.fts.maxArticlesPerDictionary = fts.namedItem( "maxArticlesPerDictionary" ).toElement().text().toInt(); - - if ( !fts.namedItem( "maxDistanceBetweenWords" ).isNull() ) - c.preferences.fts.maxDistanceBetweenWords = fts.namedItem( "maxDistanceBetweenWords" ).toElement().text().toInt(); - - if ( !fts.namedItem( "useMaxArticlesPerDictionary" ).isNull() ) - c.preferences.fts.useMaxArticlesPerDictionary = ( fts.namedItem( "useMaxArticlesPerDictionary" ).toElement().text() == "1" ); - - if ( !fts.namedItem( "useMaxDistanceBetweenWords" ).isNull() ) - c.preferences.fts.useMaxDistanceBetweenWords = ( fts.namedItem( "useMaxDistanceBetweenWords" ).toElement().text() == "1" ); - - if ( !fts.namedItem( "dialogGeometry" ).isNull() ) - c.preferences.fts.dialogGeometry = QByteArray::fromBase64( fts.namedItem( "dialogGeometry" ).toElement().text().toLatin1() ); - - if( !fts.namedItem( "disabledTypes" ).isNull() ) - c.preferences.fts.disabledTypes = fts.namedItem( "disabledTypes" ).toElement().text(); - - if ( !fts.namedItem( "enabled" ).isNull() ) - c.preferences.fts.enabled = ( fts.namedItem( "enabled" ).toElement().text() == "1" ); - - if ( !fts.namedItem( "maxDictionarySize" ).isNull() ) - c.preferences.fts.maxDictionarySize = fts.namedItem( "maxDictionarySize" ).toElement().text().toUInt(); - } - - } - - c.lastMainGroupId = root.namedItem( "lastMainGroupId" ).toElement().text().toUInt(); - c.lastPopupGroupId = root.namedItem( "lastPopupGroupId" ).toElement().text().toUInt(); - - QDomNode popupWindowState = root.namedItem( "popupWindowState" ); - - if ( !popupWindowState.isNull() ) - c.popupWindowState = QByteArray::fromBase64( popupWindowState.toElement().text().toLatin1() ); - - QDomNode popupWindowGeometry = root.namedItem( "popupWindowGeometry" ); - - if ( !popupWindowGeometry.isNull() ) - c.popupWindowGeometry = QByteArray::fromBase64( popupWindowGeometry.toElement().text().toLatin1() ); - - c.pinPopupWindow = ( root.namedItem( "pinPopupWindow" ).toElement().text() == "1" ); - - QDomNode mainWindowState = root.namedItem( "mainWindowState" ); - - if ( !mainWindowState.isNull() ) - c.mainWindowState = QByteArray::fromBase64( mainWindowState.toElement().text().toLatin1() ); - - QDomNode mainWindowGeometry = root.namedItem( "mainWindowGeometry" ); - - if ( !mainWindowGeometry.isNull() ) - c.mainWindowGeometry = QByteArray::fromBase64( mainWindowGeometry.toElement().text().toLatin1() ); - - QDomNode helpWindowGeometry = root.namedItem( "helpWindowGeometry" ); - - if ( !helpWindowGeometry.isNull() ) - c.helpWindowGeometry = QByteArray::fromBase64( helpWindowGeometry.toElement().text().toLatin1() ); - - QDomNode helpSplitterState = root.namedItem( "helpSplitterState" ); - - if ( !helpSplitterState.isNull() ) - c.helpSplitterState = QByteArray::fromBase64( helpSplitterState.toElement().text().toLatin1() ); - -#ifdef Q_OS_WIN - QDomNode maximizedMainWindowGeometry = root.namedItem( "maximizedMainWindowGeometry" ); - - if ( !maximizedMainWindowGeometry.isNull() ) - { - int x = 0, y = 0, width = 0, height = 0; - if( !maximizedMainWindowGeometry.namedItem( "x" ).isNull() ) - x = maximizedMainWindowGeometry.namedItem( "x" ).toElement().text().toInt(); - if( !maximizedMainWindowGeometry.namedItem( "y" ).isNull() ) - y = maximizedMainWindowGeometry.namedItem( "y" ).toElement().text().toInt(); - if( !maximizedMainWindowGeometry.namedItem( "width" ).isNull() ) - width = maximizedMainWindowGeometry.namedItem( "width" ).toElement().text().toInt(); - if( !maximizedMainWindowGeometry.namedItem( "height" ).isNull() ) - height = maximizedMainWindowGeometry.namedItem( "height" ).toElement().text().toInt(); - c.maximizedMainWindowGeometry = QRect( x, y, width, height ); - } - - QDomNode normalMainWindowGeometry = root.namedItem( "normalMainWindowGeometry" ); - - if ( !normalMainWindowGeometry.isNull() ) - { - int x = 0, y = 0, width = 0, height = 0; - if( !normalMainWindowGeometry.namedItem( "x" ).isNull() ) - x = normalMainWindowGeometry.namedItem( "x" ).toElement().text().toInt(); - if( !normalMainWindowGeometry.namedItem( "y" ).isNull() ) - y = normalMainWindowGeometry.namedItem( "y" ).toElement().text().toInt(); - if( !normalMainWindowGeometry.namedItem( "width" ).isNull() ) - width = normalMainWindowGeometry.namedItem( "width" ).toElement().text().toInt(); - if( !normalMainWindowGeometry.namedItem( "height" ).isNull() ) - height = normalMainWindowGeometry.namedItem( "height" ).toElement().text().toInt(); - c.normalMainWindowGeometry = QRect( x, y, width, height ); - } -#endif - - QDomNode dictInfoGeometry = root.namedItem( "dictInfoGeometry" ); - - if ( !dictInfoGeometry.isNull() ) - c.dictInfoGeometry = QByteArray::fromBase64( dictInfoGeometry.toElement().text().toLatin1() ); - - QDomNode inspectorGeometry = root.namedItem( "inspectorGeometry" ); - - if ( !inspectorGeometry.isNull() ) - c.inspectorGeometry = QByteArray::fromBase64( inspectorGeometry.toElement().text().toLatin1() ); - - QDomNode timeForNewReleaseCheck = root.namedItem( "timeForNewReleaseCheck" ); - - if ( !timeForNewReleaseCheck.isNull() ) - c.timeForNewReleaseCheck = QDateTime::fromString( timeForNewReleaseCheck.toElement().text(), - Qt::ISODate ); - - c.skippedRelease = root.namedItem( "skippedRelease" ).toElement().text(); - - c.showingDictBarNames = ( root.namedItem( "showingDictBarNames" ).toElement().text() == "1" ); - - c.usingSmallIconsInToolbars = ( root.namedItem( "usingSmallIconsInToolbars" ).toElement().text() == "1" ); - - if ( !root.namedItem( "historyExportPath" ).isNull() ) - c.historyExportPath = root.namedItem( "historyExportPath" ).toElement().text(); - - if ( !root.namedItem( "resourceSavePath" ).isNull() ) - c.resourceSavePath = root.namedItem( "resourceSavePath" ).toElement().text(); - - if ( !root.namedItem( "articleSavePath" ).isNull() ) - c.articleSavePath = root.namedItem( "articleSavePath" ).toElement().text(); - - if ( !root.namedItem( "editDictionaryCommandLine" ).isNull() ) - c.editDictionaryCommandLine = root.namedItem( "editDictionaryCommandLine" ).toElement().text(); - - if ( !root.namedItem( "maxPictureWidth" ).isNull() ) - c.maxPictureWidth = root.namedItem( "maxPictureWidth" ).toElement().text().toInt(); - - if ( !root.namedItem( "maxHeadwordSize" ).isNull() ) - { - unsigned int value = root.namedItem( "maxHeadwordSize" ).toElement().text().toUInt(); - if ( value != 0 ) // 0 is invalid value for our purposes - { - c.maxHeadwordSize = value; - } - } - - QDomNode headwordsDialog = root.namedItem( "headwordsDialog" ); - - if ( !headwordsDialog.isNull() ) - { - if ( !headwordsDialog.namedItem( "searchMode" ).isNull() ) - c.headwordsDialog.searchMode = headwordsDialog.namedItem( "searchMode" ).toElement().text().toInt(); - - if ( !headwordsDialog.namedItem( "matchCase" ).isNull() ) - c.headwordsDialog.matchCase = ( headwordsDialog.namedItem( "matchCase" ).toElement().text() == "1" ); - - if ( !headwordsDialog.namedItem( "autoApply" ).isNull() ) - c.headwordsDialog.autoApply = ( headwordsDialog.namedItem( "autoApply" ).toElement().text() == "1" ); - - if ( !headwordsDialog.namedItem( "headwordsExportPath" ).isNull() ) - c.headwordsDialog.headwordsExportPath = headwordsDialog.namedItem( "headwordsExportPath" ).toElement().text(); - - if ( !headwordsDialog.namedItem( "headwordsDialogGeometry" ).isNull() ) - c.headwordsDialog.headwordsDialogGeometry = QByteArray::fromBase64( headwordsDialog.namedItem( "headwordsDialogGeometry" ).toElement().text().toLatin1() ); - } - - return c; -} - -namespace { -void saveGroup( Group const & data, QDomElement & group ) -{ - QDomDocument dd = group.ownerDocument(); - - QDomAttr id = dd.createAttribute( "id" ); - - id.setValue( QString::number( data.id ) ); - - group.setAttributeNode( id ); - - QDomAttr name = dd.createAttribute( "name" ); - - name.setValue( data.name ); - - group.setAttributeNode( name ); - - if ( data.icon.size() ) - { - QDomAttr icon = dd.createAttribute( "icon" ); - - icon.setValue( data.icon ); - - group.setAttributeNode( icon ); - } - - if ( data.iconData.size() ) - { - QDomAttr iconData = dd.createAttribute( "iconData" ); - - iconData.setValue( QString::fromLatin1( data.iconData.toBase64() ) ); - - group.setAttributeNode( iconData ); - } - - if ( !data.shortcut.isEmpty() ) - { - QDomAttr shortcut = dd.createAttribute( "shortcut" ); - - shortcut.setValue( data.shortcut.toString() ); - - group.setAttributeNode( shortcut ); - } - - for( QVector< DictionaryRef >::const_iterator j = data.dictionaries.begin(); j != data.dictionaries.end(); ++j ) - { - QDomElement dictionary = dd.createElement( "dictionary" ); - - group.appendChild( dictionary ); - - QDomText value = dd.createTextNode( j->id ); - - dictionary.appendChild( value ); - - QDomAttr name = dd.createAttribute( "name" ); - - name.setValue( j->name ); - - dictionary.setAttributeNode( name ); - } - - QDomElement muted = dd.createElement( "mutedDictionaries" ); - group.appendChild( muted ); - - for( MutedDictionaries::const_iterator i = data.mutedDictionaries.begin(); - i != data.mutedDictionaries.end(); ++i ) - { - QDomElement dict = dd.createElement( "mutedDictionary" ); - muted.appendChild( dict ); - - QDomText value = dd.createTextNode( *i ); - dict.appendChild( value ); - } - - for( MutedDictionaries::const_iterator i = data.popupMutedDictionaries.begin(); - i != data.popupMutedDictionaries.end(); ++i ) - { - QDomElement dict = dd.createElement( "popupMutedDictionary" ); - muted.appendChild( dict ); - - QDomText value = dd.createTextNode( *i ); - dict.appendChild( value ); - } -} - -} - -void save( Class const & c ) throw( exError ) -{ - QFile configFile( getConfigFileName() + ".tmp" ); - - if ( !configFile.open( QFile::WriteOnly ) ) - throw exCantWriteConfigFile(); - - QDomDocument dd; - - QDomElement root = dd.createElement( "config" ); - dd.appendChild( root ); - - { - QDomElement paths = dd.createElement( "paths" ); - root.appendChild( paths ); - - for( Paths::const_iterator i = c.paths.begin(); i != c.paths.end(); ++i ) - { - QDomElement path = dd.createElement( "path" ); - paths.appendChild( path ); - - QDomAttr recursive = dd.createAttribute( "recursive" ); - recursive.setValue( i->recursive ? "1" : "0" ); - path.setAttributeNode( recursive ); - - QDomText value = dd.createTextNode( i->path ); - - path.appendChild( value ); - } - } - - { - QDomElement soundDirs = dd.createElement( "sounddirs" ); - root.appendChild( soundDirs ); - - for( SoundDirs::const_iterator i = c.soundDirs.begin(); i != c.soundDirs.end(); ++i ) - { - QDomElement soundDir = dd.createElement( "sounddir" ); - soundDirs.appendChild( soundDir ); - - QDomAttr name = dd.createAttribute( "name" ); - name.setValue( i->name ); - soundDir.setAttributeNode( name ); - - QDomAttr icon = dd.createAttribute( "icon" ); - icon.setValue( i->iconFilename ); - soundDir.setAttributeNode( icon ); - - QDomText value = dd.createTextNode( i->path ); - - soundDir.appendChild( value ); - } - } - - { - QDomElement dictionaryOrder = dd.createElement( "dictionaryOrder" ); - root.appendChild( dictionaryOrder ); - saveGroup( c.dictionaryOrder, dictionaryOrder ); - } - - { - QDomElement inactiveDictionaries = dd.createElement( "inactiveDictionaries" ); - root.appendChild( inactiveDictionaries ); - saveGroup( c.inactiveDictionaries, inactiveDictionaries ); - } - - { - QDomElement groups = dd.createElement( "groups" ); - root.appendChild( groups ); - - QDomAttr nextId = dd.createAttribute( "nextId" ); - nextId.setValue( QString::number( c.groups.nextId ) ); - groups.setAttributeNode( nextId ); - - for( Groups::const_iterator i = c.groups.begin(); i != c.groups.end(); ++i ) - { - QDomElement group = dd.createElement( "group" ); - groups.appendChild( group ); - - saveGroup( *i, group ); - } - } - - { - QDomElement hunspell = dd.createElement( "hunspell" ); - QDomAttr path = dd.createAttribute( "dictionariesPath" ); - path.setValue( c.hunspell.dictionariesPath ); - hunspell.setAttributeNode( path ); - root.appendChild( hunspell ); - - for( int x = 0; x < c.hunspell.enabledDictionaries.size(); ++x ) - { - QDomElement en = dd.createElement( "enabled" ); - QDomText value = dd.createTextNode( c.hunspell.enabledDictionaries.at( x ) ); - - en.appendChild( value ); - hunspell.appendChild( en ); - } - } - - { - // Russian translit - - QDomElement transliteration = dd.createElement( "transliteration" ); - root.appendChild( transliteration ); - - QDomElement opt = dd.createElement( "enableRussianTransliteration" ); - opt.appendChild( dd.createTextNode( c.transliteration.enableRussianTransliteration ? "1":"0" ) ); - transliteration.appendChild( opt ); - - // German translit - - opt = dd.createElement( "enableGermanTransliteration" ); - opt.appendChild( dd.createTextNode( c.transliteration.enableGermanTransliteration ? "1":"0" ) ); - transliteration.appendChild( opt ); - - // Greek translit - - opt = dd.createElement( "enableGreekTransliteration" ); - opt.appendChild( dd.createTextNode( c.transliteration.enableGreekTransliteration ? "1":"0" ) ); - transliteration.appendChild( opt ); - - // Belarusian translit - - opt = dd.createElement( "enableBelarusianTransliteration" ); - opt.appendChild( dd.createTextNode( c.transliteration.enableBelarusianTransliteration ? "1":"0" ) ); - transliteration.appendChild( opt ); - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - // Chinese - - QDomElement chinese = dd.createElement( "chinese" ); - transliteration.appendChild( chinese ); - - opt = dd.createElement( "enable" ); - opt.appendChild( dd.createTextNode( c.transliteration.chinese.enable ? "1":"0" ) ); - chinese.appendChild( opt ); - - opt = dd.createElement( "enableSCToTWConversion" ); - opt.appendChild( dd.createTextNode( c.transliteration.chinese.enableSCToTWConversion ? "1":"0" ) ); - chinese.appendChild( opt ); - - opt = dd.createElement( "enableSCToHKConversion" ); - opt.appendChild( dd.createTextNode( c.transliteration.chinese.enableSCToHKConversion ? "1":"0" ) ); - chinese.appendChild( opt ); - - opt = dd.createElement( "enableTCToSCConversion" ); - opt.appendChild( dd.createTextNode( c.transliteration.chinese.enableTCToSCConversion ? "1":"0" ) ); - chinese.appendChild( opt ); -#endif - - // Romaji - - QDomElement romaji = dd.createElement( "romaji" ); - transliteration.appendChild( romaji ); - - opt = dd.createElement( "enable" ); - opt.appendChild( dd.createTextNode( c.transliteration.romaji.enable ? "1":"0" ) ); - romaji.appendChild( opt ); - - opt = dd.createElement( "enableHepburn" ); - opt.appendChild( dd.createTextNode( c.transliteration.romaji.enableHepburn ? "1":"0" ) ); - romaji.appendChild( opt ); - - opt = dd.createElement( "enableNihonShiki" ); - opt.appendChild( dd.createTextNode( c.transliteration.romaji.enableNihonShiki ? "1":"0" ) ); - romaji.appendChild( opt ); - - opt = dd.createElement( "enableKunreiShiki" ); - opt.appendChild( dd.createTextNode( c.transliteration.romaji.enableKunreiShiki ? "1":"0" ) ); - romaji.appendChild( opt ); - - opt = dd.createElement( "enableHiragana" ); - opt.appendChild( dd.createTextNode( c.transliteration.romaji.enableHiragana ? "1":"0" ) ); - romaji.appendChild( opt ); - - opt = dd.createElement( "enableKatakana" ); - opt.appendChild( dd.createTextNode( c.transliteration.romaji.enableKatakana ? "1":"0" ) ); - romaji.appendChild( opt ); - } - - { - // Forvo - - QDomElement forvo = dd.createElement( "forvo" ); - root.appendChild( forvo ); - - QDomElement opt = dd.createElement( "enable" ); - opt.appendChild( dd.createTextNode( c.forvo.enable ? "1":"0" ) ); - forvo.appendChild( opt ); - - opt = dd.createElement( "apiKey" ); - opt.appendChild( dd.createTextNode( c.forvo.apiKey ) ); - forvo.appendChild( opt ); - - opt = dd.createElement( "languageCodes" ); - opt.appendChild( dd.createTextNode( c.forvo.languageCodes ) ); - forvo.appendChild( opt ); - } - - { - QDomElement mws = dd.createElement( "mediawikis" ); - root.appendChild( mws ); - - for( MediaWikis::const_iterator i = c.mediawikis.begin(); i != c.mediawikis.end(); ++i ) - { - QDomElement mw = dd.createElement( "mediawiki" ); - mws.appendChild( mw ); - - QDomAttr id = dd.createAttribute( "id" ); - id.setValue( i->id ); - mw.setAttributeNode( id ); - - QDomAttr name = dd.createAttribute( "name" ); - name.setValue( i->name ); - mw.setAttributeNode( name ); - - QDomAttr url = dd.createAttribute( "url" ); - url.setValue( i->url ); - mw.setAttributeNode( url ); - - QDomAttr enabled = dd.createAttribute( "enabled" ); - enabled.setValue( i->enabled ? "1" : "0" ); - mw.setAttributeNode( enabled ); - - QDomAttr icon = dd.createAttribute( "icon" ); - icon.setValue( i->icon ); - mw.setAttributeNode( icon ); - } - } - - { - QDomElement wss = dd.createElement( "websites" ); - root.appendChild( wss ); - - for( WebSites::const_iterator i = c.webSites.begin(); i != c.webSites.end(); ++i ) - { - QDomElement ws = dd.createElement( "website" ); - wss.appendChild( ws ); - - QDomAttr id = dd.createAttribute( "id" ); - id.setValue( i->id ); - ws.setAttributeNode( id ); - - QDomAttr name = dd.createAttribute( "name" ); - name.setValue( i->name ); - ws.setAttributeNode( name ); - - QDomAttr url = dd.createAttribute( "url" ); - url.setValue( i->url ); - ws.setAttributeNode( url ); - - QDomAttr enabled = dd.createAttribute( "enabled" ); - enabled.setValue( i->enabled ? "1" : "0" ); - ws.setAttributeNode( enabled ); - - QDomAttr icon = dd.createAttribute( "icon" ); - icon.setValue( i->iconFilename ); - ws.setAttributeNode( icon ); - } - } - - { - QDomElement dss = dd.createElement( "dictservers" ); - root.appendChild( dss ); - - for( DictServers::const_iterator i = c.dictServers.begin(); i != c.dictServers.end(); ++i ) - { - QDomElement ds = dd.createElement( "server" ); - dss.appendChild( ds ); - - QDomAttr id = dd.createAttribute( "id" ); - id.setValue( i->id ); - ds.setAttributeNode( id ); - - QDomAttr name = dd.createAttribute( "name" ); - name.setValue( i->name ); - ds.setAttributeNode( name ); - - QDomAttr url = dd.createAttribute( "url" ); - url.setValue( i->url ); - ds.setAttributeNode( url ); - - QDomAttr enabled = dd.createAttribute( "enabled" ); - enabled.setValue( i->enabled ? "1" : "0" ); - ds.setAttributeNode( enabled ); - - QDomAttr databases = dd.createAttribute( "databases" ); - databases.setValue( i->databases ); - ds.setAttributeNode( databases ); - - QDomAttr strategies = dd.createAttribute( "strategies" ); - strategies.setValue( i->strategies ); - ds.setAttributeNode( strategies ); - - QDomAttr icon = dd.createAttribute( "icon" ); - icon.setValue( i->iconFilename ); - ds.setAttributeNode( icon ); - } - } - - { - QDomElement programs = dd.createElement( "programs" ); - root.appendChild( programs ); - - for( Programs::const_iterator i = c.programs.begin(); i != c.programs.end(); ++i ) - { - QDomElement p = dd.createElement( "program" ); - programs.appendChild( p ); - - QDomAttr id = dd.createAttribute( "id" ); - id.setValue( i->id ); - p.setAttributeNode( id ); - - QDomAttr name = dd.createAttribute( "name" ); - name.setValue( i->name ); - p.setAttributeNode( name ); - - QDomAttr commandLine = dd.createAttribute( "commandLine" ); - commandLine.setValue( i->commandLine ); - p.setAttributeNode( commandLine ); - - QDomAttr enabled = dd.createAttribute( "enabled" ); - enabled.setValue( i->enabled ? "1" : "0" ); - p.setAttributeNode( enabled ); - - QDomAttr type = dd.createAttribute( "type" ); - type.setValue( QString::number( i->type ) ); - p.setAttributeNode( type ); - - QDomAttr icon = dd.createAttribute( "icon" ); - icon.setValue( i->iconFilename ); - p.setAttributeNode( icon ); - } - } - - { - QDomNode ves = dd.createElement( "voiceEngines" ); - root.appendChild( ves ); - - for ( VoiceEngines::const_iterator i = c.voiceEngines.begin(); i != c.voiceEngines.end(); ++i ) - { - QDomElement v = dd.createElement( "voiceEngine" ); - ves.appendChild( v ); - - QDomAttr id = dd.createAttribute( "id" ); - id.setValue( i->id ); - v.setAttributeNode( id ); - - QDomAttr name = dd.createAttribute( "name" ); - name.setValue( i->name ); - v.setAttributeNode( name ); - - QDomAttr enabled = dd.createAttribute( "enabled" ); - enabled.setValue( i->enabled ? "1" : "0" ); - v.setAttributeNode( enabled ); - - QDomAttr icon = dd.createAttribute( "icon" ); - icon.setValue( i->iconFilename ); - v.setAttributeNode( icon ); - - QDomAttr volume = dd.createAttribute( "volume" ); - volume.setValue( QString::number( i->volume ) ); - v.setAttributeNode( volume ); - - QDomAttr rate = dd.createAttribute( "rate" ); - rate.setValue( QString::number( i->rate ) ); - v.setAttributeNode( rate ); - } - } - - { - QDomElement muted = dd.createElement( "mutedDictionaries" ); - root.appendChild( muted ); - saveMutedDictionaries( dd, muted, c.mutedDictionaries ); - } - - { - QDomElement muted = dd.createElement( "popupMutedDictionaries" ); - root.appendChild( muted ); - saveMutedDictionaries( dd, muted, c.popupMutedDictionaries ); - } - - { - QDomElement preferences = dd.createElement( "preferences" ); - root.appendChild( preferences ); - - QDomElement opt = dd.createElement( "interfaceLanguage" ); - opt.appendChild( dd.createTextNode( c.preferences.interfaceLanguage ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "helpLanguage" ); - opt.appendChild( dd.createTextNode( c.preferences.helpLanguage ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "displayStyle" ); - opt.appendChild( dd.createTextNode( c.preferences.displayStyle ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "newTabsOpenAfterCurrentOne" ); - opt.appendChild( dd.createTextNode( c.preferences.newTabsOpenAfterCurrentOne ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "newTabsOpenInBackground" ); - opt.appendChild( dd.createTextNode( c.preferences.newTabsOpenInBackground ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "hideSingleTab" ); - opt.appendChild( dd.createTextNode( c.preferences.hideSingleTab ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "mruTabOrder" ); - opt.appendChild( dd.createTextNode( c.preferences.mruTabOrder ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "hideMenubar" ); - opt.appendChild( dd.createTextNode( c.preferences.hideMenubar ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "enableTrayIcon" ); - opt.appendChild( dd.createTextNode( c.preferences.enableTrayIcon ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "startToTray" ); - opt.appendChild( dd.createTextNode( c.preferences.startToTray ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "closeToTray" ); - opt.appendChild( dd.createTextNode( c.preferences.closeToTray ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "autoStart" ); - opt.appendChild( dd.createTextNode( c.preferences.autoStart ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "doubleClickTranslates" ); - opt.appendChild( dd.createTextNode( c.preferences.doubleClickTranslates ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "selectWordBySingleClick" ); - opt.appendChild( dd.createTextNode( c.preferences.selectWordBySingleClick ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "escKeyHidesMainWindow" ); - opt.appendChild( dd.createTextNode( c.preferences.escKeyHidesMainWindow ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "zoomFactor" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.zoomFactor ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "helpZoomFactor" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.helpZoomFactor ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "wordsZoomLevel" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.wordsZoomLevel ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "enableMainWindowHotkey" ); - opt.appendChild( dd.createTextNode( c.preferences.enableMainWindowHotkey ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "mainWindowHotkey" ); - opt.appendChild( dd.createTextNode( c.preferences.mainWindowHotkey.toKeySequence().toString() ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "enableClipboardHotkey" ); - opt.appendChild( dd.createTextNode( c.preferences.enableClipboardHotkey ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "clipboardHotkey" ); - opt.appendChild( dd.createTextNode( c.preferences.clipboardHotkey.toKeySequence().toString() ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "enableScanPopup" ); - opt.appendChild( dd.createTextNode( c.preferences.enableScanPopup ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "startWithScanPopupOn" ); - opt.appendChild( dd.createTextNode( c.preferences.startWithScanPopupOn ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "enableScanPopupModifiers" ); - opt.appendChild( dd.createTextNode( c.preferences.enableScanPopupModifiers ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "scanPopupModifiers" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.scanPopupModifiers ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "scanPopupAltMode" ); - opt.appendChild( dd.createTextNode( c.preferences.scanPopupAltMode ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "scanPopupAltModeSecs" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.scanPopupAltModeSecs ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "scanToMainWindow" ); - opt.appendChild( dd.createTextNode( c.preferences.scanToMainWindow ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "scanPopupUseUIAutomation" ); - opt.appendChild( dd.createTextNode( c.preferences.scanPopupUseUIAutomation ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "scanPopupUseIAccessibleEx" ); - opt.appendChild( dd.createTextNode( c.preferences.scanPopupUseIAccessibleEx ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "scanPopupUseGDMessage" ); - opt.appendChild( dd.createTextNode( c.preferences.scanPopupUseGDMessage ? "1":"0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "pronounceOnLoadMain" ); - opt.appendChild( dd.createTextNode( c.preferences.pronounceOnLoadMain ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "pronounceOnLoadPopup" ); - opt.appendChild( dd.createTextNode( c.preferences.pronounceOnLoadPopup ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "useExternalPlayer" ); - opt.appendChild( dd.createTextNode( c.preferences.useExternalPlayer ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "useInternalPlayer" ); - opt.appendChild( dd.createTextNode( c.preferences.useInternalPlayer ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "audioPlaybackProgram" ); - opt.appendChild( dd.createTextNode( c.preferences.audioPlaybackProgram ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "alwaysOnTop" ); - opt.appendChild( dd.createTextNode( c.preferences.alwaysOnTop ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "searchInDock" ); - opt.appendChild( dd.createTextNode( c.preferences.searchInDock ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "historyStoreInterval" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.historyStoreInterval ) ) ); - preferences.appendChild( opt ); - - { - QDomElement proxy = dd.createElement( "proxyserver" ); - preferences.appendChild( proxy ); - - QDomAttr enabled = dd.createAttribute( "enabled" ); - enabled.setValue( c.preferences.proxyServer.enabled ? "1" : "0" ); - proxy.setAttributeNode( enabled ); - - QDomAttr useSystemProxy = dd.createAttribute( "useSystemProxy" ); - useSystemProxy.setValue( c.preferences.proxyServer.useSystemProxy ? "1" : "0" ); - proxy.setAttributeNode( useSystemProxy ); - - opt = dd.createElement( "type" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.proxyServer.type ) ) ); - proxy.appendChild( opt ); - - opt = dd.createElement( "host" ); - opt.appendChild( dd.createTextNode( c.preferences.proxyServer.host ) ); - proxy.appendChild( opt ); - - opt = dd.createElement( "port" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.proxyServer.port ) ) ); - proxy.appendChild( opt ); - - opt = dd.createElement( "user" ); - opt.appendChild( dd.createTextNode( c.preferences.proxyServer.user ) ); - proxy.appendChild( opt ); - - opt = dd.createElement( "password" ); - opt.appendChild( dd.createTextNode( c.preferences.proxyServer.password ) ); - proxy.appendChild( opt ); - - opt = dd.createElement( "systemProxyUser" ); - opt.appendChild( dd.createTextNode( c.preferences.proxyServer.systemProxyUser ) ); - proxy.appendChild( opt ); - - opt = dd.createElement( "systemProxyPassword" ); - opt.appendChild( dd.createTextNode( c.preferences.proxyServer.systemProxyPassword ) ); - proxy.appendChild( opt ); - } - - opt = dd.createElement( "checkForNewReleases" ); - opt.appendChild( dd.createTextNode( c.preferences.checkForNewReleases ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "disallowContentFromOtherSites" ); - opt.appendChild( dd.createTextNode( c.preferences.disallowContentFromOtherSites ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "enableWebPlugins" ); - opt.appendChild( dd.createTextNode( c.preferences.enableWebPlugins ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "hideGoldenDictHeader" ); - opt.appendChild( dd.createTextNode( c.preferences.hideGoldenDictHeader ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "maxStringsInHistory" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.maxStringsInHistory ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "storeHistory" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.storeHistory ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "alwaysExpandOptionalParts" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.alwaysExpandOptionalParts ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "addonStyle" ); - opt.appendChild( dd.createTextNode( c.preferences.addonStyle ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "collapseBigArticles" ); - opt.appendChild( dd.createTextNode( c.preferences.collapseBigArticles ? "1" : "0" ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "articleSizeLimit" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.articleSizeLimit ) ) ); - preferences.appendChild( opt ); - - opt = dd.createElement( "maxDictionaryRefsInContextMenu" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.maxDictionaryRefsInContextMenu ) ) ); - preferences.appendChild( opt ); - -#ifndef Q_WS_X11 - opt = dd.createElement( "trackClipboardChanges" ); - opt.appendChild( dd.createTextNode( c.preferences.trackClipboardChanges ? "1" : "0" ) ); - preferences.appendChild( opt ); -#endif - { - QDomNode hd = dd.createElement( "fullTextSearch" ); - preferences.appendChild( hd ); - - QDomElement opt = dd.createElement( "searchMode" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.fts.searchMode ) ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "matchCase" ); - opt.appendChild( dd.createTextNode( c.preferences.fts.matchCase ? "1" : "0" ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "maxArticlesPerDictionary" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.fts.maxArticlesPerDictionary ) ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "maxDistanceBetweenWords" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.fts.maxDistanceBetweenWords ) ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "useMaxArticlesPerDictionary" ); - opt.appendChild( dd.createTextNode( c.preferences.fts.useMaxArticlesPerDictionary ? "1" : "0" ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "useMaxDistanceBetweenWords" ); - opt.appendChild( dd.createTextNode( c.preferences.fts.useMaxDistanceBetweenWords ? "1" : "0" ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "dialogGeometry" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.preferences.fts.dialogGeometry.toBase64() ) ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "disabledTypes" ); - opt.appendChild( dd.createTextNode( c.preferences.fts.disabledTypes ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "enabled" ); - opt.appendChild( dd.createTextNode( c.preferences.fts.enabled ? "1" : "0" ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "maxDictionarySize" ); - opt.appendChild( dd.createTextNode( QString::number( c.preferences.fts.maxDictionarySize ) ) ); - hd.appendChild( opt ); - } - - } - - { - QDomElement opt = dd.createElement( "lastMainGroupId" ); - opt.appendChild( dd.createTextNode( QString::number( c.lastMainGroupId ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "lastPopupGroupId" ); - opt.appendChild( dd.createTextNode( QString::number( c.lastPopupGroupId ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "popupWindowState" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.popupWindowState.toBase64() ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "popupWindowGeometry" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.popupWindowGeometry.toBase64() ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "pinPopupWindow" ); - opt.appendChild( dd.createTextNode( c.pinPopupWindow ? "1" : "0" ) ); - root.appendChild( opt ); - - opt = dd.createElement( "mainWindowState" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.mainWindowState.toBase64() ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "mainWindowGeometry" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.mainWindowGeometry.toBase64() ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "helpWindowGeometry" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.helpWindowGeometry.toBase64() ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "helpSplitterState" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.helpSplitterState.toBase64() ) ) ); - root.appendChild( opt ); - -#ifdef Q_OS_WIN - { - QDomElement maximizedMainWindowGeometry = dd.createElement( "maximizedMainWindowGeometry" ); - root.appendChild( maximizedMainWindowGeometry ); - - opt = dd.createElement( "x" ); - opt.appendChild( dd.createTextNode( QString::number( c.maximizedMainWindowGeometry.x() ) ) ); - maximizedMainWindowGeometry.appendChild( opt ); - - opt = dd.createElement( "y" ); - opt.appendChild( dd.createTextNode( QString::number( c.maximizedMainWindowGeometry.y() ) ) ); - maximizedMainWindowGeometry.appendChild( opt ); - - opt = dd.createElement( "width" ); - opt.appendChild( dd.createTextNode( QString::number( c.maximizedMainWindowGeometry.width() ) ) ); - maximizedMainWindowGeometry.appendChild( opt ); - - opt = dd.createElement( "height" ); - opt.appendChild( dd.createTextNode( QString::number( c.maximizedMainWindowGeometry.height() ) ) ); - maximizedMainWindowGeometry.appendChild( opt ); - - QDomElement normalMainWindowGeometry = dd.createElement( "normalMainWindowGeometry" ); - root.appendChild( normalMainWindowGeometry ); - - opt = dd.createElement( "x" ); - opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.x() ) ) ); - normalMainWindowGeometry.appendChild( opt ); - - opt = dd.createElement( "y" ); - opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.y() ) ) ); - normalMainWindowGeometry.appendChild( opt ); - - opt = dd.createElement( "width" ); - opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.width() ) ) ); - normalMainWindowGeometry.appendChild( opt ); - - opt = dd.createElement( "height" ); - opt.appendChild( dd.createTextNode( QString::number( c.normalMainWindowGeometry.height() ) ) ); - normalMainWindowGeometry.appendChild( opt ); - } -#endif - - opt = dd.createElement( "dictInfoGeometry" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.dictInfoGeometry.toBase64() ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "inspectorGeometry" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.inspectorGeometry.toBase64() ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "timeForNewReleaseCheck" ); - opt.appendChild( dd.createTextNode( c.timeForNewReleaseCheck.toString( Qt::ISODate ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "skippedRelease" ); - opt.appendChild( dd.createTextNode( c.skippedRelease ) ); - root.appendChild( opt ); - - opt = dd.createElement( "showingDictBarNames" ); - opt.appendChild( dd.createTextNode( c.showingDictBarNames ? "1" : "0" ) ); - root.appendChild( opt ); - - opt = dd.createElement( "usingSmallIconsInToolbars" ); - opt.appendChild( dd.createTextNode( c.usingSmallIconsInToolbars ? "1" : "0" ) ); - root.appendChild( opt ); - - if( !c.historyExportPath.isEmpty() ) - { - opt = dd.createElement( "historyExportPath" ); - opt.appendChild( dd.createTextNode( c.historyExportPath ) ); - root.appendChild( opt ); - } - - if( !c.resourceSavePath.isEmpty() ) - { - opt = dd.createElement( "resourceSavePath" ); - opt.appendChild( dd.createTextNode( c.resourceSavePath ) ); - root.appendChild( opt ); - } - - if( !c.articleSavePath.isEmpty() ) - { - opt = dd.createElement( "articleSavePath" ); - opt.appendChild( dd.createTextNode( c.articleSavePath ) ); - root.appendChild( opt ); - } - - opt = dd.createElement( "editDictionaryCommandLine" ); - opt.appendChild( dd.createTextNode( c.editDictionaryCommandLine ) ); - root.appendChild( opt ); - - opt = dd.createElement( "maxPictureWidth" ); - opt.appendChild( dd.createTextNode( QString::number( c.maxPictureWidth ) ) ); - root.appendChild( opt ); - - opt = dd.createElement( "maxHeadwordSize" ); - opt.appendChild( dd.createTextNode( QString::number( c.maxHeadwordSize ) ) ); - root.appendChild( opt ); - } - - { - QDomNode hd = dd.createElement( "headwordsDialog" ); - root.appendChild( hd ); - - QDomElement opt = dd.createElement( "searchMode" ); - opt.appendChild( dd.createTextNode( QString::number( c.headwordsDialog.searchMode ) ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "matchCase" ); - opt.appendChild( dd.createTextNode( c.headwordsDialog.matchCase ? "1" : "0" ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "autoApply" ); - opt.appendChild( dd.createTextNode( c.headwordsDialog.autoApply ? "1" : "0" ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "headwordsExportPath" ); - opt.appendChild( dd.createTextNode( c.headwordsDialog.headwordsExportPath ) ); - hd.appendChild( opt ); - - opt = dd.createElement( "headwordsDialogGeometry" ); - opt.appendChild( dd.createTextNode( QString::fromLatin1( c.headwordsDialog.headwordsDialogGeometry.toBase64() ) ) ); - hd.appendChild( opt ); - } - - QByteArray result( dd.toByteArray() ); - - if ( configFile.write( result ) != result.size() ) - throw exCantWriteConfigFile(); - - configFile.close(); - - renameAtomically( configFile.fileName(), getConfigFileName() ); -} - -QString getConfigFileName() -{ - return getHomeDir().absoluteFilePath( "config" ); -} - -QString getConfigDir() throw( exError ) -{ - return getHomeDir().path() + QDir::separator(); -} - -QString getIndexDir() throw( exError ) -{ - QDir result = getHomeDir(); - - result.mkpath( "index" ); - - if ( !result.cd( "index" ) ) - throw exCantUseIndexDir(); - - return result.path() + QDir::separator(); -} - -QString getPidFileName() throw( exError ) -{ - return getHomeDir().filePath( "pid" ); -} - -QString getHistoryFileName() throw( exError ) -{ - return getHomeDir().filePath( "history" ); -} - -QString getUserCssFileName() throw( exError ) -{ - return getHomeDir().filePath( "article-style.css" ); -} - -QString getUserCssPrintFileName() throw( exError ) -{ - return getHomeDir().filePath( "article-style-print.css" ); -} - -QString getUserQtCssFileName() throw( exError ) -{ - return getHomeDir().filePath( "qt-style.css" ); -} - -QString getProgramDataDir() throw() -{ - if ( isPortableVersion() ) - return QCoreApplication::applicationDirPath(); - - #ifdef PROGRAM_DATA_DIR - return PROGRAM_DATA_DIR; - #else - return QCoreApplication::applicationDirPath(); - #endif -} - -QString getLocDir() throw() -{ - if ( QDir( getProgramDataDir() ).cd( "locale" ) ) - return getProgramDataDir() + "/locale"; - else - return QCoreApplication::applicationDirPath() + "/locale"; -} - -QString getHelpDir() throw() -{ - if ( QDir( getProgramDataDir() ).cd( "help" ) ) - return getProgramDataDir() + "/help"; - else - return QCoreApplication::applicationDirPath() + "/help"; -} - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT -QString getOpenCCDir() throw() -{ -#if defined( Q_OS_WIN ) - if ( QDir( "opencc" ).exists() ) - return "opencc"; - else - return QCoreApplication::applicationDirPath() + "/opencc"; -#elif defined( Q_OS_MAC ) - QString path = QCoreApplication::applicationDirPath() + "/opencc"; - if ( QDir( path ).exists() ) - return path; - - return QString(); -#else - return QString(); -#endif -} -#endif - -bool isPortableVersion() throw() -{ - struct IsPortable - { - bool isPortable; - - IsPortable(): isPortable( QFileInfo( QCoreApplication::applicationDirPath() + "/portable" ).isDir() ) - {} - }; - - static IsPortable p; - - return p.isPortable; -} - -QString getPortableVersionDictionaryDir() throw() -{ - if ( isPortableVersion() ) - return getProgramDataDir() + "/content"; - else - return QString(); -} - -QString getPortableVersionMorphoDir() throw() -{ - if ( isPortableVersion() ) - return getPortableVersionDictionaryDir() + "/morphology"; - else - return QString(); -} - -QString getStylesDir() throw() -{ - QDir result = getHomeDir(); - - result.mkpath( "styles" ); - - if ( !result.cd( "styles" ) ) - return QString(); - - return result.path() + QDir::separator(); -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/config.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/config.hh deleted file mode 100644 index b4cf5ffbdd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/config.hh +++ /dev/null @@ -1,702 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __CONFIG_HH_INCLUDED__ -#define __CONFIG_HH_INCLUDED__ - -#include -#include -#include -#include -#include -#include -#include -#include "ex.hh" - -#ifdef Q_OS_WIN -#include -#endif - -/// GoldenDict's configuration -namespace Config { - -/// Dictionaries which are temporarily disabled via the dictionary bar. -typedef QSet< QString > MutedDictionaries; - -#ifdef Q_OS_WIN -#pragma pack(push,4) -#endif - -/// A path where to search for the dictionaries -struct Path -{ - QString path; - bool recursive; - - Path(): recursive( false ) {} - Path( QString const & path_, bool recursive_ ): - path( path_ ), recursive( recursive_ ) {} - - bool operator == ( Path const & other ) const - { return path == other.path && recursive == other.recursive; } -}; - -/// A list of paths where to search for the dictionaries -typedef QVector< Path > Paths; - -/// A directory holding bunches of audiofiles, which is indexed into a separate -/// dictionary. -struct SoundDir -{ - QString path, name; - QString iconFilename; - - SoundDir() - {} - - SoundDir( QString const & path_, QString const & name_, QString iconFilename_ = "" ): - path( path_ ), name( name_ ), iconFilename( iconFilename_ ) - {} - - bool operator == ( SoundDir const & other ) const - { return path == other.path && name == other.name && iconFilename == other.iconFilename; } -}; - -/// A list of SoundDirs -typedef QVector< SoundDir > SoundDirs; - -struct DictionaryRef -{ - QString id; // Dictionrary id, which is usually an md5 hash - QString name; // Dictionary name, used to recover when its id changes - - DictionaryRef() - {} - - DictionaryRef( QString const & id_, QString const & name_ ): - id( id_ ), name( name_ ) {} - - bool operator == ( DictionaryRef const & other ) const - { return id == other.id && name == other.name; } -}; - -/// A dictionary group -struct Group -{ - unsigned id; - QString name, icon; - QByteArray iconData; - QKeySequence shortcut; - QVector< DictionaryRef > dictionaries; - Config::MutedDictionaries mutedDictionaries; // Disabled via dictionary bar - Config::MutedDictionaries popupMutedDictionaries; // Disabled via dictionary bar in popup - - Group(): id( 0 ) {} - - bool operator == ( Group const & other ) const - { return id == other.id && name == other.name && icon == other.icon && - dictionaries == other.dictionaries && shortcut == other.shortcut && - mutedDictionaries == other.mutedDictionaries && - popupMutedDictionaries == other.popupMutedDictionaries && - iconData == other.iconData; } - - bool operator != ( Group const & other ) const - { return ! operator == ( other ); } -}; - -/// All the groups -struct Groups: public QVector< Group > -{ - unsigned nextId; // Id to use to create the group next time - - Groups(): nextId( 1 ) - {} -}; - -/// Proxy server configuration -struct ProxyServer -{ - bool enabled; - bool useSystemProxy; - - enum Type - { - Socks5 = 0, - HttpConnect, - HttpGet - } type; - - QString host; - unsigned port; - QString user, password; - QString systemProxyUser, systemProxyPassword; - - ProxyServer(); -}; - -// A hotkey -- currently qt modifiers plus one or two keys -struct HotKey -{ - Qt::KeyboardModifiers modifiers; - int key1, key2; - - HotKey(); - - /// We use the first two keys of QKeySequence, with modifiers being stored - /// in the first one. - HotKey( QKeySequence const & ); - - QKeySequence toKeySequence() const; -}; - -struct FullTextSearch -{ - int searchMode; - bool matchCase; - int maxArticlesPerDictionary; - int maxDistanceBetweenWords; - bool useMaxDistanceBetweenWords; - bool useMaxArticlesPerDictionary; - bool enabled; - quint32 maxDictionarySize; - QByteArray dialogGeometry; - QString disabledTypes; - - FullTextSearch() : - searchMode( 0 ), matchCase( false ), - maxArticlesPerDictionary( 100 ), - maxDistanceBetweenWords( 2 ), - useMaxDistanceBetweenWords( true ), - useMaxArticlesPerDictionary( false ), - enabled( true ), - maxDictionarySize( 0 ) - {} -}; - -/// Various user preferences -struct Preferences -{ - QString interfaceLanguage; // Empty value corresponds to system default - QString helpLanguage; // Empty value corresponds to interface language - QString displayStyle; // Empty value corresponds to the default one - bool newTabsOpenAfterCurrentOne; - bool newTabsOpenInBackground; - bool hideSingleTab; - bool mruTabOrder; - bool hideMenubar; - bool enableTrayIcon; - bool startToTray; - bool closeToTray; - bool autoStart; - bool doubleClickTranslates; - bool selectWordBySingleClick; - bool escKeyHidesMainWindow; - bool alwaysOnTop; - - /// An old UI mode when tranlateLine and wordList - /// are in the dockable side panel, not on the toolbar. - bool searchInDock; - - bool enableMainWindowHotkey; - HotKey mainWindowHotkey; - bool enableClipboardHotkey; - HotKey clipboardHotkey; - - bool enableScanPopup; - bool startWithScanPopupOn; - bool enableScanPopupModifiers; - unsigned long scanPopupModifiers; // Combination of KeyboardState::Modifier - bool scanPopupAltMode; // When you press modifier shortly after the selection - unsigned scanPopupAltModeSecs; - bool scanPopupUseUIAutomation; - bool scanPopupUseIAccessibleEx; - bool scanPopupUseGDMessage; - bool scanToMainWindow; - - // Whether the word should be pronounced on page load, in main window/popup - bool pronounceOnLoadMain, pronounceOnLoadPopup; - QString audioPlaybackProgram; - bool useExternalPlayer; - bool useInternalPlayer; - - ProxyServer proxyServer; - - bool checkForNewReleases; - bool disallowContentFromOtherSites; - bool enableWebPlugins; - bool hideGoldenDictHeader; - - qreal zoomFactor; - qreal helpZoomFactor; - int wordsZoomLevel; - - unsigned maxStringsInHistory; - unsigned storeHistory; - bool alwaysExpandOptionalParts; - - unsigned historyStoreInterval; - - bool collapseBigArticles; - int articleSizeLimit; - - unsigned short maxDictionaryRefsInContextMenu; -#ifndef Q_WS_X11 - bool trackClipboardChanges; -#endif - - QString addonStyle; - - FullTextSearch fts; - - Preferences(); -}; - -/// A MediaWiki network dictionary definition -struct MediaWiki -{ - QString id, name, url; - bool enabled; - QString icon; - - MediaWiki(): enabled( false ) - {} - - MediaWiki( QString const & id_, QString const & name_, QString const & url_, - bool enabled_, QString const & icon_ ): - id( id_ ), name( name_ ), url( url_ ), enabled( enabled_ ), icon( icon_ ) {} - - bool operator == ( MediaWiki const & other ) const - { return id == other.id && name == other.name && url == other.url && - enabled == other.enabled && icon == other.icon ; } -}; - -/// Any website which can be queried though a simple template substitution -struct WebSite -{ - QString id, name, url; - bool enabled; - QString iconFilename; - - WebSite(): enabled( false ) - {} - - WebSite( QString const & id_, QString const & name_, QString const & url_, - bool enabled_, QString const & iconFilename_ ): - id( id_ ), name( name_ ), url( url_ ), enabled( enabled_ ), iconFilename( iconFilename_ ) {} - - bool operator == ( WebSite const & other ) const - { return id == other.id && name == other.name && url == other.url && - enabled == other.enabled && iconFilename == other.iconFilename; } -}; - -/// All the WebSites -typedef QVector< WebSite > WebSites; - -/// Any DICT server -struct DictServer -{ - QString id, name, url; - bool enabled; - QString databases; - QString strategies; - QString iconFilename; - - DictServer(): enabled( false ) - {} - - DictServer( QString const & id_, QString const & name_, QString const & url_, - bool enabled_, QString const & databases_, QString const & strategies_, - QString const & iconFilename_ ): - id( id_ ), name( name_ ), url( url_ ), enabled( enabled_ ), databases( databases_ ), - strategies( strategies_ ), iconFilename( iconFilename_ ) {} - - bool operator == ( DictServer const & other ) const - { return id == other.id && name == other.name && url == other.url - && enabled == other.enabled && databases == other.databases - && strategies == other.strategies - && iconFilename == other.iconFilename; } -}; - -/// All the DictServers -typedef QVector< DictServer > DictServers; - -/// Hunspell configuration -struct Hunspell -{ - QString dictionariesPath; - - typedef QVector< QString > Dictionaries; - - Dictionaries enabledDictionaries; - - bool operator == ( Hunspell const & other ) const - { return dictionariesPath == other.dictionariesPath && - enabledDictionaries == other.enabledDictionaries; } - - bool operator != ( Hunspell const & other ) const - { return ! operator == ( other ); } -}; - -/// All the MediaWikis -typedef QVector< MediaWiki > MediaWikis; - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT -/// Chinese transliteration configuration -struct Chinese -{ - bool enable; - - bool enableSCToTWConversion; - bool enableSCToHKConversion; - bool enableTCToSCConversion; - - Chinese(); - - bool operator == ( Chinese const & other ) const - { return enable == other.enable && - enableSCToTWConversion == other.enableSCToTWConversion && - enableSCToHKConversion == other.enableSCToHKConversion && - enableTCToSCConversion == other.enableTCToSCConversion; } - - bool operator != ( Chinese const & other ) const - { return ! operator == ( other ); } - -}; -#endif - -/// Romaji transliteration configuration -struct Romaji -{ - bool enable; - - bool enableHepburn; - bool enableNihonShiki; - bool enableKunreiShiki; - bool enableHiragana; - bool enableKatakana; - - Romaji(); - - bool operator == ( Romaji const & other ) const - { return enable == other.enable && - enableHepburn == other.enableHepburn && - enableNihonShiki == other.enableNihonShiki && - enableKunreiShiki == other.enableKunreiShiki && - enableHiragana == other.enableHiragana && - enableKatakana == other.enableKatakana; } - - bool operator != ( Romaji const & other ) const - { return ! operator == ( other ); } - -}; - -struct Transliteration -{ - bool enableRussianTransliteration; - bool enableGermanTransliteration; - bool enableGreekTransliteration; - bool enableBelarusianTransliteration; -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - Chinese chinese; -#endif - Romaji romaji; - - bool operator == ( Transliteration const & other ) const - { return enableRussianTransliteration == other.enableRussianTransliteration && - enableGermanTransliteration == other.enableGermanTransliteration && - enableGreekTransliteration == other.enableGreekTransliteration && - enableBelarusianTransliteration == other.enableBelarusianTransliteration && -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - chinese == other.chinese && -#endif - romaji == other.romaji; - } - - bool operator != ( Transliteration const & other ) const - { return ! operator == ( other ); } - - Transliteration(): - enableRussianTransliteration( false ), - enableGermanTransliteration( false ), - enableGreekTransliteration( false ), - enableBelarusianTransliteration( false ) - {} -}; - -struct Forvo -{ - bool enable; - QString apiKey; - QString languageCodes; - - Forvo(): enable( false ) - {} - - bool operator == ( Forvo const & other ) const - { return enable == other.enable && - apiKey == other.apiKey && - languageCodes == other.languageCodes; - } - - bool operator != ( Forvo const & other ) const - { return ! operator == ( other ); } -}; - -struct Program -{ - bool enabled; - enum Type - { - Audio, - PlainText, - Html, - PrefixMatch, - MaxTypeValue - } type; - QString id, name, commandLine; - QString iconFilename; - - Program(): enabled( false ) - {} - - Program( bool enabled_, Type type_, QString const & id_, - QString const & name_, QString const & commandLine_, QString const & iconFilename_ ): - enabled( enabled_ ), type( type_ ), id( id_ ), name( name_ ), - commandLine( commandLine_ ), iconFilename( iconFilename_ ) {} - - bool operator == ( Program const & other ) const - { return enabled == other.enabled && - type == other.type && - name == other.name && - commandLine == other.commandLine && - iconFilename == other.iconFilename; - } - - bool operator != ( Program const & other ) const - { return ! operator == ( other ); } -}; - -typedef QVector< Program > Programs; - -struct VoiceEngine -{ - bool enabled; - QString id; - QString name; - QString iconFilename; - int volume; // 0-100 allowed - int rate; // 0-100 allowed - - VoiceEngine(): enabled( false ) - , volume( 50 ) - , rate( 50 ) - {} - VoiceEngine( QString id_, QString name_, int volume_, int rate_ ): - enabled( false ) - , id( id_ ) - , name( name_ ) - , volume( volume_ ) - , rate( rate_ ) - {} - - bool operator == ( VoiceEngine const & other ) const - { - return enabled == other.enabled && - id == other.id && - name == other.name && - iconFilename == other.iconFilename && - volume == other.volume && - rate == other.rate; - } - - bool operator != ( VoiceEngine const & other ) const - { return ! operator == ( other ); } -}; - -typedef QVector< VoiceEngine> VoiceEngines; - -struct HeadwordsDialog -{ - int searchMode; - bool matchCase; - bool autoApply; - QString headwordsExportPath; - QByteArray headwordsDialogGeometry; - - HeadwordsDialog() : - searchMode( 0 ), matchCase( false ) - , autoApply( false ) - {} -}; - -struct Class -{ - Paths paths; - SoundDirs soundDirs; - Group dictionaryOrder; - Group inactiveDictionaries; - Groups groups; - Preferences preferences; - MediaWikis mediawikis; - WebSites webSites; - DictServers dictServers; - Hunspell hunspell; - Transliteration transliteration; - Forvo forvo; - Programs programs; - VoiceEngines voiceEngines; - - unsigned lastMainGroupId; // Last used group in main window - unsigned lastPopupGroupId; // Last used group in popup window - - QByteArray popupWindowState; // Binary state saved by QMainWindow - QByteArray popupWindowGeometry; // Geometry saved by QMainWindow - QByteArray dictInfoGeometry; // Geometry of "Dictionary info" window - QByteArray inspectorGeometry; // Geometry of WebKit inspector window - QByteArray helpWindowGeometry; // Geometry of help window - QByteArray helpSplitterState; // Geometry of help splitter - - QString historyExportPath; // Path for export/import history - QString resourceSavePath; // Path to save images/audio - QString articleSavePath; // Path to save articles - - bool pinPopupWindow; // Last pin status - - QByteArray mainWindowState; // Binary state saved by QMainWindow - QByteArray mainWindowGeometry; // Geometry saved by QMainWindow - - MutedDictionaries mutedDictionaries; // Disabled via dictionary bar - MutedDictionaries popupMutedDictionaries; // Disabled via dictionary bar in popup - - QDateTime timeForNewReleaseCheck; // Only effective if - // preferences.checkForNewReleases is set - QString skippedRelease; // Empty by default - - bool showingDictBarNames; - - bool usingSmallIconsInToolbars; - - int maxPictureWidth; // Maximum picture width - - /// Maximum size for the headwords. - /// Bigger headwords won't be indexed. For now, only in DSL. - unsigned int maxHeadwordSize; - - HeadwordsDialog headwordsDialog; - -#ifdef Q_OS_WIN - QRect maximizedMainWindowGeometry; - QRect normalMainWindowGeometry; -#endif - - QString editDictionaryCommandLine; // Command line to call external editor for dictionary - - Class(): lastMainGroupId( 0 ), lastPopupGroupId( 0 ), - pinPopupWindow( false ), showingDictBarNames( false ), - usingSmallIconsInToolbars( false ), - maxPictureWidth( 0 ), maxHeadwordSize ( 256U ) - {} - Group * getGroup( unsigned id ); - Group const * getGroup( unsigned id ) const; -}; - -#ifdef Q_OS_WIN -#pragma pack(pop) -#endif - -/// Configuration-specific events. Some parts of the program need to react -/// to specific changes in configuration. The object of this class is used -/// to emit signals when such events happen -- and the listeners connect to -/// them to be notified of them. -/// This class is separate from the main Class since QObjects can't be copied. -class Events: public QObject -{ - Q_OBJECT - -public: - - /// Signals that the value of the mutedDictionaries has changed. - /// This emits mutedDictionariesChanged() signal, so the subscribers will - /// be notified. - void signalMutedDictionariesChanged(); - -signals: - - /// THe value of the mutedDictionaries has changed. - void mutedDictionariesChanged(); - -private: -}; - -DEF_EX( exError, "Error with the program's configuration", std::exception ) -DEF_EX( exCantUseHomeDir, "Can't use home directory to store GoldenDict preferences", exError ) -DEF_EX( exCantUseIndexDir, "Can't use index directory to store GoldenDict index files", exError ) -DEF_EX( exCantReadConfigFile, "Can't read the configuration file", exError ) -DEF_EX( exCantWriteConfigFile, "Can't write the configuration file", exError ) -DEF_EX( exMalformedConfigFile, "The configuration file is malformed", exError ) - -/// Loads the configuration, or creates the default one if none is present -Class load() throw( exError ); - -/// Saves the configuration -void save( Class const & ) throw( exError ); - -/// Returns the configuration file name. -QString getConfigFileName(); - -/// Returns the main configuration directory. -QString getConfigDir() throw( exError ); - -/// Returns the index directory, where the indices are to be stored. -QString getIndexDir() throw( exError ); - -/// Returns the filename of a .pid file which should store current pid of -/// the process. -QString getPidFileName() throw( exError ); - -/// Returns the filename of a history file which stores search history. -QString getHistoryFileName() throw( exError ); - -/// Returns the user .css file name. -QString getUserCssFileName() throw( exError ); - -/// Returns the user .css file name used for printing only. -QString getUserCssPrintFileName() throw( exError ); - -/// Returns the user .css file name for the Qt interface customization. -QString getUserQtCssFileName() throw( exError ); - -/// Returns the program's data dir. Under Linux that would be something like -/// /usr/share/apps/goldendict, under Windows C:/Program Files/GoldenDict. -QString getProgramDataDir() throw(); - -/// Returns the directory storing program localizized files (.qm). -QString getLocDir() throw(); - -/// Returns the directory storing program help files (.qch). -QString getHelpDir() throw(); - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT -/// Returns the directory storing OpenCC configuration and dictionary files (.json and .ocd). -QString getOpenCCDir() throw(); -#endif - -/// Returns true if the program is configured as a portable version. In that -/// mode, all the settings and indices are kept in the program's directory. -bool isPortableVersion() throw(); - -/// Returns directory with dictionaries for portable version. It is content/ -/// in the application's directory. -QString getPortableVersionDictionaryDir() throw(); - -/// Returns directory with morpgologies for portable version. It is -/// content/morphology in the application's directory. -QString getPortableVersionMorphoDir() throw(); - -/// Returns the add-on styles directory. -QString getStylesDir() throw(); - -} - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/configure b/office/misc/goldendict/files/goldendict-1.5.0-RC2/configure deleted file mode 100755 index 534d0b7cc7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/configure +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -echo -echo To build the program, run qmake, then make. -echo -echo The following dependency packages are required: libvorbis-dev, zlib1g-dev, libhunspell-dev, x11proto-record-dev, qt4-qmake, libqt4-dev, g++, libxtst-dev, libphonon-dev. They can be named slightly different in different distributions. diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/country.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/country.cc deleted file mode 100644 index 574520e84e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/country.cc +++ /dev/null @@ -1,298 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "country.hh" -#include "folding.hh" -#include -#include "wstring_qt.hh" - -namespace Country { - -namespace -{ - struct Database: public QMap< QString, QString > - { - static Database const & instance() - { static Database db; return db; } - - private: - - Database(); - - void addCountry( QString const & country, QString const & code ) - { - (*this)[ gd::toQString( Folding::apply( gd::toWString( country ) ) ) ] = code.toLower(); - } - }; - - Database::Database() - { - addCountry( "Afghanistan", "AF" ); - addCountry( "Aland Islands", "AX" ); - addCountry( "Albania", "AL" ); - addCountry( "Algeria", "DZ" ); - addCountry( "American Samoa", "AS" ); - addCountry( "Andorra", "AD" ); - addCountry( "Angola", "AO" ); - addCountry( "Anguilla", "AI" ); - addCountry( "Antarctica", "AQ" ); - addCountry( "Antigua and Barbuda", "AG" ); - addCountry( "Argentina", "AR" ); - addCountry( "Armenia", "AM" ); - addCountry( "Aruba", "AW" ); - addCountry( "Australia", "AU" ); - addCountry( "Austria", "AT" ); - addCountry( "Azerbaijan", "AZ" ); - addCountry( "Bahamas", "BS" ); - addCountry( "Bahrain", "BH" ); - addCountry( "Bangladesh", "BD" ); - addCountry( "Barbados", "BB" ); - addCountry( "Belarus", "BY" ); - addCountry( "Belgium", "BE" ); - addCountry( "Belize", "BZ" ); - addCountry( "Benin", "BJ" ); - addCountry( "Bermuda", "BM" ); - addCountry( "Bhutan", "BT" ); - addCountry( "Bolivia, Plurinational State of", "BO" ); - addCountry( "Bolivia", "BO" ); - addCountry( "Bosnia and Herzegovina", "BA" ); - addCountry( "Botswana", "BW" ); - addCountry( "Bouvet Island", "BV" ); - addCountry( "Brazil", "BR" ); - addCountry( "British Indian Ocean Territory", "IO" ); - addCountry( "Brunei Darussalam", "BN" ); - addCountry( "Bulgaria", "BG" ); - addCountry( "Burkina Faso", "BF" ); - addCountry( "Burundi", "BI" ); - addCountry( "Cambodia", "KH" ); - addCountry( "Cameroon", "CM" ); - addCountry( "Canada", "CA" ); - addCountry( "Cape Verde", "CV" ); - addCountry( "Cayman Islands", "KY" ); - addCountry( "Central African Republic", "CF" ); - addCountry( "Chad", "TD" ); - addCountry( "Chile", "CL" ); - addCountry( "China", "CN" ); - addCountry( "Christmas Island", "CX" ); - addCountry( "Cocos (Keeling) Islands", "CC" ); - addCountry( "Colombia", "CO" ); - addCountry( "Comoros", "KM" ); - addCountry( "Congo", "CG" ); - addCountry( "Congo, the Democratic Republic of the", "CD" ); - addCountry( "Cook Islands", "CK" ); - addCountry( "Costa Rica", "CR" ); - addCountry( "Cote d'Ivoire", "CI" ); - addCountry( "Croatia", "HR" ); - addCountry( "Cuba", "CU" ); - addCountry( "Cyprus", "CY" ); - addCountry( "Czech Republic", "CZ" ); - addCountry( "Denmark", "DK" ); - addCountry( "Djibouti", "DJ" ); - addCountry( "Dominica", "DM" ); - addCountry( "Dominican Republic", "DO" ); - addCountry( "Ecuador", "EC" ); - addCountry( "Egypt", "EG" ); - addCountry( "El Salvador", "SV" ); - addCountry( "Equatorial Guinea", "GQ" ); - addCountry( "Eritrea", "ER" ); - addCountry( "Estonia", "EE" ); - addCountry( "Ethiopia", "ET" ); - addCountry( "Falkland Islands (Malvinas)", "FK" ); - addCountry( "Faroe Islands", "FO" ); - addCountry( "Fiji", "FJ" ); - addCountry( "Finland", "FI" ); - addCountry( "France", "FR" ); - addCountry( "French Guiana", "GF" ); - addCountry( "French Polynesia", "PF" ); - addCountry( "French Southern Territories", "TF" ); - addCountry( "Gabon", "GA" ); - addCountry( "Gambia", "GM" ); - addCountry( "Georgia", "GE" ); - addCountry( "Germany", "DE" ); - addCountry( "Ghana", "GH" ); - addCountry( "Gibraltar", "GI" ); - addCountry( "Greece", "GR" ); - addCountry( "Greenland", "GL" ); - addCountry( "Grenada", "GD" ); - addCountry( "Guadeloupe", "GP" ); - addCountry( "Guam", "GU" ); - addCountry( "Guatemala", "GT" ); - addCountry( "Guernsey", "GG" ); - addCountry( "Guinea", "GN" ); - addCountry( "Guinea-Bissau", "GW" ); - addCountry( "Guyana", "GY" ); - addCountry( "Haiti", "HT" ); - addCountry( "Heard Island and McDonald Islands", "HM" ); - addCountry( "Holy See (Vatican City State)", "VA" ); - addCountry( "Honduras", "HN" ); - addCountry( "Hong Kong", "HK" ); - addCountry( "Hungary", "HU" ); - addCountry( "Iceland", "IS" ); - addCountry( "India", "IN" ); - addCountry( "Indonesia", "ID" ); - addCountry( "Iran, Islamic Republic of", "IR" ); - addCountry( "Iran", "IR" ); - addCountry( "Iraq", "IQ" ); - addCountry( "Ireland", "IE" ); - addCountry( "Isle of Man", "IM" ); - addCountry( "Israel", "IL" ); - addCountry( "Italy", "IT" ); - addCountry( "Jamaica", "JM" ); - addCountry( "Japan", "JP" ); - addCountry( "Jersey", "JE" ); - addCountry( "Jordan", "JO" ); - addCountry( "Kazakhstan", "KZ" ); - addCountry( "Kenya", "KE" ); - addCountry( "Kiribati", "KI" ); - addCountry( "Korea, Democratic People's Republic of", "KP" ); - addCountry( "Korea, Republic of", "KR" ); - addCountry( "Korea", "KR" ); - addCountry( "Kuwait", "KW" ); - addCountry( "Kyrgyzstan", "KG" ); - addCountry( "Lao People's Democratic Republic", "LA" ); - addCountry( "Latvia", "LV" ); - addCountry( "Lebanon", "LB" ); - addCountry( "Lesotho", "LS" ); - addCountry( "Liberia", "LR" ); - addCountry( "Libyan Arab Jamahiriya", "LY" ); - addCountry( "Liechtenstein", "LI" ); - addCountry( "Lithuania", "LT" ); - addCountry( "Luxembourg", "LU" ); - addCountry( "Macao", "MO" ); - addCountry( "Macedonia, the former Yugoslav Republic of", "MK" ); - addCountry( "Macedonia", "MK" ); - addCountry( "Madagascar", "MG" ); - addCountry( "Malawi", "MW" ); - addCountry( "Malaysia", "MY" ); - addCountry( "Maldives", "MV" ); - addCountry( "Mali", "ML" ); - addCountry( "Malta", "MT" ); - addCountry( "Marshall Islands", "MH" ); - addCountry( "Martinique", "MQ" ); - addCountry( "Mauritania", "MR" ); - addCountry( "Mauritius", "MU" ); - addCountry( "Mayotte", "YT" ); - addCountry( "Mexico", "MX" ); - addCountry( "Micronesia, Federated States of", "FM" ); - addCountry( "Micronesia", "FM" ); - addCountry( "Moldova, Republic of", "MD" ); - addCountry( "Moldova", "MD" ); - addCountry( "Monaco", "MC" ); - addCountry( "Mongolia", "MN" ); - addCountry( "Montenegro", "ME" ); - addCountry( "Montserrat", "MS" ); - addCountry( "Morocco", "MA" ); - addCountry( "Mozambique", "MZ" ); - addCountry( "Myanmar", "MM" ); - addCountry( "Namibia", "NA" ); - addCountry( "Nauru", "NR" ); - addCountry( "Nepal", "NP" ); - addCountry( "Netherlands", "NL" ); - addCountry( "Netherlands Antilles", "AN" ); - addCountry( "New Caledonia", "NC" ); - addCountry( "New Zealand", "NZ" ); - addCountry( "Nicaragua", "NI" ); - addCountry( "Niger", "NE" ); - addCountry( "Nigeria", "NG" ); - addCountry( "Niue", "NU" ); - addCountry( "Norfolk Island", "NF" ); - addCountry( "Northern Mariana Islands", "MP" ); - addCountry( "Norway", "NO" ); - addCountry( "Oman", "OM" ); - addCountry( "Pakistan", "PK" ); - addCountry( "Palau", "PW" ); - addCountry( "Palestinian Territory, Occupied", "PS" ); - addCountry( "Panama", "PA" ); - addCountry( "Papua New Guinea", "PG" ); - addCountry( "Paraguay", "PY" ); - addCountry( "Peru", "PE" ); - addCountry( "Philippines", "PH" ); - addCountry( "Pitcairn", "PN" ); - addCountry( "Poland", "PL" ); - addCountry( "Portugal", "PT" ); - addCountry( "Puerto Rico", "PR" ); - addCountry( "Qatar", "QA" ); - addCountry( "Reunion", "RE" ); - addCountry( "Romania", "RO" ); - addCountry( "Russian Federation", "RU" ); - addCountry( "Russia", "RU" ); - addCountry( "Rwanda", "RW" ); - addCountry( "Saint Barthélemy", "BL" ); - addCountry( "Saint Helena, Ascension and Tristan da Cunha", "SH" ); - addCountry( "Saint Kitts and Nevis", "KN" ); - addCountry( "Saint Lucia", "LC" ); - addCountry( "Saint Martin (French part)", "MF" ); - addCountry( "Saint Pierre and Miquelon", "PM" ); - addCountry( "Saint Vincent and the Grenadines", "VC" ); - addCountry( "Samoa", "WS" ); - addCountry( "San Marino", "SM" ); - addCountry( "Sao Tome and Principe", "ST" ); - addCountry( "Saudi Arabia", "SA" ); - addCountry( "Senegal", "SN" ); - addCountry( "Serbia", "RS" ); - addCountry( "Seychelles", "SC" ); - addCountry( "Sierra Leone", "SL" ); - addCountry( "Singapore", "SG" ); - addCountry( "Slovakia", "SK" ); - addCountry( "Slovenia", "SI" ); - addCountry( "Solomon Islands", "SB" ); - addCountry( "Somalia", "SO" ); - addCountry( "South Africa", "ZA" ); - addCountry( "South Georgia and the South Sandwich Islands", "GS" ); - addCountry( "Spain", "ES" ); - addCountry( "Sri Lanka", "LK" ); - addCountry( "Sudan", "SD" ); - addCountry( "Suriname", "SR" ); - addCountry( "Svalbard and Jan Mayen", "SJ" ); - addCountry( "Swaziland", "SZ" ); - addCountry( "Sweden", "SE" ); - addCountry( "Switzerland", "CH" ); - addCountry( "Syrian Arab Republic", "SY" ); - addCountry( "Taiwan, Province of China", "TW" ); - addCountry( "Tajikistan", "TJ" ); - addCountry( "Tanzania, United Republic of", "TZ" ); - addCountry( "Tanzania", "TZ" ); - addCountry( "Thailand", "TH" ); - addCountry( "Timor-Leste", "TL" ); - addCountry( "Togo", "TG" ); - addCountry( "Tokelau", "TK" ); - addCountry( "Tonga", "TO" ); - addCountry( "Trinidad and Tobago", "TT" ); - addCountry( "Tunisia", "TN" ); - addCountry( "Turkey", "TR" ); - addCountry( "Turkmenistan", "TM" ); - addCountry( "Turks and Caicos Islands", "TC" ); - addCountry( "Tuvalu", "TV" ); - addCountry( "Uganda", "UG" ); - addCountry( "Ukraine", "UA" ); - addCountry( "United Arab Emirates", "AE" ); - addCountry( "United Kingdom", "GB" ); - addCountry( "United States", "US" ); - addCountry( "United States Minor Outlying Islands", "UM" ); - addCountry( "Uruguay", "UY" ); - addCountry( "Uzbekistan", "UZ" ); - addCountry( "Vanuatu", "VU" ); - addCountry( "Venezuela, Bolivarian Republic of", "VE" ); - addCountry( "Venezuela", "VE" ); - addCountry( "Viet Nam", "VN" ); - addCountry( "Virgin Islands, British", "VG" ); - addCountry( "Virgin Islands, U.S.", "VI" ); - addCountry( "Wallis and Futuna", "WF" ); - addCountry( "Western Sahara", "EH" ); - addCountry( "Yemen", "YE" ); - addCountry( "Zambia", "ZM" ); - addCountry( "Zimbabwe", "ZW" ); - } -} - -QString englishNametoIso2( QString const & name ) -{ - Database::const_iterator i = Database::instance().find( gd::toQString( Folding::apply( gd::toWString( name ) ) ) ); - - if ( i == Database::instance().end() ) - return QString(); - else - return i.value(); -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/country.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/country.hh deleted file mode 100644 index 5277d60d0a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/country.hh +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef COUNTRY_HH -#define COUNTRY_HH - -#include - -namespace Country { - -/// Attempts converting the given country name, in english, to its iso-3166-1 -/// 2-letter code. If fails, empty string is returned. -QString englishNametoIso2( QString const & ); - -} - -#endif // COUNTRY_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/decompress.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/decompress.cc deleted file mode 100644 index 3a66ef1de6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/decompress.cc +++ /dev/null @@ -1,136 +0,0 @@ -#include "decompress.hh" -#include "zlib.h" -#include "bzlib.h" - -#ifdef MAKE_ZIM_SUPPORT -#include "lzma.h" -#endif - -#define CHUNK_SIZE 2048 - -QByteArray zlibDecompress( const char * bufptr, unsigned length ) -{ -z_stream zs; -char buf[CHUNK_SIZE]; -QByteArray str; -int res; - memset( &zs, 0, sizeof(zs) ); - zs.next_in = (Bytef *)bufptr; - zs.avail_in = length; - while( 1 ) - { - res = inflateInit( &zs ); - if( res != Z_OK ) - break; - while( res != Z_STREAM_END ) - { - zs.next_out = (Bytef *)buf; - zs.avail_out = CHUNK_SIZE; - res = inflate( &zs, Z_SYNC_FLUSH ); - str.append( buf, CHUNK_SIZE - zs.avail_out ); - if( res != Z_OK && res != Z_STREAM_END ) - break; - } - break; - } - inflateEnd( &zs ); - if( res != Z_STREAM_END ) - str.clear(); - return str; -} - -string decompressZlib( const char * bufptr, unsigned length ) -{ - QByteArray b = zlibDecompress( bufptr, length ); - return string( b.constData(), b.size() ); -} - -string decompressBzip2( const char * bufptr, unsigned length ) -{ -bz_stream zs; -char buf[CHUNK_SIZE]; -string str; -int res; - memset( &zs, 0, sizeof(zs) ); - zs.next_in = (char *)bufptr; - zs.avail_in = length; - zs.total_in_lo32 = length; - while( 1 ) - { - res = BZ2_bzDecompressInit( &zs, 0, 0 ); - if( res != BZ_OK ) - break; - while( res != BZ_STREAM_END ) - { - zs.next_out = buf; - zs.avail_out = CHUNK_SIZE; - zs.total_out_lo32 = length; - res = BZ2_bzDecompress( &zs ); - str.append( buf, CHUNK_SIZE - zs.avail_out ); - if( res != BZ_OK && res != BZ_STREAM_END ) - break; - } - break; - } - BZ2_bzDecompressEnd( &zs ); - if( res != BZ_STREAM_END ) - str.clear(); - return str; -} - -#ifdef MAKE_ZIM_SUPPORT - -#define BUFSIZE 0xFFFF - -string decompressLzma2( const char * bufptr, unsigned length, - bool raw_decoder ) -{ -string str; -lzma_ret res; -char buf[BUFSIZE]; - - lzma_stream strm = LZMA_STREAM_INIT; - strm.next_in = reinterpret_cast< const uint8_t * >( bufptr ); - strm.avail_in = length; - - lzma_options_lzma opt; - lzma_filter filters[ 2 ]; - - if( raw_decoder ) - { - lzma_lzma_preset(&opt, LZMA_PRESET_DEFAULT); - - filters[ 0 ].id = LZMA_FILTER_LZMA2; - filters[ 0 ].options = &opt; - filters[ 1 ].id = LZMA_VLI_UNKNOWN; - } - - while( 1 ) - { - if( raw_decoder ) - res = lzma_raw_decoder( &strm, filters ); - else - res = lzma_stream_decoder( &strm, UINT64_MAX, 0 ); - - if( res != LZMA_OK ) - break; - - while ( res != LZMA_STREAM_END ) - { - strm.next_out = reinterpret_cast< uint8_t * >( buf ); - strm.avail_out = BUFSIZE; - res = lzma_code( &strm, LZMA_RUN ); - str.append( buf, BUFSIZE - strm.avail_out ); - if( res != LZMA_OK && res != LZMA_STREAM_END ) - break; - } - lzma_end( &strm ); - if( res != LZMA_STREAM_END ) - str.clear(); - - break; - } - return str; -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/decompress.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/decompress.hh deleted file mode 100644 index c5b6254bd2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/decompress.hh +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef __DECOMPRESS_HH_INCLUDED__ -#define __DECOMPRESS_HH_INCLUDED__ - -#include -#include - -using std::string; - -QByteArray zlibDecompress( const char * bufptr, unsigned length ); - -string decompressZlib( const char * bufptr, unsigned length ); - -string decompressBzip2( const char * bufptr, unsigned length ); - -#ifdef MAKE_ZIM_SUPPORT - -string decompressLzma2( const char * bufptr, unsigned length, - bool raw_decoder = false ); - -#endif - -#endif // DECOMPRESS_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/delegate.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/delegate.cc deleted file mode 100644 index 574697c385..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/delegate.cc +++ /dev/null @@ -1,29 +0,0 @@ -#include - -#include "delegate.hh" - -WordListItemDelegate::WordListItemDelegate( QAbstractItemDelegate * delegate ) : -QStyledItemDelegate() -{ - mainDelegate = static_cast< QStyledItemDelegate * >( delegate ); -} - -void WordListItemDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const -{ - QStyleOptionViewItemV4 opt4 = option; - QStyleOptionViewItem opt = option; - initStyleOption( &opt4, index ); - if( opt4.text.isRightToLeft() ) - { - opt.direction = Qt::RightToLeft; - if( opt4.textElideMode != Qt::ElideNone ) - opt.textElideMode = Qt::ElideLeft; - } - else - { - opt.direction = Qt::LeftToRight; - if( opt4.textElideMode != Qt::ElideNone ) - opt.textElideMode = Qt::ElideRight; - } - mainDelegate->paint( painter, opt, index ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/delegate.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/delegate.hh deleted file mode 100644 index 2833109658..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/delegate.hh +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __DELEGATE_HH_INCLUDED__ -#define __DELEGATE_HH_INCLUDED__ - -#include -#include - -class WordListItemDelegate : public QStyledItemDelegate -{ -public: - WordListItemDelegate( QAbstractItemDelegate * delegate ); - virtual void paint( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const; - -private: - QStyledItemDelegate * mainDelegate; -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictdfiles.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictdfiles.cc deleted file mode 100644 index cbd0a683bd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictdfiles.cc +++ /dev/null @@ -1,751 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "dictdfiles.hh" -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include "dictzip.h" -#include "htmlescape.hh" -#include "fsencoding.hh" -#include "langcoder.hh" -#include -#include -#include -#include -#include -#include -#include -#include "gddebug.hh" -#include "ftshelpers.hh" -#include - -#include - -#ifdef _MSC_VER -#include -#endif - -namespace DictdFiles { - -using std::map; -using std::multimap; -using std::pair; -using std::set; -using std::string; -using gd::wstring; -using std::vector; -using std::list; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX( exFailedToReadLineFromIndex, "Failed to read line from index file", Dictionary::Ex ) -DEF_EX( exMalformedIndexFileLine, "Malformed index file line encountered", Dictionary::Ex ) -DEF_EX( exInvalidBase64, "Invalid base64 sequence encountered", Dictionary::Ex ) -DEF_EX_STR( exDictzipError, "DICTZIP error", Dictionary::Ex ) - -enum -{ - Signature = 0x58444344, // DCDX on little-endian, XDCD on big-endian - CurrentFormatVersion = 5 + BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, DCDX - uint32_t formatVersion; // File format version (CurrentFormatVersion) - uint32_t wordCount; // Total number of words - uint32_t articleCount; // Total number of articles - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t langFrom; // Source language - uint32_t langTo; // Target language -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -class DictdDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx, indexFile; // The later is .index file - IdxHeader idxHeader; - dictData * dz; - string dictionaryName; - Mutex indexFileMutex, dzMutex; - -public: - - DictdDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - ~DictdDictionary(); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - virtual void loadIcon() throw(); - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual QString const& getDescription(); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "DICTD", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } -}; - -DictdDictionary::DictdDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - indexFile( dictionaryFiles[ 0 ], "rb" ), - idxHeader( idx.read< IdxHeader >() ) -{ - - // Read the dictionary name - idx.seek( sizeof( idxHeader ) ); - - vector< char > dName( idx.read< uint32_t >() ); - idx.read( &dName.front(), dName.size() ); - dictionaryName = string( &dName.front(), dName.size() ); - - // Open the .dict file - - DZ_ERRORS error; - dz = dict_data_open( dictionaryFiles[ 1 ].c_str(), &error, 0 ); - - if ( !dz ) - throw exDictzipError( string( dz_error_str( error ) ) - + "(" + getDictionaryFilenames()[ 1 ] + ")" ); - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -DictdDictionary::~DictdDictionary() -{ - if ( dz ) - dict_data_close( dz ); -} - -string nameFromFileName( string const & indexFileName ) -{ - if ( indexFileName.empty() ) - return string(); - - char const * sep = strrchr( indexFileName.c_str(), FsEncoding::separator() ); - - if ( !sep ) - sep = indexFileName.c_str(); - - char const * dot = strrchr( sep, '.' ); - - if ( !dot ) - dot = indexFileName.c_str() + indexFileName.size(); - - return Utf8::encode( FsEncoding::decode( string( sep + 1, dot - sep - 1 ) ) ); -} - -void DictdDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 5 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_dictd.png"); - } - - dictionaryIconLoaded = true; -} - -uint32_t decodeBase64( string const & str ) -{ - static char const digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - - uint32_t number = 0; - - for( char const * next = str.c_str(); *next; ++next ) - { - char const * d = strchr( digits, *next ); - - if ( !d ) - throw exInvalidBase64(); - - number = number * 64 + ( d - digits ); - } - - return number; -} - -sptr< Dictionary::DataRequest > DictdDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - try - { - vector< WordArticleLink > chain = findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, string > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonyms make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - char buf[ 16384 ]; - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now load that article - - { - Mutex::Lock _( indexFileMutex ); - indexFile.seek( chain[ x ].articleOffset ); - - if ( !indexFile.gets( buf, sizeof( buf ), true ) ) - throw exFailedToReadLineFromIndex(); - } - - char * tab1 = strchr( buf, '\t' ); - - if ( !tab1 ) - throw exMalformedIndexFileLine(); - - char * tab2 = strchr( tab1 + 1, '\t' ); - - if ( !tab2 ) - throw exMalformedIndexFileLine(); - - // After tab1 should be article offset, after tab2 -- article size - - uint32_t articleOffset = decodeBase64( string( tab1 + 1, tab2 - tab1 - 1 ) ); - - char * tab3 = strchr( tab2 + 1, '\t'); - - uint32_t articleSize; - if ( tab3 ) - { - articleSize = decodeBase64( string( tab2 + 1, tab3 - tab2 - 1 ) ); - } - else - { - articleSize = decodeBase64( tab2 + 1 ); - } - - string articleText; - - char * articleBody; - { - Mutex::Lock _( dzMutex ); - articleBody = dict_data_read_( dz, articleOffset, articleSize, 0, 0 ); - } - - if ( !articleBody ) - { - articleText = string( "
DICTZIP error: " ) - + dict_error_str( dz ) + "
"; - } - else - { - static QRegExp phonetic( "\\\\([^\\\\]+)\\\\", Qt::CaseInsensitive ); // phonetics: \stuff\ ... - static QRegExp refs( "\\{([^\\{\\}]+)\\}", Qt::CaseInsensitive ); // links: {stuff} - static QRegExp links( "
", Qt::CaseInsensitive ); - static QRegExp tags( "<[^>]*>", Qt::CaseInsensitive ); - - articleText = string( "
\\1") - .replace(refs, "\\1"); - convertedText.erase(); - - int pos = 0; - for( ; ; ) - { - pos = articleString.indexOf( links, pos ); - if( pos < 0 ) - break; - - QString link = links.cap( 1 ); - link.replace( tags, " " ); - link.replace( " ", " " ); - articleString.replace( pos + 30, links.cap( 1 ).length(), - QString::fromUtf8( QUrl::toPercentEncoding( link.simplified() ) ) ); - pos += 30; - } - - articleString += "
"; - - articleText += articleString.toUtf8().data(); - } - - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ); - - multimap< wstring, string > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, string >( - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ), - articleText ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - return new Dictionary::DataRequestInstant( false ); - - string result; - - multimap< wstring, string >::const_iterator i; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - result += i->second; - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - result += i->second; - - sptr< Dictionary::DataRequestInstant > ret = - new Dictionary::DataRequestInstant( true ); - - ret->getData().resize( result.size() ); - - memcpy( &(ret->getData().front()), result.data(), result.size() ); - - return ret; - } - catch( std::exception & e ) - { - return new Dictionary::DataRequestInstant( QString( e.what() ) ); - } -} - -QString const& DictdDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - sptr< Dictionary::DataRequest > req = getArticle( GD_NATIVE_TO_WS( L"00databaseinfo" ), - vector< wstring >(), wstring() ); - - if( req->dataSize() > 0 ) - dictionaryDescription = Html::unescape( QString::fromUtf8( req->getFullData().data(), req->getFullData().size() ), true ); - else - dictionaryDescription = "NONE"; - - return dictionaryDescription; -} - -void DictdDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "DictD: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "DictD: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void DictdDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - char buf[ 16384 ]; - { - Mutex::Lock _( indexFileMutex ); - indexFile.seek( articleAddress ); - - if ( !indexFile.gets( buf, sizeof( buf ), true ) ) - throw exFailedToReadLineFromIndex(); - } - - char * tab1 = strchr( buf, '\t' ); - - if ( !tab1 ) - throw exMalformedIndexFileLine(); - - headword = QString::fromUtf8( buf, tab1 - buf ); - - char * tab2 = strchr( tab1 + 1, '\t' ); - - if ( !tab2 ) - throw exMalformedIndexFileLine(); - - // After tab1 should be article offset, after tab2 -- article size - - uint32_t articleOffset = decodeBase64( string( tab1 + 1, tab2 - tab1 - 1 ) ); - - char * tab3 = strchr( tab2 + 1, '\t'); - - uint32_t articleSize; - if ( tab3 ) - { - articleSize = decodeBase64( string( tab2 + 1, tab3 - tab2 - 1 ) ); - } - else - { - articleSize = decodeBase64( tab2 + 1 ); - } - - string articleText; - - char * articleBody; - { - Mutex::Lock _( dzMutex ); - articleBody = dict_data_read_( dz, articleOffset, articleSize, 0, 0 ); - } - - if ( !articleBody ) - { - articleText = dict_error_str( dz ); - } - else - { - static QRegExp phonetic( "\\\\([^\\\\]+)\\\\", Qt::CaseInsensitive ); // phonetics: \stuff\ ... - static QRegExp refs( "\\{([^\\{\\}]+)\\}", Qt::CaseInsensitive ); // links: {stuff} - - string convertedText = Html::preformat( articleBody, isToLanguageRTL() ); - free( articleBody ); - - text = QString::fromUtf8( convertedText.data(), convertedText.size() ) - .replace(phonetic, "\\1") - .replace(refs, "\\1"); - - text = Html::unescape( text ); - } - } - catch( std::exception &ex ) - { - gdWarning( "DictD: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - -sptr< Dictionary::DataRequest > DictdDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -} // anonymous namespace - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Only allow .index suffixes - - if ( i->size() < 6 || - strcasecmp( i->c_str() + ( i->size() - 6 ), ".index" ) != 0 ) - continue; - - try - { - vector< string > dictFiles( 1, *i ); - - // Check if there is an 'abrv' file present - string baseName( *i, 0, i->size() - 5 ); - - dictFiles.push_back( string() ); - - if ( !File::tryPossibleName( baseName + "dict", dictFiles[ 1 ] ) && - !File::tryPossibleName( baseName + "dict.dz", dictFiles[ 1 ] ) ) - { - // No corresponding .dict file, skipping - continue; - } - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - // Building the index - string dictionaryName = nameFromFileName( dictFiles[ 0 ] ); - - gdDebug( "DictD: Building the index for dictionary: %s\n", dictionaryName.c_str() ); - - initializing.indexingDictionary( dictionaryName ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - IndexedWords indexedWords; - - File::Class indexFile( dictFiles[ 0 ], "rb" ); - - // Read words from index until none's left. - - char buf[ 16384 ]; - - do - { - uint32_t curOffset = indexFile.tell(); - - if ( !indexFile.gets( buf, sizeof( buf ), true ) ) - break; - - // Check that there are exactly two or three tabs in the record. - char * tab1 = strchr( buf, '\t' ); - if ( tab1 ) - { - char * tab2 = strchr( tab1 + 1, '\t' ); - if ( tab2 ) - { - char * tab3 = strchr( tab2 + 1, '\t'); - if ( tab3 ) - { - char * tab4 = strchr( tab3 + 1, '\t'); - if ( tab4 ) - { - GD_DPRINTF( "Warning: too many tabs present, skipping: %s\n", buf ); - continue; - } - - // Handle the forth entry, if it exists. From dictfmt man: - // When --index-keep-orig option is used fourth column is created - // (if necessary) in .index file. - indexedWords.addWord( Utf8::decode( string( tab3 + 1, strlen ( tab3 + 1 ) ) ), curOffset ); - ++idxHeader.wordCount; - } - indexedWords.addWord( Utf8::decode( string( buf, strchr( buf, '\t' ) - buf ) ), curOffset ); - ++idxHeader.wordCount; - ++idxHeader.articleCount; - - // Check for proper dictionary name - if ( !strncmp( buf, "00databaseshort", 15 ) || !strncmp( buf, "00-database-short", 17 ) ) - { - // After tab1 should be article offset, after tab2 -- article size - uint32_t articleOffset = decodeBase64( string( tab1 + 1, tab2 - tab1 - 1 ) ); - uint32_t articleSize = decodeBase64( tab2 + 1 ); - - DZ_ERRORS error; - dictData * dz = dict_data_open( dictFiles[ 1 ].c_str(), &error, 0 ); - - if ( dz ) - { - char * articleBody = dict_data_read_( dz, articleOffset, articleSize, 0, 0 ); - if ( articleBody ) - { - char * eol = strchr( articleBody, '\n' ); // skip the first line (headword itself) - if ( eol ) - { - while( *eol && Utf8::isspace( *eol ) ) ++eol; // skip spaces - - // use only the single line for the dictionary title - char * endEol = strchr( eol, '\n' ); - if ( endEol ) - *endEol = 0; - - GD_DPRINTF( "DICT NAME: '%s'\n", eol ); - dictionaryName = eol; - } - } - dict_data_close( dz ); - } - else - throw exDictzipError( string( dz_error_str( error ) ) - + "(" + dictFiles[ 1 ] + ")" ); - } - } - else - { - GD_DPRINTF( "Warning: only a single tab present, skipping: %s\n", buf ); - continue; - } - } - else - { - GD_DPRINTF( "Warning: no tabs present, skipping: %s\n", buf ); - continue; - } - - - } while( !indexFile.eof() ); - - - // Write dictionary name - - idx.write( (uint32_t) dictionaryName.size() ); - idx.write( dictionaryName.data(), dictionaryName.size() ); - - // Build index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - // read languages - QPair langs = - LangCoder::findIdsForFilename( QString::fromStdString( dictFiles[ 0 ] ) ); - - // if no languages found, try dictionary's name - if ( langs.first == 0 || langs.second == 0 ) - { - langs = - LangCoder::findIdsForFilename( QString::fromStdString( nameFromFileName( dictFiles[ 0 ] ) ) ); - } - - idxHeader.langFrom = langs.first; - idxHeader.langTo = langs.second; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - - dictionaries.push_back( new DictdDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Dictd dictionary \"%s\" reading failed, error: %s\n", - i->c_str(), e.what() ); - } - } - - return dictionaries; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictdfiles.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictdfiles.hh deleted file mode 100644 index 663ec196dd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictdfiles.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __DICTDFILES_HH_INCLUDED__ -#define __DICTDFILES_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for the dictd (.index/dict.dz) files. -namespace DictdFiles { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictgroupwidget.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictgroupwidget.ui deleted file mode 100644 index ac5d5ef43e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictgroupwidget.ui +++ /dev/null @@ -1,112 +0,0 @@ - - - DictGroupWidget - - - - 0 - 0 - 403 - 333 - - - - Form - - - - 2 - - - 4 - - - 2 - - - 3 - - - - - - - - - - Group icon: - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 16 - 16 - - - - - 16 - 16 - - - - - - - :/icons/hotkeys.png - - - true - - - - - - - Shortcut: - - - - - - - - - - - - - DictListWidget - QListWidget -
groups_widgets.hh
-
- - HotKeyEdit - QLineEdit -
hotkeyedit.hh
-
-
- - - - -
diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.cc deleted file mode 100644 index 143f78dac4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.cc +++ /dev/null @@ -1,342 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "dictheadwords.hh" -#include "gddebug.hh" -#include "mainwindow.hh" - -#include -#include -#include -#include -#include - -#define AUTO_APPLY_LIMIT 150000 - -DictHeadwords::DictHeadwords( QWidget *parent, Config::Class & cfg_, - Dictionary::Class * dict_ ) : - QDialog(parent) -, cfg( cfg_ ) -, dict( dict_ ) -, helpAction( this ) -{ - ui.setupUi( this ); - - if( cfg.headwordsDialog.headwordsDialogGeometry.size() > 0 ) - restoreGeometry( cfg.headwordsDialog.headwordsDialogGeometry ); - - bool fromMainWindow = parent->objectName() == "MainWindow"; - - if( fromMainWindow ) - setAttribute( Qt::WA_DeleteOnClose, false ); - - setWindowFlags( windowFlags() & ~Qt::WindowContextHelpButtonHint ); - - ui.searchModeCombo->addItem( tr( "Text" ), QRegExp::FixedString ); - ui.searchModeCombo->addItem( tr( "Wildcards" ), QRegExp::WildcardUnix ); - ui.searchModeCombo->addItem( tr( "RegExp" ), QRegExp::RegExp ); - ui.searchModeCombo->setCurrentIndex( cfg.headwordsDialog.searchMode ); - - ui.exportButton->setAutoDefault( false ); - ui.OKButton->setAutoDefault( false); - ui.applyButton->setAutoDefault( true ); - ui.applyButton->setDefault( true ); - - ui.matchCase->setChecked( cfg.headwordsDialog.matchCase ); - - model = new QStringListModel( this ); - model->setStringList( headers ); - - proxy = new QSortFilterProxyModel( this ); - - proxy->setSourceModel( model ); - - proxy->setSortCaseSensitivity( Qt::CaseInsensitive ); - proxy->setSortLocaleAware( true ); - proxy->setDynamicSortFilter( false ); - - ui.headersListView->setModel( proxy ); - ui.headersListView->setEditTriggers( QAbstractItemView::NoEditTriggers ); - - // very important call, for performance reasons: - ui.headersListView->setUniformItemSizes( true ); - - delegate = new WordListItemDelegate( ui.headersListView->itemDelegate() ); - if( delegate ) - ui.headersListView->setItemDelegate( delegate ); - - ui.autoApply->setChecked( cfg.headwordsDialog.autoApply ); - - connect( this, SIGNAL( finished( int ) ), this, SLOT( savePos() ) ); - - if( !fromMainWindow ) - { - ui.helpButton->hide(); - connect( this, SIGNAL( closeDialog() ), this, SLOT( accept() ) ); - } - else - { - connect( ui.helpButton, SIGNAL( clicked() ), - this, SLOT( helpRequested() ) ); - - helpAction.setShortcut( QKeySequence( "F1" ) ); - helpAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - - connect( &helpAction, SIGNAL( triggered() ), - this, SLOT( helpRequested() ) ); - - addAction( &helpAction ); - } - - connect( ui.OKButton, SIGNAL( clicked( bool ) ), this, SLOT( okButtonClicked() ) ); - connect( ui.exportButton, SIGNAL( clicked( bool ) ), this, SLOT( exportButtonClicked() ) ); - connect( ui.applyButton, SIGNAL( clicked( bool ) ), this, SLOT( filterChanged() ) ); - - connect( ui.autoApply, SIGNAL( stateChanged( int ) ), - this, SLOT( autoApplyStateChanged( int ) ) ); - - connect( ui.filterLine, SIGNAL( textChanged( QString ) ), - this, SLOT( filterChangedInternal() ) ); - connect( ui.searchModeCombo, SIGNAL( currentIndexChanged( int ) ), - this, SLOT( filterChangedInternal() ) ); - connect( ui.matchCase, SIGNAL( stateChanged( int ) ), - this, SLOT( filterChangedInternal() ) ); - - connect( ui.headersListView, SIGNAL( clicked( QModelIndex ) ), - this, SLOT( itemClicked( QModelIndex ) ) ); - - connect( proxy, SIGNAL( dataChanged( QModelIndex, QModelIndex ) ), - this, SLOT( showHeadwordsNumber() ) ); - - ui.headersListView->installEventFilter( this ); - - setup( dict_ ); -} - -DictHeadwords::~DictHeadwords() -{ - if( delegate ) - delete delegate; -} - -void DictHeadwords::setup( Dictionary::Class *dict_ ) -{ - QApplication::setOverrideCursor( Qt::WaitCursor ); - - dict = dict_; - - setWindowTitle( QString::fromUtf8( dict->getName().c_str() ) ); - - headers.clear(); - model->setStringList( headers ); - - dict->getHeadwords( headers ); - model->setStringList( headers ); - - proxy->sort( 0 ); - filterChanged(); - - if( headers.size() > AUTO_APPLY_LIMIT ) - { - cfg.headwordsDialog.autoApply = ui.autoApply->isChecked(); - ui.autoApply->setChecked( false ); - ui.autoApply->setEnabled( false ); - } - else - { - ui.autoApply->setEnabled( true ); - ui.autoApply->setChecked( cfg.headwordsDialog.autoApply ); - } - - ui.applyButton->setEnabled( !ui.autoApply->isChecked() ); - - setWindowIcon( dict->getIcon() ); - - dictId = QString( dict->getId().c_str() ); - - QApplication::restoreOverrideCursor(); -} - -void DictHeadwords::savePos() -{ - cfg.headwordsDialog.searchMode = ui.searchModeCombo->currentIndex(); - cfg.headwordsDialog.matchCase = ui.matchCase->isChecked(); - - if( headers.size() <= AUTO_APPLY_LIMIT ) - cfg.headwordsDialog.autoApply = ui.autoApply->isChecked(); - - cfg.headwordsDialog.headwordsDialogGeometry = saveGeometry(); -} - -bool DictHeadwords::eventFilter( QObject * obj, QEvent * ev ) -{ - if( obj == ui.headersListView && ev->type() == QEvent::KeyPress ) - { - QKeyEvent * kev = static_cast< QKeyEvent * >( ev ); - if( kev->key() == Qt::Key_Return || kev->key() == Qt::Key_Enter ) - { - itemClicked( ui.headersListView->currentIndex() ); - return true; - } - } - return QDialog::eventFilter( obj, ev ); -} - -void DictHeadwords::okButtonClicked() -{ - savePos(); - closeDialog(); -} - -void DictHeadwords::reject() -{ - savePos(); - closeDialog(); -} - -void DictHeadwords::exportButtonClicked() -{ - saveHeadersToFile(); -} - -void DictHeadwords::filterChangedInternal() -{ - // emit signal in async manner, to avoid UI slowdown - if( ui.autoApply->isChecked() ) - QTimer::singleShot( 100, this, SLOT( filterChanged() ) ); -} - -void DictHeadwords::filterChanged() -{ - QRegExp::PatternSyntax syntax = - QRegExp::PatternSyntax( ui.searchModeCombo->itemData( - ui.searchModeCombo->currentIndex()).toInt() ); - - Qt::CaseSensitivity caseSensitivity = ui.matchCase->isChecked() ? Qt::CaseSensitive - : Qt::CaseInsensitive; - - QRegExp regExp( ui.filterLine->text(), caseSensitivity, syntax ); - - QApplication::setOverrideCursor( Qt::WaitCursor ); - - proxy->setFilterRegExp( regExp ); - proxy->sort( 0 ); - - QApplication::restoreOverrideCursor(); - - showHeadwordsNumber(); -} - -void DictHeadwords::itemClicked( const QModelIndex & index ) -{ - QVariant value = proxy->data( index, Qt::DisplayRole ); - if ( value.canConvert< QString >() ) - { - QString headword = value.toString(); - emit headwordSelected( headword, dictId ); - } -} - -void DictHeadwords::autoApplyStateChanged( int state ) -{ - ui.applyButton->setEnabled( state == Qt::Unchecked ); -} - -void DictHeadwords::showHeadwordsNumber() -{ - ui.headersNumber->setText( tr( "Unique headwords total: %1, filtered: %2" ) - .arg( QString::number( headers.size() ) ) - .arg( QString::number( proxy->rowCount() ) ) ); -} - -void DictHeadwords::saveHeadersToFile() -{ - QString exportPath; - if( cfg.headwordsDialog.headwordsExportPath.isEmpty() ) - exportPath = QDir::homePath(); - else - { - exportPath = QDir::fromNativeSeparators( cfg.headwordsDialog.headwordsExportPath ); - if( !QDir( exportPath ).exists() ) - exportPath = QDir::homePath(); - } - - QString fileName = QFileDialog::getSaveFileName( this, tr( "Save headwords to file" ), - exportPath, - tr( "Text files (*.txt);;All files (*.*)" ) ); - if( fileName.size() == 0) - return; - - cfg.headwordsDialog.headwordsExportPath = QDir::toNativeSeparators( - QFileInfo( fileName ).absoluteDir().absolutePath() ); - QFile file( fileName ); - - for(;;) - { - if ( !file.open( QFile::WriteOnly | QIODevice::Text ) ) - break; - - int headwordsNumber = proxy->rowCount(); - - // Setup progress dialog - int n = headwordsNumber; - int step = 1; - while( n > 1000 ) - { - step *= 10; - n /= 10; - } - - QProgressDialog progress( tr( "Export headwords..."), tr( "Cancel" ), - 0, n, this ); - progress.setWindowModality( Qt::WindowModal ); - - // Write UTF-8 BOM - QByteArray line; - line.append( 0xEF ).append( 0xBB ).append( 0xBF ); - if ( file.write( line ) != line.size() ) - break; - - // Write headwords - - int i; - for( i = 0; i < headwordsNumber; ++i ) - { - if( i % step == 0 ) - progress.setValue( i / step ); - - if( progress.wasCanceled() ) - break; - - QVariant value = proxy->data( proxy->index( i, 0 ) ); - if( !value.canConvert< QString >() ) - continue; - - line = value.toString().toUtf8(); - - line.replace( '\n', ' ' ); - line.replace( '\r', ' ' ); - - line += "\n"; - - if ( file.write( line ) != line.size() ) - break; - } - - if( i < headwordsNumber && !progress.wasCanceled() ) - break; - - file.close(); - return; - } - - gdWarning( "Headers export error: %s", file.errorString().toUtf8().data() ); - file.close(); -} - -void DictHeadwords::helpRequested() -{ - MainWindow * mainWindow = qobject_cast< MainWindow * >( parentWidget() ); - if( mainWindow ) - mainWindow->showGDHelpForID( "Dictionary headwords" ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.hh deleted file mode 100644 index e2053cce48..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.hh +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef __DICTHEADWORDS_H_INCLUDED__ -#define __DICTHEADWORDS_H_INCLUDED__ - -#include -#include -#include -#include -#include -#include -#include - -#include "config.hh" -#include "ui_dictheadwords.h" -#include "dictionary.hh" -#include "delegate.hh" -#include "helpwindow.hh" - -class DictHeadwords : public QDialog -{ - Q_OBJECT - -public: - explicit DictHeadwords( QWidget * parent, Config::Class & cfg_, - Dictionary::Class * dict_ ); - virtual ~DictHeadwords(); - - void setup( Dictionary::Class * dict_ ); - -protected: - Config::Class & cfg; - Dictionary::Class * dict; - QStringList headers; - QStringListModel * model; - QSortFilterProxyModel * proxy; - WordListItemDelegate * delegate; - QString dictId; - - QAction helpAction; - - void saveHeadersToFile(); - bool eventFilter( QObject * obj, QEvent * ev ); - -private: - Ui::DictHeadwords ui; -private slots: - void savePos(); - void filterChangedInternal(); - void filterChanged(); - void exportButtonClicked(); - void okButtonClicked(); - void itemClicked( const QModelIndex & index ); - void autoApplyStateChanged( int state ); - void showHeadwordsNumber(); - virtual void reject(); - void helpRequested(); - -signals: - void headwordSelected( QString const &, QString const & ); - void closeDialog(); -}; - -#endif // __DICTHEADWORDS_H_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.ui deleted file mode 100644 index 4989edac27..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictheadwords.ui +++ /dev/null @@ -1,151 +0,0 @@ - - - DictHeadwords - - - - 0 - 0 - 458 - 550 - - - - - - - - - - - - - - - - - Search mode - - - - - - This element determines how filter string will be interpreted - - - - - - - If checked on the symbols case will be take in account when filtering - - - Match case - - - - - - - - - - Exports headwords to file - - - Export - - - false - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Help - - - false - - - - - - - OK - - - false - - - - - - - - - Press this button to apply filter to headwords list - - - Apply - - - false - - - true - - - - - - - If checked any filter changes will we immediately applied to headwords list - - - Auto apply - - - - - - - Filter: - - - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.cc deleted file mode 100644 index af3f00deaf..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.cc +++ /dev/null @@ -1,81 +0,0 @@ -#include "dictinfo.hh" -#include "langcoder.hh" -#include "language.hh" -#include "fsencoding.hh" -#include - -DictInfo::DictInfo( Config::Class &cfg_, QWidget *parent ) : - QDialog( parent), - cfg( cfg_) -{ - ui.setupUi( this ); - if( cfg.dictInfoGeometry.size() > 0 ) - restoreGeometry( cfg.dictInfoGeometry ); - connect( this, SIGNAL( finished( int ) ), this, SLOT( savePos( int ) ) ); -} - -void DictInfo::showInfo( sptr dict ) -{ - setWindowTitle( QString::fromUtf8( dict->getName().data(), dict->getName().size() ) ); - - ui.dictionaryTotalArticles->setText( QString::number( dict->getArticleCount() ) ); - ui.dictionaryTotalWords->setText( QString::number( dict->getWordCount() ) ); - ui.dictionaryTranslatesFrom->setText( Language::localizedStringForId( dict->getLangFrom() ) ); - ui.dictionaryTranslatesTo->setText( Language::localizedStringForId( dict->getLangTo() ) ); - - ui.openFolder->setVisible( dict->isLocalDictionary() ); - ui.editDictionary->setVisible( dict->isLocalDictionary() && !dict->getMainFilename().isEmpty() && !cfg.editDictionaryCommandLine.isEmpty()); - ui.editDictionary->setToolTip( - tr( "Edit the dictionary via command:\n%1" ).arg( cfg.editDictionaryCommandLine ) ); - - if( dict->getWordCount() == 0 ) - ui.headwordsButton->setVisible( false ); - else - ui.buttonsLayout->insertSpacerItem( 0, new QSpacerItem( 40, 20, QSizePolicy::Expanding ) ); - - std::vector< std::string > const & filenames = dict->getDictionaryFilenames(); - - QString filenamesText; - - for( unsigned x = 0; x < filenames.size(); x++ ) - { - filenamesText += FsEncoding::decode( filenames[ x ].c_str() ); - filenamesText += '\n'; - } - - ui.dictionaryFileList->setPlainText( filenamesText ); - - QString info = dict->getDescription(); - - if( !info.isEmpty() && info.compare( "NONE" ) != 0 ) - ui.infoLabel->setPlainText( info ); - else - ui.infoLabel->clear(); - - setWindowIcon( dict->getIcon() ); -} - -void DictInfo::savePos( int ) -{ - cfg.dictInfoGeometry = saveGeometry(); -} - -void DictInfo::on_editDictionary_clicked() -{ - done( EDIT_DICTIONARY ); -} - -void DictInfo::on_openFolder_clicked() -{ - done( OPEN_FOLDER ); -} - -void DictInfo::on_OKButton_clicked() -{ - done( ACCEPTED ); -} - -void DictInfo::on_headwordsButton_clicked() -{ - done( SHOW_HEADWORDS ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.hh deleted file mode 100644 index 0fa8780e61..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.hh +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef DICTINFO_HH -#define DICTINFO_HH - -#include -#include "ui_dictinfo.h" -#include "dictionary.hh" -#include "config.hh" - -class DictInfo: public QDialog -{ - Q_OBJECT -public: - - enum Actions - { - REJECTED, - ACCEPTED, - OPEN_FOLDER, - EDIT_DICTIONARY, - SHOW_HEADWORDS - }; - - DictInfo( Config::Class &cfg_, QWidget * parent = 0 ); - void showInfo( sptr< Dictionary::Class > dict ); - -private: - Ui::DictInfo ui; - Config::Class &cfg; -private slots: - void savePos( int ); - void on_editDictionary_clicked(); - void on_openFolder_clicked(); - void on_OKButton_clicked(); - void on_headwordsButton_clicked(); -}; - -#endif // DICTINFO_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.ui deleted file mode 100644 index f7a965a620..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictinfo.ui +++ /dev/null @@ -1,315 +0,0 @@ - - - DictInfo - - - - 0 - 0 - 600 - 400 - - - - - - - true - - - - - - - - - - - - Total articles: - - - - - - - - - - Qt::AlignCenter - - - - - - - Translates from: - - - - - - - - - - - - - - Total words: - - - - - - - - - - Qt::AlignCenter - - - - - - - Translates to: - - - - - - - - - - - - - - Open folder - - - false - - - false - - - false - - - - - - - true - - - Edit dictionary - - - - - - - - - - Files comprising this dictionary: - - - - - - - - 0 - 70 - - - - - 0 - 70 - - - - - 16777215 - 70 - - - - - - - - - 224 - 223 - 223 - - - - - - - - - 224 - 223 - 223 - - - - - - - - - 212 - 208 - 200 - - - - - - - - - - - false - - - QPlainTextEdit::NoWrap - - - true - - - - - - - - - - Description: - - - - - - - - - - - - 224 - 223 - 223 - - - - - - - - - 224 - 223 - 223 - - - - - - - - - 212 - 208 - 200 - - - - - - - - - - - Qt::ScrollBarAlwaysOff - - - false - - - true - - - - - - - - - Show all unique dictionary headwords - - - Headwords - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - OK - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionary.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionary.cc deleted file mode 100644 index cd5c5c6151..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionary.cc +++ /dev/null @@ -1,477 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include -#include "dictionary.hh" - -#include - -// For needToRebuildIndex(), read below -#include -#include - -#include "config.hh" -#include -#include -#include -#include -#include "fsencoding.hh" -#include "langcoder.hh" - -#include -#include -#include - -#include "qt4x5.hh" - -namespace Dictionary { - -bool Request::isFinished() -{ - return Qt4x5::AtomicInt::loadAcquire( isFinishedFlag ); -} - -void Request::update() -{ - if ( !Qt4x5::AtomicInt::loadAcquire( isFinishedFlag ) ) - emit updated(); -} - -void Request::finish() -{ - if ( !Qt4x5::AtomicInt::loadAcquire( isFinishedFlag ) ) - { - isFinishedFlag.ref(); - - emit finished(); - } -} - -void Request::setErrorString( QString const & str ) -{ - Mutex::Lock _( errorStringMutex ); - - errorString = str; -} - -QString Request::getErrorString() -{ - Mutex::Lock _( errorStringMutex ); - - return errorString; -} - - -///////// WordSearchRequest - -size_t WordSearchRequest::matchesCount() -{ - Mutex::Lock _( dataMutex ); - - return matches.size(); -} - -WordMatch WordSearchRequest::operator [] ( size_t index ) throw( exIndexOutOfRange ) -{ - Mutex::Lock _( dataMutex ); - - if ( index >= matches.size() ) - throw exIndexOutOfRange(); - - return matches[ index ]; -} - -vector< WordMatch > & WordSearchRequest::getAllMatches() throw( exRequestUnfinished ) -{ - if ( !isFinished() ) - throw exRequestUnfinished(); - - return matches; -} - -void WordSearchRequest::addMatch( WordMatch const & match ) -{ - unsigned n; - for( n = 0; n < matches.size(); n++ ) - if( matches[ n ].word.compare( match.word ) == 0 ) - break; - - if( n >= matches.size() ) - matches.push_back( match ); -} - -////////////// DataRequest - -long DataRequest::dataSize() -{ - Mutex::Lock _( dataMutex ); - - return hasAnyData ? (long)data.size() : -1; -} - -void DataRequest::getDataSlice( size_t offset, size_t size, void * buffer ) - throw( exSliceOutOfRange ) -{ - if ( size == 0 ) - return; - - Mutex::Lock _( dataMutex ); - - if ( offset + size > data.size() || !hasAnyData ) - throw exSliceOutOfRange(); - - memcpy( buffer, &data[ offset ], size ); -} - -vector< char > & DataRequest::getFullData() throw( exRequestUnfinished ) -{ - if ( !isFinished() ) - throw exRequestUnfinished(); - - return data; -} - -Class::Class( string const & id_, vector< string > const & dictionaryFiles_ ): - id( id_ ), dictionaryFiles( dictionaryFiles_ ), dictionaryIconLoaded( false ) - , can_FTS( false), FTS_index_completed( false ) -{ -} - -void Class::deferredInit() -{ -} - -sptr< WordSearchRequest > Class::stemmedMatch( wstring const & /*str*/, - unsigned /*minLength*/, - unsigned /*maxSuffixVariation*/, - unsigned long /*maxResults*/ ) - throw( std::exception ) -{ - return new WordSearchRequestInstant(); -} - -sptr< WordSearchRequest > Class::findHeadwordsForSynonym( wstring const & ) - throw( std::exception ) -{ - return new WordSearchRequestInstant(); -} - -vector< wstring > Class::getAlternateWritings( wstring const & ) - throw() -{ - return vector< wstring >(); -} - -sptr< DataRequest > Class::getResource( string const & /*name*/ ) - throw( std::exception ) -{ - return new DataRequestInstant( false ); -} - -sptr< DataRequest > Class::getSearchResults(const QString &, int, bool, int, int ) -{ - return new DataRequestInstant( false ); -} - -QString const& Class::getDescription() -{ - return dictionaryDescription; -} - -QString Class::getMainFilename() -{ - return QString(); -} - -QIcon const & Class::getIcon() throw() -{ - if( !dictionaryIconLoaded ) - loadIcon(); - return dictionaryIcon; -} - -QIcon const & Class::getNativeIcon() throw() -{ - if( !dictionaryIconLoaded ) - loadIcon(); - return dictionaryNativeIcon; -} - -void Class::loadIcon() throw() -{ - dictionaryIconLoaded = true; -} - -bool Class::loadIconFromFile( QString const & _filename, bool isFullName ) -{ - QFileInfo info; - QString fileName( _filename ); - - if( isFullName ) - info = QFileInfo( fileName ); - else - { - fileName += "bmp"; - info = QFileInfo( fileName ); - if ( !info.isFile() ) - { - fileName.chop( 3 ); - fileName += "png"; - info = QFileInfo( fileName ); - } - if ( !info.isFile() ) - { - fileName.chop( 3 ); - fileName += "jpg"; - info = QFileInfo( fileName ); - } - if ( !info.isFile() ) - { - fileName.chop( 3 ); - fileName += "ico"; - info = QFileInfo( fileName ); - } - } - - if ( info.isFile() ) - { - QImage img( fileName ); - - if ( !img.isNull() ) - { - // Load successful - - // Apply the color key - - img.setAlphaChannel( img.createMaskFromColor( QColor( 192, 192, 192 ).rgb(), - Qt::MaskOutColor ) ); - - dictionaryNativeIcon = QIcon( QPixmap::fromImage( img ) ); - - // Transform it to be square - int max = img.width() > img.height() ? img.width() : img.height(); - - QImage result( max, max, QImage::Format_ARGB32 ); - result.fill( 0 ); // Black transparent - - QPainter painter( &result ); - - painter.drawImage( QPoint( img.width() == max ? 0 : ( max - img.width() ) / 2, - img.height() == max ? 0 : ( max - img.height() ) / 2 ), - img ); - - painter.end(); - - dictionaryIcon = QIcon( QPixmap::fromImage( result ) ); - - return !dictionaryIcon.isNull(); - } - } - return false; -} - -void Class::isolateCSS( QString & css, QString const & wrapperSelector ) -{ - if( css.isEmpty() ) - return; - - int currentPos = 0; - QString newCSS; - QString prefix( "#gdfrom-" ); - prefix += QString::fromLatin1( getId().c_str() ); - if ( !wrapperSelector.isEmpty() ) - prefix += " " + wrapperSelector; - - // Strip comments - css.replace( QRegExp( "\\/\\*[^*]*\\*+([^/][^*]*\\*+)*\\/" ), QString() ); - - for( ; ; ) - { - if( currentPos >= css.length() ) - break; - QChar ch = css[ currentPos ]; - - if( ch == '@' ) - { - // @ rules - - int n = currentPos; - if( css.mid( currentPos, 7 ).compare( "@import", Qt::CaseInsensitive ) == 0 ) - { - // Copy rule as is. - n = css.indexOf( ';', currentPos ); - int n2 = css.indexOf( '{', currentPos ); - if( n2 > 0 && n > n2 ) - n = n2 - 1; - } - else - if( css.mid( currentPos, 6 ).compare( "@media", Qt::CaseInsensitive ) == 0 ) - { - // We must to parse it content to isolate it. - // Copy all up to '{' and continue parse inside. - n = css.indexOf( '{', currentPos ); - } - else - if( css.mid( currentPos, 5 ).compare( "@page", Qt::CaseInsensitive ) == 0 ) - { - // Don't copy rule. GD use own page layout. - n = css.indexOf( '}', currentPos ); - if( n < 0 ) - break; - currentPos = n + 1; - continue; - } - else - { - // Copy rule as is. - n = css.indexOf( '}', currentPos ); - } - - newCSS.append( css.mid( currentPos, n < 0 ? n : n - currentPos + 1 ) ); - - if( n < 0 ) - break; - - currentPos = n + 1; - continue; - } - - if( ch == '{' ) - { - // Selector declaration block. - // We copy it up to '}' as is. - - int n = css.indexOf( '}', currentPos ); - newCSS.append( css.mid( currentPos, n == -1 ? n : n - currentPos + 1 ) ); - if( n < 0 ) - break; - currentPos = n + 1; - continue; - } - - if( ch.isLetter() || ch == '.' || ch == '#' || ch == '*' || ch == '\\' ) - { - // This is some selector. - // We must to add the isolate prefix to it. - - int n = css.indexOf( QRegExp( "[ \\*\\>\\+,;:\\[\\{\\]]" ), currentPos + 1 ); - QString s = css.mid( currentPos, n < 0 ? n : n - currentPos ); - if( n < 0 ) - { - newCSS.append( s ); - break; - } - QString trimmed = s.trimmed(); - if( trimmed.compare( "body", Qt::CaseInsensitive ) == 0 - || trimmed.compare( "html", Qt::CaseInsensitive ) == 0 ) - { - newCSS.append( s + " " + prefix + " " ); - currentPos += 4; - } - else - { - newCSS.append( prefix + " " ); - } - - n = css.indexOf( QRegExp( "[,;\\{]" ), currentPos ); - s = css.mid( currentPos, n < 0 ? n : n - currentPos ); - newCSS.append( s ); - if( n < 0 ) - break; - currentPos = n; - continue; - } - - newCSS.append( ch ); - ++currentPos; - } - css = newCSS; -} - -string makeDictionaryId( vector< string > const & dictionaryFiles ) throw() -{ - std::vector< string > sortedList; - - if ( Config::isPortableVersion() ) - { - // For portable version, we use relative paths - sortedList.reserve( dictionaryFiles.size() ); - - QDir dictionariesDir( Config::getPortableVersionDictionaryDir() ); - - for( unsigned x = 0; x < dictionaryFiles.size(); ++x ) - { - string const & full( dictionaryFiles[ x ] ); - - QFileInfo fileInfo( FsEncoding::decode( full.c_str() ) ); - - if ( fileInfo.isAbsolute() ) - sortedList.push_back( FsEncoding::encode( dictionariesDir.relativeFilePath( fileInfo.filePath() ) ) ); - else - { - // Well, it's relative. We don't technically support those, but - // what the heck - sortedList.push_back( full ); - } - } - } - else - sortedList = dictionaryFiles; - - std::sort( sortedList.begin(), sortedList.end() ); - - QCryptographicHash hash( QCryptographicHash::Md5 ); - - for( std::vector< string >::const_iterator i = sortedList.begin(); - i != sortedList.end(); ++i ) - hash.addData( i->c_str(), i->size() + 1 ); - - return hash.result().toHex().data(); -} - -// While this file is not supposed to have any Qt stuff since it's used by -// the dictionary backends, there's no platform-independent way to get hold -// of a timestamp of the file, so we use here Qt anyway. It is supposed to -// be fixed in the future when it's needed. -bool needToRebuildIndex( vector< string > const & dictionaryFiles, - string const & indexFile ) throw() -{ - unsigned long lastModified = 0; - - for( std::vector< string >::const_iterator i = dictionaryFiles.begin(); - i != dictionaryFiles.end(); ++i ) - { - QFileInfo fileInfo( FsEncoding::decode( i->c_str() ) ); - - if( fileInfo.isDir() ) - continue; - - if ( !fileInfo.exists() ) - return true; - - unsigned long ts = fileInfo.lastModified().toTime_t(); - - if ( ts > lastModified ) - lastModified = ts; - } - - QFileInfo fileInfo( FsEncoding::decode( indexFile.c_str() ) ); - - if ( !fileInfo.exists() ) - return true; - - return fileInfo.lastModified().toTime_t() < lastModified; -} - -QString generateRandomDictionaryId() -{ - return QString( - QCryptographicHash::hash( - QDateTime::currentDateTime().toString( "\"Random\"dd.MM.yyyy hh:mm:ss.zzz" ).toUtf8(), - QCryptographicHash::Md5 ).toHex() ); -} - - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionary.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionary.hh deleted file mode 100644 index b41842e22d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionary.hh +++ /dev/null @@ -1,477 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __DICTIONARY_HH_INCLUDED__ -#define __DICTIONARY_HH_INCLUDED__ - -#include -#include -#include -#include -#include -#include "sptr.hh" -#include "ex.hh" -#include "mutex.hh" -#include "wstring.hh" -#include "langcoder.hh" -#include "config.hh" -#include "qt4x5.hh" - -/// Abstract dictionary-related stuff -namespace Dictionary { - -using std::vector; -using std::string; -using gd::wstring; -using std::map; - -enum Property -{ - Author, - Copyright, - Description, - Email -}; - -DEF_EX( Ex, "Dictionary error", std::exception ) -DEF_EX( exIndexOutOfRange, "The supplied index is out of range", Ex ) -DEF_EX( exSliceOutOfRange, "The requested data slice is out of range", Ex ) -DEF_EX( exRequestUnfinished, "The request hasn't yet finished", Ex ) - -/// When you request a search to be performed in a dictionary, you get -/// this structure in return. It accumulates search results over time. -/// The finished() signal is emitted when the search has finished and there's -/// no more matches to be expected. Note that before connecting to it, check -/// the result of isFinished() -- if it's 'true', the search was instantaneous. -/// Destroy the object when you are not interested in results anymore. -/// -/// Creating, destroying and calling member functions of the requests is done -/// in the GUI thread, however. Therefore, it is important to make sure those -/// operations are fast (this is most important for word searches, where -/// new requests are created and old ones deleted immediately upon a user -/// changing query). -class Request: public QObject -{ - Q_OBJECT - -public: - - /// Returns whether the request has been processed in full and finished. - /// This means that the data accumulated is final and won't change anymore. - bool isFinished(); - - /// Either returns an empty string in case there was no error processing - /// the request, or otherwise a human-readable string describing the problem. - /// Note that an empty result, such as a lack of word or of an article isn't - /// an error -- but any kind of failure to connect to, or read the dictionary - /// is. - QString getErrorString(); - - /// Cancels the ongoing request. This may make Request destruct faster some - /// time in the future, Use this in preparation to destruct many Requests, - /// so that they'd be cancelling in parallel. When the request was fully - /// cancelled, it must emit the finished() signal, either as a result of an - /// actual finish which has happened just before the cancellation, or solely as - /// a result of a request being cancelled (in the latter case, the actual - /// request result may be empty or incomplete). That is, finish() must be - /// called by a derivative at least once if cancel() was called, either after - /// or before it was called. - virtual void cancel()=0; - - virtual ~Request() - {} - -signals: - - /// This signal is emitted when more data becomes available. Local - /// dictionaries typically don't call this, since it is preferred that all - /// data would be available from them at once, but network dictionaries - /// might call that. - void updated(); - - /// This signal is emitted when the request has been processed in full and - /// finished. That is, it's emitted when isFinished() turns true. - void finished(); - -protected: - - /// Called by derivatives to signal update(). - void update(); - - /// Called by derivatives to set isFinished() flag and signal finished(). - void finish(); - - /// Sets the error string to be returned by getErrorString(). - void setErrorString( QString const & ); - -private: - - QAtomicInt isFinishedFlag; - - Mutex errorStringMutex; - QString errorString; -}; - -/// This structure represents the word found. In addition to holding the -/// word itself, it also holds its weight. It is 0 by default. Negative -/// values should be used to store distance from Levenstein-like matching -/// algorithms. Positive values are used by morphology matches. -struct WordMatch -{ - wstring word; - int weight; - - WordMatch(): weight( 0 ) {} - WordMatch( wstring const & word_ ): word( word_ ), weight( 0 ){} - WordMatch( wstring const & word_, int weight_ ): word( word_ ), - weight( weight_ ) {} -}; - -/// This request type corresponds to all types of word searching operations. -class WordSearchRequest: public Request -{ - Q_OBJECT - -public: - - WordSearchRequest(): uncertain( false ) - {} - - /// Returns the number of matches found. The value can grow over time - /// unless isFinished() is true. - size_t matchesCount(); - - /// Returns the match with the given zero-based index, which should be less - /// than matchesCount(). - WordMatch operator [] ( size_t index ) throw( exIndexOutOfRange ); - - /// Returns all the matches found. Since no further locking can or would be - /// done, this can only be called after the request has finished. - vector< WordMatch > & getAllMatches() throw( exRequestUnfinished ); - - /// Returns true if the match was uncertain -- that is, there may be more - /// results in the dictionary itself, the dictionary index isn't good enough - /// to tell that. - bool isUncertain() const - { return uncertain; } - - /// Add match if one is not presented in matches list - void addMatch( WordMatch const & match ); - -protected: - - // Subclasses should be filling up the 'matches' array, locking the mutex when - // whey work with it. - Mutex dataMutex; - - vector< WordMatch > matches; - bool uncertain; -}; - -/// This request type corresponds to any kinds of data responses where a -/// single large blob of binary data is returned. It currently used of article -/// bodies and resources. -class DataRequest: public Request -{ - Q_OBJECT - -public: - - /// Returns the number of bytes read, with a -1 meaning that so far it's - /// uncertain whether resource even exists or not, and any non-negative value - /// meaning that that amount of bytes is not available. - /// If -1 is still being returned after the request has finished, that means - /// the resource wasn't found. - long dataSize(); - - /// Writes "size" bytes starting from "offset" of the data read to the given - /// buffer. "size + offset" must be <= than dataSize(). - void getDataSlice( size_t offset, size_t size, void * buffer ) - throw( exSliceOutOfRange ); - - /// Returns all the data read. Since no further locking can or would be - /// done, this can only be called after the request has finished. - vector< char > & getFullData() throw( exRequestUnfinished ); - - DataRequest(): hasAnyData( false ) {} - -protected: - - // Subclasses should be filling up the 'data' array, locking the mutex when - // whey work with it. - Mutex dataMutex; - - bool hasAnyData; // With this being false, dataSize() always returns -1 - vector< char > data; -}; - -/// A helper class for syncronous word search implementations. -class WordSearchRequestInstant: public WordSearchRequest -{ -public: - - WordSearchRequestInstant() - { finish(); } - - virtual void cancel() - {} - - vector< WordMatch > & getMatches() - { return matches; } - - void setUncertain( bool value ) - { uncertain = value; } -}; - -/// A helper class for syncronous data read implementations. -class DataRequestInstant: public DataRequest -{ -public: - - DataRequestInstant( bool succeeded ) - { hasAnyData = succeeded; finish(); } - - DataRequestInstant( QString const & errorString ) - { setErrorString( errorString ); finish(); } - - virtual void cancel() - {} - - vector< char > & getData() - { return data; } -}; - -/// Dictionary features. Different dictionaries can possess different features, -/// which hint at some of their aspects. -enum Feature -{ - /// No features - NoFeatures = 0, - /// The dictionary is suitable to query when searching for compound expressions. - SuitableForCompoundSearching = 1 -}; - -Q_DECLARE_FLAGS( Features, Feature ) -Q_DECLARE_OPERATORS_FOR_FLAGS( Features ) - -/// A dictionary. Can be used to query words. -class Class -{ - string id; - vector< string > dictionaryFiles; - -protected: - QString dictionaryDescription; - QIcon dictionaryIcon, dictionaryNativeIcon; - bool dictionaryIconLoaded; - bool can_FTS; - QAtomicInt FTS_index_completed; - - // Load user icon if it exist - // By default set icon to empty - virtual void loadIcon() throw(); - - // Load icon from filename directly if isFullName == true - // else treat filename as name without extension - bool loadIconFromFile( QString const & filename, bool isFullName = false ); - - /// Make css content usable only for articles from this dictionary - void isolateCSS( QString & css, QString const & wrapperSelector = QString() ); - -public: - - /// Creates a dictionary. The id should be made using - /// Format::makeDictionaryId(), the dictionaryFiles is the file names the - /// dictionary consists of. - Class( string const & id, vector< string > const & dictionaryFiles ); - - /// Called once after the dictionary is constructed. Usually called for each - /// dictionaries once all dictionaries were made. The implementation should - /// queue any initialization tasks the dictionary decided to postpone to - /// threadpools, network requests etc, so the system could complete them - /// in background. - /// The default implementation does nothing. - virtual void deferredInit(); - - /// Returns the dictionary's id. - string getId() throw() - { return id; } - - /// Returns the list of file names the dictionary consists of. - vector< string > const & getDictionaryFilenames() throw() - { return dictionaryFiles; } - - /// Returns the dictionary's full name, utf8. - virtual string getName() throw()=0; - - /// Returns all the available properties, like the author's name, copyright, - /// description etc. All strings are in utf8. - virtual map< Property, string > getProperties() throw()=0; - - /// Returns the features the dictionary possess. See the Feature enum for - /// their list. - virtual Features getFeatures() const throw() - { return NoFeatures; } - - /// Returns the number of articles in the dictionary. - virtual unsigned long getArticleCount() throw()=0; - - /// Returns the number of words in the dictionary. This can be equal to - /// the number of articles, or can be larger if some synonyms are present. - virtual unsigned long getWordCount() throw()=0; - - /// Returns the dictionary's icon. - virtual QIcon const & getIcon() throw(); - - /// Returns the dictionary's native icon. Dsl icons are usually rectangular, - /// and are adapted by getIcon() to be square. This function allows getting - /// the original icon with no geometry transformations applied. - virtual QIcon const & getNativeIcon() throw(); - - /// Returns the dictionary's source language. - virtual quint32 getLangFrom() const - { return 0; } - - /// Returns the dictionary's target language. - virtual quint32 getLangTo() const - { return 0; } - - /// Looks up a given word in the dictionary, aiming for exact matches and - /// prefix matches. If it's not possible to locate any prefix matches, no - /// prefix results should be added. Not more than maxResults results should - /// be stored. The whole operation is supposed to be fast, though some - /// dictionaries, the network ones particularly, may of course be slow. - virtual sptr< WordSearchRequest > prefixMatch( wstring const &, - unsigned long maxResults ) throw( std::exception )=0; - - /// Looks up a given word in the dictionary, aiming to find different forms - /// of the given word by allowing suffix variations. This means allowing words - /// which can be as short as the input word size minus maxSuffixVariation, or as - /// long as the input word size plus maxSuffixVariation, which share at least - /// the input word size minus maxSuffixVariation initial symbols. - /// Since the goal is to find forms of the words, no matches where a word - /// in the middle of a phrase got matched should be returned. - /// The default implementation does nothing, returning an empty result. - virtual sptr< WordSearchRequest > stemmedMatch( wstring const &, - unsigned minLength, - unsigned maxSuffixVariation, - unsigned long maxResults ) throw( std::exception ); - - /// Finds known headwords for the given word, that is, the words for which - /// the given word is a synonym. If a dictionary can't perform this operation, - /// it should leave the default implementation which always returns an empty - /// result. - virtual sptr< WordSearchRequest > findHeadwordsForSynonym( wstring const & ) - throw( std::exception ); - - /// For a given word, provides alternate writings of it which are to be looked - /// up alongside with it. Transliteration dictionaries implement this. The - /// default implementation returns an empty list. Note that this function is - /// supposed to be very fast and simple, and the results are thus returned - /// syncronously. - virtual vector< wstring > getAlternateWritings( wstring const & ) - throw(); - - /// Returns a definition for the given word. The definition should - /// be an html fragment (without html/head/body tags) in an utf8 encoding. - /// The 'alts' vector could contain a list of words the definitions of which - /// should be included in the output as well, being treated as additional - /// synonyms for the main word. - /// context is a dictionary-specific data, currently only used for the - /// 'Websites' feature. - virtual sptr< DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & context = wstring() ) - throw( std::exception )=0; - - /// Loads contents of a resource named 'name' into the 'data' vector. This is - /// usually a picture file referenced in the article or something like that. - /// The default implementation always returns the non-existing resource - /// response. - virtual sptr< DataRequest > getResource( string const & /*name*/ ) - throw( std::exception ); - - /// Returns a results of full-text search of given string similar getArticle(). - virtual sptr< DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxArticlesPerDictionary ); - - // Return dictionary description if presented - virtual QString const& getDescription(); - - // Return dictionary main file name - virtual QString getMainFilename(); - - /// Check text direction - bool isFromLanguageRTL() - { return LangCoder::isLanguageRTL( getLangFrom() ); } - bool isToLanguageRTL() - { return LangCoder::isLanguageRTL( getLangTo() ); } - - /// Return true if dictionary is local dictionary - virtual bool isLocalDictionary() - { return false; } - - /// Dictionary can full-text search - bool canFTS() - { return can_FTS; } - - /// Dictionary have index for full-text search - bool haveFTSIndex() - { return Qt4x5::AtomicInt::loadAcquire( FTS_index_completed ) != 0; } - - /// Make index for full-text search - virtual void makeFTSIndex( QAtomicInt &, bool ) - {} - - /// Set full-text search parameters - virtual void setFTSParameters( Config::FullTextSearch const & ) - {} - - /// Retrieve all dictionary headwords - virtual bool getHeadwords( QStringList & ) - { return false; } - - virtual ~Class() - {} -}; - -/// Callbacks to be used when the dictionaries are being initialized. -class Initializing -{ -public: - - /// Called by the Format instance to notify the caller that the given - /// dictionary is being indexed. Since indexing can take some time, this - /// is useful to show in some kind of a splash screen. - /// The dictionaryName is in utf8. - virtual void indexingDictionary( string const & dictionaryName ) throw()=0; - - virtual ~Initializing() - {} -}; - -/// Generates an id based on the set of file names which the dictionary -/// consists of. The resulting id is an alphanumeric hex value made by -/// hashing the file names. This id should be used to identify dictionary -/// and for the index file name, if one is needed. -/// This function is supposed to be used by dictionary implementations. -string makeDictionaryId( vector< string > const & dictionaryFiles ) throw(); - -/// Checks if it is needed to regenerate index file based on its timestamp -/// and the timestamps of the dictionary files. If some files are newer than -/// the index file, or the index file doesn't exist, returns true. If some -/// dictionary files don't exist, returns true, too. -/// This function is supposed to be used by dictionary implementations. -bool needToRebuildIndex( vector< string > const & dictionaryFiles, - string const & indexFile ) throw(); - -/// Returns a random dictionary id useful for interactively created -/// dictionaries. -QString generateRandomDictionaryId(); - -} - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionarybar.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionarybar.cc deleted file mode 100644 index 773fa79270..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionarybar.cc +++ /dev/null @@ -1,400 +0,0 @@ -#include "dictionarybar.hh" -#include -#include -#include -#include -#include -#include "gddebug.hh" -#include "fsencoding.hh" -#include - -using std::vector; - -DictionaryBar::DictionaryBar( QWidget * parent, - Config::Events & events, QString const & _editDictionaryCommand, unsigned short const & maxDictionaryRefsInContextMenu_ ): - QToolBar( tr( "&Dictionary Bar" ), parent ), - mutedDictionaries( 0 ), - configEvents( events ), - editDictionaryCommand( _editDictionaryCommand ), - maxDictionaryRefsInContextMenu(maxDictionaryRefsInContextMenu_), - use14x21( false ), - timerId( 0 ) -{ - setObjectName( "dictionaryBar" ); - - maxDictionaryRefsAction = new QAction( QIcon(":/icons/expand_opt.png"), tr( "Extended menu with all dictionaries..." ), this ); - - connect( &events, SIGNAL( mutedDictionariesChanged() ), - this, SLOT( mutedDictionariesChanged() ) ); - - connect( this, SIGNAL(actionTriggered(QAction*)), - this, SLOT(actionWasTriggered(QAction*)) ); - - installEventFilter( this ); -} - -static QString elideDictName( QString const & name ) -{ - // Some names are way too long -- we insert an ellipsis in the middle of those - - int const maxSize = 33; - - if ( name.size() <= maxSize ) - return name; - - int const pieceSize = maxSize / 2 - 1; - - return name.left( pieceSize ) + QChar( 0x2026 ) + name.right( pieceSize ); -} - -void DictionaryBar::setDictionaries( vector< sptr< Dictionary::Class > > - const & dictionaries ) -{ - setUpdatesEnabled( false ); - - allDictionaries.clear(); - allDictionaries = dictionaries; - - clear(); - dictActions.clear(); - - use14x21 = false; - - for( unsigned x = 0; x < dictionaries.size(); ++x ) - { - QIcon icon = dictionaries[ x ]->getNativeIcon(); - - QString dictName = QString::fromUtf8( dictionaries[ x ]-> - getName().c_str() ); - - QAction * action = addAction( icon, elideDictName( dictName ) ); - - action->setToolTip( dictName ); // Tooltip need not be shortened - - QString id = QString::fromStdString( dictionaries[ x ]->getId() ); - - action->setData( id ); - - action->setCheckable( true ); - - action->setChecked( mutedDictionaries ? !mutedDictionaries->contains( id ) : true ); - - QList< QSize > sizes = icon.availableSizes(); - - for( QList< QSize >::iterator i = sizes.begin(); i != sizes.end(); - ++i ) - if ( i->width() == 14 && i->height() == 21 ) - use14x21 = true; - - dictActions.append( action ); - } - - setDictionaryIconSize( 21 ); - - setUpdatesEnabled( true ); -} - -void DictionaryBar::setDictionaryIconSize( int extent ) -{ - setIconSize( QSize( use14x21 ? extent*2/3 : extent, extent ) ); -} - -void DictionaryBar::contextMenuEvent( QContextMenuEvent * event ) -{ - showContextMenu( event ); -} - -void DictionaryBar::showContextMenu( QContextMenuEvent * event, bool extended ) -{ - QMenu menu( this ); - - QAction * editAction = - menu.addAction( QIcon( ":/icons/bookcase.png" ), tr( "Edit this group" ) ); - - QAction * infoAction = NULL; - QAction * headwordsAction = NULL; - QAction * editDictAction = NULL; - QAction * openDictFolderAction = NULL; - QString dictFilename; - - QAction * dictAction = actionAt( event->x(), event->y() ); - if( dictAction ) - { - Dictionary::Class *pDict = NULL; - QString id = dictAction->data().toString(); - for( unsigned i = 0; i < allDictionaries.size(); i++ ) - { - if( id.compare( allDictionaries[ i ]->getId().c_str() ) == 0 ) - { - pDict = allDictionaries[ i ].get(); - break; - } - } - - if( pDict ) - { - infoAction = menu.addAction( tr( "Dictionary info" ) ); - - if( pDict->isLocalDictionary() ) - { - if( pDict->getWordCount() > 0 ) - headwordsAction = menu.addAction( tr( "Dictionary headwords" ) ); - - openDictFolderAction = menu.addAction( tr( "Open dictionary folder" ) ); - - if( !editDictionaryCommand.isEmpty() ) - { - if( !pDict->getMainFilename().isEmpty() ) - { - dictFilename = pDict->getMainFilename(); - editDictAction = menu.addAction( tr( "Edit dictionary" ) ); - } - } - } - } - } - - if ( !dictActions.empty() ) - menu.addSeparator(); - - unsigned refsAdded = 0; - - for( QList< QAction * >::iterator i = dictActions.begin(); - i != dictActions.end(); ++i ) - { - - // Enough! Or the menu would become too large. - if ( refsAdded++ >= maxDictionaryRefsInContextMenu && !extended ) - { - menu.addSeparator(); - menu.addAction( maxDictionaryRefsAction ); - break; - } - - // We need new action, since the one we have has text elided - QAction * action = menu.addAction( (*i)->icon(), (*i)->toolTip() ); - - action->setCheckable( true ); - action->setChecked( (*i)->isChecked() ); - action->setData( QVariant::fromValue( (void *)*i ) ); - // Force "icon in menu" on all platforms, for - // usability reasons. - action->setIconVisibleInMenu( true ); - } - - connect( this, SIGNAL( closePopupMenu() ), &menu, SLOT( close() ) ); - - QAction * result = menu.exec( event->globalPos() ); - - if( result && result == infoAction ) - { - QString id = dictAction->data().toString(); - emit showDictionaryInfo( id ); - return; - } - - if( result && result == headwordsAction ) - { - QString id = dictAction->data().toString(); - emit showDictionaryHeadwords( id ); - return; - } - - if( result && result == openDictFolderAction ) - { - QString id = dictAction->data().toString(); - emit openDictionaryFolder( id ); - return; - } - - if( result && result == editDictAction ) - { - QString command( editDictionaryCommand ); - command.replace( "%GDDICT%", "\"" + dictFilename + "\"" ); - if( !QProcess::startDetached( command ) ) - QApplication::beep(); - } - - if( result && result == maxDictionaryRefsAction ) - { - showContextMenu( event, true ); - } - - if ( result == editAction ) - emit editGroupRequested(); - else - if ( result && result->data().value< void * >() ) - ( ( QAction * )( result->data().value< void * >() ) )->trigger(); - - event->accept(); -} - -void DictionaryBar::mutedDictionariesChanged() -{ - //DPRINTF( "Muted dictionaries changed\n" ); - - if( !mutedDictionaries ) - return; - - // Update actions - - setUpdatesEnabled( false ); - - for( QList< QAction * >::iterator i = dictActions.begin(); - i != dictActions.end(); ++i ) - { - bool isUnmuted = !mutedDictionaries->contains( (*i)->data().toString() ); - - if ( isUnmuted != (*i)->isChecked() ) - (*i)->setChecked( isUnmuted ); - } - - setUpdatesEnabled( true ); -} - -void DictionaryBar::actionWasTriggered( QAction * action ) -{ - if( !mutedDictionaries ) - return; - - QString id = action->data().toString(); - - if ( id.isEmpty() ) - return; // Some weird action, not our button - - if ( QApplication::keyboardModifiers() & - ( Qt::ControlModifier | Qt::ShiftModifier ) ) - { - // Solo mode -- either use the dictionary exclusively, or toggle - // back all dictionaries if we do that already. - - // Are we solo already? - - bool isSolo = true; - - // For solo, all dictionaries must be unchecked, since we're handling - // the result of the dictionary being (un)checked, and in case we were - // in solo, now we would end up with no dictionaries being checked at all. - for( QList< QAction * >::iterator i = dictActions.begin(); - i != dictActions.end(); ++i ) - { - if ( (*i)->isChecked() ) - { - isSolo = false; - break; - } - } - - if ( isSolo ) - { - // Restore or clear all the dictionaries - if ( QApplication::keyboardModifiers() & Qt::ShiftModifier ) - *mutedDictionaries = storedMutedSet; - else - { - for( QList< QAction * >::iterator i = dictActions.begin(); - i != dictActions.end(); ++i ) - mutedDictionaries->remove( (*i)->data().toString() ); - } - storedMutedSet.clear(); - } - else - { - // Save dictionaries state - storedMutedSet = *mutedDictionaries; - - // Make dictionary solo - for( QList< QAction * >::iterator i = dictActions.begin(); - i != dictActions.end(); ++i ) - { - QString dictId = (*i)->data().toString(); - - if ( dictId == id ) - mutedDictionaries->remove( dictId ); - else - mutedDictionaries->insert( dictId ); - } - } - configEvents.signalMutedDictionariesChanged(); - } - else - { - // Normal mode - - storedMutedSet.clear(); - - if ( action->isChecked() ) - { - // Unmute the dictionary - - if ( mutedDictionaries->contains( id ) ) - { - mutedDictionaries->remove( id ); - configEvents.signalMutedDictionariesChanged(); - } - } - else - { - // Mute the dictionary - - if ( !mutedDictionaries->contains( id ) ) - { - mutedDictionaries->insert( id ); - configEvents.signalMutedDictionariesChanged(); - } - } - } -} - -void DictionaryBar::dictsPaneClicked( const QString & id ) -{ - for( QList< QAction * >::iterator i = dictActions.begin(); - i != dictActions.end(); ++i ) - { - QString dictId = (*i)->data().toString(); - if ( dictId == id ) - { - (*i)->activate( QAction::Trigger ); - break; - } - } -} - -bool DictionaryBar::eventFilter( QObject * obj, QEvent * ev ) -{ - if(obj == this && !isFloating() ) - { - QPoint pt = parentWidget()->mapFromGlobal( QCursor::pos() ); - switch( ev->type() ) - { - case QEvent::Leave : if( geometry().contains( pt ) ) - { - if( timerId ) - killTimer( timerId ); - timerId = startTimer( 500 ); - return true; - } - break; - case QEvent::Enter : if( timerId != 0) - { - killTimer( timerId ); - timerId = 0; - } - break; - case QEvent::Timer: if( static_cast< QTimerEvent * >( ev )->timerId() == timerId ) - { - if( !geometry().contains( pt ) ) - { - killTimer( timerId ); - timerId = 0; - QEvent event( QEvent::Leave ); - QApplication::sendEvent( this, &event ); - } - return true; - } - break; - default: break; - } - } - return false; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionarybar.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionarybar.hh deleted file mode 100644 index 5c4d9cd140..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictionarybar.hh +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef __DICTIONARYBAR_HH_INCLUDED__ -#define __DICTIONARYBAR_HH_INCLUDED__ - -#include -#include -#include -#include -#include -#include "dictionary.hh" -#include "config.hh" - -/// A bar containing dictionary icons of the currently chosen group. -/// Individual dictionaries can be toggled on and off. -class DictionaryBar: public QToolBar -{ - Q_OBJECT - -public: - - /// Constructs an empty dictionary bar - DictionaryBar( QWidget * parent, - Config::Events &, QString const & _editDictionaryCommand, unsigned short const & maxDictionaryRefsInContextMenu_ ); - - /// Sets dictionaries to be displayed in the bar. Their statuses (enabled/ - /// disabled) are taken from the configuration data. - void setDictionaries( std::vector< sptr< Dictionary::Class > > const & ); - void setMutedDictionaries( Config::MutedDictionaries * mutedDictionaries_ ) - { mutedDictionaries = mutedDictionaries_; } - Config::MutedDictionaries const * getMutedDictionaries() const - { return mutedDictionaries; } - void setDictionaryIconSize( int extent ); - -signals: - - /// Signalled when the user decided to edit group the bar currently - /// shows. - void editGroupRequested(); - - /// Signal for show dictionary info command from context menu - void showDictionaryInfo( QString const & id ); - - /// Signal for show dictionary headwords command from context menu - void showDictionaryHeadwords( QString const & id ); - - /// Signal for open dictionary folder from context menu - void openDictionaryFolder( QString const & id ); - - /// Signal to close context menu - void closePopupMenu(); - -private: - - Config::MutedDictionaries * mutedDictionaries; - Config::Events & configEvents; - Config::MutedDictionaries storedMutedSet; - QString editDictionaryCommand; - // how many dictionaries should be shown in the context menu: - unsigned short const & maxDictionaryRefsInContextMenu; - std::vector< sptr< Dictionary::Class > > allDictionaries; - /// All the actions we have added to the toolbar - QList< QAction * > dictActions; - QAction * maxDictionaryRefsAction; - - bool use14x21; - int timerId; - - virtual bool eventFilter( QObject *, QEvent * ); - -protected: - - void contextMenuEvent( QContextMenuEvent * event ); - -private slots: - - void mutedDictionariesChanged(); - - void actionWasTriggered( QAction * ); - - void dictsPaneClicked( QString const & ); - - void showContextMenu( QContextMenuEvent * event, bool extended = false ); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictserver.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictserver.cc deleted file mode 100644 index 0d598f2ef4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictserver.cc +++ /dev/null @@ -1,875 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "dictserver.hh" -#include "wstring_qt.hh" -#include -#include -#include -#include -#include "gddebug.hh" -#include "htmlescape.hh" - -namespace DictServer { - -using namespace Dictionary; - -enum { - DefaultPort = 2628 -}; - -namespace { - -#define MAX_MATCHES_COUNT 60 - -bool readLine( QTcpSocket & socket, QString & line, - QString & errorString, QAtomicInt & isCancelled ) -{ - line.clear(); - errorString.clear(); - if( socket.state() != QTcpSocket::ConnectedState ) - return false; - - for( ; ; ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return false; - - if( socket.canReadLine() ) - { - QByteArray reply = socket.readLine(); - line = QString::fromUtf8( reply.data(), reply.size() ); - return true; - } - - if( !socket.waitForReadyRead( 2000 ) ) - { - errorString = "Data reading error: socket error " + QString::number( socket.error() ) - + ": \"" + socket.errorString() + "\""; - break; - } - } - return false; -} - -bool connectToServer( QTcpSocket & socket, QString const & url, - QString & errorString, QAtomicInt & isCancelled ) -{ - QUrl serverUrl( url ); - quint16 port = serverUrl.port( DefaultPort ); - QString reply; - - for( ; ; ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return false; - - socket.connectToHost( serverUrl.host(), port ); - - if( socket.state() != QTcpSocket::ConnectedState ) - { - if( !socket.waitForConnected( 5000 ) ) - break; - } - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return false; - - if( !readLine( socket, reply, errorString, isCancelled ) ) - break; - - if( !reply.isEmpty() && reply.left( 3 ) != "220" ) - { - errorString = "Server refuse connection: " + reply; - return false; - } - - socket.write( QByteArray( "CLIENT GoldenDict\r\n") ); - if( !socket.waitForBytesWritten( 1000 ) ) - break; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return false; - - if( !readLine( socket, reply, errorString, isCancelled ) ) - break; - - if( !serverUrl.userInfo().isEmpty() ) - { - QString authCommand = QString( "AUTH " ); - - int pos = serverUrl.userInfo().indexOf( QRegExp( "[:;]" ) ); - if( pos > 0 ) - authCommand += serverUrl.userInfo().left( pos ) - + " " + serverUrl.userInfo().mid( pos + 1 ); - else - authCommand += serverUrl.userInfo(); - - authCommand += "\r\n"; - - socket.write( authCommand.toUtf8() ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return false; - - if( socket.waitForBytesWritten( 1000 ) ) - break; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return false; - - if( readLine( socket, reply, errorString, isCancelled ) ) - break; - - if( reply.left( 3 ) != "230" ) - { - errorString = "Authentication error: " + reply; - return false; - } - } - - return true; - } - - if( !Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - errorString = QString( "Server connection fault, socket error %1: \"%2\"" ) - .arg( QString::number( socket.error() ) ) - .arg( socket.errorString() ); - return false; -} - -void disconnectFromServer( QTcpSocket & socket ) -{ - if( socket.state() == QTcpSocket::ConnectedState ) - socket.write( QByteArray( "QUIT\r\n" ) ); - - socket.disconnectFromHost(); -} - -class DictServerDictionary: public Dictionary::Class -{ - string name; - QString url, icon; - quint32 langId; - QString errorString; - QTcpSocket socket; - QStringList databases; - QStringList strategies; - QStringList serverDatabases; - -public: - - DictServerDictionary( string const & id, string const & name_, - QString const & url_, - QString const & database_, - QString const & strategies_, - QString const & icon_ ): - Dictionary::Class( id, vector< string >() ), - name( name_ ), - url( url_ ), - icon( icon_ ), - langId( 0 ) - { - int pos = url.indexOf( "://" ); - if( pos < 0 ) - url = "dict://" + url; - - databases = database_.split( QRegExp( "[ ,;]" ), QString::SkipEmptyParts ); - if( databases.isEmpty() ) - databases.append( "*" ); - - strategies = strategies_.split( QRegExp( "[ ,;]" ), QString::SkipEmptyParts ); - if( strategies.isEmpty() ) - strategies.append( "prefix" ); - } - - virtual string getName() throw() - { return name; } - - virtual map< Property, string > getProperties() throw() - { return map< Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return 0; } - - virtual unsigned long getWordCount() throw() - { return 0; } - - virtual sptr< WordSearchRequest > prefixMatch( wstring const &, - unsigned long maxResults ) throw( std::exception ); - - virtual sptr< DataRequest > getArticle( wstring const &, vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual quint32 getLangFrom() const - { return langId; } - - virtual quint32 getLangTo() const - { return langId; } - - virtual QString const & getDescription(); -protected: - - virtual void loadIcon() throw(); - - void getServerDatabases(); - - friend class DictServerWordSearchRequest; - friend class DictServerArticleRequest; -}; - -void DictServerDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - if( !icon.isEmpty() ) - { - QFileInfo fInfo( QDir( Config::getConfigDir() ), icon ); - if( fInfo.isFile() ) - loadIconFromFile( fInfo.absoluteFilePath(), true ); - } - if( dictionaryIcon.isNull() ) - dictionaryIcon = dictionaryNativeIcon = QIcon(":/icons/network.png"); - dictionaryIconLoaded = true; -} - -QString const & DictServerDictionary::getDescription() -{ - if( serverDatabases.isEmpty() ) - { - dictionaryDescription.clear(); - getServerDatabases(); - } - - if( dictionaryDescription.isEmpty() ) - { - dictionaryDescription = QCoreApplication::translate( "DictServer", "Url: " ) + url + "\n"; - dictionaryDescription += QCoreApplication::translate( "DictServer", "Databases: " ) + databases.join( ", " ) + "\n"; - dictionaryDescription += QCoreApplication::translate( "DictServer", "Search strategies: " ) + strategies.join( ", " ); - if( !serverDatabases.isEmpty() ) - { - dictionaryDescription += "\n\n"; - dictionaryDescription += QCoreApplication::translate( "DictServer", "Server databases" ) - + " (" + QString::number( serverDatabases.size()) + "):"; - for( QStringList::const_iterator i = serverDatabases.begin(); i != serverDatabases.end(); ++i ) - dictionaryDescription += "\n" + *i; - } - } - return dictionaryDescription; -} - -void DictServerDictionary::getServerDatabases() -{ - QAtomicInt isCancelled; - QTcpSocket * socket = new QTcpSocket; - - if( !socket ) - return; - - if( connectToServer( *socket, url, errorString, isCancelled ) ) - { - for( ; ; ) - { - QString req = QString( "SHOW DB\r\n" ); - socket->write( req.toUtf8() ); - socket->waitForBytesWritten( 1000 ); - - QString reply; - - if( !readLine( *socket, reply, errorString, isCancelled ) ) - return; - - if( reply.left( 3 ) == "110" ) - { - int countPos = reply.indexOf( ' ', 4 ); - // Get databases count - int count = reply.mid( 4, countPos > 4 ? countPos - 4 : -1 ).toInt(); - - // Read databases - for( int x = 0; x < count; x++ ) - { - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( reply[ 0 ] == '.' ) - break; - - while( reply.endsWith( '\r' ) || reply.endsWith( '\n' ) ) - reply.chop( 1 ); - - if( !reply.isEmpty() ) - serverDatabases.append( reply ); - } - - break; - } - else - { - gdWarning( "Retrieving databases from \"%s\" fault: %s\n", - getName().c_str(), reply.toUtf8().data() ); - break; - } - } - disconnectFromServer( *socket ); - } - - if( !errorString.isEmpty() ) - gdWarning( "Retrieving databases from \"%s\" fault: %s\n", - getName().c_str(), errorString.toUtf8().data() ); - delete socket; -} - -class DictServerWordSearchRequest; - -class DictServerWordSearchRequestRunnable: public QRunnable -{ - DictServerWordSearchRequest & r; - QSemaphore & hasExited; - -public: - - DictServerWordSearchRequestRunnable( DictServerWordSearchRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~DictServerWordSearchRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class DictServerWordSearchRequest: public Dictionary::WordSearchRequest -{ - QAtomicInt isCancelled; - wstring word; - QString errorString; - QSemaphore hasExited; - DictServerDictionary & dict; - QTcpSocket * socket; - -public: - - DictServerWordSearchRequest( wstring const & word_, - DictServerDictionary & dict_ ) : - word( word_ ), - dict( dict_ ), - socket( 0 ) - { - QThreadPool::globalInstance()->start( - new DictServerWordSearchRequestRunnable( *this, hasExited ) ); - } - - void run(); - - ~DictServerWordSearchRequest() - { - hasExited.acquire(); - } - - virtual void cancel(); - -}; - -void DictServerWordSearchRequestRunnable::run() -{ - r.run(); -} - -void DictServerWordSearchRequest::run() -{ - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - socket = new QTcpSocket; - - if( !socket ) - { - finish(); - return; - } - - if( connectToServer( *socket, dict.url, errorString, isCancelled ) ) - { - QStringList matchesList; - - for( int ns = 0; ns < dict.strategies.size(); ns++ ) - { - for( int i = 0; i < dict.databases.size(); i++ ) - { - QString matchReq = QString( "MATCH " ) - + dict.databases.at( i ) - + " " + dict.strategies.at( ns ) - + " \"" + gd::toQString( word ) - + "\"\r\n"; - socket->write( matchReq.toUtf8() ); - socket->waitForBytesWritten( 1000 ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - QString reply; - - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( reply.left( 3 ) == "250" ) - { - // "OK" reply - matches info will be later - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - } - - if( reply.left( 3 ) == "552" ) - { - // No matches - continue; - } - - if( reply[ 0 ] == '5' || reply[ 0 ] == '4' ) - { - // Database error - gdWarning( "Find matches in \"%s\", database \"%s\", strategy \"%s\" fault: %s\n", - dict.getName().c_str(), dict.databases.at( i ).toUtf8().data(), - dict.strategies.at( ns ).toUtf8().data(), reply.toUtf8().data() ); - continue; - } - - if( reply.left( 3 ) == "152" ) - { - // Matches found - int countPos = reply.indexOf( ' ', 4 ); - - // Get matches count - int count = reply.mid( 4, countPos > 4 ? countPos - 4 : -1 ).toInt(); - - // Read matches - for( int x = 0; x <= count; x++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( reply[ 0 ] == '.' ) - break; - - while( reply.endsWith( '\r' ) || reply.endsWith( '\n' ) ) - reply.chop( 1 ); - - int pos = reply.indexOf( ' ' ); - if( pos >= 0 ) - { - QString word = reply.mid( pos + 1 ); - if( word.endsWith( '\"') ) - word.chop( 1 ); - if( word[ 0 ] == '\"' ) - word = word.mid( 1 ); - - matchesList.append( word ); - } - } - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) || !errorString.isEmpty() ) - break; - } - } - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) || !errorString.isEmpty() ) - break; - - matchesList.removeDuplicates(); - if( matchesList.size() >= MAX_MATCHES_COUNT ) - break; - } - - if( !Qt4x5::AtomicInt::loadAcquire( isCancelled ) && errorString.isEmpty() ) - { - matchesList.removeDuplicates(); - - int count = matchesList.size(); - if( count > MAX_MATCHES_COUNT ) - count = MAX_MATCHES_COUNT; - - if( count ) - { - Mutex::Lock _( dataMutex ); - for( int x = 0; x < count; x++ ) - matches.push_back( gd::toWString( matchesList.at( x ) ) ); - } - } - } - - if( !errorString.isEmpty() ) - gdWarning( "Prefix find in \"%s\" fault: %s\n", dict.getName().c_str(), - errorString.toUtf8().data() ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - socket->abort(); - else - disconnectFromServer( *socket ); - - delete socket; - if( !Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - finish(); -} - -void DictServerWordSearchRequest::cancel() -{ - isCancelled.ref(); - - Mutex::Lock _( dataMutex ); - finish(); -} - -class DictServerArticleRequest; - -class DictServerArticleRequestRunnable: public QRunnable -{ - DictServerArticleRequest & r; - QSemaphore & hasExited; - -public: - - DictServerArticleRequestRunnable( DictServerArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~DictServerArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class DictServerArticleRequest: public Dictionary::DataRequest -{ - QAtomicInt isCancelled; - wstring word; - QString errorString; - QSemaphore hasExited; - DictServerDictionary & dict; - QTcpSocket * socket; - -public: - - DictServerArticleRequest( wstring const & word_, - DictServerDictionary & dict_ ) : - word( word_ ), - dict( dict_ ), - socket( 0 ) - { - QThreadPool::globalInstance()->start( - new DictServerArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); - - ~DictServerArticleRequest() - { - hasExited.acquire(); - } - - virtual void cancel(); - -}; - -void DictServerArticleRequestRunnable::run() -{ - r.run(); -} - -void DictServerArticleRequest::run() -{ - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - socket = new QTcpSocket; - - if( !socket ) - { - finish(); - return; - } - - if( connectToServer( *socket, dict.url, errorString, isCancelled ) ) - { - string articleData; - - for( int i = 0; i < dict.databases.size(); i++ ) - { - QString matchReq = QString( "DEFINE " ) - + dict.databases.at( i ) - + " \"" + gd::toQString( word ) + "\"\r\n"; - socket->write( matchReq.toUtf8() ); - socket->waitForBytesWritten( 1000 ); - - QString reply; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( reply.left( 3 ) == "250" ) - { - // "OK" reply - matches info will be later - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - } - - if( reply.left( 3 ) == "552" ) - { - // No matches found - continue; - } - - if( reply[ 0 ] == '5' || reply[ 0 ] == '4' ) - { - // Database error - gdWarning( "Articles request from \"%s\", database \"%s\" fault: %s\n", - dict.getName().c_str(), dict.databases.at( i ).toUtf8().data(), - reply.toUtf8().data() ); - continue; - } - - if( reply.left( 3 ) == "150" ) - { - // Articles found - int countPos = reply.indexOf( ' ', 4 ); - - QString articleText; - - // Get articles count - int count = reply.mid( 4, countPos > 4 ? countPos - 4 : -1 ).toInt(); - - // Read articles - for( int x = 0; x < count; x++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( reply.left( 3 ) == "250" ) - break; - - if( reply.left( 3 ) == "151" ) - { - int pos = 4; - int endPos; - - // Skip requested word - if( reply[ pos ] == '\"' ) - endPos = reply.indexOf( '\"', pos + 1 ) + 1; - else - endPos = reply.indexOf( ' ', pos ); - - if( endPos < pos ) - { - // It seems mailformed string - break; - } - - pos = endPos + 1; - - QString dbID, dbName; - - // Retrieve database ID - endPos = reply.indexOf( ' ', pos ); - - if( endPos < pos ) - { - // It seems mailformed string - break; - } - - dbID = reply.mid( pos, endPos - pos ); - - // Retrieve database ID - pos = endPos + 1; - endPos = reply.indexOf( ' ', pos ); - if( reply[ pos ] == '\"' ) - endPos = reply.indexOf( '\"', pos + 1 ) + 1; - else - endPos = reply.indexOf( ' ', pos ); - - if( endPos < pos ) - { - // It seems mailformed string - break; - } - - dbName = reply.mid( pos, endPos - pos ); - if( dbName.endsWith( '\"' ) ) - dbName.chop( 1 ); - if( dbName[ 0 ] == '\"' ) - dbName = dbName.mid( 1 ); - - articleData += string( "
From " ) - + dbName.toUtf8().data() - + " [" + dbID.toUtf8().data() + "]:" - + "
"; - - // Retrieve article text - - articleText.clear(); - for( ; ; ) - { - if( !readLine( *socket, reply, errorString, isCancelled ) ) - break; - - if( reply == ".\r\n" ) - break; - - articleText += reply; - } - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) || !errorString.isEmpty() ) - break; - - QRegExp phonetic( "\\\\([^\\\\]+)\\\\", Qt::CaseInsensitive ); // phonetics: \stuff\ ... - QRegExp refs( "\\{([^\\{\\}]+)\\}", Qt::CaseInsensitive ); // links: {stuff} - QRegExp links( "", Qt::CaseInsensitive ); - QRegExp tags( "<[^>]*>", Qt::CaseInsensitive ); - - string articleStr = Html::preformat( articleText.toUtf8().data() ); - articleText = QString::fromUtf8( articleStr.c_str(), articleStr.size() ) - .replace(phonetic, "\\1" ) - .replace(refs, "\\1" ); - pos = 0; - for( ; ; ) - { - pos = articleText.indexOf( links, pos ); - if( pos < 0 ) - break; - - QString link = links.cap( 1 ); - link.replace( tags, " " ); - link.replace( " ", " " ); - articleText.replace( pos + 30, links.cap( 1 ).length(), - QString::fromUtf8( QUrl::toPercentEncoding( link.simplified() ) ) ); - pos += 30; - } - - articleData += string( "
" ) - + articleText.toUtf8().data() - + "
"; - } - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) || !errorString.isEmpty() ) - break; - } - } - } - if( !Qt4x5::AtomicInt::loadAcquire( isCancelled ) && errorString.isEmpty() && !articleData.empty() ) - { - Mutex::Lock _( dataMutex ); - - data.resize( articleData.size() ); - memcpy( &data.front(), articleData.data(), articleData.size() ); - - hasAnyData = true; - } - } - - if( !errorString.isEmpty() ) - gdWarning( "Articles request from \"%s\" fault: %s\n", dict.getName().c_str(), - errorString.toUtf8().data() ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - socket->abort(); - else - disconnectFromServer( *socket ); - - delete socket; - if( !Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - finish(); -} - -void DictServerArticleRequest::cancel() -{ - isCancelled.ref(); - - Mutex::Lock _( dataMutex ); - finish(); -} - -sptr< WordSearchRequest > DictServerDictionary::prefixMatch( wstring const & word, - unsigned long maxResults ) - throw( std::exception ) -{ - (void) maxResults; - if ( word.size() > 80 ) - { - // Don't make excessively large queries -- they're fruitless anyway - - return new WordSearchRequestInstant(); - } - else - return new DictServerWordSearchRequest( word, *this ); -} - -sptr< DataRequest > DictServerDictionary::getArticle( wstring const & word, - vector< wstring > const &, - wstring const & ) - throw( std::exception ) -{ - if ( word.size() > 80 ) - { - // Don't make excessively large queries -- they're fruitless anyway - - return new DataRequestInstant( false ); - } - else - return new DictServerArticleRequest( word, *this ); -} - -} // Anonimuos namespace - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::DictServers const & servers ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - for( int x = 0; x < servers.size(); ++x ) - { - if ( servers[ x ].enabled ) - result.push_back( new DictServerDictionary( servers[ x ].id.toStdString(), - servers[ x ].name.toUtf8().data(), - servers[ x ].url, - servers[ x ].databases, - servers[ x ].strategies, - servers[ x ].iconFilename ) ); - } - - return result; -} - -} // namespace DictServer diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictserver.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictserver.hh deleted file mode 100644 index 1755da5269..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictserver.hh +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __DICTSERVER_HH__INCLUDED__ -#define __DICTSERVER_HH__INCLUDED__ - -#include "dictionary.hh" -#include "config.hh" - -/// Support for servers supporting DICT protocol. -namespace DictServer { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - Config::DictServers const & servers ) - throw( std::exception ); - -} - -#endif // __DICTSERVER_HH__INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictspanewidget.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictspanewidget.hh deleted file mode 100644 index 1ed0189810..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictspanewidget.hh +++ /dev/null @@ -1,24 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __DICTSPANEWIDGET_HH_INCLUDED__ -#define __DICTSPANEWIDGET_HH_INCLUDED__ - -#include -#include - -/// A widget holding the contents of the 'Dictionaries pane' docklet. -class DictsPaneWidget: public QWidget -{ - Q_OBJECT -public: - - DictsPaneWidget( QWidget * parent = 0 ): QWidget( parent ) - {} - - virtual QSize sizeHint() const - { return QSize( 204, 204 ); } - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictzip.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictzip.c deleted file mode 100644 index 2c00be3e77..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictzip.c +++ /dev/null @@ -1,848 +0,0 @@ -/* Made up from data.c and other supplementary files of dictd-1.0.11 for the - * GoldenDict program. - */ - -/* data.c -- - * Created: Tue Jul 16 12:45:41 1996 by faith@dict.org - * Revised: Sat Mar 30 10:46:06 2002 by faith@dict.org - * Copyright 1996, 1997, 1998, 2000, 2002 Rickard E. Faith (faith@dict.org) - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 1, or (at your option) any - * later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Suite 500, Boston, MA 02110, USA. - */ - -#include -#include -#include "dictzip.h" -#include -#include -#include -#include -#include - -#include "ufile.hh" - -#define BUFFERSIZE 10240 - -#define OUT_BUFFER_SIZE 0xffffL - -#define IN_BUFFER_SIZE ((unsigned long)((double)(OUT_BUFFER_SIZE - 12) * 0.89)) - -/* For gzip-compatible header, as defined in RFC 1952 */ - - /* Magic for GZIP (rfc1952) */ -#define GZ_MAGIC1 0x1f /* First magic byte */ -#define GZ_MAGIC2 0x8b /* Second magic byte */ - - /* FLaGs (bitmapped), from rfc1952 */ -#define GZ_FTEXT 0x01 /* Set for ASCII text */ -#define GZ_FHCRC 0x02 /* Header CRC16 */ -#define GZ_FEXTRA 0x04 /* Optional field (random access index) */ -#define GZ_FNAME 0x08 /* Original name */ -#define GZ_COMMENT 0x10 /* Zero-terminated, human-readable comment */ -#define GZ_MAX 2 /* Maximum compression */ -#define GZ_FAST 4 /* Fasted compression */ - - /* These are from rfc1952 */ -#define GZ_OS_FAT 0 /* FAT filesystem (MS-DOS, OS/2, NT/Win32) */ -#define GZ_OS_AMIGA 1 /* Amiga */ -#define GZ_OS_VMS 2 /* VMS (or OpenVMS) */ -#define GZ_OS_UNIX 3 /* Unix */ -#define GZ_OS_VMCMS 4 /* VM/CMS */ -#define GZ_OS_ATARI 5 /* Atari TOS */ -#define GZ_OS_HPFS 6 /* HPFS filesystem (OS/2, NT) */ -#define GZ_OS_MAC 7 /* Macintosh */ -#define GZ_OS_Z 8 /* Z-System */ -#define GZ_OS_CPM 9 /* CP/M */ -#define GZ_OS_TOPS20 10 /* TOPS-20 */ -#define GZ_OS_NTFS 11 /* NTFS filesystem (NT) */ -#define GZ_OS_QDOS 12 /* QDOS */ -#define GZ_OS_ACORN 13 /* Acorn RISCOS */ -#define GZ_OS_UNKNOWN 255 /* unknown */ - -#define GZ_RND_S1 'R' /* First magic for random access format */ -#define GZ_RND_S2 'A' /* Second magic for random access format */ - -#define GZ_ID1 0 /* GZ_MAGIC1 */ -#define GZ_ID2 1 /* GZ_MAGIC2 */ -#define GZ_CM 2 /* Compression Method (Z_DEFALTED) */ -#define GZ_FLG 3 /* FLaGs (see above) */ -#define GZ_MTIME 4 /* Modification TIME */ -#define GZ_XFL 8 /* eXtra FLags (GZ_MAX or GZ_FAST) */ -#define GZ_OS 9 /* Operating System */ -#define GZ_XLEN 10 /* eXtra LENgth (16bit) */ -#define GZ_FEXTRA_START 12 /* Start of extra fields */ -#define GZ_SI1 12 /* Subfield ID1 */ -#define GZ_SI2 13 /* Subfield ID2 */ -#define GZ_SUBLEN 14 /* Subfield length (16bit) */ -#define GZ_VERSION 16 /* Version for subfield format */ -#define GZ_CHUNKLEN 18 /* Chunk length (16bit) */ -#define GZ_CHUNKCNT 20 /* Number of chunks (16bit) */ -#define GZ_RNDDATA 22 /* Random access data (16bit) */ - - -#define DBG_VERBOSE (0<<30|1<< 0) /* Verbose */ -#define DBG_ZIP (0<<30|1<< 1) /* Zip */ -#define DBG_UNZIP (0<<30|1<< 2) /* Unzip */ -#define DBG_SEARCH (0<<30|1<< 3) /* Search */ -#define DBG_SCAN (0<<30|1<< 4) /* Config file scan */ -#define DBG_PARSE (0<<30|1<< 5) /* Config file parse */ -#define DBG_INIT (0<<30|1<< 6) /* Database initialization */ -#define DBG_PORT (0<<30|1<< 7) /* Log port number for connections */ -#define DBG_LEV (0<<30|1<< 8) /* Levenshtein matching */ -#define DBG_AUTH (0<<30|1<< 9) /* Debug authentication */ -#define DBG_NODETACH (0<<30|1<<10) /* Don't detach as a background proc. */ -#define DBG_NOFORK (0<<30|1<<11) /* Don't fork (single threaded) */ -#define DBG_ALT (0<<30|1<<12) /* altcompare() */ - -#define LOG_SERVER (0<<30|1<< 0) /* Log server diagnostics */ -#define LOG_CONNECT (0<<30|1<< 1) /* Log connection information */ -#define LOG_STATS (0<<30|1<< 2) /* Log termination information */ -#define LOG_COMMAND (0<<30|1<< 3) /* Log commands */ -#define LOG_FOUND (0<<30|1<< 4) /* Log words found */ -#define LOG_NOTFOUND (0<<30|1<< 5) /* Log words not found */ -#define LOG_CLIENT (0<<30|1<< 6) /* Log client */ -#define LOG_HOST (0<<30|1<< 7) /* Log remote host name */ -#define LOG_TIMESTAMP (0<<30|1<< 8) /* Log with timestamps */ -#define LOG_MIN (0<<30|1<< 9) /* Log a few minimal things */ -#define LOG_AUTH (0<<30|1<<10) /* Log authentication denials */ - -#define DICT_LOG_TERM 0 -#define DICT_LOG_DEFINE 1 -#define DICT_LOG_MATCH 2 -#define DICT_LOG_NOMATCH 3 -#define DICT_LOG_CLIENT 4 -#define DICT_LOG_TRACE 5 -#define DICT_LOG_COMMAND 6 -#define DICT_LOG_AUTH 7 -#define DICT_LOG_CONNECT 8 - -#define DICT_UNKNOWN 0 -#define DICT_TEXT 1 -#define DICT_GZIP 2 -#define DICT_DZIP 3 - -#include -#include -#include - -#include - -#define USE_CACHE 1 - -#define dict_data_filter( ... ) -#define PRINTF( ... ) - -#define xmalloc malloc -#define xfree free - -static const char * _err_programName = "GoldenDict"; - -#define log_error( ... ) -#define log_error_va( ... ) - -static void err_fatal( const char *routine, const char *format, ... ) -{ - va_list ap; - - fflush( stdout ); - if (_err_programName) { - if (routine) - fprintf( stderr, "%s (%s): ", _err_programName, routine ); - else - fprintf( stderr, "%s: ", _err_programName ); - } else { - if (routine) fprintf( stderr, "%s: ", routine ); - } - - va_start( ap, format ); - vfprintf( stderr, format, ap ); - log_error_va( routine, format, ap ); - va_end( ap ); - - fflush( stderr ); - fflush( stdout ); -// exit ( 1 ); -} - -/* \doc |err_fatal_errno| flushes "stdout", prints a fatal error report on - "stderr", prints the system error corresponding to |errno|, flushes - "stderr" and "stdout", and calls |exit|. |routine| is the name of the - routine in which the error took place. */ - -static void err_fatal_errno( const char *routine, const char *format, ... ) -{ - va_list ap; - int errorno = errno; - - fflush( stdout ); - if (_err_programName) { - if (routine) - fprintf( stderr, "%s (%s): ", _err_programName, routine ); - else - fprintf( stderr, "%s: ", _err_programName ); - } else { - if (routine) fprintf( stderr, "%s: ", routine ); - } - - va_start( ap, format ); - vfprintf( stderr, format, ap ); - log_error_va( routine, format, ap ); - va_end( ap ); - -#if HAVE_STRERROR - fprintf( stderr, "%s: %s\n", routine, strerror( errorno ) ); - log_error( routine, "%s: %s\n", routine, strerror( errorno ) ); -#else - errno = errorno; - perror( routine ); - log_error( routine, "%s: errno = %d\n", routine, errorno ); -#endif - - fflush( stderr ); - fflush( stdout ); -// exit( 1 ); -} - -/* \doc |err_internal| flushes "stdout", prints the fatal error message, - flushes "stderr" and "stdout", and calls |abort| so that a core dump is - generated. */ - -static void err_internal( const char *routine, const char *format, ... ) -{ - va_list ap; - - fflush( stdout ); - if (_err_programName) { - if (routine) - fprintf( stderr, "%s (%s): Internal error\n ", - _err_programName, routine ); - else - fprintf( stderr, "%s: Internal error\n ", _err_programName ); - } else { - if (routine) fprintf( stderr, "%s: Internal error\n ", routine ); - else fprintf( stderr, "Internal error\n " ); - } - - va_start( ap, format ); - vfprintf( stderr, format, ap ); - log_error( routine, format, ap ); - va_end( ap ); - - if (_err_programName) - fprintf( stderr, "Aborting %s...\n", _err_programName ); - else - fprintf( stderr, "Aborting...\n" ); - fflush( stderr ); - fflush( stdout ); -// abort(); -} - -#ifndef __func__ -# ifdef __FUNCTION__ -# define __func__ __FUNCTION__ -# else -# define __func__ __FILE__ -# endif -#endif - -static enum DZ_ERRORS dict_read_header( const char *filename, - dictData *header, - int computeCRC ) -{ - FILE *str; - int id1, id2, si1, si2; - char buffer[BUFFERSIZE]; - int extraLength, subLength; - int i; - char *pt; - int c; - struct stat sb; - unsigned long crc = crc32( 0L, Z_NULL, 0 ); - int count; - unsigned long offset; - - if (!(str = gd_fopen( filename, "rb" ))) - { - err_fatal_errno( __func__, - "Cannot open data file \"%s\" for read\n", filename ); - return DZ_ERR_OPENFILE; - } - - header->filename = NULL;//str_find( filename ); - header->headerLength = GZ_XLEN - 1; - header->type = DICT_UNKNOWN; - - id1 = getc( str ); - id2 = getc( str ); - - if (id1 != GZ_MAGIC1 || id2 != GZ_MAGIC2) { - header->type = DICT_TEXT; - fstat( fileno( str ), &sb ); - header->compressedLength = header->length = sb.st_size; - header->origFilename = NULL;//str_find( filename ); - header->mtime = sb.st_mtime; - if (computeCRC) { - rewind( str ); - while (!feof( str )) { - if ((count = fread( buffer, 1, BUFFERSIZE, str ))) { - crc = crc32( crc, (Bytef *)buffer, count ); - } - } - } - header->crc = crc; - fclose( str ); - return DZ_NOERROR; - } - header->type = DICT_GZIP; - - header->method = getc( str ); - header->flags = getc( str ); - header->mtime = getc( str ) << 0; - header->mtime |= getc( str ) << 8; - header->mtime |= getc( str ) << 16; - header->mtime |= getc( str ) << 24; - header->extraFlags = getc( str ); - header->os = getc( str ); - - if (header->flags & GZ_FEXTRA) { - extraLength = getc( str ) << 0; - extraLength |= getc( str ) << 8; - header->headerLength += extraLength + 2; - si1 = getc( str ); - si2 = getc( str ); - - if (si1 == GZ_RND_S1 && si2 == GZ_RND_S2) { - subLength = getc( str ) << 0; - subLength |= getc( str ) << 8; - header->version = getc( str ) << 0; - header->version |= getc( str ) << 8; - - if (header->version != 1) - { - err_internal( __func__, - "dzip header version %d not supported\n", - header->version ); - fclose( str ); - return DZ_ERR_UNSUPPORTED_FORMAT; - } - - header->chunkLength = getc( str ) << 0; - header->chunkLength |= getc( str ) << 8; - header->chunkCount = getc( str ) << 0; - header->chunkCount |= getc( str ) << 8; - - if (header->chunkCount <= 0) { - fclose( str ); - return DZ_ERR_INVALID_FORMAT; - } - header->chunks = xmalloc( sizeof( header->chunks[0] ) - * header->chunkCount ); - if( header->chunks == 0 ) { - return DZ_ERR_NOMEMORY; - } - - for (i = 0; i < header->chunkCount; i++) { - header->chunks[i] = getc( str ) << 0; - header->chunks[i] |= getc( str ) << 8; - } - header->type = DICT_DZIP; - } else { - fseek( str, header->headerLength, SEEK_SET ); - } - } - - if (header->flags & GZ_FNAME) { /* FIXME! Add checking against header len */ - pt = buffer; - while ((c = getc( str )) && c != EOF){ - *pt++ = c; - - if (pt == buffer + sizeof (buffer)){ - err_fatal ( - __func__, - "too long FNAME field in dzip file \"%s\"\n", filename); - fclose( str ); - if( header->chunks ) - free( header->chunks ); - return DZ_ERR_INVALID_FORMAT; - } - } - - *pt = '\0'; - header->origFilename = NULL;//str_find( buffer ); - header->headerLength += strlen( buffer ) + 1; - } else { - header->origFilename = NULL; - } - - if (header->flags & GZ_COMMENT) { /* FIXME! Add checking for header len */ - pt = buffer; - while ((c = getc( str )) && c != EOF){ - *pt++ = c; - - if (pt == buffer + sizeof (buffer)){ - err_fatal ( - __func__, - "too long COMMENT field in dzip file \"%s\"\n", filename); - fclose( str ); - if( header->chunks ) - free( header->chunks ); - return DZ_ERR_INVALID_FORMAT; - } - } - - *pt = '\0'; - header->comment = NULL;//str_find( buffer ); - header->headerLength += strlen( header->comment ) + 1; - } else { - header->comment = NULL; - } - - if (header->flags & GZ_FHCRC) { - getc( str ); - getc( str ); - header->headerLength += 2; - } - - if (ftell( str ) != header->headerLength + 1) - { - err_internal( __func__, - "File position (%lu) != header length + 1 (%d)\n", - ftell( str ), header->headerLength + 1 ); - fclose( str ); - if( header->chunks ) - free( header->chunks ); - return DZ_ERR_INVALID_FORMAT; - } - - fseek( str, -8, SEEK_END ); - header->crc = getc( str ) << 0; - header->crc |= getc( str ) << 8; - header->crc |= getc( str ) << 16; - header->crc |= getc( str ) << 24; - header->length = getc( str ) << 0; - header->length |= getc( str ) << 8; - header->length |= getc( str ) << 16; - header->length |= getc( str ) << 24; - header->compressedLength = ftell( str ); - - /* Compute offsets */ - header->offsets = xmalloc( sizeof( header->offsets[0] ) - * header->chunkCount ); - if( header->offsets == 0 ) { - if( header->chunks ) - free( header->chunks ); - return DZ_ERR_NOMEMORY; - } - - for (offset = header->headerLength + 1, i = 0; - i < header->chunkCount; - i++) - { - header->offsets[i] = offset; - offset += header->chunks[i]; - } - - fclose( str ); - return DZ_NOERROR; -} - -dictData *dict_data_open( const char *filename, - enum DZ_ERRORS * error, - int computeCRC ) -{ - dictData *h = NULL; -// struct stat sb; - int j; - - if (!filename) - { - *error = DZ_ERR_OPENFILE; - return NULL; - } - - h = xmalloc( sizeof( struct dictData ) ); - if( h == 0 ) - { - *error = DZ_ERR_NOMEMORY; - return 0; - } - - memset( h, 0, sizeof( struct dictData ) ); -#ifdef __WIN32 - h->fd = INVALID_HANDLE_VALUE; -#endif - h->initialized = 0; - - for(;;) - { -#ifdef __WIN32 - wchar_t wname[16384]; -#endif - *error = dict_read_header( filename, h, computeCRC ); - if ( *error != DZ_NOERROR ) { - break; /* - err_fatal( __func__, - "\"%s\" not in text or dzip format\n", filename );*/ - } - -#ifdef __WIN32 - if( MultiByteToWideChar( CP_UTF8, 0, filename, -1, wname, 16384 ) == 0 ) - { - *error = DZ_ERR_OPENFILE; - break; - } - - h->fd = CreateFileW( wname, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, - OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, 0); - if( h->fd == INVALID_HANDLE_VALUE ) - { - *error = DZ_ERR_OPENFILE; - break; - } - - h->size = GetFileSize( h->fd, 0 ); -#else - h->fd = gd_fopen( filename, "rb" ); - - if ( !h->fd ) - { - *error = DZ_ERR_OPENFILE; - break; - /*err_fatal_errno( __func__, - "Cannot open data file \"%s\"\n", filename );*/ - } - - fseek( h->fd, 0, SEEK_END ); - - h->size = ftell( h->fd ); -#endif - - for (j = 0; j < DICT_CACHE_SIZE; j++) { - h->cache[j].chunk = -1; - h->cache[j].stamp = -1; - h->cache[j].inBuffer = NULL; - h->cache[j].count = 0; - } - - *error = DZ_NOERROR; - return h; - } - dict_data_close( h ); - return( 0 ); -} - -void dict_data_close( dictData *header ) -{ - int i; - - if (!header) - return; - -#ifdef __WIN32 - if ( header->fd != INVALID_HANDLE_VALUE ) - CloseHandle( header->fd ); -#else - if ( header->fd ) - fclose( header->fd ); -#endif - - if (header->chunks) xfree( header->chunks ); - if (header->offsets) xfree( header->offsets ); - - if (header->initialized) { - if (inflateEnd( &header->zStream )) - err_internal( __func__, - "Cannot shut down inflation engine: %s\n", - header->zStream.msg ); - } - - for (i = 0; i < DICT_CACHE_SIZE; ++i){ - if (header -> cache [i].inBuffer) - xfree (header -> cache [i].inBuffer); - } - - memset( header, 0, sizeof( struct dictData ) ); - xfree( header ); -} - -char *dict_data_read_ ( - dictData *h, unsigned long start, unsigned long size, - const char *preFilter, const char *postFilter ) -{ - char * buffer; - char * pt; - unsigned long end; - int count; - char *inBuffer; - char outBuffer[OUT_BUFFER_SIZE]; - int firstChunk, lastChunk; - int firstOffset, lastOffset; - int i, j; - int found, target, lastStamp; - (void) preFilter; - (void) postFilter; - - end = start + size; - - buffer = xmalloc( size + 1 ); - if( !buffer ) - { - strcpy( h->errorString, dz_error_str( DZ_ERR_NOMEMORY ) ); - return 0; - } - - if ( !size ) - { - *buffer = 0; - return buffer; - } - - PRINTF(DBG_UNZIP, - ("dict_data_read( %p, %lu, %lu, %s, %s )\n", - h, start, size, preFilter, postFilter )); - - assert( h != NULL); - switch (h->type) { - case DICT_GZIP: -/* - err_fatal( __func__, - "Cannot seek on pure gzip format files.\n" - "Use plain text (for performance)" - " or dzip format (for space savings).\n" ); - break; -*/ - strcpy( h->errorString, "Cannot seek on pure gzip format files" ); - xfree( buffer ); - return 0; - case DICT_TEXT: - { -#ifdef __WIN32 - DWORD pos = SetFilePointer( h->fd, start, 0, FILE_BEGIN ); - DWORD readed = 0; - if( pos != INVALID_SET_FILE_POINTER || GetLastError() != NO_ERROR ) - ReadFile( h->fd, buffer, size, &readed, 0 ); - if( size != readed ) -#else - if ( fseek( h->fd, start, SEEK_SET ) != 0 || - fread( buffer, size, 1, h->fd ) != 1 ) -#endif - { - strcpy( h->errorString, dz_error_str( DZ_ERR_READFILE ) ); - xfree( buffer ); - return 0; - } - - buffer[size] = '\0'; - } - break; - case DICT_DZIP: - if (!h->initialized) { - h->zStream.zalloc = NULL; - h->zStream.zfree = NULL; - h->zStream.opaque = NULL; - h->zStream.next_in = 0; - h->zStream.avail_in = 0; - h->zStream.next_out = NULL; - h->zStream.avail_out = 0; - if (inflateInit2( &h->zStream, -15 ) != Z_OK) -/* - err_internal( __func__, - "Cannot initialize inflation engine: %s\n", - h->zStream.msg ); -*/ - { - sprintf( h->errorString, "Cannot initialize inflation engine: %s", h->zStream.msg ); - xfree( buffer ); - return 0; - } - ++h->initialized; - } - firstChunk = start / h->chunkLength; - firstOffset = start - firstChunk * h->chunkLength; - lastChunk = end / h->chunkLength; - lastOffset = end - lastChunk * h->chunkLength; - PRINTF(DBG_UNZIP, - (" start = %lu, end = %lu\n" - "firstChunk = %d, firstOffset = %d," - " lastChunk = %d, lastOffset = %d\n", - start, end, firstChunk, firstOffset, lastChunk, lastOffset )); - for (pt = buffer, i = firstChunk; i <= lastChunk; i++) { - - /* Access cache */ - found = 0; - target = 0; - lastStamp = INT_MAX; - for (j = 0; j < DICT_CACHE_SIZE; j++) { -#if USE_CACHE - if (h->cache[j].chunk == i) { - found = 1; - target = j; - break; - } -#endif - if (h->cache[j].stamp < lastStamp) { - lastStamp = h->cache[j].stamp; - target = j; - } - } - - h->cache[target].stamp = ++h->stamp; - if( h->stamp < 0 ) - { - h->stamp = 0; - for (j = 0; j < DICT_CACHE_SIZE; j++) - h->cache[j].stamp = -1; - } - if (found) { - count = h->cache[target].count; - inBuffer = h->cache[target].inBuffer; - } else { -#ifdef __WIN32 - DWORD pos ; - DWORD readed; -#endif - h->cache[target].chunk = -1; - if (!h->cache[target].inBuffer) - h->cache[target].inBuffer = xmalloc( h->chunkLength ); - inBuffer = h->cache[target].inBuffer; - if( !inBuffer ) - { - strcpy( h->errorString, dz_error_str( DZ_ERR_NOMEMORY ) ); - xfree( buffer ); - return 0; - } - - if (h->chunks[i] >= OUT_BUFFER_SIZE ) { -/* - err_internal( __func__, - "h->chunks[%d] = %d >= %ld (OUT_BUFFER_SIZE)\n", - i, h->chunks[i], OUT_BUFFER_SIZE ); -*/ - sprintf( h->errorString, "h->chunks[%d] = %d >= %ld (OUT_BUFFER_SIZE)\n", - i, h->chunks[i], OUT_BUFFER_SIZE ); - xfree( buffer ); - return 0; - } - -#ifdef __WIN32 - pos = SetFilePointer( h->fd, h->offsets[ i ], 0, FILE_BEGIN ); - readed = 0; - if( pos != INVALID_SET_FILE_POINTER || GetLastError() != NO_ERROR ) - ReadFile( h->fd, outBuffer, h->chunks[ i ], &readed, 0 ); - if( h->chunks[ i ] != (int)readed ) -#else - if ( fseek( h->fd, h->offsets[ i ], SEEK_SET ) != 0 || - fread( outBuffer, h->chunks[ i ], 1, h->fd ) != 1 ) -#endif - { - strcpy( h->errorString, dz_error_str( DZ_ERR_READFILE ) ); - xfree( buffer ); - return 0; - } - - dict_data_filter( outBuffer, &count, OUT_BUFFER_SIZE, preFilter ); - - h->zStream.next_in = (Bytef *)outBuffer; - h->zStream.avail_in = h->chunks[i]; - h->zStream.next_out = (Bytef *)inBuffer; - h->zStream.avail_out = h->chunkLength; - if (inflate( &h->zStream, Z_PARTIAL_FLUSH ) != Z_OK) - { -// err_fatal( __func__, "inflate: %s\n", h->zStream.msg ); - sprintf( h->errorString, "inflate: %s\n", h->zStream.msg ); - xfree( buffer ); - return 0; - } - if (h->zStream.avail_in) -/* - err_internal( __func__, - "inflate did not flush (%d pending, %d avail)\n", - h->zStream.avail_in, h->zStream.avail_out ); -*/ - { - sprintf( h->errorString, "inflate did not flush (%d pending, %d avail)\n", - h->zStream.avail_in, h->zStream.avail_out ); - xfree( buffer ); - return 0; - } - - count = h->chunkLength - h->zStream.avail_out; - dict_data_filter( inBuffer, &count, h->chunkLength, postFilter ); - - h->cache[target].count = count; - h->cache[target].chunk = i; - } - - if (i == firstChunk) { - if (i == lastChunk) { - memcpy( pt, inBuffer + firstOffset, lastOffset-firstOffset); - pt += lastOffset - firstOffset; - } else { - if (count != h->chunkLength ) -/* - err_internal( __func__, - "Length = %d instead of %d\n", - count, h->chunkLength ); -*/ - { - sprintf( h->errorString, "Length = %d instead of %d\n", - count, h->chunkLength ); - xfree( buffer ); - return 0; - } - memcpy( pt, inBuffer + firstOffset, - h->chunkLength - firstOffset ); - pt += h->chunkLength - firstOffset; - } - } else if (i == lastChunk) { - memcpy( pt, inBuffer, lastOffset ); - pt += lastOffset; - } else { - assert( count == h->chunkLength ); - memcpy( pt, inBuffer, h->chunkLength ); - pt += h->chunkLength; - } - } - *pt = '\0'; - break; - case DICT_UNKNOWN: -// err_fatal( __func__, "Cannot read unknown file type\n" ); - strcpy( h->errorString, "Cannot read unknown file type" ); - xfree( buffer ); - return 0; - } - h->errorString[ 0 ] = 0; - return buffer; -} - -char *dict_error_str( dictData *data ) -{ - return data->errorString; -} - -const char * dz_error_str( enum DZ_ERRORS error ) -{ - switch( error ) - { - case DZ_NOERROR: return "No error"; - case DZ_ERR_OPENFILE: return "Open file error"; - case DZ_ERR_READFILE: return "Read file error"; - case DZ_ERR_INVALID_FORMAT: return "Invalid file format"; - case DZ_ERR_UNSUPPORTED_FORMAT: return "Unsupported file format"; - case DZ_ERR_NOMEMORY: return "Memory allocation error"; - case DZ_ERR_INTERNAL: return "Internal error"; - } - return "Unknown error"; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictzip.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictzip.h deleted file mode 100644 index afbf1e3c87..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dictzip.h +++ /dev/null @@ -1,120 +0,0 @@ -/* Made up from data.h and other supplementary files of dictd-1.0.11 for the - * GoldenDict program. - */ - -/* data.h -- - * Created: Sat Mar 15 18:04:25 2003 by Aleksey Cheusov - * Copyright 1994-2003 Rickard E. Faith (faith@dict.org) - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 1, or (at your option) any - * later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Suite 500, Boston, MA 02110, USA. - */ - -#ifndef _DICTZIP_H_ -#define _DICTZIP_H_ - -#include -#include - -#ifdef __WIN32 -#include -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - - -/* Excerpts from defs.h */ - -#define DICT_CACHE_SIZE 5 - -typedef struct dictCache { - int chunk; - char *inBuffer; - int stamp; - int count; -} dictCache; - -enum DZ_ERRORS { - DZ_NOERROR = 0, - DZ_ERR_INTERNAL, - DZ_ERR_OPENFILE, - DZ_ERR_READFILE, - DZ_ERR_UNSUPPORTED_FORMAT, - DZ_ERR_INVALID_FORMAT, - DZ_ERR_NOMEMORY -}; - -typedef struct dictData { -#ifdef __WIN32 - HANDLE fd; /* file handle */ -#else - FILE * fd; /* file descriptor */ -#endif - - unsigned long size; /* size of file */ - - int type; - const char *filename; - z_stream zStream; - int initialized; - - int headerLength; - int method; - int flags; - time_t mtime; - int extraFlags; - int os; - int version; - int chunkLength; - int chunkCount; - int *chunks; - unsigned long *offsets; /* Sum-scan of chunks. */ - const char *origFilename; - const char *comment; - unsigned long crc; - unsigned long length; - unsigned long compressedLength; - int stamp; - dictCache cache[DICT_CACHE_SIZE]; - char errorString[512]; -} dictData; - - -/* initialize .data file */ -extern dictData *dict_data_open ( - const char *filename, enum DZ_ERRORS * error, int computeCRC); -/* */ -extern void dict_data_close ( - dictData *data); - -extern char *dict_data_read_ ( - dictData *data, - unsigned long start, unsigned long end, - const char *preFilter, - const char *postFilter ); - -extern char *dict_error_str( dictData *data ); - -extern const char *dz_error_str( enum DZ_ERRORS error ); - -extern int mmap_mode; - -#ifdef __cplusplus -} /* end extern "C" */ -#endif - -#endif /* _DICTZIP_H_ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl.cc deleted file mode 100644 index f610c1ab0f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl.cc +++ /dev/null @@ -1,2385 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "dsl.hh" -#include "dsl_details.hh" -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include "chunkedstorage.hh" -#include "dictzip.h" -#include "htmlescape.hh" -#include "iconv.hh" -#include "filetype.hh" -#include "fsencoding.hh" -#include "audiolink.hh" -#include "langcoder.hh" -#include "wstring_qt.hh" -#include "zipfile.hh" -#include "indexedzip.hh" -#include "gddebug.hh" -#include "tiff.hh" -#include "fulltextsearch.hh" -#include "ftshelpers.hh" -#include "language.hh" - -#include -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -// For TIFF conversion -#include -#include -#include - -// For SVG handling -#include - -#include "qt4x5.hh" - -namespace Dsl { - -using namespace Details; - -using std::map; -using std::multimap; -using std::pair; -using std::set; -using std::string; -using gd::wstring; -using gd::wchar; -using std::vector; -using std::list; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX( exUserAbort, "User abort", Dictionary::Ex ) -DEF_EX_STR( exDictzipError, "DICTZIP error", Dictionary::Ex ) - -enum -{ - Signature = 0x584c5344, // DSLX on little-endian, XLSD on big-endian - CurrentFormatVersion = 21 + BtreeIndexing::FormatVersion + Folding::Version, - CurrentZipSupportVersion = 2, - CurrentFtsIndexVersion = 1 -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, DSLX - uint32_t formatVersion; // File format version (CurrentFormatVersion) - uint32_t zipSupportVersion; // Zip support version -- narrows down reindexing - // when it changes only for dictionaries with the - // zip files - int dslEncoding; // Which encoding is used for the file indexed - uint32_t chunksOffset; // The offset to chunks' storage - uint32_t hasAbrv; // Non-zero means file has abrvs at abrvAddress - uint32_t abrvAddress; // Address of abrv map in the chunked storage - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t articleCount; // Number of articles this dictionary has - uint32_t wordCount; // Number of headwords this dictionary has - uint32_t langFrom; // Source language - uint32_t langTo; // Target language - uint32_t hasZipFile; // Non-zero means there's a zip file with resources - // present - uint32_t zipIndexBtreeMaxElements; // Two fields from IndexInfo of the zip - // resource index. - uint32_t zipIndexRootOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct InsidedCard -{ - uint32_t offset; - uint32_t size; - QVector< wstring > headwords; - InsidedCard( uint32_t _offset, uint32_t _size, QVector< wstring > const & words ) : - offset( _offset ), size( _size ), headwords( words ) - {} - InsidedCard( InsidedCard const & e ) : - offset( e.offset ), size( e.size ), headwords( e.headwords ) - {} - InsidedCard() {} - -}; - -bool indexIsOldOrBad( string const & indexFile, bool hasZipFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion || - (bool) header.hasZipFile != hasZipFile || - ( hasZipFile && header.zipSupportVersion != CurrentZipSupportVersion ); -} - -class DslDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - sptr< ChunkedStorage::Reader > chunks; - string dictionaryName; - map< string, string > abrv; - Mutex dzMutex; - dictData * dz; - Mutex resourceZipMutex; - IndexedZip resourceZip; - BtreeIndex resourceZipIndex; - - QAtomicInt deferredInitDone; - Mutex deferredInitMutex; - bool deferredInitRunnableStarted; - QSemaphore deferredInitRunnableExited; - - string initError; - - int optionalPartNom; - quint8 articleNom; - int maxPictureWidth; - -public: - - DslDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles, - int maxPictureWidth_ ); - - virtual void deferredInit(); - - ~DslDictionary(); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - #if 0 - virtual vector< wstring > findHeadwordsForSynonym( wstring const & ) - throw( std::exception ) - { - return vector< wstring >(); - } - #endif - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual QString const& getDescription(); - - virtual QString getMainFilename(); - - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - if( ensureInitDone().size() ) - return; - - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "DSL", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } - - virtual uint32_t getFtsIndexVersion() - { return CurrentFtsIndexVersion; } - -protected: - - virtual void loadIcon() throw(); - -private: - - virtual string const & ensureInitDone(); - void doDeferredInit(); - - /// Loads the article. Does not process the DSL language. - void loadArticle( uint32_t address, - wstring const & requestedHeadwordFolded, - wstring & tildeValue, - wstring & displayedHeadword, - unsigned & headwordIndex, - wstring & articleText ); - - /// Converts DSL language to an Html. - string dslToHtml( wstring const &, wstring const & headword = wstring() ); - - // Parts of dslToHtml() - string nodeToHtml( ArticleDom::Node const & ); - string processNodeChildren( ArticleDom::Node const & node ); - - bool hasHiddenZones() /// Return true if article has hidden zones - { return optionalPartNom != 0; } - - friend class DslArticleRequest; - friend class DslResourceRequest; - friend class DslFTSResultsRequest; - friend class DslDeferredInitRunnable; -}; - -DslDictionary::DslDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles, - int maxPictureWidth_ ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - dz( 0 ), - deferredInitRunnableStarted( false ), - optionalPartNom( 0 ), - articleNom( 0 ), - maxPictureWidth( maxPictureWidth_ ) -{ - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); - - // Read the dictionary name - - idx.seek( sizeof( idxHeader ) ); - - vector< char > dName( idx.read< uint32_t >() ); - idx.read( &dName.front(), dName.size() ); - dictionaryName = string( &dName.front(), dName.size() ); - - // Everything else would be done in deferred init -} - -DslDictionary::~DslDictionary() -{ - Mutex::Lock _( deferredInitMutex ); - - // Wait for init runnable to complete if it was ever started - if ( deferredInitRunnableStarted ) - deferredInitRunnableExited.acquire(); - - if ( dz ) - dict_data_close( dz ); -} - -//////// DslDictionary::deferredInit() - -class DslDeferredInitRunnable: public QRunnable -{ - DslDictionary & dictionary; - QSemaphore & hasExited; - -public: - - DslDeferredInitRunnable( DslDictionary & dictionary_, - QSemaphore & hasExited_ ): - dictionary( dictionary_ ), hasExited( hasExited_ ) - {} - - ~DslDeferredInitRunnable() - { - hasExited.release(); - } - - virtual void run() - { - dictionary.doDeferredInit(); - } -}; - -void DslDictionary::deferredInit() -{ - if ( !Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - { - Mutex::Lock _( deferredInitMutex ); - - if ( Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - return; - - if ( !deferredInitRunnableStarted ) - { - QThreadPool::globalInstance()->start( - new DslDeferredInitRunnable( *this, deferredInitRunnableExited ), - -1000 ); - deferredInitRunnableStarted = true; - } - } -} - - -string const & DslDictionary::ensureInitDone() -{ - // Simple, really. - doDeferredInit(); - - return initError; -} - -void DslDictionary::doDeferredInit() -{ - if ( !Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - { - Mutex::Lock _( deferredInitMutex ); - - if ( Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - return; - - // Do deferred init - - try - { - // Don't lock index file - no one should be working with it until - // the init is complete. - //Mutex::Lock _( idxMutex ); - - chunks = new ChunkedStorage::Reader( idx, idxHeader.chunksOffset ); - - // Open the .dsl file - - DZ_ERRORS error; - dz = dict_data_open( getDictionaryFilenames()[ 0 ].c_str(), &error, 0 ); - - if ( !dz ) - throw exDictzipError( string( dz_error_str( error ) ) - + "(" + getDictionaryFilenames()[ 0 ] + ")" ); - - // Read the abrv, if any - - if ( idxHeader.hasAbrv ) - { - vector< char > chunk; - - char * abrvBlock = chunks->getBlock( idxHeader.abrvAddress, chunk ); - - uint32_t total; - memcpy( &total, abrvBlock, sizeof( uint32_t ) ); - abrvBlock += sizeof( uint32_t ); - - GD_DPRINTF( "Loading %u abbrv\n", total ); - - while( total-- ) - { - uint32_t keySz; - memcpy( &keySz, abrvBlock, sizeof( uint32_t ) ); - abrvBlock += sizeof( uint32_t ); - - char * key = abrvBlock; - - abrvBlock += keySz; - - uint32_t valueSz; - memcpy( &valueSz, abrvBlock, sizeof( uint32_t ) ); - abrvBlock += sizeof( uint32_t ); - - abrv[ string( key, keySz ) ] = string( abrvBlock, valueSz ); - - abrvBlock += valueSz; - } - } - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - // Open a resource zip file, if there's one - - if ( idxHeader.hasZipFile && - ( idxHeader.zipIndexBtreeMaxElements || - idxHeader.zipIndexRootOffset ) ) - { - resourceZip.openIndex( IndexInfo( idxHeader.zipIndexBtreeMaxElements, - idxHeader.zipIndexRootOffset ), - idx, idxMutex ); - - QString zipName = QDir::fromNativeSeparators( - FsEncoding::decode( getDictionaryFilenames().back().c_str() ) ); - - if ( zipName.endsWith( ".zip", Qt::CaseInsensitive ) ) // Sanity check - resourceZip.openZipFile( zipName ); - } - } - catch( std::exception & e ) - { - initError = e.what(); - } - catch( ... ) - { - initError = "Unknown error"; - } - - deferredInitDone.ref(); - } -} - - -void DslDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - if ( fileName.endsWith( ".dsl.dz", Qt::CaseInsensitive ) ) - fileName.chop( 6 ); - else - fileName.chop( 3 ); - - if ( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryIcon = QIcon(":/icons/icon32_dsl.png"); - dictionaryNativeIcon = QIcon(":/icons/icon_dsl_native.png"); - } - - dictionaryIconLoaded = true; -} - -/// Determines whether or not this char is treated as whitespace for dsl -/// parsing or not. We can't rely on any Unicode standards here, since the -/// only standard that matters here is the original Dsl compiler's insides. -/// Some dictionaries, for instance, are known to specifically use a non- -/// breakable space (0xa0) to indicate that a headword begins with a space, -/// so nbsp is not a whitespace character for Dsl compiler. -/// For now we have only space and tab, since those are most likely the only -/// ones recognized as spaces by that compiler. -bool isDslWs( wchar ch ) -{ - switch( ch ) - { - case ' ': - case '\t': - return true; - default: - return false; - } -} - -void DslDictionary::loadArticle( uint32_t address, - wstring const & requestedHeadwordFolded, - wstring & tildeValue, - wstring & displayedHeadword, - unsigned & headwordIndex, - wstring & articleText ) -{ - wstring articleData; - - { - vector< char > chunk; - - char * articleProps; - - { - Mutex::Lock _( idxMutex ); - - articleProps = chunks->getBlock( address, chunk ); - } - - uint32_t articleOffset, articleSize; - - memcpy( &articleOffset, articleProps, sizeof( articleOffset ) ); - memcpy( &articleSize, articleProps + sizeof( articleOffset ), - sizeof( articleSize ) ); - - GD_DPRINTF( "offset = %x\n", articleOffset ); - - - char * articleBody; - - { - Mutex::Lock _( dzMutex ); - - articleBody = dict_data_read_( dz, articleOffset, articleSize, 0, 0 ); - } - - if ( !articleBody ) - { -// throw exCantReadFile( getDictionaryFilenames()[ 0 ] ); - articleData = GD_NATIVE_TO_WS( L"\n\r\t" ) + gd::toWString( QString( "DICTZIP error: " ) + dict_error_str( dz ) ); - } - else - { - try - { - articleData = - DslIconv::toWstring( - DslIconv::getEncodingNameFor( DslEncoding( idxHeader.dslEncoding ) ), - articleBody, articleSize ); - free( articleBody ); - - // Strip DSL comments - bool b = false; - stripComments( articleData, b ); - } - catch( ... ) - { - free( articleBody ); - throw; - } - } - } - - size_t pos = 0; - bool hadFirstHeadword = false; - bool foundDisplayedHeadword = false; - - // Check is we retrieve insided card - bool insidedCard = isDslWs( articleData.at( 0 ) ); - - wstring tildeValueWithUnsorted; // This one has unsorted parts left - for( headwordIndex = 0; ; ) - { - size_t begin = pos; - - pos = articleData.find_first_of( GD_NATIVE_TO_WS( L"\n\r" ), begin ); - - if ( pos == wstring::npos ) - pos = articleData.size(); - - if ( !foundDisplayedHeadword ) - { - // Process the headword - - wstring rawHeadword = wstring( articleData, begin, pos - begin ); - - if( insidedCard && !rawHeadword.empty() && isDslWs( rawHeadword[ 0 ] ) ) - { - // Headword of the insided card - wstring::size_type hpos = rawHeadword.find( L'@' ); - if( hpos != string::npos ) - { - wstring head = Folding::trimWhitespace( rawHeadword.substr( hpos + 1 ) ); - hpos = head.find( L'~' ); - while( hpos != string::npos ) - { - if( hpos == 0 || head[ hpos ] != L'\\' ) - break; - hpos = head.find( L'~', hpos + 1 ); - } - if( hpos == string::npos ) - rawHeadword = head; - else - rawHeadword.clear(); - } - } - - if( !rawHeadword.empty() ) - { - if ( !hadFirstHeadword ) - { - // We need our tilde expansion value - tildeValue = rawHeadword; - - list< wstring > lst; - - expandOptionalParts( tildeValue, &lst ); - - if ( lst.size() ) // Should always be - tildeValue = lst.front(); - - tildeValueWithUnsorted = tildeValue; - - processUnsortedParts( tildeValue, false ); - } - wstring str = rawHeadword; - - if ( hadFirstHeadword ) - expandTildes( str, tildeValueWithUnsorted ); - - processUnsortedParts( str, true ); - - str = Folding::applySimpleCaseOnly( str ); - - list< wstring > lst; - expandOptionalParts( str, &lst ); - - // Does one of the results match the requested word? If so, we'd choose - // it as our headword. - - for( list< wstring >::iterator i = lst.begin(); i != lst.end(); ++i ) - { - unescapeDsl( *i ); - normalizeHeadword( *i ); - - if ( Folding::trimWhitespace( *i ) == requestedHeadwordFolded ) - { - // Found it. Now we should make a displayed headword for it. - if ( hadFirstHeadword ) - expandTildes( rawHeadword, tildeValueWithUnsorted ); - - processUnsortedParts( rawHeadword, false ); - - displayedHeadword = rawHeadword; - - foundDisplayedHeadword = true; - break; - } - } - - if ( !foundDisplayedHeadword ) - { - ++headwordIndex; - hadFirstHeadword = true; - } - } - } - - - if ( pos == articleData.size() ) - break; - - // Skip \n\r - - if ( articleData[ pos ] == '\r' ) - ++pos; - - if ( pos != articleData.size() ) - { - if ( articleData[ pos ] == '\n' ) - ++pos; - } - - if ( pos == articleData.size() ) - { - // Ok, it's end of article - break; - } - if( isDslWs( articleData[ pos ] ) ) - { - // Check for begin article text - if( insidedCard ) - { - // Check for next insided headword - wstring::size_type hpos = articleData.find_first_of( GD_NATIVE_TO_WS( L"\n\r" ), pos ); - if ( hpos == wstring::npos ) - hpos = articleData.size(); - - wstring str = wstring( articleData, pos, hpos - pos ); - - hpos = str.find( L'@'); - if( hpos == wstring::npos || str[ hpos - 1 ] == L'\\' ) - break; - } - else - break; - } - } - - if ( !foundDisplayedHeadword ) - { - // This is strange. Anyway, use tilde expansion value, it's better - // than nothing (or requestedHeadwordFolded for insided card. - if( insidedCard ) - displayedHeadword = requestedHeadwordFolded; - else - displayedHeadword = tildeValue; - } - - if ( pos != articleData.size() ) - articleText = wstring( articleData, pos ); - else - articleText.clear(); -} - -string DslDictionary::dslToHtml( wstring const & str, wstring const & headword ) -{ - // Normalize the string - wstring normalizedStr = gd::normalize( str ); - - ArticleDom dom( normalizedStr, getName(), headword ); - - optionalPartNom = 0; - - string html = processNodeChildren( dom.root ); - - return html; -} - -string DslDictionary::processNodeChildren( ArticleDom::Node const & node ) -{ - string result; - - for( ArticleDom::Node::const_iterator i = node.begin(); i != node.end(); - ++i ) - result += nodeToHtml( *i ); - - return result; -} -string DslDictionary::nodeToHtml( ArticleDom::Node const & node ) -{ - string result; - - if ( !node.isTag ) - { - result = Html::escape( Utf8::encode( node.text ) ); - - // Handle all end-of-line - - string::size_type n; - - // Strip all '\r' - while( ( n = result.find( '\r' ) ) != string::npos ) - result.erase( n, 1 ); - - // Replace all '\n' - while( ( n = result.find( '\n' ) ) != string::npos ) - result.replace( n, 1, "

" ); - - return result; - } - - if ( node.tagName == GD_NATIVE_TO_WS( L"b" ) ) - result += "" + processNodeChildren( node ) + ""; - else - if ( node.tagName == GD_NATIVE_TO_WS( L"i" ) ) - result += "" + processNodeChildren( node ) + ""; - else - if ( node.tagName == GD_NATIVE_TO_WS( L"u" ) ) - { - string nodeText = processNodeChildren( node ); - - if ( nodeText.size() && isDslWs( nodeText[ 0 ] ) ) - result.push_back( ' ' ); // Fix a common problem where in "foo[i] bar[/i]" - // the space before "bar" gets underlined. - - result += "" + nodeText + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"c" ) ) - { - result += "" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"*" ) ) - { - string id = "O" + getId().substr( 0, 7 ) + "_" + - QString::number( articleNom ).toStdString() + - "_opt_" + QString::number( optionalPartNom++ ).toStdString(); - result += "
" + processNodeChildren( node ) + "
"; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"m" ) ) - result += "
" + processNodeChildren( node ) + "
"; - else - if ( node.tagName.size() == 2 && node.tagName[ 0 ] == L'm' && - iswdigit( node.tagName[ 1 ] ) ) - result += "
" + processNodeChildren( node ) + "
"; - else - if ( node.tagName == GD_NATIVE_TO_WS( L"trn" ) ) - result += "" + processNodeChildren( node ) + ""; - else - if ( node.tagName == GD_NATIVE_TO_WS( L"ex" ) ) - result += "" + processNodeChildren( node ) + ""; - else - if ( node.tagName == GD_NATIVE_TO_WS( L"com" ) ) - result += "" + processNodeChildren( node ) + ""; - else - if ( node.tagName == GD_NATIVE_TO_WS( L"s" ) || node.tagName == GD_NATIVE_TO_WS( L"video" ) ) - { - string filename = Utf8::encode( node.renderAsText() ); - string n = - getDictionaryFilenames()[ 0 ] + ".files" + - FsEncoding::separator() + - FsEncoding::encode( filename ); - - if ( Filetype::isNameOfSound( filename ) ) - { - // If we have the file here, do the exact reference to this dictionary. - // Otherwise, make a global 'search' one. - - bool search = - !File::exists( n ) && !File::exists( FsEncoding::dirname( getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + - FsEncoding::encode( filename ) ) && - ( !resourceZip.isOpen() || - !resourceZip.hasFile( Utf8::decode( filename ) ) ); - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( search ? "search" : getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( filename.c_str() ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += "\"Play\"/"; - } - else - if ( Filetype::isNameOfPicture( filename ) ) - { - QUrl url; - url.setScheme( "bres" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( filename.c_str() ) ) ); - - vector< char > imgdata; - bool resize = false; - - try - { - File::loadFromFile( n, imgdata ); - } - catch( File::exCantOpen & ) - { - try - { - n = FsEncoding::dirname( getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + - FsEncoding::encode( filename ); - File::loadFromFile( n, imgdata ); - } - catch( File::exCantOpen & ) - { - // Try reading from zip file - if ( resourceZip.isOpen() ) - { - Mutex::Lock _( resourceZipMutex ); - resourceZip.loadFile( Utf8::decode( filename ), imgdata ); - } - } - } - catch(...) - { - } - - if( !imgdata.empty() ) - { - if( Filetype::isNameOfSvg( filename ) ) - { - // We don't need to render svg file now - - QSvgRenderer svg; - svg.load( QByteArray::fromRawData( imgdata.data(), imgdata.size() ) ); - if( svg.isValid() ) - { - QSize imgsize = svg.defaultSize(); - resize = maxPictureWidth > 0 - && imgsize.width() > maxPictureWidth; - } - } - else - { - QImage img = QImage::fromData( (unsigned char *) &imgdata.front(), - imgdata.size() ); - -#ifdef MAKE_EXTRA_TIFF_HANDLER - if( img.isNull() && Filetype::isNameOfTiff( filename ) ) - GdTiff::tiffToQImage( &imgdata.front(), imgdata.size(), img ); -#endif - - resize = maxPictureWidth > 0 - && img.width() > maxPictureWidth; - } - } - - if( resize ) - { - string link( url.toEncoded().data() ); - link.replace( 0, 4, "gdpicture" ); - result += string( "" - + "\""" - + ""; - } - else - result += string( "\"""; - } - else - if ( Filetype::isNameOfVideo( filename ) ) { - QUrl url; - url.setScheme( "gdvideo" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( filename.c_str() ) ) ); - - result += string( "" - + "" - + "" + processNodeChildren( node ) + "" + ""; - } - else - { - // Unknown file type, downgrade to a hyperlink - - QUrl url; - url.setScheme( "bres" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( filename.c_str() ) ) ); - - result += string( "" + processNodeChildren( node ) + ""; - } - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"url" ) ) - { - string link = Html::escape( Utf8::encode( node.renderAsText() ) ); - if( QUrl::fromEncoded( link.c_str() ).scheme().isEmpty() ) - link = "http://" + link; - result += "" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"!trs" ) ) - { - result += "" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"p") ) - { - result += "::const_iterator i = abrv.find( val ); - - if ( i != abrv.end() ) - { - string title; - - if ( Utf8::decode( i->second ).size() < 70 ) - { - // Replace all spaces with non-breakable ones, since that's how - // Lingvo shows tooltips - title.reserve( i->second.size() ); - - for( char const * c = i->second.c_str(); *c; ++c ) - if ( *c == ' ' || *c == '\t' ) - { - // u00A0 in utf8 - title.push_back( 0xC2 ); - title.push_back( 0xA0 ); - } - else - title.push_back( *c ); - } - else - title = i->second; - - result += " title=\"" + Html::escape( title ) + "\""; - } - - result += ">" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"'" ) ) - { - // There are two ways to display the stress: by adding an accent sign or via font styles. - // We generate two spans, one with accented data and another one without it, so the - // user could pick up the best suitable option. - string data = processNodeChildren( node ); - result += "" + data + "" - + "" + data + Utf8::encode( wstring( 1, 0x301 ) ) - + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"lang" ) ) - { - result += "" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"ref" ) ) - { - QUrl url; - - url.setScheme( "gdlookup" ); - url.setHost( "localhost" ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( gd::toQString( node.renderAsText() ) ) ); - if( !node.tagAttrs.empty() ) - { - QString attr = gd::toQString( node.tagAttrs ).remove( '\"' ); - int n = attr.indexOf( '=' ); - if( n > 0 ) - { - QList< QPair< QString, QString > > query; - query.append( QPair< QString, QString >( attr.left( n ), attr.mid( n + 1 ) ) ); - Qt4x5::Url::setQueryItems( url, query ); - } - } - - result += string( "" - + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"@" ) ) - { - // Special case - insided card header was not parsed - - QUrl url; - - url.setScheme( "gdlookup" ); - url.setHost( "localhost" ); - wstring nodeStr = node.renderAsText(); - normalizeHeadword( nodeStr ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( gd::toQString( nodeStr ) ) ); - - result += string( "" - + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"sub" ) ) - { - result += "" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"sup" ) ) - { - result += "" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"t" ) ) - { - result += "" + processNodeChildren( node ) + ""; - } - else - if ( node.tagName == GD_NATIVE_TO_WS( L"br" ) ) - { - result += "
"; - } - else - result += "" + processNodeChildren( node ) + ""; - - return result; -} - -QString const& DslDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - dictionaryDescription = "NONE"; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - if ( fileName.endsWith( ".dsl.dz", Qt::CaseInsensitive ) ) - fileName.chop( 6 ); - else - fileName.chop( 3 ); - - fileName += "ann"; - QFileInfo info( fileName ); - - if ( info.exists() ) - { - QFile annFile( fileName ); - if( !annFile.open( QFile::ReadOnly | QFile::Text ) ) - return dictionaryDescription; - - QTextStream annStream( &annFile ); - QString data, str; - - str = annStream.readLine(); - - if( str.left( 10 ).compare( "#LANGUAGE " ) != 0 ) - { - annStream.seek( 0 ); - dictionaryDescription = annStream.readAll(); - } - else - { - // Multilanguage annotation - - qint32 gdLang, annLang; - QString langStr; - gdLang = LangCoder::code2toInt( QLocale::system().name().left( 2 ).toLatin1().data() ); - for(;;) - { - data.clear(); - langStr = str.mid( 10 ).replace( '\"', ' ').trimmed(); - annLang = LangCoder::findIdForLanguage( gd::toWString( langStr ) ); - do - { - str = annStream.readLine(); - if( str.left( 10 ).compare( "#LANGUAGE " ) == 0 ) - break; - if( !str.endsWith( '\n' ) ) - str.append( '\n' ); - data += str; - } - while ( !annStream.atEnd() ); - if( dictionaryDescription.compare( "NONE ") == 0 || langStr.compare( "English", Qt::CaseInsensitive ) == 0 || gdLang == annLang ) - dictionaryDescription = data.trimmed(); - if( gdLang == annLang || annStream.atEnd() ) - break; - } - } - } - return dictionaryDescription; -} - -QString DslDictionary::getMainFilename() -{ - return FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ); -} - -void DslDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "Dsl: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "DSL: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void DslDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - headword.clear(); - text.clear(); - - vector< char > chunk; - - char * articleProps; - wstring articleData; - - { - Mutex::Lock _( idxMutex ); - articleProps = chunks->getBlock( articleAddress, chunk ); - } - - uint32_t articleOffset, articleSize; - - memcpy( &articleOffset, articleProps, sizeof( articleOffset ) ); - memcpy( &articleSize, articleProps + sizeof( articleOffset ), - sizeof( articleSize ) ); - - char * articleBody; - - { - Mutex::Lock _( dzMutex ); - articleBody = dict_data_read_( dz, articleOffset, articleSize, 0, 0 ); - } - - if ( !articleBody ) - { - return; - } - else - { - try - { - articleData = - DslIconv::toWstring( - DslIconv::getEncodingNameFor( DslEncoding( idxHeader.dslEncoding ) ), - articleBody, articleSize ); - free( articleBody ); - - // Strip DSL comments - bool b = false; - stripComments( articleData, b ); - } - catch( ... ) - { - free( articleBody ); - return; - } - } - - // Skip headword - - size_t pos = 0; - wstring articleHeadword; - - // Check if we retrieve insided card - bool insidedCard = isDslWs( articleData.at( 0 ) ); - - for( ; ; ) - { - size_t begin = pos; - - pos = articleData.find_first_of( GD_NATIVE_TO_WS( L"\n\r" ), begin ); - - if ( articleHeadword.empty() ) - { - // Process the headword - - articleHeadword = wstring( articleData, begin, pos - begin ); - - if( insidedCard && !articleHeadword.empty() && isDslWs( articleHeadword[ 0 ] ) ) - { - // Headword of the insided card - wstring::size_type hpos = articleHeadword.find( L'@' ); - if( hpos != string::npos ) - { - wstring head = Folding::trimWhitespace( articleHeadword.substr( hpos + 1 ) ); - hpos = head.find( L'~' ); - while( hpos != string::npos ) - { - if( hpos == 0 || head[ hpos ] != L'\\' ) - break; - hpos = head.find( L'~', hpos + 1 ); - } - if( hpos == string::npos ) - articleHeadword = head; - else - articleHeadword.clear(); - } - } - - if( !articleHeadword.empty() ) - { - list< wstring > lst; - - expandOptionalParts( articleHeadword, &lst ); - - if ( lst.size() ) // Should always be - articleHeadword = lst.front(); - - processUnsortedParts( articleHeadword, true ); - } - } - - if ( pos == articleData.size() ) - break; - - // Skip \n\r - - if ( articleData[ pos ] == '\r' ) - ++pos; - - if ( pos != articleData.size() ) - { - if ( articleData[ pos ] == '\n' ) - ++pos; - } - - if ( pos == articleData.size() ) - { - // Ok, it's end of article - break; - } - if( isDslWs( articleData[ pos ] ) ) - { - // Check for begin article text - if( insidedCard ) - { - // Check for next insided headword - wstring::size_type hpos = articleData.find_first_of( GD_NATIVE_TO_WS( L"\n\r" ), pos ); - if ( hpos == wstring::npos ) - hpos = articleData.size(); - - wstring str = wstring( articleData, pos, hpos - pos ); - - hpos = str.find( L'@'); - if( hpos == wstring::npos || str[ hpos - 1 ] == L'\\' ) - break; - } - else - break; - } - } - - if( !articleHeadword.empty() ) - { - unescapeDsl( articleHeadword ); - normalizeHeadword( articleHeadword ); - headword = gd::toQString( articleHeadword ); - } - - wstring articleText; - - if ( pos != articleData.size() ) - articleText = wstring( articleData, pos ); - else - articleText.clear(); - - if( !articleText.empty() ) - { - text = gd::toQString( articleText ).normalized( QString::NormalizationForm_C ); - - articleText.clear(); - - // Parse article text - - // Strip some areas - - const int stripTagsNumber = 5; - static QString stripTags[ stripTagsNumber ] = - { - "s", - "url", - "!trs", - "video", - "preview" - }; - static QString stripEndTags[ stripTagsNumber ] = - { - "[/s]", - "[/url]", - "[/!trs]", - "[/video]", - "[/preview]" - }; - - int pos = 0; - while( pos >= 0 ) - { - pos = text.indexOf( '[', pos, Qt::CaseInsensitive ); - if( pos >= 0 ) - { - if( ( pos > 0 && text[ pos - 1 ] == '\\' && ( pos < 2 || text[ pos - 2 ] != '\\' ) ) - || ( pos > text.size() - 2 || text[ pos + 1 ] == '/' ) ) - { - pos += 1; - continue; - } - - int pos2 = text.indexOf( ']', pos + 1, Qt::CaseInsensitive ); - if( pos2 < 0 ) - break; - - QString tag = text.mid( pos + 1, pos2 - pos - 1 ); - - int n; - for( n = 0; n < stripTagsNumber; n++ ) - { - if( tag.compare( stripTags[ n ], Qt::CaseInsensitive ) == 0 ) - { - pos2 = text.indexOf( stripEndTags[ n ] , pos + stripTags[ n ].size() + 2, Qt::CaseInsensitive ); - text.remove( pos, pos2 > 0 ? pos2 - pos + stripEndTags[ n ].length() : text.length() - pos ); - break; - } - } - - if( n >= stripTagsNumber ) - pos += 1; - } - } - - // Strip tags - - text.remove( QRegExp( "\\[[^\\\\\\[\\]]+\\]", Qt::CaseInsensitive ) ); - - // Chech for insided cards - - bool haveInsidedCards = false; - pos = 0; - while( pos >= 0 ) - { - pos = text.indexOf( "@", pos ); - if( pos > 0 && text.at( pos - 1 ) != '\\' ) - { - haveInsidedCards = true; - break; - } - - if( pos >= 0 ) - pos += 1; - } - - if( haveInsidedCards ) - { - // Use base DSL parser for articles with insided cards - ArticleDom dom( gd::toWString( text ), getName(), articleHeadword ); - text = gd::toQString( dom.root.renderAsText( true ) ); - } - else - { - // Unescape DSL symbols - pos = 0; - while( pos >= 0 ) - { - pos = text.indexOf( '\\', pos ); - if( pos >= 0 ) - { - if( text[ pos + 1 ] == '\\' ) - pos += 1; - - text.remove( pos, 1 ); - } - } - } - } -} - -/// DslDictionary::getArticle() - -class DslArticleRequest; - -class DslArticleRequestRunnable: public QRunnable -{ - DslArticleRequest & r; - QSemaphore & hasExited; - -public: - - DslArticleRequestRunnable( DslArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~DslArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class DslArticleRequest: public Dictionary::DataRequest -{ - friend class DslArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - DslDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - DslArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - DslDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new DslArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by DslArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~DslArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void DslArticleRequestRunnable::run() -{ - r.run(); -} - -void DslArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - // Some synonyms make it that the articles appear several times. We combat - // this by only allowing them to appear once. Dsl treats different headwords - // of the same article as different articles, so we also include headword - // index here. - set< pair< uint32_t, unsigned > > articlesIncluded; - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - // Check if we're cancelled occasionally - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - // Grab that article - - wstring tildeValue; - wstring displayedHeadword; - wstring articleBody; - unsigned headwordIndex; - - string articleText, articleAfter; - - try - { - dict.loadArticle( chain[ x ].articleOffset, wordCaseFolded, tildeValue, - displayedHeadword, headwordIndex, articleBody ); - - if ( !articlesIncluded.insert( std::make_pair( chain[ x ].articleOffset, - headwordIndex ) ).second ) - continue; // We already have this article in the body. - - dict.articleNom += 1; - - if( displayedHeadword.empty() || isDslWs( displayedHeadword[ 0 ] ) ) - displayedHeadword = word; // Special case - insided card - - articleText += ""; - articleText += "
"; - if( articleText.compare( articleText.size() - 4, 4, "

" ) == 0 ) - articleText.insert( articleText.size() - 4, " " + button ); - else - articleText += button; - } - - articleText += articleAfter; - } - catch( std::exception &ex ) - { - gdWarning( "DSL: Failed loading article from \"%s\", reason: %s\n", dict.getName().c_str(), ex.what() ); - articleText = string( "" ) - + string( QObject::tr( "Article loading error" ).toUtf8().constData() ) - + ""; - } - - Mutex::Lock _( dataMutex ); - - data.resize( data.size() + articleText.size() ); - - memcpy( &data.front() + data.size() - articleText.size(), - articleText.data(), articleText.size() ); - - hasAnyData = true; - } - - finish(); -} - -sptr< Dictionary::DataRequest > DslDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new DslArticleRequest( word, alts, *this ); -} - -//// DslDictionary::getResource() - -class DslResourceRequest; - -class DslResourceRequestRunnable: public QRunnable -{ - DslResourceRequest & r; - QSemaphore & hasExited; - -public: - - DslResourceRequestRunnable( DslResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~DslResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class DslResourceRequest: public Dictionary::DataRequest -{ - friend class DslResourceRequestRunnable; - - DslDictionary & dict; - - string resourceName; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - DslResourceRequest( DslDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( resourceName_ ) - { - QThreadPool::globalInstance()->start( - new DslResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by DslResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~DslResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void DslResourceRequestRunnable::run() -{ - r.run(); -} - -void DslResourceRequest::run() -{ - // Some runnables linger enough that they are cancelled before they start - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - string n = - FsEncoding::dirname( dict.getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + - FsEncoding::encode( resourceName ); - - GD_DPRINTF( "n is %s\n", n.c_str() ); - - try - { - try - { - Mutex::Lock _( dataMutex ); - - File::loadFromFile( n, data ); - } - catch( File::exCantOpen & ) - { - n = dict.getDictionaryFilenames()[ 0 ] + ".files" + - FsEncoding::separator() + - FsEncoding::encode( resourceName ); - - try - { - Mutex::Lock _( dataMutex ); - - File::loadFromFile( n, data ); - } - catch( File::exCantOpen & ) - { - // Try reading from zip file - - if ( dict.resourceZip.isOpen() ) - { - Mutex::Lock _( dict.resourceZipMutex ); - - Mutex::Lock __( dataMutex ); - - if ( !dict.resourceZip.loadFile( Utf8::decode( resourceName ), data ) ) - throw; // Make it fail since we couldn't read the archive - } - else - throw; - } - } - - if ( Filetype::isNameOfTiff( resourceName ) ) - { - // Convert it - - dataMutex.lock(); - - QImage img = QImage::fromData( (unsigned char *) &data.front(), - data.size() ); - -#ifdef MAKE_EXTRA_TIFF_HANDLER - if( img.isNull() ) - GdTiff::tiffToQImage( &data.front(), data.size(), img ); -#endif - - dataMutex.unlock(); - - if ( !img.isNull() ) - { - // Managed to load -- now store it back as BMP - - QByteArray ba; - QBuffer buffer( &ba ); - buffer.open( QIODevice::WriteOnly ); - img.save( &buffer, "BMP" ); - - Mutex::Lock _( dataMutex ); - - data.resize( buffer.size() ); - - memcpy( &data.front(), buffer.data(), data.size() ); - } - } - - Mutex::Lock _( dataMutex ); - - hasAnyData = true; - } - catch( std::exception &ex ) - { - gdWarning( "DSL: Failed loading resource \"%s\" for \"%s\", reason: %s\n", - resourceName.c_str(), dict.getName().c_str(), ex.what() ); - // Resource not loaded -- we don't set the hasAnyData flag then - } - - finish(); -} - -sptr< Dictionary::DataRequest > DslDictionary::getResource( string const & name ) - throw( std::exception ) -{ - return new DslResourceRequest( *this, name ); -} - -#if 0 -static void findCorrespondingFiles( string const & ifo, - string & idx, string & dict, string & syn, - bool needSyn ) -{ - string base( ifo, 0, ifo.size() - 3 ); - - if ( !( - tryPossibleName( base + "idx", idx ) || - tryPossibleName( base + "idx.gz", idx ) || - tryPossibleName( base + "idx.dz", idx ) || - tryPossibleName( base + "IDX", idx ) || - tryPossibleName( base + "IDX.GZ", idx ) || - tryPossibleName( base + "IDX.DZ", idx ) - ) ) - throw exNoIdxFile( ifo ); - - if ( !( - tryPossibleName( base + "dict", dict ) || - tryPossibleName( base + "dict.dz", dict ) || - tryPossibleName( base + "DICT", dict ) || - tryPossibleName( base + "dict.DZ", dict ) - ) ) - throw exNoDictFile( ifo ); - - if ( needSyn && !( - tryPossibleName( base + "syn", syn ) || - tryPossibleName( base + "syn.gz", syn ) || - tryPossibleName( base + "syn.dz", syn ) || - tryPossibleName( base + "SYN", syn ) || - tryPossibleName( base + "SYN.GZ", syn ) || - tryPossibleName( base + "SYN.DZ", syn ) - ) ) - throw exNoSynFile( ifo ); -} -#endif - -sptr< Dictionary::DataRequest > DslDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -} // anonymous namespace - -/// makeDictionaries - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing, - int maxPictureWidth, unsigned int maxHeadwordSize ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Try .dsl and .dsl.dz suffixes - - bool uncompressedDsl = ( i->size() >= 4 && - strcasecmp( i->c_str() + ( i->size() - 4 ), ".dsl" ) == 0 ); - if ( !uncompressedDsl && - ( i->size() < 7 || - strcasecmp( i->c_str() + ( i->size() - 7 ), ".dsl.dz" ) != 0 ) ) - continue; - - // Make sure it's not an abbreviation file - - int extSize = ( uncompressedDsl ? 4 : 7 ); - if ( i->size() - extSize >= 5 && - strncasecmp( i->c_str() + i->size() - extSize - 5, "_abrv", 5 ) == 0 ) - { - // It is, skip it - continue; - } - - unsigned atLine = 0; // Indicates current line in .dsl, for debug purposes - - try - { - vector< string > dictFiles( 1, *i ); - - // Check if there is an 'abrv' file present - string baseName = ( (*i)[ i->size() - 4 ] == '.' ) ? - string( *i, 0, i->size() - 4 ) : string( *i, 0, i->size() - 7 ); - - string abrvFileName; - - if ( File::tryPossibleName( baseName + "_abrv.dsl", abrvFileName ) || - File::tryPossibleName( baseName + "_abrv.dsl.dz", abrvFileName ) || - File::tryPossibleName( baseName + "_ABRV.DSL", abrvFileName ) || - File::tryPossibleName( baseName + "_ABRV.DSL.DZ", abrvFileName ) || - File::tryPossibleName( baseName + "_ABRV.DSL.dz", abrvFileName ) ) - dictFiles.push_back( abrvFileName ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - // See if there's a zip file with resources present. If so, include it. - - string zipFileName; - - if ( File::tryPossibleName( baseName + ".dsl.files.zip", zipFileName ) || - File::tryPossibleName( baseName + ".dsl.dz.files.zip", zipFileName ) || - File::tryPossibleName( baseName + ".DSL.FILES.ZIP", zipFileName ) || - File::tryPossibleName( baseName + ".DSL.DZ.FILES.ZIP", zipFileName ) ) - dictFiles.push_back( zipFileName ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile, zipFileName.size() ) ) - { - DslScanner scanner( *i ); - - try { // Here we intercept any errors during the read to save line at - // which the incident happened. We need alive scanner for that. - - if ( scanner.getDictionaryName() == GD_NATIVE_TO_WS( L"Abbrev" ) ) - continue; // For now just skip abbreviations - - // Building the index - initializing.indexingDictionary( Utf8::encode( scanner.getDictionaryName() ) ); - - gdDebug( "Dsl: Building the index for dictionary: %s\n", - gd::toQString( scanner.getDictionaryName() ).toUtf8().data() ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - string dictionaryName = Utf8::encode( scanner.getDictionaryName() ); - - idx.write( (uint32_t) dictionaryName.size() ); - idx.write( dictionaryName.data(), dictionaryName.size() ); - - idxHeader.dslEncoding = scanner.getEncoding(); - - IndexedWords indexedWords; - - ChunkedStorage::Writer chunks( idx ); - - // Read the abbreviations - - if ( abrvFileName.size() ) - { - try - { - DslScanner abrvScanner( abrvFileName ); - - map< string, string > abrv; - - wstring curString; - size_t curOffset; - - for( ; ; ) - { - // Skip any whitespace - if ( !abrvScanner.readNextLineWithoutComments( curString, curOffset ) ) - break; - if ( curString.empty() || isDslWs( curString[ 0 ] ) ) - continue; - - list< wstring > keys; - - bool eof = false; - - // Insert the key and read more, or get to the definition - for( ; ; ) - { - processUnsortedParts( curString, true ); - - if ( keys.size() ) - expandTildes( curString, keys.front() ); - - expandOptionalParts( curString, &keys ); - - if ( !abrvScanner.readNextLineWithoutComments( curString, curOffset ) || curString.empty() ) - { - gdWarning( "Warning: premature end of file %s\n", abrvFileName.c_str() ); - eof = true; - break; - } - - if ( isDslWs( curString[ 0 ] ) ) - break; - } - - if ( eof ) - break; - - curString.erase( 0, curString.find_first_not_of( GD_NATIVE_TO_WS( L" \t" ) ) ); - - if ( keys.size() ) - expandTildes( curString, keys.front() ); - - // If the string has any dsl markup, we strip it - string value = Utf8::encode( ArticleDom( curString ).root.renderAsText() ); - - for( list< wstring >::iterator i = keys.begin(); i != keys.end(); - ++i ) - { - unescapeDsl( *i ); - normalizeHeadword( *i ); - - abrv[ Utf8::encode( Folding::trimWhitespace( *i ) ) ] = value; - } - } - - idxHeader.hasAbrv = 1; - idxHeader.abrvAddress = chunks.startNewBlock(); - - uint32_t sz = abrv.size(); - - chunks.addToBlock( &sz, sizeof( uint32_t ) ); - - for( map< string, string >::const_iterator i = abrv.begin(); - i != abrv.end(); ++i ) - { -// DPRINTF( "%s:%s\n", i->first.c_str(), i->second.c_str() ); - - sz = i->first.size(); - chunks.addToBlock( &sz, sizeof( uint32_t ) ); - chunks.addToBlock( i->first.data(), sz ); - sz = i->second.size(); - chunks.addToBlock( &sz, sizeof( uint32_t ) ); - chunks.addToBlock( i->second.data(), sz ); - } - } - catch( std::exception & e ) - { - gdWarning( "Error reading abrv file \"%s\", error: %s. Skipping it.\n", - abrvFileName.c_str(), e.what() ); - } - } - - bool hasString = false; - wstring curString; - size_t curOffset; - - uint32_t articleCount = 0, wordCount = 0; - - for( ; ; ) - { - // Find the main headword - - if ( !hasString && !scanner.readNextLineWithoutComments( curString, curOffset ) ) - break; // Clean end of file - - hasString = false; - - // The line read should either consist of pure whitespace, or be a - // headword - - if ( curString.empty() ) - continue; - - if ( isDslWs( curString[ 0 ] ) ) - { - // The first character is blank. Let's make sure that all other - // characters are blank, too. - for( size_t x = 1; x < curString.size(); ++x ) - { - if ( !isDslWs( curString[ x ] ) ) - { - gdWarning( "Warning: garbage string in %s at offset 0x%lX\n", i->c_str(), (unsigned long) curOffset ); - break; - } - } - continue; - } - - // Ok, got the headword - - list< wstring > allEntryWords; - - processUnsortedParts( curString, true ); - expandOptionalParts( curString, &allEntryWords ); - - uint32_t articleOffset = curOffset; - - //DPRINTF( "Headword: %ls\n", curString.c_str() ); - - // More headwords may follow - - for( ; ; ) - { - if ( ! ( hasString = scanner.readNextLineWithoutComments( curString, curOffset ) ) ) - { - gdWarning( "Warning: premature end of file %s\n", i->c_str() ); - break; - } - - // Lingvo skips empty strings between the headwords - if ( curString.empty() ) - continue; - - if ( isDslWs( curString[ 0 ] ) ) - break; // No more headwords - -#ifdef QT_DEBUG - qDebug() << "Alt headword" << gd::toQString( curString ); -#endif - - processUnsortedParts( curString, true ); - expandTildes( curString, allEntryWords.front() ); - expandOptionalParts( curString, &allEntryWords ); - } - - if ( !hasString ) - break; - - // Insert new entry - - uint32_t descOffset = chunks.startNewBlock(); - - chunks.addToBlock( &articleOffset, sizeof( articleOffset ) ); - - for( list< wstring >::iterator j = allEntryWords.begin(); - j != allEntryWords.end(); ++j ) - { - unescapeDsl( *j ); - normalizeHeadword( *j ); - indexedWords.addWord( *j, descOffset, maxHeadwordSize ); - } - - ++articleCount; - wordCount += allEntryWords.size(); - - int insideInsided = 0; - wstring headword; - QVector< InsidedCard > insidedCards; - uint32_t offset = curOffset; - QVector< wstring > insidedHeadwords; - unsigned linesInsideCard = 0; - - // Skip the article's body - for( ; ; ) - { - - if ( ! ( hasString = scanner.readNextLineWithoutComments( curString, curOffset ) ) - || ( curString.size() && !isDslWs( curString[ 0 ] ) ) ) - { - if( insideInsided ) - insidedCards.append( InsidedCard( offset, curOffset - offset, insidedHeadwords ) ); - break; - } - - // Find embedded cards - - wstring::size_type n = curString.find( L'@' ); - if( n == wstring::npos || curString[ n - 1 ] == L'\\' ) - { - if( insideInsided ) - linesInsideCard++; - - continue; - } - - // Handle embedded card - - if( insideInsided ) - { - if( linesInsideCard ) - { - insidedCards.append( InsidedCard( offset, curOffset - offset, insidedHeadwords ) ); - - insidedHeadwords.clear(); - linesInsideCard = 0; - offset = curOffset; - } - } - else - { - offset = curOffset; - linesInsideCard = 0; - } - - headword = Folding::trimWhitespace( curString.substr( n + 1 ) ); - - if( !headword.empty() ) - { - processUnsortedParts( headword, true ); - expandTildes( headword, allEntryWords.front() ); - insidedHeadwords.append( headword ); - insideInsided = true; - } - else - insideInsided = false; - } - - // Now that we're having read the first string after the article - // itself, we can use its offset to calculate the article's size. - // An end of file works here, too. - - uint32_t articleSize = ( curOffset - articleOffset ); - - chunks.addToBlock( &articleSize, sizeof( articleSize ) ); - - for( QVector< InsidedCard >::iterator i = insidedCards.begin(); i != insidedCards.end(); ++i ) - { - uint32_t descOffset = chunks.startNewBlock(); - chunks.addToBlock( &(*i).offset, sizeof( (*i).offset ) ); - chunks.addToBlock( &(*i).size, sizeof( (*i).size ) ); - - for( int x = 0; x < (*i).headwords.size(); x++ ) - { - allEntryWords.clear(); - expandOptionalParts( (*i).headwords[ x ], &allEntryWords ); - - for( list< wstring >::iterator j = allEntryWords.begin(); - j != allEntryWords.end(); ++j ) - { - unescapeDsl( *j ); - normalizeHeadword( *j ); - indexedWords.addWord( *j, descOffset, maxHeadwordSize ); - } - - wordCount += allEntryWords.size(); - } - ++articleCount; - } - - if ( !hasString ) - break; - } - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - indexedWords.clear(); // Release memory -- no need for this data - - // If there was a zip file, index it too - - if ( zipFileName.size() ) - { - GD_DPRINTF( "Indexing zip file\n" ); - - idxHeader.hasZipFile = 1; - - IndexedWords zipFileNames; - IndexedZip zipFile; - if( zipFile.openZipFile( QDir::fromNativeSeparators( - FsEncoding::decode( zipFileName.c_str() ) ) ) ) - zipFile.indexFile( zipFileNames ); - - if( !zipFileNames.empty() ) - { - // Build the resulting zip file index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( zipFileNames, idx ); - - idxHeader.zipIndexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.zipIndexRootOffset = idxInfo.rootOffset; - } - else - { - // Bad zip file -- no index (though the mark that we have one - // remains) - idxHeader.zipIndexBtreeMaxElements = 0; - idxHeader.zipIndexRootOffset = 0; - } - } - else - idxHeader.hasZipFile = 0; - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - idxHeader.zipSupportVersion = CurrentZipSupportVersion; - - idxHeader.articleCount = articleCount; - idxHeader.wordCount = wordCount; - - idxHeader.langFrom = dslLanguageToId( scanner.getLangFrom() ); - idxHeader.langTo = dslLanguageToId( scanner.getLangTo() ); - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - - } // In-place try for saving line count - catch( ... ) - { - atLine = scanner.getLinesRead(); - throw; - } - - } // if need to rebuild - - dictionaries.push_back( new DslDictionary( dictId, - indexFile, - dictFiles, - maxPictureWidth ) ); - } - catch( std::exception & e ) - { - gdWarning( "DSL dictionary reading failed: %s:%u, error: %s\n", - i->c_str(), atLine, e.what() ); - } - } - - return dictionaries; -} - - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl.hh deleted file mode 100644 index e39b071dc9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl.hh +++ /dev/null @@ -1,24 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __DSL_HH_INCLUDED__ -#define __DSL_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for the ABBYY Lingvo .DSL files. -namespace Dsl { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing &, - int maxPictureWidth, unsigned int maxHeadwordSize ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl_details.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl_details.cc deleted file mode 100644 index 1789c612fa..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl_details.cc +++ /dev/null @@ -1,1297 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "dsl_details.hh" - -#include "folding.hh" -#include "langcoder.hh" -#include "gddebug.hh" -#include "ufile.hh" -#include "wstring_qt.hh" -#include "utf8.hh" - -#include -#include - -namespace Dsl { -namespace Details { - -using gd::wstring; -using std::list; - -#ifndef __linux__ - -// wcscasecmp() function is a GNU extension, we need to reimplement it -// for non-GNU systems. - -int wcscasecmp( const wchar *s1, const wchar *s2 ) -{ - for( ; ; ++s1, ++s2 ) - { - if ( towlower( *s1 ) != towlower( *s2 ) ) - return towlower( *s1 ) > towlower( *s2 ) ? 1 : -1; - - if ( !*s1 ) - break; - } - - return 0; -} - -#endif - -/////////////// ArticleDom - -wstring ArticleDom::Node::renderAsText( bool stripTrsTag ) const -{ - if ( !isTag ) - return text; - - wstring result; - - for( list< Node >::const_iterator i = begin(); i != end(); ++i ) - if( !stripTrsTag || i->tagName != GD_NATIVE_TO_WS( L"!trs" ) ) - result += i->renderAsText( stripTrsTag ); - - return result; -} - -// Returns true if src == 'm' and dest is 'mX', where X is a digit -static inline bool checkM( wstring const & dest, wstring const & src ) -{ - return ( src == GD_NATIVE_TO_WS( L"m" ) && dest.size() == 2 && - dest[ 0 ] == L'm' && iswdigit( dest[ 1 ] ) ); -} - -ArticleDom::ArticleDom( wstring const & str, string const & dictName, - wstring const & headword_): - root( Node::Tag(), wstring(), wstring() ), stringPos( str.c_str() ), - transcriptionCount( 0 ), - dictionaryName( dictName ), - headword( headword_ ) -{ - list< Node * > stack; // Currently opened tags - - Node * textNode = 0; // A leaf node which currently accumulates text. - - try - { - for( ;; ) - { - nextChar(); - - if ( ch == L'@' && !escaped ) - { - // Insided card - wstring linkTo; - nextChar(); - for( ; ; nextChar() ) - { - if( ch == L'\n' ) - break; - if( ch != L'\r' ) - linkTo.push_back( ch ); - } - linkTo = Folding::trimWhitespace( linkTo ); - - if( !linkTo.empty() ) - { - list< wstring > allLinkEntries; - expandOptionalParts( linkTo, &allLinkEntries ); - - for( list< wstring >::iterator entry = allLinkEntries.begin(); - entry != allLinkEntries.end(); ) - { - if ( !textNode ) - { - Node text = Node( Node::Text(), wstring() ); - - if ( stack.empty() ) - { - root.push_back( text ); - stack.push_back( &root.back() ); - } - else - { - stack.back()->push_back( text ); - stack.push_back( &stack.back()->back() ); - } - - textNode = stack.back(); - } - textNode->text.push_back( L'-' ); - textNode->text.push_back( L' ' ); - - // Close the currently opened text node - stack.pop_back(); - textNode = 0; - - wstring linkText = Folding::trimWhitespace( *entry ); - processUnsortedParts( linkText, true ); - ArticleDom nodeDom( linkText, dictName, headword_ ); - - Node link( Node::Tag(), GD_NATIVE_TO_WS( L"@" ), wstring() ); - for( Node::iterator n = nodeDom.root.begin(); n != nodeDom.root.end(); ++n ) - link.push_back( *n ); - - ++entry; - - if ( stack.empty() ) - { - root.push_back( link ); - if( entry != allLinkEntries.end() ) // Add line break before next entry - root.push_back( Node( Node::Tag(), GD_NATIVE_TO_WS( L"br" ), wstring() ) ); - } - else - { - stack.back()->push_back( link ); - if( entry != allLinkEntries.end() ) - stack.back()->push_back( Node( Node::Tag(), GD_NATIVE_TO_WS( L"br" ), wstring() ) ); - } - } - - - - // Skip to next '@' - - while( !( ch == L'@' && !escaped ) ) - nextChar(); - - stringPos--; - ch = L'\n'; - escaped = false; - } - - } // if ( ch == L'@' ) - - if ( ch == L'[' && !escaped ) - { - // Beginning of a tag. - do - { - nextChar(); - } while( Folding::isWhitespace( ch ) ); - - bool isClosing; - - if ( ch == L'/' && !escaped ) - { - // A closing tag. - isClosing = true; - nextChar(); - } - else - isClosing = false; - - // Read tag's name - wstring name; - - while( ( ch != L']' || escaped ) && !Folding::isWhitespace( ch ) ) - { - name.push_back( ch ); - nextChar(); - } - - while( Folding::isWhitespace( ch ) ) - nextChar(); - - // Read attrs - - wstring attrs; - - while( ch != L']' || escaped ) - { - attrs.push_back( ch ); - nextChar(); - } - - // Add the tag, or close it - - if ( textNode ) - { - // Close the currently opened text node - stack.pop_back(); - textNode = 0; - } - - // If the tag is [t], we update the transcriptionCount - if ( name == GD_NATIVE_TO_WS( L"t" ) ) - { - if ( isClosing ) - { - if ( transcriptionCount ) - --transcriptionCount; - } - else - ++transcriptionCount; - } - - if ( !isClosing ) - { - if ( name == GD_NATIVE_TO_WS( L"m" ) || - ( name.size() == 2 && name[ 0 ] == L'm' && iswdigit( name[ 1 ] ) ) ) - { - // Opening an 'mX' or 'm' tag closes any previous 'm' tag - closeTag( GD_NATIVE_TO_WS( L"m" ), stack, false ); - } - openTag( name, attrs, stack ); - if ( name == GD_NATIVE_TO_WS( L"br" ) ) - { - // [br] tag don't have closing tag - closeTag( name, stack ); - } - } - else - { - closeTag( name, stack ); - } // if ( isClosing ) - continue; - } // if ( ch == '[' ) - - if ( ch == L'<' && !escaped ) - { - // Special case: the <> link - - nextChar(); - - if ( ch != L'<' || escaped ) - { - // Ok, it's not it. - --stringPos; - - if ( escaped ) - { - --stringPos; - escaped = false; - } - ch = L'<'; - } - else - { - // Get the link's body - do - { - nextChar(); - } while( Folding::isWhitespace( ch ) ); - - wstring linkTo, linkText; - - for( ; ; nextChar() ) - { - // Is it the end? - if ( ch == L'>' && !escaped ) - { - nextChar(); - - if ( ch == L'>' && !escaped ) - break; - else - { - linkTo.push_back( L'>' ); - linkTo.push_back( ch ); - - linkText.push_back( L'>' ); - if( escaped ) - linkText.push_back( L'\\' ); - linkText.push_back( ch ); - } - } - else - { - linkTo.push_back( ch ); - - if( escaped ) - linkText.push_back( L'\\' ); - linkText.push_back( ch ); - } - } - - // Add the corresponding node - - if ( textNode ) - { - // Close the currently opened text node - stack.pop_back(); - textNode = 0; - } - - linkText = Folding::trimWhitespace( linkText ); - processUnsortedParts( linkText, true ); - ArticleDom nodeDom( linkText, dictName, headword_ ); - - Node link( Node::Tag(), GD_NATIVE_TO_WS( L"ref" ), wstring() ); - for( Node::iterator n = nodeDom.root.begin(); n != nodeDom.root.end(); ++n ) - link.push_back( *n ); - - if ( stack.empty() ) - root.push_back( link ); - else - stack.back()->push_back( link ); - - continue; - } - } // if ( ch == '<' ) - - if ( ch == L'{' && !escaped ) - { - // Special case: {{comment}} - - nextChar(); - - if ( ch != L'{' || escaped ) - { - // Ok, it's not it. - --stringPos; - - if ( escaped ) - { - --stringPos; - escaped = false; - } - ch = L'{'; - } - else - { - // Skip the comment's body - for( ; ; ) - { - nextChar(); - - // Is it the end? - if ( ch == L'}' && !escaped ) - { - nextChar(); - - if ( ch == L'}' && !escaped ) - break; - } - } - - continue; - } - } // if ( ch == '{' ) - - // If we're here, we've got a normal symbol, to be saved as text. - - // If there's currently no text node, open one - if ( !textNode ) - { - Node text = Node( Node::Text(), wstring() ); - - if ( stack.empty() ) - { - root.push_back( text ); - stack.push_back( &root.back() ); - } - else - { - stack.back()->push_back( text ); - stack.push_back( &stack.back()->back() ); - } - - textNode = stack.back(); - } - - // If we're inside the transcription, do old-encoding conversion - if ( transcriptionCount ) - { - switch ( ch ) - { - case 0x2021: ch = 0xE6; break; - case 0x407: ch = 0x72; break; - case 0xB0: ch = 0x6B; break; - case 0x20AC: ch = 0x254; break; - case 0x404: ch = 0x7A; break; - case 0x40F: ch = 0x283; break; - case 0xAB: ch = 0x74; break; - case 0xAC: ch = 0x64; break; - case 0x2020: ch = 0x259; break; - case 0x490: ch = 0x6D; break; - case 0xA7: ch = 0x66; break; - case 0xAE: ch = 0x6C; break; - case 0xB1: ch = 0x67; break; - case 0x45E: ch = 0x65; break; - case 0xAD: ch = 0x6E; break; - case 0xA9: ch = 0x73; break; - case 0xA6: ch = 0x77; break; - case 0x2026: ch = 0x28C; break; - case 0x452: ch = 0x76; break; - case 0x408: ch = 0x70; break; - case 0x40C: ch = 0x75; break; - case 0x406: ch = 0x68; break; - case 0xB5: ch = 0x61; break; - case 0x491: ch = 0x25B; break; - case 0x40A: ch = 0x14B; break; - case 0x2030: ch = 0xF0; break; - case 0x456: ch = 0x6A; break; - case 0xA4: ch = 0x62; break; - case 0x409: ch = 0x292; break; - case 0x40E: ch = 0x69; break; - //case 0x44D: ch = 0x131; break; - case 0x40B: ch = 0x4E8; break; - case 0xB6: ch = 0x28A; break; - case 0x2018: ch = 0x251; break; - case 0x457: ch = 0x265; break; - case 0x458: ch = 0x153; break; - case 0x405: textNode->text.push_back( 0x153 ); ch = 0x303; break; - case 0x441: ch = 0x272; break; - case 0x442: textNode->text.push_back( 0x254 ); ch = 0x303; break; - case 0x443: ch = 0xF8; break; - case 0x445: textNode->text.push_back(0x25B ); ch = 0x303; break; - case 0x446: ch = 0xE7; break; - case 0x44C: textNode->text.push_back( 0x251 ); ch = 0x303; break; - case 0x44D: ch = 0x26A; break; - case 0x44F: ch = 0x252; break; - case 0x30: ch = 0x3B2; break; - case 0x31: textNode->text.push_back( 0x65 ); ch = 0x303; break; - case 0x32: ch = 0x25C; break; - case 0x33: ch = 0x129; break; - case 0x34: ch = 0xF5; break; - case 0x36: ch = 0x28E; break; - case 0x37: ch = 0x263; break; - case 0x38: ch = 0x1DD; break; - case 0x3A: ch = 0x2D0; break; - case 0x27: ch = 0x2C8; break; - case 0x455: ch = 0x1D0; break; - case 0xB7: ch = 0xE3; break; - - case 0x00a0: ch = 0x02A7; break; - //case 0x00b1: ch = 0x0261; break; - case 0x0402: textNode->text.push_back( 0x0069 ); ch = L':'; break; - case 0x0403: textNode->text.push_back( 0x0251 ); ch = L':'; break; - //case 0x040b: ch = 0x03b8; break; - //case 0x040e: ch = 0x026a; break; - case 0x0428: ch = 0x0061; break; - case 0x0453: textNode->text.push_back( 0x0075 ); ch = L':'; break; - case 0x201a: ch = 0x0254; break; - case 0x201e: ch = 0x0259; break; - case 0x2039: textNode->text.push_back( 0x0064 ); ch = 0x0292; break; - } - } - - if ( escaped && ch == L' ' ) - ch = 0xA0; // Escaped spaces turn into non-breakable ones in Lingvo - - textNode->text.push_back( ch ); - } // for( ; ; ) - } - catch( eot ) - { - } - - if ( textNode ) - stack.pop_back(); - - if ( stack.size() ) - { - GD_FDPRINTF( stderr, "Warning: %u tags were unclosed.\n", (unsigned) stack.size() ); - } -} - -void ArticleDom::openTag( wstring const & name, - wstring const & attrs, - list &stack ) -{ - list< Node > nodesToReopen; - - if( name == GD_NATIVE_TO_WS( L"m" ) || checkM( name, GD_NATIVE_TO_WS( L"m" ) ) ) - { - // All tags above [m] tag will be closed and reopened after - // to avoid break this tag by closing some other tag. - - while( stack.size() ) - { - nodesToReopen.push_back( Node( Node::Tag(), stack.back()->tagName, - stack.back()->tagAttrs ) ); - - if ( stack.back()->empty() ) - { - // Empty nodes are deleted since they're no use - - stack.pop_back(); - - Node * parent = stack.size() ? stack.back() : &root; - - parent->pop_back(); - } - else - stack.pop_back(); - } - } - - // Add tag - - Node node( Node::Tag(), name, attrs ); - - if ( stack.empty() ) - { - root.push_back( node ); - stack.push_back( &root.back() ); - } - else - { - stack.back()->push_back( node ); - stack.push_back( &stack.back()->back() ); - } - - // Reopen tags if needed - - while( nodesToReopen.size() ) - { - if ( stack.empty() ) - { - root.push_back( nodesToReopen.back() ); - stack.push_back( &root.back() ); - } - else - { - stack.back()->push_back( nodesToReopen.back() ); - stack.push_back( &stack.back()->back() ); - } - - nodesToReopen.pop_back(); - } - -} - -void ArticleDom::closeTag( wstring const & name, - list< Node * > & stack, - bool warn ) -{ - // Find the tag which is to be closed - - list< Node * >::reverse_iterator n; - - for( n = stack.rbegin(); n != stack.rend(); ++n ) - { - if ( (*n)->tagName == name || checkM( (*n)->tagName, name ) ) - { - // Found it - break; - } - } - - if ( n != stack.rend() ) - { - // If there is a corresponding tag, close all tags above it, - // then close the tag itself, then reopen all the tags which got - // closed. - - list< Node > nodesToReopen; - - while( stack.size() ) - { - bool found = stack.back()->tagName == name || - checkM( stack.back()->tagName, name ); - - if ( !found ) - nodesToReopen.push_back( Node( Node::Tag(), stack.back()->tagName, - stack.back()->tagAttrs ) ); - - if ( stack.back()->empty() && stack.back()->tagName != GD_NATIVE_TO_WS( L"br" ) ) - { - // Empty nodes except [br] tag are deleted since they're no use - - stack.pop_back(); - - Node * parent = stack.size() ? stack.back() : &root; - - parent->pop_back(); - } - else - stack.pop_back(); - - if ( found ) - break; - } - - while( nodesToReopen.size() ) - { - if ( stack.empty() ) - { - root.push_back( nodesToReopen.back() ); - stack.push_back( &root.back() ); - } - else - { - stack.back()->push_back( nodesToReopen.back() ); - stack.push_back( &stack.back()->back() ); - } - - nodesToReopen.pop_back(); - } - } - else - if ( warn ) - { - if( !dictionaryName.empty() ) - gdWarning( "Warning: no corresponding opening tag for closing tag \"%s\" found in \"%s\", article \"%s\".", - gd::toQString( name ).toUtf8().data(), dictionaryName.c_str(), - gd::toQString( headword ).toUtf8().data() ); - else - gdWarning( "Warning: no corresponding opening tag for closing tag \"%s\" found.", - gd::toQString( name ).toUtf8().data() ); - } -} - -void ArticleDom::nextChar() throw( eot ) -{ - if ( !*stringPos ) - throw eot(); - - ch = *stringPos++; - - if ( ch == L'\\' ) - { - if ( !*stringPos ) - throw eot(); - - ch = *stringPos++; - - escaped = true; - } - else - if ( ch == L'[' && *stringPos == L'[' ) - { - ++stringPos; - escaped = true; - } - else - if ( ch == L']' && *stringPos == L']' ) - { - ++stringPos; - escaped = true; - } - else - escaped = false; -} - - -/////////////// DslScanner - -DslScanner::DslScanner( string const & fileName ) throw( Ex, Iconv::Ex ): - encoding( Windows1252 ), iconv( encoding ), readBufferPtr( readBuffer ), - readBufferLeft( 0 ), wcharBuffer( 64 ), linesRead( 0 ) -{ - // Since .dz is backwards-compatible with .gz, we use gz- functions to - // read it -- they are much nicer than the dict_data- ones. - - f = gd_gzopen( fileName.c_str() ); - if ( !f ) - throw exCantOpen( fileName ); - - // Now try guessing the encoding by reading the first two bytes - - unsigned char firstBytes[ 2 ]; - - if ( gzread( f, firstBytes, sizeof( firstBytes ) ) != sizeof( firstBytes ) ) - { - // Apparently the file's too short - gzclose( f ); - throw exMalformedDslFile( fileName ); - } - - bool needExactEncoding = false; - - - // If the file begins with the dedicated Unicode marker, we just consume - // it. If, on the other hand, it's not, we return the bytes back - if ( firstBytes[ 0 ] == 0xFF && firstBytes[ 1 ] == 0xFE ) - encoding = Utf16LE; - else - if ( firstBytes[ 0 ] == 0xFE && firstBytes[ 1 ] == 0xFF ) - encoding = Utf16BE; - else - if ( firstBytes[ 0 ] == 0xEF && firstBytes[ 1 ] == 0xBB ) - { - // Looks like Utf8, read one more byte - if ( gzread( f, firstBytes, 1 ) != 1 || firstBytes[ 0 ] != 0xBF ) - { - // Either the file's too short, or the BOM is weird - gzclose( f ); - throw exMalformedDslFile( fileName ); - } - - encoding = Utf8; - } - else - { - if ( firstBytes[ 0 ] && !firstBytes[ 1 ] ) - encoding = Utf16LE; - else - if ( !firstBytes[ 0 ] && firstBytes[ 1 ] ) - encoding = Utf16BE; - else - { - // Ok, this doesn't look like 16-bit Unicode. We will start with a - // 8-bit encoding with an intent to find out the exact one from - // the header. - needExactEncoding = true; - encoding = Windows1251; - } - - if ( gzrewind( f ) ) - { - gzclose( f ); - throw exCantOpen( fileName ); - } - } - - iconv.reinit( encoding ); - - // We now can use our own readNextLine() function - - wstring str; - size_t offset; - - for( ; ; ) - { - if ( !readNextLine( str, offset ) ) - { - gzclose( f ); - throw exMalformedDslFile( fileName ); - } - - if ( str.empty() || str[ 0 ] != L'#' ) - break; - - bool isName = false; - bool isLangFrom = false; - bool isLangTo = false; - - if ( !str.compare( 0, 5, GD_NATIVE_TO_WS( L"#NAME" ), 5 ) ) - isName = true; - else - if ( !str.compare( 0, 15, GD_NATIVE_TO_WS( L"#INDEX_LANGUAGE" ), 15 ) ) - isLangFrom = true; - else - if ( !str.compare( 0, 18, GD_NATIVE_TO_WS( L"#CONTENTS_LANGUAGE" ), 18 ) ) - isLangTo = true; - else - if ( str.compare( 0, 17, GD_NATIVE_TO_WS( L"#SOURCE_CODE_PAGE" ), 17 ) ) - continue; - - // Locate the argument - - size_t beg = str.find_first_of( L'"' ); - - if ( beg == wstring::npos ) - throw exMalformedDslFile( fileName ); - - size_t end = str.find_last_of( L'"' ); - - if ( end == beg ) - throw exMalformedDslFile( fileName ); - - wstring arg( str, beg + 1, end - beg - 1 ); - - if ( isName ) - dictionaryName = arg; - else if ( isLangFrom ) - langFrom = arg; - else if ( isLangTo ) - langTo = arg; - else - { - // The encoding - if ( !needExactEncoding ) - { - // We don't need that! - GD_FDPRINTF( stderr, "Warning: encoding was specified in a Unicode file, ignoring.\n" ); - } - else - if ( !wcscasecmp( arg.c_str(), GD_NATIVE_TO_WS( L"Latin" ) ) ) - encoding = Windows1252; - else - if ( !wcscasecmp( arg.c_str(), GD_NATIVE_TO_WS( L"Cyrillic" ) ) ) - encoding = Windows1251; - else - if ( !wcscasecmp( arg.c_str(), GD_NATIVE_TO_WS( L"EasternEuropean" ) ) ) - encoding = Windows1250; - else - { - gzclose( f ); - throw exUnknownCodePage(); - } - } - } - - // The loop will always end up reading a line which was not a #-directive. - // We need to rewind to that line so readNextLine() would return it again - // next time it's called. To do that, we just use the slow gzseek() and - // empty the read buffer. - if( gzdirect( f ) ) // Without this ZLib 1.2.7 gzread() return 0 - gzrewind( f ); // after gzseek() call on uncompressed files - gzseek( f, offset, SEEK_SET ); - readBufferPtr = readBuffer; - readBufferLeft = 0; - - if ( needExactEncoding ) - iconv.reinit( encoding ); -} - -DslScanner::~DslScanner() throw() -{ - gzclose( f ); -} - -bool DslScanner::readNextLine( wstring & out, size_t & offset ) throw( Ex, - Iconv::Ex ) -{ - offset = (size_t)( gztell( f ) - readBufferLeft ); - - // For now we just read one char at a time - size_t readMultiple = distanceToBytes( 1 ); - - size_t leftInOut = wcharBuffer.size(); - - wchar * outPtr = &wcharBuffer.front(); - - for( ; ; ) - { - // Check that we have bytes to read - if ( readBufferLeft < 4 ) // To convert one char, we need at most 4 bytes - { - if ( !gzeof( f ) ) - { - // To avoid having to deal with ring logic, we move the remaining bytes - // to the beginning - memmove( readBuffer, readBufferPtr, readBufferLeft ); - - // Read some more bytes to readBuffer - int result = gzread( f, readBuffer + readBufferLeft, - sizeof( readBuffer ) - readBufferLeft ); - - if ( result == -1 ) - throw exCantReadDslFile(); - - readBufferPtr = readBuffer; - readBufferLeft += (size_t) result; - } - } - - if ( readBufferLeft < readMultiple ) - { - // No more data. Return what we've got so far, forget the last byte if - // it was a 16-bit Unicode and a file had an odd number of bytes. - readBufferLeft = 0; - - if ( outPtr != &wcharBuffer.front() ) - { - // If there was a stray \r, remove it - if ( outPtr[ -1 ] == L'\r' ) - --outPtr; - - out = wstring( &wcharBuffer.front(), outPtr - &wcharBuffer.front() ); - - ++linesRead; - - return true; - } - else - return false; - } - - // Check that we have chars to write - if ( leftInOut < 2 ) // With 16-bit wchars, 2 is needed for a surrogate pair - { - wcharBuffer.resize( wcharBuffer.size() + 64 ); - outPtr = &wcharBuffer.front() + wcharBuffer.size() - 64 - leftInOut; - leftInOut += 64; - } - - // Ok, now convert one char - size_t outBytesLeft = sizeof( wchar ); - - Iconv::Result r = - iconv.convert( (void const *&)readBufferPtr, readBufferLeft, - (void *&)outPtr, outBytesLeft ); - - if ( r == Iconv::NeedMoreOut && outBytesLeft == sizeof( wchar ) ) - { - // Seems to be a surrogate pair with a 16-bit target wchar - - outBytesLeft *= 2; - r = iconv.convert( (void const *&)readBufferPtr, readBufferLeft, - (void *&)outPtr, outBytesLeft ); - --leftInOut; // Complements the next decremention - } - - if ( outBytesLeft ) - throw exEncodingError(); - - --leftInOut; - - // Have we got \n? - if ( outPtr[ -1 ] == L'\n' ) - { - --outPtr; - - // Now kill a \r if there is one, and return the result. - if ( outPtr != &wcharBuffer.front() && outPtr[ -1 ] == L'\r' ) - --outPtr; - - out = wstring( &wcharBuffer.front(), outPtr - &wcharBuffer.front() ); - - ++linesRead; - - return true; - } - } -} - -bool DslScanner::readNextLineWithoutComments( wstring & out, size_t & offset ) - throw( Ex, Iconv::Ex ) -{ - wstring str; - bool commentToNextLine = false; - size_t currentOffset; - - out.erase(); - offset = 0; - - do - { - bool b = readNextLine( str, currentOffset ); - - if( offset == 0 ) - offset = currentOffset; - - if( !b ) - return false; - - stripComments( str, commentToNextLine); - - out += str; - } - while( commentToNextLine ); - - return true; -} - -/////////////// DslScanner - -DslIconv::DslIconv( DslEncoding e ) throw( Iconv::Ex ): - Iconv( Iconv::GdWchar, getEncodingNameFor( e ) ) -{ -} - -void DslIconv::reinit( DslEncoding e ) throw( Iconv::Ex ) -{ - Iconv::reinit( Iconv::GdWchar, getEncodingNameFor( e ) ); -} - -char const * DslIconv::getEncodingNameFor( DslEncoding e ) -{ - switch( e ) - { - case Utf16LE: - return "UTF-16LE"; - case Utf16BE: - return "UTF-16BE"; - case Windows1252: - return "WINDOWS-1252"; - case Windows1251: - return "WINDOWS-1251"; - case Details::Utf8: - return "UTF-8"; - case Windows1250: - default: - return "WINDOWS-1250"; - } -} - - -void processUnsortedParts( wstring & str, bool strip ) -{ - int refCount = 0; - - size_t startPos = 0; - - for( size_t x = 0; x < str.size(); ) - { - wchar ch = str[ x ]; - - if ( ch == L'\\' ) - { - // Escape code - x += 2; - continue; - } - - if ( ch == '{' ) - { - ++refCount; - - if ( !strip ) - { - // Just remove it and continue - str.erase( x, 1 ); - continue; - } - else - if ( refCount == 1 ) - { - // First opening brace. Save this position, we will be erasing the - // whole range when we encounter the last closing brace. - startPos = x; - } - } - else - if ( ch == '}' ) - { - --refCount; - - if ( refCount < 0 ) - { - GD_FDPRINTF( stderr, "Warning: an unmatched closing brace was encountered.\n" ); - refCount = 0; - // But we remove that thing either way - str.erase( x, 1 ); - continue; - } - - if ( !strip ) - { - // Just remove it and continue - str.erase( x, 1 ); - continue; - } - else - if ( !refCount ) - { - // The final closing brace -- we can erase the whole range now. - str.erase( startPos, x - startPos + 1 ); - x = startPos; - - continue; - } - } - - ++x; - } - - if ( strip && refCount ) - { - GD_FDPRINTF( stderr, "Warning: unclosed brace(s) encountered.\n" ); - str.erase( startPos ); - } -} - -void expandOptionalParts( wstring & str, list< wstring > * result, - size_t x, bool inside_recurse ) -{ - list< wstring > expanded; - list< wstring > * headwords; - headwords = inside_recurse ? result : &expanded; - - for( ; x < str.size(); ) - { - wchar ch = str[ x ]; - - if ( ch == L'\\' ) - { - // Escape code - x += 2; - } - else - if ( ch == L'(' ) - { - // First, handle the case where this block is removed - - { - int refCount = 1; - - for( size_t y = x + 1; y < str.size(); ++y ) - { - wchar ch = str[ y ]; - - if ( ch == L'\\' ) - { - // Escape code - ++y; - } - else - if ( ch == L'(' ) - ++refCount; - else - if ( ch == L')' ) - { - if ( !--refCount ) - { - // Now that the closing parenthesis is found, - // cut the whole thing out and be done. - - if ( y != x + 1 ) // Only do for non-empty cases - { - wstring removed( str, 0, x ); - removed.append( str, y + 1, str.size() - y - 1 ); - - expandOptionalParts( removed, headwords, x, true ); - } - - break; - } - } - } - - if ( refCount && x != str.size() - 1 ) - { - // Closing paren not found? Chop it. - - wstring removed( str, 0, x ); - - // Limit the amount of results to avoid excessive resource consumption - if ( headwords->size() < 32 ) - headwords->push_back( removed ); - else - { - if( !inside_recurse ) - result->merge( expanded ); - return; - } - } - } - - // Now, handling the case where it is kept -- we just erase - // the paren and go on - - str.erase( x, 1 ); - } - else - if ( ch == L')' ) - { - // Closing paren doesn't mean much -- just erase it - str.erase( x, 1 ); - } - else - ++x; - } - - // Limit the amount of results to avoid excessive resource consumption - if ( headwords->size() < 32 ) - headwords->push_back( str ); - if( !inside_recurse ) - result->merge( expanded ); -} - -static const wstring openBraces( GD_NATIVE_TO_WS( L"{{" ) ); -static const wstring closeBraces( GD_NATIVE_TO_WS( L"}}" ) ); - -void stripComments( wstring & str, bool & nextLine ) -{ - string::size_type n = 0, n2 = 0; - - for( ; ; ) - { - if( nextLine ) - { - n = str.find( closeBraces, n2 ); - if( n == string::npos ) - { - str.erase( n2, n ); - return; - } - str.erase( n2, n - n2 + 2 ); - nextLine = false; - } - - n = str.find( openBraces, n2 ); - if( n == string::npos ) - return; - nextLine = true; - n2 = n; - } -} - -void expandTildes( wstring & str, wstring const & tildeReplacement ) -{ - for( size_t x = 0; x < str.size(); ) - if ( str[ x ] == L'\\' ) - x+=2; - else - if ( str[ x ] == L'~' ) - { - if( x > 0 && str[ x - 1 ] == '^' && ( x < 2 || str[ x - 2 ] != '\\' ) ) - { - str.replace( x - 1, 2, tildeReplacement ); - str[ x - 1 ] = QChar( str[ x - 1 ] ).isUpper() ? QChar::toLower( (uint)str[ x - 1 ] ) - : QChar::toUpper( (uint)str[ x - 1 ] ); - x = x - 1 + tildeReplacement.size(); - } - else - { - str.replace( x, 1, tildeReplacement ); - x += tildeReplacement.size(); - } - } - else - ++x; -} - -void unescapeDsl( wstring & str ) -{ - for( size_t x = 0; x < str.size(); ++x ) - if ( str[ x ] == L'\\' ) - str.erase( x, 1 ); // ++x would skip the next char without processing it -} - -void normalizeHeadword( wstring & str ) -{ - for( size_t x = str.size(); x-- > 1; ) // >1 -- Don't test the first char - { - if ( str[ x ] == L' ' ) - { - size_t y; - for( y = x; y && ( str[ y - 1 ] == L' ' ) ; --y ); - - if ( y != x ) - { - // Remove extra spaces - - str.erase( y, x - y ); - - x = y; - } - } - } - if( !str.empty() && str[ str.size() - 1 ] == L' ' ) - str.erase( str.size() - 1, 1 ); - if( !str.empty() && str[ 0 ] == L' ' ) - str.erase( 0, 1 ); -} - -namespace -{ - void cutEnding( wstring & where, wstring const & ending ) - { - if ( where.size() > ending.size() && - where.compare( where.size() - ending.size(), - ending.size(), ending ) == 0 ) - where.erase( where.size() - ending.size() ); - } -} - -quint32 dslLanguageToId( wstring const & name ) -{ - static wstring newSp( GD_NATIVE_TO_WS( L"newspelling" ) ); - static wstring st( GD_NATIVE_TO_WS( L"standard" ) ); - static wstring ms( GD_NATIVE_TO_WS( L"modernsort" ) ); - static wstring ts( GD_NATIVE_TO_WS( L"traditionalsort" ) ); - static wstring prc( GD_NATIVE_TO_WS( L"prc" ) ); - - // Any of those endings are to be removed - - wstring nameStripped = Folding::apply( name ); - - cutEnding( nameStripped, newSp ); - cutEnding( nameStripped, st ); - cutEnding( nameStripped, ms ); - cutEnding( nameStripped, ts ); - cutEnding( nameStripped, prc ); - - return LangCoder::findIdForLanguage( nameStripped ); -} - -} -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl_details.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl_details.hh deleted file mode 100644 index f2eff05e4d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/dsl_details.hh +++ /dev/null @@ -1,211 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __DSL_DETAILS_HH_INCLUDED__ -#define __DSL_DETAILS_HH_INCLUDED__ - -#include -#include -#include -#include -#include "dictionary.hh" -#include "iconv.hh" - -// Implementation details for Dsl, not part of its interface -namespace Dsl { -namespace Details { - -using std::string; -using gd::wstring; -using gd::wchar; -using std::list; -using std::vector; - -// Those are possible encodings for .dsl files -enum DslEncoding -{ - Utf16LE, - Utf16BE, - Windows1252, - Windows1251, - Windows1250, - Utf8 // This is an extension. Detected solely by the UTF8 BOM. -}; - - -/// Parses the DSL language, representing it in its structural DOM form. -struct ArticleDom -{ - struct Node: public list< Node > - { - bool isTag; // true if it is a tag with subnodes, false if it's a leaf text - // data. - // Those are only used if isTag is true - wstring tagName; - wstring tagAttrs; - wstring text; // This is only used if isTag is false - - class Text {}; - class Tag {}; - - Node( Tag, wstring const & name, wstring const & attrs ): isTag( true ), - tagName( name ), tagAttrs( attrs ) - {} - - Node( Text, wstring const & text_ ): isTag( false ), text( text_ ) - {} - - /// Concatenates all childen text nodes recursively to form all text - /// the node contains stripped of any markup. - wstring renderAsText( bool stripTrsTag = false ) const; - }; - - /// Does the parse at construction. Refer to the 'root' member variable - /// afterwards. - ArticleDom( wstring const &, string const & dictName = string(), - wstring const & headword_ = wstring() ); - - /// Root of DOM's tree - Node root; - -private: - - void openTag( wstring const & name, wstring const & attr, list< Node * > & stack ); - - void closeTag( wstring const & name, list< Node * > & stack, - bool warn = true ); - - wchar const * stringPos; - - class eot {}; - - wchar ch; - bool escaped; - unsigned transcriptionCount; // >0 = inside a [t] tag - - void nextChar() throw( eot ); - - /// Infomation for diagnostic purposes - string dictionaryName; - wstring headword; -}; - -/// A adapted version of Iconv which takes Dsl encoding and decodes to wchar. -class DslIconv: public Iconv -{ -public: - DslIconv( DslEncoding ) throw( Iconv::Ex ); - void reinit( DslEncoding ) throw( Iconv::Ex ); - - /// Returns a name to be passed to iconv for the given dsl encoding. - static char const * getEncodingNameFor( DslEncoding ); -}; - -/// Opens the .dsl or .dsl.dz file and allows line-by-line reading. Auto-detects -/// the encoding, and reads all headers by itself. -class DslScanner -{ - gzFile f; - DslEncoding encoding; - DslIconv iconv; - wstring dictionaryName; - wstring langFrom, langTo; - char readBuffer[ 65536 ]; - char * readBufferPtr; - size_t readBufferLeft; - vector< wchar > wcharBuffer; - unsigned linesRead; - -public: - - DEF_EX( Ex, "Dsl scanner exception", Dictionary::Ex ) - DEF_EX_STR( exCantOpen, "Can't open .dsl file", Ex ) - DEF_EX( exCantReadDslFile, "Can't read .dsl file", Ex ) - DEF_EX_STR( exMalformedDslFile, "The .dsl file is malformed:", Ex ) - DEF_EX( exUnknownCodePage, "The .dsl file specified an unknown code page", Ex ) - DEF_EX( exEncodingError, "Encoding error", Ex ) // Should never happen really - - DslScanner( string const & fileName ) throw( Ex, Iconv::Ex ); - ~DslScanner() throw(); - - /// Returns the detected encoding of this file. - DslEncoding getEncoding() const - { return encoding; } - - /// Returns the dictionary's name, as was read from file's headers. - wstring const & getDictionaryName() const - { return dictionaryName; } - - /// Returns the dictionary's source language, as was read from file's headers. - wstring const & getLangFrom() const - { return langFrom; } - - /// Returns the dictionary's target language, as was read from file's headers. - wstring const & getLangTo() const - { return langTo; } - - /// Reads next line from the file. Returns true if reading succeeded -- - /// the string gets stored in the one passed, along with its physical - /// file offset in the file (the uncompressed one if the file is compressed). - /// If end of file is reached, false is returned. - /// Reading begins from the first line after the headers (ones which start - /// with #). - bool readNextLine( wstring &, size_t & offset ) throw( Ex, Iconv::Ex ); - - /// Similar readNextLine but strip all DSL comments {{...}} - bool readNextLineWithoutComments( wstring &, size_t & offset ) throw( Ex, Iconv::Ex ); - - /// Returns the number of lines read so far from the file. - unsigned getLinesRead() const - { return linesRead; } - - /// Converts the given number of characters to the number of bytes they - /// would occupy in the file, knowing its encoding. It's possible to know - /// that because no multibyte encodings are supported in .dsls. - inline size_t distanceToBytes( size_t ) const; -}; - -/// This function either removes parts of string enclosed in braces, or leaves -/// them intact. The braces themselves are removed always, though. -void processUnsortedParts( wstring & str, bool strip ); - -/// Expands optional parts of a headword (ones marked with parentheses), -/// producing all possible combinations where they are present or absent. -void expandOptionalParts( wstring & str, list< wstring > * result, - size_t x = 0, bool inside_recurse = false ); - -/// Expands all unescaped tildes, inserting tildeReplacement text instead of -/// them. -void expandTildes( wstring & str, wstring const & tildeReplacement ); - -/// Unescapes any escaped chars. Be sure to handle all their special meanings -/// before unescaping them. -void unescapeDsl( wstring & str ); - -/// Normalizes the headword. Currently turns any sequences of consecutive spaces -/// into a single space. -void normalizeHeadword( wstring & ); - -/// Strip DSL {{...}} comments -void stripComments( wstring &, bool & ); - -inline size_t DslScanner::distanceToBytes( size_t x ) const -{ - switch( encoding ) - { - case Utf16LE: - case Utf16BE: - return x*2; - default: - return x; - } -} - -/// Converts the given language name taken from Dsl header (i.e. getLangFrom(), -/// getLangTo()) to its proper language id. -quint32 dslLanguageToId( wstring const & name ); - -} -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.cc deleted file mode 100644 index 38712048a9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.cc +++ /dev/null @@ -1,293 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "editdictionaries.hh" -#include "loaddictionaries.hh" -#include "dictinfo.hh" -#include "mainwindow.hh" -#include - -using std::vector; - -EditDictionaries::EditDictionaries( QWidget * parent, Config::Class & cfg_, - vector< sptr< Dictionary::Class > > & dictionaries_, - Instances::Groups & groupInstances_, - QNetworkAccessManager & dictNetMgr_ ): - QDialog( parent ), cfg( cfg_ ), dictionaries( dictionaries_ ), - groupInstances( groupInstances_ ), - dictNetMgr( dictNetMgr_ ), - origCfg( cfg ), - sources( this, cfg ), - orderAndProps( new OrderAndProps( this, cfg.dictionaryOrder, cfg.inactiveDictionaries, - dictionaries ) ), - groups( new Groups( this, dictionaries, cfg.groups, orderAndProps->getCurrentDictionaryOrder() ) ), - dictionariesChanged( false ), - groupsChanged( false ), - lastCurrentTab( 0 ) -, helpWindow( 0 ) -, helpAction( this ) -{ - // Some groups may have contained links to non-existnent dictionaries. We - // would like to preserve them if no edits were done. To that end, we save - // the initial group readings so that if no edits were really done, we won't - // be changing groups. - origCfg.groups = groups->getGroups(); - origCfg.dictionaryOrder = orderAndProps->getCurrentDictionaryOrder(); - origCfg.inactiveDictionaries = orderAndProps->getCurrentInactiveDictionaries(); - - ui.setupUi( this ); - - setWindowIcon( QIcon(":/icons/book.png") ); - - ui.tabs->clear(); - - ui.tabs->addTab( &sources, QIcon(":/icons/reload.png"), tr( "&Sources" ) ); - ui.tabs->addTab( orderAndProps.get(), QIcon(":/icons/book.png"), tr( "&Dictionaries" ) ); - ui.tabs->addTab( groups.get(), QIcon(":/icons/bookcase.png"), tr( "&Groups" ) ); - - connect( ui.buttons, SIGNAL( clicked( QAbstractButton * ) ), - this, SLOT( buttonBoxClicked( QAbstractButton * ) ) ); - - connect( &sources, SIGNAL( rescan() ), this, SLOT( rescanSources() ) ); - - connect( groups.get(), SIGNAL( showDictionaryInfo( QString const & ) ), - this, SIGNAL( showDictionaryInfo( QString const & ) ) ); - - connect( orderAndProps.get(), SIGNAL( showDictionaryHeadwords( QString const & ) ), - this, SIGNAL( showDictionaryHeadwords( QString const & ) ) ); - - connect( ui.buttons, SIGNAL( helpRequested() ), - this, SLOT( helpRequested() ) ); - - helpAction.setShortcut( QKeySequence( "F1" ) ); - helpAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - - connect( &helpAction, SIGNAL( triggered() ), - this, SLOT( helpRequested() ) ); - - addAction( &helpAction ); - -} - -void EditDictionaries::editGroup( unsigned id ) -{ - if ( id == Instances::Group::AllGroupId ) - ui.tabs->setCurrentIndex( 1 ); - else - { - ui.tabs->setCurrentIndex( 2 ); - groups->editGroup( id ); - } -} - -void EditDictionaries::save() -{ - Config::Groups newGroups = groups->getGroups(); - Config::Group newOrder = orderAndProps->getCurrentDictionaryOrder(); - Config::Group newInactive = orderAndProps->getCurrentInactiveDictionaries(); - - if ( isSourcesChanged() ) - acceptChangedSources( false ); - - if ( origCfg.groups != newGroups || origCfg.dictionaryOrder != newOrder || - origCfg.inactiveDictionaries != newInactive ) - { - groupsChanged = true; - cfg.groups = newGroups; - cfg.dictionaryOrder = newOrder; - cfg.inactiveDictionaries = newInactive; - } -} - -void EditDictionaries::accept() -{ - save(); - QDialog::accept(); -} - -void EditDictionaries::on_tabs_currentChanged( int index ) -{ - if ( index == -1 || !isVisible() ) - return; // Sent upon the construction/destruction - - if ( !lastCurrentTab && index ) - { - // We're switching away from the Sources tab -- if its contents were - // changed, we need to either apply or reject now. - - if ( isSourcesChanged() ) - { - ui.tabs->setCurrentIndex( 0 ); - - QMessageBox question( QMessageBox::Question, tr( "Sources changed" ), - tr( "Some sources were changed. Would you like to accept the changes?" ), - QMessageBox::NoButton, this ); - - QPushButton * accept = question.addButton( tr( "Accept" ), QMessageBox::AcceptRole ); - - question.addButton( tr( "Cancel" ), QMessageBox::RejectRole ); - - question.exec(); - - if ( question.clickedButton() == accept ) - { - acceptChangedSources( true ); - - lastCurrentTab = index; - ui.tabs->setCurrentIndex( index ); - } - else - { - // Prevent tab from switching - lastCurrentTab = 0; - return; - } - } - } - else - if ( lastCurrentTab == 1 && index != 1 ) - { - // When switching from the dictionary order, we need to propagate any - // changes to the groups. - groups->updateDictionaryOrder( orderAndProps->getCurrentDictionaryOrder() ); - } - - lastCurrentTab = index; -} - -void EditDictionaries::rescanSources() -{ - acceptChangedSources( true ); -} - -void EditDictionaries::buttonBoxClicked( QAbstractButton * button ) -{ - if (ui.buttons->buttonRole(button) == QDialogButtonBox::ApplyRole) { - if ( isSourcesChanged() ) { - acceptChangedSources( true ); - } - save(); - } -} - -bool EditDictionaries::isSourcesChanged() const -{ - return sources.getPaths() != cfg.paths || - sources.getSoundDirs() != cfg.soundDirs || - sources.getHunspell() != cfg.hunspell || - sources.getTransliteration() != cfg.transliteration || - sources.getForvo() != cfg.forvo || - sources.getMediaWikis() != cfg.mediawikis || - sources.getWebSites() != cfg.webSites || - sources.getDictServers() != cfg.dictServers || - sources.getPrograms() != cfg.programs || - sources.getVoiceEngines() != cfg.voiceEngines; -} - -void EditDictionaries::acceptChangedSources( bool rebuildGroups ) -{ - dictionariesChanged = true; - - Config::Groups savedGroups = groups->getGroups(); - Config::Group savedOrder = orderAndProps->getCurrentDictionaryOrder(); - Config::Group savedInactive = orderAndProps->getCurrentInactiveDictionaries(); - - cfg.paths = sources.getPaths(); - cfg.soundDirs = sources.getSoundDirs(); - cfg.hunspell = sources.getHunspell(); - cfg.transliteration = sources.getTransliteration(); - cfg.forvo = sources.getForvo(); - cfg.mediawikis = sources.getMediaWikis(); - cfg.webSites = sources.getWebSites(); - cfg.dictServers = sources.getDictServers(); - cfg.programs = sources.getPrograms(); - cfg.voiceEngines = sources.getVoiceEngines(); - - groupInstances.clear(); // Those hold pointers to dictionaries, we need to - // free them. - - ui.tabs->setUpdatesEnabled( false ); - ui.tabs->removeTab( 1 ); - ui.tabs->removeTab( 1 ); - groups.reset(); - orderAndProps.reset(); - - loadDictionaries( this, true, cfg, dictionaries, dictNetMgr ); - - // If no changes to groups were made, update the original data - bool noGroupEdits = ( origCfg.groups == savedGroups ); - - if ( noGroupEdits ) - savedGroups = cfg.groups; - - Instances::updateNames( savedGroups, dictionaries ); - - bool noOrderEdits = ( origCfg.dictionaryOrder == savedOrder ); - - if ( noOrderEdits ) - savedOrder = cfg.dictionaryOrder; - - Instances::updateNames( savedOrder, dictionaries ); - - bool noInactiveEdits = ( origCfg.inactiveDictionaries == savedInactive ); - - if ( noInactiveEdits ) - savedInactive = cfg.inactiveDictionaries; - - Instances::updateNames( savedInactive, dictionaries ); - - if ( rebuildGroups ) - { - orderAndProps = new OrderAndProps( this, savedOrder, savedInactive, dictionaries ); - ui.tabs->insertTab( 1, orderAndProps.get(), QIcon(":/icons/book.png"), tr( "&Dictionaries" ) ); - - groups = new Groups( this, dictionaries, savedGroups, orderAndProps->getCurrentDictionaryOrder() ); - ui.tabs->insertTab( 2, groups.get(), QIcon(":/icons/bookcase.png"), tr( "&Groups" ) ); - - ui.tabs->setUpdatesEnabled( true ); - - if ( noGroupEdits ) - origCfg.groups = groups->getGroups(); - - if ( noOrderEdits ) - origCfg.dictionaryOrder = orderAndProps->getCurrentDictionaryOrder(); - - if ( noInactiveEdits ) - origCfg.inactiveDictionaries = orderAndProps->getCurrentInactiveDictionaries(); - } -} - -void EditDictionaries::helpRequested() -{ - if( !helpWindow ) - { - MainWindow * mainWindow = qobject_cast< MainWindow * >( parentWidget() ); - if( mainWindow ) - mainWindow->closeGDHelp(); - - helpWindow = new Help::HelpWindow( this, cfg ); - - if( helpWindow ) - { - helpWindow->setWindowFlags( Qt::Window ); - - connect( helpWindow, SIGNAL( needClose() ), - this, SLOT( closeHelp() ) ); - helpWindow->showHelpFor( "Manage dictionaries" ); - helpWindow->show(); - } - } - else - { - if( !helpWindow->isVisible() ) - helpWindow->show(); - - helpWindow->activateWindow(); - } -} - -void EditDictionaries::closeHelp() -{ - if( helpWindow ) - helpWindow->hide(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.hh deleted file mode 100644 index 14affb1834..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.hh +++ /dev/null @@ -1,96 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __EDITDICTIONARIES_HH_INCLUDED__ -#define __EDITDICTIONARIES_HH_INCLUDED__ - -#include "dictionary.hh" -#include "config.hh" -#include "ui_editdictionaries.h" -#include "sources.hh" -#include "orderandprops.hh" -#include "groups.hh" -#include "instances.hh" -#include "helpwindow.hh" -#include -#include - -class EditDictionaries: public QDialog -{ - Q_OBJECT - -public: - - EditDictionaries( QWidget * parent, Config::Class & cfg, - std::vector< sptr< Dictionary::Class > > & dictionaries, - Instances::Groups & groupInstances, // We only clear those on rescan - QNetworkAccessManager & dictNetMgr ); - - ~EditDictionaries() - { if( helpWindow ) delete helpWindow; } - - /// Instructs the dialog to position itself on editing the given group. - void editGroup( unsigned id ); - - /// Returns true if any changes to the 'dictionaries' vector passed were done. - bool areDictionariesChanged() const - { return dictionariesChanged; } - - /// Returns true if groups were changed. - bool areGroupsChanged() const - { return groupsChanged; } - -protected: - - virtual void accept(); - -private slots: - - void on_tabs_currentChanged( int index ); - - void buttonBoxClicked( QAbstractButton * button ); - - void rescanSources(); - - void helpRequested(); - void closeHelp(); - -signals: - - void showDictionaryInfo( QString const & dictId ); - - void showDictionaryHeadwords( QString const & dictId ); - -private: - - bool isSourcesChanged() const; - - void acceptChangedSources( bool rebuildGroups ); - - void save(); - -private: - - Config::Class & cfg; - std::vector< sptr< Dictionary::Class > > & dictionaries; - Instances::Groups & groupInstances; - QNetworkAccessManager & dictNetMgr; - - // Backed up to decide later if something was changed or not - Config::Class origCfg; - - Ui::EditDictionaries ui; - Sources sources; - sptr< OrderAndProps > orderAndProps; - sptr< Groups > groups; - - bool dictionariesChanged; - bool groupsChanged; - - int lastCurrentTab; - - Help::HelpWindow * helpWindow; - QAction helpAction; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.ui deleted file mode 100644 index 4553d6926f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/editdictionaries.ui +++ /dev/null @@ -1,76 +0,0 @@ - - - EditDictionaries - - - - 0 - 0 - 839 - 532 - - - - Dictionaries - - - - - - 0 - - - - Dummy - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok - - - - - - - - - buttons - accepted() - EditDictionaries - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttons - rejected() - EditDictionaries - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing.cc deleted file mode 100644 index f2234b0c3d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing.cc +++ /dev/null @@ -1,1185 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "epwing_book.hh" -#include "epwing.hh" - -#include -#include -#include -#include - -#include -#include -#include - -#include "btreeidx.hh" -#include "folding.hh" -#include "gddebug.hh" -#include "fsencoding.hh" -#include "chunkedstorage.hh" -#include "wstring.hh" -#include "wstring_qt.hh" -#include "utf8.hh" -#include "filetype.hh" -#include "ftshelpers.hh" -#include "btreeidx.hh" - -namespace Epwing { - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -using std::map; -using std::multimap; -using std::vector; -using std::set; -using std::pair; -using gd::wstring; - -namespace { - -#pragma pack( push, 1 ) - -enum -{ - Signature = 0x58575045, // EPWX on little-endian, XWPE on big-endian - CurrentFormatVersion = 5 + BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - quint32 signature; // First comes the signature, EPWX - quint32 formatVersion; // File format version (CurrentFormatVersion) - quint32 chunksOffset; // The offset to chunks' storage - quint32 indexBtreeMaxElements; // Two fields from IndexInfo - quint32 indexRootOffset; - quint32 wordCount; - quint32 articleCount; - quint32 nameSize; - quint32 langFrom; // Source language - quint32 langTo; // Target language -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -#pragma pack( pop ) - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -class EpwingDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - string bookName; - ChunkedStorage::Reader chunks; - Epwing::Book::EpwingBook eBook; - QString cacheDirectory; - -public: - - EpwingDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles, - int subBook ); - - ~EpwingDictionary(); - - virtual string getName() throw() - { return bookName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual QString const& getDescription(); - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - if( ensureInitDone().size() ) - return; - - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "EPWING", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } - - static int japaneseWriting( gd::wchar ch ); - - static bool isSign( gd::wchar ch ); - - static bool isJapanesePunctiation( gd::wchar ch ); - - virtual sptr< Dictionary::WordSearchRequest > prefixMatch( wstring const &, - unsigned long ) - throw( std::exception ); - - virtual sptr< Dictionary::WordSearchRequest > stemmedMatch( wstring const &, - unsigned minLength, - unsigned maxSuffixVariation, - unsigned long maxResults ) - throw( std::exception ); - -protected: - - void loadIcon() throw(); - -private: - - /// Loads the article. - void loadArticle( quint32 address, string & articleHeadword, - string & articleText, int & articlePage, int & articleOffset ); - - void loadArticle( int articlePage, int articleOffset, string & articleHeadword, - string & articleText ); - - void createCacheDirectory(); - - void removeDirectory( QString const & directory ); - - QString const & getImagesCacheDir() - { return eBook.getImagesCacheDir(); } - - QString const & getSoundsCacheDir() - { return eBook.getSoundsCacheDir(); } - - QString const & getMoviesCacheDir() - { return eBook.getMoviesCacheDir(); } - - friend class EpwingArticleRequest; - friend class EpwingResourceRequest; - friend class EpwingWordSearchRequest; -}; - - -EpwingDictionary::EpwingDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles, - int subBook ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - chunks( idx, idxHeader.chunksOffset ) -{ - vector< char > data( idxHeader.nameSize ); - idx.seek( sizeof( idxHeader ) ); - idx.read( &data.front(), idxHeader.nameSize ); - bookName = string( &data.front(), idxHeader.nameSize ); - - // Initialize eBook - - eBook.setBook( dictionaryFiles[ 0 ] ); - eBook.setSubBook( subBook ); - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - eBook.setDictID( getId() ); - - cacheDirectory = QDir::tempPath() + QDir::separator() - + QString::fromUtf8( getId().c_str() ) - + ".cache"; - eBook.setCacheDirectory( cacheDirectory ); - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -EpwingDictionary::~EpwingDictionary() -{ - removeDirectory( cacheDirectory ); -} - -void EpwingDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) - + QDir::separator() - + eBook.getCurrentSubBookDirectory() + "."; - - if( !fileName.isEmpty() ) - loadIconFromFile( fileName ); - - if( dictionaryIcon.isNull() ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_epwing.png"); - } - - dictionaryIconLoaded = true; -} - -void EpwingDictionary::removeDirectory( QString const & directory ) -{ - QDir dir( directory ); - Q_FOREACH( QFileInfo info, dir.entryInfoList( QDir::NoDotAndDotDot - | QDir::AllDirs - | QDir::Files, - QDir::DirsFirst)) - { - if( info.isDir() ) - removeDirectory( info.absoluteFilePath() ); - else - QFile::remove( info.absoluteFilePath() ); - } - - dir.rmdir( directory ); -} - -void EpwingDictionary::loadArticle( quint32 address, - string & articleHeadword, - string & articleText, - int & articlePage, - int & articleOffset ) -{ - vector< char > chunk; - - char * articleProps; - - { - Mutex::Lock _( idxMutex ); - articleProps = chunks.getBlock( address, chunk ); - } - - memcpy( &articlePage, articleProps, sizeof( articlePage ) ); - memcpy( &articleOffset, articleProps + sizeof( articlePage ), - sizeof( articleOffset ) ); - - QString headword, text; - - try - { - Mutex::Lock _( eBook.getLibMutex() ); - eBook.getArticle( headword, text, articlePage, articleOffset, false ); - } - catch( std::exception & e ) - { - text = QString( "Article reading error: %1") - .arg( QString::fromUtf8( e.what() ) ); - } - - articleHeadword = string( headword.toUtf8().data() ); - articleText = string( text.toUtf8().data() ); - - string prefix( "
" ); - - articleText = prefix + articleText + "
"; -} - -void EpwingDictionary::loadArticle( int articlePage, - int articleOffset, - string & articleHeadword, - string & articleText ) -{ - QString headword, text; - - try - { - Mutex::Lock _( eBook.getLibMutex() ); - eBook.getArticle( headword, text, articlePage, articleOffset, false ); - } - catch( std::exception & e ) - { - text = QString( "Article reading error: %1") - .arg( QString::fromUtf8( e.what() ) ); - } - - articleHeadword = string( headword.toUtf8().data() ); - articleText = string( text.toUtf8().data() ); - - string prefix( "
" ); - - articleText = prefix + articleText + "
"; -} - -QString const& EpwingDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - dictionaryDescription = "NONE"; - - QString str; - { - Mutex::Lock _( eBook.getLibMutex() ); - str = eBook.copyright(); - } - - if( !str.isEmpty() ) - dictionaryDescription = str; - - return dictionaryDescription; -} - -void EpwingDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - - if( haveFTSIndex() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "Epwing: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "Epwing: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void EpwingDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - headword.clear(); - text.clear(); - - vector< char > chunk; - char * articleProps; - - { - Mutex::Lock _( idxMutex ); - articleProps = chunks.getBlock( articleAddress, chunk ); - } - - uint32_t articlePage, articleOffset; - - memcpy( &articlePage, articleProps, sizeof( articlePage ) ); - memcpy( &articleOffset, articleProps + sizeof( articlePage ), - sizeof( articleOffset ) ); - - try - { - Mutex::Lock _( eBook.getLibMutex() ); - eBook.getArticle( headword, text, articlePage, articleOffset, true ); - } - catch( std::exception & e ) - { - text = QString( "Article reading error: %1") - .arg( QString::fromUtf8( e.what() ) ); - } -} - -/// EpwingDictionary::getArticle() - -class EpwingArticleRequest; - -class EpwingArticleRequestRunnable: public QRunnable -{ - EpwingArticleRequest & r; - QSemaphore & hasExited; - -public: - - EpwingArticleRequestRunnable( EpwingArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~EpwingArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class EpwingArticleRequest: public Dictionary::DataRequest -{ - friend class EpwingArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - EpwingDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - EpwingArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - EpwingDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new EpwingArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by EpwingArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~EpwingArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void EpwingArticleRequestRunnable::run() -{ - r.run(); -} - -void EpwingArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< quint32 > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - QVector< int > pages, offsets; - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now grab that article - - string headword, articleText; - int articlePage, articleOffset; - - try - { - dict.loadArticle( chain[ x ].articleOffset, headword, articleText, - articlePage, articleOffset ); - } - catch(...) - { - } - - pages.append( articlePage ); - offsets.append( articleOffset ); - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ); - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - // Also try to find word in the built-in dictionary index - try - { - string headword, articleText; - - QVector< int > pg, off; - { - Mutex::Lock _( dict.eBook.getLibMutex() ); - dict.eBook.getArticlePos( gd::toQString( word ), pg, off ); - } - - for( int i = 0; i < pg.size(); i++ ) - { - bool already = false; - for( int n = 0; n < pages.size(); n++ ) - { - if( pages.at( n ) == pg.at( i ) - && abs( offsets.at( n ) - off.at( i ) ) <= 4 ) - { - already = true; - break; - } - } - - if( !already ) - { - dict.loadArticle( pg.at( i ), off.at( i ), headword, articleText ); - - mainArticles.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - pages.append( pg.at( i ) ); - offsets.append( off.at( i ) ); - } - } - } - catch(...) - { - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result = ""; - - multimap< wstring, pair< string, string > >::const_iterator i; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - result += "

"; - result += i->second.first; - result += "

"; - result += i->second.second; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - result += "

"; - result += i->second.first; - result += "

"; - result += i->second.second; - } - - result += "
"; - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - - finish(); -} - -sptr< Dictionary::DataRequest > EpwingDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new EpwingArticleRequest( word, alts, *this ); -} - -//// EpwingDictionary::getResource() - -class EpwingResourceRequest; - -class EpwingResourceRequestRunnable: public QRunnable -{ - EpwingResourceRequest & r; - QSemaphore & hasExited; - -public: - - EpwingResourceRequestRunnable( EpwingResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~EpwingResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class EpwingResourceRequest: public Dictionary::DataRequest -{ - friend class EpwingResourceRequestRunnable; - - EpwingDictionary & dict; - - string resourceName; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - EpwingResourceRequest( EpwingDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( resourceName_ ) - { - QThreadPool::globalInstance()->start( - new EpwingResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by EpwingResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~EpwingResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void EpwingResourceRequestRunnable::run() -{ - r.run(); -} - -void EpwingResourceRequest::run() -{ - // Some runnables linger enough that they are cancelled before they start - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - QString cacheDir; - { - Mutex::Lock _( dict.eBook.getLibMutex() ); - if( Filetype::isNameOfPicture( resourceName ) ) - cacheDir = dict.getImagesCacheDir(); - else - if( Filetype::isNameOfSound( resourceName ) ) - cacheDir = dict.getSoundsCacheDir(); - else - if( Filetype::isNameOfVideo( resourceName ) ) - cacheDir = dict.getMoviesCacheDir(); - } - - try - { - if( cacheDir.isEmpty() ) - { - finish(); - return; - } - - QString fullName = cacheDir + QDir::separator() - + FsEncoding::decode( resourceName.c_str() ); - - QFile f( fullName ); - if( f.open( QFile::ReadOnly ) ) - { - QByteArray buffer = f.readAll(); - - Mutex::Lock _( dataMutex ); - - data.resize( buffer.size() ); - - memcpy( &data.front(), buffer.data(), data.size() ); - - hasAnyData = true; - } - } - catch( std::exception &ex ) - { - gdWarning( "Epwing: Failed loading resource \"%s\" for \"%s\", reason: %s\n", - resourceName.c_str(), dict.getName().c_str(), ex.what() ); - // Resource not loaded -- we don't set the hasAnyData flag then - } - - finish(); -} - -sptr< Dictionary::DataRequest > EpwingDictionary::getResource( string const & name ) - throw( std::exception ) -{ - return new EpwingResourceRequest( *this, name ); -} - - -sptr< Dictionary::DataRequest > EpwingDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -int EpwingDictionary::japaneseWriting( gd::wchar ch ) -{ - if( ( ch >= 0x30A0 && ch <= 0x30FF ) - || ( ch >= 0x31F0 && ch <= 0x31FF ) - || ( ch >= 0x3200 && ch <= 0x32FF ) - || ( ch >= 0xFF00 && ch <= 0xFFEF ) - || ( ch == 0x1B000 ) ) - return 1; // Katakana - else - if( ( ch >= 0x3040 && ch <= 0x309F ) - || ( ch == 0x1B001 ) ) - return 2; // Hiragana - else - if( ( ch >= 0x4E00 && ch <= 0x9FAF ) - || ( ch >= 0x3400 && ch <= 0x4DBF ) ) - return 3; // Kanji - - return 0; -} - -bool EpwingDictionary::isSign( gd::wchar ch ) -{ - switch( ch ) - { - case 0x002B: // PLUS SIGN - case 0x003C: // LESS-THAN SIGN - case 0x003D: // EQUALS SIGN - case 0x003E: // GREATER-THAN SIGN - case 0x00AC: // NOT SIGN - case 0xFF0B: // FULLWIDTH PLUS SIGN - case 0xFF1C: // FULLWIDTH LESS-THAN SIGN - case 0xFF1D: // FULLWIDTH EQUALS SIGN - case 0xFF1E: // FULLWIDTH GREATER-THAN SIGN - case 0xFFE2: // FULLWIDTH NOT SIGN - return true; - - default: - return false; - } -} - -bool EpwingDictionary::isJapanesePunctiation( gd::wchar ch ) -{ - return ch >= 0x3000 && ch <= 0x303F; -} - -class EpwingWordSearchRequest; - -class EpwingWordSearchRunnable: public QRunnable -{ - EpwingWordSearchRequest & r; - QSemaphore & hasExited; - -public: - - EpwingWordSearchRunnable( EpwingWordSearchRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~EpwingWordSearchRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class EpwingWordSearchRequest: public BtreeIndexing::BtreeWordSearchRequest -{ - friend class EpwingWordSearchRunnable; - - EpwingDictionary & edict; - -public: - - EpwingWordSearchRequest( EpwingDictionary & dict_, - wstring const & str_, - unsigned minLength_, - int maxSuffixVariation_, - bool allowMiddleMatches_, - unsigned long maxResults_ ): - BtreeWordSearchRequest( dict_, str_, minLength_, maxSuffixVariation_, allowMiddleMatches_, maxResults_, false ), - edict( dict_ ) - { - QThreadPool::globalInstance()->start( - new EpwingWordSearchRunnable( *this, hasExited ) ); - } - - virtual void findMatches(); -}; - -void EpwingWordSearchRunnable::run() -{ - r.run(); -} - -void EpwingWordSearchRequest::findMatches() -{ - BtreeWordSearchRequest::findMatches(); - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - while( matches.size() < maxResults ) - { - QVector< QString > headwords; - { - Mutex::Lock _( edict.eBook.getLibMutex() ); - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( !edict.eBook.getMatches( gd::toQString( str ), headwords ) ) - break; - } - - Mutex::Lock _( dataMutex ); - - for( int i = 0; i < headwords.size(); i++ ) - addMatch( gd::toWString( headwords.at( i ) ) ); - - break; - } - - finish(); -} - -sptr< Dictionary::WordSearchRequest > EpwingDictionary::prefixMatch( - wstring const & str, unsigned long maxResults ) - throw( std::exception ) -{ - return new EpwingWordSearchRequest( *this, str, 0, -1, true, maxResults ); -} - -sptr< Dictionary::WordSearchRequest > EpwingDictionary::stemmedMatch( - wstring const & str, unsigned minLength, unsigned maxSuffixVariation, - unsigned long maxResults ) - throw( std::exception ) -{ - return new EpwingWordSearchRequest( *this, str, minLength, (int)maxSuffixVariation, - false, maxResults ); -} - -} // anonymous namespace - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - vector< string > dictFiles; - QByteArray catName; - catName += QDir::separator(); - catName += "catalogs"; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Skip files other than "catalogs" to speed up the scanning - - if ( i->size() < (unsigned)catName.size() || - strcasecmp( i->c_str() + ( i->size() - catName.size() ), catName.data() ) != 0 ) - continue; - - int ndir = i->size() - catName.size(); - if( ndir < 1 ) - ndir = 1; - - string mainDirectory = i->substr( 0, ndir ); - - Epwing::Book::EpwingBook dict; - - int subBooksNumber = dict.setBook( mainDirectory ); - - for( int sb = 0; sb < subBooksNumber; sb++ ) - { - QString dir; - - try - { - dictFiles.clear(); - dictFiles.push_back( mainDirectory ); - dictFiles.push_back( *i ); - - dict.setSubBook( sb ); - - dir = FsEncoding::decode( mainDirectory.c_str() ) - + FsEncoding::separator() - + dict.getCurrentSubBookDirectory(); - - Epwing::Book::EpwingBook::collectFilenames( dir, dictFiles ); - - QString fontSubName = FsEncoding::decode( mainDirectory.c_str() ) - + QDir::separator() - + "afonts_" + QString::number( sb ); - QFileInfo info( fontSubName ); - if( info.exists() && info.isFile() ) - dictFiles.push_back( FsEncoding::encode( fontSubName ) ); - - // Check if we need to rebuid the index - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - gdDebug( "Epwing: Building the index for dictionary in directory %s\n", dir.toUtf8().data() ); - - QString str = dict.title(); - QByteArray nameData = str.toUtf8(); - initializing.indexingDictionary( nameData.data() ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - idx.write( nameData.data(), nameData.size() ); - idxHeader.nameSize = nameData.size(); - - IndexedWords indexedWords; - - ChunkedStorage::Writer chunks( idx ); - - Epwing::Book::EpwingHeadword head; - - dict.getFirstHeadword( head ); - - int wordCount = 0; - int articleCount = 0; - - for( ; ; ) - { - if( !head.headword.isEmpty() ) - { - uint32_t offset = chunks.startNewBlock(); - chunks.addToBlock( &head.page, sizeof( head.page ) ); - chunks.addToBlock( &head.offset, sizeof( head.offset ) ); - - wstring hw = gd::toWString( head.headword ); - - indexedWords.addWord( hw, offset ); - wordCount++; - articleCount++; - - vector< wstring > words; - - // Parse combined kanji/katakana/hiragana headwords - - int w_prev = 0; - wstring word; - for( wstring::size_type n = 0; n < hw.size(); n++ ) - { - gd::wchar ch = hw[ n ]; - - if( Folding::isPunct( ch ) || Folding::isWhitespace( ch ) - || EpwingDictionary::isSign( ch ) || EpwingDictionary::isJapanesePunctiation( ch ) ) - continue; - - int w = EpwingDictionary::japaneseWriting( ch ); - - if( w > 0 ) - { - // Store only separated words - gd::wchar ch_prev = 0; - if( n ) - ch_prev = hw[ n - 1 ]; - bool needStore = ( n == 0 - || Folding::isPunct( ch_prev ) - || Folding::isWhitespace( ch_prev ) - || EpwingDictionary::isJapanesePunctiation( ch ) ); - - word.push_back( ch ); - w_prev = w; - wstring::size_type i; - for( i = n + 1; i < hw.size(); i++ ) - { - ch = hw[ i ]; - if( Folding::isPunct( ch ) || Folding::isWhitespace( ch ) - || EpwingDictionary::isJapanesePunctiation( ch ) ) - break; - w = EpwingDictionary::japaneseWriting( ch ); - if( w != w_prev ) - break; - word.push_back( ch ); - } - - if( needStore ) - { - if( i >= hw.size() || Folding::isPunct( ch ) || Folding::isWhitespace( ch ) - || EpwingDictionary::isJapanesePunctiation( ch ) ) - words.push_back( word ); - } - word.clear(); - - if( i < hw.size() ) - n = i; - else - break; - } - } - - if( words.size() > 1 ) - { - // Allow only one word in every charset - - size_t n; - int writings[ 4 ]; - memset( writings, 0, sizeof(writings) ); - - for( n = 0; n < words.size(); n++ ) - { - int w = EpwingDictionary::japaneseWriting( words[ n ][ 0 ] ); - if( writings[ w ] ) - break; - else - writings[ w ] = 1; - } - - if( n >= words.size() ) - { - for( n = 0; n < words.size(); n++ ) - { - indexedWords.addWord( words[ n ], offset ); - wordCount++; - } - } - } - - } - if( !dict.getNextHeadword( head ) ) - break; - } - - dict.clearBuffers(); - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - indexedWords.clear(); // Release memory -- no need for this data - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.wordCount = wordCount; - idxHeader.articleCount = articleCount; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - - - } // If need to rebuild - - dictionaries.push_back( new EpwingDictionary( dictId, - indexFile, - dictFiles, - sb ) ); - } - catch( std::exception & e ) - { - gdWarning( "Epwing dictionary initializing failed: %s, error: %s\n", - dir.toUtf8().data(), e.what() ); - continue; - } - } - - } - return dictionaries; -} - -} // namespace Epwing diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing.hh deleted file mode 100644 index 4792c56b8b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing.hh +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __EPWING_HH__INCLUDED__ -#define __EPWING_HH__INCLUDED__ - -#include "dictionary.hh" - -/// Support for the Epwing dictionaries. -namespace Epwing { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); -} - -#endif // __EPWING_HH__INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_book.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_book.cc deleted file mode 100644 index c87170cda1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_book.cc +++ /dev/null @@ -1,1928 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "epwing_book.hh" - -#include -#include -#include -#include "gddebug.hh" -#include "fsencoding.hh" -#include "audiolink.hh" -#include "wstring.hh" -#include "wstring_qt.hh" -#include "folding.hh" -#include "epwing_charmap.hh" - -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) -#define _FILE_OFFSET_BITS 64 -#endif - -#include -#include -#include -#include -#include - -#define HitsBufferSize 512 - -namespace Epwing { - -void initialize() -{ - eb_initialize_library(); -} - -void finalize() -{ - eb_finalize_library(); -} - -namespace Book { - -#define HookFunc(name) \ - EB_Error_Code name(EB_Book *, EB_Appendix *, void*, EB_Hook_Code, int, \ - const unsigned int*) - -HookFunc( hook_newline ); -HookFunc( hook_iso8859_1 ); -HookFunc( hook_narrow_jisx0208 ); -HookFunc( hook_wide_jisx0208 ); -HookFunc( hook_gb2312 ); -HookFunc( hook_superscript ); -HookFunc( hook_subscript ); -HookFunc( hook_decoration ); -HookFunc( hook_color_image ); -HookFunc( hook_gray_image ); -HookFunc( hook_mono_image ); -HookFunc( hook_wave ); -HookFunc( hook_mpeg ); -HookFunc( hook_narrow_font ); -HookFunc( hook_wide_font ); -HookFunc( hook_reference ); - -const EB_Hook hooks[] = { - { EB_HOOK_NEWLINE, hook_newline }, - { EB_HOOK_ISO8859_1, hook_iso8859_1 }, - { EB_HOOK_NARROW_JISX0208, hook_narrow_jisx0208 }, - { EB_HOOK_WIDE_JISX0208, hook_wide_jisx0208 }, - { EB_HOOK_GB2312, hook_gb2312 }, - { EB_HOOK_BEGIN_SUBSCRIPT, hook_subscript }, - { EB_HOOK_END_SUBSCRIPT, hook_subscript }, - { EB_HOOK_BEGIN_SUPERSCRIPT, hook_superscript }, - { EB_HOOK_END_SUPERSCRIPT, hook_superscript }, - { EB_HOOK_BEGIN_DECORATION, hook_decoration }, - { EB_HOOK_END_DECORATION, hook_decoration }, - { EB_HOOK_BEGIN_COLOR_BMP, hook_color_image }, - { EB_HOOK_BEGIN_COLOR_JPEG, hook_color_image }, - { EB_HOOK_END_COLOR_GRAPHIC, hook_color_image }, - { EB_HOOK_BEGIN_IN_COLOR_BMP, hook_color_image }, - { EB_HOOK_BEGIN_IN_COLOR_JPEG, hook_color_image }, - { EB_HOOK_END_IN_COLOR_GRAPHIC, hook_color_image }, - { EB_HOOK_BEGIN_MONO_GRAPHIC, hook_mono_image }, - { EB_HOOK_END_MONO_GRAPHIC, hook_mono_image }, - { EB_HOOK_BEGIN_WAVE, hook_wave }, - { EB_HOOK_END_WAVE, hook_wave }, - { EB_HOOK_BEGIN_MPEG, hook_mpeg }, - { EB_HOOK_END_MPEG, hook_mpeg }, - { EB_HOOK_NARROW_FONT, hook_narrow_font }, - { EB_HOOK_WIDE_FONT, hook_wide_font }, - { EB_HOOK_BEGIN_REFERENCE, hook_reference }, - { EB_HOOK_END_REFERENCE, hook_reference }, - { EB_HOOK_NULL, NULL } -}; - -const EB_Hook refHooks[] = { - { EB_HOOK_BEGIN_REFERENCE, hook_reference }, - { EB_HOOK_END_REFERENCE, hook_reference }, - { EB_HOOK_NULL, NULL } -}; - -#define EUC_TO_ASCII_TABLE_START 0xa0 -#define EUC_TO_ASCII_TABLE_END 0xff - -// Tables from EB library - -static const unsigned char euc_a1_to_ascii_table[] = { - 0x00, 0x20, 0x00, 0x00, 0x2c, 0x2e, 0x00, 0x3a, /* 0xa0 */ - 0x3b, 0x3f, 0x21, 0x00, 0x00, 0x00, 0x60, 0x00, /* 0xa8 */ - 0x5e, 0x7e, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x2f, /* 0xb8 */ - 0x5c, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x27, /* 0xc0 */ - 0x00, 0x22, 0x28, 0x29, 0x00, 0x00, 0x5b, 0x5d, /* 0xc8 */ - 0x7b, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0 */ - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x2d, 0x00, 0x00, /* 0xd8 */ - 0x00, 0x3d, 0x00, 0x3c, 0x3e, 0x00, 0x00, 0x00, /* 0xe0 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, /* 0xe8 */ - 0x24, 0x00, 0x00, 0x25, 0x23, 0x26, 0x2a, 0x40, /* 0xf0 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8 */ -}; - -static const unsigned char euc_a3_to_ascii_table[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0 */ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8 */ - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0xb0 */ - 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8 */ - 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0xc0 */ - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0xc8 */ - 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0xd0 */ - 0x58, 0x59, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8 */ - 0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0xe0 */ - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0xe8 */ - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0xf0 */ - 0x78, 0x79, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8 */ -}; - -// Hook functions - -EB_Error_Code hook_newline( EB_Book * book, EB_Appendix *, void * ptr, - EB_Hook_Code, int, const unsigned int * ) -{ - EContainer * container = static_cast< EContainer * >( ptr ); - - if( container->textOnly ) - eb_write_text_byte1( book, '\n' ); - else - eb_write_text_string( book, "
" ); - return EB_SUCCESS; -} - -EB_Error_Code hook_iso8859_1( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code, int, const unsigned int * argv ) -{ - EpwingBook * ebook = static_cast< EpwingBook * >( container ); - if( ebook->codecISO() ) - { - QByteArray b = ebook->codecISO()->toUnicode( (const char *)argv, 1 ).toUtf8(); - eb_write_text( book, b.data(), b.size() ); - } - return EB_SUCCESS; -} - -EB_Error_Code hook_narrow_jisx0208( EB_Book * book, EB_Appendix *, - void * container, EB_Hook_Code, int, - const unsigned int * argv ) -{ - if( *argv == 0xA1E3 ) - eb_write_text_string( book, "<" ); - else - if( *argv == 0xA1E4 ) - eb_write_text_string( book, ">" ); - else - if( *argv == 0xA1F5 ) - eb_write_text_string( book, "&" ); - else - { - unsigned char buf[ 2 ]; - buf[ 0 ] = argv[ 0 ] >> 8; - buf[ 1 ] = argv[ 0 ] & 0xff; - int out_code = 0; - - if( buf[ 0 ] == 0xA1 && buf[ 1 ] >= EUC_TO_ASCII_TABLE_START ) - out_code = euc_a1_to_ascii_table[ buf[ 1 ] - EUC_TO_ASCII_TABLE_START ]; - else - if( buf[ 0 ] == 0xA3 && buf[ 1 ] >= EUC_TO_ASCII_TABLE_START ) - out_code = euc_a3_to_ascii_table[ buf[ 1 ] - EUC_TO_ASCII_TABLE_START ]; - - if( out_code == 0 ) - { - EContainer * cont = static_cast< EContainer * >( container ); - if( cont->book->codecEuc() ) - { - QByteArray str = cont->book->codecEuc()->toUnicode( (const char *)buf, 2 ).toUtf8(); - eb_write_text( book, str.data(), str.size() ); - } - else - eb_write_text( book, (const char *)buf, 2 ); - } - else - eb_write_text_byte1( book, out_code ); - } - - return EB_SUCCESS; -} - -EB_Error_Code hook_wide_jisx0208( EB_Book * book, EB_Appendix *, void * ptr, - EB_Hook_Code, int, const unsigned int * argv ) -{ - EpwingBook * ebook = static_cast< EContainer * >( ptr )->book; - - char buf[2]; - buf[1] = *argv & 0xFF; - buf[0] = ( *argv & 0xFF00 ) >> 8; - - if( ebook->codecEuc() ) - { - QByteArray b = ebook->codecEuc()->toUnicode( buf, 2 ).toUtf8(); - eb_write_text( book, b.data(), b.size() ); - } - else - eb_write_text_byte2( book, buf[ 0 ], buf[ 1 ] ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_gb2312( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code, int, const unsigned int * argv ) -{ - EpwingBook * ebook = static_cast< EContainer * >( container )->book; - - char buf[2]; - buf[1] = *argv & 0xFF; - buf[0] = ( *argv & 0xFF00 ) >> 8 ; - - if( ebook->codecGB() ) - { - QByteArray b = ebook->codecGB()->toUnicode( buf, 2 ).toUtf8(); - eb_write_text( book, b.data(), b.size() ); - } - else - eb_write_text_byte2( book, buf[ 0 ], buf[ 1 ] ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_subscript( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - if( code == EB_HOOK_BEGIN_SUBSCRIPT ) - eb_write_text_string( book, cn->book->beginDecoration( EpwingBook::SUBSCRIPT ) ); - - if( code == EB_HOOK_END_SUBSCRIPT ) - eb_write_text_string( book, cn->book->endDecoration( EpwingBook::SUBSCRIPT ) ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_superscript( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - if( code == EB_HOOK_BEGIN_SUPERSCRIPT ) - eb_write_text_string( book, cn->book->beginDecoration( EpwingBook::SUPERSCRIPT ) ); - - if( code == EB_HOOK_END_SUPERSCRIPT ) - eb_write_text_string( book, cn->book->endDecoration( EpwingBook::SUPERSCRIPT ) ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_decoration( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - if( code == EB_HOOK_BEGIN_DECORATION ) - eb_write_text_string( book, cn->book->beginDecoration( argv[ 1 ] ) ); - - if( code == EB_HOOK_END_DECORATION ) - eb_write_text_string( book, cn->book->endDecoration( argv[ 1 ] ) ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_color_image( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - QByteArray str = cn->book->handleColorImage( code, argv ); - if( !str.isEmpty() ) - eb_write_text( book, str.data(), str.size() ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_mono_image( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - QByteArray str = cn->book->handleMonoImage( code, argv ); - if( !str.isEmpty() ) - eb_write_text( book, str.data(), str.size() ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_wave( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - QByteArray str = cn->book->handleWave( code, argv ); - if( !str.isEmpty() ) - eb_write_text( book, str.data(), str.size() ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_mpeg( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - QByteArray str = cn->book->handleMpeg( code, argv ); - if( !str.isEmpty() ) - eb_write_text( book, str.data(), str.size() ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_narrow_font( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - QByteArray str = cn->book->handleNarrowFont( argv, cn->textOnly ); - if( !str.isEmpty() ) - eb_write_text( book, str.data(), str.size() ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_wide_font( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - QByteArray str = cn->book->handleWideFont( argv, cn->textOnly ); - if( !str.isEmpty() ) - eb_write_text( book, str.data(), str.size() ); - - return EB_SUCCESS; -} - -EB_Error_Code hook_reference( EB_Book * book, EB_Appendix *, void * container, - EB_Hook_Code code, int, const unsigned int * argv ) -{ - EContainer * cn = static_cast< EContainer * >( container ); - - if( cn->textOnly ) - return EB_SUCCESS; - - QByteArray str = cn->book->handleReference( code, argv ); - if( !str.isEmpty() ) - eb_write_text( book, str.data(), str.size() ); - - return EB_SUCCESS; -} - -// EpwingBook class - -EpwingBook::EpwingBook() : - currentSubBook( -1 ) -{ - codec_ISO = QTextCodec::codecForName( "ISO8859-1" ); - codec_GB = QTextCodec::codecForName( "GB2312" ); - codec_Euc = QTextCodec::codecForName("EUC-JP"); - - eb_initialize_book( &book ); - eb_initialize_appendix( &appendix ); - - eb_initialize_hookset( &hookSet ); - eb_set_hooks( &hookSet, hooks ); - - eb_initialize_hookset( &refHookSet ); - eb_set_hooks( &refHookSet, refHooks ); -} - -EpwingBook::~EpwingBook() -{ - eb_finalize_hookset( &hookSet ); - eb_finalize_appendix( &appendix ); - eb_finalize_book( &book ); -} - -void EpwingBook::setErrorString( QString const & func, EB_Error_Code code ) -{ - error_string = QString( "EB \"%1\" function error: %2 (%3)" ) - .arg( func ) - .arg( QTextCodec::codecForLocale()->toUnicode( eb_error_string( code ) ) ) - .arg( QTextCodec::codecForLocale()->toUnicode( eb_error_message( code ) ) ); - - if( currentPosition.page != 0 ) - error_string += QString( " on page %1, offset %2" ).arg( QString::number( currentPosition.page ) ) - .arg( QString::number( currentPosition.offset ) ); -} - -void EpwingBook::collectFilenames( QString const & directory, vector< string > & files ) -{ - QDir dir( directory ); - QString catName; - catName += QDir::separator(); - catName += "catalogs"; - - QFileInfoList entries = dir.entryInfoList( QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot, - QDir::Name | QDir::DirsLast ); - - for( QFileInfoList::const_iterator i = entries.constBegin(); - i != entries.constEnd(); ++i ) - { - QString fullName = QDir::toNativeSeparators( i->filePath() ); - - if( i->isDir() ) - collectFilenames( fullName, files ); - else - files.push_back( FsEncoding::encode( fullName ) ); - } -} - -int EpwingBook::setBook( string const & directory ) -{ - error_string.clear(); - - if( directory.empty() ) - throw exEpwing( "No such directory" ); - - currentPosition.page = 0; - - indexHeadwordsPosition.page = 0; - indexHeadwordsPosition.offset = 0; - - currentSubBook = -1; - - EB_Error_Code ret = eb_bind( &book, directory.c_str() ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_bind", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - return -1; - } - - ret = eb_bind_appendix( &appendix, directory.c_str() ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_bind_appendix", ret ); - } - - ret = eb_subbook_list( &book, subBookList, &subBookCount ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_subbook_list", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - ret = eb_appendix_subbook_list( &appendix, subAppendixList, &subAppendixCount ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_appendix_subbook_list", ret ); - } - - if( !codec_Euc - || ( book.character_code == EB_CHARCODE_ISO8859_1 && !codec_ISO ) - || ( book.character_code == EB_CHARCODE_JISX0208_GB2312 && !codec_GB ) ) - throw exEpwing( "No required codec to decode dictionary" ); - - rootDir = FsEncoding::decode( directory.c_str() ); - - return subBookCount; -} - -bool EpwingBook::setSubBook( int book_nom ) -{ - error_string.clear(); - - customFontsMap.clear(); - - currentPosition.page = 0; - - if( book_nom < 0 || book_nom >= subBookCount ) - throw exEpwing( "Invalid subbook number" ); - - if( currentSubBook == book_nom ) - return true; - - EB_Error_Code ret = eb_set_subbook( &book, subBookList[ book_nom ] ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_set_subbook", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - currentSubBook = book_nom; - - if( book_nom < subAppendixCount ) - { - ret = eb_set_appendix_subbook( &appendix, subAppendixList[ book_nom ] ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_set_appendix_subbook", ret ); - } - } - - if( eb_have_font( &book, EB_FONT_16 ) ) - { - ret = eb_set_font( &book, EB_FONT_16 ); - if( ret != EB_SUCCESS ) - setErrorString( "eb_set_font", ret ); - } - - // Load fonts list - - QString fileName = rootDir + QDir::separator() - + "afonts_" + QString::number( book_nom ); - - QFile f( fileName ); - if( f.open( QFile::ReadOnly | QFile::Text ) ) - { - QTextStream ts( &f ); - ts.setCodec( "UTF-8" ); - - QString line = ts.readLine(); - while( !line.isEmpty() ) - { - QStringList list = line.remove( '\n' ).split( ' ', QString::SkipEmptyParts ); - if( list.count() == 2 ) - customFontsMap[ list[ 0 ] ] = list[ 1 ]; - line = ts.readLine(); - } - - f.close(); - } - - return true; -} - -void EpwingBook::setCacheDirectory( QString const & cacheDir ) -{ - mainCacheDir = cacheDir; - cacheImagesDir.clear(); - cacheSoundsDir.clear(); - cacheMoviesDir.clear(); - cacheFontsDir.clear(); - - imageCacheList.clear(); - soundsCacheList.clear(); - moviesCacheList.clear(); - fontsCacheList.clear(); -} - -QString EpwingBook::createCacheDir( QString const & dirName ) -{ - QDir dir; - QFileInfo info( mainCacheDir ); - if( !info.exists() || !info.isDir() ) - { - if( !dir.mkdir( mainCacheDir ) ) - { - gdWarning( "Epwing: can't create cache directory \"%s\"", mainCacheDir.toUtf8().data() ); - return QString(); - } - } - - QString cacheDir = mainCacheDir + QDir::separator() + dirName; - info = QFileInfo( cacheDir ); - if( !info.exists() || !info.isDir() ) - { - if( !dir.mkdir( cacheDir ) ) - { - gdWarning( "Epwing: can't create cache directory \"%s\"", cacheDir.toUtf8().data() ); - return QString(); - } - } - return cacheDir; -} - -QString EpwingBook::getCurrentSubBookDirectory() -{ - error_string.clear(); - - if( currentSubBook < 0 || currentSubBook >= subBookCount ) - { - setErrorString( "eb_subbook_directory2", EB_ERR_NO_SUCH_BOOK ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - char buffer[ EB_MAX_PATH_LENGTH + 1 ]; - - EB_Error_Code ret = eb_subbook_directory2( &book, subBookList[ currentSubBook ], buffer ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_subbook_directory2", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - return QString::fromLocal8Bit( buffer ); -} - -QString EpwingBook::makeFName( QString const & ext, int page, int offset ) const -{ - QString name = QString::number( page ) - + "x" - + QString::number( offset ) - + "." - + ext; - return name; -} - -QString EpwingBook::title() -{ - char buf[ EB_MAX_TITLE_LENGTH + 1 ]; - error_string.clear(); - - EB_Error_Code ret = eb_subbook_title( &book, buf ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_subbook_title", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - buf[ EB_MAX_TITLE_LENGTH ] = 0; - if( codec_Euc ) - return codec_Euc->toUnicode( buf ); - - return QString(); -} - -QString EpwingBook::copyright() -{ - error_string.clear(); - - if( !eb_have_copyright( &book ) ) - return QString(); - - EB_Position position; - EB_Error_Code ret = eb_copyright( &book, &position ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_copyright", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - currentPosition = position; - - return getText( position.page, position.offset, true ); -} - -QString EpwingBook::getText( int page, int offset, bool text_only ) -{ - error_string.clear(); - - EB_Position pos; - pos.page = page; - pos.offset = offset; - currentPosition = pos; - - EB_Error_Code ret = eb_seek_text(&book, &pos); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_seek_text", ret ); - currentPosition.page = 0; - throw exEbLibrary( error_string.toUtf8().data() ); - } - - QByteArray buf; - char buffer[ TextBufferSize + 1 ]; - ssize_t buffer_length; - - EContainer container( this, text_only ); - - prepareToRead(); - - for( ; ; ) - { - ret = eb_read_text( &book, &appendix, &hookSet, &container, - TextBufferSize, buffer, &buffer_length ); - - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_text", ret ); - break; - } - - buf += QByteArray( buffer, buffer_length ); - - if( eb_is_text_stopped( &book ) ) - break; - - if( buf.length() > TextSizeLimit ) - { - error_string = "Data too large"; - currentPosition.page = 0; - return QString(); - } - } - - QString text = QString::fromUtf8( buf.data(), buf.size() ).trimmed(); - finalizeText( text ); - return text; -} - -void EpwingBook::getReferencesFromText( int page, int offset ) -{ - error_string.clear(); - - EB_Position pos; - pos.page = page; - pos.offset = offset; - - currentPosition = pos; - - EB_Error_Code ret = eb_seek_text(&book, &pos); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_seek_text", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - char buffer[ TextBufferSize + 1 ]; - ssize_t buffer_length; - - EContainer container( this, false ); - - prepareToRead(); - - for( ; ; ) - { - ret = eb_read_text( &book, &appendix, &refHookSet, &container, - TextBufferSize, buffer, &buffer_length ); - - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_text", ret ); - break; - } - - if( eb_is_text_stopped( &book ) ) - break; - } - - for( int x = 0; x < refPages.size(); x++ ) - LinksQueue.push_back( EWPos( refPages[ x ], refOffsets[ x ] ) ); -} - -EB_Error_Code EpwingBook::forwardText( EB_Position & startPos ) -{ - EB_Error_Code ret = eb_seek_text( &book, &startPos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_seek_text", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - ret = eb_forward_text( &book, &appendix ); - while( ret == EB_ERR_END_OF_CONTENT ) - { - ret = eb_tell_text( &book, &startPos ); - if( ret != EB_SUCCESS ) - break; - - if( startPos.page >= book.subbook_current->text.end_page ) - return EB_ERR_END_OF_CONTENT; - - startPos.offset += 2; - currentPosition = startPos; - - ret = eb_seek_text( &book, &startPos ); - - if( ret == EB_SUCCESS ) - ret = eb_forward_text( &book, &appendix ); - } - return ret; -} - -void EpwingBook::getFirstHeadword( EpwingHeadword & head ) -{ - error_string.clear(); - - EB_Position pos; - - EB_Error_Code ret = eb_text( &book, &pos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_text", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - ret = forwardText( pos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "forwardText", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - eb_backward_text( &book, &appendix ); - - ret = eb_tell_text( &book, &pos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_tell_text", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - currentPosition = pos; - indexHeadwordsPosition = pos; - - head.page = pos.page; - head.offset = pos.offset; - - if( !readHeadword( pos, head.headword, true ) ) - throw exEbLibrary( error_string.toUtf8().data() ); - - fixHeadword( head.headword ); - - EWPos epos( pos.page, pos.offset ); - allHeadwordPositions[ head.headword ] = epos; -} - -bool EpwingBook::getNextHeadword( EpwingHeadword & head ) -{ - EB_Position pos; - - QRegExp badLinks( "#(v|n)\\d" ); - - // At first we check references queue - while( !LinksQueue.isEmpty() ) - { - EWPos epos = LinksQueue.last(); - LinksQueue.pop_back(); - - pos.page = epos.first; - pos.offset = epos.second; - - if( readHeadword( pos, head.headword, true ) ) - { - if( head.headword.isEmpty() - || head.headword.contains( badLinks ) ) - continue; - - fixHeadword( head.headword ); - - head.page = pos.page; - head.offset = pos.offset; - - if( allHeadwordPositions.contains( head.headword ) ) - { - EWPos epos = allHeadwordPositions[ head.headword ]; - if( pos.page != epos.first || abs( pos.offset - epos.second ) > 4 ) - return true; - } - else - { - allHeadwordPositions[ head.headword ] = EWPos( pos.page, pos.offset ); - return true; - } - } - } - - // No queued positions - forward to next article - - error_string.clear(); - - pos = indexHeadwordsPosition; - - for( ; ; ) - { - EB_Error_Code ret = forwardText( pos ); - indexHeadwordsPosition = pos; - - if( ret == EB_ERR_END_OF_CONTENT ) - return false; - else - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_forward_text", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - ret = eb_tell_text( &book, &pos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_tell_text", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - indexHeadwordsPosition = pos; - - try - { - getReferencesFromText( pos.page, pos.offset ); - } - catch( std::exception ) - { - } - - head.page = pos.page; - head.offset = pos.offset; - - if( !readHeadword( pos, head.headword, true ) ) - throw exEbLibrary( error_string.toUtf8().data() ); - - if( head.headword.isEmpty() ) - continue; - - fixHeadword( head.headword ); - - if( allHeadwordPositions.contains( head.headword ) ) - { - EWPos epos = allHeadwordPositions[ head.headword ]; - if( pos.page != epos.first || abs( pos.offset - epos.second ) > 4 ) - break; - } - else - { - allHeadwordPositions[ head.headword ] = EWPos( pos.page, pos.offset ); - break; - } - } - - return true; -} - -bool EpwingBook::readHeadword( EB_Position const& pos, - QString & headword, - bool text_only ) -{ - EContainer container( this, text_only ); - ssize_t head_length; - - EB_Position newPos = pos; - - EB_Error_Code ret = eb_seek_text( &book, &newPos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_seek_text", ret ); - return false; - } - - char buffer[ TextBufferSize + 1 ]; - - ret = eb_read_heading( &book, &appendix, &hookSet, &container, - TextBufferSize, buffer, &head_length ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_heading", ret ); - return false; - } - - headword = QString::fromUtf8( buffer, head_length ); - return true; -} - -bool EpwingBook::isHeadwordCorrect( QString const & headword ) -{ - QByteArray buf, buf2; - EB_Hit hits[ 2 ]; - int hit_count; - EB_Error_Code ret; - - if( headword.isEmpty() ) - return false; - - if( book.character_code == EB_CHARCODE_ISO8859_1 && codec_ISO ) - buf = codec_ISO->fromUnicode( headword ); - else - if( ( book.character_code == EB_CHARCODE_JISX0208 || book.character_code == EB_CHARCODE_JISX0208_GB2312 ) - && codec_Euc ) - buf = codec_Euc->fromUnicode( headword ); - - if( book.character_code == EB_CHARCODE_JISX0208_GB2312 && codec_GB ) - buf2 = codec_GB->fromUnicode( headword ); - - if( !buf.isEmpty() && eb_search_exactword( &book, buf.data() ) == EB_SUCCESS ) - { - ret = eb_hit_list( &book, 2, hits, &hit_count ); - if( ret == EB_SUCCESS && hit_count > 0 ) - return true; - } - - if( !buf2.isEmpty() && eb_search_exactword( &book, buf2.data() ) == EB_SUCCESS ) - { - ret = eb_hit_list( &book, 2, hits, &hit_count ); - if( ret == EB_SUCCESS && hit_count > 0 ) - return true; - } - - return false; -} - -void EpwingBook::fixHeadword( QString & headword ) -{ - if(headword.isEmpty() ) - return; - - headword.remove( QChar( 0x30FB ) ); // Used in Japan transcription - - if( isHeadwordCorrect( headword) ) - return; - - QString fixed = headword; - fixed.remove( QRegExp( "/[^/]+/", Qt::CaseSensitive ) ); - - if( isHeadwordCorrect( fixed ) ) - { - headword = fixed; - return; - } - - gd::wstring folded = Folding::applyPunctOnly( gd::toWString( fixed ) ); - fixed = gd::toQString( folded ); - - if( isHeadwordCorrect( fixed ) ) - { - headword = fixed; - return; - } - - folded = Folding::applyDiacriticsOnly( folded ); - fixed = gd::toQString( folded ); - - if( isHeadwordCorrect( fixed ) ) - { - headword = fixed; - return; - } - - folded = Folding::applyWhitespaceOnly( folded ); - fixed = gd::toQString( folded ); - - if( isHeadwordCorrect( fixed ) ) - headword = fixed; -} - -void EpwingBook::getArticle( QString & headword, QString & articleText, - int page, int offset, bool text_only) -{ - error_string.clear(); - char buffer[ TextBufferSize + 1 ]; - - EB_Position pos; - pos.page = page; - pos.offset = offset; - - currentPosition = pos; - - EB_Error_Code ret = eb_seek_text( &book, &pos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_seek_text", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - EContainer container( this, text_only ); - ssize_t length; - - prepareToRead(); - - ret = eb_read_heading( &book, &appendix, &hookSet, &container, - TextBufferSize, buffer, &length ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_heading", ret ); - throw exEbLibrary( error_string.toUtf8().data() ); - } - - headword = QString::fromUtf8( buffer, length ); - finalizeText( headword ); - - articleText = getText( pos.page, pos.offset, text_only ); -} - -const char * EpwingBook::beginDecoration( unsigned int code ) -{ - const char * str = ""; - - code = normalizeDecorationCode( code ); - - switch( code ) - { - case ITALIC: str = ""; - break; - case BOLD: str = ""; - break; - case EMPHASIS: str = ""; - break; - case SUBSCRIPT: str = ""; - break; - case SUPERSCRIPT: str = ""; - break; - default: gdWarning( "Epwing: Unknown decoration code %i", code ); - code = UNKNOWN; - break; - } - decorationStack.push( code ); - return str; -} - -const char * EpwingBook::endDecoration( unsigned int code ) -{ - const char * str = ""; - - code = normalizeDecorationCode( code ); - - if( code != ITALIC && code != BOLD && code != EMPHASIS - && code != SUBSCRIPT && code != SUPERSCRIPT ) - code = UNKNOWN; - - unsigned int storedCode = UNKNOWN; - if( !decorationStack.isEmpty() ) - storedCode = decorationStack.pop(); - - if( storedCode != code ) - { - gdWarning( "Epwing: tags mismatch detected" ); - if( storedCode == UNKNOWN ) - storedCode = code; - } - - switch( storedCode ) - { - case ITALIC: str = ""; - break; - case BOLD: str = ""; - break; - case EMPHASIS: str = ""; - break; - case SUBSCRIPT: str = ""; - break; - case SUPERSCRIPT: str = ""; - break; - case UNKNOWN: break; - } - - return str; -} - -unsigned int EpwingBook::normalizeDecorationCode( unsigned int code ) -{ - // Some non-standard codes - switch( code ) - { - case 0x1101: return BOLD; - case 0x1103: return ITALIC; - } - return code; -} - -void EpwingBook::finalizeText( QString & text ) -{ - // Close unclosed tags - while( !decorationStack.isEmpty() ) - { - unsigned int code = decorationStack.pop(); - switch( code ) - { - case ITALIC: text += ""; - break; - case BOLD: text += ""; - break; - case EMPHASIS: text += ""; - break; - case SUBSCRIPT: text += ""; - break; - case SUPERSCRIPT: text += ""; - break; - } - } - - // Replace references - - int pos = 0; - QRegExp reg1( "" ); - QRegExp reg2( "" ); - - EContainer cont( this, true ); - - char buf[ TextBufferSize + 1 ]; - - for( int x = 0; x < refCloseCount; x++ ) - { - pos = text.indexOf( reg1, pos ); - if( pos < 0 ) - break; - - EB_Position ebpos; - ebpos.page = refPages[ x ]; - ebpos.offset = refOffsets[ x ]; - - QUrl url; - url.setScheme( "gdlookup" ); - url.setHost( "localhost" ); - - // Read headword - - eb_seek_text( &book, &ebpos ); - - ssize_t length; - EB_Error_Code ret = eb_read_heading( &book, &appendix, &hookSet, &cont, - TextBufferSize, buf, &length ); - if( ret == EB_SUCCESS ) - { - QString headword = QString::fromUtf8( buf, length ); - fixHeadword( headword ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( headword ) ); - } - - QString link = ""; - - text.replace( reg1.cap(), link ); - - pos = text.indexOf( reg2, pos ); - if( pos < 0 ) - break; - - text.replace( reg2.cap(), "" ); - } -} - -void EpwingBook::prepareToRead() -{ - refPages.clear(); - refOffsets.clear(); - refOpenCount = refCloseCount = 0; -} - -QByteArray EpwingBook::handleColorImage( EB_Hook_Code code, - const unsigned int * argv ) -{ - QString name, fullName; - EB_Position pos; - - if( code == EB_HOOK_END_COLOR_GRAPHIC - || code == EB_HOOK_END_IN_COLOR_GRAPHIC ) - return QByteArray(); - - pos.page = argv[ 2 ]; - pos.offset = argv[ 3 ]; - - EB_Error_Code ret = eb_set_binary_color_graphic( &book, & pos ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_set_binary_color_graphic", ret ); - gdWarning( "Epwing image retrieve error: %s", - error_string.toUtf8().data() ); - return QByteArray(); - } - - if( cacheImagesDir.isEmpty() ) - cacheImagesDir = createCacheDir( "images" ); - - if( code == EB_HOOK_BEGIN_COLOR_BMP - || code == EB_HOOK_BEGIN_IN_COLOR_BMP ) - name = makeFName( "bmp", pos.page, pos.offset ); - else - if( code == EB_HOOK_BEGIN_COLOR_JPEG - || code == EB_HOOK_BEGIN_IN_COLOR_JPEG ) - name = makeFName( "jpg", pos.page, pos.offset ); - - if( !cacheImagesDir.isEmpty() ) - fullName = cacheImagesDir + QDir::separator() + name; - - QUrl url; - url.setScheme( "bres" ); - url.setHost( dictID ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( name ) ); - QByteArray urlStr = "

\""

"; - - if( imageCacheList.contains( name, Qt::CaseSensitive ) ) - { - // We already have this image in cache - return urlStr; - } - - if( !fullName.isEmpty() ) - { - QFile f( fullName ); - if( f.open( QFile::WriteOnly ) ) - { - QByteArray buffer; - buffer.resize( BinaryBufferSize ); - ssize_t length; - - for( ; ; ) - { - ret = eb_read_binary( &book, BinaryBufferSize, - buffer.data(), &length ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_binary", ret ); - gdWarning( "Epwing image retrieve error: %s", - error_string.toUtf8().data() ); - break; - } - - f.write( buffer.data(), length ); - - if( length < BinaryBufferSize ) - break; - } - f.close(); - - imageCacheList.append( name ); - } - } - - return urlStr; -} - -QByteArray EpwingBook::handleMonoImage( EB_Hook_Code code, - const unsigned int * argv ) -{ - QString name, fullName; - EB_Position pos; - - if( code == EB_HOOK_BEGIN_MONO_GRAPHIC ) - { - monoHeight = argv[ 2 ]; - monoWidth = argv[ 3 ]; - return QByteArray(); - } - - // Handle EB_HOOK_END_MONO_GRAPHIC hook - - pos.page = argv[ 1 ]; - pos.offset = argv[ 2 ]; - - EB_Error_Code ret = eb_set_binary_mono_graphic( &book, &pos, monoWidth, monoHeight ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_set_binary_mono_graphic", ret ); - gdWarning( "Epwing image retrieve error: %s", - error_string.toUtf8().data() ); - return QByteArray(); - } - - if( cacheImagesDir.isEmpty() ) - cacheImagesDir = createCacheDir( "images" ); - - name = makeFName( "bmp", pos.page, pos.offset ); - - if( !cacheImagesDir.isEmpty() ) - fullName = cacheImagesDir + QDir::separator() + name; - - QUrl url; - url.setScheme( "bres" ); - url.setHost( dictID ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( name ) ); - QByteArray urlStr = "\"""; - - if( imageCacheList.contains( name, Qt::CaseSensitive ) ) - { - // We already have this image in cache - return urlStr; - } - - if( !fullName.isEmpty() ) - { - QFile f( fullName ); - if( f.open( QFile::WriteOnly | QFile::Truncate ) ) - { - QByteArray buffer; - buffer.resize( BinaryBufferSize ); - ssize_t length; - - for( ; ; ) - { - ret = eb_read_binary( &book, BinaryBufferSize, - buffer.data(), &length ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_binary", ret ); - gdWarning( "Epwing image retrieve error: %s", - error_string.toUtf8().data() ); - break; - } - - f.write( buffer.data(), length ); - - if( length < BinaryBufferSize ) - break; - } - f.close(); - - imageCacheList.append( name ); - } - } - - return urlStr; -} - -QByteArray EpwingBook::handleWave( EB_Hook_Code code, const unsigned int * argv ) -{ - - if( code == EB_HOOK_END_WAVE ) - return QByteArray( "\"Play\"/" ); - - // Handle EB_HOOK_BEGIN_WAVE - - EB_Position spos, epos; - spos.page = argv[ 2 ]; - spos.offset = argv[ 3 ]; - epos.page = argv[ 4 ]; - epos.offset = argv[ 5 ]; - - eb_set_binary_wave( &book, &spos, &epos ); - - if( cacheSoundsDir.isEmpty() ) - cacheSoundsDir = createCacheDir( "sounds" ); - - QString name = makeFName( "wav", spos.page, spos.offset ); - QString fullName; - - if( !cacheSoundsDir.isEmpty() ) - fullName = cacheSoundsDir + QDir::separator() + name; - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( dictID ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( name ) ); - - string ref = string( "\"" )+ url.toEncoded().data() + "\""; - QByteArray result = addAudioLink( ref , dictID.toUtf8().data() ).c_str(); - - result += QByteArray( ""; - - if( soundsCacheList.contains( name, Qt::CaseSensitive ) ) - { - // We already have this sound in cache - return result; - } - - if( !fullName.isEmpty() ) - { - QFile f( fullName ); - if( f.open( QFile::WriteOnly | QFile::Truncate ) ) - { - QByteArray buffer; - buffer.resize( BinaryBufferSize ); - ssize_t length; - - for( ; ; ) - { - EB_Error_Code ret = eb_read_binary( &book, BinaryBufferSize, - buffer.data(), &length ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_binary", ret ); - gdWarning( "Epwing sound retrieve error: %s", - error_string.toUtf8().data() ); - break; - } - - f.write( buffer.data(), length ); - - if( length < BinaryBufferSize ) - break; - } - f.close(); - - soundsCacheList.append( name ); - } - } - return result; -} - -QByteArray EpwingBook::handleMpeg( EB_Hook_Code code, const unsigned int * argv ) -{ - - if( code == EB_HOOK_END_MPEG ) - return QByteArray( "" ); - - // Handle EB_HOOK_BEGIN_MPEG - - char file[ EB_MAX_PATH_LENGTH + 1 ]; - - unsigned int *p = (unsigned int *)( argv + 2 ); - eb_compose_movie_path_name( &book, p, file ); - - QString name = QString::fromLocal8Bit( file ); - name = QFileInfo( name ).fileName(); - name += ".mpg"; - - eb_set_binary_mpeg( &book, argv + 2 ); - - if( cacheMoviesDir.isEmpty() ) - cacheMoviesDir = createCacheDir( "movies" ); - - QString fullName; - - if( !cacheMoviesDir.isEmpty() ) - fullName = cacheMoviesDir + QDir::separator() + name; - - QUrl url; - url.setScheme( "gdvideo" ); - url.setHost( dictID ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( name ) ); - - QByteArray result = QByteArray( ""; - - if( moviesCacheList.contains( name, Qt::CaseSensitive ) ) - { - // We already have this movie in cache - return result; - } - - if( !fullName.isEmpty() ) - { - QFile f( fullName ); - if( f.open( QFile::WriteOnly | QFile::Truncate ) ) - { - QByteArray buffer; - buffer.resize( BinaryBufferSize ); - ssize_t length; - - for( ; ; ) - { - EB_Error_Code ret = eb_read_binary( &book, BinaryBufferSize, - buffer.data(), &length ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_read_binary", ret ); - gdWarning( "Epwing movie retrieve error: %s", - error_string.toUtf8().data() ); - break; - } - - f.write( buffer.data(), length ); - - if( length < BinaryBufferSize ) - break; - } - f.close(); - - moviesCacheList.append( name ); - } - } - return result; -} - -QByteArray EpwingBook::codeToUnicode( QString const & code ) -{ - QString subst; - - if( !customFontsMap.isEmpty() && customFontsMap.contains( code ) ) - { - subst = QTextDocumentFragment::fromHtml( customFontsMap[ code ] ) - .toPlainText(); - return subst.toUtf8(); - } - - return EpwingCharmap::instance().mapToUtf8( code ); -} - -QByteArray EpwingBook::handleNarrowFont( const unsigned int * argv, - bool text_only ) -{ - QString fcode = "n" + QString::number( *argv, 16 ); - - // Check substitution list - - QByteArray b = codeToUnicode( fcode ); - if( !b.isEmpty() || text_only ) - return b; - - // Find font image in book - - if( !eb_have_narrow_font( &book ) ) - return QByteArray( "?" ); - - QString fname = fcode + ".png"; - - if( cacheFontsDir.isEmpty() ) - cacheFontsDir = createCacheDir( "fonts" ); - - QString fullName = cacheFontsDir + QDir::separator() + fname; - - QUrl url; - url.setScheme( "file" ); - url.setHost( "/"); - url.setPath( Qt4x5::Url::ensureLeadingSlash( fullName ) ); - - QByteArray link = ""; - - if( fontsCacheList.contains( fname, Qt::CaseSensitive ) ) - { - // We already have this image in cache - return link; - } - - if( !cacheFontsDir.isEmpty() ) - { - char bitmap[EB_SIZE_NARROW_FONT_16]; - EB_Error_Code ret = eb_narrow_font_character_bitmap( &book, *argv, bitmap ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_narrow_font_character_bitmap", ret ); - gdWarning( "Epwing: Font retrieve error: %s", error_string.toUtf8().data() ); - return QByteArray( "?" ); - } - - size_t nlen; - char buff[EB_SIZE_NARROW_FONT_16_PNG]; - ret = eb_bitmap_to_png( bitmap, 8, 16, buff, &nlen ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_bitmap_to_png", ret ); - gdWarning( "Epwing: Font retrieve error: %s", error_string.toUtf8().data() ); - return QByteArray( "?" ); - } - - - QFile f( fullName ); - if( f.open( QFile::WriteOnly | QFile::Truncate ) ) - { - f.write( buff, nlen ); - f.close(); - fontsCacheList.append( fname ); - } - } - - return link; -} - -QByteArray EpwingBook::handleWideFont( const unsigned int * argv, - bool text_only ) -{ - QString fcode = "w" + QString::number( *argv, 16 ); - - // Check substitution list - - QByteArray b = codeToUnicode( fcode ); - if( !b.isEmpty() || text_only ) - return b; - - // Find font image in book - - if( !eb_have_wide_font( &book ) ) - return QByteArray( "?" ); - - QString fname = fcode + ".png"; - - if( cacheFontsDir.isEmpty() ) - cacheFontsDir = createCacheDir( "fonts" ); - - QString fullName = cacheFontsDir + QDir::separator() + fname; - - QUrl url; - url.setScheme( "file" ); - url.setHost( "/"); - url.setPath( Qt4x5::Url::ensureLeadingSlash( fullName ) ); - - QByteArray link = ""; - - if( fontsCacheList.contains( fname, Qt::CaseSensitive ) ) - { - // We already have this image in cache - return link; - } - - if( !cacheFontsDir.isEmpty() ) - { - char bitmap[EB_SIZE_WIDE_FONT_16]; - EB_Error_Code ret = eb_wide_font_character_bitmap( &book, *argv, bitmap ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_wide_font_character_bitmap", ret ); - gdWarning( "Epwing: Font retrieve error: %s", error_string.toUtf8().data() ); - return QByteArray( "?" ); - } - - size_t wlen; - char buff[EB_SIZE_WIDE_FONT_16_PNG]; - ret = eb_bitmap_to_png( bitmap, 16, 16, buff, &wlen ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_bitmap_to_png", ret ); - gdWarning( "Epwing: Font retrieve error: %s", error_string.toUtf8().data() ); - return QByteArray( "?" ); - } - - QFile f( fullName ); - if( f.open( QFile::WriteOnly | QFile::Truncate ) ) - { - f.write( buff, wlen ); - f.close(); - fontsCacheList.append( fname ); - } - } - - return link; -} - -QByteArray EpwingBook::handleReference( EB_Hook_Code code, const unsigned int * argv ) -{ - if( code == EB_HOOK_BEGIN_REFERENCE ) - { - if( refOpenCount > refCloseCount ) - return QByteArray(); - - QString str; - str.sprintf( "", refOpenCount ); - refOpenCount += 1; - return str.toUtf8(); - } - - // EB_HOOK_END_REFERENCE - - if( refCloseCount >= refOpenCount ) - return QByteArray(); - - refPages.append( argv[ 1 ] ); - refOffsets.append( argv[ 2 ] ); - - QString str; - str.sprintf( "", refCloseCount ); - refCloseCount += 1; - - return str.toUtf8(); -} - -bool EpwingBook::getMatches( QString word, QVector< QString > & matches ) -{ - QByteArray bword, bword2; - EB_Hit hits[ HitsBufferSize ]; - int hitCount = 0; - - if( book.character_code == EB_CHARCODE_ISO8859_1 && codec_ISO ) - bword = codec_ISO->fromUnicode( word ); - else - if( ( book.character_code == EB_CHARCODE_JISX0208 || book.character_code == EB_CHARCODE_JISX0208_GB2312 ) - && codec_Euc ) - bword = codec_Euc->fromUnicode( word ); - - if( book.character_code == EB_CHARCODE_JISX0208_GB2312 && codec_GB ) - bword2 = codec_GB->fromUnicode( word ); - - if( !bword.isEmpty() ) - { - EB_Error_Code ret = eb_search_word( &book, bword.data() ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_search_word", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - - ret = eb_hit_list( &book, 10, hits, &hitCount ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_hit_list", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - } - - if( hitCount == 0 && !bword2.isEmpty() ) - { - EB_Error_Code ret = eb_search_word( &book, bword2.data() ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_search_word", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - - ret = eb_hit_list( &book, 10, hits, &hitCount ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_hit_list", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - } - - QVector< int > pages, offsets; - - for( int i = 0; i < hitCount; i++ ) - { - bool same_article = false; - for( int n = 0; n < pages.size(); n++ ) - { - if( pages.at( n ) == hits[ i ].text.page - && offsets.at( n ) == hits[ i ].text.offset ) - { - same_article = true; - continue; - } - } - if( !same_article ) - { - pages.push_back( hits[ i ].text.page ); - offsets.push_back( hits[ i ].text.offset ); - - QString headword; - if( readHeadword( hits[ i ].heading, headword, true ) ) - { - if( isHeadwordCorrect( headword ) ) - matches.push_back( headword ); - } - } - } - return true; -} - -bool EpwingBook::getArticlePos( QString word, QVector< int > & pages, QVector< int > & offsets ) -{ - QByteArray bword, bword2; - EB_Hit hits[ HitsBufferSize ]; - int hitCount = 0; - - if( book.character_code == EB_CHARCODE_ISO8859_1 && codec_ISO ) - bword = codec_ISO->fromUnicode( word ); - else - if( ( book.character_code == EB_CHARCODE_JISX0208 || book.character_code == EB_CHARCODE_JISX0208_GB2312 ) - && codec_Euc ) - bword = codec_Euc->fromUnicode( word ); - - if( book.character_code == EB_CHARCODE_JISX0208_GB2312 && codec_GB ) - bword2 = codec_GB->fromUnicode( word ); - - if( !bword.isEmpty() ) - { - EB_Error_Code ret = eb_search_exactword( &book, bword.data() ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_search_word", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - - ret = eb_hit_list( &book, HitsBufferSize, hits, &hitCount ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_hit_list", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - } - - if( hitCount == 0 && !bword2.isEmpty() ) - { - EB_Error_Code ret = eb_search_exactword( &book, bword2.data() ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_search_word", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - - ret = eb_hit_list( &book, HitsBufferSize, hits, &hitCount ); - if( ret != EB_SUCCESS ) - { - setErrorString( "eb_hit_list", ret ); - gdWarning( "Epwing word search error: %s", - error_string.toUtf8().data() ); - return false; - } - } - - for( int i = 0; i < hitCount; i++ ) - { - bool same_article = false; - for( int n = 0; n < pages.size(); n++ ) - { - if( pages.at( n ) == hits[ i ].text.page - && offsets.at( n ) == hits[ i ].text.offset ) - { - same_article = true; - continue; - } - } - if( !same_article ) - { - pages.push_back( hits[ i ].text.page ); - offsets.push_back( hits[ i ].text.offset ); - } - } - - return !pages.empty(); -} - -Mutex EpwingBook::libMutex; - -} // namespace Book - -} // namespace Epwing diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_book.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_book.hh deleted file mode 100644 index d7be2d3cc5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_book.hh +++ /dev/null @@ -1,243 +0,0 @@ -#ifndef __EPWING_BOOK_HH_INCLUDED__ -#define __EPWING_BOOK_HH_INCLUDED__ - -#include - -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) -#define _FILE_OFFSET_BITS 64 -#endif - -#include "dictionary.hh" -#include "ex.hh" -#include "mutex.hh" - -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#include - -namespace Epwing { - -DEF_EX_STR( exEbLibrary, "EB library report error", Dictionary::Ex ) -DEF_EX_STR( exEpwing, "Epwing parsing error:", Dictionary::Ex ) - -void initialize(); -void finalize(); - -namespace Book { - -using std::vector; -using std::string; - -enum { - TextBufferSize = 4095, - BinaryBufferSize = 50000, - TextSizeLimit = 2800000 -}; - -struct EpwingHeadword -{ - QString headword; - quint32 page; - quint32 offset; -}; - -class EpwingBook -{ - typedef QPair< int, int > EWPos; - - void setErrorString( QString const & func, EB_Error_Code code ); - - EB_Book book; - EB_Appendix appendix; - EB_Hookset hookSet, refHookSet; - EB_Subbook_Code subBookList[ EB_MAX_SUBBOOKS ]; - EB_Subbook_Code subAppendixList[ EB_MAX_SUBBOOKS ]; - EB_Position currentPosition, indexHeadwordsPosition; - int subBookCount, subAppendixCount; - int currentSubBook; - QString error_string; - QString mainCacheDir, rootDir; - QString cacheImagesDir, cacheSoundsDir, cacheMoviesDir, cacheFontsDir; - QString dictID; - QTextCodec * codec_ISO, * codec_GB, * codec_Euc; - QStack< unsigned int > decorationStack; - int monoWidth, monoHeight; - QStringList imageCacheList, soundsCacheList, moviesCacheList, fontsCacheList; - QMap< QString, QString > baseFontsMap, customFontsMap; - QVector< int > refPages, refOffsets; - QMap< QString, EWPos > allHeadwordPositions; - QVector< EWPos > LinksQueue; - int refOpenCount, refCloseCount; - static Mutex libMutex; - - QString createCacheDir( QString const & dir); - - // Close unslosed tags - void finalizeText( QString & text ); - - // Reset internal variables - void prepareToRead(); - - // Retrieve references from article - void getReferencesFromText( int page, int offset ); - - // Move to next article - EB_Error_Code forwardText( EB_Position & startPos ); - - // Retrieve article text from dictionary - QString getText( int page, int offset, bool text_only ); - - unsigned int normalizeDecorationCode( unsigned int code ); - - QByteArray codeToUnicode( QString const & code ); - -public: - - enum DecorationCodes { - UNKNOWN = 0, - ITALIC = 1, - BOLD = 3, - EMPHASIS = 4, - SUBSCRIPT = 5, - SUPERSCRIPT = 6 - }; - - EpwingBook(); - ~EpwingBook(); - - Mutex & getLibMutex() - { return libMutex; } - - QString const &errorString() const - { return error_string; } - - QTextCodec * codecISO() - { return codec_ISO; } - - QTextCodec * codecGB() - { return codec_GB; } - - QTextCodec *codecEuc() - { return codec_Euc; } - - int getSubBookCount() - { return subBookCount; } - - void setDictID( const string & id ) - { dictID = QString::fromUtf8( id.c_str() ); } - - QString const & getImagesCacheDir() - { return cacheImagesDir; } - - QString const & getSoundsCacheDir() - { return cacheSoundsDir; } - - QString const & getMoviesCacheDir() - { return cacheMoviesDir; } - - void clearBuffers() - { - allHeadwordPositions.clear(); - LinksQueue.clear(); - } - - - // Make name for resource - QString makeFName( QString const & ext, int page, int offset ) const; - - // Store all files in Epwing folder - static void collectFilenames( QString const & directory, - vector< string > & files ); - - // Initialize dictionary book - int setBook( string const & directory ); - - // Set subbook inside dictionary - bool setSubBook( int book_nom ); - - void setCacheDirectory( QString const & cacheDir ); - - QString getCurrentSubBookDirectory(); - - QString copyright(); - QString title(); - - // Seek to first article - void getFirstHeadword( EpwingHeadword & head ); - - // Find next headword and article position - bool getNextHeadword( EpwingHeadword & head ); - - bool readHeadword( EB_Position const & pos, - QString & headword, - bool text_only ); - - bool isHeadwordCorrect( QString const & headword ); - - void fixHeadword( QString & headword ); - - // Retrieve article from dictionary - void getArticle( QString & headword, QString & articleText, - int page, int offset, bool text_only ); - - const char * beginDecoration( unsigned int code ); - const char * endDecoration( unsigned int code ); - - QByteArray handleColorImage( EB_Hook_Code code, - const unsigned int * argv ); - - QByteArray handleMonoImage( EB_Hook_Code code, - const unsigned int * argv ); - - QByteArray handleWave( EB_Hook_Code code, - const unsigned int * argv ); - - QByteArray handleMpeg( EB_Hook_Code code, - const unsigned int * argv ); - - QByteArray handleNarrowFont( const unsigned int * argv, - bool text_only ); - - QByteArray handleWideFont( const unsigned int * argv, - bool text_only ); - - QByteArray handleReference( EB_Hook_Code code, - const unsigned int * argv ); - - bool getMatches( QString word, QVector< QString > & matches ); - - bool getArticlePos( QString word, QVector< int > & pages, QVector< int > & offsets ); -}; - -struct EContainer -{ - EpwingBook * book; - bool textOnly; - - EContainer( EpwingBook * book_ ) : - book( book_ ), - textOnly( false ) - {} - - EContainer( EpwingBook * book_, bool text_only ) : - book( book_ ), - textOnly( text_only ) - {} -}; - - -} - -} - - -#endif // __EPWING_BOOK_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_charmap.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_charmap.cc deleted file mode 100644 index 78994a965e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_charmap.cc +++ /dev/null @@ -1,97 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "epwing_charmap.hh" - -namespace Epwing { - -EpwingCharmap & EpwingCharmap::instance() -{ - static EpwingCharmap ec; - return ec; -} - -QByteArray EpwingCharmap::mapToUtf8( QString const & code ) -{ - if( charMap.contains( code ) ) - return QString( charMap[ code ] ).toUtf8(); - - return QByteArray(); -} - -void EpwingCharmap::addEntry( QString const & code, QChar ch ) -{ - charMap[ code ] = ch; -} - -EpwingCharmap::EpwingCharmap() -{ - addEntry( "na121", 0x00E1 ); - addEntry( "na122", 0x00E0 ); - addEntry( "na12a", 0x01DD ); - addEntry( "na12e", 0x00E9 ); - addEntry( "na12f", 0x00E8 ); - addEntry( "na134", 0x00ED ); - addEntry( "na135", 0x00EC ); - addEntry( "na136", 0x00F3 ); - addEntry( "na137", 0x00F2 ); - addEntry( "na13e", 0x00FA ); - addEntry( "na13f", 0x00F9 ); - addEntry( "na143", 0x00E6 ); - addEntry( "na144", 0x01FD ); - addEntry( "na149", 0x0067 ); - addEntry( "na157", 0x00E9 ); - addEntry( "na16a", 0x00C1 ); - addEntry( "na16b", 0x00C0 ); - addEntry( "na16d", 0x00C9 ); - addEntry( "na171", 0x00FD ); - addEntry( "na172", 0x1EF3 ); - addEntry( "na17d", 0x00DA ); - addEntry( "na235", 0x002F ); - addEntry( "na240", 0x0154 ); - addEntry( "na244", 0x0179 ); - addEntry( "na627", 0x00A7 ); - addEntry( "na62b", 0x00AB ); - addEntry( "na637", 0x30FB ); - addEntry( "na63b", 0x00BB ); - addEntry( "na646", 0x00C6 ); - addEntry( "na647", 0x00C7 ); - addEntry( "na649", 0x00C9 ); - addEntry( "na660", 0x00E0 ); - addEntry( "na662", 0x00E2 ); - addEntry( "na664", 0x00E4 ); - addEntry( "na667", 0x00E7 ); - addEntry( "na668", 0x00E8 ); - addEntry( "na669", 0x00E9 ); - addEntry( "na66a", 0x00EA ); - addEntry( "na66b", 0x00EB ); - addEntry( "na66e", 0x00EE ); - addEntry( "na66f", 0x00EF ); - addEntry( "na671", 0x00F1 ); - addEntry( "na674", 0x00F4 ); - addEntry( "na676", 0x00F6 ); - addEntry( "na67b", 0x00FB ); - addEntry( "na67c", 0x00FC ); - addEntry( "na722", 0x0152 ); - addEntry( "na723", 0x0153 ); - addEntry( "na73e", 0x0101 ); - addEntry( "na73f", 0x0103 ); - addEntry( "na740", 0x0113 ); - addEntry( "na741", 0x0115 ); - addEntry( "na742", 0x012B ); - addEntry( "na743", 0x012D ); - addEntry( "na744", 0x014F ); - addEntry( "na746", 0x016B ); - addEntry( "na747", 0x01D4 ); - addEntry( "na74b", 0x0227 ); - addEntry( "na753", 0x1EBD ); - addEntry( "na823", 0x2026 ); - addEntry( "wa424", 0x00E6 ); - addEntry( "wa460", 0x2460 ); - addEntry( "wa461", 0x2461 ); - addEntry( "wa462", 0x2462 ); - addEntry( "wa463", 0x2463 ); - addEntry( "wa464", 0x2464 ); -} - -} // namespace Epwing diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_charmap.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_charmap.hh deleted file mode 100644 index 37eed5aa45..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/epwing_charmap.hh +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef __EPWING_CHARMAP_HH_INCLUDED_ -#define __EPWING_CHARMAP_HH_INCLUDED_ - -#include -#include -#include - -namespace Epwing { - -class EpwingCharmap -{ -public: - - /// The class is a singleton. - static EpwingCharmap & instance(); - - /// Map Epwing extra char to Utf-8 - QByteArray mapToUtf8( QString const & code ); - -private: - EpwingCharmap(); - - void addEntry( QString const & code, QChar ch ); - - QMap< QString, QChar > charMap; -}; - -} - -#endif // __EPWING_CHARMAP_HH_INCLUDED_ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ex.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ex.hh deleted file mode 100644 index cc76846a28..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ex.hh +++ /dev/null @@ -1,37 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __EX_HH_INCLUDED__ -#define __EX_HH_INCLUDED__ - -#include - -/// A way to declare an exception class fast -/// Do like this: -/// DEF_EX( exErrorInFoo, "An error in foo encountered", std::exception ) -/// DEF_EX( exFooNotFound, "Foo was not found", exErrorInFoo ) - -#define DEF_EX( exName, exDescription, exParent ) \ -class exName: public exParent { \ -public: \ -virtual const char * what() const throw() { return (exDescription); } \ -virtual ~exName() throw() {} }; - -/// Same as DEF_EX, but takes a runtime string argument, which gets concatenated -/// with the description. -/// -/// DEF_EX_STR( exCantOpen, "can't open file", std::exception ) -/// ... -/// throw exCantOpen( "example.txt" ); -/// -/// what() would return "can't open file example.txt" - -#define DEF_EX_STR( exName, exDescription, exParent ) \ -class exName: public exParent { \ -std::string value; \ -public: \ - exName( std::string const & value_ ): value( std::string( exDescription ) + " " + value_ ) {} \ -virtual const char * what() const throw() { return value.c_str(); } \ -virtual ~exName() throw() {} }; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/externalviewer.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/externalviewer.cc deleted file mode 100644 index 5a56f0a70c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/externalviewer.cc +++ /dev/null @@ -1,55 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include "externalviewer.hh" -#include "parsecmdline.hh" -#include "gddebug.hh" - -using std::vector; - -ExternalViewer::ExternalViewer( QObject * parent, vector< char > const & data, - QString const & extension, - QString const & viewerCmdLine_ ) - throw( exCantCreateTempFile ): - QObject( parent ), - tempFile( QDir::temp().filePath( QString( "gd-XXXXXXXX." ) + extension ) ), - viewer( this ), - viewerCmdLine( viewerCmdLine_ ) -{ - if ( !tempFile.open() || (size_t) tempFile.write( &data.front(), data.size() ) != data.size() ) - throw exCantCreateTempFile(); - - tempFileName = tempFile.fileName(); // For some reason it loses it after it was closed() - -#ifdef Q_OS_WIN32 - // Issue #239 - tempFileName = QDir::toNativeSeparators(tempFileName); -#endif - - tempFile.close(); - - GD_DPRINTF( "%s\n", tempFile.fileName().toLocal8Bit().data() ); -} - -void ExternalViewer::start() throw( exCantRunViewer ) -{ - connect( &viewer, SIGNAL( finished( int, QProcess::ExitStatus ) ), - this, SLOT( deleteLater() ) ); - connect( &viewer, SIGNAL( error( QProcess::ProcessError ) ), - this, SLOT( deleteLater() ) ); - - QStringList args = parseCommandLine( viewerCmdLine ); - - if ( !args.isEmpty() ) - { - QString program = args.first(); - args.pop_front(); - args.push_back( tempFileName ); - viewer.start( program, args, QIODevice::NotOpen ); - if ( !viewer.waitForStarted() ) - throw exCantRunViewer( viewerCmdLine.toUtf8().data() ); - } - else - throw exCantRunViewer( tr( "the viewer program name is empty" ).toUtf8().data() ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/externalviewer.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/externalviewer.hh deleted file mode 100644 index 832ed503bb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/externalviewer.hh +++ /dev/null @@ -1,39 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __EXTERNALVIEWER_HH_INCLUDED__ -#define __EXTERNALVIEWER_HH_INCLUDED__ - -#include -#include -#include -#include -#include "ex.hh" - -/// An external viewer, opens resources in other programs -class ExternalViewer: public QObject -{ - Q_OBJECT - - QTemporaryFile tempFile; - QProcess viewer; - QString viewerCmdLine; - QString tempFileName; - -public: - - DEF_EX( Ex, "External viewer exception", std::exception ) - DEF_EX( exCantCreateTempFile, "Couldn't create temporary file.", Ex ) - DEF_EX_STR( exCantRunViewer, "Couldn't run external viewer:", Ex ) - - ExternalViewer( QObject * parent, std::vector< char > const & data, - QString const & extension, QString const & viewerCmdLine ) - throw( exCantCreateTempFile ); - - // Once this is called, the object will be deleted when it's done, even if - // the function throws. - void start() throw( exCantRunViewer ); -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/extlineedit.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/extlineedit.cc deleted file mode 100644 index 89834d59a7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/extlineedit.cc +++ /dev/null @@ -1,197 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "extlineedit.hh" - -#include - -#if QT_VERSION >= 0x040600 -#include -#endif - -ExtLineEdit::ExtLineEdit(QWidget *parent) : - QLineEdit(parent) -{ - - for (int i = 0; i < 2; ++i) { - iconButtons[i] = new IconButton(this); - iconButtons[i]->installEventFilter(this); - iconButtons[i]->hide(); - iconButtons[i]->setAutoHide(false); - iconEnabled[i] = false; - } - - ensurePolished(); - updateMargins(); - - connect(iconButtons[Left], SIGNAL(clicked()), this, SLOT(iconClicked())); - connect(iconButtons[Right], SIGNAL(clicked()), this, SLOT(iconClicked())); - - connect(this, SIGNAL( textChanged( QString ) ), this, SLOT( updateButtons( QString ) ) ); -} - -ExtLineEdit::~ExtLineEdit() -{ -} - -void ExtLineEdit::setButtonVisible(Side side, bool visible) -{ - iconButtons[side]->setVisible(visible); - iconEnabled[side] = visible; - updateMargins(); -} - -bool ExtLineEdit::isButtonVisible(Side side) const -{ - return iconEnabled[side]; -} - -void ExtLineEdit::setButtonAutoHide(Side side, bool autohide) -{ - iconButtons[side]->setAutoHide(autohide); - - if (autohide) - { - iconButtons[side]->setOpacity( text().isEmpty() ? 0.0 : 1.0 ); - } - else - { - iconButtons[side]->setOpacity( 1.0 ); - } -} - -void ExtLineEdit::updateButtons(QString text) -{ - if ( oldText.isEmpty() || text.isEmpty() ) { - for (int i = 0; i < 2; ++i) { - if ( iconButtons[i]->isAutoHide() ) - { - iconButtons[i]->animate( !text.isEmpty() ); - } - } - oldText = text; - } -} - -void ExtLineEdit::iconClicked() -{ - IconButton * button = qobject_cast( sender() ); - int index = -1; - for (int i = 0; i < 2; ++i) - if (iconButtons[i] == button) - index = i; - - if (index == -1) - return; - - if (index == Left) - emit leftButtonClicked(); - else if (index == Right) - emit rightButtonClicked(); -} - -void ExtLineEdit::updateMargins() -{ - bool leftToRight = (layoutDirection() == Qt::LeftToRight); - Side realLeft = (leftToRight ? Left : Right); - Side realRight = (leftToRight ? Right : Left); - - int leftMargin = iconButtons[realLeft]->pixmap().width() + 8; - int rightMargin = iconButtons[realRight]->pixmap().width() + 8; - - setTextMargins( - (iconEnabled[realLeft] ? leftMargin : 0), 1, - (iconEnabled[realRight] ? rightMargin : 0), 1); -} - -void ExtLineEdit::updateButtonPositions() -{ - QRect contentRect = rect(); - for (int i = 0; i < 2; ++i) { - Side iconPos = (Side)i; - if (layoutDirection() == Qt::RightToLeft) - iconPos = (iconPos == Left ? Right : Left); - - if (iconPos == ExtLineEdit::Right) { - int right; - getTextMargins(0, 0, &right, 0); - const int iconoffset = right + 4; - iconButtons[i]->setGeometry(contentRect.adjusted(width() - iconoffset, 0, 0, 0)); - } else { - int left; - getTextMargins(&left, 0, 0, 0); - const int iconoffset = left + 4; - iconButtons[i]->setGeometry(contentRect.adjusted(0, 0, -width() + iconoffset, 0)); - } - } -} - -void ExtLineEdit::resizeEvent(QResizeEvent *) -{ - updateButtonPositions(); -} - -void ExtLineEdit::setButtonPixmap(Side side, const QPixmap &buttonPixmap) -{ - iconButtons[side]->setPixmap(buttonPixmap); - updateMargins(); - updateButtonPositions(); - update(); -} - -QPixmap ExtLineEdit::buttonPixmap(Side side) const -{ - return pixmaps[side]; -} - -void ExtLineEdit::setButtonToolTip(Side side, const QString &tip) -{ - iconButtons[side]->setToolTip(tip); -} - -void ExtLineEdit::setButtonFocusPolicy(Side side, Qt::FocusPolicy policy) -{ - iconButtons[side]->setFocusPolicy(policy); -} - -IconButton::IconButton(QWidget *parent) - : QAbstractButton(parent) -{ - setCursor(Qt::ArrowCursor); - setFocusPolicy(Qt::NoFocus); - setFocusProxy(parent); -} - -void IconButton::paintEvent(QPaintEvent *) -{ - QPainter painter(this); - - QRect pixmapRect = QRect(0, 0, m_pixmap.width(), m_pixmap.height()); - pixmapRect.moveCenter(rect().center()); - - if (m_autohide) - { - painter.setOpacity(m_opacity); - } - - painter.drawPixmap(pixmapRect, m_pixmap); -} - -void IconButton::animate(bool visible) -{ -#if QT_VERSION >= 0x040600 - QPropertyAnimation *animation = new QPropertyAnimation(this, "opacity"); - animation->setDuration(250); - if (visible) - { - animation->setEndValue(1.0); - } - else - { - animation->setEndValue(0.0); - } - animation->start(QAbstractAnimation::DeleteWhenStopped); -#else - setOpacity(visible ? 1.0 : 0.0); -#endif -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/extlineedit.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/extlineedit.hh deleted file mode 100644 index 15adfdff91..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/extlineedit.hh +++ /dev/null @@ -1,78 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef EXTLINEEDIT_H -#define EXTLINEEDIT_H - -#include -#include - -class IconButton: public QAbstractButton -{ - Q_OBJECT - Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap) - Q_PROPERTY(float opacity READ opacity WRITE setOpacity) - -public: - explicit IconButton(QWidget * parent = 0); - void paintEvent(QPaintEvent * event); - void animate(bool visible); - - void setPixmap(const QPixmap & pixmap) { m_pixmap = pixmap; update(); } - QPixmap pixmap() const { return m_pixmap; } - - void setAutoHide(bool autohide) { m_autohide = autohide; update(); } - bool isAutoHide() const { return m_autohide; } - - float opacity() { return m_opacity; } - void setOpacity(float opacity) { m_opacity = opacity; update(); } - -private: - QPixmap m_pixmap; - bool m_autohide; - float m_opacity; -}; - -class ExtLineEdit : public QLineEdit -{ - Q_OBJECT - Q_ENUMS(Side) - -public: - enum Side { Left = 0, Right = 1 }; - - explicit ExtLineEdit(QWidget * parent = 0); - ~ExtLineEdit(); - - QPixmap buttonPixmap(Side side) const; - void setButtonPixmap(Side side, const QPixmap &pixmap); - - void setButtonVisible(Side side, bool visible); - bool isButtonVisible(Side side) const; - - void setButtonToolTip(Side side, const QString &); - void setButtonFocusPolicy(Side side, Qt::FocusPolicy policy); - - void setButtonAutoHide(Side side, bool autohide); - -signals: - void leftButtonClicked(); - void rightButtonClicked(); - -private slots: - void iconClicked(); - void updateButtons(QString text); - -protected: - virtual void resizeEvent( QResizeEvent * e ); - -private: - void updateMargins(); - void updateButtonPositions(); - QPixmap pixmaps[2]; - IconButton * iconButtons[2]; - bool iconEnabled[2]; - QString oldText; -}; - -#endif // EXTLINEEDIT_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ffmpegaudio.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ffmpegaudio.cc deleted file mode 100644 index 04c35d85e3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ffmpegaudio.cc +++ /dev/null @@ -1,592 +0,0 @@ -#ifndef DISABLE_INTERNAL_PLAYER - -#include "ffmpegaudio.hh" - -#include -#include - -#ifndef INT64_C -#define INT64_C(c) (c ## LL) -#endif - -#ifndef UINT64_C -#define UINT64_C(c) (c ## ULL) -#endif - -#include - -extern "C" { -#include -#include -#include -} - -#include -#include -#include - -#include - -#include "qt4x5.hh" - -using std::vector; - -namespace Ffmpeg -{ - -QMutex DecoderThread::deviceMutex_; - -static inline QString avErrorString( int errnum ) -{ - char buf[64]; - av_strerror( errnum, buf, 64 ); - return QString::fromLatin1( buf ); -} - -AudioPlayer & AudioPlayer::instance() -{ - static AudioPlayer a; - return a; -} - -AudioPlayer::AudioPlayer() -{ - av_register_all(); - ao_initialize(); -} - -AudioPlayer::~AudioPlayer() -{ - emit cancelPlaying( true ); - ao_shutdown(); -} - -void AudioPlayer::playMemory( const void * ptr, int size ) -{ - emit cancelPlaying( false ); - QByteArray audioData( ( char * )ptr, size ); - DecoderThread * thread = new DecoderThread( audioData, this ); - - connect( thread, SIGNAL( error( QString ) ), this, SIGNAL( error( QString ) ) ); - connect( this, SIGNAL( cancelPlaying( bool ) ), thread, SLOT( cancel( bool ) ), Qt::DirectConnection ); - connect( thread, SIGNAL( finished() ), thread, SLOT( deleteLater() ) ); - - thread->start(); -} - -void AudioPlayer::stop() -{ - emit cancelPlaying( false ); -} - -struct DecoderContext -{ - enum - { - kBufferSize = 32768 - }; - - static QMutex deviceMutex_; - QAtomicInt & isCancelled_; - QByteArray audioData_; - QDataStream audioDataStream_; - AVFormatContext * formatContext_; - AVCodecContext * codecContext_; - AVIOContext * avioContext_; - AVStream * audioStream_; - ao_device * aoDevice_; - bool avformatOpened_; - - DecoderContext( QByteArray const & audioData, QAtomicInt & isCancelled ); - ~DecoderContext(); - - bool openCodec( QString & errorString ); - void closeCodec(); - bool openOutputDevice( QString & errorString ); - void closeOutputDevice(); - bool play( QString & errorString ); - bool normalizeAudio( AVFrame * frame, vector & samples ); - void playFrame( AVFrame * frame ); -}; - -DecoderContext::DecoderContext( QByteArray const & audioData, QAtomicInt & isCancelled ): - isCancelled_( isCancelled ), - audioData_( audioData ), - audioDataStream_( audioData_ ), - formatContext_( NULL ), - codecContext_( NULL ), - avioContext_( NULL ), - audioStream_( NULL ), - aoDevice_( NULL ), - avformatOpened_( false ) -{ -} - -DecoderContext::~DecoderContext() -{ - closeOutputDevice(); - closeCodec(); -} - -static int readAudioData( void * opaque, unsigned char * buffer, int bufferSize ) -{ - QDataStream * pStream = ( QDataStream * )opaque; - return pStream->readRawData( ( char * )buffer, bufferSize ); -} - -bool DecoderContext::openCodec( QString & errorString ) -{ - formatContext_ = avformat_alloc_context(); - if ( !formatContext_ ) - { - errorString = QObject::tr( "avformat_alloc_context() failed." ); - return false; - } - - unsigned char * avioBuffer = ( unsigned char * )av_malloc( kBufferSize + FF_INPUT_BUFFER_PADDING_SIZE ); - if ( !avioBuffer ) - { - errorString = QObject::tr( "av_malloc() failed." ); - return false; - } - - // Don't free buffer allocated here (if succeeded), it will be cleaned up automatically. - avioContext_ = avio_alloc_context( avioBuffer, kBufferSize, 0, &audioDataStream_, readAudioData, NULL, NULL ); - if ( !avioContext_ ) - { - av_free( avioBuffer ); - errorString = QObject::tr( "avio_alloc_context() failed." ); - return false; - } - - avioContext_->seekable = 0; - avioContext_->write_flag = 0; - - // If pb not set, avformat_open_input() simply crash. - formatContext_->pb = avioContext_; - formatContext_->flags |= AVFMT_FLAG_CUSTOM_IO; - - int ret = 0; - avformatOpened_ = true; - - ret = avformat_open_input( &formatContext_, "_STREAM_", NULL, NULL ); - if ( ret < 0 ) - { - errorString = QObject::tr( "avformat_open_input() failed: %1." ).arg( avErrorString( ret ) ); - return false; - } - - ret = avformat_find_stream_info( formatContext_, NULL ); - if ( ret < 0 ) - { - errorString = QObject::tr( "avformat_find_stream_info() failed: %1." ).arg( avErrorString( ret ) ); - return false; - } - - // Find audio stream, use the first audio stream if available - for ( unsigned i = 0; i < formatContext_->nb_streams; i++ ) - { - if ( formatContext_->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO ) - { - audioStream_ = formatContext_->streams[i]; - break; - } - } - if ( !audioStream_ ) - { - errorString = QObject::tr( "Could not find audio stream." ); - return false; - } - - codecContext_ = audioStream_->codec; - AVCodec * codec = avcodec_find_decoder( codecContext_->codec_id ); - if ( !codec ) - { - errorString = QObject::tr( "Codec [id: %1] not found." ).arg( codecContext_->codec_id ); - return false; - } - - ret = avcodec_open2( codecContext_, codec, NULL ); - if ( ret < 0 ) - { - errorString = QObject::tr( "avcodec_open2() failed: %1." ).arg( avErrorString( ret ) ); - return false; - } - - av_log( NULL, AV_LOG_INFO, "Codec open: %s: channels: %d, rate: %d, format: %s\n", codec->long_name, - codecContext_->channels, codecContext_->sample_rate, av_get_sample_fmt_name( codecContext_->sample_fmt ) ); - return true; -} - -void DecoderContext::closeCodec() -{ - if ( !formatContext_ ) - { - if ( avioContext_ ) - { - av_free( avioContext_->buffer ); - avioContext_ = NULL; - } - return; - } - - // avformat_open_input() is not called, just free the buffer associated with - // the AVIOContext, and the AVFormatContext - if ( !avformatOpened_ ) - { - if ( formatContext_ ) - { - avformat_free_context( formatContext_ ); - formatContext_ = NULL; - } - - if ( avioContext_ ) - { - av_free( avioContext_->buffer ); - avioContext_ = NULL; - } - return; - } - - avformatOpened_ = false; - - // Closing a codec context without prior avcodec_open2() will result in - // a crash in ffmpeg - if ( audioStream_ && audioStream_->codec && audioStream_->codec->codec ) - { - audioStream_->discard = AVDISCARD_ALL; - avcodec_close( audioStream_->codec ); - } - - avformat_close_input( &formatContext_ ); - av_free( avioContext_->buffer ); -} - -bool DecoderContext::openOutputDevice( QString & errorString ) -{ - // Prepare for audio output - int aoDriverId = ao_default_driver_id(); - ao_info * aoDrvInfo = ao_driver_info( aoDriverId ); - - if ( aoDriverId < 0 || !aoDrvInfo ) - { - errorString = QObject::tr( "Cannot find usable audio output device." ); - return false; - } - - ao_sample_format aoSampleFormat; - aoSampleFormat.channels = codecContext_->channels; - aoSampleFormat.rate = codecContext_->sample_rate; - aoSampleFormat.byte_format = AO_FMT_NATIVE; - aoSampleFormat.matrix = 0; - aoSampleFormat.bits = qMin( 32, av_get_bytes_per_sample( codecContext_->sample_fmt ) << 3 ); - - if ( aoSampleFormat.bits == 0 ) - { - errorString = QObject::tr( "Unsupported sample format." ); - return false; - } - - av_log( NULL, AV_LOG_INFO, "ao_open_live(): %s: channels: %d, rate: %d, bits: %d\n", - aoDrvInfo->name, aoSampleFormat.channels, aoSampleFormat.rate, aoSampleFormat.bits ); - - aoDevice_ = ao_open_live( aoDriverId, &aoSampleFormat, NULL ); - if ( !aoDevice_ ) - { - errorString = QObject::tr( "ao_open_live() failed: " ); - - switch ( errno ) - { - case AO_ENODRIVER: - errorString += QObject::tr( "No driver." ); - break; - case AO_ENOTLIVE: - errorString += QObject::tr( "This driver is not a live output device." ); - break; - case AO_EBADOPTION: - errorString += QObject::tr( "A valid option key has an invalid value." ); - break; - case AO_EOPENDEVICE: - errorString += QObject::tr( "Cannot open the device: %1, channels: %2, rate: %3, bits: %4." ) - .arg( aoDrvInfo->short_name ) - .arg( aoSampleFormat.channels ) - .arg( aoSampleFormat.rate ) - .arg( aoSampleFormat.bits ); - break; - default: - errorString += QObject::tr( "Unknown error." ); - break; - } - - return false; - } - - return true; -} - -void DecoderContext::closeOutputDevice() -{ - // ao_close() is synchronous, it will wait until all audio streams flushed - if ( aoDevice_ ) - { - ao_close( aoDevice_ ); - aoDevice_ = NULL; - } -} - -bool DecoderContext::play( QString & errorString ) -{ -#if LIBAVCODEC_VERSION_MAJOR < 55 || ( LIBAVCODEC_VERSION_MAJOR == 55 && LIBAVCODEC_VERSION_MINOR < 28 ) - AVFrame * frame = avcodec_alloc_frame(); -#else - AVFrame * frame = av_frame_alloc(); -#endif - if ( !frame ) - { - errorString = QObject::tr( "avcodec_alloc_frame() failed." ); - return false; - } - - AVPacket packet; - av_init_packet( &packet ); - - while ( !Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) && - av_read_frame( formatContext_, &packet ) >= 0 ) - { - if ( packet.stream_index == audioStream_->index ) - { - AVPacket pack = packet; - int gotFrame = 0; - do - { - int len = avcodec_decode_audio4( codecContext_, frame, &gotFrame, &pack ); - if ( !Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) && gotFrame ) - { - playFrame( frame ); - } - if( len <= 0 || Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) ) - break; - pack.size -= len; - pack.data += len; - } - while( pack.size > 0 ); - } - // av_free_packet() must be called after each call to av_read_frame() -#if LIBAVCODEC_VERSION_MAJOR < 57 || ( LIBAVCODEC_VERSION_MAJOR == 57 && LIBAVCODEC_VERSION_MINOR < 7 ) - av_free_packet( &packet ); -#else - av_packet_unref( &packet ); -#endif - } - - if ( !Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) && - codecContext_->codec->capabilities & CODEC_CAP_DELAY ) - { - av_init_packet( &packet ); - int gotFrame = 0; - while ( avcodec_decode_audio4( codecContext_, frame, &gotFrame, &packet ) >= 0 && gotFrame ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) ) - break; - playFrame( frame ); - } - } - -#if LIBAVCODEC_VERSION_MAJOR < 54 - av_free( frame ); -#elif LIBAVCODEC_VERSION_MAJOR < 55 || ( LIBAVCODEC_VERSION_MAJOR == 55 && LIBAVCODEC_VERSION_MINOR < 28 ) - avcodec_free_frame( &frame ); -#else - av_frame_free( &frame ); -#endif - - return true; -} - -static inline int32_t toInt32( double v ) -{ - if ( v >= 1.0 ) - return 0x7fffffffL; - else if ( v <= -1.0 ) - return 0x80000000L; - return floor( v * 2147483648.0 ); -} - -bool DecoderContext::normalizeAudio( AVFrame * frame, vector & samples ) -{ - int lineSize = 0; - int dataSize = av_samples_get_buffer_size( &lineSize, codecContext_->channels, - frame->nb_samples, codecContext_->sample_fmt, 1 ); - - // Portions from: https://code.google.com/p/lavfilters/source/browse/decoder/LAVAudio/LAVAudio.cpp - // But this one use 8, 16, 32 bits integer, respectively. - switch ( codecContext_->sample_fmt ) - { - case AV_SAMPLE_FMT_U8: - case AV_SAMPLE_FMT_S16: - case AV_SAMPLE_FMT_S32: - { - samples.resize( dataSize ); - memcpy( &samples.front(), frame->data[0], lineSize ); - } - break; - case AV_SAMPLE_FMT_FLT: - { - samples.resize( dataSize ); - - int32_t * out = ( int32_t * )&samples.front(); - for ( int i = 0; i < dataSize; i += sizeof( float ) ) - { - *out++ = toInt32( *( float * )frame->data[i] ); - } - } - break; - case AV_SAMPLE_FMT_DBL: - { - samples.resize( dataSize / 2 ); - - int32_t * out = ( int32_t * )&samples.front(); - for ( int i = 0; i < dataSize; i += sizeof( double ) ) - { - *out++ = toInt32( *( double * )frame->data[i] ); - } - } - break; - // Planar - case AV_SAMPLE_FMT_U8P: - { - samples.resize( dataSize ); - - uint8_t * out = ( uint8_t * )&samples.front(); - for ( int i = 0; i < frame->nb_samples; i++ ) - { - for ( int ch = 0; ch < codecContext_->channels; ch++ ) - { - *out++ = ( ( uint8_t * )frame->extended_data[ch] )[i]; - } - } - } - break; - case AV_SAMPLE_FMT_S16P: - { - samples.resize( dataSize ); - - int16_t * out = ( int16_t * )&samples.front(); - for ( int i = 0; i < frame->nb_samples; i++ ) - { - for ( int ch = 0; ch < codecContext_->channels; ch++ ) - { - *out++ = ( ( int16_t * )frame->extended_data[ch] )[i]; - } - } - } - break; - case AV_SAMPLE_FMT_S32P: - { - samples.resize( dataSize ); - - int32_t * out = ( int32_t * )&samples.front(); - for ( int i = 0; i < frame->nb_samples; i++ ) - { - for ( int ch = 0; ch < codecContext_->channels; ch++ ) - { - *out++ = ( ( int32_t * )frame->extended_data[ch] )[i]; - } - } - } - break; - case AV_SAMPLE_FMT_FLTP: - { - samples.resize( dataSize ); - - float ** data = ( float ** )frame->extended_data; - int32_t * out = ( int32_t * )&samples.front(); - for ( int i = 0; i < frame->nb_samples; i++ ) - { - for ( int ch = 0; ch < codecContext_->channels; ch++ ) - { - *out++ = toInt32( data[ch][i] ); - } - } - } - break; - case AV_SAMPLE_FMT_DBLP: - { - samples.resize( dataSize / 2 ); - - double ** data = ( double ** )frame->extended_data; - int32_t * out = ( int32_t * )&samples.front(); - for ( int i = 0; i < frame->nb_samples; i++ ) - { - for ( int ch = 0; ch < codecContext_->channels; ch++ ) - { - *out++ = toInt32( data[ch][i] ); - } - } - } - break; - default: - return false; - } - - return true; -} - -void DecoderContext::playFrame( AVFrame * frame ) -{ - if ( !frame ) - return; - - vector samples; - if ( normalizeAudio( frame, samples ) ) - ao_play( aoDevice_, &samples.front(), samples.size() ); -} - -DecoderThread::DecoderThread( QByteArray const & audioData, QObject * parent ) : - QThread( parent ), - isCancelled_( 0 ), - audioData_( audioData ) -{ -} - -DecoderThread::~DecoderThread() -{ - isCancelled_.ref(); -} - -void DecoderThread::run() -{ - QString errorString; - DecoderContext d( audioData_, isCancelled_ ); - - if ( !d.openCodec( errorString ) ) - { - emit error( errorString ); - return; - } - - while ( !deviceMutex_.tryLock( 100 ) ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled_ ) ) - return; - } - - if ( !d.openOutputDevice( errorString ) ) - emit error( errorString ); - else if ( !d.play( errorString ) ) - emit error( errorString ); - - d.closeOutputDevice(); - deviceMutex_.unlock(); -} - -void DecoderThread::cancel( bool waitUntilFinished ) -{ - isCancelled_.ref(); - if ( waitUntilFinished ) - this->wait(); -} - -} - -#endif //DISABLE_INTERNAL_PLAYER diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ffmpegaudio.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ffmpegaudio.hh deleted file mode 100644 index 866edf8dbb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ffmpegaudio.hh +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef __FFMPEGAUDIO_HH_INCLUDED__ -#define __FFMPEGAUDIO_HH_INCLUDED__ - -#ifndef DISABLE_INTERNAL_PLAYER - -#include -#include -#include -#include -#include - -namespace Ffmpeg -{ - -class AudioPlayer : public QObject -{ - Q_OBJECT - -public: - static AudioPlayer & instance(); - void playMemory( const void * ptr, int size ); - void stop(); - -signals: - void cancelPlaying( bool waitUntilFinished ); - void error( QString const & message ); - -private: - AudioPlayer(); - ~AudioPlayer(); - AudioPlayer( AudioPlayer const & ); - AudioPlayer & operator=( AudioPlayer const & ); -}; - -class DecoderThread: public QThread -{ - Q_OBJECT - - static QMutex deviceMutex_; - QAtomicInt isCancelled_; - QByteArray audioData_; - -public: - DecoderThread( QByteArray const & audioData, QObject * parent ); - virtual ~DecoderThread(); - -public slots: - void run(); - void cancel( bool waitUntilFinished ); - -signals: - void error( QString const & message ); -}; - -} - -#endif // DISABLE_INTERNAL_PLAYER - -#endif // __FFMPEGAUDIO_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/file.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/file.cc deleted file mode 100644 index faa9fdbaa8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/file.cc +++ /dev/null @@ -1,337 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "file.hh" - -#include -#include -#include - -#include -#include -#ifndef _MSC_VER -#include -#endif - -#ifdef __WIN32 -#include -#endif - -#include "ufile.hh" -#include "fsencoding.hh" - -namespace File { - -enum -{ - // We employ a writing buffer to considerably speed up file operations when - // they consists of many small writes. The default size for the buffer is 64k - WriteBufferSize = 65536 -}; - -bool tryPossibleName( std::string const & name, std::string & copyTo ) -{ - if ( File::exists( name ) ) - { - copyTo = name; - return true; - } - else - return false; -} - -void loadFromFile( std::string const & n, std::vector< char > & data ) -{ - File::Class f( n, "rb" ); - - f.seekEnd(); - - data.resize( f.tell() ); - - f.rewind(); - - f.read( &data.front(), data.size() ); -} - -bool exists( char const * filename ) throw() -{ -#ifdef __WIN32 - struct _stat buf; - wchar_t wname[16384]; - MultiByteToWideChar( CP_UTF8, 0, filename, -1, wname, 16384 ); - return _wstat( wname, &buf ) == 0; -#else - struct stat buf; - - // EOVERFLOW rationale: if the file is too large, it still does exist - return stat( filename, &buf ) == 0 || errno == EOVERFLOW; -#endif -} - -void Class::open( char const * filename, char const * mode ) throw( exCantOpen ) -{ - QFile::OpenMode openMode = QIODevice::Text; - const char * pch = mode; - while( *pch ) - { - switch( *pch ) - { - case 'r': openMode |= QIODevice::ReadOnly; - break; - case 'w': openMode |= QIODevice::WriteOnly; - break; - case '+': openMode &= ~( QIODevice::ReadOnly | QIODevice::WriteOnly ); - openMode |= QIODevice::ReadWrite; - break; - case 'a': openMode |= QIODevice::Append; - break; - case 'b': openMode &= ~QIODevice::Text; - break; - default: break; - } - ++pch; - } - - f.setFileName( FsEncoding::decode( filename ) ); - - if ( !f.open( openMode ) ) - throw exCantOpen( std::string( filename ) + ": " + strerror( errno ) ); -} - -Class::Class( char const * filename, char const * mode ) throw( exCantOpen ): - writeBuffer( 0 ) -{ - open( filename, mode ); -} - -Class::Class( std::string const & filename, char const * mode ) - throw( exCantOpen ): writeBuffer( 0 ) -{ - open( filename.c_str(), mode ); -} - -void Class::read( void * buf, qint64 size ) throw( exReadError, exWriteError ) -{ - if ( !size ) - return; - - if ( writeBuffer ) - flushWriteBuffer(); - - qint64 result = f.read( reinterpret_cast( buf ), size ); - - if ( result != size ) - throw exReadError(); -} - -size_t Class::readRecords( void * buf, qint64 size, size_t count ) throw( exWriteError ) -{ - if ( writeBuffer ) - flushWriteBuffer(); - - qint64 result = f.read( reinterpret_cast( buf ), size * count ); - return result < 0 ? result : result / size; -} - -void Class::write( void const * buf, qint64 size ) throw( exWriteError, exAllocation ) -{ - if ( !size ) - return; - - if ( size >= WriteBufferSize ) - { - // If the write is large, there's not much point in buffering - flushWriteBuffer(); - - qint64 result = f.write( reinterpret_cast( buf ), size ); - - if ( result != size ) - throw exWriteError(); - - return; - } - - if ( !writeBuffer ) - { - // Allocate the writing buffer since we don't have any yet - writeBuffer = new char[ WriteBufferSize ]; - if( !writeBuffer ) - throw exAllocation(); - writeBufferLeft = WriteBufferSize; - } - - size_t toAdd = size < writeBufferLeft ? size : writeBufferLeft; - - memcpy( writeBuffer + ( WriteBufferSize - writeBufferLeft ), - buf, toAdd ); - - size -= toAdd; - writeBufferLeft -= toAdd; - - if ( !writeBufferLeft ) // Out of buffer? Flush it. - { - flushWriteBuffer(); - - if ( size ) // Something's still left? Add to buffer. - { - memcpy( writeBuffer, (char const *)buf + toAdd, size ); - writeBufferLeft -= size; - } - } -} - -size_t Class::writeRecords( void const * buf, qint64 size, size_t count ) - throw( exWriteError ) -{ - flushWriteBuffer(); - - qint64 result = f.write( reinterpret_cast( buf ), size * count ); - return result < 0 ? result : result / size; -} - -char * Class::gets( char * s, int size, bool stripNl ) - throw( exWriteError ) -{ - if ( writeBuffer ) - flushWriteBuffer(); - - qint64 len = f.readLine( s, size ); - char * result = len > 0 ? s : NULL; - - if ( result && stripNl ) - { - - char * last = result + len; - - while( len-- ) - { - --last; - - if ( *last == '\n' || *last == '\r' ) - *last = 0; - else - break; - } - } - - return result; -} - -std::string Class::gets( bool stripNl ) throw( exReadError, exWriteError ) -{ - char buf[ 1024 ]; - - if ( !gets( buf, sizeof( buf ), stripNl ) ) - throw exReadError(); - - return std::string( buf ); -} - -void Class::seek( long offset ) throw( exSeekError, exWriteError ) -{ - if ( writeBuffer ) - flushWriteBuffer(); - - if ( !f.seek( offset ) ) - throw exSeekError(); -} - -void Class::seekCur( long offset ) throw( exSeekError, exWriteError ) -{ - if ( writeBuffer ) - flushWriteBuffer(); - - if( !f.seek( f.pos() + offset ) ) - throw exSeekError(); -} - -void Class::seekEnd( long offset ) throw( exSeekError, exWriteError ) -{ - if ( writeBuffer ) - flushWriteBuffer(); - - if( !f.seek( f.size() + offset ) ) - throw exSeekError(); -} - -void Class::rewind() throw( exSeekError, exWriteError ) -{ - seek( 0 ); -} - -size_t Class::tell() throw( exSeekError ) -{ - qint64 result = f.pos(); - - if ( result == -1 ) - throw exSeekError(); - - if ( writeBuffer ) - result += ( WriteBufferSize - writeBufferLeft ); - - return ( size_t ) result; -} - -bool Class::eof() throw( exWriteError ) -{ - if ( writeBuffer ) - flushWriteBuffer(); - - return f.atEnd(); -} - -QFile & Class::file() throw( exWriteError ) -{ - flushWriteBuffer(); - - return f; -} - -void Class::close() throw( exWriteError ) -{ - releaseWriteBuffer(); - f.close(); -} - -Class::~Class() throw() -{ - if ( f.isOpen() ) - { - try - { - releaseWriteBuffer(); - } - catch( exWriteError & ) - { - } - f.close(); - } -} - -void Class::flushWriteBuffer() throw( exWriteError ) -{ - if ( writeBuffer && writeBufferLeft != WriteBufferSize ) - { - qint64 result = f.write( writeBuffer, WriteBufferSize - writeBufferLeft ); - - if ( result != WriteBufferSize - writeBufferLeft ) - throw exWriteError(); - - writeBufferLeft = WriteBufferSize; - } -} - -void Class::releaseWriteBuffer() throw( exWriteError ) -{ - flushWriteBuffer(); - - if ( writeBuffer ) - { - delete [] writeBuffer; - - writeBuffer = 0; - } -} - - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/file.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/file.hh deleted file mode 100644 index f2c28ac530..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/file.hh +++ /dev/null @@ -1,127 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __FILE_HH_INCLUDED__ -#define __FILE_HH_INCLUDED__ - -#include -#include -#include -#include -#include "ex.hh" - -/// A simple wrapper over FILE * operations with added write-buffering, -/// used for non-Qt parts of code. -/// It is possible to ifdef implementation details for some platforms. -namespace File { - -DEF_EX( Ex, "File exception", std::exception ) -DEF_EX_STR( exCantOpen, "Can't open", Ex ) -DEF_EX( exReadError, "Error reading from the file", Ex ) -DEF_EX( exWriteError, "Error writing to the file", Ex ) -DEF_EX( exSeekError, "File seek error", Ex ) -DEF_EX( exAllocation, "Memory allocation error", Ex ) - -/// Checks if the file exists or not. - -bool tryPossibleName( std::string const & name, std::string & copyTo ); - -void loadFromFile( std::string const & n, std::vector< char > & data ); - -bool exists( char const * filename ) throw(); - -inline bool exists( std::string const & filename ) throw() -{ return exists( filename.c_str() ); } - -class Class -{ - QFile f; - char * writeBuffer; - qint64 writeBufferLeft; - - void open( char const * filename, char const * mode ) throw( exCantOpen ); - -public: - - Class( char const * filename, char const * mode ) throw( exCantOpen ); - - Class( std::string const & filename, char const * mode ) throw( exCantOpen ); - - /// Reads the number of bytes to the buffer, throws an error if it - /// failed to fill the whole buffer (short read, i/o error etc). - void read( void * buf, qint64 size ) throw( exReadError, exWriteError ); - - template< typename T > - void read( T & value ) throw( exReadError, exWriteError ) - { read( &value, sizeof( value ) ); } - - template< typename T > - T read() throw( exReadError, exWriteError ) - { T value; read( value ); return value; } - - /// Attempts reading at most 'count' records sized 'size'. Returns - /// the number of records it managed to read, up to 'count'. - size_t readRecords( void * buf, qint64 size, size_t count ) throw( exWriteError ); - - /// Writes the number of bytes from the buffer, throws an error if it - /// failed to write the whole buffer (short write, i/o error etc). - /// This function employs write buffering, and as such, writes may not - /// end up on disk immediately, or a short write may occur later - /// than it really did. If you don't want write buffering, use - /// writeRecords() function instead. - void write( void const * buf, qint64 size ) throw( exWriteError, exAllocation ); - - template< typename T > - void write( T const & value ) throw( exWriteError ) - { write( &value, sizeof( value ) ); } - - /// Attempts writing at most 'count' records sized 'size'. Returns - /// the number of records it managed to write, up to 'count'. - /// This function does not employ buffering, but flushes the buffer if it - /// was used before. - size_t writeRecords( void const * buf, qint64 size, size_t count ) - throw( exWriteError ); - - /// Reads a string from the file. Unlike the normal fgets(), this one - /// can strip the trailing newline character, if this was requested. - /// Returns either s or 0 if no characters were read. - char * gets( char * s, int size, bool stripNl = false ) throw( exWriteError ); - - /// Like the above, but uses its own local internal buffer (1024 bytes - /// currently), and strips newlines by default. - std::string gets( bool stripNl = true ) throw( exReadError, exWriteError ); - - /// Seeks in the file, relative to its beginning. - void seek( long offset ) throw( exSeekError, exWriteError ); - /// Seeks in the file, relative to the current position. - void seekCur( long offset ) throw( exSeekError, exWriteError ); - /// Seeks in the file, relative to the end of file. - void seekEnd( long offset = 0 ) throw( exSeekError, exWriteError ); - - /// Seeks to the beginning of file - void rewind() throw( exSeekError, exWriteError ); - - /// Tells the current position within the file, relative to its beginning. - size_t tell() throw( exSeekError ); - - /// Returns true if end-of-file condition is set. - bool eof() throw( exWriteError ); - - /// Returns the underlying FILE * record, so other operations can be - /// performed on it. - QFile & file() throw( exWriteError ); - - /// Closes the file. No further operations are valid. - void close() throw( exWriteError ); - - ~Class() throw(); - -private: - - void flushWriteBuffer() throw( exWriteError ); - void releaseWriteBuffer() throw( exWriteError ); -}; - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/filetype.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/filetype.cc deleted file mode 100644 index 9eaad6f6b2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/filetype.cc +++ /dev/null @@ -1,135 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "filetype.hh" -#include "utf8.hh" -#include - -namespace Filetype { - -namespace { - - -/// Removes any trailing or leading spaces and lowercases the string. -/// The lowercasing is done simplistically, but it is enough for file -/// extensions. -string simplifyString( string const & str ) -{ - string result; - - size_t beginPos = 0; - - while( beginPos < str.size() && Utf8::isspace( str[ beginPos ] ) ) - ++beginPos; - - size_t endPos = str.size(); - - while( endPos && Utf8::isspace( str[ endPos - 1 ] ) ) - --endPos; - - result.reserve( endPos - beginPos ); - - while( beginPos < endPos ) - result.push_back( tolower( str[ beginPos++ ] ) ); - - return result; -} - -/// Checks if the given string ends with the given substring -bool endsWith( string const & str, string const & tail ) -{ - return str.size() >= tail.size() && - str.compare( str.size() - tail.size(), tail.size(), tail ) == 0; -} - -} - -bool isNameOfSound( string const & name ) -{ - string s = simplifyString( name ); - - return - endsWith( s, ".wav" ) || - endsWith( s, ".au" ) || - endsWith( s, ".voc" ) || - endsWith( s, ".ogg" ) || - endsWith( s, ".mp3" ) || - endsWith( s, ".m4a") || - endsWith( s, ".aac" ) || - endsWith( s, ".flac" ) || - endsWith( s, ".mid" ) || - endsWith( s, ".kar" ) || - endsWith( s, ".mpc" ) || - endsWith( s, ".wma" ) || - endsWith( s, ".wv" ) || - endsWith( s, ".ape" ) || - endsWith( s, ".spx" ); -} - -bool isNameOfVideo( string const & name ) -{ - string s = simplifyString( name ); - - return - endsWith( s, ".mpg" ) || - endsWith( s, ".mpeg" )|| - endsWith( s, ".mpe" ) || - endsWith( s, ".ogv" ) || - endsWith( s, ".ogm" ) || - endsWith( s, ".avi" ) || - endsWith( s, ".m4v" ) || - endsWith( s, ".mp4" ) || - endsWith( s, ".mkv" ) || - endsWith( s, ".wmv" ) || - endsWith( s, ".sfw" ) || - endsWith( s, ".flv" ) || - endsWith( s, ".divx" ) || - endsWith( s, ".3gp" ) || - endsWith( s, ".mov" ); -} - -bool isNameOfPicture( string const & name ) -{ - string s = simplifyString( name ); - - return - endsWith( s, ".jpg" ) || - endsWith( s, ".jpeg" ) || - endsWith( s, ".jpe" ) || - endsWith( s, ".png" ) || - endsWith( s, ".gif" ) || - endsWith( s, ".bmp" ) || - endsWith( s, ".tif" ) || - endsWith( s, ".tiff" ) || - endsWith( s, ".tga" ) || - endsWith( s, ".pcx" ) || - endsWith( s, ".ico" ) || - endsWith( s, ".svg" ); -} - -bool isNameOfTiff( string const & name ) -{ - string s = simplifyString( name ); - - return - endsWith( s, ".tif" ) || - endsWith( s, ".tiff" ); -} - -bool isNameOfCSS( string const & name ) -{ - string s = simplifyString( name ); - - return - endsWith( s, ".css" ); -} - -bool isNameOfSvg( string const & name ) -{ - string s = simplifyString( name ); - - return - endsWith( s, ".svg" ); -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/filetype.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/filetype.hh deleted file mode 100644 index 35445c8b63..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/filetype.hh +++ /dev/null @@ -1,35 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __FILETYPE_HH_INCLUDED__ -#define __FILETYPE_HH_INCLUDED__ - -#include - -/// Utilities to guess file types based on their names. -namespace Filetype { - -using std::string; - -/// Returns true if the name resembles the one of a sound file (i.e. ends -/// with .wav, .ogg and such). -bool isNameOfSound( string const & ); -/// Returns true if the name resembles the one of a video file (i.e. ends -/// with .mpg, .ogv and such). -bool isNameOfVideo( string const & ); -/// Returns true if the name resembles the one of a picture file (i.e. ends -/// with .jpg, .png and such). -bool isNameOfPicture( string const & ); -/// Returns true if the name resembles the one of a .tiff file (i.e. ends -/// with .tif or tiff). We have this one separately since we need to reconvert -/// TIFF files as WebKit doesn't seem to support them. -bool isNameOfTiff( string const & ); -/// Returns true if the name resembles the one of a .css file -bool isNameOfCSS( string const & ); -/// Returns true if the name resembles the one of a .svg file -bool isNameOfSvg( string const & name ); - -} - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fixx11h.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/fixx11h.h deleted file mode 100644 index eb576901da..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fixx11h.h +++ /dev/null @@ -1,63 +0,0 @@ -// This is a standard way (e.g., in KDE libs) of dealing -// with X11 headers mess. - -#ifdef Unsorted -#undef Unsorted -#endif - -#ifdef None -#undef None -#endif - -#ifdef Bool -#undef Bool -#endif - -#ifdef FontChange -#undef FontChange -#endif - -#ifdef KeyPress -#undef KeyPress -#endif - -#ifdef KeyRelease -#undef KeyRelease -#endif - -#ifdef Above -#undef Above -#endif - -#ifdef Below -#undef Below -#endif - -#ifdef FocusIn -#undef FocusIn -#endif - -#ifdef FocusOut -#undef FocusOut -#endif - -#ifdef Always -#undef Always -#endif - -#ifdef Success -#undef Success -#endif - -#ifdef GrayScale -#undef GrayScale -#endif - -#ifdef Status -#undef Status -#endif - -#ifdef CursorShape -#undef CursorShape -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags.qrc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags.qrc deleted file mode 100644 index dd7c70faee..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags.qrc +++ /dev/null @@ -1,259 +0,0 @@ - - - flags/wiki.png - flags/folder.png - flags/ad.png - flags/ae.png - flags/af.png - flags/ag.png - flags/ai.png - flags/al.png - flags/am.png - flags/an.png - flags/ao.png - flags/ar.png - flags/as.png - flags/at.png - flags/au.png - flags/aw.png - flags/ax.png - flags/az.png - flags/ba.png - flags/bb.png - flags/bd.png - flags/be.png - flags/bf.png - flags/bg.png - flags/bh.png - flags/bi.png - flags/bj.png - flags/bm.png - flags/bn.png - flags/bo.png - flags/br.png - flags/bs.png - flags/bt.png - flags/bv.png - flags/bw.png - flags/by.png - flags/bz.png - flags/ca.png - flags/catalonia.png - flags/cc.png - flags/cd.png - flags/cf.png - flags/cg.png - flags/ch.png - flags/ci.png - flags/ck.png - flags/cl.png - flags/cm.png - flags/cn.png - flags/co.png - flags/cr.png - flags/cs.png - flags/cu.png - flags/cv.png - flags/cx.png - flags/cy.png - flags/cz.png - flags/de.png - flags/dj.png - flags/dk.png - flags/dm.png - flags/do.png - flags/dz.png - flags/ec.png - flags/ee.png - flags/eg.png - flags/eh.png - flags/england.png - flags/er.png - flags/es.png - flags/et.png - flags/europeanunion.png - flags/fam.png - flags/fi.png - flags/fj.png - flags/fk.png - flags/fm.png - flags/fo.png - flags/fr.png - flags/ga.png - flags/gb.png - flags/gd.png - flags/ge.png - flags/gf.png - flags/gh.png - flags/gi.png - flags/gl.png - flags/gm.png - flags/gn.png - flags/gp.png - flags/gq.png - flags/gr.png - flags/gs.png - flags/gt.png - flags/gu.png - flags/gw.png - flags/gy.png - flags/hk.png - flags/hm.png - flags/hn.png - flags/hr.png - flags/ht.png - flags/hu.png - flags/id.png - flags/ie.png - flags/il.png - flags/in.png - flags/io.png - flags/iq.png - flags/ir.png - flags/is.png - flags/it.png - flags/ja.png - flags/jm.png - flags/jo.png - flags/jp.png - flags/ke.png - flags/kg.png - flags/kh.png - flags/ki.png - flags/km.png - flags/kn.png - flags/kp.png - flags/kr.png - flags/kw.png - flags/ky.png - flags/kz.png - flags/la.png - flags/lb.png - flags/lc.png - flags/li.png - flags/lk.png - flags/lr.png - flags/ls.png - flags/lt.png - flags/lu.png - flags/lv.png - flags/ly.png - flags/ma.png - flags/mc.png - flags/md.png - flags/me.png - flags/mg.png - flags/mh.png - flags/mk.png - flags/ml.png - flags/mm.png - flags/mn.png - flags/mo.png - flags/mp.png - flags/mq.png - flags/mr.png - flags/ms.png - flags/mt.png - flags/mu.png - flags/mv.png - flags/mw.png - flags/mx.png - flags/my.png - flags/mz.png - flags/na.png - flags/nc.png - flags/ne.png - flags/nf.png - flags/ng.png - flags/ni.png - flags/nl.png - flags/no.png - flags/np.png - flags/nr.png - flags/nu.png - flags/nz.png - flags/om.png - flags/pa.png - flags/pe.png - flags/pf.png - flags/pg.png - flags/ph.png - flags/pk.png - flags/pl.png - flags/pm.png - flags/pn.png - flags/pr.png - flags/ps.png - flags/pt.png - flags/pw.png - flags/py.png - flags/qa.png - flags/re.png - flags/ro.png - flags/rs.png - flags/ru.png - flags/rw.png - flags/sa.png - flags/sb.png - flags/scotland.png - flags/sc.png - flags/sd.png - flags/se.png - flags/sg.png - flags/sh.png - flags/si.png - flags/sj.png - flags/sk.png - flags/sl.png - flags/sm.png - flags/sn.png - flags/so.png - flags/sr.png - flags/st.png - flags/sv.png - flags/sy.png - flags/sz.png - flags/tc.png - flags/td.png - flags/tf.png - flags/tg.png - flags/th.png - flags/tj.png - flags/tk.png - flags/tl.png - flags/tm.png - flags/tn.png - flags/to.png - flags/tr.png - flags/tt.png - flags/tv.png - flags/tw.png - flags/tz.png - flags/ua.png - flags/ug.png - flags/um.png - flags/us.png - flags/uy.png - flags/uz.png - flags/va.png - flags/vc.png - flags/ve.png - flags/vg.png - flags/vi.png - flags/vn.png - flags/vu.png - flags/wales.png - flags/wi.png - flags/wf.png - flags/ws.png - flags/ye.png - flags/yt.png - flags/za.png - flags/zm.png - flags/zw.png - flags/en.png - flags/uk.png - flags/eo.png - flags/other.png - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/00readme.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/00readme.txt deleted file mode 100644 index 738e3ee292..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/00readme.txt +++ /dev/null @@ -1,6 +0,0 @@ -These icons were taken from http://www.famfamfam.com/lab/icons/flags/ - -Licensed under the following conditions: - -"These flag icons are available for free use for any purpose with no -requirement for attribution." diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ad.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ad.png deleted file mode 100644 index 625ca84f9e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ad.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ae.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ae.png deleted file mode 100644 index ef3a1ecfcc..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ae.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/af.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/af.png deleted file mode 100644 index a4742e299f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/af.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ag.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ag.png deleted file mode 100644 index 556d5504dc..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ag.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ai.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ai.png deleted file mode 100644 index 74ed29d926..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ai.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/al.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/al.png deleted file mode 100644 index 92354cb6e2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/al.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/am.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/am.png deleted file mode 100644 index 344a2a86c4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/am.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/an.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/an.png deleted file mode 100644 index 633e4b89fd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/an.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ao.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ao.png deleted file mode 100644 index bcbd1d6d40..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ao.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ar.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ar.png deleted file mode 100644 index e5ef8f1fcd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ar.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/as.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/as.png deleted file mode 100644 index 32f30e4ce4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/as.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/at.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/at.png deleted file mode 100644 index 0f15f34f28..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/at.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/au.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/au.png deleted file mode 100644 index a01389a745..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/au.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/aw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/aw.png deleted file mode 100644 index a3579c2d62..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/aw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ax.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ax.png deleted file mode 100644 index 1eea80a7b7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ax.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/az.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/az.png deleted file mode 100644 index 4ee9fe5ced..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/az.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ba.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ba.png deleted file mode 100644 index c77499249c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ba.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bb.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bb.png deleted file mode 100644 index 0df19c71d2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bb.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bd.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bd.png deleted file mode 100644 index 076a8bf87c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bd.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/be.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/be.png deleted file mode 100644 index d86ebc800a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/be.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bf.png deleted file mode 100644 index ab5ce8fe12..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bg.png deleted file mode 100644 index 0469f0607d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bh.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bh.png deleted file mode 100644 index ea8ce68761..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bh.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bi.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bi.png deleted file mode 100644 index 5cc2e30cfc..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bi.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bj.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bj.png deleted file mode 100644 index 1cc8b458a4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bj.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bm.png deleted file mode 100644 index c0c7aead8d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bn.png deleted file mode 100644 index 8fb09849e9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bo.png deleted file mode 100644 index ce7ba522aa..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/br.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/br.png deleted file mode 100644 index 9b1a5538b2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/br.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bs.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bs.png deleted file mode 100644 index 639fa6cfa9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bs.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bt.png deleted file mode 100644 index 1d512dfff4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bv.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bv.png deleted file mode 100644 index 160b6b5b79..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bv.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bw.png deleted file mode 100644 index fcb1039415..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/by.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/by.png deleted file mode 100644 index 504774ec10..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/by.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bz.png deleted file mode 100644 index be63ee1c62..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/bz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ca.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ca.png deleted file mode 100644 index 1f204193ae..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ca.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/catalonia.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/catalonia.png deleted file mode 100644 index 5041e308e3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/catalonia.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cc.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cc.png deleted file mode 100644 index aed3d3b4e4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cc.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cd.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cd.png deleted file mode 100644 index 5e48942488..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cd.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cf.png deleted file mode 100644 index da687bdce9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cg.png deleted file mode 100644 index a859792ef3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ch.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ch.png deleted file mode 100644 index 242ec01aaf..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ch.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ci.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ci.png deleted file mode 100644 index 3f2c62eb4d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ci.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ck.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ck.png deleted file mode 100644 index 746d3d6f75..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ck.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cl.png deleted file mode 100644 index 29c6d61bd4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cm.png deleted file mode 100644 index f65c5bd5a7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cn.png deleted file mode 100644 index 8914414621..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/co.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/co.png deleted file mode 100644 index a118ff4a14..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/co.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cr.png deleted file mode 100644 index c7a3731794..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cs.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cs.png deleted file mode 100644 index 8254790ca7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cs.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cu.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cu.png deleted file mode 100644 index 083f1d611c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cu.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cv.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cv.png deleted file mode 100644 index a63f7eaf63..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cv.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cx.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cx.png deleted file mode 100644 index 48e31adbf4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cx.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cy.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cy.png deleted file mode 100644 index 5b1ad6c078..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cy.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cz.png deleted file mode 100644 index c8403dd21f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/cz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/de.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/de.png deleted file mode 100644 index ac4a977362..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/de.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dj.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dj.png deleted file mode 100644 index 582af364f8..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dj.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dk.png deleted file mode 100644 index e2993d3c59..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dm.png deleted file mode 100644 index 5fbffcba3c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/do.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/do.png deleted file mode 100644 index 5a04932d87..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/do.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dz.png deleted file mode 100644 index 335c2391d3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/dz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ec.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ec.png deleted file mode 100644 index 0caa0b1e78..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ec.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ee.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ee.png deleted file mode 100644 index 0c82efb7dd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ee.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eg.png deleted file mode 100644 index 8a3f7a10b5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eh.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eh.png deleted file mode 100644 index 90a1195b47..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eh.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/en.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/en.png deleted file mode 100644 index ff701e19f6..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/en.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/england.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/england.png deleted file mode 100644 index 3a7311d561..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/england.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eo.png deleted file mode 100644 index 9db4dbc988..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/eo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/er.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/er.png deleted file mode 100644 index 13065ae99c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/er.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/es.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/es.png deleted file mode 100644 index c2de2d7111..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/es.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/et.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/et.png deleted file mode 100644 index 2e893fa056..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/et.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/europeanunion.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/europeanunion.png deleted file mode 100644 index d6d8711580..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/europeanunion.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fam.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fam.png deleted file mode 100644 index cf50c759eb..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fam.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fi.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fi.png deleted file mode 100644 index 14ec091b80..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fi.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fj.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fj.png deleted file mode 100644 index cee998892e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fj.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fk.png deleted file mode 100644 index ceaeb27dec..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fm.png deleted file mode 100644 index 066bb24738..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fo.png deleted file mode 100644 index cbceb809eb..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/folder.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/folder.png deleted file mode 100644 index fc6f17e977..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/folder.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fr.png deleted file mode 100644 index 8332c4ec23..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/fr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ga.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ga.png deleted file mode 100644 index 0e0d434363..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ga.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gb.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gb.png deleted file mode 100644 index ff701e19f6..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gb.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gd.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gd.png deleted file mode 100644 index 9ab57f5489..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gd.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ge.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ge.png deleted file mode 100644 index 728d97078d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ge.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gf.png deleted file mode 100644 index 8332c4ec23..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gh.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gh.png deleted file mode 100644 index 4e2f896591..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gh.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gi.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gi.png deleted file mode 100644 index e76797f62f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gi.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gl.png deleted file mode 100644 index ef12a73bf9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gm.png deleted file mode 100644 index 0720b667af..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gn.png deleted file mode 100644 index ea660b01fa..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gp.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gp.png deleted file mode 100644 index dbb086d001..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gp.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gq.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gq.png deleted file mode 100644 index ebe20a28de..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gq.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gr.png deleted file mode 100644 index 8651ade7cb..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gs.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gs.png deleted file mode 100644 index 7ef0bf598d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gs.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gt.png deleted file mode 100644 index c43a70d364..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gu.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gu.png deleted file mode 100644 index 92f37c0533..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gu.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gw.png deleted file mode 100644 index b37bcf06bf..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gy.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gy.png deleted file mode 100644 index 22cbe2f591..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/gy.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hk.png deleted file mode 100644 index d5c380ca9d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hm.png deleted file mode 100644 index a01389a745..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hn.png deleted file mode 100644 index 96f838859f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hr.png deleted file mode 100644 index 696b515460..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ht.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ht.png deleted file mode 100644 index 416052af77..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ht.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hu.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hu.png deleted file mode 100644 index 7baafe44dd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/hu.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/id.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/id.png deleted file mode 100644 index c6bc0fafac..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/id.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ie.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ie.png deleted file mode 100644 index 26baa31e18..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ie.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/il.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/il.png deleted file mode 100644 index 2ca772d0b7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/il.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/in.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/in.png deleted file mode 100644 index e4d7e81a98..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/in.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/io.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/io.png deleted file mode 100644 index 3e74b6a316..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/io.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/iq.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/iq.png deleted file mode 100644 index 878a351403..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/iq.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ir.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ir.png deleted file mode 100644 index c5fd136aee..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ir.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/is.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/is.png deleted file mode 100644 index b8f6d0f066..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/is.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/it.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/it.png deleted file mode 100644 index 89692f74f0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/it.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ja.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ja.png deleted file mode 100644 index 325fbad3ff..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ja.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jm.png deleted file mode 100644 index 7be119e03d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jo.png deleted file mode 100644 index 11bd4972b6..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jp.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jp.png deleted file mode 100644 index 325fbad3ff..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/jp.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ke.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ke.png deleted file mode 100644 index 51879adf17..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ke.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kg.png deleted file mode 100644 index 0a818f67ea..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kh.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kh.png deleted file mode 100644 index 30f6bb1b9b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kh.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ki.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ki.png deleted file mode 100644 index 2dcce4b33f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ki.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/km.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/km.png deleted file mode 100644 index 812b2f56c5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/km.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kn.png deleted file mode 100644 index febd5b486f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kp.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kp.png deleted file mode 100644 index d3d509aa87..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kp.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kr.png deleted file mode 100644 index 9c0a78eb94..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kw.png deleted file mode 100644 index 96546da328..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ky.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ky.png deleted file mode 100644 index 15c5f8e477..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ky.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kz.png deleted file mode 100644 index 45a8c88742..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/kz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/la.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/la.png deleted file mode 100644 index e28acd018a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/la.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lb.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lb.png deleted file mode 100644 index d0d452bf86..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lb.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lc.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lc.png deleted file mode 100644 index a47d065541..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lc.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/li.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/li.png deleted file mode 100644 index 6469909c01..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/li.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lk.png deleted file mode 100644 index 088aad6db9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lr.png deleted file mode 100644 index 89a5bc7e70..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ls.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ls.png deleted file mode 100644 index 33fdef101f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ls.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lt.png deleted file mode 100644 index c8ef0da091..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lu.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lu.png deleted file mode 100644 index 4cabba98ae..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lu.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lv.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lv.png deleted file mode 100644 index 49b6998108..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/lv.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ly.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ly.png deleted file mode 100644 index b163a9f8a0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ly.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ma.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ma.png deleted file mode 100644 index f386770280..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ma.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mc.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mc.png deleted file mode 100644 index 1aa830f121..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mc.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/md.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/md.png deleted file mode 100644 index 4e92c18904..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/md.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/me.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/me.png deleted file mode 100644 index ac7253558a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/me.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mg.png deleted file mode 100644 index d2715b3d0e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mh.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mh.png deleted file mode 100644 index fb523a8c39..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mh.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mk.png deleted file mode 100644 index db173aaff2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ml.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ml.png deleted file mode 100644 index 2cec8ba440..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ml.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mm.png deleted file mode 100644 index f464f67ffb..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mn.png deleted file mode 100644 index 9396355db4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mo.png deleted file mode 100644 index deb801dda2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mp.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mp.png deleted file mode 100644 index 298d588b14..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mp.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mq.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mq.png deleted file mode 100644 index 010143b386..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mq.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mr.png deleted file mode 100644 index 319546b100..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ms.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ms.png deleted file mode 100644 index d4cbb433d8..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ms.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mt.png deleted file mode 100644 index 00af94871d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mu.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mu.png deleted file mode 100644 index b7fdce1bdd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mu.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mv.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mv.png deleted file mode 100644 index 5073d9ec47..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mv.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mw.png deleted file mode 100644 index 13886e9f8b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mx.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mx.png deleted file mode 100644 index 5bc58ab3e3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mx.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/my.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/my.png deleted file mode 100644 index 9034cbab2c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/my.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mz.png deleted file mode 100644 index 76405e063d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/mz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/na.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/na.png deleted file mode 100644 index 63358c67df..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/na.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nc.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nc.png deleted file mode 100644 index 2cad283782..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nc.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ne.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ne.png deleted file mode 100644 index d85f424f38..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ne.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nf.png deleted file mode 100644 index f9bcdda12c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ng.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ng.png deleted file mode 100644 index 3eea2e0207..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ng.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ni.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ni.png deleted file mode 100644 index 3969aaaaee..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ni.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nl.png deleted file mode 100644 index fe44791e32..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/no.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/no.png deleted file mode 100644 index 160b6b5b79..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/no.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/np.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/np.png deleted file mode 100644 index aeb058b7ea..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/np.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nr.png deleted file mode 100644 index 705fc337cc..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nu.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nu.png deleted file mode 100644 index c3ce4aedda..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nu.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nz.png deleted file mode 100644 index 10d6306d17..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/nz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/om.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/om.png deleted file mode 100644 index 2ffba7e8c4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/om.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/other.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/other.png deleted file mode 100644 index d239dd541b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/other.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pa.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pa.png deleted file mode 100644 index 9b2ee9a780..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pa.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pe.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pe.png deleted file mode 100644 index 62a04977fb..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pe.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pf.png deleted file mode 100644 index 771a0f6522..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pg.png deleted file mode 100644 index 10d6233496..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ph.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ph.png deleted file mode 100644 index b89e15935d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ph.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pk.png deleted file mode 100644 index e9df70ca4d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pl.png deleted file mode 100644 index d413d010b5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pm.png deleted file mode 100644 index ba91d2c7a0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pn.png deleted file mode 100644 index aa9344f575..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pr.png deleted file mode 100644 index 82d9130da4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ps.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ps.png deleted file mode 100644 index f5f547762e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ps.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pt.png deleted file mode 100644 index ece7980150..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pw.png deleted file mode 100644 index 6178b254a5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/pw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/py.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/py.png deleted file mode 100644 index cb8723c064..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/py.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/qa.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/qa.png deleted file mode 100644 index ed4c621fa7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/qa.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/re.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/re.png deleted file mode 100644 index 8332c4ec23..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/re.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ro.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ro.png deleted file mode 100644 index 57e74a6510..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ro.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/rs.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/rs.png deleted file mode 100644 index 9439a5b605..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/rs.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ru.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ru.png deleted file mode 100644 index 47da4214fd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ru.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/rw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/rw.png deleted file mode 100644 index 535649178a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/rw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sa.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sa.png deleted file mode 100644 index b4641c7e8b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sa.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sb.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sb.png deleted file mode 100644 index a9937ccf09..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sb.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sc.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sc.png deleted file mode 100644 index 39ee37184e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sc.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/scotland.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/scotland.png deleted file mode 100644 index a0e57b4122..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/scotland.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sd.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sd.png deleted file mode 100644 index eaab69eb78..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sd.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/se.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/se.png deleted file mode 100644 index 1994653dac..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/se.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sg.png deleted file mode 100644 index dd34d61210..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sh.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sh.png deleted file mode 100644 index 4b1d2a2910..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sh.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/si.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/si.png deleted file mode 100644 index bb1476ff5f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/si.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sj.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sj.png deleted file mode 100644 index 160b6b5b79..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sj.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sk.png deleted file mode 100644 index 7ccbc8274a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sl.png deleted file mode 100644 index 12d812d29f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sm.png deleted file mode 100644 index 3df2fdcf8c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sn.png deleted file mode 100644 index eabb71db4e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/so.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/so.png deleted file mode 100644 index 4a1ea4b29b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/so.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sr.png deleted file mode 100644 index 5eff9271d2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/st.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/st.png deleted file mode 100644 index 2978557b19..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/st.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sv.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sv.png deleted file mode 100644 index 24987990b7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sv.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sy.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sy.png deleted file mode 100644 index f5ce30dcb7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sy.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sz.png deleted file mode 100644 index 914ee861d4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/sz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tc.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tc.png deleted file mode 100644 index 8fc1156bec..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tc.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/td.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/td.png deleted file mode 100644 index 667f21fd9d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/td.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tf.png deleted file mode 100644 index 80529a4361..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tg.png deleted file mode 100644 index 3aa00ad4df..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/th.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/th.png deleted file mode 100644 index dd8ba91719..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/th.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tj.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tj.png deleted file mode 100644 index 617bf6455f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tj.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tk.png deleted file mode 100644 index 67b8c8cb51..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tl.png deleted file mode 100644 index 77da181e9c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tm.png deleted file mode 100644 index 828020ecd0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tn.png deleted file mode 100644 index 183cdd3dc9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/to.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/to.png deleted file mode 100644 index f89b8ba755..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/to.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tr.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tr.png deleted file mode 100644 index be32f77e99..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tr.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tt.png deleted file mode 100644 index 2a11c1e20a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tv.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tv.png deleted file mode 100644 index 28274c5fb4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tv.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tw.png deleted file mode 100644 index f31c654c99..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tz.png deleted file mode 100644 index c00ff79614..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/tz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ua.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ua.png deleted file mode 100644 index 09563a2194..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ua.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ug.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ug.png deleted file mode 100644 index 33f4affade..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ug.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uk.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uk.png deleted file mode 100644 index 09563a2194..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uk.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/um.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/um.png deleted file mode 100644 index c1dd9654b0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/um.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/us.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/us.png deleted file mode 100644 index 10f451fe85..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/us.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uy.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uy.png deleted file mode 100644 index 31d948a067..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uy.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uz.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uz.png deleted file mode 100644 index fef5dc1709..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/uz.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/va.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/va.png deleted file mode 100644 index b31eaf225d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/va.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vc.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vc.png deleted file mode 100644 index 8fa17b0612..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vc.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ve.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ve.png deleted file mode 100644 index 00c90f9aff..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ve.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vg.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vg.png deleted file mode 100644 index 4156907986..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vg.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vi.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vi.png deleted file mode 100644 index ed26915a32..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vi.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vn.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vn.png deleted file mode 100644 index ec7cd48a34..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vn.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vu.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vu.png deleted file mode 100644 index b3397bc63d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/vu.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wales.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wales.png deleted file mode 100644 index e0d7cee110..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wales.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wf.png deleted file mode 100644 index 9f9558734f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wi.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wi.png deleted file mode 100644 index d18e35fcd5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wi.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wiki.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wiki.png deleted file mode 100644 index b1684ae265..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/wiki.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ws.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ws.png deleted file mode 100644 index c16950802e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ws.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ye.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ye.png deleted file mode 100644 index 468dfad038..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/ye.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/yt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/yt.png deleted file mode 100644 index c298f378be..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/yt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/za.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/za.png deleted file mode 100644 index 57c58e2119..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/za.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/zm.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/zm.png deleted file mode 100644 index c25b07beef..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/zm.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/zw.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/zw.png deleted file mode 100644 index 53c97259b9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/flags/zw.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/folding.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/folding.cc deleted file mode 100644 index 77b478862d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/folding.cc +++ /dev/null @@ -1,682 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "folding.hh" -#include - -namespace Folding { - -namespace -{ - #include "inc_case_folding.hh" - #include "inc_diacritic_folding.hh" - - /// Tests if the given char is one of the Unicode combining marks. Some are - /// caught by the diacritics folding table, but they are only handled there - /// when they come with their main characters, not by themselves. The rest - /// are caught here. - bool isCombiningMark( wchar ch ) - { - return ( - ( ch >= 0x300 && ch <= 0x36F ) || - ( ch >= 0x1DC0 && ch <= 0x1DFF ) || - ( ch >= 0x20D0 && ch <= 0x20FF ) || - ( ch >= 0xFE20 && ch <= 0xFE2F ) - ); - } -} - -wstring apply( wstring const & in, bool preserveWildcards ) -{ - // First, strip diacritics and apply ws/punctuation removal - - wstring withoutDiacritics; - - withoutDiacritics.reserve( in.size() ); - - wchar const * nextChar = in.data(); - - size_t consumed; - - for( size_t left = in.size(); left; ) - { - wchar ch = foldDiacritic( nextChar, left, consumed ); - - if ( !isCombiningMark( ch ) && !isWhitespace( ch ) - && ( !isPunct( ch ) - || ( preserveWildcards && - ( ch == '\\' || ch == '?' || ch == '*' || ch == '[' || ch == ']' ) ) - ) - ) - withoutDiacritics.push_back( ch ); - - nextChar += consumed; - left -= consumed; - } - - // Now, fold the case - - wstring caseFolded; - - caseFolded.reserve( withoutDiacritics.size() * foldCaseMaxOut ); - - nextChar = withoutDiacritics.data(); - - wchar buf[ foldCaseMaxOut ]; - - for( size_t left = withoutDiacritics.size(); left--; ) - caseFolded.append( buf, foldCase( *nextChar++, buf ) ); - - return caseFolded; -} - -wstring applySimpleCaseOnly( wstring const & in ) -{ - wchar const * nextChar = in.data(); - - wstring out; - - out.reserve( in.size() ); - - for( size_t left = in.size(); left--; ) - out.push_back( foldCaseSimple( *nextChar++ ) ); - - return out; -} - -wstring applyFullCaseOnly( wstring const & in ) -{ - wstring caseFolded; - - caseFolded.reserve( in.size() * foldCaseMaxOut ); - - wchar const * nextChar = in.data(); - - wchar buf[ foldCaseMaxOut ]; - - for( size_t left = in.size(); left--; ) - caseFolded.append( buf, foldCase( *nextChar++, buf ) ); - - return caseFolded; -} - -wstring applyDiacriticsOnly( wstring const & in ) -{ - wstring withoutDiacritics; - - withoutDiacritics.reserve( in.size() ); - - wchar const * nextChar = in.data(); - - size_t consumed; - - for( size_t left = in.size(); left; ) - { - wchar ch = foldDiacritic( nextChar, left, consumed ); - - if ( !isCombiningMark( ch ) ) - withoutDiacritics.push_back( ch ); - - nextChar += consumed; - left -= consumed; - } - - return withoutDiacritics; -} - -wstring applyPunctOnly( wstring const & in ) -{ - wchar const * nextChar = in.data(); - - wstring out; - - out.reserve( in.size() ); - - for( size_t left = in.size(); left--; ++nextChar ) - if ( !isPunct( *nextChar ) ) - out.push_back( *nextChar ); - - return out; -} - -wstring applyWhitespaceOnly( wstring const & in ) -{ - wchar const * nextChar = in.data(); - - wstring out; - - out.reserve( in.size() ); - - for( size_t left = in.size(); left--; ++nextChar ) - if ( !isWhitespace( *nextChar ) ) - out.push_back( *nextChar ); - - return out; -} - -wstring applyWhitespaceAndPunctOnly( wstring const & in ) -{ - wchar const * nextChar = in.data(); - - wstring out; - - out.reserve( in.size() ); - - for( size_t left = in.size(); left--; ++nextChar ) - if ( !isWhitespace( *nextChar ) && !isPunct( *nextChar ) ) - out.push_back( *nextChar ); - - return out; -} - -bool isWhitespace( wchar ch ) -{ - switch( ch ) - { - case '\n': - case '\r': - case '\t': - - case 0x2028: // Zl, LINE SEPARATOR - - case 0x2029: // Zp, PARAGRAPH SEPARATOR - - case 0x0020: // Zs, SPACE - case 0x00A0: // Zs, NO-BREAK SPACE - case 0x1680: // Zs, OGHAM SPACE MARK - case 0x180E: // Zs, MONGOLIAN VOWEL SEPARATOR - case 0x2000: // Zs, EN QUAD - case 0x2001: // Zs, EM QUAD - case 0x2002: // Zs, EN SPACE - case 0x2003: // Zs, EM SPACE - case 0x2004: // Zs, THREE-PER-EM SPACE - case 0x2005: // Zs, FOUR-PER-EM SPACE - case 0x2006: // Zs, SIX-PER-EM SPACE - case 0x2007: // Zs, FIGURE SPACE - case 0x2008: // Zs, PUNCTUATION SPACE - case 0x2009: // Zs, THIN SPACE - case 0x200A: // Zs, HAIR SPACE - case 0x202F: // Zs, NARROW NO-BREAK SPACE - case 0x205F: // Zs, MEDIUM MATHEMATICAL SPACE - case 0x3000: // Zs, IDEOGRAPHIC SPACE - return true; - - default: - return false; - } -} - -bool isPunct( wchar ch ) -{ - switch( ch ) - { - // Pc - - case 0x005F: // LOW LINE - case 0x203F: // UNDERTIE - case 0x2040: // CHARACTER TIE - case 0x2054: // INVERTED UNDERTIE - case 0x30FB: // KATAKANA MIDDLE DOT - case 0xFE33: // PRESENTATION FORM FOR VERTICAL LOW LINE - case 0xFE34: // PRESENTATION FORM FOR VERTICAL WAVY LOW LINE - case 0xFE4D: // DASHED LOW LINE - case 0xFE4E: // CENTRELINE LOW LINE - case 0xFE4F: // WAVY LOW LINE - case 0xFF3F: // FULLWIDTH LOW LINE - case 0xFF65: // HALFWIDTH KATAKANA MIDDLE DOT - - // Pd - case 0x002D: // HYPHEN-MINUS - case 0x058A: // ARMENIAN HYPHEN - case 0x1806: // MONGOLIAN TODO SOFT HYPHEN - case 0x2010: // HYPHEN - case 0x2011: // NON-BREAKING HYPHEN - case 0x2012: // FIGURE DASH - case 0x2013: // EN DASH - case 0x2014: // EM DASH - case 0x2015: // HORIZONTAL BAR - case 0x301C: // WAVE DASH - case 0x3030: // WAVY DASH - case 0x30A0: // KATAKANA-HIRAGANA DOUBLE HYPHEN - case 0xFE31: // PRESENTATION FORM FOR VERTICAL EM DASH - case 0xFE32: // PRESENTATION FORM FOR VERTICAL EN DASH - case 0xFE58: // SMALL EM DASH - case 0xFE63: // SMALL HYPHEN-MINUS - case 0xFF0D: // FULLWIDTH HYPHEN-MINUS - - // Ps - case 0x0028: // LEFT PARENTHESIS - case 0x005B: // LEFT SQUARE BRACKET - case 0x007B: // LEFT CURLY BRACKET - case 0x0F3A: // TIBETAN MARK GUG RTAGS GYON - case 0x0F3C: // TIBETAN MARK ANG KHANG GYON - case 0x169B: // OGHAM FEATHER MARK - case 0x201A: // SINGLE LOW-9 QUOTATION MARK - case 0x201E: // DOUBLE LOW-9 QUOTATION MARK - case 0x2045: // LEFT SQUARE BRACKET WITH QUILL - case 0x207D: // SUPERSCRIPT LEFT PARENTHESIS - case 0x208D: // SUBSCRIPT LEFT PARENTHESIS - case 0x2329: // LEFT-POINTING ANGLE BRACKET - case 0x2768: // MEDIUM LEFT PARENTHESIS ORNAMENT - case 0x276A: // MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT - case 0x276C: // MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT - case 0x276E: // HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT - case 0x2770: // HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT - case 0x2772: // LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT - case 0x2774: // MEDIUM LEFT CURLY BRACKET ORNAMENT - case 0x27C5: // LEFT S-SHAPED BAG DELIMITER - case 0x27E6: // MATHEMATICAL LEFT WHITE SQUARE BRACKET - case 0x27E8: // MATHEMATICAL LEFT ANGLE BRACKET - case 0x27EA: // MATHEMATICAL LEFT DOUBLE ANGLE BRACKET - case 0x27EC: // MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET - case 0x27EE: // MATHEMATICAL LEFT FLATTENED PARENTHESIS - case 0x2983: // LEFT WHITE CURLY BRACKET - case 0x2985: // LEFT WHITE PARENTHESIS - case 0x2987: // Z NOTATION LEFT IMAGE BRACKET - case 0x2989: // Z NOTATION LEFT BINDING BRACKET - case 0x298B: // LEFT SQUARE BRACKET WITH UNDERBAR - case 0x298D: // LEFT SQUARE BRACKET WITH TICK IN TOP CORNER - case 0x298F: // LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - case 0x2991: // LEFT ANGLE BRACKET WITH DOT - case 0x2993: // LEFT ARC LESS-THAN BRACKET - case 0x2995: // DOUBLE LEFT ARC GREATER-THAN BRACKET - case 0x2997: // LEFT BLACK TORTOISE SHELL BRACKET - case 0x29D8: // LEFT WIGGLY FENCE - case 0x29DA: // LEFT DOUBLE WIGGLY FENCE - case 0x29FC: // LEFT-POINTING CURVED ANGLE BRACKET - case 0x2E22: // TOP LEFT HALF BRACKET - case 0x2E24: // BOTTOM LEFT HALF BRACKET - case 0x2E26: // LEFT SIDEWAYS U BRACKET - case 0x2E28: // LEFT DOUBLE PARENTHESIS - case 0x3008: // LEFT ANGLE BRACKET - case 0x300A: // LEFT DOUBLE ANGLE BRACKET - case 0x300C: // LEFT CORNER BRACKET - case 0x300E: // LEFT WHITE CORNER BRACKET - case 0x3010: // LEFT BLACK LENTICULAR BRACKET - case 0x3014: // LEFT TORTOISE SHELL BRACKET - case 0x3016: // LEFT WHITE LENTICULAR BRACKET - case 0x3018: // LEFT WHITE TORTOISE SHELL BRACKET - case 0x301A: // LEFT WHITE SQUARE BRACKET - case 0x301D: // REVERSED DOUBLE PRIME QUOTATION MARK - case 0xFD3E: // ORNATE LEFT PARENTHESIS - case 0xFE17: // PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET - case 0xFE35: // PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS - case 0xFE37: // PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET - case 0xFE39: // PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET - case 0xFE3B: // PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET - case 0xFE3D: // PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET - case 0xFE3F: // PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET - case 0xFE41: // PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET - case 0xFE43: // PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET - case 0xFE47: // PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET - case 0xFE59: // SMALL LEFT PARENTHESIS - case 0xFE5B: // SMALL LEFT CURLY BRACKET - case 0xFE5D: // SMALL LEFT TORTOISE SHELL BRACKET - case 0xFF08: // FULLWIDTH LEFT PARENTHESIS - case 0xFF3B: // FULLWIDTH LEFT SQUARE BRACKET - case 0xFF5B: // FULLWIDTH LEFT CURLY BRACKET - case 0xFF5F: // FULLWIDTH LEFT WHITE PARENTHESIS - case 0xFF62: // HALFWIDTH LEFT CORNER BRACKET - - // Pe - case 0x0029: // RIGHT PARENTHESIS - case 0x005D: // RIGHT SQUARE BRACKET - case 0x007D: // RIGHT CURLY BRACKET - case 0x0F3B: // TIBETAN MARK GUG RTAGS GYAS - case 0x0F3D: // TIBETAN MARK ANG KHANG GYAS - case 0x169C: // OGHAM REVERSED FEATHER MARK - case 0x2046: // RIGHT SQUARE BRACKET WITH QUILL - case 0x207E: // SUPERSCRIPT RIGHT PARENTHESIS - case 0x208E: // SUBSCRIPT RIGHT PARENTHESIS - case 0x232A: // RIGHT-POINTING ANGLE BRACKET - case 0x23B5: // BOTTOM SQUARE BRACKET - case 0x2769: // MEDIUM RIGHT PARENTHESIS ORNAMENT - case 0x276B: // MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT - case 0x276D: // MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT - case 0x276F: // HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT - case 0x2771: // HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT - case 0x2773: // LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT - case 0x2775: // MEDIUM RIGHT CURLY BRACKET ORNAMENT - case 0x27E7: // MATHEMATICAL RIGHT WHITE SQUARE BRACKET - case 0x27E9: // MATHEMATICAL RIGHT ANGLE BRACKET - case 0x27EB: // MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET - case 0x2984: // RIGHT WHITE CURLY BRACKET - case 0x2986: // RIGHT WHITE PARENTHESIS - case 0x2988: // Z NOTATION RIGHT IMAGE BRACKET - case 0x298A: // Z NOTATION RIGHT BINDING BRACKET - case 0x298C: // RIGHT SQUARE BRACKET WITH UNDERBAR - case 0x298E: // RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER - case 0x2990: // RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER - case 0x2992: // RIGHT ANGLE BRACKET WITH DOT - case 0x2994: // RIGHT ARC GREATER-THAN BRACKET - case 0x2996: // DOUBLE RIGHT ARC LESS-THAN BRACKET - case 0x2998: // RIGHT BLACK TORTOISE SHELL BRACKET - case 0x29D9: // RIGHT WIGGLY FENCE - case 0x29DB: // RIGHT DOUBLE WIGGLY FENCE - case 0x29FD: // RIGHT-POINTING CURVED ANGLE BRACKET - case 0x3009: // RIGHT ANGLE BRACKET - case 0x300B: // RIGHT DOUBLE ANGLE BRACKET - case 0x300D: // RIGHT CORNER BRACKET - case 0x300F: // RIGHT WHITE CORNER BRACKET - case 0x3011: // RIGHT BLACK LENTICULAR BRACKET - case 0x3015: // RIGHT TORTOISE SHELL BRACKET - case 0x3017: // RIGHT WHITE LENTICULAR BRACKET - case 0x3019: // RIGHT WHITE TORTOISE SHELL BRACKET - case 0x301B: // RIGHT WHITE SQUARE BRACKET - case 0x301E: // DOUBLE PRIME QUOTATION MARK - case 0x301F: // LOW DOUBLE PRIME QUOTATION MARK - case 0xFD3F: // ORNATE RIGHT PARENTHESIS - case 0xFE36: // PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS - case 0xFE38: // PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET - case 0xFE3A: // PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET - case 0xFE3C: // PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET - case 0xFE3E: // PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET - case 0xFE40: // PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET - case 0xFE42: // PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET - case 0xFE44: // PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET - case 0xFE48: // PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET - case 0xFE5A: // SMALL RIGHT PARENTHESIS - case 0xFE5C: // SMALL RIGHT CURLY BRACKET - case 0xFE5E: // SMALL RIGHT TORTOISE SHELL BRACKET - case 0xFF09: // FULLWIDTH RIGHT PARENTHESIS - case 0xFF3D: // FULLWIDTH RIGHT SQUARE BRACKET - case 0xFF5D: // FULLWIDTH RIGHT CURLY BRACKET - case 0xFF60: // FULLWIDTH RIGHT WHITE PARENTHESIS - case 0xFF63: // HALFWIDTH RIGHT CORNER BRACKET - - // Pf - case 0x00BB: // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK - case 0x2019: // RIGHT SINGLE QUOTATION MARK - case 0x201D: // RIGHT DOUBLE QUOTATION MARK - case 0x203A: // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - - - // Pi - case 0x00AB: // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK - case 0x2018: // LEFT SINGLE QUOTATION MARK - case 0x201C: // LEFT DOUBLE QUOTATION MARK - case 0x2039: // SINGLE LEFT-POINTING ANGLE QUOTATION MARK - - // Po - case 0x0021: // EXCLAMATION MARK - case 0x0022: // QUOTATION MARK - case 0x0023: // NUMBER SIGN - case 0x0025: // PERCENT SIGN - case 0x0026: // AMPERSAND - case 0x0027: // APOSTROPHE - case 0x002A: // ASTERISK - case 0x002C: // COMMA - case 0x002E: // FULL STOP - case 0x002F: // SOLIDUS - case 0x003A: // COLON - case 0x003B: // SEMICOLON - case 0x003F: // QUESTION MARK - case 0x0040: // COMMERCIAL AT - case 0x005C: // REVERSE SOLIDUS - case 0x00A1: // INVERTED EXCLAMATION MARK - case 0x00B7: // MIDDLE DOT - case 0x00BF: // INVERTED QUESTION MARK - case 0x037E: // GREEK QUESTION MARK - case 0x0387: // GREEK ANO TELEIA - case 0x055A: // ARMENIAN APOSTROPHE - case 0x055B: // ARMENIAN EMPHASIS MARK - case 0x055C: // ARMENIAN EXCLAMATION MARK - case 0x055D: // ARMENIAN COMMA - case 0x055E: // ARMENIAN QUESTION MARK - case 0x055F: // ARMENIAN ABBREVIATION MARK - case 0x0589: // ARMENIAN FULL STOP - case 0x05BE: // HEBREW PUNCTUATION MAQAF - case 0x05C0: // HEBREW PUNCTUATION PASEQ - case 0x05C3: // HEBREW PUNCTUATION SOF PASUQ - case 0x05F3: // HEBREW PUNCTUATION GERESH - case 0x05F4: // HEBREW PUNCTUATION GERSHAYIM - case 0x060C: // ARABIC COMMA - case 0x060D: // ARABIC DATE SEPARATOR - case 0x061B: // ARABIC SEMICOLON - case 0x061F: // ARABIC QUESTION MARK - case 0x066A: // ARABIC PERCENT SIGN - case 0x066B: // ARABIC DECIMAL SEPARATOR - case 0x066C: // ARABIC THOUSANDS SEPARATOR - case 0x066D: // ARABIC FIVE POINTED STAR - case 0x06D4: // ARABIC FULL STOP - case 0x0700: // SYRIAC END OF PARAGRAPH - case 0x0701: // SYRIAC SUPRALINEAR FULL STOP - case 0x0702: // SYRIAC SUBLINEAR FULL STOP - case 0x0703: // SYRIAC SUPRALINEAR COLON - case 0x0704: // SYRIAC SUBLINEAR COLON - case 0x0705: // SYRIAC HORIZONTAL COLON - case 0x0706: // SYRIAC COLON SKEWED LEFT - case 0x0707: // SYRIAC COLON SKEWED RIGHT - case 0x0708: // SYRIAC SUPRALINEAR COLON SKEWED LEFT - case 0x0709: // SYRIAC SUBLINEAR COLON SKEWED RIGHT - case 0x070A: // SYRIAC CONTRACTION - case 0x070B: // SYRIAC HARKLEAN OBELUS - case 0x070C: // SYRIAC HARKLEAN METOBELUS - case 0x070D: // SYRIAC HARKLEAN ASTERISCUS - case 0x0964: // DEVANAGARI DANDA - case 0x0965: // DEVANAGARI DOUBLE DANDA - case 0x0970: // DEVANAGARI ABBREVIATION SIGN - case 0x0DF4: // SINHALA PUNCTUATION KUNDDALIYA - case 0x0E4F: // THAI CHARACTER FONGMAN - case 0x0E5A: // THAI CHARACTER ANGKHANKHU - case 0x0E5B: // THAI CHARACTER KHOMUT - case 0x0F04: // TIBETAN MARK INITIAL YIG MGO MDUN MA - case 0x0F05: // TIBETAN MARK CLOSING YIG MGO SGAB MA - case 0x0F06: // TIBETAN MARK CARET YIG MGO PHUR SHAD MA - case 0x0F07: // TIBETAN MARK YIG MGO TSHEG SHAD MA - case 0x0F08: // TIBETAN MARK SBRUL SHAD - case 0x0F09: // TIBETAN MARK BSKUR YIG MGO - case 0x0F0A: // TIBETAN MARK BKA- SHOG YIG MGO - case 0x0F0B: // TIBETAN MARK INTERSYLLABIC TSHEG - case 0x0F0C: // TIBETAN MARK DELIMITER TSHEG BSTAR - case 0x0F0D: // TIBETAN MARK SHAD - case 0x0F0E: // TIBETAN MARK NYIS SHAD - case 0x0F0F: // TIBETAN MARK TSHEG SHAD - case 0x0F10: // TIBETAN MARK NYIS TSHEG SHAD - case 0x0F11: // TIBETAN MARK RIN CHEN SPUNGS SHAD - case 0x0F12: // TIBETAN MARK RGYA GRAM SHAD - case 0x0F85: // TIBETAN MARK PALUTA - case 0x104A: // MYANMAR SIGN LITTLE SECTION - case 0x104B: // MYANMAR SIGN SECTION - case 0x104C: // MYANMAR SYMBOL LOCATIVE - case 0x104D: // MYANMAR SYMBOL COMPLETED - case 0x104E: // MYANMAR SYMBOL AFOREMENTIONED - case 0x104F: // MYANMAR SYMBOL GENITIVE - case 0x10FB: // GEORGIAN PARAGRAPH SEPARATOR - case 0x1361: // ETHIOPIC WORDSPACE - case 0x1362: // ETHIOPIC FULL STOP - case 0x1363: // ETHIOPIC COMMA - case 0x1364: // ETHIOPIC SEMICOLON - case 0x1365: // ETHIOPIC COLON - case 0x1366: // ETHIOPIC PREFACE COLON - case 0x1367: // ETHIOPIC QUESTION MARK - case 0x1368: // ETHIOPIC PARAGRAPH SEPARATOR - case 0x166D: // CANADIAN SYLLABICS CHI SIGN - case 0x166E: // CANADIAN SYLLABICS FULL STOP - case 0x16EB: // RUNIC SINGLE PUNCTUATION - case 0x16EC: // RUNIC MULTIPLE PUNCTUATION - case 0x16ED: // RUNIC CROSS PUNCTUATION - case 0x1735: // PHILIPPINE SINGLE PUNCTUATION - case 0x1736: // PHILIPPINE DOUBLE PUNCTUATION - case 0x17D4: // KHMER SIGN KHAN - case 0x17D5: // KHMER SIGN BARIYOOSAN - case 0x17D6: // KHMER SIGN CAMNUC PII KUUH - case 0x17D8: // KHMER SIGN BEYYAL - case 0x17D9: // KHMER SIGN PHNAEK MUAN - case 0x17DA: // KHMER SIGN KOOMUUT - case 0x1800: // MONGOLIAN BIRGA - case 0x1801: // MONGOLIAN ELLIPSIS - case 0x1802: // MONGOLIAN COMMA - case 0x1803: // MONGOLIAN FULL STOP - case 0x1804: // MONGOLIAN COLON - case 0x1805: // MONGOLIAN FOUR DOTS - case 0x1807: // MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER - case 0x1808: // MONGOLIAN MANCHU COMMA - case 0x1809: // MONGOLIAN MANCHU FULL STOP - case 0x180A: // MONGOLIAN NIRUGU - case 0x1944: // LIMBU EXCLAMATION MARK - case 0x1945: // LIMBU QUESTION MARK - case 0x2016: // DOUBLE VERTICAL LINE - case 0x2017: // DOUBLE LOW LINE - case 0x2020: // DAGGER - case 0x2021: // DOUBLE DAGGER - case 0x2022: // BULLET - case 0x2023: // TRIANGULAR BULLET - case 0x2024: // ONE DOT LEADER - case 0x2025: // TWO DOT LEADER - case 0x2026: // HORIZONTAL ELLIPSIS - case 0x2027: // HYPHENATION POINT - case 0x2030: // PER MILLE SIGN - case 0x2031: // PER TEN THOUSAND SIGN - case 0x2032: // PRIME - case 0x2033: // DOUBLE PRIME - case 0x2034: // TRIPLE PRIME - case 0x2035: // REVERSED PRIME - case 0x2036: // REVERSED DOUBLE PRIME - case 0x2037: // REVERSED TRIPLE PRIME - case 0x2038: // CARET - case 0x203B: // REFERENCE MARK - case 0x203C: // DOUBLE EXCLAMATION MARK - case 0x203D: // INTERROBANG - case 0x203E: // OVERLINE - case 0x2041: // CARET INSERTION POINT - case 0x2042: // ASTERISM - case 0x2043: // HYPHEN BULLET - case 0x2047: // DOUBLE QUESTION MARK - case 0x2048: // QUESTION EXCLAMATION MARK - case 0x2049: // EXCLAMATION QUESTION MARK - case 0x204A: // TIRONIAN SIGN ET - case 0x204B: // REVERSED PILCROW SIGN - case 0x204C: // BLACK LEFTWARDS BULLET - case 0x204D: // BLACK RIGHTWARDS BULLET - case 0x204E: // LOW ASTERISK - case 0x204F: // REVERSED SEMICOLON - case 0x2050: // CLOSE UP - case 0x2051: // TWO ASTERISKS ALIGNED VERTICALLY - case 0x2053: // SWUNG DASH - case 0x2057: // QUADRUPLE PRIME - case 0x23B6: // BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET - case 0x3001: // IDEOGRAPHIC COMMA - case 0x3002: // IDEOGRAPHIC FULL STOP - case 0x3003: // DITTO MARK - case 0x303D: // PART ALTERNATION MARK - case 0xFE30: // PRESENTATION FORM FOR VERTICAL TWO DOT LEADER - case 0xFE45: // SESAME DOT - case 0xFE46: // WHITE SESAME DOT - case 0xFE49: // DASHED OVERLINE - case 0xFE4A: // CENTRELINE OVERLINE - case 0xFE4B: // WAVY OVERLINE - case 0xFE4C: // DOUBLE WAVY OVERLINE - case 0xFE50: // SMALL COMMA - case 0xFE51: // SMALL IDEOGRAPHIC COMMA - case 0xFE52: // SMALL FULL STOP - case 0xFE54: // SMALL SEMICOLON - case 0xFE55: // SMALL COLON - case 0xFE56: // SMALL QUESTION MARK - case 0xFE57: // SMALL EXCLAMATION MARK - case 0xFE5F: // SMALL NUMBER SIGN - case 0xFE60: // SMALL AMPERSAND - case 0xFE61: // SMALL ASTERISK - case 0xFE68: // SMALL REVERSE SOLIDUS - case 0xFE6A: // SMALL PERCENT SIGN - case 0xFE6B: // SMALL COMMERCIAL AT - case 0xFF01: // FULLWIDTH EXCLAMATION MARK - case 0xFF02: // FULLWIDTH QUOTATION MARK - case 0xFF03: // FULLWIDTH NUMBER SIGN - case 0xFF05: // FULLWIDTH PERCENT SIGN - case 0xFF06: // FULLWIDTH AMPERSAND - case 0xFF07: // FULLWIDTH APOSTROPHE - case 0xFF0A: // FULLWIDTH ASTERISK - case 0xFF0C: // FULLWIDTH COMMA - case 0xFF0E: // FULLWIDTH FULL STOP - case 0xFF0F: // FULLWIDTH SOLIDUS - case 0xFF1A: // FULLWIDTH COLON - case 0xFF1B: // FULLWIDTH SEMICOLON - case 0xFF1F: // FULLWIDTH QUESTION MARK - case 0xFF20: // FULLWIDTH COMMERCIAL AT - case 0xFF3C: // FULLWIDTH REVERSE SOLIDUS - case 0xFF61: // HALFWIDTH IDEOGRAPHIC FULL STOP - case 0xFF64: // HALFWIDTH IDEOGRAPHIC COMMA - return true; - default: - return false; - } -} - -wstring trimWhitespaceOrPunct( wstring const & in ) -{ - wchar const * wordBegin = in.c_str(); - wstring::size_type wordSize = in.size(); - - // Skip any leading whitespace - while( *wordBegin && ( Folding::isWhitespace( *wordBegin ) || Folding::isPunct( *wordBegin ) ) ) - { - ++wordBegin; - --wordSize; - } - - // Skip any trailing whitespace - while( wordSize && ( Folding::isWhitespace( wordBegin[ wordSize - 1 ] ) || - Folding::isPunct( wordBegin[ wordSize - 1 ] ) ) ) - --wordSize; - - return wstring( wordBegin, wordSize ); -} - -wstring trimWhitespace( wstring const & in ) -{ - wchar const * wordBegin = in.c_str(); - wstring::size_type wordSize = in.size(); - - // Skip any leading whitespace - while( *wordBegin && Folding::isWhitespace( *wordBegin ) ) - { - ++wordBegin; - --wordSize; - } - - // Skip any trailing whitespace - while( wordSize && Folding::isWhitespace( wordBegin[ wordSize - 1 ] ) ) - --wordSize; - - return wstring( wordBegin, wordSize ); -} - -void normalizeWhitespace( wstring & str ) -{ - for( size_t x = str.size(); x-- > 1; ) // >1 -- Don't test the first char - { - if ( isWhitespace( str[ x ] ) ) - { - size_t y; - for( y = x; y && ( isWhitespace( str[ y - 1 ] ) ) ; --y ); - - if ( y != x ) - { - // Remove extra spaces - - str.erase( y, x - y ); - - x = y; - - str[ x ] = ' '; - } - } - } -} - -QString escapeWildcardSymbols( const QString & str ) -{ - QString escaped( str ); - escaped.replace( QRegExp( "([\\[\\]\\?\\*])", Qt::CaseInsensitive ), "\\\\1" ); - return escaped; -} - -QString unescapeWildcardSymbols( const QString & str ) -{ - QString unescaped( str ); - unescaped.replace( QRegExp( "\\\\([\\[\\]\\?\\*])", Qt::CaseInsensitive ), "\\1" ); - return unescaped; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/folding.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/folding.hh deleted file mode 100644 index 41734bfafd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/folding.hh +++ /dev/null @@ -1,91 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __FOLDING_HH_INCLUDED__ -#define __FOLDING_HH_INCLUDED__ - -#include "wstring.hh" -#include - -/// Folding provides means to translate several possible ways to write a -/// symbol into one. This facilitates searching. Here we currently perform -/// full case folding (everything gets translated to lowercase, ligatures -/// and complex letters are decomposed), diacritics folding (all diacritic -/// marks get removed) and whitespace/punctuation marks removal. These -/// transforms are done according to the Unicode standard and/or drafts. The -/// exact algorithms, lists and types of folding performed might get changed -/// in the future -- in this case, the Version field will be bumped up. - -namespace Folding { - -using gd::wstring; -using gd::wchar; - -/// The algorithm's version. -enum -{ - Version = 5 -}; - -/// Applies the folding algorithm to each character in the given string, -/// making another one as a result. -wstring apply( wstring const &, bool preserveWildcards = false ); - -/// Applies only simple case folding algorithm. Since many dictionaries have -/// different case style, we interpret words differing only by case as synonyms. -wstring applySimpleCaseOnly( wstring const & ); - -/// Applies only full case folding algorithm. This includes simple case, but also -/// decomposing ligatures and complex letters. -wstring applyFullCaseOnly( wstring const & ); - -/// Applies only diacritics folding algorithm. -wstring applyDiacriticsOnly( wstring const & ); - -/// Applies only punctuation folding algorithm. -wstring applyPunctOnly( wstring const & ); - -/// Applies only whitespace folding algorithm. -wstring applyWhitespaceOnly( wstring const & ); - -/// Applies only whitespace&punctuation folding algorithm. -wstring applyWhitespaceAndPunctOnly( wstring const & ); - -/// Returns true if the given character is any form of whitespace, false -/// otherwise. Whitespace corresponds to Zl/Zp/Zs Unicode classes, and also -/// includes \n, \r and \t. -bool isWhitespace( wchar ch ); - -/// Returns true if the given character is any form of punctuation, false -/// otherwise. Punctuation corresponds to Pc/Pd/Pe/Pf/Pi/Po/Ps classes. -bool isPunct( wchar ch ); - -/// Removes any whitespace or punctuation from the beginning and the end of -/// the word. -wstring trimWhitespaceOrPunct( wstring const & ); - -/// Removes any whitespace from the beginning and the end of -/// the word. -wstring trimWhitespace( wstring const & ); - -/// Turns any sequences of consecutive whitespace into a single basic space. -void normalizeWhitespace( wstring & ); - -/// Same as apply( wstring ), but without any heap operations, therefore -/// preferable when there're many strings to process. Returns -1 if the -/// operation succeded, or otherwise the minimum value of outSize required -/// to succeed. -/// Currently commented out, consider implementing it in case indices' -/// generation would be too slow. -//ssize_t apply( wchar const * in, wchar * out, size_t outSize ); - -/// Unescape all wildcard symbols (for exast search) -QString unescapeWildcardSymbols( QString const & ); - -/// Escape all wildcard symbols (for place word to input line) -QString escapeWildcardSymbols( QString const & ); - -} - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/forvo.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/forvo.cc deleted file mode 100644 index 78c999984f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/forvo.cc +++ /dev/null @@ -1,411 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "forvo.hh" -#include "wstring_qt.hh" -#include -#include -#include -#include -#include "audiolink.hh" -#include "htmlescape.hh" -#include "country.hh" -#include "language.hh" -#include "langcoder.hh" -#include "utf8.hh" -#include "gddebug.hh" -#include "qt4x5.hh" - -namespace Forvo { - -using namespace Dictionary; - -namespace { - -class ForvoDictionary: public Dictionary::Class -{ - string name; - QString apiKey, languageCode; - QNetworkAccessManager & netMgr; - -public: - - ForvoDictionary( string const & id, string const & name_, - QString const & apiKey_, - QString const & languageCode_, - QNetworkAccessManager & netMgr_ ): - Dictionary::Class( id, vector< string >() ), - name( name_ ), - apiKey( apiKey_ ), - languageCode( languageCode_ ), - netMgr( netMgr_ ) - { - } - - virtual string getName() throw() - { return name; } - - virtual map< Property, string > getProperties() throw() - { return map< Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return 0; } - - virtual unsigned long getWordCount() throw() - { return 0; } - - virtual sptr< WordSearchRequest > prefixMatch( wstring const & /*word*/, - unsigned long /*maxResults*/ ) throw( std::exception ) - { - sptr< WordSearchRequestInstant > sr = new WordSearchRequestInstant; - - sr->setUncertain( true ); - - return sr; - } - - virtual sptr< DataRequest > getArticle( wstring const &, vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - -protected: - - virtual void loadIcon() throw(); - -}; - -sptr< DataRequest > ForvoDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - if ( word.size() > 80 ) - { - // Don't make excessively large queries -- they're fruitless anyway - - return new DataRequestInstant( false ); - } - else - return new ForvoArticleRequest( word, alts, apiKey, languageCode, getId(), - netMgr ); -} - -void ForvoDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - -// Experimental code to generate icon -- but the flags clutter the interface too -// much and we're better with a single icon. -#if 0 - if ( languageCode.size() == 2 ) - { - QString countryCode = Language::countryCodeForId( LangCoder::code2toInt( languageCode.toLatin1().data() ) ); - - if ( countryCode.size() ) - { - QImage flag( QString( ":/flags/%1.png" ).arg( countryCode.toLower() ) ); - - if ( !flag.isNull() ) - { - QImage img( ":/icons/forvo_icon_base.png" ); - - { - QPainter painter( &img ); - painter.drawImage( QPoint( 5, 7 ), flag ); - } - - return QIcon( QPixmap::fromImage( img ) ); - } - } - } -#endif - dictionaryIcon = dictionaryNativeIcon = QIcon( ":/icons/forvo.png" ); - dictionaryIconLoaded = true; -} - -} - -void ForvoArticleRequest::cancel() -{ - finish(); -} - -ForvoArticleRequest::ForvoArticleRequest( wstring const & str, - vector< wstring > const & alts, - QString const & apiKey_, - QString const & languageCode_, - string const & dictionaryId_, - QNetworkAccessManager & mgr ): - apiKey( apiKey_ ), languageCode( languageCode_ ), - dictionaryId( dictionaryId_ ) -{ - connect( &mgr, SIGNAL( finished( QNetworkReply * ) ), - this, SLOT( requestFinished( QNetworkReply * ) ), - Qt::QueuedConnection ); - - addQuery( mgr, str ); - - for( unsigned x = 0; x < alts.size(); ++x ) - addQuery( mgr, alts[ x ] ); -} - -void ForvoArticleRequest::addQuery( QNetworkAccessManager & mgr, - wstring const & str ) -{ - gdDebug( "Forvo: requesting article %s\n", gd::toQString( str ).toUtf8().data() ); - - QString key; - - if ( apiKey.simplified().isEmpty() ) - { - // Use the default api key. That's the key I have just registered myself. - // It has a limit of 1000 requests a day, and may also get banned in the - // future. Can't do much about it. Get your own key, it is simple. - key = "5efa5d045a16d10ad9c4705bd5d8e56a"; - } - else - key = apiKey; - - QUrl reqUrl = QUrl::fromEncoded( - QString( "http://apifree.forvo.com/key/" + key + "/format/xml/action/word-pronunciations/word/" + - QString::fromLatin1( QUrl::toPercentEncoding( gd::toQString( str ) ) ) + "/language/" + languageCode - ).toUtf8() ); - -// DPRINTF( "req: %s\n", reqUrl.toEncoded().data() ); - - sptr< QNetworkReply > netReply = mgr.get( QNetworkRequest( reqUrl ) ); - - netReplies.push_back( NetReply( netReply, Utf8::encode( str ) ) ); -} - -void ForvoArticleRequest::requestFinished( QNetworkReply * r ) -{ - GD_DPRINTF( "Finished.\n" ); - - if ( isFinished() ) // Was cancelled - return; - - // Find this reply - - bool found = false; - - for( NetReplies::iterator i = netReplies.begin(); i != netReplies.end(); ++i ) - { - if ( i->reply.get() == r ) - { - i->finished = true; // Mark as finished - found = true; - break; - } - } - - if ( !found ) - { - // Well, that's not our reply, don't do anything - return; - } - - bool updated = false; - - for( ; netReplies.size() && netReplies.front().finished; netReplies.pop_front() ) - { - sptr< QNetworkReply > netReply = netReplies.front().reply; - - if ( netReply->error() == QNetworkReply::NoError ) - { - QDomDocument dd; - - QString errorStr; - int errorLine, errorColumn; - - if ( !dd.setContent( netReply.get(), false, &errorStr, &errorLine, &errorColumn ) ) - { - setErrorString( QString( tr( "XML parse error: %1 at %2,%3" ). - arg( errorStr ).arg( errorLine ).arg( errorColumn ) ) ); - } - else - { -// DPRINTF( "%s\n", dd.toByteArray().data() ); - - QDomNode items = dd.namedItem( "items" ); - - if ( !items.isNull() ) - { - QDomNodeList nl = items.toElement().elementsByTagName( "item" ); - - if ( nl.count() ) - { - string articleBody; - - articleBody += "
"; - articleBody += Html::escape( netReplies.front().word ); - articleBody += "
"; - - articleBody += ""; - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - { - QDomElement item = nl.item( x ).toElement(); - - QDomNode mp3 = item.namedItem( "pathmp3" ); - - if ( !mp3.isNull() ) - { - articleBody += ""; - - QUrl url( mp3.toElement().text() ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - articleBody += addAudioLink( ref, dictionaryId ).c_str(); - - bool isMale = ( item.namedItem( "sex" ).toElement().text().toLower() != "f" ); - - QString user = item.namedItem( "username" ).toElement().text(); - QString country = item.namedItem( "country" ).toElement().text(); - - string userProfile = string( "http://www.forvo.com/user/" ) + - QUrl::toPercentEncoding( user ).data() + "/"; - - int totalVotes = item.namedItem( "num_votes" ).toElement().text().toInt(); - int positiveVotes = item.namedItem( "num_positive_votes" ).toElement().text().toInt(); - int negativeVotes = totalVotes - positiveVotes; - - string votes; - - if ( positiveVotes || negativeVotes ) - { - votes += " "; - - if ( positiveVotes ) - { - votes += "+"; - votes += QByteArray::number( positiveVotes ).data(); - votes += ""; - } - - if ( negativeVotes ) - { - if ( positiveVotes ) - votes += " "; - - votes += "-"; - votes += QByteArray::number( negativeVotes ).data(); - votes += ""; - } - } - - string addTime = - tr( "Added %1" ).arg( item.namedItem( "addtime" ).toElement().text() ).toUtf8().data(); - - articleBody += ""; - articleBody += string( ""; - articleBody += ""; - } - } - - articleBody += "
\"Play\"/" ) + tr( "by" ).toUtf8().data() + " " - + Html::escape( user.toUtf8().data() ) - + " (" - + ( isMale ? tr( "Male" ) : tr( "Female" ) ).toUtf8().data() - + " " - + tr( "from" ).toUtf8().data() - + " " - + " " - + Html::escape( country.toUtf8().data() ) - + ")" - + votes - + "
"; - - Mutex::Lock _( dataMutex ); - - size_t prevSize = data.size(); - - data.resize( prevSize + articleBody.size() ); - - memcpy( &data.front() + prevSize, articleBody.data(), articleBody.size() ); - - hasAnyData = true; - - updated = true; - } - } - - QDomNode errors = dd.namedItem( "errors" ); - - if ( !errors.isNull() ) - { - QString text( errors.namedItem( "error" ).toElement().text() ); - - if ( text == "Limit/day reached." && apiKey.simplified().isEmpty() ) - { - // Give a hint that the user should apply for his own key. - - text += "\n" + tr( "Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear." ); - } - - setErrorString( text ); - } - } - GD_DPRINTF( "done.\n" ); - } - else - setErrorString( netReply->errorString() ); - } - - if ( netReplies.empty() ) - finish(); - else - if ( updated ) - update(); -} - -vector< sptr< Dictionary::Class > > makeDictionaries( - Dictionary::Initializing &, - Config::Forvo const & forvo, - QNetworkAccessManager & mgr ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - if ( forvo.enable ) - { - QStringList codes = forvo.languageCodes.split( ',', QString::SkipEmptyParts ); - - QSet< QString > usedCodes; - - for( int x = 0; x < codes.size(); ++x ) - { - QString code = codes[ x ].simplified(); - - if ( code.size() && !usedCodes.contains( code ) ) - { - // Generate id - - QCryptographicHash hash( QCryptographicHash::Md5 ); - - hash.addData( "Forvo source version 1.0" ); - hash.addData( code.toUtf8() ); - - QString displayedCode( code.toLower() ); - - if ( displayedCode.size() ) - displayedCode[ 0 ] = displayedCode[ 0 ].toUpper(); - - result.push_back( - new ForvoDictionary( hash.result().toHex().data(), - QString( "Forvo (%1)" ).arg( displayedCode ).toUtf8().data(), - forvo.apiKey, code, mgr ) ); - - usedCodes.insert( code ); - } - } - } - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/forvo.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/forvo.hh deleted file mode 100644 index c1c524f456..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/forvo.hh +++ /dev/null @@ -1,67 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __FORVO_HH_INCLUDED__ -#define __FORVO_HH_INCLUDED__ - -#include "dictionary.hh" -#include "config.hh" -#include -#include "wstring.hh" -#include - -/// Support for Forvo pronunciations, based on its API. -namespace Forvo { - -using std::vector; -using std::string; -using gd::wstring; - -vector< sptr< Dictionary::Class > > makeDictionaries( - Dictionary::Initializing &, - Config::Forvo const &, - QNetworkAccessManager & ) - throw( std::exception ); - -/// Exposed here for moc -class ForvoArticleRequest: public Dictionary::DataRequest -{ - Q_OBJECT - - struct NetReply - { - sptr< QNetworkReply > reply; - string word; - bool finished; - - NetReply( sptr< QNetworkReply > const & reply_, string const & word_ ): - reply( reply_ ), word( word_ ), finished( false ) - {} - }; - - typedef std::list< NetReply > NetReplies; - NetReplies netReplies; - QString apiKey, languageCode; - string dictionaryId; - -public: - - ForvoArticleRequest( wstring const & word, vector< wstring > const & alts, - QString const & apiKey_, - QString const & languageCode_, - string const & dictionaryId_, - QNetworkAccessManager & mgr ); - - virtual void cancel(); - -private: - - void addQuery( QNetworkAccessManager & mgr, wstring const & word ); - -private slots: - virtual void requestFinished( QNetworkReply * ); -}; - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fsencoding.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/fsencoding.cc deleted file mode 100644 index 64aef4ecb2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fsencoding.cc +++ /dev/null @@ -1,82 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "fsencoding.hh" -#include "wstring_qt.hh" -#include -#include -#include - -namespace FsEncoding { - -string encode( wstring const & str ) -{ -#ifdef __WIN32 - return string( gd::toQString( str ).toUtf8().data() ); -#else - return string( gd::toQString( str ).toLocal8Bit().data() ); -#endif -} - -string encode( string const & str ) -{ -#ifdef __WIN32 - return string( str ); -#else - return string( QString::fromUtf8( str.c_str() ).toLocal8Bit().data() ); -#endif -} - -string encode( QString const & str ) -{ -#ifdef __WIN32 - return string( str.toUtf8().data() ); -#else - return string( str.toLocal8Bit().data() ); -#endif -} - -wstring decode( string const & str ) -{ -#ifdef __WIN32 - return gd::toWString( QString::fromUtf8( str.c_str() ) ); -#else - return gd::toWString( QString::fromLocal8Bit( str.c_str() ) ); -#endif -} - -QString decode( const char *str ) -{ -#ifdef __WIN32 - return QString::fromUtf8( str ); -#else - return QString::fromLocal8Bit( str ); -#endif -} - -char separator() -{ - return QDir::separator().toLatin1(); -} - -string dirname( string const & str ) -{ - size_t x = str.rfind( separator() ); - - if ( x == string::npos ) - return string( "." ); - - return string( str, 0, x ); -} - -string basename( string const & str ) -{ - size_t x = str.rfind( separator() ); - - if ( x == string::npos ) - return str; - - return string( str, x + 1 ); -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fsencoding.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/fsencoding.hh deleted file mode 100644 index 05f76dbedf..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fsencoding.hh +++ /dev/null @@ -1,44 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __FSENCODING_HH_INCLUDED__ -#define __FSENCODING_HH_INCLUDED__ - -#include "wstring.hh" -#include - -/// Utilities to convert a wide string or an utf8 string to the local 8bit -/// encoding of the file system, and to do other manipulations on the file -/// names. -namespace FsEncoding { - -using std::string; -using gd::wstring; - -/// Encodes the given wide string to the utf8 encoding. -string encode( wstring const & ); - -/// Encodes the given string in utf8 to the system 8bit encoding. -string encode( string const & ); - -/// Encodes the QString to the utf8/local 8-bit encoding. -string encode( QString const & ); - -/// Decodes the given utf8-encoded string to a wide string. -wstring decode( string const & str ); - -/// Decodes the given utf8/local 8-bit string to a QString. -QString decode( const char *str ); - -/// Returns the filesystem separator (/ on Unix and clones, \ on Windows). -char separator(); - -/// Returns the directory part of the given filename. -string dirname( string const & ); - -/// Returns the name part of the given filename. -string basename( string const & ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ftshelpers.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ftshelpers.cc deleted file mode 100644 index 0822a7b2d0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ftshelpers.cc +++ /dev/null @@ -1,862 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "fulltextsearch.hh" -#include "ftshelpers.hh" -#include "wstring_qt.hh" -#include "file.hh" -#include "gddebug.hh" -#include "qt4x5.hh" - -#include -#include - -using std::vector; -using std::string; - -DEF_EX( exUserAbort, "User abort", Dictionary::Ex ) - -namespace FtsHelpers -{ - -bool ftsIndexIsOldOrBad( string const & indexFile, - BtreeIndexing::BtreeDictionary * dict ) -{ - File::Class idx( indexFile, "rb" ); - - FtsIdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != FtsSignature || - header.formatVersion != CurrentFtsFormatVersion + dict->getFtsIndexVersion(); -} - -bool parseSearchString( QString const & str, QStringList & indexWords, - QStringList & searchWords, - QRegExp & searchRegExp, int searchMode, - bool matchCase, - int distanceBetweenWords, - bool & hasCJK ) -{ - searchWords.clear(); - indexWords.clear(); - QRegExp spacesRegExp( "\\W+" ); - QRegExp wordRegExp( QString( "\\w{" ) + QString::number( FTS::MinimumWordSize ) + ",}" ); - QRegExp setsRegExp( "\\[[^\\]]+\\]", Qt::CaseInsensitive, QRegExp::RegExp2 ); - QRegExp regexRegExp( "\\\\[afnrtvdDwWsSbB]|\\\\x([0-9A-Fa-f]{4})|\\\\0([0-7]{3})", Qt::CaseSensitive, QRegExp::RegExp2 ); - - hasCJK = false; - for( int x = 0; x < str.size(); x++ ) - if( isCJKChar( str.at( x ).unicode() ) ) - { - hasCJK = true; - break; - } - - if( searchMode == FTS::WholeWords || searchMode == FTS::PlainText ) - { - if( hasCJK ) - return false; - - // Make words list for search in article text - searchWords = str.normalized( QString::NormalizationForm_C ) - .split( spacesRegExp, QString::SkipEmptyParts ); - - // Make words list for index search - QStringList list = str.normalized( QString::NormalizationForm_C ) - .toLower().split( spacesRegExp, QString::SkipEmptyParts ); - indexWords = list.filter( wordRegExp ); - indexWords.removeDuplicates(); - - // Make regexp for results hilite - - QStringList allWords = str.split( spacesRegExp, QString::SkipEmptyParts ); - QString searchString( "(" ); - - QString stripWords( "(?:\\W+\\w+){0," ); - if( distanceBetweenWords >= 0 ) - stripWords += QString::number( distanceBetweenWords ); - stripWords += "}\\W+"; - - QString boundWord( searchMode == FTS::WholeWords ? "\\b" : "(?:\\w*)"); - - for( int x = 0; x < allWords.size(); x++ ) - { - if( x ) - searchString += stripWords; - - searchString += boundWord + allWords[ x ] + boundWord; - } - - searchString += ")"; - - searchRegExp = QRegExp( searchString, matchCase ? Qt::CaseSensitive : Qt::CaseInsensitive, - QRegExp::RegExp2 ); - searchRegExp.setMinimal( true ); - - return !indexWords.isEmpty(); - } - else - { - // Make words list for index search - - QString tmp = str; - - // Remove RegExp commands - if( searchMode == FTS::RegExp ) - tmp.replace( regexRegExp, " " ); - - // Remove all symbol sets - tmp.replace( setsRegExp, " " ); - - QStringList list = tmp.normalized( QString::NormalizationForm_C ) - .toLower().split( spacesRegExp, QString::SkipEmptyParts ); - - if( hasCJK ) - { - QStringList wordList, hieroglyphList; - for( int i = 0; i < list.size(); i ++ ) - { - QString word = list.at( i ); - - // Check for CJK symbols in word - bool parsed = false; - QString hieroglyph; - for( int x = 0; x < word.size(); x++ ) - if( isCJKChar( word.at( x ).unicode() ) ) - { - parsed = true; - hieroglyph.append( word[ x ] ); - - if( QChar( word.at( x ) ).isHighSurrogate() - && QChar( word[ x + 1 ] ).isLowSurrogate() ) - hieroglyph.append( word[ ++x ] ); - - hieroglyphList.append( hieroglyph ); - hieroglyph.clear(); - } - - // If word don't contains CJK symbols put it in list as is - if( !parsed ) - wordList.append( word ); - } - - indexWords = wordList.filter( wordRegExp ); - indexWords.removeDuplicates(); - - hieroglyphList.removeDuplicates(); - indexWords += hieroglyphList; - } - else - { - indexWords = list.filter( wordRegExp ); - indexWords.removeDuplicates(); - } - - searchRegExp = QRegExp( str, matchCase ? Qt::CaseSensitive : Qt::CaseInsensitive, - searchMode == FTS::Wildcards ? QRegExp::WildcardUnix : QRegExp::RegExp2 ); - searchRegExp.setMinimal( true ); - } - - return true; -} - -void parseArticleForFts( uint32_t articleAddress, QString & articleText, - QMap< QString, QVector< uint32_t > > & words ) -{ - if( articleText.isEmpty() ) - return; - - QStringList articleWords = articleText.normalized( QString::NormalizationForm_C ) - .split( QRegExp( "\\W+" ), QString::SkipEmptyParts ); - QSet< QString > setOfWords; - - for( int x = 0; x < articleWords.size(); x++ ) - { - QString word = articleWords.at( x ).toLower(); - - bool hasCJK = false; - QString hieroglyph; - - // If word contains CJK symbols we add to index only these symbols separately - for( int y = 0; y < word.size(); y++ ) - if( isCJKChar( word.at( y ).unicode() ) ) - { - hasCJK = true; - hieroglyph.append( word[ y ] ); - - if( QChar( word.at( y ) ).isHighSurrogate() - && QChar( word[ y + 1 ] ).isLowSurrogate() ) - hieroglyph.append( word[ ++y ] ); - - if( !setOfWords.contains( hieroglyph ) ) - { - setOfWords.insert( hieroglyph ); - words[ hieroglyph ].push_back( articleAddress ); - } - - hieroglyph.clear(); - } - - if( !hasCJK ) - { - // Else we add word to index as is - if( word.size() < FTS::MinimumWordSize ) - continue; - - if( !setOfWords.contains( word ) ) - { - setOfWords.insert( word ); - words[ word ].push_back( articleAddress ); - } - } - } -} - -void makeFTSIndex( BtreeIndexing::BtreeDictionary * dict, QAtomicInt & isCancelled ) -{ - Mutex::Lock _( dict->getFtsMutex() ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - File::Class ftsIdx( dict->ftsIndexName(), "wb" ); - - FtsIdxHeader ftsIdxHeader; - memset( &ftsIdxHeader, 0, sizeof( ftsIdxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - ftsIdx.write( ftsIdxHeader ); - - ChunkedStorage::Writer chunks( ftsIdx ); - - BtreeIndexing::IndexedWords indexedWords; - - QSet< uint32_t > setOfOffsets; - - dict->findArticleLinks( 0, &setOfOffsets, 0, &isCancelled ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QVector< uint32_t > offsets; - offsets.resize( setOfOffsets.size() ); - uint32_t * ptr = &offsets.front(); - - for( QSet< uint32_t >::ConstIterator it = setOfOffsets.constBegin(); - it != setOfOffsets.constEnd(); ++it ) - { - *ptr = *it; - ptr++; - } - - // Free memory - setOfOffsets.clear(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - qSort( offsets ); - - QMap< QString, QVector< uint32_t > > ftsWords; - - // index articles for full-text search - for( int i = 0; i < offsets.size(); i++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QString headword, articleStr; - - dict->getArticleText( offsets.at( i ), headword, articleStr ); - - parseArticleForFts( offsets.at( i ), articleStr, ftsWords ); - } - - // Free memory - offsets.clear(); - - QMap< QString, QVector< uint32_t > >::iterator it = ftsWords.begin(); - while( it != ftsWords.end() ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - uint32_t offset = chunks.startNewBlock(); - uint32_t size = it.value().size(); - - chunks.addToBlock( &size, sizeof(uint32_t) ); - chunks.addToBlock( it.value().data(), size * sizeof(uint32_t) ); - - indexedWords.addSingleWord( gd::toWString( it.key() ), offset ); - - it = ftsWords.erase( it ); - } - - ftsIdxHeader.chunksOffset = chunks.finish(); - ftsIdxHeader.wordCount = indexedWords.size(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - BtreeIndexing::IndexInfo ftsIdxInfo = BtreeIndexing::buildIndex( indexedWords, ftsIdx ); - - // Free memory - indexedWords.clear(); - - ftsIdxHeader.indexBtreeMaxElements = ftsIdxInfo.btreeMaxElements; - ftsIdxHeader.indexRootOffset = ftsIdxInfo.rootOffset; - - ftsIdxHeader.signature = FtsHelpers::FtsSignature; - ftsIdxHeader.formatVersion = FtsHelpers::CurrentFtsFormatVersion + dict->getFtsIndexVersion(); - - ftsIdx.rewind(); - ftsIdx.writeRecords( &ftsIdxHeader, sizeof(ftsIdxHeader), 1 ); -} - -bool isCJKChar( ushort ch ) -{ - if( ( ch >= 0x3400 && ch <= 0x9FFF ) - || ( ch >= 0xF900 && ch <= 0xFAFF ) - || ( ch >= 0xD800 && ch <= 0xDFFF ) ) - return true; - - return false; -} - -void FTSResultsRequestRunnable::run() -{ - r.run(); -} - -void FTSResultsRequest::checkArticles( QVector< uint32_t > const & offsets, - QStringList const & words, - QRegExp const & searchRegexp ) -{ - int results = 0; - QString headword, articleText; - QList< uint32_t > offsetsForHeadwords; - - QString id = QString::fromUtf8( dict.getId().c_str() ); - - if( searchMode == FTS::Wildcards || searchMode == FTS::RegExp ) - { - // RegExp mode - - for( int i = 0; i < offsets.size(); i++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - dict.getArticleText( offsets.at( i ), headword, articleText ); - - if( articleText.contains( searchRegexp ) ) - { - if( headword.isEmpty() ) - offsetsForHeadwords.append( offsets.at( i ) ); - else - foundHeadwords->append( FTS::FtsHeadword( headword, id ) ); - - results++; - if( maxResults > 0 && results >= maxResults ) - break; - } - } - } - else - { - // Words mode - - QRegExp regex( "\\b\\w+\\b" ); - Qt::CaseSensitivity cs = matchCase ? Qt::CaseSensitive : Qt::CaseInsensitive; - - for( int i = 0; i < offsets.size(); i++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - int pos = 0; - int matchWordNom = 0; - int unmatchWordNom = 0; - - dict.getArticleText( offsets.at( i ), headword, articleText ); - - int articleLength = articleText.length(); - while ( pos >= 0 && pos < articleLength ) - { - pos = articleText.indexOf( regex, pos ); - if( pos >= 0 ) - { - QString s = regex.cap().normalized( QString::NormalizationForm_C ); - if( ( searchMode == FTS::WholeWords && s.compare( words.at( matchWordNom ), cs ) == 0 ) - || ( searchMode == FTS::PlainText && s.contains( words.at( matchWordNom ), cs ) ) ) - { - matchWordNom += 1; - - if( matchWordNom >= words.size() ) - break; // All words are found - - unmatchWordNom = 0; - } - else - if( matchWordNom > 0 ) - { - unmatchWordNom += 1; - if( distanceBetweenWords >= 0 && unmatchWordNom > distanceBetweenWords ) - { - matchWordNom = 0; - unmatchWordNom = 0; - } - } - pos += s.isEmpty() ? 1 : s.length(); - } - } - - if( matchWordNom >= words.size() ) - { - if( headword.isEmpty() ) - offsetsForHeadwords.append( offsets.at( i ) ); - else - foundHeadwords->append( FTS::FtsHeadword( headword, id ) ); - - results++; - if( maxResults > 0 && results >= maxResults ) - break; - } - } - } - if( !offsetsForHeadwords.isEmpty() ) - { - QVector< QString > headwords; - dict.getHeadwordsFromOffsets( offsetsForHeadwords, headwords, &isCancelled ); - for( int x = 0; x < headwords.size(); x++ ) - foundHeadwords->append( FTS::FtsHeadword( headwords.at( x ), id ) ); - } -} - -void FTSResultsRequest::indexSearch( BtreeIndexing::BtreeIndex & ftsIndex, - sptr< ChunkedStorage::Reader > chunks, - QStringList & indexWords, - QStringList & searchWords ) -{ - // Find articles which contains all requested words - - vector< BtreeIndexing::WordArticleLink > links; - QSet< uint32_t > setOfOffsets, tmp; - uint32_t size; - - if( indexWords.isEmpty() ) - return; - - int n = indexWords.length(); - for( int i = 0; i < n; i++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - tmp.clear(); - - links = ftsIndex.findArticles( gd::toWString( indexWords.at( i ) ) ); - for( unsigned x = 0; x < links.size(); x++ ) - { - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - vector< char > chunk; - char * linksPtr; - { - Mutex::Lock _( dict.getFtsMutex() ); - linksPtr = chunks->getBlock( links[ x ].articleOffset, chunk ); - } - - memcpy( &size, linksPtr, sizeof(uint32_t) ); - linksPtr += sizeof(uint32_t); - for( uint32_t y = 0; y < size; y++ ) - { - tmp.insert( *( reinterpret_cast< uint32_t * >( linksPtr ) ) ); - linksPtr += sizeof(uint32_t); - } - } - - links.clear(); - - if( i == 0 ) - setOfOffsets = tmp; - else - setOfOffsets = setOfOffsets.intersect( tmp ); - } - - tmp.clear(); - - if( setOfOffsets.isEmpty() ) - return; - - QVector< uint32_t > offsets; - offsets.resize( setOfOffsets.size() ); - uint32_t * ptr = &offsets.front(); - - for( QSet< uint32_t >::ConstIterator it = setOfOffsets.constBegin(); - it != setOfOffsets.constEnd(); ++it ) - { - *ptr = *it; - ptr++; - } - - setOfOffsets.clear(); - - qSort( offsets ); - - checkArticles( offsets, searchWords ); -} - -void FTSResultsRequest::combinedIndexSearch( BtreeIndexing::BtreeIndex & ftsIndex, - sptr< ChunkedStorage::Reader > chunks, - QStringList & indexWords, - QStringList & searchWords, - QRegExp & regexp ) -{ - // Special case - combination of index search for hieroglyphs - // and full index search for other words - - QSet< uint32_t > setOfOffsets; - uint32_t size; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - if( indexWords.isEmpty() ) - return; - - QStringList wordsList, hieroglyphsList; - - for( int x = 0; x < indexWords.size(); x++ ) - { - QString const & word = indexWords.at( x ); - if( isCJKChar( word[ 0 ].unicode() ) ) - hieroglyphsList.append( word ); - else - wordsList.append( word ); - } - - QVector< QSet< uint32_t > > allWordsLinks; - - int n = wordsList.size(); - if( !hieroglyphsList.isEmpty() ) - n += 1; - - allWordsLinks.resize( n ); - int wordNom = 0; - - if( !hieroglyphsList.empty() ) - { - QSet< uint32_t > tmp; - vector< BtreeIndexing::WordArticleLink > links; - - for( int i = 0; i < hieroglyphsList.size(); i++ ) - { - links = ftsIndex.findArticles( gd::toWString( hieroglyphsList.at( i ) ) ); - for( unsigned x = 0; x < links.size(); x++ ) - { - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - vector< char > chunk; - char * linksPtr; - { - Mutex::Lock _( dict.getFtsMutex() ); - linksPtr = chunks->getBlock( links[ x ].articleOffset, chunk ); - } - - memcpy( &size, linksPtr, sizeof(uint32_t) ); - linksPtr += sizeof(uint32_t); - for( uint32_t y = 0; y < size; y++ ) - { - tmp.insert( *( reinterpret_cast< uint32_t * >( linksPtr ) ) ); - linksPtr += sizeof(uint32_t); - } - } - - links.clear(); - - if( i == 0 ) - setOfOffsets = tmp; - else - setOfOffsets = setOfOffsets.intersect( tmp ); - } - - allWordsLinks[ wordNom ] = setOfOffsets; - setOfOffsets.clear(); - wordNom += 1; - } - - if( !wordsList.isEmpty() ) - { - QVector< BtreeIndexing::WordArticleLink > links; - ftsIndex.findArticleLinks( &links, 0, 0 ); - - for( int x = 0; x < links.size(); x++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - QString word = QString::fromUtf8( links[ x ].word.data(), links[ x ].word.size() ); - for( int i = 0; i < wordsList.size(); i++ ) - { - if( word.length() >= wordsList.at( i ).length() && word.contains( wordsList.at( i ) ) ) - { - vector< char > chunk; - char * linksPtr; - { - Mutex::Lock _( dict.getFtsMutex() ); - linksPtr = chunks->getBlock( links[ x ].articleOffset, chunk ); - } - - memcpy( &size, linksPtr, sizeof(uint32_t) ); - linksPtr += sizeof(uint32_t); - for( uint32_t y = 0; y < size; y++ ) - { - allWordsLinks[ wordNom ].insert( *( reinterpret_cast< uint32_t * >( linksPtr ) ) ); - linksPtr += sizeof(uint32_t); - } - wordNom += 1; - break; - } - } - } - - links.clear(); - } - - for( int i = 0; i < allWordsLinks.size(); i++ ) - { - if( i == 0 ) - setOfOffsets = allWordsLinks.at( i ); - else - setOfOffsets = setOfOffsets.intersect( allWordsLinks.at( i ) ); - } - - if( setOfOffsets.isEmpty() ) - return; - - allWordsLinks.clear(); - - QVector< uint32_t > offsets; - offsets.resize( setOfOffsets.size() ); - uint32_t * ptr = &offsets.front(); - - for( QSet< uint32_t >::ConstIterator it = setOfOffsets.constBegin(); - it != setOfOffsets.constEnd(); ++it ) - { - *ptr = *it; - ptr++; - } - - setOfOffsets.clear(); - - qSort( offsets ); - - checkArticles( offsets, searchWords, regexp ); -} - -void FTSResultsRequest::fullIndexSearch( BtreeIndexing::BtreeIndex & ftsIndex, - sptr< ChunkedStorage::Reader > chunks, - QStringList & indexWords, - QStringList & searchWords, - QRegExp & regexp ) -{ - QSet< uint32_t > setOfOffsets; - uint32_t size; - QVector< BtreeIndexing::WordArticleLink > links; - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - if( indexWords.isEmpty() ) - return; - - ftsIndex.findArticleLinks( &links, 0, 0 ); - - QVector< QSet< uint32_t > > allWordsLinks; - allWordsLinks.resize( indexWords.size() ); - - for( int x = 0; x < links.size(); x++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - QString word = QString::fromUtf8( links[ x ].word.data(), links[ x ].word.size() ); - for( int i = 0; i < indexWords.size(); i++ ) - { - if( word.length() >= indexWords.at( i ).length() && word.contains( indexWords.at( i ) ) ) - { - vector< char > chunk; - char * linksPtr; - { - Mutex::Lock _( dict.getFtsMutex() ); - linksPtr = chunks->getBlock( links[ x ].articleOffset, chunk ); - } - - memcpy( &size, linksPtr, sizeof(uint32_t) ); - linksPtr += sizeof(uint32_t); - for( uint32_t y = 0; y < size; y++ ) - { - allWordsLinks[ i ].insert( *( reinterpret_cast< uint32_t * >( linksPtr ) ) ); - linksPtr += sizeof(uint32_t); - } - break; - } - } - } - - links.clear(); - - for( int i = 0; i < allWordsLinks.size(); i++ ) - { - if( i == 0 ) - setOfOffsets = allWordsLinks.at( i ); - else - setOfOffsets = setOfOffsets.intersect( allWordsLinks.at( i ) ); - } - - if( setOfOffsets.isEmpty() ) - return; - - allWordsLinks.clear(); - - QVector< uint32_t > offsets; - offsets.resize( setOfOffsets.size() ); - uint32_t * ptr = &offsets.front(); - - for( QSet< uint32_t >::ConstIterator it = setOfOffsets.constBegin(); - it != setOfOffsets.constEnd(); ++it ) - { - *ptr = *it; - ptr++; - } - - setOfOffsets.clear(); - - qSort( offsets ); - - checkArticles( offsets, searchWords, regexp ); -} - -void FTSResultsRequest::fullSearch( QStringList & searchWords, QRegExp & regexp ) -{ - // Whole file survey - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - QSet< uint32_t > setOfOffsets; - setOfOffsets.reserve( dict.getArticleCount() ); - dict.findArticleLinks( 0, &setOfOffsets, 0 ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - QVector< uint32_t > offsets; - offsets.resize( setOfOffsets.size() ); - uint32_t * ptr = &offsets.front(); - - for( QSet< uint32_t >::ConstIterator it = setOfOffsets.constBegin(); - it != setOfOffsets.constEnd(); ++it ) - { - *ptr = *it; - ptr++; - } - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - setOfOffsets.clear(); - - qSort( offsets ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - return; - - checkArticles( offsets, searchWords, regexp ); -} - -void FTSResultsRequest::run() -{ - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - try - { - QStringList indexWords, searchWords; - QRegExp searchRegExp; - - if( !FtsHelpers::parseSearchString( searchString, indexWords, searchWords, searchRegExp, - searchMode, matchCase, distanceBetweenWords, hasCJK ) ) - { - finish(); - return; - } - - if( dict.haveFTSIndex() && !indexWords.isEmpty() ) - { - FtsIdxHeader ftsIdxHeader; - BtreeIndexing::BtreeIndex ftsIndex; - sptr< ChunkedStorage::Reader > chunks; - - File::Class ftsIdx( dict.ftsIndexName(), "rb" ); - - { - Mutex::Lock _( dict.getFtsMutex() ); - - ftsIdxHeader = ftsIdx.read< FtsIdxHeader >(); - - ftsIndex.openIndex( BtreeIndexing::IndexInfo( ftsIdxHeader.indexBtreeMaxElements, - ftsIdxHeader.indexRootOffset ), - ftsIdx, dict.getFtsMutex() ); - - chunks = new ChunkedStorage::Reader( ftsIdx, ftsIdxHeader.chunksOffset ); - } - - if( hasCJK ) - combinedIndexSearch( ftsIndex, chunks, indexWords, searchWords, searchRegExp ); - else - { - if( searchMode == FTS::WholeWords ) - indexSearch( ftsIndex, chunks, indexWords, searchWords ); - else - fullIndexSearch( ftsIndex, chunks, indexWords, searchWords, searchRegExp ); - } - } - else - { - fullSearch( searchWords, searchRegExp ); - } - - if( foundHeadwords && foundHeadwords->size() > 0 ) - { - Mutex::Lock _( dataMutex ); - data.resize( sizeof( foundHeadwords ) ); - memcpy( &data.front(), &foundHeadwords, sizeof( foundHeadwords ) ); - foundHeadwords = 0; - hasAnyData = true; - } - } - catch( std::exception &ex ) - { - gdWarning( "FTS: Failed full-text search for \"%s\", reason: %s\n", - dict.getName().c_str(), ex.what() ); - // Results not loaded -- we don't set the hasAnyData flag then - } - - finish(); -} - -} // namespace - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ftshelpers.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ftshelpers.hh deleted file mode 100644 index ee3838ddda..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ftshelpers.hh +++ /dev/null @@ -1,157 +0,0 @@ -#ifndef __FTSHELPERS_HH_INCLUDED__ -#define __FTSHELPERS_HH_INCLUDED__ - -#include -#include -#include -#include -#include - -#include "dictionary.hh" -#include "btreeidx.hh" -#include "fulltextsearch.hh" -#include "chunkedstorage.hh" - -#include - -namespace FtsHelpers -{ - -enum -{ - FtsSignature = 0x58535446, // FTSX on little-endian, XSTF on big-endian - CurrentFtsFormatVersion = 2 + BtreeIndexing::FormatVersion, -}; - -#pragma pack(push,1) - -struct FtsIdxHeader -{ - uint32_t signature; // First comes the signature, FTSX - uint32_t formatVersion; // File format version - uint32_t chunksOffset; // The offset to chunks' storage - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t wordCount; // Number of unique words this dictionary has -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -#pragma pack(pop) - -bool ftsIndexIsOldOrBad( std::string const & indexFile, - BtreeIndexing::BtreeDictionary * dict ); - -bool parseSearchString( QString const & str, QStringList & IndexWords, - QStringList & searchWords, - QRegExp & searchRegExp, int searchMode, - bool matchCase, - int distanceBetweenWords, - bool & hasCJK ); - -void parseArticleForFts( uint32_t articleAddress, QString & articleText, - QMap< QString, QVector< uint32_t > > & words ); - -void makeFTSIndex( BtreeIndexing::BtreeDictionary * dict, QAtomicInt & isCancelled ); - -bool isCJKChar( ushort ch ); - -class FTSResultsRequest; - -class FTSResultsRequestRunnable : public QRunnable -{ - FTSResultsRequest & r; - QSemaphore & hasExited; - -public: - - FTSResultsRequestRunnable( FTSResultsRequest & r_, - QSemaphore & hasExited_ ) : r( r_ ), - hasExited( hasExited_ ) - {} - - ~FTSResultsRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class FTSResultsRequest : public Dictionary::DataRequest -{ - BtreeIndexing::BtreeDictionary & dict; - - QString searchString; - int searchMode; - bool matchCase; - int distanceBetweenWords; - int maxResults; - bool hasCJK; - - QAtomicInt isCancelled; - QSemaphore hasExited; - - QList< FTS::FtsHeadword > * foundHeadwords; - - void checkArticles( QVector< uint32_t > const & offsets, - QStringList const & words, - QRegExp const & searchRegexp = QRegExp() ); - - void indexSearch( BtreeIndexing::BtreeIndex & ftsIndex, - sptr< ChunkedStorage::Reader > chunks, - QStringList & indexWords, - QStringList & searchWords ); - - void combinedIndexSearch( BtreeIndexing::BtreeIndex & ftsIndex, - sptr< ChunkedStorage::Reader > chunks, - QStringList & indexWords, - QStringList & searchWords, - QRegExp & regexp ); - - void fullIndexSearch( BtreeIndexing::BtreeIndex & ftsIndex, - sptr< ChunkedStorage::Reader > chunks, - QStringList & indexWords, - QStringList & searchWords, - QRegExp & regexp ); - - void fullSearch( QStringList & searchWords, QRegExp & regexp ); - -public: - - FTSResultsRequest( BtreeIndexing::BtreeDictionary & dict_, QString const & searchString_, - int searchMode_, bool matchCase_, int distanceBetweenWords_, int maxResults_ ): - dict( dict_ ), - searchString( searchString_ ), - searchMode( searchMode_ ), - matchCase( matchCase_ ), - distanceBetweenWords( distanceBetweenWords_ ), - maxResults( maxResults_ ), - hasCJK( false ) - { - foundHeadwords = new QList< FTS::FtsHeadword >; - QThreadPool::globalInstance()->start( - new FTSResultsRequestRunnable( *this, hasExited ), -100 ); - } - - void run(); // Run from another thread by DslResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~FTSResultsRequest() - { - isCancelled.ref(); - if( foundHeadwords ) - delete foundHeadwords; - hasExited.acquire(); - } -}; - -} // namespace - -#endif // __FTSHELPERS_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.cc deleted file mode 100644 index 2c4a817d3f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.cc +++ /dev/null @@ -1,646 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "fulltextsearch.hh" -#include "ftshelpers.hh" -#include "gddebug.hh" -#include "mainwindow.hh" -#include "qt4x5.hh" - -#include -#include -#include -#include - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - -#include -#include -#include - -#endif - -namespace FTS -{ - -enum -{ - MinDistanceBetweenWords = 0, - MaxDistanceBetweenWords = 15, - MinArticlesPerDictionary = 1, - MaxArticlesPerDictionary = 10000 -}; - -void Indexing::run() -{ - try - { - // First iteration - dictionaries with no more MaxDictionarySizeForFastSearch articles - for( size_t x = 0; x < dictionaries.size(); x++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( dictionaries.at( x )->canFTS() - &&!dictionaries.at( x )->haveFTSIndex() ) - { - emit sendNowIndexingName( QString::fromUtf8( dictionaries.at( x )->getName().c_str() ) ); - dictionaries.at( x )->makeFTSIndex( isCancelled, true ); - } - } - - // Second iteration - all remaining dictionaries - for( size_t x = 0; x < dictionaries.size(); x++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - break; - - if( dictionaries.at( x )->canFTS() - &&!dictionaries.at( x )->haveFTSIndex() ) - { - emit sendNowIndexingName( QString::fromUtf8( dictionaries.at( x )->getName().c_str() ) ); - dictionaries.at( x )->makeFTSIndex( isCancelled, false ); - } - } - } - catch( std::exception &ex ) - { - gdWarning( "Exception occured while full-text search: %s", ex.what() ); - } - emit sendNowIndexingName( QString() ); -} - - -FtsIndexing::FtsIndexing( std::vector< sptr< Dictionary::Class > > const & dicts): - dictionaries( dicts ), - started( false ) -{ -} - -void FtsIndexing::doIndexing() -{ - if( started ) - stopIndexing(); - - if( !started ) - { - while( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - isCancelled.deref(); - - Indexing *idx = new Indexing( isCancelled, dictionaries, indexingExited ); - - connect( idx, SIGNAL( sendNowIndexingName( QString ) ), this, SLOT( setNowIndexedName( QString ) ) ); - - QThreadPool::globalInstance()->start( idx ); - - started = true; - } -} - -void FtsIndexing::stopIndexing() -{ - if( started ) - { - if( !Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - isCancelled.ref(); - - indexingExited.acquire(); - started = false; - - setNowIndexedName( QString() ); - } -} - -void FtsIndexing::setNowIndexedName( QString name ) -{ - { - Mutex::Lock _( nameMutex ); - nowIndexing = name; - } - emit newIndexingName( name ); -} - -QString FtsIndexing::nowIndexingName() -{ - Mutex::Lock _( nameMutex ); - return nowIndexing; -} - -FullTextSearchDialog::FullTextSearchDialog( QWidget * parent, - Config::Class & cfg_, - std::vector< sptr< Dictionary::Class > > const & dictionaries_, - std::vector< Instances::Group > const & groups_, - FtsIndexing & ftsidx ) : - QDialog( parent ), - cfg( cfg_ ), - dictionaries( dictionaries_ ), - groups( groups_ ), - group( 0 ), - ftsIdx( ftsidx ) -, helpAction( this ) -{ - ui.setupUi( this ); - - if( cfg.preferences.fts.dialogGeometry.size() > 0 ) - restoreGeometry( cfg.preferences.fts.dialogGeometry ); - - setAttribute( Qt::WA_DeleteOnClose, false ); - setWindowFlags( windowFlags() & ~Qt::WindowContextHelpButtonHint ); - - setWindowTitle( tr( "Full-text search" ) ); - - setNewIndexingName( ftsIdx.nowIndexingName() ); - - connect( &ftsIdx, SIGNAL( newIndexingName( QString ) ), - this, SLOT( setNewIndexingName( QString ) ) ); - - ui.searchMode->addItem( tr( "Whole words" ), WholeWords ); - ui.searchMode->addItem( tr( "Plain text"), PlainText ); - ui.searchMode->addItem( tr( "Wildcards" ), Wildcards ); - ui.searchMode->addItem( tr( "RegExp" ), RegExp ); - ui.searchMode->setCurrentIndex( cfg.preferences.fts.searchMode ); - - ui.searchProgressBar->hide(); - - ui.checkBoxDistanceBetweenWords->setText( tr( "Max distance between words (%1-%2):" ) - .arg( QString::number( MinDistanceBetweenWords ) ) - .arg( QString::number( MaxDistanceBetweenWords ) ) ); - ui.checkBoxDistanceBetweenWords->setChecked( cfg.preferences.fts.useMaxDistanceBetweenWords ); - - ui.distanceBetweenWords->setMinimum( MinDistanceBetweenWords ); - ui.distanceBetweenWords->setMaximum( MaxDistanceBetweenWords ); - ui.distanceBetweenWords->setValue( cfg.preferences.fts.maxDistanceBetweenWords ); - - ui.checkBoxArticlesPerDictionary->setText( tr( "Max articles per dictionary (%1-%2):" ) - .arg( QString::number( MinArticlesPerDictionary ) ) - .arg( QString::number( MaxArticlesPerDictionary ) ) ); - ui.checkBoxArticlesPerDictionary->setChecked( cfg.preferences.fts.useMaxArticlesPerDictionary ); - - ui.articlesPerDictionary->setMinimum( MinArticlesPerDictionary ); - ui.articlesPerDictionary->setMaximum( MaxArticlesPerDictionary ); - ui.articlesPerDictionary->setValue( cfg.preferences.fts.maxArticlesPerDictionary ); - - ui.matchCase->setChecked( cfg.preferences.fts.matchCase ); - - setLimitsUsing(); - - connect( ui.checkBoxDistanceBetweenWords, SIGNAL( stateChanged( int ) ), - this, SLOT( setLimitsUsing() ) ); - connect( ui.checkBoxArticlesPerDictionary, SIGNAL( stateChanged( int ) ), - this, SLOT( setLimitsUsing() ) ); - connect( ui.searchMode, SIGNAL( currentIndexChanged( int ) ), - this, SLOT( setLimitsUsing() ) ); - - model = new HeadwordsListModel( this, results, activeDicts ); - ui.headwordsView->setModel( model ); - - ui.articlesFoundLabel->setText( tr( "Articles found: " ) + "0" ); - - connect( ui.headwordsView, SIGNAL( clicked( QModelIndex ) ), - this, SLOT( itemClicked( QModelIndex ) ) ); - - connect( this, SIGNAL( finished( int ) ), this, SLOT( saveData() ) ); - - connect( ui.OKButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); - connect( ui.cancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) ); - - connect( ui.helpButton, SIGNAL( clicked() ), - this, SLOT( helpRequested() ) ); - - helpAction.setShortcut( QKeySequence( "F1" ) ); - helpAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - - connect( &helpAction, SIGNAL( triggered() ), - this, SLOT( helpRequested() ) ); - - addAction( &helpAction ); - - ui.headwordsView->installEventFilter( this ); - - delegate = new WordListItemDelegate( ui.headwordsView->itemDelegate() ); - if( delegate ) - ui.headwordsView->setItemDelegate( delegate ); - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - - // Style "windowsvista" in Qt5 turn off progress bar animation for classic appearance - // We use simply "windows" style instead for this case - - barStyle = 0; - oldBarStyle = 0; - - if( QSysInfo::windowsVersion() >= QSysInfo::WV_VISTA - && ( QSysInfo::windowsVersion() & QSysInfo::WV_NT_based ) - && !IsThemeActive() ) - { - barStyle = QStyleFactory::create( "windows" ); - - if( barStyle ) - { - oldBarStyle = ui.searchProgressBar->style(); - ui.searchProgressBar->setStyle( barStyle ); - } - } - -#endif - - ui.searchLine->setText( static_cast< MainWindow * >( parent )->getTranslateLineText() ); - ui.searchLine->selectAll(); -} - -FullTextSearchDialog::~FullTextSearchDialog() -{ - if( delegate ) - delete delegate; - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - - if( barStyle ) - { - ui.searchProgressBar->setStyle( oldBarStyle ); - delete barStyle; - } - -#endif -} - -void FullTextSearchDialog::stopSearch() -{ - if( !searchReqs.empty() ) - { - for( std::list< sptr< Dictionary::DataRequest > >::iterator it = searchReqs.begin(); - it != searchReqs.end(); ++it ) - if( !(*it)->isFinished() ) - (*it)->cancel(); - - while( searchReqs.size() ) - QApplication::processEvents(); - } -} - -void FullTextSearchDialog::showDictNumbers() -{ - ui.totalDicts->setText( QString::number( activeDicts.size() ) ); - - unsigned ready = 0, toIndex = 0; - for( unsigned x = 0; x < activeDicts.size(); x++ ) - { - if( activeDicts.at( x )->haveFTSIndex() ) - ready++; - else - toIndex++; - } - - ui.readyDicts->setText( QString::number( ready ) ); - ui.toIndexDicts->setText( QString::number( toIndex ) ); -} - -void FullTextSearchDialog::saveData() -{ - cfg.preferences.fts.searchMode = ui.searchMode->currentIndex(); - cfg.preferences.fts.matchCase = ui.matchCase->isChecked(); - cfg.preferences.fts.maxArticlesPerDictionary = ui.articlesPerDictionary->text().toInt(); - cfg.preferences.fts.maxDistanceBetweenWords = ui.distanceBetweenWords->text().toInt(); - cfg.preferences.fts.useMaxDistanceBetweenWords = ui.checkBoxDistanceBetweenWords->isChecked(); - cfg.preferences.fts.useMaxArticlesPerDictionary = ui.checkBoxArticlesPerDictionary->isChecked(); - - cfg.preferences.fts.dialogGeometry = saveGeometry(); -} - -void FullTextSearchDialog::setNewIndexingName( QString name ) -{ - ui.nowIndexingLabel->setText( tr( "Now indexing: " ) - + ( name.isEmpty() ? tr( "None" ) : name ) ); - showDictNumbers(); -} - -void FullTextSearchDialog::setLimitsUsing() -{ - int mode = ui.searchMode->itemData( ui.searchMode->currentIndex() ).toInt(); - if( mode == WholeWords || mode == PlainText ) - { - ui.checkBoxDistanceBetweenWords->setEnabled( true ); - ui.distanceBetweenWords->setEnabled( ui.checkBoxDistanceBetweenWords->isChecked() ); - } - else - { - ui.checkBoxDistanceBetweenWords->setEnabled( false ); - ui.distanceBetweenWords->setEnabled( false ); - } - ui.articlesPerDictionary->setEnabled( ui.checkBoxArticlesPerDictionary->isChecked() ); -} - -void FullTextSearchDialog::accept() -{ - QStringList list1, list2; - int mode = ui.searchMode->itemData( ui.searchMode->currentIndex() ).toInt(); - - int maxResultsPerDict = ui.checkBoxArticlesPerDictionary->isChecked() ? - ui.articlesPerDictionary->value() : -1; - int distanceBetweenWords = ui.checkBoxDistanceBetweenWords->isChecked() ? - ui.distanceBetweenWords->value() : -1; - - model->clear(); - ui.articlesFoundLabel->setText( tr( "Articles found: " ) + QString::number( results.size() ) ); - - bool hasCJK; - if( !FtsHelpers::parseSearchString( ui.searchLine->text(), list1, list2, - searchRegExp, mode, - ui.matchCase->isChecked(), - distanceBetweenWords, - hasCJK ) ) - { - if( hasCJK && ( mode == WholeWords || mode == PlainText ) ) - { - QMessageBox message( QMessageBox::Warning, - "GoldenDict", - tr( "CJK symbols in search string are not compatible with search modes \"Whole words\" and \"Plain text\"" ), - QMessageBox::Ok, - this ); - message.exec(); - } - else - { - QMessageBox message( QMessageBox::Warning, - "GoldenDict", - tr( "The search line must contains at least one word containing " ) - + QString::number( MinimumWordSize ) + tr( " or more symbols" ), - QMessageBox::Ok, - this ); - message.exec(); - } - return; - } - - if( activeDicts.empty() ) - { - QMessageBox message( QMessageBox::Warning, - "GoldenDict", - tr( "No dictionaries for full-text search" ), - QMessageBox::Ok, - this ); - message.exec(); - return; - } - - ui.OKButton->setEnabled( false ); - ui.searchProgressBar->show(); - - // Make search requests - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - { - sptr< Dictionary::DataRequest > req = activeDicts[ x ]->getSearchResults( - ui.searchLine->text(), - mode, - ui.matchCase->isChecked(), - distanceBetweenWords, - maxResultsPerDict - ); - connect( req.get(), SIGNAL( finished() ), - this, SLOT( searchReqFinished() ), Qt::QueuedConnection ); - - searchReqs.push_back( req ); - } - - searchReqFinished(); // Handle any ones which have already finished -} - -void FullTextSearchDialog::searchReqFinished() -{ - while ( searchReqs.size() ) - { - std::list< sptr< Dictionary::DataRequest > >::iterator it; - for( it = searchReqs.begin(); it != searchReqs.end(); ++it ) - { - if ( (*it)->isFinished() ) - { - GD_DPRINTF( "one finished.\n" ); - - QString errorString = (*it)->getErrorString(); - - if ( (*it)->dataSize() >= 0 || errorString.size() ) - { - QList< FtsHeadword > * headwords; - if( (unsigned)(*it)->dataSize() >= sizeof( headwords ) ) - { - try - { - (*it)->getDataSlice( 0, sizeof( headwords ), &headwords ); - model->addResults( QModelIndex(), *headwords ); - delete headwords; - ui.articlesFoundLabel->setText( tr( "Articles found: " ) - + QString::number( results.size() ) ); - } - catch( std::exception & e ) - { - gdWarning( "getDataSlice error: %s\n", e.what() ); - } - } - - } - break; - } - } - if( it != searchReqs.end() ) - { - GD_DPRINTF( "erasing..\n" ); - searchReqs.erase( it ); - GD_DPRINTF( "erase done..\n" ); - continue; - } - else - break; - } - if ( searchReqs.empty() ) - { - ui.searchProgressBar->hide(); - ui.OKButton->setEnabled( true ); - QApplication::beep(); - } -} - -void FullTextSearchDialog::reject() -{ - if( !searchReqs.empty() ) - stopSearch(); - else - { - saveData(); - emit closeDialog(); - } -} - -void FullTextSearchDialog::itemClicked( const QModelIndex & idx ) -{ - if( idx.isValid() && idx.row() < results.size() ) - { - QString headword = results[ idx.row() ].headword; - emit showTranslationFor( headword, results[ idx.row() ].dictIDs, searchRegExp ); - } -} - -void FullTextSearchDialog::updateDictionaries() -{ - activeDicts.clear(); - - // Find the given group - - Instances::Group const * activeGroup = 0; - - for( unsigned x = 0; x < groups.size(); ++x ) - if ( groups[ x ].id == group ) - { - activeGroup = &groups[ x ]; - break; - } - - // If we've found a group, use its dictionaries; otherwise, use the global - // heap. - std::vector< sptr< Dictionary::Class > > const & groupDicts = - activeGroup ? activeGroup->dictionaries : dictionaries; - - // Exclude muted dictionaries - - Config::Group const * grp = cfg.getGroup( group ); - Config::MutedDictionaries const * mutedDicts; - - if( group == Instances::Group::AllGroupId ) - mutedDicts = &cfg.mutedDictionaries; - else - mutedDicts = grp ? &grp->mutedDictionaries : 0; - - if( mutedDicts && !mutedDicts->isEmpty() ) - { - activeDicts.reserve( groupDicts.size() ); - for( unsigned x = 0; x < groupDicts.size(); ++x ) - if ( groupDicts[ x ]->canFTS() - && !mutedDicts->contains( QString::fromStdString( groupDicts[ x ]->getId() ) ) - ) - activeDicts.push_back( groupDicts[ x ] ); - } - else - { - for( unsigned x = 0; x < groupDicts.size(); ++x ) - if ( groupDicts[ x ]->canFTS() ) - activeDicts.push_back( groupDicts[ x ] ); - } - - showDictNumbers(); -} - -bool FullTextSearchDialog::eventFilter( QObject * obj, QEvent * ev ) -{ - if( obj == ui.headwordsView && ev->type() == QEvent::KeyPress ) - { - QKeyEvent * kev = static_cast< QKeyEvent * >( ev ); - if( kev->key() == Qt::Key_Return || kev->key() == Qt::Key_Enter ) - { - itemClicked( ui.headwordsView->currentIndex() ); - return true; - } - } - return QDialog::eventFilter( obj, ev ); -} - -void FullTextSearchDialog::helpRequested() -{ - MainWindow * mainWindow = qobject_cast< MainWindow * >( parentWidget() ); - if( mainWindow ) - mainWindow->showGDHelpForID( "Full-text search" ); -} - -/// HeadwordsListModel - -int HeadwordsListModel::rowCount( QModelIndex const & ) const -{ - return headwords.size(); -} - -QVariant HeadwordsListModel::data( QModelIndex const & index, int role ) const -{ - if( index.row() < 0 ) - return QVariant(); - - FtsHeadword const & head = headwords[ index.row() ]; - - if ( head.headword.isEmpty() ) - return QVariant(); - - switch ( role ) - { - case Qt::ToolTipRole: - { - QString tt; - for( int x = 0; x < head.dictIDs.size(); x++ ) - { - if( x != 0 ) - tt += "
"; - - int n = getDictIndex( head.dictIDs[ x ] ); - if( n != -1 ) - tt += QString::fromUtf8( dictionaries[ n ]->getName().c_str() ) ; - } - return tt; - } - - case Qt::DisplayRole : - return head.headword; - - case Qt::EditRole : - return head.headword; - - default:; - } - - return QVariant(); -} - -void HeadwordsListModel::addResults(const QModelIndex & parent, QList< FtsHeadword > const & hws ) -{ -Q_UNUSED( parent ); - beginResetModel(); - - QList< FtsHeadword > temp; - - for( int x = 0; x < hws.length(); x++ ) - { - QList< FtsHeadword >::iterator it = qBinaryFind( headwords.begin(), headwords.end(), hws.at( x ) ); - if( it != headwords.end() ) - it->dictIDs.push_back( hws.at( x ).dictIDs.front() ); - else - temp.append( hws.at( x ) ); - } - - headwords.append( temp ); - qSort( headwords ); - - endResetModel(); - emit contentChanged(); -} - -bool HeadwordsListModel::clear() -{ - beginResetModel(); - - headwords.clear(); - - endResetModel(); - - emit contentChanged(); - - return true; -} - -int HeadwordsListModel::getDictIndex( QString const & id ) const -{ - std::string dictID( id.toUtf8().data() ); - for( unsigned x = 0; x < dictionaries.size(); x++ ) - { - if( dictionaries[ x ]->getId().compare( dictID ) == 0 ) - return x; - } - return -1; -} - -} // namespace FTS diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.hh deleted file mode 100644 index cedeed6185..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.hh +++ /dev/null @@ -1,232 +0,0 @@ -#ifndef __FULLTEXTSEARCH_HH_INCLUDED__ -#define __FULLTEXTSEARCH_HH_INCLUDED__ - -#include -#include -#include -#include -#include - -#include "dictionary.hh" -#include "ui_fulltextsearch.h" -#include "mutex.hh" -#include "config.hh" -#include "instances.hh" -#include "delegate.hh" - -namespace FTS -{ - -enum { - // Minimum word length for indexing - MinimumWordSize = 4, - - // Maximum dictionary size for first iteration of FTS indexing - MaxDictionarySizeForFastSearch = 150000, - - // Maxumum match length for highlight search results - // (QWebPage::findText() crashes on too long strings) - MaxMatchLengthForHighlightResults = 500 -}; - -enum SearchMode -{ - WholeWords = 0, - PlainText, - Wildcards, - RegExp -}; - -struct FtsHeadword -{ - QString headword; - QStringList dictIDs; - - FtsHeadword( QString const & headword_, QString const & dictid_ ) : - headword( headword_ ) - { - dictIDs.append( dictid_ ); - } - - bool operator <( FtsHeadword const & other ) const - { - if( headword[ 0 ] == '\"' || headword[ 0 ] == '\'' ) - return headword.mid( 1 ).localeAwareCompare( other.headword ) < 0; - else - return headword.localeAwareCompare( other.headword ) < 0; - } - - bool operator ==( FtsHeadword const & other ) const - { return headword.compare( other.headword, Qt::CaseInsensitive ) == 0; } - - bool operator !=( FtsHeadword const & other ) const - { return headword.compare( other.headword, Qt::CaseInsensitive ) != 0; } -}; - -class Indexing : public QObject, public QRunnable -{ -Q_OBJECT - - QAtomicInt & isCancelled; - std::vector< sptr< Dictionary::Class > > const & dictionaries; - QSemaphore & hasExited; - -public: - Indexing( QAtomicInt & cancelled, std::vector< sptr< Dictionary::Class > > const & dicts, - QSemaphore & hasExited_): - isCancelled( cancelled ), - dictionaries( dicts ), - hasExited( hasExited_ ) - {} - - ~Indexing() - { - hasExited.release(); - } - - virtual void run(); - -signals: - void sendNowIndexingName( QString ); -}; - -class FtsIndexing : public QObject -{ -Q_OBJECT -public: - FtsIndexing( std::vector< sptr< Dictionary::Class > > const & dicts ); - virtual ~FtsIndexing() - { stopIndexing(); } - - void setDictionaries( std::vector< sptr< Dictionary::Class > > const & dicts ) - { - clearDictionaries(); - dictionaries = dicts; - } - - void clearDictionaries() - { dictionaries.clear(); } - - /// Start dictionaries indexing for full-text search - void doIndexing(); - - /// Break indexing thread - void stopIndexing(); - - QString nowIndexingName(); - -protected: - QAtomicInt isCancelled; - QSemaphore indexingExited; - std::vector< sptr< Dictionary::Class > > dictionaries; - bool started; - QString nowIndexing; - Mutex nameMutex; - -private slots: - void setNowIndexedName( QString name ); - -signals: - void newIndexingName( QString name ); -}; - -/// A model to be projected into the view, according to Qt's MVC model -class HeadwordsListModel: public QAbstractListModel -{ - Q_OBJECT - -public: - - HeadwordsListModel( QWidget * parent, QList< FtsHeadword > & headwords_, - std::vector< sptr< Dictionary::Class > > const & dicts ): - QAbstractListModel( parent ), headwords( headwords_ ), - dictionaries( dicts ) - {} - - int rowCount( QModelIndex const & parent ) const; - QVariant data( QModelIndex const & index, int role ) const; - -// bool insertRows( int row, int count, const QModelIndex & parent ); -// bool removeRows( int row, int count, const QModelIndex & parent ); -// bool setData( QModelIndex const & index, const QVariant & value, int role ); - - void addResults(const QModelIndex & parent, QList< FtsHeadword > const & headwords ); - bool clear(); - -private: - - QList< FtsHeadword > & headwords; - std::vector< sptr< Dictionary::Class > > const & dictionaries; - - int getDictIndex( QString const & id ) const; - -signals: - void contentChanged(); -}; - -class FullTextSearchDialog : public QDialog -{ - Q_OBJECT - - Config::Class & cfg; - std::vector< sptr< Dictionary::Class > > const & dictionaries; - std::vector< Instances::Group > const & groups; - unsigned group; - std::vector< sptr< Dictionary::Class > > activeDicts; - - std::list< sptr< Dictionary::DataRequest > > searchReqs; - - FtsIndexing & ftsIdx; - - QRegExp searchRegExp; - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - QStyle * barStyle, * oldBarStyle; -#endif - -public: - FullTextSearchDialog( QWidget * parent, - Config::Class & cfg_, - std::vector< sptr< Dictionary::Class > > const & dictionaries_, - std::vector< Instances::Group > const & groups_, - FtsIndexing & ftsidx ); - virtual ~FullTextSearchDialog(); - - void setCurrentGroup( unsigned group_ ) - { group = group_; updateDictionaries(); } - - void stopSearch(); - -protected: - bool eventFilter( QObject * obj, QEvent * ev ); - -private: - Ui::FullTextSearchDialog ui; - QList< FtsHeadword > results; - HeadwordsListModel * model; - WordListItemDelegate * delegate; - QAction helpAction; - - void showDictNumbers(); - -private slots: - void setNewIndexingName( QString ); - void saveData(); - void accept(); - void setLimitsUsing(); - void searchReqFinished(); - void reject(); - void itemClicked( QModelIndex const & idx ); - void updateDictionaries(); - void helpRequested(); - -signals: - void showTranslationFor( QString const &, QStringList const & dictIDs, - QRegExp const & searchRegExp ); - void closeDialog(); -}; - - -} // namespace FTS - -#endif // __FULLTEXTSEARCH_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.ui deleted file mode 100644 index b4b97cd964..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/fulltextsearch.ui +++ /dev/null @@ -1,270 +0,0 @@ - - - FullTextSearchDialog - - - - 0 - 0 - 492 - 593 - - - - - 430 - 450 - - - - - - - - - - Search - - - - - - - - - - - Match case - - - - - - - - - Mode: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 21 - - - - Articles found: - - - - - - - 0 - - - -1 - - - Qt::AlignCenter - - - - - - - - - Available dictionaries in group: - - - - - - Wait for indexing: - - - - - - - - - - - - - - - - - - - - - Total: - - - - - - - Indexed: - - - - - - - - - - - - - - - - - Now indexing: None - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Search - - - false - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Cancel - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Help - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - searchLine - headwordsView - checkBoxDistanceBetweenWords - distanceBetweenWords - searchMode - checkBoxArticlesPerDictionary - articlesPerDictionary - matchCase - OKButton - cancelButton - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gdappstyle.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/gdappstyle.cc deleted file mode 100644 index 75305d1c76..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gdappstyle.cc +++ /dev/null @@ -1,57 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "gdappstyle.hh" - -#if QT_VERSION >= 0x040600 - -#include "dictionarybar.hh" - -#include -#include -#include - -GdAppStyle::GdAppStyle(QProxyStyle * parent) : QProxyStyle(parent) {} - -int GdAppStyle::pixelMetric ( PixelMetric metric, const QStyleOption * option, const QWidget * widget) const -{ - int defaultVal = QProxyStyle::pixelMetric(metric, option, widget); - - if ( dictionaryBarButton( widget ) ) - { - if ( metric == QStyle::PM_ButtonShiftVertical || metric == QStyle::PM_ButtonShiftHorizontal ) - { - if (option ->state & State_Sunken ) { - return defaultVal; - } - - if ( option ->state & State_On ) { - // No shift for for the checked tool buttons on the dictionary bar, - // that's why the whole thing with QProxyStyle is neded, to achieve this. - return 0; - } - } - } - - // Qt don't upscale icons for high dpi scales - // We limit maximum small icon size to 21 pixel - // (standard icon size for Lingvo dictionaries) - if( metric == QStyle::PM_SmallIconSize ) - return defaultVal < 21 ? defaultVal : 21; - - return defaultVal; -} - -bool GdAppStyle::dictionaryBarButton(const QWidget * widget) const { - if (widget) { - const QWidget * parent = widget->parentWidget(); - if ( parent && - qobject_cast( parent ) && - qobject_cast( widget ) ) - return true; - } - - return false; -} - -#endif // QT_VERSION diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gdappstyle.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/gdappstyle.hh deleted file mode 100644 index 006804fcee..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gdappstyle.hh +++ /dev/null @@ -1,35 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef GDAPPSTYLE_HH -#define GDAPPSTYLE_HH - -#include - -#if QT_VERSION >= 0x040600 - -#include -#include -#include - -class GdAppStyle : public QProxyStyle -{ - Q_OBJECT - -public: - explicit GdAppStyle(QProxyStyle *style = 0); - virtual int pixelMetric ( PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0 ) const; - -signals: - -public slots: - -private: - /// is this widget a tool button on the dictionary bar? - bool dictionaryBarButton(const QWidget * widget) const; - -}; - -#endif // QT_VERSION - -#endif // GDAPPSTYLE_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gddebug.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/gddebug.cc deleted file mode 100644 index c6b32c2379..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gddebug.cc +++ /dev/null @@ -1,55 +0,0 @@ -/* This file is (c) 2013 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include "gddebug.hh" - -QFile logFile; -static QTextCodec * utf8Codec; - -void gdWarning(const char *msg, ...) -{ -va_list ap; -va_start(ap, msg); -QTextCodec *localeCodec = 0; - - if( logFile.isOpen() ) - { - if( utf8Codec == 0 ) - utf8Codec = QTextCodec::codecForName( "UTF8" ); - - localeCodec = QTextCodec::codecForLocale(); - QTextCodec::setCodecForLocale( utf8Codec ); - } - - qWarning( "%s", QString().vsprintf( msg, ap ).toUtf8().data() ); - - if( logFile.isOpen() ) - { - QTextCodec::setCodecForLocale( localeCodec ); - } -} - -void gdDebug(const char *msg, ...) -{ -va_list ap; -va_start(ap, msg); -QTextCodec *localeCodec = 0; - - if( logFile.isOpen() ) - { - if( utf8Codec == 0 ) - utf8Codec = QTextCodec::codecForName( "UTF8" ); - - localeCodec = QTextCodec::codecForLocale(); - QTextCodec::setCodecForLocale( utf8Codec ); - } - - qDebug( "%s", QString().vsprintf( msg, ap ).toUtf8().data() ); - - if( logFile.isOpen() ) - { - QTextCodec::setCodecForLocale( localeCodec ); - } -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gddebug.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/gddebug.hh deleted file mode 100644 index 305863c365..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gddebug.hh +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef __GDDEBUG_HH_INCLUDED__ -#define __GDDEBUG_HH_INCLUDED__ - -#include - -#ifdef NO_CONSOLE -#define GD_DPRINTF(...) -#define GD_FDPRINTF(...) -#else -#define GD_DPRINTF(...) printf(__VA_ARGS__) -#define GD_FDPRINTF(...) fprintf(__VA_ARGS__) -#endif - -void gdWarning(const char *, ...) /* print warning message */ -#if defined(Q_CC_GNU) && !defined(__INSURE__) - __attribute__ ((format (printf, 1, 2))) -#endif -; - -void gdDebug(const char *, ...) -#if defined(Q_CC_GNU) && !defined(__INSURE__) - __attribute__ ((format (printf, 1, 2))) -#endif -; - -extern QFile logFile; - -#endif // __GDDEBUG_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/CaseFolding.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/CaseFolding.txt deleted file mode 100644 index bd0e86d03a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/CaseFolding.txt +++ /dev/null @@ -1,1202 +0,0 @@ -# CaseFolding-5.2.0.txt -# Date: 2009-05-28, 23:02:34 GMT [MD] -# -# Unicode Character Database -# Copyright (c) 1991-2009 Unicode, Inc. -# For terms of use, see http://www.unicode.org/terms_of_use.html -# For documentation, see http://www.unicode.org/reports/tr44/ -# -# Case Folding Properties -# -# This file is a supplement to the UnicodeData file. -# It provides a case folding mapping generated from the Unicode Character Database. -# If all characters are mapped according to the full mapping below, then -# case differences (according to UnicodeData.txt and SpecialCasing.txt) -# are eliminated. -# -# The data supports both implementations that require simple case foldings -# (where string lengths don't change), and implementations that allow full case folding -# (where string lengths may grow). Note that where they can be supported, the -# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match. -# -# All code points not listed in this file map to themselves. -# -# NOTE: case folding does not preserve normalization formats! -# -# For information on case folding, including how to have case folding -# preserve normalization formats, see Section 3.13 Default Case Algorithms in -# The Unicode Standard, Version 5.0. -# -# ================================================================================ -# Format -# ================================================================================ -# The entries in this file are in the following machine-readable format: -# -# ; ; ; # -# -# The status field is: -# C: common case folding, common mappings shared by both simple and full mappings. -# F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces. -# S: simple case folding, mappings to single characters where different from F. -# T: special case for uppercase I and dotted uppercase I -# - For non-Turkic languages, this mapping is normally not used. -# - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters. -# Note that the Turkic mappings do not maintain canonical equivalence without additional processing. -# See the discussions of case mapping in the Unicode Standard for more information. -# -# Usage: -# A. To do a simple case folding, use the mappings with status C + S. -# B. To do a full case folding, use the mappings with status C + F. -# -# The mappings with status T can be used or omitted depending on the desired case-folding -# behavior. (The default option is to exclude them.) -# -# ================================================================= -# @missing 0000..10FFFF; -0041; C; 0061; # LATIN CAPITAL LETTER A -0042; C; 0062; # LATIN CAPITAL LETTER B -0043; C; 0063; # LATIN CAPITAL LETTER C -0044; C; 0064; # LATIN CAPITAL LETTER D -0045; C; 0065; # LATIN CAPITAL LETTER E -0046; C; 0066; # LATIN CAPITAL LETTER F -0047; C; 0067; # LATIN CAPITAL LETTER G -0048; C; 0068; # LATIN CAPITAL LETTER H -0049; C; 0069; # LATIN CAPITAL LETTER I -0049; T; 0131; # LATIN CAPITAL LETTER I -004A; C; 006A; # LATIN CAPITAL LETTER J -004B; C; 006B; # LATIN CAPITAL LETTER K -004C; C; 006C; # LATIN CAPITAL LETTER L -004D; C; 006D; # LATIN CAPITAL LETTER M -004E; C; 006E; # LATIN CAPITAL LETTER N -004F; C; 006F; # LATIN CAPITAL LETTER O -0050; C; 0070; # LATIN CAPITAL LETTER P -0051; C; 0071; # LATIN CAPITAL LETTER Q -0052; C; 0072; # LATIN CAPITAL LETTER R -0053; C; 0073; # LATIN CAPITAL LETTER S -0054; C; 0074; # LATIN CAPITAL LETTER T -0055; C; 0075; # LATIN CAPITAL LETTER U -0056; C; 0076; # LATIN CAPITAL LETTER V -0057; C; 0077; # LATIN CAPITAL LETTER W -0058; C; 0078; # LATIN CAPITAL LETTER X -0059; C; 0079; # LATIN CAPITAL LETTER Y -005A; C; 007A; # LATIN CAPITAL LETTER Z -00B5; C; 03BC; # MICRO SIGN -00C0; C; 00E0; # LATIN CAPITAL LETTER A WITH GRAVE -00C1; C; 00E1; # LATIN CAPITAL LETTER A WITH ACUTE -00C2; C; 00E2; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX -00C3; C; 00E3; # LATIN CAPITAL LETTER A WITH TILDE -00C4; C; 00E4; # LATIN CAPITAL LETTER A WITH DIAERESIS -00C5; C; 00E5; # LATIN CAPITAL LETTER A WITH RING ABOVE -00C6; C; 00E6; # LATIN CAPITAL LETTER AE -00C7; C; 00E7; # LATIN CAPITAL LETTER C WITH CEDILLA -00C8; C; 00E8; # LATIN CAPITAL LETTER E WITH GRAVE -00C9; C; 00E9; # LATIN CAPITAL LETTER E WITH ACUTE -00CA; C; 00EA; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX -00CB; C; 00EB; # LATIN CAPITAL LETTER E WITH DIAERESIS -00CC; C; 00EC; # LATIN CAPITAL LETTER I WITH GRAVE -00CD; C; 00ED; # LATIN CAPITAL LETTER I WITH ACUTE -00CE; C; 00EE; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX -00CF; C; 00EF; # LATIN CAPITAL LETTER I WITH DIAERESIS -00D0; C; 00F0; # LATIN CAPITAL LETTER ETH -00D1; C; 00F1; # LATIN CAPITAL LETTER N WITH TILDE -00D2; C; 00F2; # LATIN CAPITAL LETTER O WITH GRAVE -00D3; C; 00F3; # LATIN CAPITAL LETTER O WITH ACUTE -00D4; C; 00F4; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX -00D5; C; 00F5; # LATIN CAPITAL LETTER O WITH TILDE -00D6; C; 00F6; # LATIN CAPITAL LETTER O WITH DIAERESIS -00D8; C; 00F8; # LATIN CAPITAL LETTER O WITH STROKE -00D9; C; 00F9; # LATIN CAPITAL LETTER U WITH GRAVE -00DA; C; 00FA; # LATIN CAPITAL LETTER U WITH ACUTE -00DB; C; 00FB; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX -00DC; C; 00FC; # LATIN CAPITAL LETTER U WITH DIAERESIS -00DD; C; 00FD; # LATIN CAPITAL LETTER Y WITH ACUTE -00DE; C; 00FE; # LATIN CAPITAL LETTER THORN -00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S -0100; C; 0101; # LATIN CAPITAL LETTER A WITH MACRON -0102; C; 0103; # LATIN CAPITAL LETTER A WITH BREVE -0104; C; 0105; # LATIN CAPITAL LETTER A WITH OGONEK -0106; C; 0107; # LATIN CAPITAL LETTER C WITH ACUTE -0108; C; 0109; # LATIN CAPITAL LETTER C WITH CIRCUMFLEX -010A; C; 010B; # LATIN CAPITAL LETTER C WITH DOT ABOVE -010C; C; 010D; # LATIN CAPITAL LETTER C WITH CARON -010E; C; 010F; # LATIN CAPITAL LETTER D WITH CARON -0110; C; 0111; # LATIN CAPITAL LETTER D WITH STROKE -0112; C; 0113; # LATIN CAPITAL LETTER E WITH MACRON -0114; C; 0115; # LATIN CAPITAL LETTER E WITH BREVE -0116; C; 0117; # LATIN CAPITAL LETTER E WITH DOT ABOVE -0118; C; 0119; # LATIN CAPITAL LETTER E WITH OGONEK -011A; C; 011B; # LATIN CAPITAL LETTER E WITH CARON -011C; C; 011D; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX -011E; C; 011F; # LATIN CAPITAL LETTER G WITH BREVE -0120; C; 0121; # LATIN CAPITAL LETTER G WITH DOT ABOVE -0122; C; 0123; # LATIN CAPITAL LETTER G WITH CEDILLA -0124; C; 0125; # LATIN CAPITAL LETTER H WITH CIRCUMFLEX -0126; C; 0127; # LATIN CAPITAL LETTER H WITH STROKE -0128; C; 0129; # LATIN CAPITAL LETTER I WITH TILDE -012A; C; 012B; # LATIN CAPITAL LETTER I WITH MACRON -012C; C; 012D; # LATIN CAPITAL LETTER I WITH BREVE -012E; C; 012F; # LATIN CAPITAL LETTER I WITH OGONEK -0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE -0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE -0132; C; 0133; # LATIN CAPITAL LIGATURE IJ -0134; C; 0135; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX -0136; C; 0137; # LATIN CAPITAL LETTER K WITH CEDILLA -0139; C; 013A; # LATIN CAPITAL LETTER L WITH ACUTE -013B; C; 013C; # LATIN CAPITAL LETTER L WITH CEDILLA -013D; C; 013E; # LATIN CAPITAL LETTER L WITH CARON -013F; C; 0140; # LATIN CAPITAL LETTER L WITH MIDDLE DOT -0141; C; 0142; # LATIN CAPITAL LETTER L WITH STROKE -0143; C; 0144; # LATIN CAPITAL LETTER N WITH ACUTE -0145; C; 0146; # LATIN CAPITAL LETTER N WITH CEDILLA -0147; C; 0148; # LATIN CAPITAL LETTER N WITH CARON -0149; F; 02BC 006E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE -014A; C; 014B; # LATIN CAPITAL LETTER ENG -014C; C; 014D; # LATIN CAPITAL LETTER O WITH MACRON -014E; C; 014F; # LATIN CAPITAL LETTER O WITH BREVE -0150; C; 0151; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE -0152; C; 0153; # LATIN CAPITAL LIGATURE OE -0154; C; 0155; # LATIN CAPITAL LETTER R WITH ACUTE -0156; C; 0157; # LATIN CAPITAL LETTER R WITH CEDILLA -0158; C; 0159; # LATIN CAPITAL LETTER R WITH CARON -015A; C; 015B; # LATIN CAPITAL LETTER S WITH ACUTE -015C; C; 015D; # LATIN CAPITAL LETTER S WITH CIRCUMFLEX -015E; C; 015F; # LATIN CAPITAL LETTER S WITH CEDILLA -0160; C; 0161; # LATIN CAPITAL LETTER S WITH CARON -0162; C; 0163; # LATIN CAPITAL LETTER T WITH CEDILLA -0164; C; 0165; # LATIN CAPITAL LETTER T WITH CARON -0166; C; 0167; # LATIN CAPITAL LETTER T WITH STROKE -0168; C; 0169; # LATIN CAPITAL LETTER U WITH TILDE -016A; C; 016B; # LATIN CAPITAL LETTER U WITH MACRON -016C; C; 016D; # LATIN CAPITAL LETTER U WITH BREVE -016E; C; 016F; # LATIN CAPITAL LETTER U WITH RING ABOVE -0170; C; 0171; # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE -0172; C; 0173; # LATIN CAPITAL LETTER U WITH OGONEK -0174; C; 0175; # LATIN CAPITAL LETTER W WITH CIRCUMFLEX -0176; C; 0177; # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX -0178; C; 00FF; # LATIN CAPITAL LETTER Y WITH DIAERESIS -0179; C; 017A; # LATIN CAPITAL LETTER Z WITH ACUTE -017B; C; 017C; # LATIN CAPITAL LETTER Z WITH DOT ABOVE -017D; C; 017E; # LATIN CAPITAL LETTER Z WITH CARON -017F; C; 0073; # LATIN SMALL LETTER LONG S -0181; C; 0253; # LATIN CAPITAL LETTER B WITH HOOK -0182; C; 0183; # LATIN CAPITAL LETTER B WITH TOPBAR -0184; C; 0185; # LATIN CAPITAL LETTER TONE SIX -0186; C; 0254; # LATIN CAPITAL LETTER OPEN O -0187; C; 0188; # LATIN CAPITAL LETTER C WITH HOOK -0189; C; 0256; # LATIN CAPITAL LETTER AFRICAN D -018A; C; 0257; # LATIN CAPITAL LETTER D WITH HOOK -018B; C; 018C; # LATIN CAPITAL LETTER D WITH TOPBAR -018E; C; 01DD; # LATIN CAPITAL LETTER REVERSED E -018F; C; 0259; # LATIN CAPITAL LETTER SCHWA -0190; C; 025B; # LATIN CAPITAL LETTER OPEN E -0191; C; 0192; # LATIN CAPITAL LETTER F WITH HOOK -0193; C; 0260; # LATIN CAPITAL LETTER G WITH HOOK -0194; C; 0263; # LATIN CAPITAL LETTER GAMMA -0196; C; 0269; # LATIN CAPITAL LETTER IOTA -0197; C; 0268; # LATIN CAPITAL LETTER I WITH STROKE -0198; C; 0199; # LATIN CAPITAL LETTER K WITH HOOK -019C; C; 026F; # LATIN CAPITAL LETTER TURNED M -019D; C; 0272; # LATIN CAPITAL LETTER N WITH LEFT HOOK -019F; C; 0275; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE -01A0; C; 01A1; # LATIN CAPITAL LETTER O WITH HORN -01A2; C; 01A3; # LATIN CAPITAL LETTER OI -01A4; C; 01A5; # LATIN CAPITAL LETTER P WITH HOOK -01A6; C; 0280; # LATIN LETTER YR -01A7; C; 01A8; # LATIN CAPITAL LETTER TONE TWO -01A9; C; 0283; # LATIN CAPITAL LETTER ESH -01AC; C; 01AD; # LATIN CAPITAL LETTER T WITH HOOK -01AE; C; 0288; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK -01AF; C; 01B0; # LATIN CAPITAL LETTER U WITH HORN -01B1; C; 028A; # LATIN CAPITAL LETTER UPSILON -01B2; C; 028B; # LATIN CAPITAL LETTER V WITH HOOK -01B3; C; 01B4; # LATIN CAPITAL LETTER Y WITH HOOK -01B5; C; 01B6; # LATIN CAPITAL LETTER Z WITH STROKE -01B7; C; 0292; # LATIN CAPITAL LETTER EZH -01B8; C; 01B9; # LATIN CAPITAL LETTER EZH REVERSED -01BC; C; 01BD; # LATIN CAPITAL LETTER TONE FIVE -01C4; C; 01C6; # LATIN CAPITAL LETTER DZ WITH CARON -01C5; C; 01C6; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON -01C7; C; 01C9; # LATIN CAPITAL LETTER LJ -01C8; C; 01C9; # LATIN CAPITAL LETTER L WITH SMALL LETTER J -01CA; C; 01CC; # LATIN CAPITAL LETTER NJ -01CB; C; 01CC; # LATIN CAPITAL LETTER N WITH SMALL LETTER J -01CD; C; 01CE; # LATIN CAPITAL LETTER A WITH CARON -01CF; C; 01D0; # LATIN CAPITAL LETTER I WITH CARON -01D1; C; 01D2; # LATIN CAPITAL LETTER O WITH CARON -01D3; C; 01D4; # LATIN CAPITAL LETTER U WITH CARON -01D5; C; 01D6; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON -01D7; C; 01D8; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE -01D9; C; 01DA; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON -01DB; C; 01DC; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE -01DE; C; 01DF; # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON -01E0; C; 01E1; # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON -01E2; C; 01E3; # LATIN CAPITAL LETTER AE WITH MACRON -01E4; C; 01E5; # LATIN CAPITAL LETTER G WITH STROKE -01E6; C; 01E7; # LATIN CAPITAL LETTER G WITH CARON -01E8; C; 01E9; # LATIN CAPITAL LETTER K WITH CARON -01EA; C; 01EB; # LATIN CAPITAL LETTER O WITH OGONEK -01EC; C; 01ED; # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON -01EE; C; 01EF; # LATIN CAPITAL LETTER EZH WITH CARON -01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON -01F1; C; 01F3; # LATIN CAPITAL LETTER DZ -01F2; C; 01F3; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z -01F4; C; 01F5; # LATIN CAPITAL LETTER G WITH ACUTE -01F6; C; 0195; # LATIN CAPITAL LETTER HWAIR -01F7; C; 01BF; # LATIN CAPITAL LETTER WYNN -01F8; C; 01F9; # LATIN CAPITAL LETTER N WITH GRAVE -01FA; C; 01FB; # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE -01FC; C; 01FD; # LATIN CAPITAL LETTER AE WITH ACUTE -01FE; C; 01FF; # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE -0200; C; 0201; # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE -0202; C; 0203; # LATIN CAPITAL LETTER A WITH INVERTED BREVE -0204; C; 0205; # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE -0206; C; 0207; # LATIN CAPITAL LETTER E WITH INVERTED BREVE -0208; C; 0209; # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE -020A; C; 020B; # LATIN CAPITAL LETTER I WITH INVERTED BREVE -020C; C; 020D; # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE -020E; C; 020F; # LATIN CAPITAL LETTER O WITH INVERTED BREVE -0210; C; 0211; # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE -0212; C; 0213; # LATIN CAPITAL LETTER R WITH INVERTED BREVE -0214; C; 0215; # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE -0216; C; 0217; # LATIN CAPITAL LETTER U WITH INVERTED BREVE -0218; C; 0219; # LATIN CAPITAL LETTER S WITH COMMA BELOW -021A; C; 021B; # LATIN CAPITAL LETTER T WITH COMMA BELOW -021C; C; 021D; # LATIN CAPITAL LETTER YOGH -021E; C; 021F; # LATIN CAPITAL LETTER H WITH CARON -0220; C; 019E; # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG -0222; C; 0223; # LATIN CAPITAL LETTER OU -0224; C; 0225; # LATIN CAPITAL LETTER Z WITH HOOK -0226; C; 0227; # LATIN CAPITAL LETTER A WITH DOT ABOVE -0228; C; 0229; # LATIN CAPITAL LETTER E WITH CEDILLA -022A; C; 022B; # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON -022C; C; 022D; # LATIN CAPITAL LETTER O WITH TILDE AND MACRON -022E; C; 022F; # LATIN CAPITAL LETTER O WITH DOT ABOVE -0230; C; 0231; # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON -0232; C; 0233; # LATIN CAPITAL LETTER Y WITH MACRON -023A; C; 2C65; # LATIN CAPITAL LETTER A WITH STROKE -023B; C; 023C; # LATIN CAPITAL LETTER C WITH STROKE -023D; C; 019A; # LATIN CAPITAL LETTER L WITH BAR -023E; C; 2C66; # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE -0241; C; 0242; # LATIN CAPITAL LETTER GLOTTAL STOP -0243; C; 0180; # LATIN CAPITAL LETTER B WITH STROKE -0244; C; 0289; # LATIN CAPITAL LETTER U BAR -0245; C; 028C; # LATIN CAPITAL LETTER TURNED V -0246; C; 0247; # LATIN CAPITAL LETTER E WITH STROKE -0248; C; 0249; # LATIN CAPITAL LETTER J WITH STROKE -024A; C; 024B; # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL -024C; C; 024D; # LATIN CAPITAL LETTER R WITH STROKE -024E; C; 024F; # LATIN CAPITAL LETTER Y WITH STROKE -0345; C; 03B9; # COMBINING GREEK YPOGEGRAMMENI -0370; C; 0371; # GREEK CAPITAL LETTER HETA -0372; C; 0373; # GREEK CAPITAL LETTER ARCHAIC SAMPI -0376; C; 0377; # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA -0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS -0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS -0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS -038A; C; 03AF; # GREEK CAPITAL LETTER IOTA WITH TONOS -038C; C; 03CC; # GREEK CAPITAL LETTER OMICRON WITH TONOS -038E; C; 03CD; # GREEK CAPITAL LETTER UPSILON WITH TONOS -038F; C; 03CE; # GREEK CAPITAL LETTER OMEGA WITH TONOS -0390; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS -0391; C; 03B1; # GREEK CAPITAL LETTER ALPHA -0392; C; 03B2; # GREEK CAPITAL LETTER BETA -0393; C; 03B3; # GREEK CAPITAL LETTER GAMMA -0394; C; 03B4; # GREEK CAPITAL LETTER DELTA -0395; C; 03B5; # GREEK CAPITAL LETTER EPSILON -0396; C; 03B6; # GREEK CAPITAL LETTER ZETA -0397; C; 03B7; # GREEK CAPITAL LETTER ETA -0398; C; 03B8; # GREEK CAPITAL LETTER THETA -0399; C; 03B9; # GREEK CAPITAL LETTER IOTA -039A; C; 03BA; # GREEK CAPITAL LETTER KAPPA -039B; C; 03BB; # GREEK CAPITAL LETTER LAMDA -039C; C; 03BC; # GREEK CAPITAL LETTER MU -039D; C; 03BD; # GREEK CAPITAL LETTER NU -039E; C; 03BE; # GREEK CAPITAL LETTER XI -039F; C; 03BF; # GREEK CAPITAL LETTER OMICRON -03A0; C; 03C0; # GREEK CAPITAL LETTER PI -03A1; C; 03C1; # GREEK CAPITAL LETTER RHO -03A3; C; 03C3; # GREEK CAPITAL LETTER SIGMA -03A4; C; 03C4; # GREEK CAPITAL LETTER TAU -03A5; C; 03C5; # GREEK CAPITAL LETTER UPSILON -03A6; C; 03C6; # GREEK CAPITAL LETTER PHI -03A7; C; 03C7; # GREEK CAPITAL LETTER CHI -03A8; C; 03C8; # GREEK CAPITAL LETTER PSI -03A9; C; 03C9; # GREEK CAPITAL LETTER OMEGA -03AA; C; 03CA; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA -03AB; C; 03CB; # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA -03B0; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS -03C2; C; 03C3; # GREEK SMALL LETTER FINAL SIGMA -03CF; C; 03D7; # GREEK CAPITAL KAI SYMBOL -03D0; C; 03B2; # GREEK BETA SYMBOL -03D1; C; 03B8; # GREEK THETA SYMBOL -03D5; C; 03C6; # GREEK PHI SYMBOL -03D6; C; 03C0; # GREEK PI SYMBOL -03D8; C; 03D9; # GREEK LETTER ARCHAIC KOPPA -03DA; C; 03DB; # GREEK LETTER STIGMA -03DC; C; 03DD; # GREEK LETTER DIGAMMA -03DE; C; 03DF; # GREEK LETTER KOPPA -03E0; C; 03E1; # GREEK LETTER SAMPI -03E2; C; 03E3; # COPTIC CAPITAL LETTER SHEI -03E4; C; 03E5; # COPTIC CAPITAL LETTER FEI -03E6; C; 03E7; # COPTIC CAPITAL LETTER KHEI -03E8; C; 03E9; # COPTIC CAPITAL LETTER HORI -03EA; C; 03EB; # COPTIC CAPITAL LETTER GANGIA -03EC; C; 03ED; # COPTIC CAPITAL LETTER SHIMA -03EE; C; 03EF; # COPTIC CAPITAL LETTER DEI -03F0; C; 03BA; # GREEK KAPPA SYMBOL -03F1; C; 03C1; # GREEK RHO SYMBOL -03F4; C; 03B8; # GREEK CAPITAL THETA SYMBOL -03F5; C; 03B5; # GREEK LUNATE EPSILON SYMBOL -03F7; C; 03F8; # GREEK CAPITAL LETTER SHO -03F9; C; 03F2; # GREEK CAPITAL LUNATE SIGMA SYMBOL -03FA; C; 03FB; # GREEK CAPITAL LETTER SAN -03FD; C; 037B; # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL -03FE; C; 037C; # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL -03FF; C; 037D; # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL -0400; C; 0450; # CYRILLIC CAPITAL LETTER IE WITH GRAVE -0401; C; 0451; # CYRILLIC CAPITAL LETTER IO -0402; C; 0452; # CYRILLIC CAPITAL LETTER DJE -0403; C; 0453; # CYRILLIC CAPITAL LETTER GJE -0404; C; 0454; # CYRILLIC CAPITAL LETTER UKRAINIAN IE -0405; C; 0455; # CYRILLIC CAPITAL LETTER DZE -0406; C; 0456; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I -0407; C; 0457; # CYRILLIC CAPITAL LETTER YI -0408; C; 0458; # CYRILLIC CAPITAL LETTER JE -0409; C; 0459; # CYRILLIC CAPITAL LETTER LJE -040A; C; 045A; # CYRILLIC CAPITAL LETTER NJE -040B; C; 045B; # CYRILLIC CAPITAL LETTER TSHE -040C; C; 045C; # CYRILLIC CAPITAL LETTER KJE -040D; C; 045D; # CYRILLIC CAPITAL LETTER I WITH GRAVE -040E; C; 045E; # CYRILLIC CAPITAL LETTER SHORT U -040F; C; 045F; # CYRILLIC CAPITAL LETTER DZHE -0410; C; 0430; # CYRILLIC CAPITAL LETTER A -0411; C; 0431; # CYRILLIC CAPITAL LETTER BE -0412; C; 0432; # CYRILLIC CAPITAL LETTER VE -0413; C; 0433; # CYRILLIC CAPITAL LETTER GHE -0414; C; 0434; # CYRILLIC CAPITAL LETTER DE -0415; C; 0435; # CYRILLIC CAPITAL LETTER IE -0416; C; 0436; # CYRILLIC CAPITAL LETTER ZHE -0417; C; 0437; # CYRILLIC CAPITAL LETTER ZE -0418; C; 0438; # CYRILLIC CAPITAL LETTER I -0419; C; 0439; # CYRILLIC CAPITAL LETTER SHORT I -041A; C; 043A; # CYRILLIC CAPITAL LETTER KA -041B; C; 043B; # CYRILLIC CAPITAL LETTER EL -041C; C; 043C; # CYRILLIC CAPITAL LETTER EM -041D; C; 043D; # CYRILLIC CAPITAL LETTER EN -041E; C; 043E; # CYRILLIC CAPITAL LETTER O -041F; C; 043F; # CYRILLIC CAPITAL LETTER PE -0420; C; 0440; # CYRILLIC CAPITAL LETTER ER -0421; C; 0441; # CYRILLIC CAPITAL LETTER ES -0422; C; 0442; # CYRILLIC CAPITAL LETTER TE -0423; C; 0443; # CYRILLIC CAPITAL LETTER U -0424; C; 0444; # CYRILLIC CAPITAL LETTER EF -0425; C; 0445; # CYRILLIC CAPITAL LETTER HA -0426; C; 0446; # CYRILLIC CAPITAL LETTER TSE -0427; C; 0447; # CYRILLIC CAPITAL LETTER CHE -0428; C; 0448; # CYRILLIC CAPITAL LETTER SHA -0429; C; 0449; # CYRILLIC CAPITAL LETTER SHCHA -042A; C; 044A; # CYRILLIC CAPITAL LETTER HARD SIGN -042B; C; 044B; # CYRILLIC CAPITAL LETTER YERU -042C; C; 044C; # CYRILLIC CAPITAL LETTER SOFT SIGN -042D; C; 044D; # CYRILLIC CAPITAL LETTER E -042E; C; 044E; # CYRILLIC CAPITAL LETTER YU -042F; C; 044F; # CYRILLIC CAPITAL LETTER YA -0460; C; 0461; # CYRILLIC CAPITAL LETTER OMEGA -0462; C; 0463; # CYRILLIC CAPITAL LETTER YAT -0464; C; 0465; # CYRILLIC CAPITAL LETTER IOTIFIED E -0466; C; 0467; # CYRILLIC CAPITAL LETTER LITTLE YUS -0468; C; 0469; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS -046A; C; 046B; # CYRILLIC CAPITAL LETTER BIG YUS -046C; C; 046D; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS -046E; C; 046F; # CYRILLIC CAPITAL LETTER KSI -0470; C; 0471; # CYRILLIC CAPITAL LETTER PSI -0472; C; 0473; # CYRILLIC CAPITAL LETTER FITA -0474; C; 0475; # CYRILLIC CAPITAL LETTER IZHITSA -0476; C; 0477; # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT -0478; C; 0479; # CYRILLIC CAPITAL LETTER UK -047A; C; 047B; # CYRILLIC CAPITAL LETTER ROUND OMEGA -047C; C; 047D; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO -047E; C; 047F; # CYRILLIC CAPITAL LETTER OT -0480; C; 0481; # CYRILLIC CAPITAL LETTER KOPPA -048A; C; 048B; # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL -048C; C; 048D; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN -048E; C; 048F; # CYRILLIC CAPITAL LETTER ER WITH TICK -0490; C; 0491; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN -0492; C; 0493; # CYRILLIC CAPITAL LETTER GHE WITH STROKE -0494; C; 0495; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK -0496; C; 0497; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER -0498; C; 0499; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER -049A; C; 049B; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER -049C; C; 049D; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE -049E; C; 049F; # CYRILLIC CAPITAL LETTER KA WITH STROKE -04A0; C; 04A1; # CYRILLIC CAPITAL LETTER BASHKIR KA -04A2; C; 04A3; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER -04A4; C; 04A5; # CYRILLIC CAPITAL LIGATURE EN GHE -04A6; C; 04A7; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK -04A8; C; 04A9; # CYRILLIC CAPITAL LETTER ABKHASIAN HA -04AA; C; 04AB; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER -04AC; C; 04AD; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER -04AE; C; 04AF; # CYRILLIC CAPITAL LETTER STRAIGHT U -04B0; C; 04B1; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE -04B2; C; 04B3; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER -04B4; C; 04B5; # CYRILLIC CAPITAL LIGATURE TE TSE -04B6; C; 04B7; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER -04B8; C; 04B9; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE -04BA; C; 04BB; # CYRILLIC CAPITAL LETTER SHHA -04BC; C; 04BD; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BE; C; 04BF; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER -04C0; C; 04CF; # CYRILLIC LETTER PALOCHKA -04C1; C; 04C2; # CYRILLIC CAPITAL LETTER ZHE WITH BREVE -04C3; C; 04C4; # CYRILLIC CAPITAL LETTER KA WITH HOOK -04C5; C; 04C6; # CYRILLIC CAPITAL LETTER EL WITH TAIL -04C7; C; 04C8; # CYRILLIC CAPITAL LETTER EN WITH HOOK -04C9; C; 04CA; # CYRILLIC CAPITAL LETTER EN WITH TAIL -04CB; C; 04CC; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE -04CD; C; 04CE; # CYRILLIC CAPITAL LETTER EM WITH TAIL -04D0; C; 04D1; # CYRILLIC CAPITAL LETTER A WITH BREVE -04D2; C; 04D3; # CYRILLIC CAPITAL LETTER A WITH DIAERESIS -04D4; C; 04D5; # CYRILLIC CAPITAL LIGATURE A IE -04D6; C; 04D7; # CYRILLIC CAPITAL LETTER IE WITH BREVE -04D8; C; 04D9; # CYRILLIC CAPITAL LETTER SCHWA -04DA; C; 04DB; # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS -04DC; C; 04DD; # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS -04DE; C; 04DF; # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS -04E0; C; 04E1; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE -04E2; C; 04E3; # CYRILLIC CAPITAL LETTER I WITH MACRON -04E4; C; 04E5; # CYRILLIC CAPITAL LETTER I WITH DIAERESIS -04E6; C; 04E7; # CYRILLIC CAPITAL LETTER O WITH DIAERESIS -04E8; C; 04E9; # CYRILLIC CAPITAL LETTER BARRED O -04EA; C; 04EB; # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS -04EC; C; 04ED; # CYRILLIC CAPITAL LETTER E WITH DIAERESIS -04EE; C; 04EF; # CYRILLIC CAPITAL LETTER U WITH MACRON -04F0; C; 04F1; # CYRILLIC CAPITAL LETTER U WITH DIAERESIS -04F2; C; 04F3; # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE -04F4; C; 04F5; # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS -04F6; C; 04F7; # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER -04F8; C; 04F9; # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS -04FA; C; 04FB; # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK -04FC; C; 04FD; # CYRILLIC CAPITAL LETTER HA WITH HOOK -04FE; C; 04FF; # CYRILLIC CAPITAL LETTER HA WITH STROKE -0500; C; 0501; # CYRILLIC CAPITAL LETTER KOMI DE -0502; C; 0503; # CYRILLIC CAPITAL LETTER KOMI DJE -0504; C; 0505; # CYRILLIC CAPITAL LETTER KOMI ZJE -0506; C; 0507; # CYRILLIC CAPITAL LETTER KOMI DZJE -0508; C; 0509; # CYRILLIC CAPITAL LETTER KOMI LJE -050A; C; 050B; # CYRILLIC CAPITAL LETTER KOMI NJE -050C; C; 050D; # CYRILLIC CAPITAL LETTER KOMI SJE -050E; C; 050F; # CYRILLIC CAPITAL LETTER KOMI TJE -0510; C; 0511; # CYRILLIC CAPITAL LETTER REVERSED ZE -0512; C; 0513; # CYRILLIC CAPITAL LETTER EL WITH HOOK -0514; C; 0515; # CYRILLIC CAPITAL LETTER LHA -0516; C; 0517; # CYRILLIC CAPITAL LETTER RHA -0518; C; 0519; # CYRILLIC CAPITAL LETTER YAE -051A; C; 051B; # CYRILLIC CAPITAL LETTER QA -051C; C; 051D; # CYRILLIC CAPITAL LETTER WE -051E; C; 051F; # CYRILLIC CAPITAL LETTER ALEUT KA -0520; C; 0521; # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK -0522; C; 0523; # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK -0524; C; 0525; # CYRILLIC CAPITAL LETTER PE WITH DESCENDER -0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB -0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN -0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM -0534; C; 0564; # ARMENIAN CAPITAL LETTER DA -0535; C; 0565; # ARMENIAN CAPITAL LETTER ECH -0536; C; 0566; # ARMENIAN CAPITAL LETTER ZA -0537; C; 0567; # ARMENIAN CAPITAL LETTER EH -0538; C; 0568; # ARMENIAN CAPITAL LETTER ET -0539; C; 0569; # ARMENIAN CAPITAL LETTER TO -053A; C; 056A; # ARMENIAN CAPITAL LETTER ZHE -053B; C; 056B; # ARMENIAN CAPITAL LETTER INI -053C; C; 056C; # ARMENIAN CAPITAL LETTER LIWN -053D; C; 056D; # ARMENIAN CAPITAL LETTER XEH -053E; C; 056E; # ARMENIAN CAPITAL LETTER CA -053F; C; 056F; # ARMENIAN CAPITAL LETTER KEN -0540; C; 0570; # ARMENIAN CAPITAL LETTER HO -0541; C; 0571; # ARMENIAN CAPITAL LETTER JA -0542; C; 0572; # ARMENIAN CAPITAL LETTER GHAD -0543; C; 0573; # ARMENIAN CAPITAL LETTER CHEH -0544; C; 0574; # ARMENIAN CAPITAL LETTER MEN -0545; C; 0575; # ARMENIAN CAPITAL LETTER YI -0546; C; 0576; # ARMENIAN CAPITAL LETTER NOW -0547; C; 0577; # ARMENIAN CAPITAL LETTER SHA -0548; C; 0578; # ARMENIAN CAPITAL LETTER VO -0549; C; 0579; # ARMENIAN CAPITAL LETTER CHA -054A; C; 057A; # ARMENIAN CAPITAL LETTER PEH -054B; C; 057B; # ARMENIAN CAPITAL LETTER JHEH -054C; C; 057C; # ARMENIAN CAPITAL LETTER RA -054D; C; 057D; # ARMENIAN CAPITAL LETTER SEH -054E; C; 057E; # ARMENIAN CAPITAL LETTER VEW -054F; C; 057F; # ARMENIAN CAPITAL LETTER TIWN -0550; C; 0580; # ARMENIAN CAPITAL LETTER REH -0551; C; 0581; # ARMENIAN CAPITAL LETTER CO -0552; C; 0582; # ARMENIAN CAPITAL LETTER YIWN -0553; C; 0583; # ARMENIAN CAPITAL LETTER PIWR -0554; C; 0584; # ARMENIAN CAPITAL LETTER KEH -0555; C; 0585; # ARMENIAN CAPITAL LETTER OH -0556; C; 0586; # ARMENIAN CAPITAL LETTER FEH -0587; F; 0565 0582; # ARMENIAN SMALL LIGATURE ECH YIWN -10A0; C; 2D00; # GEORGIAN CAPITAL LETTER AN -10A1; C; 2D01; # GEORGIAN CAPITAL LETTER BAN -10A2; C; 2D02; # GEORGIAN CAPITAL LETTER GAN -10A3; C; 2D03; # GEORGIAN CAPITAL LETTER DON -10A4; C; 2D04; # GEORGIAN CAPITAL LETTER EN -10A5; C; 2D05; # GEORGIAN CAPITAL LETTER VIN -10A6; C; 2D06; # GEORGIAN CAPITAL LETTER ZEN -10A7; C; 2D07; # GEORGIAN CAPITAL LETTER TAN -10A8; C; 2D08; # GEORGIAN CAPITAL LETTER IN -10A9; C; 2D09; # GEORGIAN CAPITAL LETTER KAN -10AA; C; 2D0A; # GEORGIAN CAPITAL LETTER LAS -10AB; C; 2D0B; # GEORGIAN CAPITAL LETTER MAN -10AC; C; 2D0C; # GEORGIAN CAPITAL LETTER NAR -10AD; C; 2D0D; # GEORGIAN CAPITAL LETTER ON -10AE; C; 2D0E; # GEORGIAN CAPITAL LETTER PAR -10AF; C; 2D0F; # GEORGIAN CAPITAL LETTER ZHAR -10B0; C; 2D10; # GEORGIAN CAPITAL LETTER RAE -10B1; C; 2D11; # GEORGIAN CAPITAL LETTER SAN -10B2; C; 2D12; # GEORGIAN CAPITAL LETTER TAR -10B3; C; 2D13; # GEORGIAN CAPITAL LETTER UN -10B4; C; 2D14; # GEORGIAN CAPITAL LETTER PHAR -10B5; C; 2D15; # GEORGIAN CAPITAL LETTER KHAR -10B6; C; 2D16; # GEORGIAN CAPITAL LETTER GHAN -10B7; C; 2D17; # GEORGIAN CAPITAL LETTER QAR -10B8; C; 2D18; # GEORGIAN CAPITAL LETTER SHIN -10B9; C; 2D19; # GEORGIAN CAPITAL LETTER CHIN -10BA; C; 2D1A; # GEORGIAN CAPITAL LETTER CAN -10BB; C; 2D1B; # GEORGIAN CAPITAL LETTER JIL -10BC; C; 2D1C; # GEORGIAN CAPITAL LETTER CIL -10BD; C; 2D1D; # GEORGIAN CAPITAL LETTER CHAR -10BE; C; 2D1E; # GEORGIAN CAPITAL LETTER XAN -10BF; C; 2D1F; # GEORGIAN CAPITAL LETTER JHAN -10C0; C; 2D20; # GEORGIAN CAPITAL LETTER HAE -10C1; C; 2D21; # GEORGIAN CAPITAL LETTER HE -10C2; C; 2D22; # GEORGIAN CAPITAL LETTER HIE -10C3; C; 2D23; # GEORGIAN CAPITAL LETTER WE -10C4; C; 2D24; # GEORGIAN CAPITAL LETTER HAR -10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE -1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW -1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE -1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW -1E06; C; 1E07; # LATIN CAPITAL LETTER B WITH LINE BELOW -1E08; C; 1E09; # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE -1E0A; C; 1E0B; # LATIN CAPITAL LETTER D WITH DOT ABOVE -1E0C; C; 1E0D; # LATIN CAPITAL LETTER D WITH DOT BELOW -1E0E; C; 1E0F; # LATIN CAPITAL LETTER D WITH LINE BELOW -1E10; C; 1E11; # LATIN CAPITAL LETTER D WITH CEDILLA -1E12; C; 1E13; # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW -1E14; C; 1E15; # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE -1E16; C; 1E17; # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE -1E18; C; 1E19; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW -1E1A; C; 1E1B; # LATIN CAPITAL LETTER E WITH TILDE BELOW -1E1C; C; 1E1D; # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE -1E1E; C; 1E1F; # LATIN CAPITAL LETTER F WITH DOT ABOVE -1E20; C; 1E21; # LATIN CAPITAL LETTER G WITH MACRON -1E22; C; 1E23; # LATIN CAPITAL LETTER H WITH DOT ABOVE -1E24; C; 1E25; # LATIN CAPITAL LETTER H WITH DOT BELOW -1E26; C; 1E27; # LATIN CAPITAL LETTER H WITH DIAERESIS -1E28; C; 1E29; # LATIN CAPITAL LETTER H WITH CEDILLA -1E2A; C; 1E2B; # LATIN CAPITAL LETTER H WITH BREVE BELOW -1E2C; C; 1E2D; # LATIN CAPITAL LETTER I WITH TILDE BELOW -1E2E; C; 1E2F; # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE -1E30; C; 1E31; # LATIN CAPITAL LETTER K WITH ACUTE -1E32; C; 1E33; # LATIN CAPITAL LETTER K WITH DOT BELOW -1E34; C; 1E35; # LATIN CAPITAL LETTER K WITH LINE BELOW -1E36; C; 1E37; # LATIN CAPITAL LETTER L WITH DOT BELOW -1E38; C; 1E39; # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON -1E3A; C; 1E3B; # LATIN CAPITAL LETTER L WITH LINE BELOW -1E3C; C; 1E3D; # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW -1E3E; C; 1E3F; # LATIN CAPITAL LETTER M WITH ACUTE -1E40; C; 1E41; # LATIN CAPITAL LETTER M WITH DOT ABOVE -1E42; C; 1E43; # LATIN CAPITAL LETTER M WITH DOT BELOW -1E44; C; 1E45; # LATIN CAPITAL LETTER N WITH DOT ABOVE -1E46; C; 1E47; # LATIN CAPITAL LETTER N WITH DOT BELOW -1E48; C; 1E49; # LATIN CAPITAL LETTER N WITH LINE BELOW -1E4A; C; 1E4B; # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW -1E4C; C; 1E4D; # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE -1E4E; C; 1E4F; # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS -1E50; C; 1E51; # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE -1E52; C; 1E53; # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE -1E54; C; 1E55; # LATIN CAPITAL LETTER P WITH ACUTE -1E56; C; 1E57; # LATIN CAPITAL LETTER P WITH DOT ABOVE -1E58; C; 1E59; # LATIN CAPITAL LETTER R WITH DOT ABOVE -1E5A; C; 1E5B; # LATIN CAPITAL LETTER R WITH DOT BELOW -1E5C; C; 1E5D; # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON -1E5E; C; 1E5F; # LATIN CAPITAL LETTER R WITH LINE BELOW -1E60; C; 1E61; # LATIN CAPITAL LETTER S WITH DOT ABOVE -1E62; C; 1E63; # LATIN CAPITAL LETTER S WITH DOT BELOW -1E64; C; 1E65; # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE -1E66; C; 1E67; # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE -1E68; C; 1E69; # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE -1E6A; C; 1E6B; # LATIN CAPITAL LETTER T WITH DOT ABOVE -1E6C; C; 1E6D; # LATIN CAPITAL LETTER T WITH DOT BELOW -1E6E; C; 1E6F; # LATIN CAPITAL LETTER T WITH LINE BELOW -1E70; C; 1E71; # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW -1E72; C; 1E73; # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW -1E74; C; 1E75; # LATIN CAPITAL LETTER U WITH TILDE BELOW -1E76; C; 1E77; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW -1E78; C; 1E79; # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE -1E7A; C; 1E7B; # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS -1E7C; C; 1E7D; # LATIN CAPITAL LETTER V WITH TILDE -1E7E; C; 1E7F; # LATIN CAPITAL LETTER V WITH DOT BELOW -1E80; C; 1E81; # LATIN CAPITAL LETTER W WITH GRAVE -1E82; C; 1E83; # LATIN CAPITAL LETTER W WITH ACUTE -1E84; C; 1E85; # LATIN CAPITAL LETTER W WITH DIAERESIS -1E86; C; 1E87; # LATIN CAPITAL LETTER W WITH DOT ABOVE -1E88; C; 1E89; # LATIN CAPITAL LETTER W WITH DOT BELOW -1E8A; C; 1E8B; # LATIN CAPITAL LETTER X WITH DOT ABOVE -1E8C; C; 1E8D; # LATIN CAPITAL LETTER X WITH DIAERESIS -1E8E; C; 1E8F; # LATIN CAPITAL LETTER Y WITH DOT ABOVE -1E90; C; 1E91; # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX -1E92; C; 1E93; # LATIN CAPITAL LETTER Z WITH DOT BELOW -1E94; C; 1E95; # LATIN CAPITAL LETTER Z WITH LINE BELOW -1E96; F; 0068 0331; # LATIN SMALL LETTER H WITH LINE BELOW -1E97; F; 0074 0308; # LATIN SMALL LETTER T WITH DIAERESIS -1E98; F; 0077 030A; # LATIN SMALL LETTER W WITH RING ABOVE -1E99; F; 0079 030A; # LATIN SMALL LETTER Y WITH RING ABOVE -1E9A; F; 0061 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING -1E9B; C; 1E61; # LATIN SMALL LETTER LONG S WITH DOT ABOVE -1E9E; F; 0073 0073; # LATIN CAPITAL LETTER SHARP S -1E9E; S; 00DF; # LATIN CAPITAL LETTER SHARP S -1EA0; C; 1EA1; # LATIN CAPITAL LETTER A WITH DOT BELOW -1EA2; C; 1EA3; # LATIN CAPITAL LETTER A WITH HOOK ABOVE -1EA4; C; 1EA5; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE -1EA6; C; 1EA7; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE -1EA8; C; 1EA9; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE -1EAA; C; 1EAB; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE -1EAC; C; 1EAD; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW -1EAE; C; 1EAF; # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE -1EB0; C; 1EB1; # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE -1EB2; C; 1EB3; # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE -1EB4; C; 1EB5; # LATIN CAPITAL LETTER A WITH BREVE AND TILDE -1EB6; C; 1EB7; # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW -1EB8; C; 1EB9; # LATIN CAPITAL LETTER E WITH DOT BELOW -1EBA; C; 1EBB; # LATIN CAPITAL LETTER E WITH HOOK ABOVE -1EBC; C; 1EBD; # LATIN CAPITAL LETTER E WITH TILDE -1EBE; C; 1EBF; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE -1EC0; C; 1EC1; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE -1EC2; C; 1EC3; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE -1EC4; C; 1EC5; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE -1EC6; C; 1EC7; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW -1EC8; C; 1EC9; # LATIN CAPITAL LETTER I WITH HOOK ABOVE -1ECA; C; 1ECB; # LATIN CAPITAL LETTER I WITH DOT BELOW -1ECC; C; 1ECD; # LATIN CAPITAL LETTER O WITH DOT BELOW -1ECE; C; 1ECF; # LATIN CAPITAL LETTER O WITH HOOK ABOVE -1ED0; C; 1ED1; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE -1ED2; C; 1ED3; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE -1ED4; C; 1ED5; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE -1ED6; C; 1ED7; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE -1ED8; C; 1ED9; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW -1EDA; C; 1EDB; # LATIN CAPITAL LETTER O WITH HORN AND ACUTE -1EDC; C; 1EDD; # LATIN CAPITAL LETTER O WITH HORN AND GRAVE -1EDE; C; 1EDF; # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE -1EE0; C; 1EE1; # LATIN CAPITAL LETTER O WITH HORN AND TILDE -1EE2; C; 1EE3; # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW -1EE4; C; 1EE5; # LATIN CAPITAL LETTER U WITH DOT BELOW -1EE6; C; 1EE7; # LATIN CAPITAL LETTER U WITH HOOK ABOVE -1EE8; C; 1EE9; # LATIN CAPITAL LETTER U WITH HORN AND ACUTE -1EEA; C; 1EEB; # LATIN CAPITAL LETTER U WITH HORN AND GRAVE -1EEC; C; 1EED; # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE -1EEE; C; 1EEF; # LATIN CAPITAL LETTER U WITH HORN AND TILDE -1EF0; C; 1EF1; # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW -1EF2; C; 1EF3; # LATIN CAPITAL LETTER Y WITH GRAVE -1EF4; C; 1EF5; # LATIN CAPITAL LETTER Y WITH DOT BELOW -1EF6; C; 1EF7; # LATIN CAPITAL LETTER Y WITH HOOK ABOVE -1EF8; C; 1EF9; # LATIN CAPITAL LETTER Y WITH TILDE -1EFA; C; 1EFB; # LATIN CAPITAL LETTER MIDDLE-WELSH LL -1EFC; C; 1EFD; # LATIN CAPITAL LETTER MIDDLE-WELSH V -1EFE; C; 1EFF; # LATIN CAPITAL LETTER Y WITH LOOP -1F08; C; 1F00; # GREEK CAPITAL LETTER ALPHA WITH PSILI -1F09; C; 1F01; # GREEK CAPITAL LETTER ALPHA WITH DASIA -1F0A; C; 1F02; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA -1F0B; C; 1F03; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA -1F0C; C; 1F04; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA -1F0D; C; 1F05; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA -1F0E; C; 1F06; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI -1F0F; C; 1F07; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI -1F18; C; 1F10; # GREEK CAPITAL LETTER EPSILON WITH PSILI -1F19; C; 1F11; # GREEK CAPITAL LETTER EPSILON WITH DASIA -1F1A; C; 1F12; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA -1F1B; C; 1F13; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA -1F1C; C; 1F14; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA -1F1D; C; 1F15; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA -1F28; C; 1F20; # GREEK CAPITAL LETTER ETA WITH PSILI -1F29; C; 1F21; # GREEK CAPITAL LETTER ETA WITH DASIA -1F2A; C; 1F22; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA -1F2B; C; 1F23; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA -1F2C; C; 1F24; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA -1F2D; C; 1F25; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA -1F2E; C; 1F26; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI -1F2F; C; 1F27; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI -1F38; C; 1F30; # GREEK CAPITAL LETTER IOTA WITH PSILI -1F39; C; 1F31; # GREEK CAPITAL LETTER IOTA WITH DASIA -1F3A; C; 1F32; # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA -1F3B; C; 1F33; # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA -1F3C; C; 1F34; # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA -1F3D; C; 1F35; # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA -1F3E; C; 1F36; # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI -1F3F; C; 1F37; # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI -1F48; C; 1F40; # GREEK CAPITAL LETTER OMICRON WITH PSILI -1F49; C; 1F41; # GREEK CAPITAL LETTER OMICRON WITH DASIA -1F4A; C; 1F42; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA -1F4B; C; 1F43; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA -1F4C; C; 1F44; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA -1F4D; C; 1F45; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA -1F50; F; 03C5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI -1F52; F; 03C5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA -1F54; F; 03C5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA -1F56; F; 03C5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI -1F59; C; 1F51; # GREEK CAPITAL LETTER UPSILON WITH DASIA -1F5B; C; 1F53; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA -1F5D; C; 1F55; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA -1F5F; C; 1F57; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI -1F68; C; 1F60; # GREEK CAPITAL LETTER OMEGA WITH PSILI -1F69; C; 1F61; # GREEK CAPITAL LETTER OMEGA WITH DASIA -1F6A; C; 1F62; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA -1F6B; C; 1F63; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA -1F6C; C; 1F64; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA -1F6D; C; 1F65; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA -1F6E; C; 1F66; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI -1F6F; C; 1F67; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI -1F80; F; 1F00 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI -1F81; F; 1F01 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI -1F82; F; 1F02 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F83; F; 1F03 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F84; F; 1F04 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F85; F; 1F05 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F86; F; 1F06 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F87; F; 1F07 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F88; F; 1F00 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F88; S; 1F80; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI -1F89; F; 1F01 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F89; S; 1F81; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI -1F8A; F; 1F02 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8A; S; 1F82; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F8B; F; 1F03 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8B; S; 1F83; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F8C; F; 1F04 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8C; S; 1F84; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F8D; F; 1F05 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8D; S; 1F85; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F8E; F; 1F06 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8E; S; 1F86; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F8F; F; 1F07 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F8F; S; 1F87; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F90; F; 1F20 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI -1F91; F; 1F21 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI -1F92; F; 1F22 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1F93; F; 1F23 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1F94; F; 1F24 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1F95; F; 1F25 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1F96; F; 1F26 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1F97; F; 1F27 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1F98; F; 1F20 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F98; S; 1F90; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI -1F99; F; 1F21 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F99; S; 1F91; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI -1F9A; F; 1F22 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9A; S; 1F92; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1F9B; F; 1F23 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9B; S; 1F93; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1F9C; F; 1F24 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9C; S; 1F94; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1F9D; F; 1F25 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9D; S; 1F95; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1F9E; F; 1F26 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9E; S; 1F96; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1F9F; F; 1F27 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1F9F; S; 1F97; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FA0; F; 1F60 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI -1FA1; F; 1F61 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI -1FA2; F; 1F62 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI -1FA3; F; 1F63 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI -1FA4; F; 1F64 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI -1FA5; F; 1F65 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI -1FA6; F; 1F66 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI -1FA7; F; 1F67 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI -1FA8; F; 1F60 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA8; S; 1FA0; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI -1FA9; F; 1F61 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FA9; S; 1FA1; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI -1FAA; F; 1F62 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAA; S; 1FA2; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI -1FAB; F; 1F63 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAB; S; 1FA3; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI -1FAC; F; 1F64 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAC; S; 1FA4; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI -1FAD; F; 1F65 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAD; S; 1FA5; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI -1FAE; F; 1F66 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAE; S; 1FA6; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI -1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FAF; S; 1FA7; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI -1FB2; F; 1F70 03B9; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI -1FB3; F; 03B1 03B9; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI -1FB4; F; 03AC 03B9; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI -1FB6; F; 03B1 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI -1FB7; F; 03B1 0342 03B9; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI -1FB8; C; 1FB0; # GREEK CAPITAL LETTER ALPHA WITH VRACHY -1FB9; C; 1FB1; # GREEK CAPITAL LETTER ALPHA WITH MACRON -1FBA; C; 1F70; # GREEK CAPITAL LETTER ALPHA WITH VARIA -1FBB; C; 1F71; # GREEK CAPITAL LETTER ALPHA WITH OXIA -1FBC; F; 03B1 03B9; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBC; S; 1FB3; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI -1FBE; C; 03B9; # GREEK PROSGEGRAMMENI -1FC2; F; 1F74 03B9; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI -1FC3; F; 03B7 03B9; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI -1FC4; F; 03AE 03B9; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI -1FC6; F; 03B7 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI -1FC7; F; 03B7 0342 03B9; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI -1FC8; C; 1F72; # GREEK CAPITAL LETTER EPSILON WITH VARIA -1FC9; C; 1F73; # GREEK CAPITAL LETTER EPSILON WITH OXIA -1FCA; C; 1F74; # GREEK CAPITAL LETTER ETA WITH VARIA -1FCB; C; 1F75; # GREEK CAPITAL LETTER ETA WITH OXIA -1FCC; F; 03B7 03B9; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI -1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA -1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA -1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI -1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI -1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY -1FD9; C; 1FD1; # GREEK CAPITAL LETTER IOTA WITH MACRON -1FDA; C; 1F76; # GREEK CAPITAL LETTER IOTA WITH VARIA -1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA -1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA -1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA -1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI -1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI -1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI -1FE8; C; 1FE0; # GREEK CAPITAL LETTER UPSILON WITH VRACHY -1FE9; C; 1FE1; # GREEK CAPITAL LETTER UPSILON WITH MACRON -1FEA; C; 1F7A; # GREEK CAPITAL LETTER UPSILON WITH VARIA -1FEB; C; 1F7B; # GREEK CAPITAL LETTER UPSILON WITH OXIA -1FEC; C; 1FE5; # GREEK CAPITAL LETTER RHO WITH DASIA -1FF2; F; 1F7C 03B9; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI -1FF3; F; 03C9 03B9; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI -1FF4; F; 03CE 03B9; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI -1FF6; F; 03C9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI -1FF7; F; 03C9 0342 03B9; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI -1FF8; C; 1F78; # GREEK CAPITAL LETTER OMICRON WITH VARIA -1FF9; C; 1F79; # GREEK CAPITAL LETTER OMICRON WITH OXIA -1FFA; C; 1F7C; # GREEK CAPITAL LETTER OMEGA WITH VARIA -1FFB; C; 1F7D; # GREEK CAPITAL LETTER OMEGA WITH OXIA -1FFC; F; 03C9 03B9; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -1FFC; S; 1FF3; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI -2126; C; 03C9; # OHM SIGN -212A; C; 006B; # KELVIN SIGN -212B; C; 00E5; # ANGSTROM SIGN -2132; C; 214E; # TURNED CAPITAL F -2160; C; 2170; # ROMAN NUMERAL ONE -2161; C; 2171; # ROMAN NUMERAL TWO -2162; C; 2172; # ROMAN NUMERAL THREE -2163; C; 2173; # ROMAN NUMERAL FOUR -2164; C; 2174; # ROMAN NUMERAL FIVE -2165; C; 2175; # ROMAN NUMERAL SIX -2166; C; 2176; # ROMAN NUMERAL SEVEN -2167; C; 2177; # ROMAN NUMERAL EIGHT -2168; C; 2178; # ROMAN NUMERAL NINE -2169; C; 2179; # ROMAN NUMERAL TEN -216A; C; 217A; # ROMAN NUMERAL ELEVEN -216B; C; 217B; # ROMAN NUMERAL TWELVE -216C; C; 217C; # ROMAN NUMERAL FIFTY -216D; C; 217D; # ROMAN NUMERAL ONE HUNDRED -216E; C; 217E; # ROMAN NUMERAL FIVE HUNDRED -216F; C; 217F; # ROMAN NUMERAL ONE THOUSAND -2183; C; 2184; # ROMAN NUMERAL REVERSED ONE HUNDRED -24B6; C; 24D0; # CIRCLED LATIN CAPITAL LETTER A -24B7; C; 24D1; # CIRCLED LATIN CAPITAL LETTER B -24B8; C; 24D2; # CIRCLED LATIN CAPITAL LETTER C -24B9; C; 24D3; # CIRCLED LATIN CAPITAL LETTER D -24BA; C; 24D4; # CIRCLED LATIN CAPITAL LETTER E -24BB; C; 24D5; # CIRCLED LATIN CAPITAL LETTER F -24BC; C; 24D6; # CIRCLED LATIN CAPITAL LETTER G -24BD; C; 24D7; # CIRCLED LATIN CAPITAL LETTER H -24BE; C; 24D8; # CIRCLED LATIN CAPITAL LETTER I -24BF; C; 24D9; # CIRCLED LATIN CAPITAL LETTER J -24C0; C; 24DA; # CIRCLED LATIN CAPITAL LETTER K -24C1; C; 24DB; # CIRCLED LATIN CAPITAL LETTER L -24C2; C; 24DC; # CIRCLED LATIN CAPITAL LETTER M -24C3; C; 24DD; # CIRCLED LATIN CAPITAL LETTER N -24C4; C; 24DE; # CIRCLED LATIN CAPITAL LETTER O -24C5; C; 24DF; # CIRCLED LATIN CAPITAL LETTER P -24C6; C; 24E0; # CIRCLED LATIN CAPITAL LETTER Q -24C7; C; 24E1; # CIRCLED LATIN CAPITAL LETTER R -24C8; C; 24E2; # CIRCLED LATIN CAPITAL LETTER S -24C9; C; 24E3; # CIRCLED LATIN CAPITAL LETTER T -24CA; C; 24E4; # CIRCLED LATIN CAPITAL LETTER U -24CB; C; 24E5; # CIRCLED LATIN CAPITAL LETTER V -24CC; C; 24E6; # CIRCLED LATIN CAPITAL LETTER W -24CD; C; 24E7; # CIRCLED LATIN CAPITAL LETTER X -24CE; C; 24E8; # CIRCLED LATIN CAPITAL LETTER Y -24CF; C; 24E9; # CIRCLED LATIN CAPITAL LETTER Z -2C00; C; 2C30; # GLAGOLITIC CAPITAL LETTER AZU -2C01; C; 2C31; # GLAGOLITIC CAPITAL LETTER BUKY -2C02; C; 2C32; # GLAGOLITIC CAPITAL LETTER VEDE -2C03; C; 2C33; # GLAGOLITIC CAPITAL LETTER GLAGOLI -2C04; C; 2C34; # GLAGOLITIC CAPITAL LETTER DOBRO -2C05; C; 2C35; # GLAGOLITIC CAPITAL LETTER YESTU -2C06; C; 2C36; # GLAGOLITIC CAPITAL LETTER ZHIVETE -2C07; C; 2C37; # GLAGOLITIC CAPITAL LETTER DZELO -2C08; C; 2C38; # GLAGOLITIC CAPITAL LETTER ZEMLJA -2C09; C; 2C39; # GLAGOLITIC CAPITAL LETTER IZHE -2C0A; C; 2C3A; # GLAGOLITIC CAPITAL LETTER INITIAL IZHE -2C0B; C; 2C3B; # GLAGOLITIC CAPITAL LETTER I -2C0C; C; 2C3C; # GLAGOLITIC CAPITAL LETTER DJERVI -2C0D; C; 2C3D; # GLAGOLITIC CAPITAL LETTER KAKO -2C0E; C; 2C3E; # GLAGOLITIC CAPITAL LETTER LJUDIJE -2C0F; C; 2C3F; # GLAGOLITIC CAPITAL LETTER MYSLITE -2C10; C; 2C40; # GLAGOLITIC CAPITAL LETTER NASHI -2C11; C; 2C41; # GLAGOLITIC CAPITAL LETTER ONU -2C12; C; 2C42; # GLAGOLITIC CAPITAL LETTER POKOJI -2C13; C; 2C43; # GLAGOLITIC CAPITAL LETTER RITSI -2C14; C; 2C44; # GLAGOLITIC CAPITAL LETTER SLOVO -2C15; C; 2C45; # GLAGOLITIC CAPITAL LETTER TVRIDO -2C16; C; 2C46; # GLAGOLITIC CAPITAL LETTER UKU -2C17; C; 2C47; # GLAGOLITIC CAPITAL LETTER FRITU -2C18; C; 2C48; # GLAGOLITIC CAPITAL LETTER HERU -2C19; C; 2C49; # GLAGOLITIC CAPITAL LETTER OTU -2C1A; C; 2C4A; # GLAGOLITIC CAPITAL LETTER PE -2C1B; C; 2C4B; # GLAGOLITIC CAPITAL LETTER SHTA -2C1C; C; 2C4C; # GLAGOLITIC CAPITAL LETTER TSI -2C1D; C; 2C4D; # GLAGOLITIC CAPITAL LETTER CHRIVI -2C1E; C; 2C4E; # GLAGOLITIC CAPITAL LETTER SHA -2C1F; C; 2C4F; # GLAGOLITIC CAPITAL LETTER YERU -2C20; C; 2C50; # GLAGOLITIC CAPITAL LETTER YERI -2C21; C; 2C51; # GLAGOLITIC CAPITAL LETTER YATI -2C22; C; 2C52; # GLAGOLITIC CAPITAL LETTER SPIDERY HA -2C23; C; 2C53; # GLAGOLITIC CAPITAL LETTER YU -2C24; C; 2C54; # GLAGOLITIC CAPITAL LETTER SMALL YUS -2C25; C; 2C55; # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL -2C26; C; 2C56; # GLAGOLITIC CAPITAL LETTER YO -2C27; C; 2C57; # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS -2C28; C; 2C58; # GLAGOLITIC CAPITAL LETTER BIG YUS -2C29; C; 2C59; # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS -2C2A; C; 2C5A; # GLAGOLITIC CAPITAL LETTER FITA -2C2B; C; 2C5B; # GLAGOLITIC CAPITAL LETTER IZHITSA -2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC -2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A -2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE -2C60; C; 2C61; # LATIN CAPITAL LETTER L WITH DOUBLE BAR -2C62; C; 026B; # LATIN CAPITAL LETTER L WITH MIDDLE TILDE -2C63; C; 1D7D; # LATIN CAPITAL LETTER P WITH STROKE -2C64; C; 027D; # LATIN CAPITAL LETTER R WITH TAIL -2C67; C; 2C68; # LATIN CAPITAL LETTER H WITH DESCENDER -2C69; C; 2C6A; # LATIN CAPITAL LETTER K WITH DESCENDER -2C6B; C; 2C6C; # LATIN CAPITAL LETTER Z WITH DESCENDER -2C6D; C; 0251; # LATIN CAPITAL LETTER ALPHA -2C6E; C; 0271; # LATIN CAPITAL LETTER M WITH HOOK -2C6F; C; 0250; # LATIN CAPITAL LETTER TURNED A -2C70; C; 0252; # LATIN CAPITAL LETTER TURNED ALPHA -2C72; C; 2C73; # LATIN CAPITAL LETTER W WITH HOOK -2C75; C; 2C76; # LATIN CAPITAL LETTER HALF H -2C7E; C; 023F; # LATIN CAPITAL LETTER S WITH SWASH TAIL -2C7F; C; 0240; # LATIN CAPITAL LETTER Z WITH SWASH TAIL -2C80; C; 2C81; # COPTIC CAPITAL LETTER ALFA -2C82; C; 2C83; # COPTIC CAPITAL LETTER VIDA -2C84; C; 2C85; # COPTIC CAPITAL LETTER GAMMA -2C86; C; 2C87; # COPTIC CAPITAL LETTER DALDA -2C88; C; 2C89; # COPTIC CAPITAL LETTER EIE -2C8A; C; 2C8B; # COPTIC CAPITAL LETTER SOU -2C8C; C; 2C8D; # COPTIC CAPITAL LETTER ZATA -2C8E; C; 2C8F; # COPTIC CAPITAL LETTER HATE -2C90; C; 2C91; # COPTIC CAPITAL LETTER THETHE -2C92; C; 2C93; # COPTIC CAPITAL LETTER IAUDA -2C94; C; 2C95; # COPTIC CAPITAL LETTER KAPA -2C96; C; 2C97; # COPTIC CAPITAL LETTER LAULA -2C98; C; 2C99; # COPTIC CAPITAL LETTER MI -2C9A; C; 2C9B; # COPTIC CAPITAL LETTER NI -2C9C; C; 2C9D; # COPTIC CAPITAL LETTER KSI -2C9E; C; 2C9F; # COPTIC CAPITAL LETTER O -2CA0; C; 2CA1; # COPTIC CAPITAL LETTER PI -2CA2; C; 2CA3; # COPTIC CAPITAL LETTER RO -2CA4; C; 2CA5; # COPTIC CAPITAL LETTER SIMA -2CA6; C; 2CA7; # COPTIC CAPITAL LETTER TAU -2CA8; C; 2CA9; # COPTIC CAPITAL LETTER UA -2CAA; C; 2CAB; # COPTIC CAPITAL LETTER FI -2CAC; C; 2CAD; # COPTIC CAPITAL LETTER KHI -2CAE; C; 2CAF; # COPTIC CAPITAL LETTER PSI -2CB0; C; 2CB1; # COPTIC CAPITAL LETTER OOU -2CB2; C; 2CB3; # COPTIC CAPITAL LETTER DIALECT-P ALEF -2CB4; C; 2CB5; # COPTIC CAPITAL LETTER OLD COPTIC AIN -2CB6; C; 2CB7; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE -2CB8; C; 2CB9; # COPTIC CAPITAL LETTER DIALECT-P KAPA -2CBA; C; 2CBB; # COPTIC CAPITAL LETTER DIALECT-P NI -2CBC; C; 2CBD; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI -2CBE; C; 2CBF; # COPTIC CAPITAL LETTER OLD COPTIC OOU -2CC0; C; 2CC1; # COPTIC CAPITAL LETTER SAMPI -2CC2; C; 2CC3; # COPTIC CAPITAL LETTER CROSSED SHEI -2CC4; C; 2CC5; # COPTIC CAPITAL LETTER OLD COPTIC SHEI -2CC6; C; 2CC7; # COPTIC CAPITAL LETTER OLD COPTIC ESH -2CC8; C; 2CC9; # COPTIC CAPITAL LETTER AKHMIMIC KHEI -2CCA; C; 2CCB; # COPTIC CAPITAL LETTER DIALECT-P HORI -2CCC; C; 2CCD; # COPTIC CAPITAL LETTER OLD COPTIC HORI -2CCE; C; 2CCF; # COPTIC CAPITAL LETTER OLD COPTIC HA -2CD0; C; 2CD1; # COPTIC CAPITAL LETTER L-SHAPED HA -2CD2; C; 2CD3; # COPTIC CAPITAL LETTER OLD COPTIC HEI -2CD4; C; 2CD5; # COPTIC CAPITAL LETTER OLD COPTIC HAT -2CD6; C; 2CD7; # COPTIC CAPITAL LETTER OLD COPTIC GANGIA -2CD8; C; 2CD9; # COPTIC CAPITAL LETTER OLD COPTIC DJA -2CDA; C; 2CDB; # COPTIC CAPITAL LETTER OLD COPTIC SHIMA -2CDC; C; 2CDD; # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA -2CDE; C; 2CDF; # COPTIC CAPITAL LETTER OLD NUBIAN NGI -2CE0; C; 2CE1; # COPTIC CAPITAL LETTER OLD NUBIAN NYI -2CE2; C; 2CE3; # COPTIC CAPITAL LETTER OLD NUBIAN WAU -2CEB; C; 2CEC; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI -2CED; C; 2CEE; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA -A640; C; A641; # CYRILLIC CAPITAL LETTER ZEMLYA -A642; C; A643; # CYRILLIC CAPITAL LETTER DZELO -A644; C; A645; # CYRILLIC CAPITAL LETTER REVERSED DZE -A646; C; A647; # CYRILLIC CAPITAL LETTER IOTA -A648; C; A649; # CYRILLIC CAPITAL LETTER DJERV -A64A; C; A64B; # CYRILLIC CAPITAL LETTER MONOGRAPH UK -A64C; C; A64D; # CYRILLIC CAPITAL LETTER BROAD OMEGA -A64E; C; A64F; # CYRILLIC CAPITAL LETTER NEUTRAL YER -A650; C; A651; # CYRILLIC CAPITAL LETTER YERU WITH BACK YER -A652; C; A653; # CYRILLIC CAPITAL LETTER IOTIFIED YAT -A654; C; A655; # CYRILLIC CAPITAL LETTER REVERSED YU -A656; C; A657; # CYRILLIC CAPITAL LETTER IOTIFIED A -A658; C; A659; # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS -A65A; C; A65B; # CYRILLIC CAPITAL LETTER BLENDED YUS -A65C; C; A65D; # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS -A65E; C; A65F; # CYRILLIC CAPITAL LETTER YN -A662; C; A663; # CYRILLIC CAPITAL LETTER SOFT DE -A664; C; A665; # CYRILLIC CAPITAL LETTER SOFT EL -A666; C; A667; # CYRILLIC CAPITAL LETTER SOFT EM -A668; C; A669; # CYRILLIC CAPITAL LETTER MONOCULAR O -A66A; C; A66B; # CYRILLIC CAPITAL LETTER BINOCULAR O -A66C; C; A66D; # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O -A680; C; A681; # CYRILLIC CAPITAL LETTER DWE -A682; C; A683; # CYRILLIC CAPITAL LETTER DZWE -A684; C; A685; # CYRILLIC CAPITAL LETTER ZHWE -A686; C; A687; # CYRILLIC CAPITAL LETTER CCHE -A688; C; A689; # CYRILLIC CAPITAL LETTER DZZE -A68A; C; A68B; # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK -A68C; C; A68D; # CYRILLIC CAPITAL LETTER TWE -A68E; C; A68F; # CYRILLIC CAPITAL LETTER TSWE -A690; C; A691; # CYRILLIC CAPITAL LETTER TSSE -A692; C; A693; # CYRILLIC CAPITAL LETTER TCHE -A694; C; A695; # CYRILLIC CAPITAL LETTER HWE -A696; C; A697; # CYRILLIC CAPITAL LETTER SHWE -A722; C; A723; # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF -A724; C; A725; # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN -A726; C; A727; # LATIN CAPITAL LETTER HENG -A728; C; A729; # LATIN CAPITAL LETTER TZ -A72A; C; A72B; # LATIN CAPITAL LETTER TRESILLO -A72C; C; A72D; # LATIN CAPITAL LETTER CUATRILLO -A72E; C; A72F; # LATIN CAPITAL LETTER CUATRILLO WITH COMMA -A732; C; A733; # LATIN CAPITAL LETTER AA -A734; C; A735; # LATIN CAPITAL LETTER AO -A736; C; A737; # LATIN CAPITAL LETTER AU -A738; C; A739; # LATIN CAPITAL LETTER AV -A73A; C; A73B; # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR -A73C; C; A73D; # LATIN CAPITAL LETTER AY -A73E; C; A73F; # LATIN CAPITAL LETTER REVERSED C WITH DOT -A740; C; A741; # LATIN CAPITAL LETTER K WITH STROKE -A742; C; A743; # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE -A744; C; A745; # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE -A746; C; A747; # LATIN CAPITAL LETTER BROKEN L -A748; C; A749; # LATIN CAPITAL LETTER L WITH HIGH STROKE -A74A; C; A74B; # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY -A74C; C; A74D; # LATIN CAPITAL LETTER O WITH LOOP -A74E; C; A74F; # LATIN CAPITAL LETTER OO -A750; C; A751; # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER -A752; C; A753; # LATIN CAPITAL LETTER P WITH FLOURISH -A754; C; A755; # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL -A756; C; A757; # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER -A758; C; A759; # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE -A75A; C; A75B; # LATIN CAPITAL LETTER R ROTUNDA -A75C; C; A75D; # LATIN CAPITAL LETTER RUM ROTUNDA -A75E; C; A75F; # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE -A760; C; A761; # LATIN CAPITAL LETTER VY -A762; C; A763; # LATIN CAPITAL LETTER VISIGOTHIC Z -A764; C; A765; # LATIN CAPITAL LETTER THORN WITH STROKE -A766; C; A767; # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER -A768; C; A769; # LATIN CAPITAL LETTER VEND -A76A; C; A76B; # LATIN CAPITAL LETTER ET -A76C; C; A76D; # LATIN CAPITAL LETTER IS -A76E; C; A76F; # LATIN CAPITAL LETTER CON -A779; C; A77A; # LATIN CAPITAL LETTER INSULAR D -A77B; C; A77C; # LATIN CAPITAL LETTER INSULAR F -A77D; C; 1D79; # LATIN CAPITAL LETTER INSULAR G -A77E; C; A77F; # LATIN CAPITAL LETTER TURNED INSULAR G -A780; C; A781; # LATIN CAPITAL LETTER TURNED L -A782; C; A783; # LATIN CAPITAL LETTER INSULAR R -A784; C; A785; # LATIN CAPITAL LETTER INSULAR S -A786; C; A787; # LATIN CAPITAL LETTER INSULAR T -A78B; C; A78C; # LATIN CAPITAL LETTER SALTILLO -FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF -FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI -FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL -FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI -FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL -FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T -FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST -FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW -FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH -FB15; F; 0574 056B; # ARMENIAN SMALL LIGATURE MEN INI -FB16; F; 057E 0576; # ARMENIAN SMALL LIGATURE VEW NOW -FB17; F; 0574 056D; # ARMENIAN SMALL LIGATURE MEN XEH -FF21; C; FF41; # FULLWIDTH LATIN CAPITAL LETTER A -FF22; C; FF42; # FULLWIDTH LATIN CAPITAL LETTER B -FF23; C; FF43; # FULLWIDTH LATIN CAPITAL LETTER C -FF24; C; FF44; # FULLWIDTH LATIN CAPITAL LETTER D -FF25; C; FF45; # FULLWIDTH LATIN CAPITAL LETTER E -FF26; C; FF46; # FULLWIDTH LATIN CAPITAL LETTER F -FF27; C; FF47; # FULLWIDTH LATIN CAPITAL LETTER G -FF28; C; FF48; # FULLWIDTH LATIN CAPITAL LETTER H -FF29; C; FF49; # FULLWIDTH LATIN CAPITAL LETTER I -FF2A; C; FF4A; # FULLWIDTH LATIN CAPITAL LETTER J -FF2B; C; FF4B; # FULLWIDTH LATIN CAPITAL LETTER K -FF2C; C; FF4C; # FULLWIDTH LATIN CAPITAL LETTER L -FF2D; C; FF4D; # FULLWIDTH LATIN CAPITAL LETTER M -FF2E; C; FF4E; # FULLWIDTH LATIN CAPITAL LETTER N -FF2F; C; FF4F; # FULLWIDTH LATIN CAPITAL LETTER O -FF30; C; FF50; # FULLWIDTH LATIN CAPITAL LETTER P -FF31; C; FF51; # FULLWIDTH LATIN CAPITAL LETTER Q -FF32; C; FF52; # FULLWIDTH LATIN CAPITAL LETTER R -FF33; C; FF53; # FULLWIDTH LATIN CAPITAL LETTER S -FF34; C; FF54; # FULLWIDTH LATIN CAPITAL LETTER T -FF35; C; FF55; # FULLWIDTH LATIN CAPITAL LETTER U -FF36; C; FF56; # FULLWIDTH LATIN CAPITAL LETTER V -FF37; C; FF57; # FULLWIDTH LATIN CAPITAL LETTER W -FF38; C; FF58; # FULLWIDTH LATIN CAPITAL LETTER X -FF39; C; FF59; # FULLWIDTH LATIN CAPITAL LETTER Y -FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z -10400; C; 10428; # DESERET CAPITAL LETTER LONG I -10401; C; 10429; # DESERET CAPITAL LETTER LONG E -10402; C; 1042A; # DESERET CAPITAL LETTER LONG A -10403; C; 1042B; # DESERET CAPITAL LETTER LONG AH -10404; C; 1042C; # DESERET CAPITAL LETTER LONG O -10405; C; 1042D; # DESERET CAPITAL LETTER LONG OO -10406; C; 1042E; # DESERET CAPITAL LETTER SHORT I -10407; C; 1042F; # DESERET CAPITAL LETTER SHORT E -10408; C; 10430; # DESERET CAPITAL LETTER SHORT A -10409; C; 10431; # DESERET CAPITAL LETTER SHORT AH -1040A; C; 10432; # DESERET CAPITAL LETTER SHORT O -1040B; C; 10433; # DESERET CAPITAL LETTER SHORT OO -1040C; C; 10434; # DESERET CAPITAL LETTER AY -1040D; C; 10435; # DESERET CAPITAL LETTER OW -1040E; C; 10436; # DESERET CAPITAL LETTER WU -1040F; C; 10437; # DESERET CAPITAL LETTER YEE -10410; C; 10438; # DESERET CAPITAL LETTER H -10411; C; 10439; # DESERET CAPITAL LETTER PEE -10412; C; 1043A; # DESERET CAPITAL LETTER BEE -10413; C; 1043B; # DESERET CAPITAL LETTER TEE -10414; C; 1043C; # DESERET CAPITAL LETTER DEE -10415; C; 1043D; # DESERET CAPITAL LETTER CHEE -10416; C; 1043E; # DESERET CAPITAL LETTER JEE -10417; C; 1043F; # DESERET CAPITAL LETTER KAY -10418; C; 10440; # DESERET CAPITAL LETTER GAY -10419; C; 10441; # DESERET CAPITAL LETTER EF -1041A; C; 10442; # DESERET CAPITAL LETTER VEE -1041B; C; 10443; # DESERET CAPITAL LETTER ETH -1041C; C; 10444; # DESERET CAPITAL LETTER THEE -1041D; C; 10445; # DESERET CAPITAL LETTER ES -1041E; C; 10446; # DESERET CAPITAL LETTER ZEE -1041F; C; 10447; # DESERET CAPITAL LETTER ESH -10420; C; 10448; # DESERET CAPITAL LETTER ZHEE -10421; C; 10449; # DESERET CAPITAL LETTER ER -10422; C; 1044A; # DESERET CAPITAL LETTER EL -10423; C; 1044B; # DESERET CAPITAL LETTER EM -10424; C; 1044C; # DESERET CAPITAL LETTER EN -10425; C; 1044D; # DESERET CAPITAL LETTER ENG -10426; C; 1044E; # DESERET CAPITAL LETTER OI -10427; C; 1044F; # DESERET CAPITAL LETTER EW diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/DiacriticFolding.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/DiacriticFolding.txt deleted file mode 100644 index 4bb7d3e381..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/DiacriticFolding.txt +++ /dev/null @@ -1,1720 +0,0 @@ -# Note: the following lines was added for the GoldenDict. It's the only modification -# made. - -0401; 0415 # CYRILLIC CAPITAL LETTER IO -> CYRILLIC CAPITAL LETTER IE -0451; 0435 # CYRILLIC SMALL LETTER IO -> CYRILLIC SMALL LETTER IE - -# DiacriticFolding.txt -# DRAFT 1 - 2004-07-14 John Cowan -# Subject to change -# -# Base version of Unicode: 4.0.0 -# -# Datafile for Unicode Techical Report #30 -# Copyright (c) 1991-2004 Unicode, Inc. -# For terms of use, and documentation see -# http://www.unicode.org/reports/tr30/ - -# ================================= - -# -# Map all accented letters to their base character. -# -# Format -# Field 0 - character code (source) -# Field 1 - character code (target) -# Comment - utf8 of source -> utf8 of target, followed by -# characer name of source -> character name of target -# -# Notes: -# 1) This file is sorted on field 1 to make review easier -# -# 2) This version does not exclude mappings that could be derived -# by canonical decomposition and removal of combining marks -# -# 3) This version of the file contains mappings for both decomposed -# and precomposed input, but does not contain mappings for -# 'decompositions' of characters like LETTER O WITH STROKE that -# are not canonically decomposed, e.g. there are no entries like -# 004F 0338; 004F -# 006F 0338; 006F -# -# Stability -# The repertoire of canonically precomposed characters is complete, -# but some diacritics are not canonically decomposed, yet should be -# folded in some contexts. Additional instances of such characters -# are expected to be added over time, so there will be future -# additions to this table. In addition, the folding methodology has not -# been reviewed (see notes). -# -########################################################################### - -#decomposed -0041 0300; 0041 # À → A LATIN CAPITAL LETTER A, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER A -0041 0301; 0041 # Á → A LATIN CAPITAL LETTER A, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER A -0041 0302; 0041 # Â → A LATIN CAPITAL LETTER A, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER A -0041 0303; 0041 # Ã → A LATIN CAPITAL LETTER A, COMBINING TILDE → LATIN CAPITAL LETTER A -0041 0308; 0041 # Ä → A LATIN CAPITAL LETTER A, COMBINING DIAERESIS → LATIN CAPITAL LETTER A -0041 030A; 0041 # Å → A LATIN CAPITAL LETTER A, COMBINING RING ABOVE → LATIN CAPITAL LETTER A -0043 0327; 0043 # Ç → C LATIN CAPITAL LETTER C, COMBINING CEDILLA → LATIN CAPITAL LETTER C -0045 0300; 0045 # È → E LATIN CAPITAL LETTER E, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER E -0045 0301; 0045 # É → E LATIN CAPITAL LETTER E, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER E -0045 0302; 0045 # Ê → E LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER E -0045 0308; 0045 # Ë → E LATIN CAPITAL LETTER E, COMBINING DIAERESIS → LATIN CAPITAL LETTER E -0049 0300; 0049 # Ì → I LATIN CAPITAL LETTER I, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER I -0049 0301; 0049 # Í → I LATIN CAPITAL LETTER I, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER I -0049 0302; 0049 # Î → I LATIN CAPITAL LETTER I, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER I -0049 0308; 0049 # Ï → I LATIN CAPITAL LETTER I, COMBINING DIAERESIS → LATIN CAPITAL LETTER I -004E 0303; 004E # Ñ → N LATIN CAPITAL LETTER N, COMBINING TILDE → LATIN CAPITAL LETTER N -004F 0300; 004F # Ò → O LATIN CAPITAL LETTER O, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER O -004F 0301; 004F # Ó → O LATIN CAPITAL LETTER O, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER O -004F 0302; 004F # Ô → O LATIN CAPITAL LETTER O, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER O -004F 0303; 004F # Õ → O LATIN CAPITAL LETTER O, COMBINING TILDE → LATIN CAPITAL LETTER O -004F 0308; 004F # Ö → O LATIN CAPITAL LETTER O, COMBINING DIAERESIS → LATIN CAPITAL LETTER O -0055 0300; 0055 # Ù → U LATIN CAPITAL LETTER U, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER U -0055 0301; 0055 # Ú → U LATIN CAPITAL LETTER U, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER U -0055 0302; 0055 # Û → U LATIN CAPITAL LETTER U, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER U -0055 0308; 0055 # Ü → U LATIN CAPITAL LETTER U, COMBINING DIAERESIS → LATIN CAPITAL LETTER U -0059 0301; 0059 # Ý → Y LATIN CAPITAL LETTER Y, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER Y -0061 0300; 0061 # à → a LATIN SMALL LETTER A, COMBINING GRAVE ACCENT → LATIN SMALL LETTER A -0061 0301; 0061 # á → a LATIN SMALL LETTER A, COMBINING ACUTE ACCENT → LATIN SMALL LETTER A -0061 0302; 0061 # â → a LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER A -0061 0303; 0061 # ã → a LATIN SMALL LETTER A, COMBINING TILDE → LATIN SMALL LETTER A -0061 0308; 0061 # ä → a LATIN SMALL LETTER A, COMBINING DIAERESIS → LATIN SMALL LETTER A -0061 030A; 0061 # å → a LATIN SMALL LETTER A, COMBINING RING ABOVE → LATIN SMALL LETTER A -0063 0327; 0063 # ç → c LATIN SMALL LETTER C, COMBINING CEDILLA → LATIN SMALL LETTER C -0065 0300; 0065 # è → e LATIN SMALL LETTER E, COMBINING GRAVE ACCENT → LATIN SMALL LETTER E -0065 0301; 0065 # é → e LATIN SMALL LETTER E, COMBINING ACUTE ACCENT → LATIN SMALL LETTER E -0065 0302; 0065 # ê → e LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER E -0065 0308; 0065 # ë → e LATIN SMALL LETTER E, COMBINING DIAERESIS → LATIN SMALL LETTER E -0069 0300; 0069 # ì → i LATIN SMALL LETTER I, COMBINING GRAVE ACCENT → LATIN SMALL LETTER I -0069 0301; 0069 # í → i LATIN SMALL LETTER I, COMBINING ACUTE ACCENT → LATIN SMALL LETTER I -0069 0302; 0069 # î → i LATIN SMALL LETTER I, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER I -0069 0308; 0069 # ï → i LATIN SMALL LETTER I, COMBINING DIAERESIS → LATIN SMALL LETTER I -006E 0303; 006E # ñ → n LATIN SMALL LETTER N, COMBINING TILDE → LATIN SMALL LETTER N -006F 0300; 006F # ò → o LATIN SMALL LETTER O, COMBINING GRAVE ACCENT → LATIN SMALL LETTER O -006F 0301; 006F # ó → o LATIN SMALL LETTER O, COMBINING ACUTE ACCENT → LATIN SMALL LETTER O -006F 0302; 006F # ô → o LATIN SMALL LETTER O, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER O -006F 0303; 006F # õ → o LATIN SMALL LETTER O, COMBINING TILDE → LATIN SMALL LETTER O -006F 0308; 006F # ö → o LATIN SMALL LETTER O, COMBINING DIAERESIS → LATIN SMALL LETTER O -0075 0300; 0075 # ù → u LATIN SMALL LETTER U, COMBINING GRAVE ACCENT → LATIN SMALL LETTER U -0075 0301; 0075 # ú → u LATIN SMALL LETTER U, COMBINING ACUTE ACCENT → LATIN SMALL LETTER U -0075 0302; 0075 # û → u LATIN SMALL LETTER U, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER U -0075 0308; 0075 # ü → u LATIN SMALL LETTER U, COMBINING DIAERESIS → LATIN SMALL LETTER U -0079 0301; 0079 # ý → y LATIN SMALL LETTER Y, COMBINING ACUTE ACCENT → LATIN SMALL LETTER Y -0079 0308; 0079 # ÿ → y LATIN SMALL LETTER Y, COMBINING DIAERESIS → LATIN SMALL LETTER Y -0041 0304; 0041 # Ā → A LATIN CAPITAL LETTER A, COMBINING MACRON → LATIN CAPITAL LETTER A -0061 0304; 0061 # ā → a LATIN SMALL LETTER A, COMBINING MACRON → LATIN SMALL LETTER A -0041 0306; 0041 # Ă → A LATIN CAPITAL LETTER A, COMBINING BREVE → LATIN CAPITAL LETTER A -0061 0306; 0061 # ă → a LATIN SMALL LETTER A, COMBINING BREVE → LATIN SMALL LETTER A -0041 0328; 0041 # Ą → A LATIN CAPITAL LETTER A, COMBINING OGONEK → LATIN CAPITAL LETTER A -0061 0328; 0061 # ą → a LATIN SMALL LETTER A, COMBINING OGONEK → LATIN SMALL LETTER A -0043 0301; 0043 # Ć → C LATIN CAPITAL LETTER C, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER C -0063 0301; 0063 # ć → c LATIN SMALL LETTER C, COMBINING ACUTE ACCENT → LATIN SMALL LETTER C -0043 0302; 0043 # Ĉ → C LATIN CAPITAL LETTER C, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER C -0063 0302; 0063 # ĉ → c LATIN SMALL LETTER C, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER C -0043 0307; 0043 # Ċ → C LATIN CAPITAL LETTER C, COMBINING DOT ABOVE → LATIN CAPITAL LETTER C -0063 0307; 0063 # ċ → c LATIN SMALL LETTER C, COMBINING DOT ABOVE → LATIN SMALL LETTER C -0043 030C; 0043 # Č → C LATIN CAPITAL LETTER C, COMBINING CARON → LATIN CAPITAL LETTER C -0063 030C; 0063 # č → c LATIN SMALL LETTER C, COMBINING CARON → LATIN SMALL LETTER C -0044 030C; 0044 # Ď → D LATIN CAPITAL LETTER D, COMBINING CARON → LATIN CAPITAL LETTER D -0064 030C; 0064 # ď → d LATIN SMALL LETTER D, COMBINING CARON → LATIN SMALL LETTER D -0045 0304; 0045 # Ē → E LATIN CAPITAL LETTER E, COMBINING MACRON → LATIN CAPITAL LETTER E -0065 0304; 0065 # ē → e LATIN SMALL LETTER E, COMBINING MACRON → LATIN SMALL LETTER E -0045 0306; 0045 # Ĕ → E LATIN CAPITAL LETTER E, COMBINING BREVE → LATIN CAPITAL LETTER E -0065 0306; 0065 # ĕ → e LATIN SMALL LETTER E, COMBINING BREVE → LATIN SMALL LETTER E -0045 0307; 0045 # Ė → E LATIN CAPITAL LETTER E, COMBINING DOT ABOVE → LATIN CAPITAL LETTER E -0065 0307; 0065 # ė → e LATIN SMALL LETTER E, COMBINING DOT ABOVE → LATIN SMALL LETTER E -0045 0328; 0045 # Ę → E LATIN CAPITAL LETTER E, COMBINING OGONEK → LATIN CAPITAL LETTER E -0065 0328; 0065 # ę → e LATIN SMALL LETTER E, COMBINING OGONEK → LATIN SMALL LETTER E -0045 030C; 0045 # Ě → E LATIN CAPITAL LETTER E, COMBINING CARON → LATIN CAPITAL LETTER E -0065 030C; 0065 # ě → e LATIN SMALL LETTER E, COMBINING CARON → LATIN SMALL LETTER E -0047 0302; 0047 # Ĝ → G LATIN CAPITAL LETTER G, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER G -0067 0302; 0067 # ĝ → g LATIN SMALL LETTER G, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER G -0047 0306; 0047 # Ğ → G LATIN CAPITAL LETTER G, COMBINING BREVE → LATIN CAPITAL LETTER G -0067 0306; 0067 # ğ → g LATIN SMALL LETTER G, COMBINING BREVE → LATIN SMALL LETTER G -0047 0307; 0047 # Ġ → G LATIN CAPITAL LETTER G, COMBINING DOT ABOVE → LATIN CAPITAL LETTER G -0067 0307; 0067 # ġ → g LATIN SMALL LETTER G, COMBINING DOT ABOVE → LATIN SMALL LETTER G -0047 0327; 0047 # Ģ → G LATIN CAPITAL LETTER G, COMBINING CEDILLA → LATIN CAPITAL LETTER G -0067 0327; 0067 # ģ → g LATIN SMALL LETTER G, COMBINING CEDILLA → LATIN SMALL LETTER G -0048 0302; 0048 # Ĥ → H LATIN CAPITAL LETTER H, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER H -0068 0302; 0068 # ĥ → h LATIN SMALL LETTER H, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER H -0049 0303; 0049 # Ĩ → I LATIN CAPITAL LETTER I, COMBINING TILDE → LATIN CAPITAL LETTER I -0069 0303; 0069 # ĩ → i LATIN SMALL LETTER I, COMBINING TILDE → LATIN SMALL LETTER I -0049 0304; 0049 # Ī → I LATIN CAPITAL LETTER I, COMBINING MACRON → LATIN CAPITAL LETTER I -0069 0304; 0069 # ī → i LATIN SMALL LETTER I, COMBINING MACRON → LATIN SMALL LETTER I -0049 0306; 0049 # Ĭ → I LATIN CAPITAL LETTER I, COMBINING BREVE → LATIN CAPITAL LETTER I -0069 0306; 0069 # ĭ → i LATIN SMALL LETTER I, COMBINING BREVE → LATIN SMALL LETTER I -0049 0328; 0049 # Į → I LATIN CAPITAL LETTER I, COMBINING OGONEK → LATIN CAPITAL LETTER I -0069 0328; 0069 # į → i LATIN SMALL LETTER I, COMBINING OGONEK → LATIN SMALL LETTER I -0049 0307; 0049 # İ → I LATIN CAPITAL LETTER I, COMBINING DOT ABOVE → LATIN CAPITAL LETTER I -004A 0302; 004A # Ĵ → J LATIN CAPITAL LETTER J, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER J -006A 0302; 006A # ĵ → j LATIN SMALL LETTER J, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER J -004B 0327; 004B # Ķ → K LATIN CAPITAL LETTER K, COMBINING CEDILLA → LATIN CAPITAL LETTER K -006B 0327; 006B # ķ → k LATIN SMALL LETTER K, COMBINING CEDILLA → LATIN SMALL LETTER K -004C 0301; 004C # Ĺ → L LATIN CAPITAL LETTER L, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER L -006C 0301; 006C # ĺ → l LATIN SMALL LETTER L, COMBINING ACUTE ACCENT → LATIN SMALL LETTER L -004C 0327; 004C # Ļ → L LATIN CAPITAL LETTER L, COMBINING CEDILLA → LATIN CAPITAL LETTER L -006C 0327; 006C # ļ → l LATIN SMALL LETTER L, COMBINING CEDILLA → LATIN SMALL LETTER L -004C 030C; 004C # Ľ → L LATIN CAPITAL LETTER L, COMBINING CARON → LATIN CAPITAL LETTER L -006C 030C; 006C # ľ → l LATIN SMALL LETTER L, COMBINING CARON → LATIN SMALL LETTER L -004E 0301; 004E # Ń → N LATIN CAPITAL LETTER N, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER N -006E 0301; 006E # ń → n LATIN SMALL LETTER N, COMBINING ACUTE ACCENT → LATIN SMALL LETTER N -004E 0327; 004E # Ņ → N LATIN CAPITAL LETTER N, COMBINING CEDILLA → LATIN CAPITAL LETTER N -006E 0327; 006E # ņ → n LATIN SMALL LETTER N, COMBINING CEDILLA → LATIN SMALL LETTER N -004E 030C; 004E # Ň → N LATIN CAPITAL LETTER N, COMBINING CARON → LATIN CAPITAL LETTER N -006E 030C; 006E # ň → n LATIN SMALL LETTER N, COMBINING CARON → LATIN SMALL LETTER N -004F 0304; 004F # Ō → O LATIN CAPITAL LETTER O, COMBINING MACRON → LATIN CAPITAL LETTER O -006F 0304; 006F # ō → o LATIN SMALL LETTER O, COMBINING MACRON → LATIN SMALL LETTER O -004F 0306; 004F # Ŏ → O LATIN CAPITAL LETTER O, COMBINING BREVE → LATIN CAPITAL LETTER O -006F 0306; 006F # ŏ → o LATIN SMALL LETTER O, COMBINING BREVE → LATIN SMALL LETTER O -004F 030B; 004F # Ő → O LATIN CAPITAL LETTER O, COMBINING DOUBLE ACUTE ACCENT → LATIN CAPITAL LETTER O -006F 030B; 006F # ő → o LATIN SMALL LETTER O, COMBINING DOUBLE ACUTE ACCENT → LATIN SMALL LETTER O -0052 0301; 0052 # Ŕ → R LATIN CAPITAL LETTER R, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER R -0072 0301; 0072 # ŕ → r LATIN SMALL LETTER R, COMBINING ACUTE ACCENT → LATIN SMALL LETTER R -0052 0327; 0052 # Ŗ → R LATIN CAPITAL LETTER R, COMBINING CEDILLA → LATIN CAPITAL LETTER R -0072 0327; 0072 # ŗ → r LATIN SMALL LETTER R, COMBINING CEDILLA → LATIN SMALL LETTER R -0052 030C; 0052 # Ř → R LATIN CAPITAL LETTER R, COMBINING CARON → LATIN CAPITAL LETTER R -0072 030C; 0072 # ř → r LATIN SMALL LETTER R, COMBINING CARON → LATIN SMALL LETTER R -0053 0301; 0053 # Ś → S LATIN CAPITAL LETTER S, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER S -0073 0301; 0073 # ś → s LATIN SMALL LETTER S, COMBINING ACUTE ACCENT → LATIN SMALL LETTER S -0053 0302; 0053 # Ŝ → S LATIN CAPITAL LETTER S, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER S -0073 0302; 0073 # ŝ → s LATIN SMALL LETTER S, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER S -0053 0327; 0053 # Ş → S LATIN CAPITAL LETTER S, COMBINING CEDILLA → LATIN CAPITAL LETTER S -0073 0327; 0073 # ş → s LATIN SMALL LETTER S, COMBINING CEDILLA → LATIN SMALL LETTER S -0053 030C; 0053 # Š → S LATIN CAPITAL LETTER S, COMBINING CARON → LATIN CAPITAL LETTER S -0073 030C; 0073 # š → s LATIN SMALL LETTER S, COMBINING CARON → LATIN SMALL LETTER S -0054 0327; 0054 # Ţ → T LATIN CAPITAL LETTER T, COMBINING CEDILLA → LATIN CAPITAL LETTER T -0074 0327; 0074 # ţ → t LATIN SMALL LETTER T, COMBINING CEDILLA → LATIN SMALL LETTER T -0054 030C; 0054 # Ť → T LATIN CAPITAL LETTER T, COMBINING CARON → LATIN CAPITAL LETTER T -0074 030C; 0074 # ť → t LATIN SMALL LETTER T, COMBINING CARON → LATIN SMALL LETTER T -0055 0303; 0055 # Ũ → U LATIN CAPITAL LETTER U, COMBINING TILDE → LATIN CAPITAL LETTER U -0075 0303; 0075 # ũ → u LATIN SMALL LETTER U, COMBINING TILDE → LATIN SMALL LETTER U -0055 0304; 0055 # Ū → U LATIN CAPITAL LETTER U, COMBINING MACRON → LATIN CAPITAL LETTER U -0075 0304; 0075 # ū → u LATIN SMALL LETTER U, COMBINING MACRON → LATIN SMALL LETTER U -0055 0306; 0055 # Ŭ → U LATIN CAPITAL LETTER U, COMBINING BREVE → LATIN CAPITAL LETTER U -0075 0306; 0075 # ŭ → u LATIN SMALL LETTER U, COMBINING BREVE → LATIN SMALL LETTER U -0055 030A; 0055 # Ů → U LATIN CAPITAL LETTER U, COMBINING RING ABOVE → LATIN CAPITAL LETTER U -0075 030A; 0075 # ů → u LATIN SMALL LETTER U, COMBINING RING ABOVE → LATIN SMALL LETTER U -0055 030B; 0055 # Ű → U LATIN CAPITAL LETTER U, COMBINING DOUBLE ACUTE ACCENT → LATIN CAPITAL LETTER U -0075 030B; 0075 # ű → u LATIN SMALL LETTER U, COMBINING DOUBLE ACUTE ACCENT → LATIN SMALL LETTER U -0055 0328; 0055 # Ų → U LATIN CAPITAL LETTER U, COMBINING OGONEK → LATIN CAPITAL LETTER U -0075 0328; 0075 # ų → u LATIN SMALL LETTER U, COMBINING OGONEK → LATIN SMALL LETTER U -0057 0302; 0057 # Ŵ → W LATIN CAPITAL LETTER W, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER W -0077 0302; 0077 # ŵ → w LATIN SMALL LETTER W, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER W -0059 0302; 0059 # Ŷ → Y LATIN CAPITAL LETTER Y, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER Y -0079 0302; 0079 # ŷ → y LATIN SMALL LETTER Y, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER Y -0059 0308; 0059 # Ÿ → Y LATIN CAPITAL LETTER Y, COMBINING DIAERESIS → LATIN CAPITAL LETTER Y -005A 0301; 005A # Ź → Z LATIN CAPITAL LETTER Z, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER Z -007A 0301; 007A # ź → z LATIN SMALL LETTER Z, COMBINING ACUTE ACCENT → LATIN SMALL LETTER Z -005A 0307; 005A # Ż → Z LATIN CAPITAL LETTER Z, COMBINING DOT ABOVE → LATIN CAPITAL LETTER Z -007A 0307; 007A # ż → z LATIN SMALL LETTER Z, COMBINING DOT ABOVE → LATIN SMALL LETTER Z -005A 030C; 005A # Ž → Z LATIN CAPITAL LETTER Z, COMBINING CARON → LATIN CAPITAL LETTER Z -007A 030C; 007A # ž → z LATIN SMALL LETTER Z, COMBINING CARON → LATIN SMALL LETTER Z -004F 031B; 004F # Ơ → O LATIN CAPITAL LETTER O, COMBINING HORN → LATIN CAPITAL LETTER O -006F 031B; 006F # ơ → o LATIN SMALL LETTER O, COMBINING HORN → LATIN SMALL LETTER O -0055 031B; 0055 # Ư → U LATIN CAPITAL LETTER U, COMBINING HORN → LATIN CAPITAL LETTER U -0075 031B; 0075 # ư → u LATIN SMALL LETTER U, COMBINING HORN → LATIN SMALL LETTER U -0041 030C; 0041 # Ǎ → A LATIN CAPITAL LETTER A, COMBINING CARON → LATIN CAPITAL LETTER A -0061 030C; 0061 # ǎ → a LATIN SMALL LETTER A, COMBINING CARON → LATIN SMALL LETTER A -0049 030C; 0049 # Ǐ → I LATIN CAPITAL LETTER I, COMBINING CARON → LATIN CAPITAL LETTER I -0069 030C; 0069 # ǐ → i LATIN SMALL LETTER I, COMBINING CARON → LATIN SMALL LETTER I -004F 030C; 004F # Ǒ → O LATIN CAPITAL LETTER O, COMBINING CARON → LATIN CAPITAL LETTER O -006F 030C; 006F # ǒ → o LATIN SMALL LETTER O, COMBINING CARON → LATIN SMALL LETTER O -0055 030C; 0055 # Ǔ → U LATIN CAPITAL LETTER U, COMBINING CARON → LATIN CAPITAL LETTER U -0075 030C; 0075 # ǔ → u LATIN SMALL LETTER U, COMBINING CARON → LATIN SMALL LETTER U -00C6 0304; 00C6 # Ǣ → Æ LATIN CAPITAL LETTER AE, COMBINING MACRON → LATIN CAPITAL LETTER AE -00E6 0304; 00E6 # ǣ → æ LATIN SMALL LETTER AE, COMBINING MACRON → LATIN SMALL LETTER AE -0047 030C; 0047 # Ǧ → G LATIN CAPITAL LETTER G, COMBINING CARON → LATIN CAPITAL LETTER G -0067 030C; 0067 # ǧ → g LATIN SMALL LETTER G, COMBINING CARON → LATIN SMALL LETTER G -004B 030C; 004B # Ǩ → K LATIN CAPITAL LETTER K, COMBINING CARON → LATIN CAPITAL LETTER K -006B 030C; 006B # ǩ → k LATIN SMALL LETTER K, COMBINING CARON → LATIN SMALL LETTER K -004F 0328; 004F # Ǫ → O LATIN CAPITAL LETTER O, COMBINING OGONEK → LATIN CAPITAL LETTER O -006F 0328; 006F # ǫ → o LATIN SMALL LETTER O, COMBINING OGONEK → LATIN SMALL LETTER O -01B7 030C; 01B7 # Ǯ → Ʒ LATIN CAPITAL LETTER EZH, COMBINING CARON → LATIN CAPITAL LETTER EZH -0292 030C; 0292 # ǯ → ʒ LATIN SMALL LETTER EZH, COMBINING CARON → LATIN SMALL LETTER EZH -006A 030C; 006A # ǰ → j LATIN SMALL LETTER J, COMBINING CARON → LATIN SMALL LETTER J -0047 0301; 0047 # Ǵ → G LATIN CAPITAL LETTER G, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER G -0067 0301; 0067 # ǵ → g LATIN SMALL LETTER G, COMBINING ACUTE ACCENT → LATIN SMALL LETTER G -004E 0300; 004E # Ǹ → N LATIN CAPITAL LETTER N, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER N -006E 0300; 006E # ǹ → n LATIN SMALL LETTER N, COMBINING GRAVE ACCENT → LATIN SMALL LETTER N -00C6 0301; 00C6 # Ǽ → Æ LATIN CAPITAL LETTER AE, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER AE -00E6 0301; 00E6 # ǽ → æ LATIN SMALL LETTER AE, COMBINING ACUTE ACCENT → LATIN SMALL LETTER AE -00D8 0301; 00D8 # Ǿ → Ø LATIN CAPITAL LETTER O WITH STROKE, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER O WITH STROKE -00F8 0301; 00F8 # ǿ → ø LATIN SMALL LETTER O WITH STROKE, COMBINING ACUTE ACCENT → LATIN SMALL LETTER O WITH STROKE -0041 030F; 0041 # Ȁ → A LATIN CAPITAL LETTER A, COMBINING DOUBLE GRAVE ACCENT → LATIN CAPITAL LETTER A -0061 030F; 0061 # ȁ → a LATIN SMALL LETTER A, COMBINING DOUBLE GRAVE ACCENT → LATIN SMALL LETTER A -0041 0311; 0041 # Ȃ → A LATIN CAPITAL LETTER A, COMBINING INVERTED BREVE → LATIN CAPITAL LETTER A -0061 0311; 0061 # ȃ → a LATIN SMALL LETTER A, COMBINING INVERTED BREVE → LATIN SMALL LETTER A -0045 030F; 0045 # Ȅ → E LATIN CAPITAL LETTER E, COMBINING DOUBLE GRAVE ACCENT → LATIN CAPITAL LETTER E -0065 030F; 0065 # ȅ → e LATIN SMALL LETTER E, COMBINING DOUBLE GRAVE ACCENT → LATIN SMALL LETTER E -0045 0311; 0045 # Ȇ → E LATIN CAPITAL LETTER E, COMBINING INVERTED BREVE → LATIN CAPITAL LETTER E -0065 0311; 0065 # ȇ → e LATIN SMALL LETTER E, COMBINING INVERTED BREVE → LATIN SMALL LETTER E -0049 030F; 0049 # Ȉ → I LATIN CAPITAL LETTER I, COMBINING DOUBLE GRAVE ACCENT → LATIN CAPITAL LETTER I -0069 030F; 0069 # ȉ → i LATIN SMALL LETTER I, COMBINING DOUBLE GRAVE ACCENT → LATIN SMALL LETTER I -0049 0311; 0049 # Ȋ → I LATIN CAPITAL LETTER I, COMBINING INVERTED BREVE → LATIN CAPITAL LETTER I -0069 0311; 0069 # ȋ → i LATIN SMALL LETTER I, COMBINING INVERTED BREVE → LATIN SMALL LETTER I -004F 030F; 004F # Ȍ → O LATIN CAPITAL LETTER O, COMBINING DOUBLE GRAVE ACCENT → LATIN CAPITAL LETTER O -006F 030F; 006F # ȍ → o LATIN SMALL LETTER O, COMBINING DOUBLE GRAVE ACCENT → LATIN SMALL LETTER O -004F 0311; 004F # Ȏ → O LATIN CAPITAL LETTER O, COMBINING INVERTED BREVE → LATIN CAPITAL LETTER O -006F 0311; 006F # ȏ → o LATIN SMALL LETTER O, COMBINING INVERTED BREVE → LATIN SMALL LETTER O -0052 030F; 0052 # Ȑ → R LATIN CAPITAL LETTER R, COMBINING DOUBLE GRAVE ACCENT → LATIN CAPITAL LETTER R -0072 030F; 0072 # ȑ → r LATIN SMALL LETTER R, COMBINING DOUBLE GRAVE ACCENT → LATIN SMALL LETTER R -0052 0311; 0052 # Ȓ → R LATIN CAPITAL LETTER R, COMBINING INVERTED BREVE → LATIN CAPITAL LETTER R -0072 0311; 0072 # ȓ → r LATIN SMALL LETTER R, COMBINING INVERTED BREVE → LATIN SMALL LETTER R -0055 030F; 0055 # Ȕ → U LATIN CAPITAL LETTER U, COMBINING DOUBLE GRAVE ACCENT → LATIN CAPITAL LETTER U -0075 030F; 0075 # ȕ → u LATIN SMALL LETTER U, COMBINING DOUBLE GRAVE ACCENT → LATIN SMALL LETTER U -0055 0311; 0055 # Ȗ → U LATIN CAPITAL LETTER U, COMBINING INVERTED BREVE → LATIN CAPITAL LETTER U -0075 0311; 0075 # ȗ → u LATIN SMALL LETTER U, COMBINING INVERTED BREVE → LATIN SMALL LETTER U -0053 0326; 0053 # Ș → S LATIN CAPITAL LETTER S, COMBINING COMMA BELOW → LATIN CAPITAL LETTER S -0073 0326; 0073 # ș → s LATIN SMALL LETTER S, COMBINING COMMA BELOW → LATIN SMALL LETTER S -0054 0326; 0054 # Ț → T LATIN CAPITAL LETTER T, COMBINING COMMA BELOW → LATIN CAPITAL LETTER T -0074 0326; 0074 # ț → t LATIN SMALL LETTER T, COMBINING COMMA BELOW → LATIN SMALL LETTER T -0048 030C; 0048 # Ȟ → H LATIN CAPITAL LETTER H, COMBINING CARON → LATIN CAPITAL LETTER H -0068 030C; 0068 # ȟ → h LATIN SMALL LETTER H, COMBINING CARON → LATIN SMALL LETTER H -0041 0307; 0041 # Ȧ → A LATIN CAPITAL LETTER A, COMBINING DOT ABOVE → LATIN CAPITAL LETTER A -0061 0307; 0061 # ȧ → a LATIN SMALL LETTER A, COMBINING DOT ABOVE → LATIN SMALL LETTER A -0045 0327; 0045 # Ȩ → E LATIN CAPITAL LETTER E, COMBINING CEDILLA → LATIN CAPITAL LETTER E -0065 0327; 0065 # ȩ → e LATIN SMALL LETTER E, COMBINING CEDILLA → LATIN SMALL LETTER E -004F 0307; 004F # Ȯ → O LATIN CAPITAL LETTER O, COMBINING DOT ABOVE → LATIN CAPITAL LETTER O -006F 0307; 006F # ȯ → o LATIN SMALL LETTER O, COMBINING DOT ABOVE → LATIN SMALL LETTER O -0059 0304; 0059 # Ȳ → Y LATIN CAPITAL LETTER Y, COMBINING MACRON → LATIN CAPITAL LETTER Y -0079 0304; 0079 # ȳ → y LATIN SMALL LETTER Y, COMBINING MACRON → LATIN SMALL LETTER Y -0391 0301; 0391 # Ά → Α GREEK CAPITAL LETTER ALPHA, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER ALPHA -0395 0301; 0395 # Έ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER EPSILON -0397 0301; 0397 # Ή → Η GREEK CAPITAL LETTER ETA, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER ETA -0399 0301; 0399 # Ί → Ι GREEK CAPITAL LETTER IOTA, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER IOTA -039F 0301; 039F # Ό → Ο GREEK CAPITAL LETTER OMICRON, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER OMICRON -03A5 0301; 03A5 # Ύ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER UPSILON -03A9 0301; 03A9 # Ώ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER OMEGA -0399 0308; 0399 # Ϊ → Ι GREEK CAPITAL LETTER IOTA, COMBINING DIAERESIS → GREEK CAPITAL LETTER IOTA -03A5 0308; 03A5 # Ϋ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING DIAERESIS → GREEK CAPITAL LETTER UPSILON -03B1 0301; 03B1 # ά → α GREEK SMALL LETTER ALPHA, COMBINING ACUTE ACCENT → GREEK SMALL LETTER ALPHA -03B5 0301; 03B5 # έ → ε GREEK SMALL LETTER EPSILON, COMBINING ACUTE ACCENT → GREEK SMALL LETTER EPSILON -03B7 0301; 03B7 # ή → η GREEK SMALL LETTER ETA, COMBINING ACUTE ACCENT → GREEK SMALL LETTER ETA -03B9 0301; 03B9 # ί → ι GREEK SMALL LETTER IOTA, COMBINING ACUTE ACCENT → GREEK SMALL LETTER IOTA -03B9 0308; 03B9 # ϊ → ι GREEK SMALL LETTER IOTA, COMBINING DIAERESIS → GREEK SMALL LETTER IOTA -03C5 0308; 03C5 # ϋ → υ GREEK SMALL LETTER UPSILON, COMBINING DIAERESIS → GREEK SMALL LETTER UPSILON -03BF 0301; 03BF # ό → ο GREEK SMALL LETTER OMICRON, COMBINING ACUTE ACCENT → GREEK SMALL LETTER OMICRON -03C5 0301; 03C5 # ύ → υ GREEK SMALL LETTER UPSILON, COMBINING ACUTE ACCENT → GREEK SMALL LETTER UPSILON -03C9 0301; 03C9 # ώ → ω GREEK SMALL LETTER OMEGA, COMBINING ACUTE ACCENT → GREEK SMALL LETTER OMEGA -03D2 0301; 03D2 # ϓ → ϒ GREEK UPSILON WITH HOOK SYMBOL, COMBINING ACUTE ACCENT → GREEK UPSILON WITH HOOK SYMBOL -03D2 0308; 03D2 # ϔ → ϒ GREEK UPSILON WITH HOOK SYMBOL, COMBINING DIAERESIS → GREEK UPSILON WITH HOOK SYMBOL -0415 0300; 0415 # Ѐ → Е CYRILLIC CAPITAL LETTER IE, COMBINING GRAVE ACCENT → CYRILLIC CAPITAL LETTER IE -0418 0300; 0418 # Ѝ → И CYRILLIC CAPITAL LETTER I, COMBINING GRAVE ACCENT → CYRILLIC CAPITAL LETTER I -0435 0300; 0435 # ѐ → е CYRILLIC SMALL LETTER IE, COMBINING GRAVE ACCENT → CYRILLIC SMALL LETTER IE -0438 0300; 0438 # ѝ → и CYRILLIC SMALL LETTER I, COMBINING GRAVE ACCENT → CYRILLIC SMALL LETTER I -0474 030F; 0474 # Ѷ → Ѵ CYRILLIC CAPITAL LETTER IZHITSA, COMBINING DOUBLE GRAVE ACCENT → CYRILLIC CAPITAL LETTER IZHITSA -0475 030F; 0475 # ѷ → ѵ CYRILLIC SMALL LETTER IZHITSA, COMBINING DOUBLE GRAVE ACCENT → CYRILLIC SMALL LETTER IZHITSA -0416 0306; 0416 # Ӂ → Ж CYRILLIC CAPITAL LETTER ZHE, COMBINING BREVE → CYRILLIC CAPITAL LETTER ZHE -0436 0306; 0436 # ӂ → ж CYRILLIC SMALL LETTER ZHE, COMBINING BREVE → CYRILLIC SMALL LETTER ZHE -0410 0306; 0410 # Ӑ → А CYRILLIC CAPITAL LETTER A, COMBINING BREVE → CYRILLIC CAPITAL LETTER A -0430 0306; 0430 # ӑ → а CYRILLIC SMALL LETTER A, COMBINING BREVE → CYRILLIC SMALL LETTER A -0410 0308; 0410 # Ӓ → А CYRILLIC CAPITAL LETTER A, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER A -0430 0308; 0430 # ӓ → а CYRILLIC SMALL LETTER A, COMBINING DIAERESIS → CYRILLIC SMALL LETTER A -0415 0306; 0415 # Ӗ → Е CYRILLIC CAPITAL LETTER IE, COMBINING BREVE → CYRILLIC CAPITAL LETTER IE -0435 0306; 0435 # ӗ → е CYRILLIC SMALL LETTER IE, COMBINING BREVE → CYRILLIC SMALL LETTER IE -04D8 0308; 04D8 # Ӛ → Ә CYRILLIC CAPITAL LETTER SCHWA, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER SCHWA -04D9 0308; 04D9 # ӛ → ә CYRILLIC SMALL LETTER SCHWA, COMBINING DIAERESIS → CYRILLIC SMALL LETTER SCHWA -0416 0308; 0416 # Ӝ → Ж CYRILLIC CAPITAL LETTER ZHE, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER ZHE -0436 0308; 0436 # ӝ → ж CYRILLIC SMALL LETTER ZHE, COMBINING DIAERESIS → CYRILLIC SMALL LETTER ZHE -0417 0308; 0417 # Ӟ → З CYRILLIC CAPITAL LETTER ZE, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER ZE -0437 0308; 0437 # ӟ → з CYRILLIC SMALL LETTER ZE, COMBINING DIAERESIS → CYRILLIC SMALL LETTER ZE -0418 0304; 0418 # Ӣ → И CYRILLIC CAPITAL LETTER I, COMBINING MACRON → CYRILLIC CAPITAL LETTER I -0438 0304; 0438 # ӣ → и CYRILLIC SMALL LETTER I, COMBINING MACRON → CYRILLIC SMALL LETTER I -0418 0308; 0418 # Ӥ → И CYRILLIC CAPITAL LETTER I, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER I -0438 0308; 0438 # ӥ → и CYRILLIC SMALL LETTER I, COMBINING DIAERESIS → CYRILLIC SMALL LETTER I -041E 0308; 041E # Ӧ → О CYRILLIC CAPITAL LETTER O, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER O -043E 0308; 043E # ӧ → о CYRILLIC SMALL LETTER O, COMBINING DIAERESIS → CYRILLIC SMALL LETTER O -04E8 0308; 04E8 # Ӫ → Ө CYRILLIC CAPITAL LETTER BARRED O, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER BARRED O -04E9 0308; 04E9 # ӫ → ө CYRILLIC SMALL LETTER BARRED O, COMBINING DIAERESIS → CYRILLIC SMALL LETTER BARRED O -042D 0308; 042D # Ӭ → Э CYRILLIC CAPITAL LETTER E, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER E -044D 0308; 044D # ӭ → э CYRILLIC SMALL LETTER E, COMBINING DIAERESIS → CYRILLIC SMALL LETTER E -0423 0304; 0423 # Ӯ → У CYRILLIC CAPITAL LETTER U, COMBINING MACRON → CYRILLIC CAPITAL LETTER U -0443 0304; 0443 # ӯ → у CYRILLIC SMALL LETTER U, COMBINING MACRON → CYRILLIC SMALL LETTER U -0423 0308; 0423 # Ӱ → У CYRILLIC CAPITAL LETTER U, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER U -0443 0308; 0443 # ӱ → у CYRILLIC SMALL LETTER U, COMBINING DIAERESIS → CYRILLIC SMALL LETTER U -0423 030B; 0423 # Ӳ → У CYRILLIC CAPITAL LETTER U, COMBINING DOUBLE ACUTE ACCENT → CYRILLIC CAPITAL LETTER U -0443 030B; 0443 # ӳ → у CYRILLIC SMALL LETTER U, COMBINING DOUBLE ACUTE ACCENT → CYRILLIC SMALL LETTER U -0427 0308; 0427 # Ӵ → Ч CYRILLIC CAPITAL LETTER CHE, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER CHE -0447 0308; 0447 # ӵ → ч CYRILLIC SMALL LETTER CHE, COMBINING DIAERESIS → CYRILLIC SMALL LETTER CHE -042B 0308; 042B # Ӹ → Ы CYRILLIC CAPITAL LETTER YERU, COMBINING DIAERESIS → CYRILLIC CAPITAL LETTER YERU -044B 0308; 044B # ӹ → ы CYRILLIC SMALL LETTER YERU, COMBINING DIAERESIS → CYRILLIC SMALL LETTER YERU -0041 0325; 0041 # Ḁ → A LATIN CAPITAL LETTER A, COMBINING RING BELOW → LATIN CAPITAL LETTER A -0061 0325; 0061 # ḁ → a LATIN SMALL LETTER A, COMBINING RING BELOW → LATIN SMALL LETTER A -0042 0307; 0042 # Ḃ → B LATIN CAPITAL LETTER B, COMBINING DOT ABOVE → LATIN CAPITAL LETTER B -0062 0307; 0062 # ḃ → b LATIN SMALL LETTER B, COMBINING DOT ABOVE → LATIN SMALL LETTER B -0042 0323; 0042 # Ḅ → B LATIN CAPITAL LETTER B, COMBINING DOT BELOW → LATIN CAPITAL LETTER B -0062 0323; 0062 # ḅ → b LATIN SMALL LETTER B, COMBINING DOT BELOW → LATIN SMALL LETTER B -0042 0331; 0042 # Ḇ → B LATIN CAPITAL LETTER B, COMBINING MACRON BELOW → LATIN CAPITAL LETTER B -0062 0331; 0062 # ḇ → b LATIN SMALL LETTER B, COMBINING MACRON BELOW → LATIN SMALL LETTER B -0044 0307; 0044 # Ḋ → D LATIN CAPITAL LETTER D, COMBINING DOT ABOVE → LATIN CAPITAL LETTER D -0064 0307; 0064 # ḋ → d LATIN SMALL LETTER D, COMBINING DOT ABOVE → LATIN SMALL LETTER D -0044 0323; 0044 # Ḍ → D LATIN CAPITAL LETTER D, COMBINING DOT BELOW → LATIN CAPITAL LETTER D -0064 0323; 0064 # ḍ → d LATIN SMALL LETTER D, COMBINING DOT BELOW → LATIN SMALL LETTER D -0044 0331; 0044 # Ḏ → D LATIN CAPITAL LETTER D, COMBINING MACRON BELOW → LATIN CAPITAL LETTER D -0064 0331; 0064 # ḏ → d LATIN SMALL LETTER D, COMBINING MACRON BELOW → LATIN SMALL LETTER D -0044 0327; 0044 # Ḑ → D LATIN CAPITAL LETTER D, COMBINING CEDILLA → LATIN CAPITAL LETTER D -0064 0327; 0064 # ḑ → d LATIN SMALL LETTER D, COMBINING CEDILLA → LATIN SMALL LETTER D -0044 032D; 0044 # Ḓ → D LATIN CAPITAL LETTER D, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN CAPITAL LETTER D -0064 032D; 0064 # ḓ → d LATIN SMALL LETTER D, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN SMALL LETTER D -0045 032D; 0045 # Ḙ → E LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN CAPITAL LETTER E -0065 032D; 0065 # ḙ → e LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN SMALL LETTER E -0045 0330; 0045 # Ḛ → E LATIN CAPITAL LETTER E, COMBINING TILDE BELOW → LATIN CAPITAL LETTER E -0065 0330; 0065 # ḛ → e LATIN SMALL LETTER E, COMBINING TILDE BELOW → LATIN SMALL LETTER E -0046 0307; 0046 # Ḟ → F LATIN CAPITAL LETTER F, COMBINING DOT ABOVE → LATIN CAPITAL LETTER F -0066 0307; 0066 # ḟ → f LATIN SMALL LETTER F, COMBINING DOT ABOVE → LATIN SMALL LETTER F -0047 0304; 0047 # Ḡ → G LATIN CAPITAL LETTER G, COMBINING MACRON → LATIN CAPITAL LETTER G -0067 0304; 0067 # ḡ → g LATIN SMALL LETTER G, COMBINING MACRON → LATIN SMALL LETTER G -0048 0307; 0048 # Ḣ → H LATIN CAPITAL LETTER H, COMBINING DOT ABOVE → LATIN CAPITAL LETTER H -0068 0307; 0068 # ḣ → h LATIN SMALL LETTER H, COMBINING DOT ABOVE → LATIN SMALL LETTER H -0048 0323; 0048 # Ḥ → H LATIN CAPITAL LETTER H, COMBINING DOT BELOW → LATIN CAPITAL LETTER H -0068 0323; 0068 # ḥ → h LATIN SMALL LETTER H, COMBINING DOT BELOW → LATIN SMALL LETTER H -0048 0308; 0048 # Ḧ → H LATIN CAPITAL LETTER H, COMBINING DIAERESIS → LATIN CAPITAL LETTER H -0068 0308; 0068 # ḧ → h LATIN SMALL LETTER H, COMBINING DIAERESIS → LATIN SMALL LETTER H -0048 0327; 0048 # Ḩ → H LATIN CAPITAL LETTER H, COMBINING CEDILLA → LATIN CAPITAL LETTER H -0068 0327; 0068 # ḩ → h LATIN SMALL LETTER H, COMBINING CEDILLA → LATIN SMALL LETTER H -0048 032E; 0048 # Ḫ → H LATIN CAPITAL LETTER H, COMBINING BREVE BELOW → LATIN CAPITAL LETTER H -0068 032E; 0068 # ḫ → h LATIN SMALL LETTER H, COMBINING BREVE BELOW → LATIN SMALL LETTER H -0049 0330; 0049 # Ḭ → I LATIN CAPITAL LETTER I, COMBINING TILDE BELOW → LATIN CAPITAL LETTER I -0069 0330; 0069 # ḭ → i LATIN SMALL LETTER I, COMBINING TILDE BELOW → LATIN SMALL LETTER I -004B 0301; 004B # Ḱ → K LATIN CAPITAL LETTER K, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER K -006B 0301; 006B # ḱ → k LATIN SMALL LETTER K, COMBINING ACUTE ACCENT → LATIN SMALL LETTER K -004B 0323; 004B # Ḳ → K LATIN CAPITAL LETTER K, COMBINING DOT BELOW → LATIN CAPITAL LETTER K -006B 0323; 006B # ḳ → k LATIN SMALL LETTER K, COMBINING DOT BELOW → LATIN SMALL LETTER K -004B 0331; 004B # Ḵ → K LATIN CAPITAL LETTER K, COMBINING MACRON BELOW → LATIN CAPITAL LETTER K -006B 0331; 006B # ḵ → k LATIN SMALL LETTER K, COMBINING MACRON BELOW → LATIN SMALL LETTER K -004C 0323; 004C # Ḷ → L LATIN CAPITAL LETTER L, COMBINING DOT BELOW → LATIN CAPITAL LETTER L -006C 0323; 006C # ḷ → l LATIN SMALL LETTER L, COMBINING DOT BELOW → LATIN SMALL LETTER L -004C 0331; 004C # Ḻ → L LATIN CAPITAL LETTER L, COMBINING MACRON BELOW → LATIN CAPITAL LETTER L -006C 0331; 006C # ḻ → l LATIN SMALL LETTER L, COMBINING MACRON BELOW → LATIN SMALL LETTER L -004C 032D; 004C # Ḽ → L LATIN CAPITAL LETTER L, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN CAPITAL LETTER L -006C 032D; 006C # ḽ → l LATIN SMALL LETTER L, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN SMALL LETTER L -004D 0301; 004D # Ḿ → M LATIN CAPITAL LETTER M, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER M -006D 0301; 006D # ḿ → m LATIN SMALL LETTER M, COMBINING ACUTE ACCENT → LATIN SMALL LETTER M -004D 0307; 004D # Ṁ → M LATIN CAPITAL LETTER M, COMBINING DOT ABOVE → LATIN CAPITAL LETTER M -006D 0307; 006D # ṁ → m LATIN SMALL LETTER M, COMBINING DOT ABOVE → LATIN SMALL LETTER M -004D 0323; 004D # Ṃ → M LATIN CAPITAL LETTER M, COMBINING DOT BELOW → LATIN CAPITAL LETTER M -006D 0323; 006D # ṃ → m LATIN SMALL LETTER M, COMBINING DOT BELOW → LATIN SMALL LETTER M -004E 0307; 004E # Ṅ → N LATIN CAPITAL LETTER N, COMBINING DOT ABOVE → LATIN CAPITAL LETTER N -006E 0307; 006E # ṅ → n LATIN SMALL LETTER N, COMBINING DOT ABOVE → LATIN SMALL LETTER N -004E 0323; 004E # Ṇ → N LATIN CAPITAL LETTER N, COMBINING DOT BELOW → LATIN CAPITAL LETTER N -006E 0323; 006E # ṇ → n LATIN SMALL LETTER N, COMBINING DOT BELOW → LATIN SMALL LETTER N -004E 0331; 004E # Ṉ → N LATIN CAPITAL LETTER N, COMBINING MACRON BELOW → LATIN CAPITAL LETTER N -006E 0331; 006E # ṉ → n LATIN SMALL LETTER N, COMBINING MACRON BELOW → LATIN SMALL LETTER N -004E 032D; 004E # Ṋ → N LATIN CAPITAL LETTER N, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN CAPITAL LETTER N -006E 032D; 006E # ṋ → n LATIN SMALL LETTER N, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN SMALL LETTER N -0050 0301; 0050 # Ṕ → P LATIN CAPITAL LETTER P, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER P -0070 0301; 0070 # ṕ → p LATIN SMALL LETTER P, COMBINING ACUTE ACCENT → LATIN SMALL LETTER P -0050 0307; 0050 # Ṗ → P LATIN CAPITAL LETTER P, COMBINING DOT ABOVE → LATIN CAPITAL LETTER P -0070 0307; 0070 # ṗ → p LATIN SMALL LETTER P, COMBINING DOT ABOVE → LATIN SMALL LETTER P -0052 0307; 0052 # Ṙ → R LATIN CAPITAL LETTER R, COMBINING DOT ABOVE → LATIN CAPITAL LETTER R -0072 0307; 0072 # ṙ → r LATIN SMALL LETTER R, COMBINING DOT ABOVE → LATIN SMALL LETTER R -0052 0323; 0052 # Ṛ → R LATIN CAPITAL LETTER R, COMBINING DOT BELOW → LATIN CAPITAL LETTER R -0072 0323; 0072 # ṛ → r LATIN SMALL LETTER R, COMBINING DOT BELOW → LATIN SMALL LETTER R -0052 0331; 0052 # Ṟ → R LATIN CAPITAL LETTER R, COMBINING MACRON BELOW → LATIN CAPITAL LETTER R -0072 0331; 0072 # ṟ → r LATIN SMALL LETTER R, COMBINING MACRON BELOW → LATIN SMALL LETTER R -0053 0307; 0053 # Ṡ → S LATIN CAPITAL LETTER S, COMBINING DOT ABOVE → LATIN CAPITAL LETTER S -0073 0307; 0073 # ṡ → s LATIN SMALL LETTER S, COMBINING DOT ABOVE → LATIN SMALL LETTER S -0053 0323; 0053 # Ṣ → S LATIN CAPITAL LETTER S, COMBINING DOT BELOW → LATIN CAPITAL LETTER S -0073 0323; 0073 # ṣ → s LATIN SMALL LETTER S, COMBINING DOT BELOW → LATIN SMALL LETTER S -0054 0307; 0054 # Ṫ → T LATIN CAPITAL LETTER T, COMBINING DOT ABOVE → LATIN CAPITAL LETTER T -0074 0307; 0074 # ṫ → t LATIN SMALL LETTER T, COMBINING DOT ABOVE → LATIN SMALL LETTER T -0054 0323; 0054 # Ṭ → T LATIN CAPITAL LETTER T, COMBINING DOT BELOW → LATIN CAPITAL LETTER T -0074 0323; 0074 # ṭ → t LATIN SMALL LETTER T, COMBINING DOT BELOW → LATIN SMALL LETTER T -0054 0331; 0054 # Ṯ → T LATIN CAPITAL LETTER T, COMBINING MACRON BELOW → LATIN CAPITAL LETTER T -0074 0331; 0074 # ṯ → t LATIN SMALL LETTER T, COMBINING MACRON BELOW → LATIN SMALL LETTER T -0054 032D; 0054 # Ṱ → T LATIN CAPITAL LETTER T, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN CAPITAL LETTER T -0074 032D; 0074 # ṱ → t LATIN SMALL LETTER T, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN SMALL LETTER T -0055 0324; 0055 # Ṳ → U LATIN CAPITAL LETTER U, COMBINING DIAERESIS BELOW → LATIN CAPITAL LETTER U -0075 0324; 0075 # ṳ → u LATIN SMALL LETTER U, COMBINING DIAERESIS BELOW → LATIN SMALL LETTER U -0055 0330; 0055 # Ṵ → U LATIN CAPITAL LETTER U, COMBINING TILDE BELOW → LATIN CAPITAL LETTER U -0075 0330; 0075 # ṵ → u LATIN SMALL LETTER U, COMBINING TILDE BELOW → LATIN SMALL LETTER U -0055 032D; 0055 # Ṷ → U LATIN CAPITAL LETTER U, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN CAPITAL LETTER U -0075 032D; 0075 # ṷ → u LATIN SMALL LETTER U, COMBINING CIRCUMFLEX ACCENT BELOW → LATIN SMALL LETTER U -0056 0303; 0056 # Ṽ → V LATIN CAPITAL LETTER V, COMBINING TILDE → LATIN CAPITAL LETTER V -0076 0303; 0076 # ṽ → v LATIN SMALL LETTER V, COMBINING TILDE → LATIN SMALL LETTER V -0056 0323; 0056 # Ṿ → V LATIN CAPITAL LETTER V, COMBINING DOT BELOW → LATIN CAPITAL LETTER V -0076 0323; 0076 # ṿ → v LATIN SMALL LETTER V, COMBINING DOT BELOW → LATIN SMALL LETTER V -0057 0300; 0057 # Ẁ → W LATIN CAPITAL LETTER W, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER W -0077 0300; 0077 # ẁ → w LATIN SMALL LETTER W, COMBINING GRAVE ACCENT → LATIN SMALL LETTER W -0057 0301; 0057 # Ẃ → W LATIN CAPITAL LETTER W, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER W -0077 0301; 0077 # ẃ → w LATIN SMALL LETTER W, COMBINING ACUTE ACCENT → LATIN SMALL LETTER W -0057 0308; 0057 # Ẅ → W LATIN CAPITAL LETTER W, COMBINING DIAERESIS → LATIN CAPITAL LETTER W -0077 0308; 0077 # ẅ → w LATIN SMALL LETTER W, COMBINING DIAERESIS → LATIN SMALL LETTER W -0057 0307; 0057 # Ẇ → W LATIN CAPITAL LETTER W, COMBINING DOT ABOVE → LATIN CAPITAL LETTER W -0077 0307; 0077 # ẇ → w LATIN SMALL LETTER W, COMBINING DOT ABOVE → LATIN SMALL LETTER W -0057 0323; 0057 # Ẉ → W LATIN CAPITAL LETTER W, COMBINING DOT BELOW → LATIN CAPITAL LETTER W -0077 0323; 0077 # ẉ → w LATIN SMALL LETTER W, COMBINING DOT BELOW → LATIN SMALL LETTER W -0058 0307; 0058 # Ẋ → X LATIN CAPITAL LETTER X, COMBINING DOT ABOVE → LATIN CAPITAL LETTER X -0078 0307; 0078 # ẋ → x LATIN SMALL LETTER X, COMBINING DOT ABOVE → LATIN SMALL LETTER X -0058 0308; 0058 # Ẍ → X LATIN CAPITAL LETTER X, COMBINING DIAERESIS → LATIN CAPITAL LETTER X -0078 0308; 0078 # ẍ → x LATIN SMALL LETTER X, COMBINING DIAERESIS → LATIN SMALL LETTER X -0059 0307; 0059 # Ẏ → Y LATIN CAPITAL LETTER Y, COMBINING DOT ABOVE → LATIN CAPITAL LETTER Y -0079 0307; 0079 # ẏ → y LATIN SMALL LETTER Y, COMBINING DOT ABOVE → LATIN SMALL LETTER Y -005A 0302; 005A # Ẑ → Z LATIN CAPITAL LETTER Z, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER Z -007A 0302; 007A # ẑ → z LATIN SMALL LETTER Z, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER Z -005A 0323; 005A # Ẓ → Z LATIN CAPITAL LETTER Z, COMBINING DOT BELOW → LATIN CAPITAL LETTER Z -007A 0323; 007A # ẓ → z LATIN SMALL LETTER Z, COMBINING DOT BELOW → LATIN SMALL LETTER Z -005A 0331; 005A # Ẕ → Z LATIN CAPITAL LETTER Z, COMBINING MACRON BELOW → LATIN CAPITAL LETTER Z -007A 0331; 007A # ẕ → z LATIN SMALL LETTER Z, COMBINING MACRON BELOW → LATIN SMALL LETTER Z -0068 0331; 0068 # ẖ → h LATIN SMALL LETTER H, COMBINING MACRON BELOW → LATIN SMALL LETTER H -0074 0308; 0074 # ẗ → t LATIN SMALL LETTER T, COMBINING DIAERESIS → LATIN SMALL LETTER T -0077 030A; 0077 # ẘ → w LATIN SMALL LETTER W, COMBINING RING ABOVE → LATIN SMALL LETTER W -0079 030A; 0079 # ẙ → y LATIN SMALL LETTER Y, COMBINING RING ABOVE → LATIN SMALL LETTER Y -017F 0307; 017F # ẛ → ſ LATIN SMALL LETTER LONG S, COMBINING DOT ABOVE → LATIN SMALL LETTER LONG S -0041 0323; 0041 # Ạ → A LATIN CAPITAL LETTER A, COMBINING DOT BELOW → LATIN CAPITAL LETTER A -0061 0323; 0061 # ạ → a LATIN SMALL LETTER A, COMBINING DOT BELOW → LATIN SMALL LETTER A -0041 0309; 0041 # Ả → A LATIN CAPITAL LETTER A, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER A -0061 0309; 0061 # ả → a LATIN SMALL LETTER A, COMBINING HOOK ABOVE → LATIN SMALL LETTER A -0045 0323; 0045 # Ẹ → E LATIN CAPITAL LETTER E, COMBINING DOT BELOW → LATIN CAPITAL LETTER E -0065 0323; 0065 # ẹ → e LATIN SMALL LETTER E, COMBINING DOT BELOW → LATIN SMALL LETTER E -0045 0309; 0045 # Ẻ → E LATIN CAPITAL LETTER E, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER E -0065 0309; 0065 # ẻ → e LATIN SMALL LETTER E, COMBINING HOOK ABOVE → LATIN SMALL LETTER E -0045 0303; 0045 # Ẽ → E LATIN CAPITAL LETTER E, COMBINING TILDE → LATIN CAPITAL LETTER E -0065 0303; 0065 # ẽ → e LATIN SMALL LETTER E, COMBINING TILDE → LATIN SMALL LETTER E -0049 0309; 0049 # Ỉ → I LATIN CAPITAL LETTER I, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER I -0069 0309; 0069 # ỉ → i LATIN SMALL LETTER I, COMBINING HOOK ABOVE → LATIN SMALL LETTER I -0049 0323; 0049 # Ị → I LATIN CAPITAL LETTER I, COMBINING DOT BELOW → LATIN CAPITAL LETTER I -0069 0323; 0069 # ị → i LATIN SMALL LETTER I, COMBINING DOT BELOW → LATIN SMALL LETTER I -004F 0323; 004F # Ọ → O LATIN CAPITAL LETTER O, COMBINING DOT BELOW → LATIN CAPITAL LETTER O -006F 0323; 006F # ọ → o LATIN SMALL LETTER O, COMBINING DOT BELOW → LATIN SMALL LETTER O -004F 0309; 004F # Ỏ → O LATIN CAPITAL LETTER O, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER O -006F 0309; 006F # ỏ → o LATIN SMALL LETTER O, COMBINING HOOK ABOVE → LATIN SMALL LETTER O -0055 0323; 0055 # Ụ → U LATIN CAPITAL LETTER U, COMBINING DOT BELOW → LATIN CAPITAL LETTER U -0075 0323; 0075 # ụ → u LATIN SMALL LETTER U, COMBINING DOT BELOW → LATIN SMALL LETTER U -0055 0309; 0055 # Ủ → U LATIN CAPITAL LETTER U, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER U -0075 0309; 0075 # ủ → u LATIN SMALL LETTER U, COMBINING HOOK ABOVE → LATIN SMALL LETTER U -0059 0300; 0059 # Ỳ → Y LATIN CAPITAL LETTER Y, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER Y -0079 0300; 0079 # ỳ → y LATIN SMALL LETTER Y, COMBINING GRAVE ACCENT → LATIN SMALL LETTER Y -0059 0323; 0059 # Ỵ → Y LATIN CAPITAL LETTER Y, COMBINING DOT BELOW → LATIN CAPITAL LETTER Y -0079 0323; 0079 # ỵ → y LATIN SMALL LETTER Y, COMBINING DOT BELOW → LATIN SMALL LETTER Y -0059 0309; 0059 # Ỷ → Y LATIN CAPITAL LETTER Y, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER Y -0079 0309; 0079 # ỷ → y LATIN SMALL LETTER Y, COMBINING HOOK ABOVE → LATIN SMALL LETTER Y -0059 0303; 0059 # Ỹ → Y LATIN CAPITAL LETTER Y, COMBINING TILDE → LATIN CAPITAL LETTER Y -0079 0303; 0079 # ỹ → y LATIN SMALL LETTER Y, COMBINING TILDE → LATIN SMALL LETTER Y -03B1 0313; 03B1 # ἀ → α GREEK SMALL LETTER ALPHA, COMBINING COMMA ABOVE → GREEK SMALL LETTER ALPHA -03B1 0314; 03B1 # ἁ → α GREEK SMALL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER ALPHA -0391 0313; 0391 # Ἀ → Α GREEK CAPITAL LETTER ALPHA, COMBINING COMMA ABOVE → GREEK CAPITAL LETTER ALPHA -0391 0314; 0391 # Ἁ → Α GREEK CAPITAL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER ALPHA -03B5 0313; 03B5 # ἐ → ε GREEK SMALL LETTER EPSILON, COMBINING COMMA ABOVE → GREEK SMALL LETTER EPSILON -03B5 0314; 03B5 # ἑ → ε GREEK SMALL LETTER EPSILON, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER EPSILON -0395 0313; 0395 # Ἐ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING COMMA ABOVE → GREEK CAPITAL LETTER EPSILON -0395 0314; 0395 # Ἑ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER EPSILON -03B7 0313; 03B7 # ἠ → η GREEK SMALL LETTER ETA, COMBINING COMMA ABOVE → GREEK SMALL LETTER ETA -03B7 0314; 03B7 # ἡ → η GREEK SMALL LETTER ETA, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER ETA -0397 0313; 0397 # Ἠ → Η GREEK CAPITAL LETTER ETA, COMBINING COMMA ABOVE → GREEK CAPITAL LETTER ETA -0397 0314; 0397 # Ἡ → Η GREEK CAPITAL LETTER ETA, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER ETA -03B9 0313; 03B9 # ἰ → ι GREEK SMALL LETTER IOTA, COMBINING COMMA ABOVE → GREEK SMALL LETTER IOTA -03B9 0314; 03B9 # ἱ → ι GREEK SMALL LETTER IOTA, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER IOTA -0399 0313; 0399 # Ἰ → Ι GREEK CAPITAL LETTER IOTA, COMBINING COMMA ABOVE → GREEK CAPITAL LETTER IOTA -0399 0314; 0399 # Ἱ → Ι GREEK CAPITAL LETTER IOTA, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER IOTA -03BF 0313; 03BF # ὀ → ο GREEK SMALL LETTER OMICRON, COMBINING COMMA ABOVE → GREEK SMALL LETTER OMICRON -03BF 0314; 03BF # ὁ → ο GREEK SMALL LETTER OMICRON, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER OMICRON -039F 0313; 039F # Ὀ → Ο GREEK CAPITAL LETTER OMICRON, COMBINING COMMA ABOVE → GREEK CAPITAL LETTER OMICRON -039F 0314; 039F # Ὁ → Ο GREEK CAPITAL LETTER OMICRON, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER OMICRON -03C5 0313; 03C5 # ὐ → υ GREEK SMALL LETTER UPSILON, COMBINING COMMA ABOVE → GREEK SMALL LETTER UPSILON -03C5 0314; 03C5 # ὑ → υ GREEK SMALL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER UPSILON -03A5 0314; 03A5 # Ὑ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER UPSILON -03C9 0313; 03C9 # ὠ → ω GREEK SMALL LETTER OMEGA, COMBINING COMMA ABOVE → GREEK SMALL LETTER OMEGA -03C9 0314; 03C9 # ὡ → ω GREEK SMALL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER OMEGA -03A9 0313; 03A9 # Ὠ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING COMMA ABOVE → GREEK CAPITAL LETTER OMEGA -03A9 0314; 03A9 # Ὡ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER OMEGA -03B1 0300; 03B1 # ὰ → α GREEK SMALL LETTER ALPHA, COMBINING GRAVE ACCENT → GREEK SMALL LETTER ALPHA -03B5 0300; 03B5 # ὲ → ε GREEK SMALL LETTER EPSILON, COMBINING GRAVE ACCENT → GREEK SMALL LETTER EPSILON -03B7 0300; 03B7 # ὴ → η GREEK SMALL LETTER ETA, COMBINING GRAVE ACCENT → GREEK SMALL LETTER ETA -03B9 0300; 03B9 # ὶ → ι GREEK SMALL LETTER IOTA, COMBINING GRAVE ACCENT → GREEK SMALL LETTER IOTA -03BF 0300; 03BF # ὸ → ο GREEK SMALL LETTER OMICRON, COMBINING GRAVE ACCENT → GREEK SMALL LETTER OMICRON -03C5 0300; 03C5 # ὺ → υ GREEK SMALL LETTER UPSILON, COMBINING GRAVE ACCENT → GREEK SMALL LETTER UPSILON -03C9 0300; 03C9 # ὼ → ω GREEK SMALL LETTER OMEGA, COMBINING GRAVE ACCENT → GREEK SMALL LETTER OMEGA -03B1 0306; 03B1 # ᾰ → α GREEK SMALL LETTER ALPHA, COMBINING BREVE → GREEK SMALL LETTER ALPHA -03B1 0304; 03B1 # ᾱ → α GREEK SMALL LETTER ALPHA, COMBINING MACRON → GREEK SMALL LETTER ALPHA -03B1 0342; 03B1 # ᾶ → α GREEK SMALL LETTER ALPHA, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER ALPHA -0391 0306; 0391 # Ᾰ → Α GREEK CAPITAL LETTER ALPHA, COMBINING BREVE → GREEK CAPITAL LETTER ALPHA -0391 0304; 0391 # Ᾱ → Α GREEK CAPITAL LETTER ALPHA, COMBINING MACRON → GREEK CAPITAL LETTER ALPHA -0391 0300; 0391 # Ὰ → Α GREEK CAPITAL LETTER ALPHA, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER ALPHA -03B7 0342; 03B7 # ῆ → η GREEK SMALL LETTER ETA, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER ETA -0395 0300; 0395 # Ὲ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER EPSILON -0397 0300; 0397 # Ὴ → Η GREEK CAPITAL LETTER ETA, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER ETA -03B9 0306; 03B9 # ῐ → ι GREEK SMALL LETTER IOTA, COMBINING BREVE → GREEK SMALL LETTER IOTA -03B9 0304; 03B9 # ῑ → ι GREEK SMALL LETTER IOTA, COMBINING MACRON → GREEK SMALL LETTER IOTA -03B9 0342; 03B9 # ῖ → ι GREEK SMALL LETTER IOTA, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER IOTA -0399 0306; 0399 # Ῐ → Ι GREEK CAPITAL LETTER IOTA, COMBINING BREVE → GREEK CAPITAL LETTER IOTA -0399 0304; 0399 # Ῑ → Ι GREEK CAPITAL LETTER IOTA, COMBINING MACRON → GREEK CAPITAL LETTER IOTA -0399 0300; 0399 # Ὶ → Ι GREEK CAPITAL LETTER IOTA, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER IOTA -03C5 0306; 03C5 # ῠ → υ GREEK SMALL LETTER UPSILON, COMBINING BREVE → GREEK SMALL LETTER UPSILON -03C5 0304; 03C5 # ῡ → υ GREEK SMALL LETTER UPSILON, COMBINING MACRON → GREEK SMALL LETTER UPSILON -03C1 0313; 03C1 # ῤ → ρ GREEK SMALL LETTER RHO, COMBINING COMMA ABOVE → GREEK SMALL LETTER RHO -03C1 0314; 03C1 # ῥ → ρ GREEK SMALL LETTER RHO, COMBINING REVERSED COMMA ABOVE → GREEK SMALL LETTER RHO -03C5 0342; 03C5 # ῦ → υ GREEK SMALL LETTER UPSILON, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER UPSILON -03A5 0306; 03A5 # Ῠ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING BREVE → GREEK CAPITAL LETTER UPSILON -03A5 0304; 03A5 # Ῡ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING MACRON → GREEK CAPITAL LETTER UPSILON -03A5 0300; 03A5 # Ὺ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER UPSILON -03A1 0314; 03A1 # Ῥ → Ρ GREEK CAPITAL LETTER RHO, COMBINING REVERSED COMMA ABOVE → GREEK CAPITAL LETTER RHO -03C9 0342; 03C9 # ῶ → ω GREEK SMALL LETTER OMEGA, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER OMEGA -039F 0300; 039F # Ὸ → Ο GREEK CAPITAL LETTER OMICRON, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER OMICRON -03A9 0300; 03A9 # Ὼ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER OMEGA -05D9 05B4; 05D9 # יִ → י HEBREW LETTER YOD, HEBREW POINT HIRIQ → HEBREW LETTER YOD -05E9 05C1; 05E9 # שׁ → ש HEBREW LETTER SHIN, HEBREW POINT SHIN DOT → HEBREW LETTER SHIN -05E9 05C2; 05E9 # שׂ → ש HEBREW LETTER SHIN, HEBREW POINT SIN DOT → HEBREW LETTER SHIN -05D0 05B7; 05D0 # אַ → א HEBREW LETTER ALEF, HEBREW POINT PATAH → HEBREW LETTER ALEF -05D0 05B8; 05D0 # אָ → א HEBREW LETTER ALEF, HEBREW POINT QAMATS → HEBREW LETTER ALEF -05D0 05BC; 05D0 # אּ → א HEBREW LETTER ALEF, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER ALEF -05D1 05BC; 05D1 # בּ → ב HEBREW LETTER BET, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER BET -05D2 05BC; 05D2 # גּ → ג HEBREW LETTER GIMEL, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER GIMEL -05D3 05BC; 05D3 # דּ → ד HEBREW LETTER DALET, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER DALET -05D4 05BC; 05D4 # הּ → ה HEBREW LETTER HE, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER HE -05D5 05BC; 05D5 # וּ → ו HEBREW LETTER VAV, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER VAV -05D6 05BC; 05D6 # זּ → ז HEBREW LETTER ZAYIN, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER ZAYIN -05D8 05BC; 05D8 # טּ → ט HEBREW LETTER TET, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER TET -05D9 05BC; 05D9 # יּ → י HEBREW LETTER YOD, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER YOD -05DA 05BC; 05DA # ךּ → ך HEBREW LETTER FINAL KAF, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER FINAL KAF -05DB 05BC; 05DB # כּ → כ HEBREW LETTER KAF, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER KAF -05DC 05BC; 05DC # לּ → ל HEBREW LETTER LAMED, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER LAMED -05DE 05BC; 05DE # מּ → מ HEBREW LETTER MEM, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER MEM -05E0 05BC; 05E0 # נּ → נ HEBREW LETTER NUN, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER NUN -05E1 05BC; 05E1 # סּ → ס HEBREW LETTER SAMEKH, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER SAMEKH -05E3 05BC; 05E3 # ףּ → ף HEBREW LETTER FINAL PE, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER FINAL PE -05E4 05BC; 05E4 # פּ → פ HEBREW LETTER PE, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER PE -05E6 05BC; 05E6 # צּ → צ HEBREW LETTER TSADI, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER TSADI -05E7 05BC; 05E7 # קּ → ק HEBREW LETTER QOF, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER QOF -05E8 05BC; 05E8 # רּ → ר HEBREW LETTER RESH, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER RESH -05E9 05BC; 05E9 # שּ → ש HEBREW LETTER SHIN, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER SHIN -05EA 05BC; 05EA # תּ → ת HEBREW LETTER TAV, HEBREW POINT DAGESH OR MAPIQ → HEBREW LETTER TAV -05D5 05B9; 05D5 # וֹ → ו HEBREW LETTER VAV, HEBREW POINT HOLAM → HEBREW LETTER VAV -05D1 05BF; 05D1 # בֿ → ב HEBREW LETTER BET, HEBREW POINT RAFE → HEBREW LETTER BET -05DB 05BF; 05DB # כֿ → כ HEBREW LETTER KAF, HEBREW POINT RAFE → HEBREW LETTER KAF -05E4 05BF; 05E4 # פֿ → פ HEBREW LETTER PE, HEBREW POINT RAFE → HEBREW LETTER PE -0041 0302 0300; 0041 # Ầ → A LATIN CAPITAL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER A -0041 0302 0301; 0041 # Ấ → A LATIN CAPITAL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER A -0041 0302 0303; 0041 # Ẫ → A LATIN CAPITAL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING TILDE → LATIN CAPITAL LETTER A -0041 0302 0309; 0041 # Ẩ → A LATIN CAPITAL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER A -0041 0306 0300; 0041 # Ằ → A LATIN CAPITAL LETTER A, COMBINING BREVE, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER A -0041 0306 0301; 0041 # Ắ → A LATIN CAPITAL LETTER A, COMBINING BREVE, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER A -0041 0306 0303; 0041 # Ẵ → A LATIN CAPITAL LETTER A, COMBINING BREVE, COMBINING TILDE → LATIN CAPITAL LETTER A -0041 0306 0309; 0041 # Ẳ → A LATIN CAPITAL LETTER A, COMBINING BREVE, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER A -0041 0307 0304; 0041 # Ǡ → A LATIN CAPITAL LETTER A, COMBINING DOT ABOVE, COMBINING MACRON → LATIN CAPITAL LETTER A -0041 0308 0304; 0041 # Ǟ → A LATIN CAPITAL LETTER A, COMBINING DIAERESIS, COMBINING MACRON → LATIN CAPITAL LETTER A -0041 030A 0301; 0041 # Ǻ → A LATIN CAPITAL LETTER A, COMBINING RING ABOVE, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER A -0041 0323 0302; 0041 # Ậ → A LATIN CAPITAL LETTER A, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER A -0041 0323 0306; 0041 # Ặ → A LATIN CAPITAL LETTER A, COMBINING DOT BELOW, COMBINING BREVE → LATIN CAPITAL LETTER A -0043 0327 0301; 0043 # Ḉ → C LATIN CAPITAL LETTER C, COMBINING CEDILLA, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER C -0045 0302 0300; 0045 # Ề → E LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER E -0045 0302 0301; 0045 # Ế → E LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER E -0045 0302 0303; 0045 # Ễ → E LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING TILDE → LATIN CAPITAL LETTER E -0045 0302 0309; 0045 # Ể → E LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER E -0045 0304 0300; 0045 # Ḕ → E LATIN CAPITAL LETTER E, COMBINING MACRON, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER E -0045 0304 0301; 0045 # Ḗ → E LATIN CAPITAL LETTER E, COMBINING MACRON, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER E -0045 0323 0302; 0045 # Ệ → E LATIN CAPITAL LETTER E, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER E -0045 0327 0306; 0045 # Ḝ → E LATIN CAPITAL LETTER E, COMBINING CEDILLA, COMBINING BREVE → LATIN CAPITAL LETTER E -0049 0308 0301; 0049 # Ḯ → I LATIN CAPITAL LETTER I, COMBINING DIAERESIS, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER I -004C 0323 0304; 004C # Ḹ → L LATIN CAPITAL LETTER L, COMBINING DOT BELOW, COMBINING MACRON → LATIN CAPITAL LETTER L -004F 0302 0300; 004F # Ồ → O LATIN CAPITAL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER O -004F 0302 0301; 004F # Ố → O LATIN CAPITAL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER O -004F 0302 0303; 004F # Ỗ → O LATIN CAPITAL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING TILDE → LATIN CAPITAL LETTER O -004F 0302 0309; 004F # Ổ → O LATIN CAPITAL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER O -004F 0303 0301; 004F # Ṍ → O LATIN CAPITAL LETTER O, COMBINING TILDE, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER O -004F 0303 0304; 004F # Ȭ → O LATIN CAPITAL LETTER O, COMBINING TILDE, COMBINING MACRON → LATIN CAPITAL LETTER O -004F 0303 0308; 004F # Ṏ → O LATIN CAPITAL LETTER O, COMBINING TILDE, COMBINING DIAERESIS → LATIN CAPITAL LETTER O -004F 0304 0300; 004F # Ṑ → O LATIN CAPITAL LETTER O, COMBINING MACRON, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER O -004F 0304 0301; 004F # Ṓ → O LATIN CAPITAL LETTER O, COMBINING MACRON, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER O -004F 0307 0304; 004F # Ȱ → O LATIN CAPITAL LETTER O, COMBINING DOT ABOVE, COMBINING MACRON → LATIN CAPITAL LETTER O -004F 0308 0304; 004F # Ȫ → O LATIN CAPITAL LETTER O, COMBINING DIAERESIS, COMBINING MACRON → LATIN CAPITAL LETTER O -004F 031B 0300; 004F # Ờ → O LATIN CAPITAL LETTER O, COMBINING HORN, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER O -004F 031B 0301; 004F # Ớ → O LATIN CAPITAL LETTER O, COMBINING HORN, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER O -004F 031B 0303; 004F # Ỡ → O LATIN CAPITAL LETTER O, COMBINING HORN, COMBINING TILDE → LATIN CAPITAL LETTER O -004F 031B 0309; 004F # Ở → O LATIN CAPITAL LETTER O, COMBINING HORN, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER O -004F 031B 0323; 004F # Ợ → O LATIN CAPITAL LETTER O, COMBINING HORN, COMBINING DOT BELOW → LATIN CAPITAL LETTER O -004F 0323 0302; 004F # Ộ → O LATIN CAPITAL LETTER O, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT → LATIN CAPITAL LETTER O -004F 0328 0304; 004F # Ǭ → O LATIN CAPITAL LETTER O, COMBINING OGONEK, COMBINING MACRON → LATIN CAPITAL LETTER O -0052 0323 0304; 0052 # Ṝ → R LATIN CAPITAL LETTER R, COMBINING DOT BELOW, COMBINING MACRON → LATIN CAPITAL LETTER R -0053 0301 0307; 0053 # Ṥ → S LATIN CAPITAL LETTER S, COMBINING ACUTE ACCENT, COMBINING DOT ABOVE → LATIN CAPITAL LETTER S -0053 030C 0307; 0053 # Ṧ → S LATIN CAPITAL LETTER S, COMBINING CARON, COMBINING DOT ABOVE → LATIN CAPITAL LETTER S -0053 0323 0307; 0053 # Ṩ → S LATIN CAPITAL LETTER S, COMBINING DOT BELOW, COMBINING DOT ABOVE → LATIN CAPITAL LETTER S -0055 0303 0301; 0055 # Ṹ → U LATIN CAPITAL LETTER U, COMBINING TILDE, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER U -0055 0304 0308; 0055 # Ṻ → U LATIN CAPITAL LETTER U, COMBINING MACRON, COMBINING DIAERESIS → LATIN CAPITAL LETTER U -0055 0308 0300; 0055 # Ǜ → U LATIN CAPITAL LETTER U, COMBINING DIAERESIS, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER U -0055 0308 0301; 0055 # Ǘ → U LATIN CAPITAL LETTER U, COMBINING DIAERESIS, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER U -0055 0308 0304; 0055 # Ǖ → U LATIN CAPITAL LETTER U, COMBINING DIAERESIS, COMBINING MACRON → LATIN CAPITAL LETTER U -0055 0308 030C; 0055 # Ǚ → U LATIN CAPITAL LETTER U, COMBINING DIAERESIS, COMBINING CARON → LATIN CAPITAL LETTER U -0055 031B 0300; 0055 # Ừ → U LATIN CAPITAL LETTER U, COMBINING HORN, COMBINING GRAVE ACCENT → LATIN CAPITAL LETTER U -0055 031B 0301; 0055 # Ứ → U LATIN CAPITAL LETTER U, COMBINING HORN, COMBINING ACUTE ACCENT → LATIN CAPITAL LETTER U -0055 031B 0303; 0055 # Ữ → U LATIN CAPITAL LETTER U, COMBINING HORN, COMBINING TILDE → LATIN CAPITAL LETTER U -0055 031B 0309; 0055 # Ử → U LATIN CAPITAL LETTER U, COMBINING HORN, COMBINING HOOK ABOVE → LATIN CAPITAL LETTER U -0055 031B 0323; 0055 # Ự → U LATIN CAPITAL LETTER U, COMBINING HORN, COMBINING DOT BELOW → LATIN CAPITAL LETTER U -0061 0302 0300; 0061 # ầ → a LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING GRAVE ACCENT → LATIN SMALL LETTER A -0061 0302 0301; 0061 # ấ → a LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING ACUTE ACCENT → LATIN SMALL LETTER A -0061 0302 0303; 0061 # ẫ → a LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING TILDE → LATIN SMALL LETTER A -0061 0302 0309; 0061 # ẩ → a LATIN SMALL LETTER A, COMBINING CIRCUMFLEX ACCENT, COMBINING HOOK ABOVE → LATIN SMALL LETTER A -0061 0306 0300; 0061 # ằ → a LATIN SMALL LETTER A, COMBINING BREVE, COMBINING GRAVE ACCENT → LATIN SMALL LETTER A -0061 0306 0301; 0061 # ắ → a LATIN SMALL LETTER A, COMBINING BREVE, COMBINING ACUTE ACCENT → LATIN SMALL LETTER A -0061 0306 0303; 0061 # ẵ → a LATIN SMALL LETTER A, COMBINING BREVE, COMBINING TILDE → LATIN SMALL LETTER A -0061 0306 0309; 0061 # ẳ → a LATIN SMALL LETTER A, COMBINING BREVE, COMBINING HOOK ABOVE → LATIN SMALL LETTER A -0061 0307 0304; 0061 # ǡ → a LATIN SMALL LETTER A, COMBINING DOT ABOVE, COMBINING MACRON → LATIN SMALL LETTER A -0061 0308 0304; 0061 # ǟ → a LATIN SMALL LETTER A, COMBINING DIAERESIS, COMBINING MACRON → LATIN SMALL LETTER A -0061 030A 0301; 0061 # ǻ → a LATIN SMALL LETTER A, COMBINING RING ABOVE, COMBINING ACUTE ACCENT → LATIN SMALL LETTER A -0061 0323 0302; 0061 # ậ → a LATIN SMALL LETTER A, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER A -0061 0323 0306; 0061 # ặ → a LATIN SMALL LETTER A, COMBINING DOT BELOW, COMBINING BREVE → LATIN SMALL LETTER A -0063 0327 0301; 0063 # ḉ → c LATIN SMALL LETTER C, COMBINING CEDILLA, COMBINING ACUTE ACCENT → LATIN SMALL LETTER C -0065 0302 0300; 0065 # ề → e LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING GRAVE ACCENT → LATIN SMALL LETTER E -0065 0302 0301; 0065 # ế → e LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING ACUTE ACCENT → LATIN SMALL LETTER E -0065 0302 0303; 0065 # ễ → e LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING TILDE → LATIN SMALL LETTER E -0065 0302 0309; 0065 # ể → e LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING HOOK ABOVE → LATIN SMALL LETTER E -0065 0304 0300; 0065 # ḕ → e LATIN SMALL LETTER E, COMBINING MACRON, COMBINING GRAVE ACCENT → LATIN SMALL LETTER E -0065 0304 0301; 0065 # ḗ → e LATIN SMALL LETTER E, COMBINING MACRON, COMBINING ACUTE ACCENT → LATIN SMALL LETTER E -0065 0323 0302; 0065 # ệ → e LATIN SMALL LETTER E, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER E -0065 0327 0306; 0065 # ḝ → e LATIN SMALL LETTER E, COMBINING CEDILLA, COMBINING BREVE → LATIN SMALL LETTER E -0069 0308 0301; 0069 # ḯ → i LATIN SMALL LETTER I, COMBINING DIAERESIS, COMBINING ACUTE ACCENT → LATIN SMALL LETTER I -006C 0323 0304; 006C # ḹ → l LATIN SMALL LETTER L, COMBINING DOT BELOW, COMBINING MACRON → LATIN SMALL LETTER L -006F 0302 0300; 006F # ồ → o LATIN SMALL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING GRAVE ACCENT → LATIN SMALL LETTER O -006F 0302 0301; 006F # ố → o LATIN SMALL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING ACUTE ACCENT → LATIN SMALL LETTER O -006F 0302 0303; 006F # ỗ → o LATIN SMALL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING TILDE → LATIN SMALL LETTER O -006F 0302 0309; 006F # ổ → o LATIN SMALL LETTER O, COMBINING CIRCUMFLEX ACCENT, COMBINING HOOK ABOVE → LATIN SMALL LETTER O -006F 0303 0301; 006F # ṍ → o LATIN SMALL LETTER O, COMBINING TILDE, COMBINING ACUTE ACCENT → LATIN SMALL LETTER O -006F 0303 0304; 006F # ȭ → o LATIN SMALL LETTER O, COMBINING TILDE, COMBINING MACRON → LATIN SMALL LETTER O -006F 0303 0308; 006F # ṏ → o LATIN SMALL LETTER O, COMBINING TILDE, COMBINING DIAERESIS → LATIN SMALL LETTER O -006F 0304 0300; 006F # ṑ → o LATIN SMALL LETTER O, COMBINING MACRON, COMBINING GRAVE ACCENT → LATIN SMALL LETTER O -006F 0304 0301; 006F # ṓ → o LATIN SMALL LETTER O, COMBINING MACRON, COMBINING ACUTE ACCENT → LATIN SMALL LETTER O -006F 0307 0304; 006F # ȱ → o LATIN SMALL LETTER O, COMBINING DOT ABOVE, COMBINING MACRON → LATIN SMALL LETTER O -006F 0308 0304; 006F # ȫ → o LATIN SMALL LETTER O, COMBINING DIAERESIS, COMBINING MACRON → LATIN SMALL LETTER O -006F 031B 0300; 006F # ờ → o LATIN SMALL LETTER O, COMBINING HORN, COMBINING GRAVE ACCENT → LATIN SMALL LETTER O -006F 031B 0301; 006F # ớ → o LATIN SMALL LETTER O, COMBINING HORN, COMBINING ACUTE ACCENT → LATIN SMALL LETTER O -006F 031B 0303; 006F # ỡ → o LATIN SMALL LETTER O, COMBINING HORN, COMBINING TILDE → LATIN SMALL LETTER O -006F 031B 0309; 006F # ở → o LATIN SMALL LETTER O, COMBINING HORN, COMBINING HOOK ABOVE → LATIN SMALL LETTER O -006F 031B 0323; 006F # ợ → o LATIN SMALL LETTER O, COMBINING HORN, COMBINING DOT BELOW → LATIN SMALL LETTER O -006F 0323 0302; 006F # ộ → o LATIN SMALL LETTER O, COMBINING DOT BELOW, COMBINING CIRCUMFLEX ACCENT → LATIN SMALL LETTER O -006F 0328 0304; 006F # ǭ → o LATIN SMALL LETTER O, COMBINING OGONEK, COMBINING MACRON → LATIN SMALL LETTER O -0072 0323 0304; 0072 # ṝ → r LATIN SMALL LETTER R, COMBINING DOT BELOW, COMBINING MACRON → LATIN SMALL LETTER R -0073 0301 0307; 0073 # ṥ → s LATIN SMALL LETTER S, COMBINING ACUTE ACCENT, COMBINING DOT ABOVE → LATIN SMALL LETTER S -0073 030C 0307; 0073 # ṧ → s LATIN SMALL LETTER S, COMBINING CARON, COMBINING DOT ABOVE → LATIN SMALL LETTER S -0073 0323 0307; 0073 # ṩ → s LATIN SMALL LETTER S, COMBINING DOT BELOW, COMBINING DOT ABOVE → LATIN SMALL LETTER S -0075 0303 0301; 0075 # ṹ → u LATIN SMALL LETTER U, COMBINING TILDE, COMBINING ACUTE ACCENT → LATIN SMALL LETTER U -0075 0304 0308; 0075 # ṻ → u LATIN SMALL LETTER U, COMBINING MACRON, COMBINING DIAERESIS → LATIN SMALL LETTER U -0075 0308 0300; 0075 # ǜ → u LATIN SMALL LETTER U, COMBINING DIAERESIS, COMBINING GRAVE ACCENT → LATIN SMALL LETTER U -0075 0308 0301; 0075 # ǘ → u LATIN SMALL LETTER U, COMBINING DIAERESIS, COMBINING ACUTE ACCENT → LATIN SMALL LETTER U -0075 0308 0304; 0075 # ǖ → u LATIN SMALL LETTER U, COMBINING DIAERESIS, COMBINING MACRON → LATIN SMALL LETTER U -0075 0308 030C; 0075 # ǚ → u LATIN SMALL LETTER U, COMBINING DIAERESIS, COMBINING CARON → LATIN SMALL LETTER U -0075 031B 0300; 0075 # ừ → u LATIN SMALL LETTER U, COMBINING HORN, COMBINING GRAVE ACCENT → LATIN SMALL LETTER U -0075 031B 0301; 0075 # ứ → u LATIN SMALL LETTER U, COMBINING HORN, COMBINING ACUTE ACCENT → LATIN SMALL LETTER U -0075 031B 0303; 0075 # ữ → u LATIN SMALL LETTER U, COMBINING HORN, COMBINING TILDE → LATIN SMALL LETTER U -0075 031B 0309; 0075 # ử → u LATIN SMALL LETTER U, COMBINING HORN, COMBINING HOOK ABOVE → LATIN SMALL LETTER U -0075 031B 0323; 0075 # ự → u LATIN SMALL LETTER U, COMBINING HORN, COMBINING DOT BELOW → LATIN SMALL LETTER U -0391 0313 0300; 0391 # Ἂ → Α GREEK CAPITAL LETTER ALPHA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER ALPHA -0391 0313 0301; 0391 # Ἄ → Α GREEK CAPITAL LETTER ALPHA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER ALPHA -0391 0313 0342; 0391 # Ἆ → Α GREEK CAPITAL LETTER ALPHA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER ALPHA -0391 0314 0300; 0391 # Ἃ → Α GREEK CAPITAL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER ALPHA -0391 0314 0301; 0391 # Ἅ → Α GREEK CAPITAL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER ALPHA -0391 0314 0342; 0391 # Ἇ → Α GREEK CAPITAL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER ALPHA -0395 0313 0300; 0395 # Ἒ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER EPSILON -0395 0313 0301; 0395 # Ἔ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER EPSILON -0395 0314 0300; 0395 # Ἓ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER EPSILON -0395 0314 0301; 0395 # Ἕ → Ε GREEK CAPITAL LETTER EPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER EPSILON -0397 0313 0300; 0397 # Ἢ → Η GREEK CAPITAL LETTER ETA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER ETA -0397 0313 0301; 0397 # Ἤ → Η GREEK CAPITAL LETTER ETA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER ETA -0397 0313 0342; 0397 # Ἦ → Η GREEK CAPITAL LETTER ETA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER ETA -0397 0314 0300; 0397 # Ἣ → Η GREEK CAPITAL LETTER ETA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER ETA -0397 0314 0301; 0397 # Ἥ → Η GREEK CAPITAL LETTER ETA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER ETA -0397 0314 0342; 0397 # Ἧ → Η GREEK CAPITAL LETTER ETA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER ETA -0399 0313 0300; 0399 # Ἲ → Ι GREEK CAPITAL LETTER IOTA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER IOTA -0399 0313 0301; 0399 # Ἴ → Ι GREEK CAPITAL LETTER IOTA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER IOTA -0399 0313 0342; 0399 # Ἶ → Ι GREEK CAPITAL LETTER IOTA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER IOTA -0399 0314 0300; 0399 # Ἳ → Ι GREEK CAPITAL LETTER IOTA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER IOTA -0399 0314 0301; 0399 # Ἵ → Ι GREEK CAPITAL LETTER IOTA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER IOTA -0399 0314 0342; 0399 # Ἷ → Ι GREEK CAPITAL LETTER IOTA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER IOTA -039F 0313 0300; 039F # Ὂ → Ο GREEK CAPITAL LETTER OMICRON, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER OMICRON -039F 0313 0301; 039F # Ὄ → Ο GREEK CAPITAL LETTER OMICRON, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER OMICRON -039F 0314 0300; 039F # Ὃ → Ο GREEK CAPITAL LETTER OMICRON, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER OMICRON -039F 0314 0301; 039F # Ὅ → Ο GREEK CAPITAL LETTER OMICRON, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER OMICRON -03A5 0314 0300; 03A5 # Ὓ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER UPSILON -03A5 0314 0301; 03A5 # Ὕ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER UPSILON -03A5 0314 0342; 03A5 # Ὗ → Υ GREEK CAPITAL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER UPSILON -03A9 0313 0300; 03A9 # Ὢ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER OMEGA -03A9 0313 0301; 03A9 # Ὤ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER OMEGA -03A9 0313 0342; 03A9 # Ὦ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER OMEGA -03A9 0314 0300; 03A9 # Ὣ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK CAPITAL LETTER OMEGA -03A9 0314 0301; 03A9 # Ὥ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK CAPITAL LETTER OMEGA -03A9 0314 0342; 03A9 # Ὧ → Ω GREEK CAPITAL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK CAPITAL LETTER OMEGA -03B1 0313 0300; 03B1 # ἂ → α GREEK SMALL LETTER ALPHA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER ALPHA -03B1 0313 0301; 03B1 # ἄ → α GREEK SMALL LETTER ALPHA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER ALPHA -03B1 0313 0342; 03B1 # ἆ → α GREEK SMALL LETTER ALPHA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER ALPHA -03B1 0314 0300; 03B1 # ἃ → α GREEK SMALL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER ALPHA -03B1 0314 0301; 03B1 # ἅ → α GREEK SMALL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER ALPHA -03B1 0314 0342; 03B1 # ἇ → α GREEK SMALL LETTER ALPHA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER ALPHA -03B5 0313 0300; 03B5 # ἒ → ε GREEK SMALL LETTER EPSILON, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER EPSILON -03B5 0313 0301; 03B5 # ἔ → ε GREEK SMALL LETTER EPSILON, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER EPSILON -03B5 0314 0300; 03B5 # ἓ → ε GREEK SMALL LETTER EPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER EPSILON -03B5 0314 0301; 03B5 # ἕ → ε GREEK SMALL LETTER EPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER EPSILON -03B7 0313 0300; 03B7 # ἢ → η GREEK SMALL LETTER ETA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER ETA -03B7 0313 0301; 03B7 # ἤ → η GREEK SMALL LETTER ETA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER ETA -03B7 0313 0342; 03B7 # ἦ → η GREEK SMALL LETTER ETA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER ETA -03B7 0314 0300; 03B7 # ἣ → η GREEK SMALL LETTER ETA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER ETA -03B7 0314 0301; 03B7 # ἥ → η GREEK SMALL LETTER ETA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER ETA -03B7 0314 0342; 03B7 # ἧ → η GREEK SMALL LETTER ETA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER ETA -03B9 0308 0300; 03B9 # ῒ → ι GREEK SMALL LETTER IOTA, COMBINING DIAERESIS, COMBINING GRAVE ACCENT → GREEK SMALL LETTER IOTA -03B9 0308 0301; 03B9 # ΐ → ι GREEK SMALL LETTER IOTA, COMBINING DIAERESIS, COMBINING ACUTE ACCENT → GREEK SMALL LETTER IOTA -03B9 0308 0342; 03B9 # ῗ → ι GREEK SMALL LETTER IOTA, COMBINING DIAERESIS, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER IOTA -03B9 0313 0300; 03B9 # ἲ → ι GREEK SMALL LETTER IOTA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER IOTA -03B9 0313 0301; 03B9 # ἴ → ι GREEK SMALL LETTER IOTA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER IOTA -03B9 0313 0342; 03B9 # ἶ → ι GREEK SMALL LETTER IOTA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER IOTA -03B9 0314 0300; 03B9 # ἳ → ι GREEK SMALL LETTER IOTA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER IOTA -03B9 0314 0301; 03B9 # ἵ → ι GREEK SMALL LETTER IOTA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER IOTA -03B9 0314 0342; 03B9 # ἷ → ι GREEK SMALL LETTER IOTA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER IOTA -03BF 0313 0300; 03BF # ὂ → ο GREEK SMALL LETTER OMICRON, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER OMICRON -03BF 0313 0301; 03BF # ὄ → ο GREEK SMALL LETTER OMICRON, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER OMICRON -03BF 0314 0300; 03BF # ὃ → ο GREEK SMALL LETTER OMICRON, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER OMICRON -03BF 0314 0301; 03BF # ὅ → ο GREEK SMALL LETTER OMICRON, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER OMICRON -03C5 0308 0300; 03C5 # ῢ → υ GREEK SMALL LETTER UPSILON, COMBINING DIAERESIS, COMBINING GRAVE ACCENT → GREEK SMALL LETTER UPSILON -03C5 0308 0301; 03C5 # ΰ → υ GREEK SMALL LETTER UPSILON, COMBINING DIAERESIS, COMBINING ACUTE ACCENT → GREEK SMALL LETTER UPSILON -03C5 0308 0342; 03C5 # ῧ → υ GREEK SMALL LETTER UPSILON, COMBINING DIAERESIS, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER UPSILON -03C5 0313 0300; 03C5 # ὒ → υ GREEK SMALL LETTER UPSILON, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER UPSILON -03C5 0313 0301; 03C5 # ὔ → υ GREEK SMALL LETTER UPSILON, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER UPSILON -03C5 0313 0342; 03C5 # ὖ → υ GREEK SMALL LETTER UPSILON, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER UPSILON -03C5 0314 0300; 03C5 # ὓ → υ GREEK SMALL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER UPSILON -03C5 0314 0301; 03C5 # ὕ → υ GREEK SMALL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER UPSILON -03C5 0314 0342; 03C5 # ὗ → υ GREEK SMALL LETTER UPSILON, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER UPSILON -03C9 0313 0300; 03C9 # ὢ → ω GREEK SMALL LETTER OMEGA, COMBINING COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER OMEGA -03C9 0313 0301; 03C9 # ὤ → ω GREEK SMALL LETTER OMEGA, COMBINING COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER OMEGA -03C9 0313 0342; 03C9 # ὦ → ω GREEK SMALL LETTER OMEGA, COMBINING COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER OMEGA -03C9 0314 0300; 03C9 # ὣ → ω GREEK SMALL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE, COMBINING GRAVE ACCENT → GREEK SMALL LETTER OMEGA -03C9 0314 0301; 03C9 # ὥ → ω GREEK SMALL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE, COMBINING ACUTE ACCENT → GREEK SMALL LETTER OMEGA -03C9 0314 0342; 03C9 # ὧ → ω GREEK SMALL LETTER OMEGA, COMBINING REVERSED COMMA ABOVE, COMBINING GREEK PERISPOMENI → GREEK SMALL LETTER OMEGA -05E9 05BC 05C1; 05E9 # שּׁ → ש HEBREW LETTER SHIN, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT SHIN DOT → HEBREW LETTER SHIN -05E9 05BC 05C2; 05E9 # שּׂ → ש HEBREW LETTER SHIN, HEBREW POINT DAGESH OR MAPIQ, HEBREW POINT SIN DOT → HEBREW LETTER SHIN - -# precomposed -00C0; 0041 # À → A LATIN CAPITAL LETTER A WITH GRAVE → LATIN CAPITAL LETTER A -00C1; 0041 # Á → A LATIN CAPITAL LETTER A WITH ACUTE → LATIN CAPITAL LETTER A -00C2; 0041 # Â → A LATIN CAPITAL LETTER A WITH CIRCUMFLEX → LATIN CAPITAL LETTER A -00C3; 0041 # Ã → A LATIN CAPITAL LETTER A WITH TILDE → LATIN CAPITAL LETTER A -00C4; 0041 # Ä → A LATIN CAPITAL LETTER A WITH DIAERESIS → LATIN CAPITAL LETTER A -00C5; 0041 # Å → A LATIN CAPITAL LETTER A WITH RING ABOVE → LATIN CAPITAL LETTER A -0100; 0041 # Ā → A LATIN CAPITAL LETTER A WITH MACRON → LATIN CAPITAL LETTER A -0102; 0041 # Ă → A LATIN CAPITAL LETTER A WITH BREVE → LATIN CAPITAL LETTER A -0104; 0041 # Ą → A LATIN CAPITAL LETTER A WITH OGONEK → LATIN CAPITAL LETTER A -01CD; 0041 # Ǎ → A LATIN CAPITAL LETTER A WITH CARON → LATIN CAPITAL LETTER A -01DE; 0041 # Ǟ → A LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON → LATIN CAPITAL LETTER A -01E0; 0041 # Ǡ → A LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON → LATIN CAPITAL LETTER A -01FA; 0041 # Ǻ → A LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE → LATIN CAPITAL LETTER A -0200; 0041 # Ȁ → A LATIN CAPITAL LETTER A WITH DOUBLE GRAVE → LATIN CAPITAL LETTER A -0202; 0041 # Ȃ → A LATIN CAPITAL LETTER A WITH INVERTED BREVE → LATIN CAPITAL LETTER A -0226; 0041 # Ȧ → A LATIN CAPITAL LETTER A WITH DOT ABOVE → LATIN CAPITAL LETTER A -1E00; 0041 # Ḁ → A LATIN CAPITAL LETTER A WITH RING BELOW → LATIN CAPITAL LETTER A -1EA0; 0041 # Ạ → A LATIN CAPITAL LETTER A WITH DOT BELOW → LATIN CAPITAL LETTER A -1EA2; 0041 # Ả → A LATIN CAPITAL LETTER A WITH HOOK ABOVE → LATIN CAPITAL LETTER A -1EA4; 0041 # Ấ → A LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE → LATIN CAPITAL LETTER A -1EA6; 0041 # Ầ → A LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE → LATIN CAPITAL LETTER A -1EA8; 0041 # Ẩ → A LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE → LATIN CAPITAL LETTER A -1EAA; 0041 # Ẫ → A LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE → LATIN CAPITAL LETTER A -1EAC; 0041 # Ậ → A LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW → LATIN CAPITAL LETTER A -1EAE; 0041 # Ắ → A LATIN CAPITAL LETTER A WITH BREVE AND ACUTE → LATIN CAPITAL LETTER A -1EB0; 0041 # Ằ → A LATIN CAPITAL LETTER A WITH BREVE AND GRAVE → LATIN CAPITAL LETTER A -1EB2; 0041 # Ẳ → A LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE → LATIN CAPITAL LETTER A -1EB4; 0041 # Ẵ → A LATIN CAPITAL LETTER A WITH BREVE AND TILDE → LATIN CAPITAL LETTER A -1EB6; 0041 # Ặ → A LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW → LATIN CAPITAL LETTER A -0181; 0042 # Ɓ → B LATIN CAPITAL LETTER B WITH HOOK → LATIN CAPITAL LETTER B -0182; 0042 # Ƃ → B LATIN CAPITAL LETTER B WITH TOPBAR → LATIN CAPITAL LETTER B -1E02; 0042 # Ḃ → B LATIN CAPITAL LETTER B WITH DOT ABOVE → LATIN CAPITAL LETTER B -1E04; 0042 # Ḅ → B LATIN CAPITAL LETTER B WITH DOT BELOW → LATIN CAPITAL LETTER B -1E06; 0042 # Ḇ → B LATIN CAPITAL LETTER B WITH LINE BELOW → LATIN CAPITAL LETTER B -00C7; 0043 # Ç → C LATIN CAPITAL LETTER C WITH CEDILLA → LATIN CAPITAL LETTER C -0106; 0043 # Ć → C LATIN CAPITAL LETTER C WITH ACUTE → LATIN CAPITAL LETTER C -0108; 0043 # Ĉ → C LATIN CAPITAL LETTER C WITH CIRCUMFLEX → LATIN CAPITAL LETTER C -010A; 0043 # Ċ → C LATIN CAPITAL LETTER C WITH DOT ABOVE → LATIN CAPITAL LETTER C -010C; 0043 # Č → C LATIN CAPITAL LETTER C WITH CARON → LATIN CAPITAL LETTER C -0187; 0043 # Ƈ → C LATIN CAPITAL LETTER C WITH HOOK → LATIN CAPITAL LETTER C -1E08; 0043 # Ḉ → C LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE → LATIN CAPITAL LETTER C -010E; 0044 # Ď → D LATIN CAPITAL LETTER D WITH CARON → LATIN CAPITAL LETTER D -0110; 0044 # Đ → D LATIN CAPITAL LETTER D WITH STROKE → LATIN CAPITAL LETTER D -018A; 0044 # Ɗ → D LATIN CAPITAL LETTER D WITH HOOK → LATIN CAPITAL LETTER D -018B; 0044 # Ƌ → D LATIN CAPITAL LETTER D WITH TOPBAR → LATIN CAPITAL LETTER D -1E0A; 0044 # Ḋ → D LATIN CAPITAL LETTER D WITH DOT ABOVE → LATIN CAPITAL LETTER D -1E0C; 0044 # Ḍ → D LATIN CAPITAL LETTER D WITH DOT BELOW → LATIN CAPITAL LETTER D -1E0E; 0044 # Ḏ → D LATIN CAPITAL LETTER D WITH LINE BELOW → LATIN CAPITAL LETTER D -1E10; 0044 # Ḑ → D LATIN CAPITAL LETTER D WITH CEDILLA → LATIN CAPITAL LETTER D -1E12; 0044 # Ḓ → D LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW → LATIN CAPITAL LETTER D -00C8; 0045 # È → E LATIN CAPITAL LETTER E WITH GRAVE → LATIN CAPITAL LETTER E -00C9; 0045 # É → E LATIN CAPITAL LETTER E WITH ACUTE → LATIN CAPITAL LETTER E -00CA; 0045 # Ê → E LATIN CAPITAL LETTER E WITH CIRCUMFLEX → LATIN CAPITAL LETTER E -00CB; 0045 # Ë → E LATIN CAPITAL LETTER E WITH DIAERESIS → LATIN CAPITAL LETTER E -0112; 0045 # Ē → E LATIN CAPITAL LETTER E WITH MACRON → LATIN CAPITAL LETTER E -0114; 0045 # Ĕ → E LATIN CAPITAL LETTER E WITH BREVE → LATIN CAPITAL LETTER E -0116; 0045 # Ė → E LATIN CAPITAL LETTER E WITH DOT ABOVE → LATIN CAPITAL LETTER E -0118; 0045 # Ę → E LATIN CAPITAL LETTER E WITH OGONEK → LATIN CAPITAL LETTER E -011A; 0045 # Ě → E LATIN CAPITAL LETTER E WITH CARON → LATIN CAPITAL LETTER E -0204; 0045 # Ȅ → E LATIN CAPITAL LETTER E WITH DOUBLE GRAVE → LATIN CAPITAL LETTER E -0206; 0045 # Ȇ → E LATIN CAPITAL LETTER E WITH INVERTED BREVE → LATIN CAPITAL LETTER E -0228; 0045 # Ȩ → E LATIN CAPITAL LETTER E WITH CEDILLA → LATIN CAPITAL LETTER E -1E14; 0045 # Ḕ → E LATIN CAPITAL LETTER E WITH MACRON AND GRAVE → LATIN CAPITAL LETTER E -1E16; 0045 # Ḗ → E LATIN CAPITAL LETTER E WITH MACRON AND ACUTE → LATIN CAPITAL LETTER E -1E18; 0045 # Ḙ → E LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW → LATIN CAPITAL LETTER E -1E1A; 0045 # Ḛ → E LATIN CAPITAL LETTER E WITH TILDE BELOW → LATIN CAPITAL LETTER E -1E1C; 0045 # Ḝ → E LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE → LATIN CAPITAL LETTER E -1EB8; 0045 # Ẹ → E LATIN CAPITAL LETTER E WITH DOT BELOW → LATIN CAPITAL LETTER E -1EBA; 0045 # Ẻ → E LATIN CAPITAL LETTER E WITH HOOK ABOVE → LATIN CAPITAL LETTER E -1EBC; 0045 # Ẽ → E LATIN CAPITAL LETTER E WITH TILDE → LATIN CAPITAL LETTER E -1EBE; 0045 # Ế → E LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE → LATIN CAPITAL LETTER E -1EC0; 0045 # Ề → E LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE → LATIN CAPITAL LETTER E -1EC2; 0045 # Ể → E LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE → LATIN CAPITAL LETTER E -1EC4; 0045 # Ễ → E LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE → LATIN CAPITAL LETTER E -1EC6; 0045 # Ệ → E LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW → LATIN CAPITAL LETTER E -0191; 0046 # Ƒ → F LATIN CAPITAL LETTER F WITH HOOK → LATIN CAPITAL LETTER F -1E1E; 0046 # Ḟ → F LATIN CAPITAL LETTER F WITH DOT ABOVE → LATIN CAPITAL LETTER F -011C; 0047 # Ĝ → G LATIN CAPITAL LETTER G WITH CIRCUMFLEX → LATIN CAPITAL LETTER G -011E; 0047 # Ğ → G LATIN CAPITAL LETTER G WITH BREVE → LATIN CAPITAL LETTER G -0120; 0047 # Ġ → G LATIN CAPITAL LETTER G WITH DOT ABOVE → LATIN CAPITAL LETTER G -0122; 0047 # Ģ → G LATIN CAPITAL LETTER G WITH CEDILLA → LATIN CAPITAL LETTER G -0193; 0047 # Ɠ → G LATIN CAPITAL LETTER G WITH HOOK → LATIN CAPITAL LETTER G -01E4; 0047 # Ǥ → G LATIN CAPITAL LETTER G WITH STROKE → LATIN CAPITAL LETTER G -01E6; 0047 # Ǧ → G LATIN CAPITAL LETTER G WITH CARON → LATIN CAPITAL LETTER G -01F4; 0047 # Ǵ → G LATIN CAPITAL LETTER G WITH ACUTE → LATIN CAPITAL LETTER G -1E20; 0047 # Ḡ → G LATIN CAPITAL LETTER G WITH MACRON → LATIN CAPITAL LETTER G -0124; 0048 # Ĥ → H LATIN CAPITAL LETTER H WITH CIRCUMFLEX → LATIN CAPITAL LETTER H -0126; 0048 # Ħ → H LATIN CAPITAL LETTER H WITH STROKE → LATIN CAPITAL LETTER H -021E; 0048 # Ȟ → H LATIN CAPITAL LETTER H WITH CARON → LATIN CAPITAL LETTER H -1E22; 0048 # Ḣ → H LATIN CAPITAL LETTER H WITH DOT ABOVE → LATIN CAPITAL LETTER H -1E24; 0048 # Ḥ → H LATIN CAPITAL LETTER H WITH DOT BELOW → LATIN CAPITAL LETTER H -1E26; 0048 # Ḧ → H LATIN CAPITAL LETTER H WITH DIAERESIS → LATIN CAPITAL LETTER H -1E28; 0048 # Ḩ → H LATIN CAPITAL LETTER H WITH CEDILLA → LATIN CAPITAL LETTER H -1E2A; 0048 # Ḫ → H LATIN CAPITAL LETTER H WITH BREVE BELOW → LATIN CAPITAL LETTER H -00CC; 0049 # Ì → I LATIN CAPITAL LETTER I WITH GRAVE → LATIN CAPITAL LETTER I -00CD; 0049 # Í → I LATIN CAPITAL LETTER I WITH ACUTE → LATIN CAPITAL LETTER I -00CE; 0049 # Î → I LATIN CAPITAL LETTER I WITH CIRCUMFLEX → LATIN CAPITAL LETTER I -00CF; 0049 # Ï → I LATIN CAPITAL LETTER I WITH DIAERESIS → LATIN CAPITAL LETTER I -0128; 0049 # Ĩ → I LATIN CAPITAL LETTER I WITH TILDE → LATIN CAPITAL LETTER I -012A; 0049 # Ī → I LATIN CAPITAL LETTER I WITH MACRON → LATIN CAPITAL LETTER I -012C; 0049 # Ĭ → I LATIN CAPITAL LETTER I WITH BREVE → LATIN CAPITAL LETTER I -012E; 0049 # Į → I LATIN CAPITAL LETTER I WITH OGONEK → LATIN CAPITAL LETTER I -0130; 0049 # İ → I LATIN CAPITAL LETTER I WITH DOT ABOVE → LATIN CAPITAL LETTER I -0197; 0049 # Ɨ → I LATIN CAPITAL LETTER I WITH STROKE → LATIN CAPITAL LETTER I -01CF; 0049 # Ǐ → I LATIN CAPITAL LETTER I WITH CARON → LATIN CAPITAL LETTER I -0208; 0049 # Ȉ → I LATIN CAPITAL LETTER I WITH DOUBLE GRAVE → LATIN CAPITAL LETTER I -020A; 0049 # Ȋ → I LATIN CAPITAL LETTER I WITH INVERTED BREVE → LATIN CAPITAL LETTER I -1E2C; 0049 # Ḭ → I LATIN CAPITAL LETTER I WITH TILDE BELOW → LATIN CAPITAL LETTER I -1E2E; 0049 # Ḯ → I LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE → LATIN CAPITAL LETTER I -1EC8; 0049 # Ỉ → I LATIN CAPITAL LETTER I WITH HOOK ABOVE → LATIN CAPITAL LETTER I -1ECA; 0049 # Ị → I LATIN CAPITAL LETTER I WITH DOT BELOW → LATIN CAPITAL LETTER I -0134; 004A # Ĵ → J LATIN CAPITAL LETTER J WITH CIRCUMFLEX → LATIN CAPITAL LETTER J -0136; 004B # Ķ → K LATIN CAPITAL LETTER K WITH CEDILLA → LATIN CAPITAL LETTER K -0198; 004B # Ƙ → K LATIN CAPITAL LETTER K WITH HOOK → LATIN CAPITAL LETTER K -01E8; 004B # Ǩ → K LATIN CAPITAL LETTER K WITH CARON → LATIN CAPITAL LETTER K -1E30; 004B # Ḱ → K LATIN CAPITAL LETTER K WITH ACUTE → LATIN CAPITAL LETTER K -1E32; 004B # Ḳ → K LATIN CAPITAL LETTER K WITH DOT BELOW → LATIN CAPITAL LETTER K -1E34; 004B # Ḵ → K LATIN CAPITAL LETTER K WITH LINE BELOW → LATIN CAPITAL LETTER K -0139; 004C # Ĺ → L LATIN CAPITAL LETTER L WITH ACUTE → LATIN CAPITAL LETTER L -013B; 004C # Ļ → L LATIN CAPITAL LETTER L WITH CEDILLA → LATIN CAPITAL LETTER L -013D; 004C # Ľ → L LATIN CAPITAL LETTER L WITH CARON → LATIN CAPITAL LETTER L -0141; 004C # Ł → L LATIN CAPITAL LETTER L WITH STROKE → LATIN CAPITAL LETTER L -1E36; 004C # Ḷ → L LATIN CAPITAL LETTER L WITH DOT BELOW → LATIN CAPITAL LETTER L -1E38; 004C # Ḹ → L LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON → LATIN CAPITAL LETTER L -1E3A; 004C # Ḻ → L LATIN CAPITAL LETTER L WITH LINE BELOW → LATIN CAPITAL LETTER L -1E3C; 004C # Ḽ → L LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW → LATIN CAPITAL LETTER L -1E3E; 004D # Ḿ → M LATIN CAPITAL LETTER M WITH ACUTE → LATIN CAPITAL LETTER M -1E40; 004D # Ṁ → M LATIN CAPITAL LETTER M WITH DOT ABOVE → LATIN CAPITAL LETTER M -1E42; 004D # Ṃ → M LATIN CAPITAL LETTER M WITH DOT BELOW → LATIN CAPITAL LETTER M -00D1; 004E # Ñ → N LATIN CAPITAL LETTER N WITH TILDE → LATIN CAPITAL LETTER N -0143; 004E # Ń → N LATIN CAPITAL LETTER N WITH ACUTE → LATIN CAPITAL LETTER N -0145; 004E # Ņ → N LATIN CAPITAL LETTER N WITH CEDILLA → LATIN CAPITAL LETTER N -0147; 004E # Ň → N LATIN CAPITAL LETTER N WITH CARON → LATIN CAPITAL LETTER N -019D; 004E # Ɲ → N LATIN CAPITAL LETTER N WITH LEFT HOOK → LATIN CAPITAL LETTER N -01F8; 004E # Ǹ → N LATIN CAPITAL LETTER N WITH GRAVE → LATIN CAPITAL LETTER N -0220; 004E # Ƞ → N LATIN CAPITAL LETTER N WITH LONG RIGHT LEG → LATIN CAPITAL LETTER N -1E44; 004E # Ṅ → N LATIN CAPITAL LETTER N WITH DOT ABOVE → LATIN CAPITAL LETTER N -1E46; 004E # Ṇ → N LATIN CAPITAL LETTER N WITH DOT BELOW → LATIN CAPITAL LETTER N -1E48; 004E # Ṉ → N LATIN CAPITAL LETTER N WITH LINE BELOW → LATIN CAPITAL LETTER N -1E4A; 004E # Ṋ → N LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW → LATIN CAPITAL LETTER N -00D2; 004F # Ò → O LATIN CAPITAL LETTER O WITH GRAVE → LATIN CAPITAL LETTER O -00D3; 004F # Ó → O LATIN CAPITAL LETTER O WITH ACUTE → LATIN CAPITAL LETTER O -00D4; 004F # Ô → O LATIN CAPITAL LETTER O WITH CIRCUMFLEX → LATIN CAPITAL LETTER O -00D5; 004F # Õ → O LATIN CAPITAL LETTER O WITH TILDE → LATIN CAPITAL LETTER O -00D6; 004F # Ö → O LATIN CAPITAL LETTER O WITH DIAERESIS → LATIN CAPITAL LETTER O -00D8; 004F # Ø → O LATIN CAPITAL LETTER O WITH STROKE → LATIN CAPITAL LETTER O -014C; 004F # Ō → O LATIN CAPITAL LETTER O WITH MACRON → LATIN CAPITAL LETTER O -014E; 004F # Ŏ → O LATIN CAPITAL LETTER O WITH BREVE → LATIN CAPITAL LETTER O -0150; 004F # Ő → O LATIN CAPITAL LETTER O WITH DOUBLE ACUTE → LATIN CAPITAL LETTER O -019F; 004F # Ɵ → O LATIN CAPITAL LETTER O WITH MIDDLE TILDE → LATIN CAPITAL LETTER O -01A0; 004F # Ơ → O LATIN CAPITAL LETTER O WITH HORN → LATIN CAPITAL LETTER O -01D1; 004F # Ǒ → O LATIN CAPITAL LETTER O WITH CARON → LATIN CAPITAL LETTER O -01EA; 004F # Ǫ → O LATIN CAPITAL LETTER O WITH OGONEK → LATIN CAPITAL LETTER O -01EC; 004F # Ǭ → O LATIN CAPITAL LETTER O WITH OGONEK AND MACRON → LATIN CAPITAL LETTER O -01FE; 004F # Ǿ → O LATIN CAPITAL LETTER O WITH STROKE AND ACUTE → LATIN CAPITAL LETTER O -020C; 004F # Ȍ → O LATIN CAPITAL LETTER O WITH DOUBLE GRAVE → LATIN CAPITAL LETTER O -020E; 004F # Ȏ → O LATIN CAPITAL LETTER O WITH INVERTED BREVE → LATIN CAPITAL LETTER O -022A; 004F # Ȫ → O LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON → LATIN CAPITAL LETTER O -022C; 004F # Ȭ → O LATIN CAPITAL LETTER O WITH TILDE AND MACRON → LATIN CAPITAL LETTER O -022E; 004F # Ȯ → O LATIN CAPITAL LETTER O WITH DOT ABOVE → LATIN CAPITAL LETTER O -0230; 004F # Ȱ → O LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON → LATIN CAPITAL LETTER O -1E4C; 004F # Ṍ → O LATIN CAPITAL LETTER O WITH TILDE AND ACUTE → LATIN CAPITAL LETTER O -1E4E; 004F # Ṏ → O LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS → LATIN CAPITAL LETTER O -1E50; 004F # Ṑ → O LATIN CAPITAL LETTER O WITH MACRON AND GRAVE → LATIN CAPITAL LETTER O -1E52; 004F # Ṓ → O LATIN CAPITAL LETTER O WITH MACRON AND ACUTE → LATIN CAPITAL LETTER O -1ECC; 004F # Ọ → O LATIN CAPITAL LETTER O WITH DOT BELOW → LATIN CAPITAL LETTER O -1ECE; 004F # Ỏ → O LATIN CAPITAL LETTER O WITH HOOK ABOVE → LATIN CAPITAL LETTER O -1ED0; 004F # Ố → O LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE → LATIN CAPITAL LETTER O -1ED2; 004F # Ồ → O LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE → LATIN CAPITAL LETTER O -1ED4; 004F # Ổ → O LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE → LATIN CAPITAL LETTER O -1ED6; 004F # Ỗ → O LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE → LATIN CAPITAL LETTER O -1ED8; 004F # Ộ → O LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW → LATIN CAPITAL LETTER O -1EDA; 004F # Ớ → O LATIN CAPITAL LETTER O WITH HORN AND ACUTE → LATIN CAPITAL LETTER O -1EDC; 004F # Ờ → O LATIN CAPITAL LETTER O WITH HORN AND GRAVE → LATIN CAPITAL LETTER O -1EDE; 004F # Ở → O LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE → LATIN CAPITAL LETTER O -1EE0; 004F # Ỡ → O LATIN CAPITAL LETTER O WITH HORN AND TILDE → LATIN CAPITAL LETTER O -1EE2; 004F # Ợ → O LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW → LATIN CAPITAL LETTER O -01A4; 0050 # Ƥ → P LATIN CAPITAL LETTER P WITH HOOK → LATIN CAPITAL LETTER P -1E54; 0050 # Ṕ → P LATIN CAPITAL LETTER P WITH ACUTE → LATIN CAPITAL LETTER P -1E56; 0050 # Ṗ → P LATIN CAPITAL LETTER P WITH DOT ABOVE → LATIN CAPITAL LETTER P -0154; 0052 # Ŕ → R LATIN CAPITAL LETTER R WITH ACUTE → LATIN CAPITAL LETTER R -0156; 0052 # Ŗ → R LATIN CAPITAL LETTER R WITH CEDILLA → LATIN CAPITAL LETTER R -0158; 0052 # Ř → R LATIN CAPITAL LETTER R WITH CARON → LATIN CAPITAL LETTER R -0210; 0052 # Ȑ → R LATIN CAPITAL LETTER R WITH DOUBLE GRAVE → LATIN CAPITAL LETTER R -0212; 0052 # Ȓ → R LATIN CAPITAL LETTER R WITH INVERTED BREVE → LATIN CAPITAL LETTER R -1E58; 0052 # Ṙ → R LATIN CAPITAL LETTER R WITH DOT ABOVE → LATIN CAPITAL LETTER R -1E5A; 0052 # Ṛ → R LATIN CAPITAL LETTER R WITH DOT BELOW → LATIN CAPITAL LETTER R -1E5C; 0052 # Ṝ → R LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON → LATIN CAPITAL LETTER R -1E5E; 0052 # Ṟ → R LATIN CAPITAL LETTER R WITH LINE BELOW → LATIN CAPITAL LETTER R -015A; 0053 # Ś → S LATIN CAPITAL LETTER S WITH ACUTE → LATIN CAPITAL LETTER S -015C; 0053 # Ŝ → S LATIN CAPITAL LETTER S WITH CIRCUMFLEX → LATIN CAPITAL LETTER S -015E; 0053 # Ş → S LATIN CAPITAL LETTER S WITH CEDILLA → LATIN CAPITAL LETTER S -0160; 0053 # Š → S LATIN CAPITAL LETTER S WITH CARON → LATIN CAPITAL LETTER S -0218; 0053 # Ș → S LATIN CAPITAL LETTER S WITH COMMA BELOW → LATIN CAPITAL LETTER S -1E60; 0053 # Ṡ → S LATIN CAPITAL LETTER S WITH DOT ABOVE → LATIN CAPITAL LETTER S -1E62; 0053 # Ṣ → S LATIN CAPITAL LETTER S WITH DOT BELOW → LATIN CAPITAL LETTER S -1E64; 0053 # Ṥ → S LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE → LATIN CAPITAL LETTER S -1E66; 0053 # Ṧ → S LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE → LATIN CAPITAL LETTER S -1E68; 0053 # Ṩ → S LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE → LATIN CAPITAL LETTER S -0162; 0054 # Ţ → T LATIN CAPITAL LETTER T WITH CEDILLA → LATIN CAPITAL LETTER T -0164; 0054 # Ť → T LATIN CAPITAL LETTER T WITH CARON → LATIN CAPITAL LETTER T -0166; 0054 # Ŧ → T LATIN CAPITAL LETTER T WITH STROKE → LATIN CAPITAL LETTER T -01AC; 0054 # Ƭ → T LATIN CAPITAL LETTER T WITH HOOK → LATIN CAPITAL LETTER T -01AE; 0054 # Ʈ → T LATIN CAPITAL LETTER T WITH RETROFLEX HOOK → LATIN CAPITAL LETTER T -021A; 0054 # Ț → T LATIN CAPITAL LETTER T WITH COMMA BELOW → LATIN CAPITAL LETTER T -1E6A; 0054 # Ṫ → T LATIN CAPITAL LETTER T WITH DOT ABOVE → LATIN CAPITAL LETTER T -1E6C; 0054 # Ṭ → T LATIN CAPITAL LETTER T WITH DOT BELOW → LATIN CAPITAL LETTER T -1E6E; 0054 # Ṯ → T LATIN CAPITAL LETTER T WITH LINE BELOW → LATIN CAPITAL LETTER T -1E70; 0054 # Ṱ → T LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW → LATIN CAPITAL LETTER T -00D9; 0055 # Ù → U LATIN CAPITAL LETTER U WITH GRAVE → LATIN CAPITAL LETTER U -00DA; 0055 # Ú → U LATIN CAPITAL LETTER U WITH ACUTE → LATIN CAPITAL LETTER U -00DB; 0055 # Û → U LATIN CAPITAL LETTER U WITH CIRCUMFLEX → LATIN CAPITAL LETTER U -00DC; 0055 # Ü → U LATIN CAPITAL LETTER U WITH DIAERESIS → LATIN CAPITAL LETTER U -0168; 0055 # Ũ → U LATIN CAPITAL LETTER U WITH TILDE → LATIN CAPITAL LETTER U -016A; 0055 # Ū → U LATIN CAPITAL LETTER U WITH MACRON → LATIN CAPITAL LETTER U -016C; 0055 # Ŭ → U LATIN CAPITAL LETTER U WITH BREVE → LATIN CAPITAL LETTER U -016E; 0055 # Ů → U LATIN CAPITAL LETTER U WITH RING ABOVE → LATIN CAPITAL LETTER U -0170; 0055 # Ű → U LATIN CAPITAL LETTER U WITH DOUBLE ACUTE → LATIN CAPITAL LETTER U -0172; 0055 # Ų → U LATIN CAPITAL LETTER U WITH OGONEK → LATIN CAPITAL LETTER U -01AF; 0055 # Ư → U LATIN CAPITAL LETTER U WITH HORN → LATIN CAPITAL LETTER U -01D3; 0055 # Ǔ → U LATIN CAPITAL LETTER U WITH CARON → LATIN CAPITAL LETTER U -01D5; 0055 # Ǖ → U LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON → LATIN CAPITAL LETTER U -01D7; 0055 # Ǘ → U LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE → LATIN CAPITAL LETTER U -01D9; 0055 # Ǚ → U LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON → LATIN CAPITAL LETTER U -01DB; 0055 # Ǜ → U LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE → LATIN CAPITAL LETTER U -0214; 0055 # Ȕ → U LATIN CAPITAL LETTER U WITH DOUBLE GRAVE → LATIN CAPITAL LETTER U -0216; 0055 # Ȗ → U LATIN CAPITAL LETTER U WITH INVERTED BREVE → LATIN CAPITAL LETTER U -1E72; 0055 # Ṳ → U LATIN CAPITAL LETTER U WITH DIAERESIS BELOW → LATIN CAPITAL LETTER U -1E74; 0055 # Ṵ → U LATIN CAPITAL LETTER U WITH TILDE BELOW → LATIN CAPITAL LETTER U -1E76; 0055 # Ṷ → U LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW → LATIN CAPITAL LETTER U -1E78; 0055 # Ṹ → U LATIN CAPITAL LETTER U WITH TILDE AND ACUTE → LATIN CAPITAL LETTER U -1E7A; 0055 # Ṻ → U LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS → LATIN CAPITAL LETTER U -1EE4; 0055 # Ụ → U LATIN CAPITAL LETTER U WITH DOT BELOW → LATIN CAPITAL LETTER U -1EE6; 0055 # Ủ → U LATIN CAPITAL LETTER U WITH HOOK ABOVE → LATIN CAPITAL LETTER U -1EE8; 0055 # Ứ → U LATIN CAPITAL LETTER U WITH HORN AND ACUTE → LATIN CAPITAL LETTER U -1EEA; 0055 # Ừ → U LATIN CAPITAL LETTER U WITH HORN AND GRAVE → LATIN CAPITAL LETTER U -1EEC; 0055 # Ử → U LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE → LATIN CAPITAL LETTER U -1EEE; 0055 # Ữ → U LATIN CAPITAL LETTER U WITH HORN AND TILDE → LATIN CAPITAL LETTER U -1EF0; 0055 # Ự → U LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW → LATIN CAPITAL LETTER U -01B2; 0056 # Ʋ → V LATIN CAPITAL LETTER V WITH HOOK → LATIN CAPITAL LETTER V -1E7C; 0056 # Ṽ → V LATIN CAPITAL LETTER V WITH TILDE → LATIN CAPITAL LETTER V -1E7E; 0056 # Ṿ → V LATIN CAPITAL LETTER V WITH DOT BELOW → LATIN CAPITAL LETTER V -0174; 0057 # Ŵ → W LATIN CAPITAL LETTER W WITH CIRCUMFLEX → LATIN CAPITAL LETTER W -1E80; 0057 # Ẁ → W LATIN CAPITAL LETTER W WITH GRAVE → LATIN CAPITAL LETTER W -1E82; 0057 # Ẃ → W LATIN CAPITAL LETTER W WITH ACUTE → LATIN CAPITAL LETTER W -1E84; 0057 # Ẅ → W LATIN CAPITAL LETTER W WITH DIAERESIS → LATIN CAPITAL LETTER W -1E86; 0057 # Ẇ → W LATIN CAPITAL LETTER W WITH DOT ABOVE → LATIN CAPITAL LETTER W -1E88; 0057 # Ẉ → W LATIN CAPITAL LETTER W WITH DOT BELOW → LATIN CAPITAL LETTER W -1E8A; 0058 # Ẋ → X LATIN CAPITAL LETTER X WITH DOT ABOVE → LATIN CAPITAL LETTER X -1E8C; 0058 # Ẍ → X LATIN CAPITAL LETTER X WITH DIAERESIS → LATIN CAPITAL LETTER X -00DD; 0059 # Ý → Y LATIN CAPITAL LETTER Y WITH ACUTE → LATIN CAPITAL LETTER Y -0176; 0059 # Ŷ → Y LATIN CAPITAL LETTER Y WITH CIRCUMFLEX → LATIN CAPITAL LETTER Y -0178; 0059 # Ÿ → Y LATIN CAPITAL LETTER Y WITH DIAERESIS → LATIN CAPITAL LETTER Y -01B3; 0059 # Ƴ → Y LATIN CAPITAL LETTER Y WITH HOOK → LATIN CAPITAL LETTER Y -0232; 0059 # Ȳ → Y LATIN CAPITAL LETTER Y WITH MACRON → LATIN CAPITAL LETTER Y -1E8E; 0059 # Ẏ → Y LATIN CAPITAL LETTER Y WITH DOT ABOVE → LATIN CAPITAL LETTER Y -1EF2; 0059 # Ỳ → Y LATIN CAPITAL LETTER Y WITH GRAVE → LATIN CAPITAL LETTER Y -1EF4; 0059 # Ỵ → Y LATIN CAPITAL LETTER Y WITH DOT BELOW → LATIN CAPITAL LETTER Y -1EF6; 0059 # Ỷ → Y LATIN CAPITAL LETTER Y WITH HOOK ABOVE → LATIN CAPITAL LETTER Y -1EF8; 0059 # Ỹ → Y LATIN CAPITAL LETTER Y WITH TILDE → LATIN CAPITAL LETTER Y -0179; 005A # Ź → Z LATIN CAPITAL LETTER Z WITH ACUTE → LATIN CAPITAL LETTER Z -017B; 005A # Ż → Z LATIN CAPITAL LETTER Z WITH DOT ABOVE → LATIN CAPITAL LETTER Z -017D; 005A # Ž → Z LATIN CAPITAL LETTER Z WITH CARON → LATIN CAPITAL LETTER Z -01B5; 005A # Ƶ → Z LATIN CAPITAL LETTER Z WITH STROKE → LATIN CAPITAL LETTER Z -0224; 005A # Ȥ → Z LATIN CAPITAL LETTER Z WITH HOOK → LATIN CAPITAL LETTER Z -1E90; 005A # Ẑ → Z LATIN CAPITAL LETTER Z WITH CIRCUMFLEX → LATIN CAPITAL LETTER Z -1E92; 005A # Ẓ → Z LATIN CAPITAL LETTER Z WITH DOT BELOW → LATIN CAPITAL LETTER Z -1E94; 005A # Ẕ → Z LATIN CAPITAL LETTER Z WITH LINE BELOW → LATIN CAPITAL LETTER Z -00E0; 0061 # à → a LATIN SMALL LETTER A WITH GRAVE → LATIN SMALL LETTER A -00E1; 0061 # á → a LATIN SMALL LETTER A WITH ACUTE → LATIN SMALL LETTER A -00E2; 0061 # â → a LATIN SMALL LETTER A WITH CIRCUMFLEX → LATIN SMALL LETTER A -00E3; 0061 # ã → a LATIN SMALL LETTER A WITH TILDE → LATIN SMALL LETTER A -00E4; 0061 # ä → a LATIN SMALL LETTER A WITH DIAERESIS → LATIN SMALL LETTER A -00E5; 0061 # å → a LATIN SMALL LETTER A WITH RING ABOVE → LATIN SMALL LETTER A -0101; 0061 # ā → a LATIN SMALL LETTER A WITH MACRON → LATIN SMALL LETTER A -0103; 0061 # ă → a LATIN SMALL LETTER A WITH BREVE → LATIN SMALL LETTER A -0105; 0061 # ą → a LATIN SMALL LETTER A WITH OGONEK → LATIN SMALL LETTER A -01CE; 0061 # ǎ → a LATIN SMALL LETTER A WITH CARON → LATIN SMALL LETTER A -01DF; 0061 # ǟ → a LATIN SMALL LETTER A WITH DIAERESIS AND MACRON → LATIN SMALL LETTER A -01E1; 0061 # ǡ → a LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON → LATIN SMALL LETTER A -01FB; 0061 # ǻ → a LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE → LATIN SMALL LETTER A -0201; 0061 # ȁ → a LATIN SMALL LETTER A WITH DOUBLE GRAVE → LATIN SMALL LETTER A -0203; 0061 # ȃ → a LATIN SMALL LETTER A WITH INVERTED BREVE → LATIN SMALL LETTER A -0227; 0061 # ȧ → a LATIN SMALL LETTER A WITH DOT ABOVE → LATIN SMALL LETTER A -1E01; 0061 # ḁ → a LATIN SMALL LETTER A WITH RING BELOW → LATIN SMALL LETTER A -1E9A; 0061 # ẚ → a LATIN SMALL LETTER A WITH RIGHT HALF RING → LATIN SMALL LETTER A -1EA1; 0061 # ạ → a LATIN SMALL LETTER A WITH DOT BELOW → LATIN SMALL LETTER A -1EA3; 0061 # ả → a LATIN SMALL LETTER A WITH HOOK ABOVE → LATIN SMALL LETTER A -1EA5; 0061 # ấ → a LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE → LATIN SMALL LETTER A -1EA7; 0061 # ầ → a LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE → LATIN SMALL LETTER A -1EA9; 0061 # ẩ → a LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE → LATIN SMALL LETTER A -1EAB; 0061 # ẫ → a LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE → LATIN SMALL LETTER A -1EAD; 0061 # ậ → a LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW → LATIN SMALL LETTER A -1EAF; 0061 # ắ → a LATIN SMALL LETTER A WITH BREVE AND ACUTE → LATIN SMALL LETTER A -1EB1; 0061 # ằ → a LATIN SMALL LETTER A WITH BREVE AND GRAVE → LATIN SMALL LETTER A -1EB3; 0061 # ẳ → a LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE → LATIN SMALL LETTER A -1EB5; 0061 # ẵ → a LATIN SMALL LETTER A WITH BREVE AND TILDE → LATIN SMALL LETTER A -1EB7; 0061 # ặ → a LATIN SMALL LETTER A WITH BREVE AND DOT BELOW → LATIN SMALL LETTER A -0180; 0062 # ƀ → b LATIN SMALL LETTER B WITH STROKE → LATIN SMALL LETTER B -0183; 0062 # ƃ → b LATIN SMALL LETTER B WITH TOPBAR → LATIN SMALL LETTER B -0253; 0062 # ɓ → b LATIN SMALL LETTER B WITH HOOK → LATIN SMALL LETTER B -1E03; 0062 # ḃ → b LATIN SMALL LETTER B WITH DOT ABOVE → LATIN SMALL LETTER B -1E05; 0062 # ḅ → b LATIN SMALL LETTER B WITH DOT BELOW → LATIN SMALL LETTER B -1E07; 0062 # ḇ → b LATIN SMALL LETTER B WITH LINE BELOW → LATIN SMALL LETTER B -00E7; 0063 # ç → c LATIN SMALL LETTER C WITH CEDILLA → LATIN SMALL LETTER C -0107; 0063 # ć → c LATIN SMALL LETTER C WITH ACUTE → LATIN SMALL LETTER C -0109; 0063 # ĉ → c LATIN SMALL LETTER C WITH CIRCUMFLEX → LATIN SMALL LETTER C -010B; 0063 # ċ → c LATIN SMALL LETTER C WITH DOT ABOVE → LATIN SMALL LETTER C -010D; 0063 # č → c LATIN SMALL LETTER C WITH CARON → LATIN SMALL LETTER C -0188; 0063 # ƈ → c LATIN SMALL LETTER C WITH HOOK → LATIN SMALL LETTER C -0255; 0063 # ɕ → c LATIN SMALL LETTER C WITH CURL → LATIN SMALL LETTER C -1E09; 0063 # ḉ → c LATIN SMALL LETTER C WITH CEDILLA AND ACUTE → LATIN SMALL LETTER C -010F; 0064 # ď → d LATIN SMALL LETTER D WITH CARON → LATIN SMALL LETTER D -0111; 0064 # đ → d LATIN SMALL LETTER D WITH STROKE → LATIN SMALL LETTER D -018C; 0064 # ƌ → d LATIN SMALL LETTER D WITH TOPBAR → LATIN SMALL LETTER D -0221; 0064 # ȡ → d LATIN SMALL LETTER D WITH CURL → LATIN SMALL LETTER D -0256; 0064 # ɖ → d LATIN SMALL LETTER D WITH TAIL → LATIN SMALL LETTER D -0257; 0064 # ɗ → d LATIN SMALL LETTER D WITH HOOK → LATIN SMALL LETTER D -1E0B; 0064 # ḋ → d LATIN SMALL LETTER D WITH DOT ABOVE → LATIN SMALL LETTER D -1E0D; 0064 # ḍ → d LATIN SMALL LETTER D WITH DOT BELOW → LATIN SMALL LETTER D -1E0F; 0064 # ḏ → d LATIN SMALL LETTER D WITH LINE BELOW → LATIN SMALL LETTER D -1E11; 0064 # ḑ → d LATIN SMALL LETTER D WITH CEDILLA → LATIN SMALL LETTER D -1E13; 0064 # ḓ → d LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW → LATIN SMALL LETTER D -00E8; 0065 # è → e LATIN SMALL LETTER E WITH GRAVE → LATIN SMALL LETTER E -00E9; 0065 # é → e LATIN SMALL LETTER E WITH ACUTE → LATIN SMALL LETTER E -00EA; 0065 # ê → e LATIN SMALL LETTER E WITH CIRCUMFLEX → LATIN SMALL LETTER E -00EB; 0065 # ë → e LATIN SMALL LETTER E WITH DIAERESIS → LATIN SMALL LETTER E -0113; 0065 # ē → e LATIN SMALL LETTER E WITH MACRON → LATIN SMALL LETTER E -0115; 0065 # ĕ → e LATIN SMALL LETTER E WITH BREVE → LATIN SMALL LETTER E -0117; 0065 # ė → e LATIN SMALL LETTER E WITH DOT ABOVE → LATIN SMALL LETTER E -0119; 0065 # ę → e LATIN SMALL LETTER E WITH OGONEK → LATIN SMALL LETTER E -011B; 0065 # ě → e LATIN SMALL LETTER E WITH CARON → LATIN SMALL LETTER E -0205; 0065 # ȅ → e LATIN SMALL LETTER E WITH DOUBLE GRAVE → LATIN SMALL LETTER E -0207; 0065 # ȇ → e LATIN SMALL LETTER E WITH INVERTED BREVE → LATIN SMALL LETTER E -0229; 0065 # ȩ → e LATIN SMALL LETTER E WITH CEDILLA → LATIN SMALL LETTER E -1E15; 0065 # ḕ → e LATIN SMALL LETTER E WITH MACRON AND GRAVE → LATIN SMALL LETTER E -1E17; 0065 # ḗ → e LATIN SMALL LETTER E WITH MACRON AND ACUTE → LATIN SMALL LETTER E -1E19; 0065 # ḙ → e LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW → LATIN SMALL LETTER E -1E1B; 0065 # ḛ → e LATIN SMALL LETTER E WITH TILDE BELOW → LATIN SMALL LETTER E -1E1D; 0065 # ḝ → e LATIN SMALL LETTER E WITH CEDILLA AND BREVE → LATIN SMALL LETTER E -1EB9; 0065 # ẹ → e LATIN SMALL LETTER E WITH DOT BELOW → LATIN SMALL LETTER E -1EBB; 0065 # ẻ → e LATIN SMALL LETTER E WITH HOOK ABOVE → LATIN SMALL LETTER E -1EBD; 0065 # ẽ → e LATIN SMALL LETTER E WITH TILDE → LATIN SMALL LETTER E -1EBF; 0065 # ế → e LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE → LATIN SMALL LETTER E -1EC1; 0065 # ề → e LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE → LATIN SMALL LETTER E -1EC3; 0065 # ể → e LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE → LATIN SMALL LETTER E -1EC5; 0065 # ễ → e LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE → LATIN SMALL LETTER E -1EC7; 0065 # ệ → e LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW → LATIN SMALL LETTER E -0192; 0066 # ƒ → f LATIN SMALL LETTER F WITH HOOK → LATIN SMALL LETTER F -1E1F; 0066 # ḟ → f LATIN SMALL LETTER F WITH DOT ABOVE → LATIN SMALL LETTER F -011D; 0067 # ĝ → g LATIN SMALL LETTER G WITH CIRCUMFLEX → LATIN SMALL LETTER G -011F; 0067 # ğ → g LATIN SMALL LETTER G WITH BREVE → LATIN SMALL LETTER G -0121; 0067 # ġ → g LATIN SMALL LETTER G WITH DOT ABOVE → LATIN SMALL LETTER G -0123; 0067 # ģ → g LATIN SMALL LETTER G WITH CEDILLA → LATIN SMALL LETTER G -01E5; 0067 # ǥ → g LATIN SMALL LETTER G WITH STROKE → LATIN SMALL LETTER G -01E7; 0067 # ǧ → g LATIN SMALL LETTER G WITH CARON → LATIN SMALL LETTER G -01F5; 0067 # ǵ → g LATIN SMALL LETTER G WITH ACUTE → LATIN SMALL LETTER G -0260; 0067 # ɠ → g LATIN SMALL LETTER G WITH HOOK → LATIN SMALL LETTER G -1E21; 0067 # ḡ → g LATIN SMALL LETTER G WITH MACRON → LATIN SMALL LETTER G -0125; 0068 # ĥ → h LATIN SMALL LETTER H WITH CIRCUMFLEX → LATIN SMALL LETTER H -0127; 0068 # ħ → h LATIN SMALL LETTER H WITH STROKE → LATIN SMALL LETTER H -021F; 0068 # ȟ → h LATIN SMALL LETTER H WITH CARON → LATIN SMALL LETTER H -0266; 0068 # ɦ → h LATIN SMALL LETTER H WITH HOOK → LATIN SMALL LETTER H -1E23; 0068 # ḣ → h LATIN SMALL LETTER H WITH DOT ABOVE → LATIN SMALL LETTER H -1E25; 0068 # ḥ → h LATIN SMALL LETTER H WITH DOT BELOW → LATIN SMALL LETTER H -1E27; 0068 # ḧ → h LATIN SMALL LETTER H WITH DIAERESIS → LATIN SMALL LETTER H -1E29; 0068 # ḩ → h LATIN SMALL LETTER H WITH CEDILLA → LATIN SMALL LETTER H -1E2B; 0068 # ḫ → h LATIN SMALL LETTER H WITH BREVE BELOW → LATIN SMALL LETTER H -1E96; 0068 # ẖ → h LATIN SMALL LETTER H WITH LINE BELOW → LATIN SMALL LETTER H -00EC; 0069 # ì → i LATIN SMALL LETTER I WITH GRAVE → LATIN SMALL LETTER I -00ED; 0069 # í → i LATIN SMALL LETTER I WITH ACUTE → LATIN SMALL LETTER I -00EE; 0069 # î → i LATIN SMALL LETTER I WITH CIRCUMFLEX → LATIN SMALL LETTER I -00EF; 0069 # ï → i LATIN SMALL LETTER I WITH DIAERESIS → LATIN SMALL LETTER I -0129; 0069 # ĩ → i LATIN SMALL LETTER I WITH TILDE → LATIN SMALL LETTER I -012B; 0069 # ī → i LATIN SMALL LETTER I WITH MACRON → LATIN SMALL LETTER I -012D; 0069 # ĭ → i LATIN SMALL LETTER I WITH BREVE → LATIN SMALL LETTER I -012F; 0069 # į → i LATIN SMALL LETTER I WITH OGONEK → LATIN SMALL LETTER I -01D0; 0069 # ǐ → i LATIN SMALL LETTER I WITH CARON → LATIN SMALL LETTER I -0209; 0069 # ȉ → i LATIN SMALL LETTER I WITH DOUBLE GRAVE → LATIN SMALL LETTER I -020B; 0069 # ȋ → i LATIN SMALL LETTER I WITH INVERTED BREVE → LATIN SMALL LETTER I -0268; 0069 # ɨ → i LATIN SMALL LETTER I WITH STROKE → LATIN SMALL LETTER I -1E2D; 0069 # ḭ → i LATIN SMALL LETTER I WITH TILDE BELOW → LATIN SMALL LETTER I -1E2F; 0069 # ḯ → i LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE → LATIN SMALL LETTER I -1EC9; 0069 # ỉ → i LATIN SMALL LETTER I WITH HOOK ABOVE → LATIN SMALL LETTER I -1ECB; 0069 # ị → i LATIN SMALL LETTER I WITH DOT BELOW → LATIN SMALL LETTER I -0135; 006A # ĵ → j LATIN SMALL LETTER J WITH CIRCUMFLEX → LATIN SMALL LETTER J -01F0; 006A # ǰ → j LATIN SMALL LETTER J WITH CARON → LATIN SMALL LETTER J -029D; 006A # ʝ → j LATIN SMALL LETTER J WITH CROSSED-TAIL → LATIN SMALL LETTER J -0137; 006B # ķ → k LATIN SMALL LETTER K WITH CEDILLA → LATIN SMALL LETTER K -0199; 006B # ƙ → k LATIN SMALL LETTER K WITH HOOK → LATIN SMALL LETTER K -01E9; 006B # ǩ → k LATIN SMALL LETTER K WITH CARON → LATIN SMALL LETTER K -1E31; 006B # ḱ → k LATIN SMALL LETTER K WITH ACUTE → LATIN SMALL LETTER K -1E33; 006B # ḳ → k LATIN SMALL LETTER K WITH DOT BELOW → LATIN SMALL LETTER K -1E35; 006B # ḵ → k LATIN SMALL LETTER K WITH LINE BELOW → LATIN SMALL LETTER K -013A; 006C # ĺ → l LATIN SMALL LETTER L WITH ACUTE → LATIN SMALL LETTER L -013C; 006C # ļ → l LATIN SMALL LETTER L WITH CEDILLA → LATIN SMALL LETTER L -013E; 006C # ľ → l LATIN SMALL LETTER L WITH CARON → LATIN SMALL LETTER L -0140; 006C # ŀ → l LATIN SMALL LETTER L WITH MIDDLE DOT → LATIN SMALL LETTER L -0142; 006C # ł → l LATIN SMALL LETTER L WITH STROKE → LATIN SMALL LETTER L -019A; 006C # ƚ → l LATIN SMALL LETTER L WITH BAR → LATIN SMALL LETTER L -0234; 006C # ȴ → l LATIN SMALL LETTER L WITH CURL → LATIN SMALL LETTER L -026B; 006C # ɫ → l LATIN SMALL LETTER L WITH MIDDLE TILDE → LATIN SMALL LETTER L -026C; 006C # ɬ → l LATIN SMALL LETTER L WITH BELT → LATIN SMALL LETTER L -026D; 006C # ɭ → l LATIN SMALL LETTER L WITH RETROFLEX HOOK → LATIN SMALL LETTER L -1E37; 006C # ḷ → l LATIN SMALL LETTER L WITH DOT BELOW → LATIN SMALL LETTER L -1E39; 006C # ḹ → l LATIN SMALL LETTER L WITH DOT BELOW AND MACRON → LATIN SMALL LETTER L -1E3B; 006C # ḻ → l LATIN SMALL LETTER L WITH LINE BELOW → LATIN SMALL LETTER L -1E3D; 006C # ḽ → l LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW → LATIN SMALL LETTER L -0271; 006D # ɱ → m LATIN SMALL LETTER M WITH HOOK → LATIN SMALL LETTER M -1E3F; 006D # ḿ → m LATIN SMALL LETTER M WITH ACUTE → LATIN SMALL LETTER M -1E41; 006D # ṁ → m LATIN SMALL LETTER M WITH DOT ABOVE → LATIN SMALL LETTER M -1E43; 006D # ṃ → m LATIN SMALL LETTER M WITH DOT BELOW → LATIN SMALL LETTER M -00F1; 006E # ñ → n LATIN SMALL LETTER N WITH TILDE → LATIN SMALL LETTER N -0144; 006E # ń → n LATIN SMALL LETTER N WITH ACUTE → LATIN SMALL LETTER N -0146; 006E # ņ → n LATIN SMALL LETTER N WITH CEDILLA → LATIN SMALL LETTER N -0148; 006E # ň → n LATIN SMALL LETTER N WITH CARON → LATIN SMALL LETTER N -019E; 006E # ƞ → n LATIN SMALL LETTER N WITH LONG RIGHT LEG → LATIN SMALL LETTER N -01F9; 006E # ǹ → n LATIN SMALL LETTER N WITH GRAVE → LATIN SMALL LETTER N -0235; 006E # ȵ → n LATIN SMALL LETTER N WITH CURL → LATIN SMALL LETTER N -0272; 006E # ɲ → n LATIN SMALL LETTER N WITH LEFT HOOK → LATIN SMALL LETTER N -0273; 006E # ɳ → n LATIN SMALL LETTER N WITH RETROFLEX HOOK → LATIN SMALL LETTER N -1E45; 006E # ṅ → n LATIN SMALL LETTER N WITH DOT ABOVE → LATIN SMALL LETTER N -1E47; 006E # ṇ → n LATIN SMALL LETTER N WITH DOT BELOW → LATIN SMALL LETTER N -1E49; 006E # ṉ → n LATIN SMALL LETTER N WITH LINE BELOW → LATIN SMALL LETTER N -1E4B; 006E # ṋ → n LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW → LATIN SMALL LETTER N -00F2; 006F # ò → o LATIN SMALL LETTER O WITH GRAVE → LATIN SMALL LETTER O -00F3; 006F # ó → o LATIN SMALL LETTER O WITH ACUTE → LATIN SMALL LETTER O -00F4; 006F # ô → o LATIN SMALL LETTER O WITH CIRCUMFLEX → LATIN SMALL LETTER O -00F5; 006F # õ → o LATIN SMALL LETTER O WITH TILDE → LATIN SMALL LETTER O -00F6; 006F # ö → o LATIN SMALL LETTER O WITH DIAERESIS → LATIN SMALL LETTER O -00F8; 006F # ø → o LATIN SMALL LETTER O WITH STROKE → LATIN SMALL LETTER O -014D; 006F # ō → o LATIN SMALL LETTER O WITH MACRON → LATIN SMALL LETTER O -014F; 006F # ŏ → o LATIN SMALL LETTER O WITH BREVE → LATIN SMALL LETTER O -0151; 006F # ő → o LATIN SMALL LETTER O WITH DOUBLE ACUTE → LATIN SMALL LETTER O -01A1; 006F # ơ → o LATIN SMALL LETTER O WITH HORN → LATIN SMALL LETTER O -01D2; 006F # ǒ → o LATIN SMALL LETTER O WITH CARON → LATIN SMALL LETTER O -01EB; 006F # ǫ → o LATIN SMALL LETTER O WITH OGONEK → LATIN SMALL LETTER O -01ED; 006F # ǭ → o LATIN SMALL LETTER O WITH OGONEK AND MACRON → LATIN SMALL LETTER O -01FF; 006F # ǿ → o LATIN SMALL LETTER O WITH STROKE AND ACUTE → LATIN SMALL LETTER O -020D; 006F # ȍ → o LATIN SMALL LETTER O WITH DOUBLE GRAVE → LATIN SMALL LETTER O -020F; 006F # ȏ → o LATIN SMALL LETTER O WITH INVERTED BREVE → LATIN SMALL LETTER O -022B; 006F # ȫ → o LATIN SMALL LETTER O WITH DIAERESIS AND MACRON → LATIN SMALL LETTER O -022D; 006F # ȭ → o LATIN SMALL LETTER O WITH TILDE AND MACRON → LATIN SMALL LETTER O -022F; 006F # ȯ → o LATIN SMALL LETTER O WITH DOT ABOVE → LATIN SMALL LETTER O -0231; 006F # ȱ → o LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON → LATIN SMALL LETTER O -1E4D; 006F # ṍ → o LATIN SMALL LETTER O WITH TILDE AND ACUTE → LATIN SMALL LETTER O -1E4F; 006F # ṏ → o LATIN SMALL LETTER O WITH TILDE AND DIAERESIS → LATIN SMALL LETTER O -1E51; 006F # ṑ → o LATIN SMALL LETTER O WITH MACRON AND GRAVE → LATIN SMALL LETTER O -1E53; 006F # ṓ → o LATIN SMALL LETTER O WITH MACRON AND ACUTE → LATIN SMALL LETTER O -1ECD; 006F # ọ → o LATIN SMALL LETTER O WITH DOT BELOW → LATIN SMALL LETTER O -1ECF; 006F # ỏ → o LATIN SMALL LETTER O WITH HOOK ABOVE → LATIN SMALL LETTER O -1ED1; 006F # ố → o LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE → LATIN SMALL LETTER O -1ED3; 006F # ồ → o LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE → LATIN SMALL LETTER O -1ED5; 006F # ổ → o LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE → LATIN SMALL LETTER O -1ED7; 006F # ỗ → o LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE → LATIN SMALL LETTER O -1ED9; 006F # ộ → o LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW → LATIN SMALL LETTER O -1EDB; 006F # ớ → o LATIN SMALL LETTER O WITH HORN AND ACUTE → LATIN SMALL LETTER O -1EDD; 006F # ờ → o LATIN SMALL LETTER O WITH HORN AND GRAVE → LATIN SMALL LETTER O -1EDF; 006F # ở → o LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE → LATIN SMALL LETTER O -1EE1; 006F # ỡ → o LATIN SMALL LETTER O WITH HORN AND TILDE → LATIN SMALL LETTER O -1EE3; 006F # ợ → o LATIN SMALL LETTER O WITH HORN AND DOT BELOW → LATIN SMALL LETTER O -01A5; 0070 # ƥ → p LATIN SMALL LETTER P WITH HOOK → LATIN SMALL LETTER P -1E55; 0070 # ṕ → p LATIN SMALL LETTER P WITH ACUTE → LATIN SMALL LETTER P -1E57; 0070 # ṗ → p LATIN SMALL LETTER P WITH DOT ABOVE → LATIN SMALL LETTER P -02A0; 0071 # ʠ → q LATIN SMALL LETTER Q WITH HOOK → LATIN SMALL LETTER Q -0155; 0072 # ŕ → r LATIN SMALL LETTER R WITH ACUTE → LATIN SMALL LETTER R -0157; 0072 # ŗ → r LATIN SMALL LETTER R WITH CEDILLA → LATIN SMALL LETTER R -0159; 0072 # ř → r LATIN SMALL LETTER R WITH CARON → LATIN SMALL LETTER R -0211; 0072 # ȑ → r LATIN SMALL LETTER R WITH DOUBLE GRAVE → LATIN SMALL LETTER R -0213; 0072 # ȓ → r LATIN SMALL LETTER R WITH INVERTED BREVE → LATIN SMALL LETTER R -027C; 0072 # ɼ → r LATIN SMALL LETTER R WITH LONG LEG → LATIN SMALL LETTER R -027D; 0072 # ɽ → r LATIN SMALL LETTER R WITH TAIL → LATIN SMALL LETTER R -1E59; 0072 # ṙ → r LATIN SMALL LETTER R WITH DOT ABOVE → LATIN SMALL LETTER R -1E5B; 0072 # ṛ → r LATIN SMALL LETTER R WITH DOT BELOW → LATIN SMALL LETTER R -1E5D; 0072 # ṝ → r LATIN SMALL LETTER R WITH DOT BELOW AND MACRON → LATIN SMALL LETTER R -1E5F; 0072 # ṟ → r LATIN SMALL LETTER R WITH LINE BELOW → LATIN SMALL LETTER R -015B; 0073 # ś → s LATIN SMALL LETTER S WITH ACUTE → LATIN SMALL LETTER S -015D; 0073 # ŝ → s LATIN SMALL LETTER S WITH CIRCUMFLEX → LATIN SMALL LETTER S -015F; 0073 # ş → s LATIN SMALL LETTER S WITH CEDILLA → LATIN SMALL LETTER S -0161; 0073 # š → s LATIN SMALL LETTER S WITH CARON → LATIN SMALL LETTER S -0219; 0073 # ș → s LATIN SMALL LETTER S WITH COMMA BELOW → LATIN SMALL LETTER S -0282; 0073 # ʂ → s LATIN SMALL LETTER S WITH HOOK → LATIN SMALL LETTER S -1E61; 0073 # ṡ → s LATIN SMALL LETTER S WITH DOT ABOVE → LATIN SMALL LETTER S -1E63; 0073 # ṣ → s LATIN SMALL LETTER S WITH DOT BELOW → LATIN SMALL LETTER S -1E65; 0073 # ṥ → s LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE → LATIN SMALL LETTER S -1E67; 0073 # ṧ → s LATIN SMALL LETTER S WITH CARON AND DOT ABOVE → LATIN SMALL LETTER S -1E69; 0073 # ṩ → s LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE → LATIN SMALL LETTER S -0163; 0074 # ţ → t LATIN SMALL LETTER T WITH CEDILLA → LATIN SMALL LETTER T -0165; 0074 # ť → t LATIN SMALL LETTER T WITH CARON → LATIN SMALL LETTER T -0167; 0074 # ŧ → t LATIN SMALL LETTER T WITH STROKE → LATIN SMALL LETTER T -01AB; 0074 # ƫ → t LATIN SMALL LETTER T WITH PALATAL HOOK → LATIN SMALL LETTER T -01AD; 0074 # ƭ → t LATIN SMALL LETTER T WITH HOOK → LATIN SMALL LETTER T -021B; 0074 # ț → t LATIN SMALL LETTER T WITH COMMA BELOW → LATIN SMALL LETTER T -0236; 0074 # ȶ → t LATIN SMALL LETTER T WITH CURL → LATIN SMALL LETTER T -0288; 0074 # ʈ → t LATIN SMALL LETTER T WITH RETROFLEX HOOK → LATIN SMALL LETTER T -1E6B; 0074 # ṫ → t LATIN SMALL LETTER T WITH DOT ABOVE → LATIN SMALL LETTER T -1E6D; 0074 # ṭ → t LATIN SMALL LETTER T WITH DOT BELOW → LATIN SMALL LETTER T -1E6F; 0074 # ṯ → t LATIN SMALL LETTER T WITH LINE BELOW → LATIN SMALL LETTER T -1E71; 0074 # ṱ → t LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW → LATIN SMALL LETTER T -1E97; 0074 # ẗ → t LATIN SMALL LETTER T WITH DIAERESIS → LATIN SMALL LETTER T -00F9; 0075 # ù → u LATIN SMALL LETTER U WITH GRAVE → LATIN SMALL LETTER U -00FA; 0075 # ú → u LATIN SMALL LETTER U WITH ACUTE → LATIN SMALL LETTER U -00FB; 0075 # û → u LATIN SMALL LETTER U WITH CIRCUMFLEX → LATIN SMALL LETTER U -00FC; 0075 # ü → u LATIN SMALL LETTER U WITH DIAERESIS → LATIN SMALL LETTER U -0169; 0075 # ũ → u LATIN SMALL LETTER U WITH TILDE → LATIN SMALL LETTER U -016B; 0075 # ū → u LATIN SMALL LETTER U WITH MACRON → LATIN SMALL LETTER U -016D; 0075 # ŭ → u LATIN SMALL LETTER U WITH BREVE → LATIN SMALL LETTER U -016F; 0075 # ů → u LATIN SMALL LETTER U WITH RING ABOVE → LATIN SMALL LETTER U -0171; 0075 # ű → u LATIN SMALL LETTER U WITH DOUBLE ACUTE → LATIN SMALL LETTER U -0173; 0075 # ų → u LATIN SMALL LETTER U WITH OGONEK → LATIN SMALL LETTER U -01B0; 0075 # ư → u LATIN SMALL LETTER U WITH HORN → LATIN SMALL LETTER U -01D4; 0075 # ǔ → u LATIN SMALL LETTER U WITH CARON → LATIN SMALL LETTER U -01D6; 0075 # ǖ → u LATIN SMALL LETTER U WITH DIAERESIS AND MACRON → LATIN SMALL LETTER U -01D8; 0075 # ǘ → u LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE → LATIN SMALL LETTER U -01DA; 0075 # ǚ → u LATIN SMALL LETTER U WITH DIAERESIS AND CARON → LATIN SMALL LETTER U -01DC; 0075 # ǜ → u LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE → LATIN SMALL LETTER U -0215; 0075 # ȕ → u LATIN SMALL LETTER U WITH DOUBLE GRAVE → LATIN SMALL LETTER U -0217; 0075 # ȗ → u LATIN SMALL LETTER U WITH INVERTED BREVE → LATIN SMALL LETTER U -1E73; 0075 # ṳ → u LATIN SMALL LETTER U WITH DIAERESIS BELOW → LATIN SMALL LETTER U -1E75; 0075 # ṵ → u LATIN SMALL LETTER U WITH TILDE BELOW → LATIN SMALL LETTER U -1E77; 0075 # ṷ → u LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW → LATIN SMALL LETTER U -1E79; 0075 # ṹ → u LATIN SMALL LETTER U WITH TILDE AND ACUTE → LATIN SMALL LETTER U -1E7B; 0075 # ṻ → u LATIN SMALL LETTER U WITH MACRON AND DIAERESIS → LATIN SMALL LETTER U -1EE5; 0075 # ụ → u LATIN SMALL LETTER U WITH DOT BELOW → LATIN SMALL LETTER U -1EE7; 0075 # ủ → u LATIN SMALL LETTER U WITH HOOK ABOVE → LATIN SMALL LETTER U -1EE9; 0075 # ứ → u LATIN SMALL LETTER U WITH HORN AND ACUTE → LATIN SMALL LETTER U -1EEB; 0075 # ừ → u LATIN SMALL LETTER U WITH HORN AND GRAVE → LATIN SMALL LETTER U -1EED; 0075 # ử → u LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE → LATIN SMALL LETTER U -1EEF; 0075 # ữ → u LATIN SMALL LETTER U WITH HORN AND TILDE → LATIN SMALL LETTER U -1EF1; 0075 # ự → u LATIN SMALL LETTER U WITH HORN AND DOT BELOW → LATIN SMALL LETTER U -028B; 0076 # ʋ → v LATIN SMALL LETTER V WITH HOOK → LATIN SMALL LETTER V -1E7D; 0076 # ṽ → v LATIN SMALL LETTER V WITH TILDE → LATIN SMALL LETTER V -1E7F; 0076 # ṿ → v LATIN SMALL LETTER V WITH DOT BELOW → LATIN SMALL LETTER V -0175; 0077 # ŵ → w LATIN SMALL LETTER W WITH CIRCUMFLEX → LATIN SMALL LETTER W -1E81; 0077 # ẁ → w LATIN SMALL LETTER W WITH GRAVE → LATIN SMALL LETTER W -1E83; 0077 # ẃ → w LATIN SMALL LETTER W WITH ACUTE → LATIN SMALL LETTER W -1E85; 0077 # ẅ → w LATIN SMALL LETTER W WITH DIAERESIS → LATIN SMALL LETTER W -1E87; 0077 # ẇ → w LATIN SMALL LETTER W WITH DOT ABOVE → LATIN SMALL LETTER W -1E89; 0077 # ẉ → w LATIN SMALL LETTER W WITH DOT BELOW → LATIN SMALL LETTER W -1E98; 0077 # ẘ → w LATIN SMALL LETTER W WITH RING ABOVE → LATIN SMALL LETTER W -1E8B; 0078 # ẋ → x LATIN SMALL LETTER X WITH DOT ABOVE → LATIN SMALL LETTER X -1E8D; 0078 # ẍ → x LATIN SMALL LETTER X WITH DIAERESIS → LATIN SMALL LETTER X -00FD; 0079 # ý → y LATIN SMALL LETTER Y WITH ACUTE → LATIN SMALL LETTER Y -00FF; 0079 # ÿ → y LATIN SMALL LETTER Y WITH DIAERESIS → LATIN SMALL LETTER Y -0177; 0079 # ŷ → y LATIN SMALL LETTER Y WITH CIRCUMFLEX → LATIN SMALL LETTER Y -01B4; 0079 # ƴ → y LATIN SMALL LETTER Y WITH HOOK → LATIN SMALL LETTER Y -0233; 0079 # ȳ → y LATIN SMALL LETTER Y WITH MACRON → LATIN SMALL LETTER Y -1E8F; 0079 # ẏ → y LATIN SMALL LETTER Y WITH DOT ABOVE → LATIN SMALL LETTER Y -1E99; 0079 # ẙ → y LATIN SMALL LETTER Y WITH RING ABOVE → LATIN SMALL LETTER Y -1EF3; 0079 # ỳ → y LATIN SMALL LETTER Y WITH GRAVE → LATIN SMALL LETTER Y -1EF5; 0079 # ỵ → y LATIN SMALL LETTER Y WITH DOT BELOW → LATIN SMALL LETTER Y -1EF7; 0079 # ỷ → y LATIN SMALL LETTER Y WITH HOOK ABOVE → LATIN SMALL LETTER Y -1EF9; 0079 # ỹ → y LATIN SMALL LETTER Y WITH TILDE → LATIN SMALL LETTER Y -017A; 007A # ź → z LATIN SMALL LETTER Z WITH ACUTE → LATIN SMALL LETTER Z -017C; 007A # ż → z LATIN SMALL LETTER Z WITH DOT ABOVE → LATIN SMALL LETTER Z -017E; 007A # ž → z LATIN SMALL LETTER Z WITH CARON → LATIN SMALL LETTER Z -01B6; 007A # ƶ → z LATIN SMALL LETTER Z WITH STROKE → LATIN SMALL LETTER Z -0225; 007A # ȥ → z LATIN SMALL LETTER Z WITH HOOK → LATIN SMALL LETTER Z -0290; 007A # ʐ → z LATIN SMALL LETTER Z WITH RETROFLEX HOOK → LATIN SMALL LETTER Z -0291; 007A # ʑ → z LATIN SMALL LETTER Z WITH CURL → LATIN SMALL LETTER Z -1E91; 007A # ẑ → z LATIN SMALL LETTER Z WITH CIRCUMFLEX → LATIN SMALL LETTER Z -1E93; 007A # ẓ → z LATIN SMALL LETTER Z WITH DOT BELOW → LATIN SMALL LETTER Z -1E95; 007A # ẕ → z LATIN SMALL LETTER Z WITH LINE BELOW → LATIN SMALL LETTER Z -01E2; 00C6 # Ǣ → Æ LATIN CAPITAL LETTER AE WITH MACRON → LATIN CAPITAL LETTER AE -01FC; 00C6 # Ǽ → Æ LATIN CAPITAL LETTER AE WITH ACUTE → LATIN CAPITAL LETTER AE -01E3; 00E6 # ǣ → æ LATIN SMALL LETTER AE WITH MACRON → LATIN SMALL LETTER AE -01FD; 00E6 # ǽ → æ LATIN SMALL LETTER AE WITH ACUTE → LATIN SMALL LETTER AE -1E9B; 017F # ẛ → ſ LATIN SMALL LETTER LONG S WITH DOT ABOVE → LATIN SMALL LETTER LONG S -01EE; 01B7 # Ǯ → Ʒ LATIN CAPITAL LETTER EZH WITH CARON → LATIN CAPITAL LETTER EZH -025A; 0259 # ɚ → ə LATIN SMALL LETTER SCHWA WITH HOOK → LATIN SMALL LETTER SCHWA -0286; 0283 # ʆ → ʃ LATIN SMALL LETTER ESH WITH CURL → LATIN SMALL LETTER ESH -01BA; 0292 # ƺ → ʒ LATIN SMALL LETTER EZH WITH TAIL → LATIN SMALL LETTER EZH -01EF; 0292 # ǯ → ʒ LATIN SMALL LETTER EZH WITH CARON → LATIN SMALL LETTER EZH -0293; 0292 # ʓ → ʒ LATIN SMALL LETTER EZH WITH CURL → LATIN SMALL LETTER EZH -0386; 0391 # Ά → Α GREEK CAPITAL LETTER ALPHA WITH TONOS → GREEK CAPITAL LETTER ALPHA -1F08; 0391 # Ἀ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI → GREEK CAPITAL LETTER ALPHA -1F09; 0391 # Ἁ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA → GREEK CAPITAL LETTER ALPHA -1F0A; 0391 # Ἂ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA → GREEK CAPITAL LETTER ALPHA -1F0B; 0391 # Ἃ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA → GREEK CAPITAL LETTER ALPHA -1F0C; 0391 # Ἄ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA → GREEK CAPITAL LETTER ALPHA -1F0D; 0391 # Ἅ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA → GREEK CAPITAL LETTER ALPHA -1F0E; 0391 # Ἆ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI → GREEK CAPITAL LETTER ALPHA -1F0F; 0391 # Ἇ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI → GREEK CAPITAL LETTER ALPHA -1F88; 0391 # ᾈ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1F89; 0391 # ᾉ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1F8A; 0391 # ᾊ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1F8B; 0391 # ᾋ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1F8C; 0391 # ᾌ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1F8D; 0391 # ᾍ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1F8E; 0391 # ᾎ → Α GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1F8F; 0391 # ᾏ → Α GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -1FB8; 0391 # Ᾰ → Α GREEK CAPITAL LETTER ALPHA WITH VRACHY → GREEK CAPITAL LETTER ALPHA -1FB9; 0391 # Ᾱ → Α GREEK CAPITAL LETTER ALPHA WITH MACRON → GREEK CAPITAL LETTER ALPHA -1FBA; 0391 # Ὰ → Α GREEK CAPITAL LETTER ALPHA WITH VARIA → GREEK CAPITAL LETTER ALPHA -1FBB; 0391 # Ά → Α GREEK CAPITAL LETTER ALPHA WITH OXIA → GREEK CAPITAL LETTER ALPHA -1FBC; 0391 # ᾼ → Α GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI → GREEK CAPITAL LETTER ALPHA -0388; 0395 # Έ → Ε GREEK CAPITAL LETTER EPSILON WITH TONOS → GREEK CAPITAL LETTER EPSILON -1F18; 0395 # Ἐ → Ε GREEK CAPITAL LETTER EPSILON WITH PSILI → GREEK CAPITAL LETTER EPSILON -1F19; 0395 # Ἑ → Ε GREEK CAPITAL LETTER EPSILON WITH DASIA → GREEK CAPITAL LETTER EPSILON -1F1A; 0395 # Ἒ → Ε GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA → GREEK CAPITAL LETTER EPSILON -1F1B; 0395 # Ἓ → Ε GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA → GREEK CAPITAL LETTER EPSILON -1F1C; 0395 # Ἔ → Ε GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA → GREEK CAPITAL LETTER EPSILON -1F1D; 0395 # Ἕ → Ε GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA → GREEK CAPITAL LETTER EPSILON -1FC8; 0395 # Ὲ → Ε GREEK CAPITAL LETTER EPSILON WITH VARIA → GREEK CAPITAL LETTER EPSILON -1FC9; 0395 # Έ → Ε GREEK CAPITAL LETTER EPSILON WITH OXIA → GREEK CAPITAL LETTER EPSILON -0389; 0397 # Ή → Η GREEK CAPITAL LETTER ETA WITH TONOS → GREEK CAPITAL LETTER ETA -1F28; 0397 # Ἠ → Η GREEK CAPITAL LETTER ETA WITH PSILI → GREEK CAPITAL LETTER ETA -1F29; 0397 # Ἡ → Η GREEK CAPITAL LETTER ETA WITH DASIA → GREEK CAPITAL LETTER ETA -1F2A; 0397 # Ἢ → Η GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA → GREEK CAPITAL LETTER ETA -1F2B; 0397 # Ἣ → Η GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA → GREEK CAPITAL LETTER ETA -1F2C; 0397 # Ἤ → Η GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA → GREEK CAPITAL LETTER ETA -1F2D; 0397 # Ἥ → Η GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA → GREEK CAPITAL LETTER ETA -1F2E; 0397 # Ἦ → Η GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI → GREEK CAPITAL LETTER ETA -1F2F; 0397 # Ἧ → Η GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI → GREEK CAPITAL LETTER ETA -1F98; 0397 # ᾘ → Η GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1F99; 0397 # ᾙ → Η GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1F9A; 0397 # ᾚ → Η GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1F9B; 0397 # ᾛ → Η GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1F9C; 0397 # ᾜ → Η GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1F9D; 0397 # ᾝ → Η GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1F9E; 0397 # ᾞ → Η GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1F9F; 0397 # ᾟ → Η GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -1FCA; 0397 # Ὴ → Η GREEK CAPITAL LETTER ETA WITH VARIA → GREEK CAPITAL LETTER ETA -1FCB; 0397 # Ή → Η GREEK CAPITAL LETTER ETA WITH OXIA → GREEK CAPITAL LETTER ETA -1FCC; 0397 # ῌ → Η GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI → GREEK CAPITAL LETTER ETA -038A; 0399 # Ί → Ι GREEK CAPITAL LETTER IOTA WITH TONOS → GREEK CAPITAL LETTER IOTA -03AA; 0399 # Ϊ → Ι GREEK CAPITAL LETTER IOTA WITH DIALYTIKA → GREEK CAPITAL LETTER IOTA -1F38; 0399 # Ἰ → Ι GREEK CAPITAL LETTER IOTA WITH PSILI → GREEK CAPITAL LETTER IOTA -1F39; 0399 # Ἱ → Ι GREEK CAPITAL LETTER IOTA WITH DASIA → GREEK CAPITAL LETTER IOTA -1F3A; 0399 # Ἲ → Ι GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA → GREEK CAPITAL LETTER IOTA -1F3B; 0399 # Ἳ → Ι GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA → GREEK CAPITAL LETTER IOTA -1F3C; 0399 # Ἴ → Ι GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA → GREEK CAPITAL LETTER IOTA -1F3D; 0399 # Ἵ → Ι GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA → GREEK CAPITAL LETTER IOTA -1F3E; 0399 # Ἶ → Ι GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI → GREEK CAPITAL LETTER IOTA -1F3F; 0399 # Ἷ → Ι GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI → GREEK CAPITAL LETTER IOTA -1FD8; 0399 # Ῐ → Ι GREEK CAPITAL LETTER IOTA WITH VRACHY → GREEK CAPITAL LETTER IOTA -1FD9; 0399 # Ῑ → Ι GREEK CAPITAL LETTER IOTA WITH MACRON → GREEK CAPITAL LETTER IOTA -1FDA; 0399 # Ὶ → Ι GREEK CAPITAL LETTER IOTA WITH VARIA → GREEK CAPITAL LETTER IOTA -1FDB; 0399 # Ί → Ι GREEK CAPITAL LETTER IOTA WITH OXIA → GREEK CAPITAL LETTER IOTA -038C; 039F # Ό → Ο GREEK CAPITAL LETTER OMICRON WITH TONOS → GREEK CAPITAL LETTER OMICRON -1F48; 039F # Ὀ → Ο GREEK CAPITAL LETTER OMICRON WITH PSILI → GREEK CAPITAL LETTER OMICRON -1F49; 039F # Ὁ → Ο GREEK CAPITAL LETTER OMICRON WITH DASIA → GREEK CAPITAL LETTER OMICRON -1F4A; 039F # Ὂ → Ο GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA → GREEK CAPITAL LETTER OMICRON -1F4B; 039F # Ὃ → Ο GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA → GREEK CAPITAL LETTER OMICRON -1F4C; 039F # Ὄ → Ο GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA → GREEK CAPITAL LETTER OMICRON -1F4D; 039F # Ὅ → Ο GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA → GREEK CAPITAL LETTER OMICRON -1FF8; 039F # Ὸ → Ο GREEK CAPITAL LETTER OMICRON WITH VARIA → GREEK CAPITAL LETTER OMICRON -1FF9; 039F # Ό → Ο GREEK CAPITAL LETTER OMICRON WITH OXIA → GREEK CAPITAL LETTER OMICRON -1FEC; 03A1 # Ῥ → Ρ GREEK CAPITAL LETTER RHO WITH DASIA → GREEK CAPITAL LETTER RHO -038E; 03A5 # Ύ → Υ GREEK CAPITAL LETTER UPSILON WITH TONOS → GREEK CAPITAL LETTER UPSILON -03AB; 03A5 # Ϋ → Υ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA → GREEK CAPITAL LETTER UPSILON -1F59; 03A5 # Ὑ → Υ GREEK CAPITAL LETTER UPSILON WITH DASIA → GREEK CAPITAL LETTER UPSILON -1F5B; 03A5 # Ὓ → Υ GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA → GREEK CAPITAL LETTER UPSILON -1F5D; 03A5 # Ὕ → Υ GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA → GREEK CAPITAL LETTER UPSILON -1F5F; 03A5 # Ὗ → Υ GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI → GREEK CAPITAL LETTER UPSILON -1FE8; 03A5 # Ῠ → Υ GREEK CAPITAL LETTER UPSILON WITH VRACHY → GREEK CAPITAL LETTER UPSILON -1FE9; 03A5 # Ῡ → Υ GREEK CAPITAL LETTER UPSILON WITH MACRON → GREEK CAPITAL LETTER UPSILON -1FEA; 03A5 # Ὺ → Υ GREEK CAPITAL LETTER UPSILON WITH VARIA → GREEK CAPITAL LETTER UPSILON -1FEB; 03A5 # Ύ → Υ GREEK CAPITAL LETTER UPSILON WITH OXIA → GREEK CAPITAL LETTER UPSILON -038F; 03A9 # Ώ → Ω GREEK CAPITAL LETTER OMEGA WITH TONOS → GREEK CAPITAL LETTER OMEGA -1F68; 03A9 # Ὠ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI → GREEK CAPITAL LETTER OMEGA -1F69; 03A9 # Ὡ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA → GREEK CAPITAL LETTER OMEGA -1F6A; 03A9 # Ὢ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA → GREEK CAPITAL LETTER OMEGA -1F6B; 03A9 # Ὣ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA → GREEK CAPITAL LETTER OMEGA -1F6C; 03A9 # Ὤ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA → GREEK CAPITAL LETTER OMEGA -1F6D; 03A9 # Ὥ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA → GREEK CAPITAL LETTER OMEGA -1F6E; 03A9 # Ὦ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI → GREEK CAPITAL LETTER OMEGA -1F6F; 03A9 # Ὧ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI → GREEK CAPITAL LETTER OMEGA -1FA8; 03A9 # ᾨ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FA9; 03A9 # ᾩ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FAA; 03A9 # ᾪ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FAB; 03A9 # ᾫ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FAC; 03A9 # ᾬ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FAD; 03A9 # ᾭ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FAE; 03A9 # ᾮ → Ω GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FAF; 03A9 # ᾯ → Ω GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -1FFA; 03A9 # Ὼ → Ω GREEK CAPITAL LETTER OMEGA WITH VARIA → GREEK CAPITAL LETTER OMEGA -1FFB; 03A9 # Ώ → Ω GREEK CAPITAL LETTER OMEGA WITH OXIA → GREEK CAPITAL LETTER OMEGA -1FFC; 03A9 # ῼ → Ω GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI → GREEK CAPITAL LETTER OMEGA -03AC; 03B1 # ά → α GREEK SMALL LETTER ALPHA WITH TONOS → GREEK SMALL LETTER ALPHA -1F00; 03B1 # ἀ → α GREEK SMALL LETTER ALPHA WITH PSILI → GREEK SMALL LETTER ALPHA -1F01; 03B1 # ἁ → α GREEK SMALL LETTER ALPHA WITH DASIA → GREEK SMALL LETTER ALPHA -1F02; 03B1 # ἂ → α GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA → GREEK SMALL LETTER ALPHA -1F03; 03B1 # ἃ → α GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA → GREEK SMALL LETTER ALPHA -1F04; 03B1 # ἄ → α GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA → GREEK SMALL LETTER ALPHA -1F05; 03B1 # ἅ → α GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA → GREEK SMALL LETTER ALPHA -1F06; 03B1 # ἆ → α GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI → GREEK SMALL LETTER ALPHA -1F07; 03B1 # ἇ → α GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI → GREEK SMALL LETTER ALPHA -1F70; 03B1 # ὰ → α GREEK SMALL LETTER ALPHA WITH VARIA → GREEK SMALL LETTER ALPHA -1F71; 03B1 # ά → α GREEK SMALL LETTER ALPHA WITH OXIA → GREEK SMALL LETTER ALPHA -1F80; 03B1 # ᾀ → α GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1F81; 03B1 # ᾁ → α GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1F82; 03B1 # ᾂ → α GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1F83; 03B1 # ᾃ → α GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1F84; 03B1 # ᾄ → α GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1F85; 03B1 # ᾅ → α GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1F86; 03B1 # ᾆ → α GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1F87; 03B1 # ᾇ → α GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1FB0; 03B1 # ᾰ → α GREEK SMALL LETTER ALPHA WITH VRACHY → GREEK SMALL LETTER ALPHA -1FB1; 03B1 # ᾱ → α GREEK SMALL LETTER ALPHA WITH MACRON → GREEK SMALL LETTER ALPHA -1FB2; 03B1 # ᾲ → α GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1FB3; 03B1 # ᾳ → α GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1FB4; 03B1 # ᾴ → α GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -1FB6; 03B1 # ᾶ → α GREEK SMALL LETTER ALPHA WITH PERISPOMENI → GREEK SMALL LETTER ALPHA -1FB7; 03B1 # ᾷ → α GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER ALPHA -03AD; 03B5 # έ → ε GREEK SMALL LETTER EPSILON WITH TONOS → GREEK SMALL LETTER EPSILON -1F10; 03B5 # ἐ → ε GREEK SMALL LETTER EPSILON WITH PSILI → GREEK SMALL LETTER EPSILON -1F11; 03B5 # ἑ → ε GREEK SMALL LETTER EPSILON WITH DASIA → GREEK SMALL LETTER EPSILON -1F12; 03B5 # ἒ → ε GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA → GREEK SMALL LETTER EPSILON -1F13; 03B5 # ἓ → ε GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA → GREEK SMALL LETTER EPSILON -1F14; 03B5 # ἔ → ε GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA → GREEK SMALL LETTER EPSILON -1F15; 03B5 # ἕ → ε GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA → GREEK SMALL LETTER EPSILON -1F72; 03B5 # ὲ → ε GREEK SMALL LETTER EPSILON WITH VARIA → GREEK SMALL LETTER EPSILON -1F73; 03B5 # έ → ε GREEK SMALL LETTER EPSILON WITH OXIA → GREEK SMALL LETTER EPSILON -03AE; 03B7 # ή → η GREEK SMALL LETTER ETA WITH TONOS → GREEK SMALL LETTER ETA -1F20; 03B7 # ἠ → η GREEK SMALL LETTER ETA WITH PSILI → GREEK SMALL LETTER ETA -1F21; 03B7 # ἡ → η GREEK SMALL LETTER ETA WITH DASIA → GREEK SMALL LETTER ETA -1F22; 03B7 # ἢ → η GREEK SMALL LETTER ETA WITH PSILI AND VARIA → GREEK SMALL LETTER ETA -1F23; 03B7 # ἣ → η GREEK SMALL LETTER ETA WITH DASIA AND VARIA → GREEK SMALL LETTER ETA -1F24; 03B7 # ἤ → η GREEK SMALL LETTER ETA WITH PSILI AND OXIA → GREEK SMALL LETTER ETA -1F25; 03B7 # ἥ → η GREEK SMALL LETTER ETA WITH DASIA AND OXIA → GREEK SMALL LETTER ETA -1F26; 03B7 # ἦ → η GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI → GREEK SMALL LETTER ETA -1F27; 03B7 # ἧ → η GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI → GREEK SMALL LETTER ETA -1F74; 03B7 # ὴ → η GREEK SMALL LETTER ETA WITH VARIA → GREEK SMALL LETTER ETA -1F75; 03B7 # ή → η GREEK SMALL LETTER ETA WITH OXIA → GREEK SMALL LETTER ETA -1F90; 03B7 # ᾐ → η GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1F91; 03B7 # ᾑ → η GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1F92; 03B7 # ᾒ → η GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1F93; 03B7 # ᾓ → η GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1F94; 03B7 # ᾔ → η GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1F95; 03B7 # ᾕ → η GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1F96; 03B7 # ᾖ → η GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1F97; 03B7 # ᾗ → η GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1FC2; 03B7 # ῂ → η GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1FC3; 03B7 # ῃ → η GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1FC4; 03B7 # ῄ → η GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -1FC6; 03B7 # ῆ → η GREEK SMALL LETTER ETA WITH PERISPOMENI → GREEK SMALL LETTER ETA -1FC7; 03B7 # ῇ → η GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER ETA -0390; 03B9 # ΐ → ι GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS → GREEK SMALL LETTER IOTA -03AF; 03B9 # ί → ι GREEK SMALL LETTER IOTA WITH TONOS → GREEK SMALL LETTER IOTA -03CA; 03B9 # ϊ → ι GREEK SMALL LETTER IOTA WITH DIALYTIKA → GREEK SMALL LETTER IOTA -1F30; 03B9 # ἰ → ι GREEK SMALL LETTER IOTA WITH PSILI → GREEK SMALL LETTER IOTA -1F31; 03B9 # ἱ → ι GREEK SMALL LETTER IOTA WITH DASIA → GREEK SMALL LETTER IOTA -1F32; 03B9 # ἲ → ι GREEK SMALL LETTER IOTA WITH PSILI AND VARIA → GREEK SMALL LETTER IOTA -1F33; 03B9 # ἳ → ι GREEK SMALL LETTER IOTA WITH DASIA AND VARIA → GREEK SMALL LETTER IOTA -1F34; 03B9 # ἴ → ι GREEK SMALL LETTER IOTA WITH PSILI AND OXIA → GREEK SMALL LETTER IOTA -1F35; 03B9 # ἵ → ι GREEK SMALL LETTER IOTA WITH DASIA AND OXIA → GREEK SMALL LETTER IOTA -1F36; 03B9 # ἶ → ι GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI → GREEK SMALL LETTER IOTA -1F37; 03B9 # ἷ → ι GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI → GREEK SMALL LETTER IOTA -1F76; 03B9 # ὶ → ι GREEK SMALL LETTER IOTA WITH VARIA → GREEK SMALL LETTER IOTA -1F77; 03B9 # ί → ι GREEK SMALL LETTER IOTA WITH OXIA → GREEK SMALL LETTER IOTA -1FD0; 03B9 # ῐ → ι GREEK SMALL LETTER IOTA WITH VRACHY → GREEK SMALL LETTER IOTA -1FD1; 03B9 # ῑ → ι GREEK SMALL LETTER IOTA WITH MACRON → GREEK SMALL LETTER IOTA -1FD2; 03B9 # ῒ → ι GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA → GREEK SMALL LETTER IOTA -1FD3; 03B9 # ΐ → ι GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA → GREEK SMALL LETTER IOTA -1FD6; 03B9 # ῖ → ι GREEK SMALL LETTER IOTA WITH PERISPOMENI → GREEK SMALL LETTER IOTA -1FD7; 03B9 # ῗ → ι GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI → GREEK SMALL LETTER IOTA -03CC; 03BF # ό → ο GREEK SMALL LETTER OMICRON WITH TONOS → GREEK SMALL LETTER OMICRON -1F40; 03BF # ὀ → ο GREEK SMALL LETTER OMICRON WITH PSILI → GREEK SMALL LETTER OMICRON -1F41; 03BF # ὁ → ο GREEK SMALL LETTER OMICRON WITH DASIA → GREEK SMALL LETTER OMICRON -1F42; 03BF # ὂ → ο GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA → GREEK SMALL LETTER OMICRON -1F43; 03BF # ὃ → ο GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA → GREEK SMALL LETTER OMICRON -1F44; 03BF # ὄ → ο GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA → GREEK SMALL LETTER OMICRON -1F45; 03BF # ὅ → ο GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA → GREEK SMALL LETTER OMICRON -1F78; 03BF # ὸ → ο GREEK SMALL LETTER OMICRON WITH VARIA → GREEK SMALL LETTER OMICRON -1F79; 03BF # ό → ο GREEK SMALL LETTER OMICRON WITH OXIA → GREEK SMALL LETTER OMICRON -1FE4; 03C1 # ῤ → ρ GREEK SMALL LETTER RHO WITH PSILI → GREEK SMALL LETTER RHO -1FE5; 03C1 # ῥ → ρ GREEK SMALL LETTER RHO WITH DASIA → GREEK SMALL LETTER RHO -03B0; 03C5 # ΰ → υ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS → GREEK SMALL LETTER UPSILON -03CB; 03C5 # ϋ → υ GREEK SMALL LETTER UPSILON WITH DIALYTIKA → GREEK SMALL LETTER UPSILON -03CD; 03C5 # ύ → υ GREEK SMALL LETTER UPSILON WITH TONOS → GREEK SMALL LETTER UPSILON -1F50; 03C5 # ὐ → υ GREEK SMALL LETTER UPSILON WITH PSILI → GREEK SMALL LETTER UPSILON -1F51; 03C5 # ὑ → υ GREEK SMALL LETTER UPSILON WITH DASIA → GREEK SMALL LETTER UPSILON -1F52; 03C5 # ὒ → υ GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA → GREEK SMALL LETTER UPSILON -1F53; 03C5 # ὓ → υ GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA → GREEK SMALL LETTER UPSILON -1F54; 03C5 # ὔ → υ GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA → GREEK SMALL LETTER UPSILON -1F55; 03C5 # ὕ → υ GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA → GREEK SMALL LETTER UPSILON -1F56; 03C5 # ὖ → υ GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI → GREEK SMALL LETTER UPSILON -1F57; 03C5 # ὗ → υ GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI → GREEK SMALL LETTER UPSILON -1F7A; 03C5 # ὺ → υ GREEK SMALL LETTER UPSILON WITH VARIA → GREEK SMALL LETTER UPSILON -1F7B; 03C5 # ύ → υ GREEK SMALL LETTER UPSILON WITH OXIA → GREEK SMALL LETTER UPSILON -1FE0; 03C5 # ῠ → υ GREEK SMALL LETTER UPSILON WITH VRACHY → GREEK SMALL LETTER UPSILON -1FE1; 03C5 # ῡ → υ GREEK SMALL LETTER UPSILON WITH MACRON → GREEK SMALL LETTER UPSILON -1FE2; 03C5 # ῢ → υ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA → GREEK SMALL LETTER UPSILON -1FE3; 03C5 # ΰ → υ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA → GREEK SMALL LETTER UPSILON -1FE6; 03C5 # ῦ → υ GREEK SMALL LETTER UPSILON WITH PERISPOMENI → GREEK SMALL LETTER UPSILON -1FE7; 03C5 # ῧ → υ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI → GREEK SMALL LETTER UPSILON -03CE; 03C9 # ώ → ω GREEK SMALL LETTER OMEGA WITH TONOS → GREEK SMALL LETTER OMEGA -1F60; 03C9 # ὠ → ω GREEK SMALL LETTER OMEGA WITH PSILI → GREEK SMALL LETTER OMEGA -1F61; 03C9 # ὡ → ω GREEK SMALL LETTER OMEGA WITH DASIA → GREEK SMALL LETTER OMEGA -1F62; 03C9 # ὢ → ω GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA → GREEK SMALL LETTER OMEGA -1F63; 03C9 # ὣ → ω GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA → GREEK SMALL LETTER OMEGA -1F64; 03C9 # ὤ → ω GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA → GREEK SMALL LETTER OMEGA -1F65; 03C9 # ὥ → ω GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA → GREEK SMALL LETTER OMEGA -1F66; 03C9 # ὦ → ω GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI → GREEK SMALL LETTER OMEGA -1F67; 03C9 # ὧ → ω GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI → GREEK SMALL LETTER OMEGA -1F7C; 03C9 # ὼ → ω GREEK SMALL LETTER OMEGA WITH VARIA → GREEK SMALL LETTER OMEGA -1F7D; 03C9 # ώ → ω GREEK SMALL LETTER OMEGA WITH OXIA → GREEK SMALL LETTER OMEGA -1FA0; 03C9 # ᾠ → ω GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FA1; 03C9 # ᾡ → ω GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FA2; 03C9 # ᾢ → ω GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FA3; 03C9 # ᾣ → ω GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FA4; 03C9 # ᾤ → ω GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FA5; 03C9 # ᾥ → ω GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FA6; 03C9 # ᾦ → ω GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FA7; 03C9 # ᾧ → ω GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FF2; 03C9 # ῲ → ω GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FF3; 03C9 # ῳ → ω GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FF4; 03C9 # ῴ → ω GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -1FF6; 03C9 # ῶ → ω GREEK SMALL LETTER OMEGA WITH PERISPOMENI → GREEK SMALL LETTER OMEGA -1FF7; 03C9 # ῷ → ω GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI → GREEK SMALL LETTER OMEGA -04D0; 0410 # Ӑ → А CYRILLIC CAPITAL LETTER A WITH BREVE → CYRILLIC CAPITAL LETTER A -04D2; 0410 # Ӓ → А CYRILLIC CAPITAL LETTER A WITH DIAERESIS → CYRILLIC CAPITAL LETTER A -0490; 0413 # Ґ → Г CYRILLIC CAPITAL LETTER GHE WITH UPTURN → CYRILLIC CAPITAL LETTER GHE -0492; 0413 # Ғ → Г CYRILLIC CAPITAL LETTER GHE WITH STROKE → CYRILLIC CAPITAL LETTER GHE -0494; 0413 # Ҕ → Г CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK → CYRILLIC CAPITAL LETTER GHE -0400; 0415 # Ѐ → Е CYRILLIC CAPITAL LETTER IE WITH GRAVE → CYRILLIC CAPITAL LETTER IE -04D6; 0415 # Ӗ → Е CYRILLIC CAPITAL LETTER IE WITH BREVE → CYRILLIC CAPITAL LETTER IE -0496; 0416 # Җ → Ж CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ZHE -04C1; 0416 # Ӂ → Ж CYRILLIC CAPITAL LETTER ZHE WITH BREVE → CYRILLIC CAPITAL LETTER ZHE -04DC; 0416 # Ӝ → Ж CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS → CYRILLIC CAPITAL LETTER ZHE -0498; 0417 # Ҙ → З CYRILLIC CAPITAL LETTER ZE WITH DESCENDER → CYRILLIC CAPITAL LETTER ZE -04DE; 0417 # Ӟ → З CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS → CYRILLIC CAPITAL LETTER ZE -040D; 0418 # Ѝ → И CYRILLIC CAPITAL LETTER I WITH GRAVE → CYRILLIC CAPITAL LETTER I -04E2; 0418 # Ӣ → И CYRILLIC CAPITAL LETTER I WITH MACRON → CYRILLIC CAPITAL LETTER I -04E4; 0418 # Ӥ → И CYRILLIC CAPITAL LETTER I WITH DIAERESIS → CYRILLIC CAPITAL LETTER I -048A; 0419 # Ҋ → Й CYRILLIC CAPITAL LETTER SHORT I WITH TAIL → CYRILLIC CAPITAL LETTER SHORT I -049A; 041A # Қ → К CYRILLIC CAPITAL LETTER KA WITH DESCENDER → CYRILLIC CAPITAL LETTER KA -049C; 041A # Ҝ → К CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE → CYRILLIC CAPITAL LETTER KA -049E; 041A # Ҟ → К CYRILLIC CAPITAL LETTER KA WITH STROKE → CYRILLIC CAPITAL LETTER KA -04C3; 041A # Ӄ → К CYRILLIC CAPITAL LETTER KA WITH HOOK → CYRILLIC CAPITAL LETTER KA -04C5; 041B # Ӆ → Л CYRILLIC CAPITAL LETTER EL WITH TAIL → CYRILLIC CAPITAL LETTER EL -04CD; 041C # Ӎ → М CYRILLIC CAPITAL LETTER EM WITH TAIL → CYRILLIC CAPITAL LETTER EM -04A2; 041D # Ң → Н CYRILLIC CAPITAL LETTER EN WITH DESCENDER → CYRILLIC CAPITAL LETTER EN -04C7; 041D # Ӈ → Н CYRILLIC CAPITAL LETTER EN WITH HOOK → CYRILLIC CAPITAL LETTER EN -04C9; 041D # Ӊ → Н CYRILLIC CAPITAL LETTER EN WITH TAIL → CYRILLIC CAPITAL LETTER EN -04E6; 041E # Ӧ → О CYRILLIC CAPITAL LETTER O WITH DIAERESIS → CYRILLIC CAPITAL LETTER O -04A6; 041F # Ҧ → П CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK → CYRILLIC CAPITAL LETTER PE -048E; 0420 # Ҏ → Р CYRILLIC CAPITAL LETTER ER WITH TICK → CYRILLIC CAPITAL LETTER ER -04AA; 0421 # Ҫ → С CYRILLIC CAPITAL LETTER ES WITH DESCENDER → CYRILLIC CAPITAL LETTER ES -04AC; 0422 # Ҭ → Т CYRILLIC CAPITAL LETTER TE WITH DESCENDER → CYRILLIC CAPITAL LETTER TE -04EE; 0423 # Ӯ → У CYRILLIC CAPITAL LETTER U WITH MACRON → CYRILLIC CAPITAL LETTER U -04F0; 0423 # Ӱ → У CYRILLIC CAPITAL LETTER U WITH DIAERESIS → CYRILLIC CAPITAL LETTER U -04F2; 0423 # Ӳ → У CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE → CYRILLIC CAPITAL LETTER U -04B2; 0425 # Ҳ → Х CYRILLIC CAPITAL LETTER HA WITH DESCENDER → CYRILLIC CAPITAL LETTER HA -04B3; 0425 # ҳ → Х CYRILLIC SMALL LETTER HA WITH DESCENDER → CYRILLIC CAPITAL LETTER HA -04F4; 0427 # Ӵ → Ч CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS → CYRILLIC CAPITAL LETTER CHE -04F8; 042B # Ӹ → Ы CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS → CYRILLIC CAPITAL LETTER YERU -04EC; 042D # Ӭ → Э CYRILLIC CAPITAL LETTER E WITH DIAERESIS → CYRILLIC CAPITAL LETTER E -04D1; 0430 # ӑ → а CYRILLIC SMALL LETTER A WITH BREVE → CYRILLIC SMALL LETTER A -04D3; 0430 # ӓ → а CYRILLIC SMALL LETTER A WITH DIAERESIS → CYRILLIC SMALL LETTER A -0491; 0433 # ґ → г CYRILLIC SMALL LETTER GHE WITH UPTURN → CYRILLIC SMALL LETTER GHE -0493; 0433 # ғ → г CYRILLIC SMALL LETTER GHE WITH STROKE → CYRILLIC SMALL LETTER GHE -0495; 0433 # ҕ → г CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK → CYRILLIC SMALL LETTER GHE -0450; 0435 # ѐ → е CYRILLIC SMALL LETTER IE WITH GRAVE → CYRILLIC SMALL LETTER IE -04D7; 0435 # ӗ → е CYRILLIC SMALL LETTER IE WITH BREVE → CYRILLIC SMALL LETTER IE -0497; 0436 # җ → ж CYRILLIC SMALL LETTER ZHE WITH DESCENDER → CYRILLIC SMALL LETTER ZHE -04C2; 0436 # ӂ → ж CYRILLIC SMALL LETTER ZHE WITH BREVE → CYRILLIC SMALL LETTER ZHE -04DD; 0436 # ӝ → ж CYRILLIC SMALL LETTER ZHE WITH DIAERESIS → CYRILLIC SMALL LETTER ZHE -0499; 0437 # ҙ → з CYRILLIC SMALL LETTER ZE WITH DESCENDER → CYRILLIC SMALL LETTER ZE -04DF; 0437 # ӟ → з CYRILLIC SMALL LETTER ZE WITH DIAERESIS → CYRILLIC SMALL LETTER ZE -045D; 0438 # ѝ → и CYRILLIC SMALL LETTER I WITH GRAVE → CYRILLIC SMALL LETTER I -04E3; 0438 # ӣ → и CYRILLIC SMALL LETTER I WITH MACRON → CYRILLIC SMALL LETTER I -04E5; 0438 # ӥ → и CYRILLIC SMALL LETTER I WITH DIAERESIS → CYRILLIC SMALL LETTER I -048B; 0439 # ҋ → й CYRILLIC SMALL LETTER SHORT I WITH TAIL → CYRILLIC SMALL LETTER SHORT I -049B; 043A # қ → к CYRILLIC SMALL LETTER KA WITH DESCENDER → CYRILLIC SMALL LETTER KA -049D; 043A # ҝ → к CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE → CYRILLIC SMALL LETTER KA -049F; 043A # ҟ → к CYRILLIC SMALL LETTER KA WITH STROKE → CYRILLIC SMALL LETTER KA -04C4; 043A # ӄ → к CYRILLIC SMALL LETTER KA WITH HOOK → CYRILLIC SMALL LETTER KA -04C6; 043B # ӆ → л CYRILLIC SMALL LETTER EL WITH TAIL → CYRILLIC SMALL LETTER EL -04CE; 043C # ӎ → м CYRILLIC SMALL LETTER EM WITH TAIL → CYRILLIC SMALL LETTER EM -04A3; 043D # ң → н CYRILLIC SMALL LETTER EN WITH DESCENDER → CYRILLIC SMALL LETTER EN -04C8; 043D # ӈ → н CYRILLIC SMALL LETTER EN WITH HOOK → CYRILLIC SMALL LETTER EN -04CA; 043D # ӊ → н CYRILLIC SMALL LETTER EN WITH TAIL → CYRILLIC SMALL LETTER EN -04E7; 043E # ӧ → о CYRILLIC SMALL LETTER O WITH DIAERESIS → CYRILLIC SMALL LETTER O -04A7; 043F # ҧ → п CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK → CYRILLIC SMALL LETTER PE -048F; 0440 # ҏ → р CYRILLIC SMALL LETTER ER WITH TICK → CYRILLIC SMALL LETTER ER -04AB; 0441 # ҫ → с CYRILLIC SMALL LETTER ES WITH DESCENDER → CYRILLIC SMALL LETTER ES -04AD; 0442 # ҭ → т CYRILLIC SMALL LETTER TE WITH DESCENDER → CYRILLIC SMALL LETTER TE -04EF; 0443 # ӯ → у CYRILLIC SMALL LETTER U WITH MACRON → CYRILLIC SMALL LETTER U -04F1; 0443 # ӱ → у CYRILLIC SMALL LETTER U WITH DIAERESIS → CYRILLIC SMALL LETTER U -04F3; 0443 # ӳ → у CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE → CYRILLIC SMALL LETTER U -04B9; 0447 # ҹ → ч CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE → CYRILLIC SMALL LETTER CHE -04F5; 0447 # ӵ → ч CYRILLIC SMALL LETTER CHE WITH DIAERESIS → CYRILLIC SMALL LETTER CHE -04F9; 044B # ӹ → ы CYRILLIC SMALL LETTER YERU WITH DIAERESIS → CYRILLIC SMALL LETTER YERU -04ED; 044D # ӭ → э CYRILLIC SMALL LETTER E WITH DIAERESIS → CYRILLIC SMALL LETTER E -047C; 0460 # Ѽ → Ѡ CYRILLIC CAPITAL LETTER OMEGA WITH TITLO → CYRILLIC CAPITAL LETTER OMEGA -047D; 0461 # ѽ → ѡ CYRILLIC SMALL LETTER OMEGA WITH TITLO → CYRILLIC SMALL LETTER OMEGA -0476; 0474 # Ѷ → Ѵ CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT → CYRILLIC CAPITAL LETTER IZHITSA -0477; 0475 # ѷ → ѵ CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT → CYRILLIC SMALL LETTER IZHITSA -04B0; 04AE # Ұ → Ү CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE → CYRILLIC CAPITAL LETTER STRAIGHT U -04B1; 04AF # ұ → ү CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE → CYRILLIC SMALL LETTER STRAIGHT U -04B6; 04BC # Ҷ → Ҽ CYRILLIC CAPITAL LETTER CHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04B7; 04BC # ҷ → Ҽ CYRILLIC SMALL LETTER CHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04B8; 04BC # Ҹ → Ҽ CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE → CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BE; 04BC # Ҿ → Ҽ CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04BF; 04BC # ҿ → Ҽ CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER → CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04CB; 04BC # Ӌ → Ҽ CYRILLIC CAPITAL LETTER KHAKASSIAN CHE → CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04CC; 04BC # ӌ → Ҽ CYRILLIC SMALL LETTER KHAKASSIAN CHE → CYRILLIC CAPITAL LETTER ABKHASIAN CHE -04DA; 04D8 # Ӛ → Ә CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS → CYRILLIC CAPITAL LETTER SCHWA -04DB; 04D9 # ӛ → ә CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS → CYRILLIC SMALL LETTER SCHWA -04EA; 04E8 # Ӫ → Ө CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS → CYRILLIC CAPITAL LETTER BARRED O -04EB; 04E9 # ӫ → ө CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS → CYRILLIC SMALL LETTER BARRED O -FB2E; 05D0 # אַ → א HEBREW LETTER ALEF WITH PATAH → HEBREW LETTER ALEF -FB2F; 05D0 # אָ → א HEBREW LETTER ALEF WITH QAMATS → HEBREW LETTER ALEF -FB30; 05D0 # אּ → א HEBREW LETTER ALEF WITH MAPIQ → HEBREW LETTER ALEF -FB31; 05D1 # בּ → ב HEBREW LETTER BET WITH DAGESH → HEBREW LETTER BET -FB4C; 05D1 # בֿ → ב HEBREW LETTER BET WITH RAFE → HEBREW LETTER BET -FB32; 05D2 # גּ → ג HEBREW LETTER GIMEL WITH DAGESH → HEBREW LETTER GIMEL -FB33; 05D3 # דּ → ד HEBREW LETTER DALET WITH DAGESH → HEBREW LETTER DALET -FB34; 05D4 # הּ → ה HEBREW LETTER HE WITH MAPIQ → HEBREW LETTER HE -FB35; 05D5 # וּ → ו HEBREW LETTER VAV WITH DAGESH → HEBREW LETTER VAV -FB4B; 05D5 # וֹ → ו HEBREW LETTER VAV WITH HOLAM → HEBREW LETTER VAV -FB36; 05D6 # זּ → ז HEBREW LETTER ZAYIN WITH DAGESH → HEBREW LETTER ZAYIN -FB38; 05D8 # טּ → ט HEBREW LETTER TET WITH DAGESH → HEBREW LETTER TET -FB1D; 05D9 # יִ → י HEBREW LETTER YOD WITH HIRIQ → HEBREW LETTER YOD -FB39; 05D9 # יּ → י HEBREW LETTER YOD WITH DAGESH → HEBREW LETTER YOD -FB3A; 05DA # ךּ → ך HEBREW LETTER FINAL KAF WITH DAGESH → HEBREW LETTER FINAL KAF -FB3B; 05DB # כּ → כ HEBREW LETTER KAF WITH DAGESH → HEBREW LETTER KAF -FB4D; 05DB # כֿ → כ HEBREW LETTER KAF WITH RAFE → HEBREW LETTER KAF -FB3C; 05DC # לּ → ל HEBREW LETTER LAMED WITH DAGESH → HEBREW LETTER LAMED -FB3E; 05DE # מּ → מ HEBREW LETTER MEM WITH DAGESH → HEBREW LETTER MEM -FB40; 05E0 # נּ → נ HEBREW LETTER NUN WITH DAGESH → HEBREW LETTER NUN -FB41; 05E1 # סּ → ס HEBREW LETTER SAMEKH WITH DAGESH → HEBREW LETTER SAMEKH -FB43; 05E3 # ףּ → ף HEBREW LETTER FINAL PE WITH DAGESH → HEBREW LETTER FINAL PE -FB44; 05E4 # פּ → פ HEBREW LETTER PE WITH DAGESH → HEBREW LETTER PE -FB4E; 05E4 # פֿ → פ HEBREW LETTER PE WITH RAFE → HEBREW LETTER PE -FB46; 05E6 # צּ → צ HEBREW LETTER TSADI WITH DAGESH → HEBREW LETTER TSADI -FB47; 05E7 # קּ → ק HEBREW LETTER QOF WITH DAGESH → HEBREW LETTER QOF -FB48; 05E8 # רּ → ר HEBREW LETTER RESH WITH DAGESH → HEBREW LETTER RESH -FB2A; 05E9 # שׁ → ש HEBREW LETTER SHIN WITH SHIN DOT → HEBREW LETTER SHIN -FB2B; 05E9 # שׂ → ש HEBREW LETTER SHIN WITH SIN DOT → HEBREW LETTER SHIN -FB2C; 05E9 # שּׁ → ש HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT → HEBREW LETTER SHIN -FB2D; 05E9 # שּׂ → ש HEBREW LETTER SHIN WITH DAGESH AND SIN DOT → HEBREW LETTER SHIN -FB49; 05E9 # שּ → ש HEBREW LETTER SHIN WITH DAGESH → HEBREW LETTER SHIN -FB4A; 05EA # תּ → ת HEBREW LETTER TAV WITH DAGESH → HEBREW LETTER TAV diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/generate.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/generate.cc deleted file mode 100644 index 5facff4ce7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/generate.cc +++ /dev/null @@ -1,317 +0,0 @@ -/* This file is (c) 2008-2009 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -// This program generates the required .cc files to perform Unicode foldings, -// parsing the Unicode standards' text files. -// Normally, we issue rebuilds manually in case either the generator or -// the data files were updated to avoid the hurdles an end user might get -// into while compiling the program. - -#include -#include -#include - -using std::map; -using std::wstring; - -struct Node -{ - map< wchar_t, Node > nodes; - wchar_t tail; - - Node(): tail( 0 ) - {} -}; - -void indent( FILE * outf, size_t steps ) -{ - for( unsigned x = steps; x--; ) - fprintf( outf, " " ); -} - -void handleForest( FILE * outf, map< wchar_t, Node > const & forest, size_t - prev, size_t steps ) -{ - indent( outf, steps ); - fprintf( outf, "if ( size > %u )\n", prev ); - - indent( outf, steps ); - fprintf( outf, "{\n" ); - - indent( outf, steps + 1 ); - fprintf( outf, "switch( in[ %u ] )\n", prev ); - - indent( outf, steps + 1 ); - fprintf( outf, "{\n" ); - - for( map< wchar_t, Node >::const_iterator i = forest.begin(); - i != forest.end(); ++i ) - { - indent( outf, steps + 2 ); - fprintf( outf, "case 0x%x:\n", i->first ); - - if ( i->second.nodes.size() ) - handleForest( outf, i->second.nodes, prev + 1, steps + 3 ); - - indent( outf, steps + 3 ); - - if ( i->second.tail ) - fprintf( outf, "consumed = %u; return 0x%x;\n", prev + 1, i->second.tail ); - else - fprintf( outf, "consumed = 1; return *in;\n" ); - } - - indent( outf, steps + 1 ); - fprintf( outf, "}\n" ); - - indent( outf, steps ); - fprintf( outf, "}\n" ); -} - -int main() -{ - // Case folding - { - FILE * inf = fopen( "CaseFolding.txt", "r" ); - - if ( !inf ) - { - fprintf( stderr, "Failed to open CaseFolding.txt\n" ); - - return 1; - } - - char buf[ 4096 ]; - - map< wchar_t, wstring > foldTable; - map< wchar_t, wchar_t > simpleFoldTable; - - while( fgets( buf, sizeof( buf ), inf ) ) - { - if ( *buf == '#' ) - continue; // A comment - - - unsigned long in, out[ 4 ]; - char type; - - unsigned totalOut; - - if ( sscanf( buf, "%lx; %c; %lx %lx %lx %lx;", &in, &type, - out, out + 1, out + 2, out + 3 ) == 6 ) - { - fprintf( stderr, "Four output chars ecountered in CaseFolding.txt, which we expected" - "the file didn't have, make changes into the program.\n" ); - - return 1; - } - - if ( sscanf( buf, "%lx; %c; %lx %lx %lx;", &in, &type, - out, out + 1, out + 2 ) == 5 ) - totalOut = 3; - else - if ( sscanf( buf, "%lx; %c; %lx %lx;", &in, &type, - out, out + 1 ) == 4 ) - totalOut = 2; - else - if ( sscanf( buf, "%lx; %c; %lx;", &in, &type, - out ) == 3 ) - totalOut = 1; - else - { - fprintf( stderr, "Erroneous input in CaseFolding.txt: %s\n", buf ); - - return 1; - } - - switch( type ) - { - case 'C': - if ( totalOut != 1 ) - { - fprintf( stderr, "C-record has more than one output char in CaseFolding.txt: %s\n", buf ); - - return 1; - } - simpleFoldTable[ in ] = out[ 0 ]; - // fall-through - case 'F': - { - wstring result( totalOut, 0 ); - - for( unsigned x = 0; x < totalOut; ++x ) - { - result[ x ] = out[ x ]; - } - foldTable[ in ] = result; - } - break; - case 'S': - { - if ( totalOut != 1 ) - { - fprintf( stderr, "S-record has more than one output char in CaseFolding.txt: %s\n", buf ); - - return 1; - } - simpleFoldTable[ in ] = out[ 0 ]; - } - break; - case 'T': - // Ignore special foldings - break; - - default: - - fprintf( stderr, "Unknown folding type encountered: %c\n", type ); - return 1; - } - } - - fclose( inf ); - - // Create an outfile - - FILE * outf = fopen( "../inc_case_folding.hh", "w" ); - - if ( !outf ) - { - fprintf( stderr, "Failed to create outfile\n" ); - - return 1; - } - - fprintf( outf, "// This file was generated automatically. Do not edit directly.\n\n" ); - - fprintf( outf, "enum { foldCaseMaxOut = 3 };\n\n" ); - fprintf( outf, "size_t foldCase( wchar in, wchar * out )\n{\n switch( in )\n {\n" ); - - for( map< wchar_t, wstring >::const_iterator i = foldTable.begin(); - i != foldTable.end(); ++i ) - { - if ( i->second.size() == 1 ) - fprintf( outf, " case 0x%x: *out = 0x%x; return 1;\n", i->first, i->second[ 0 ] ); - else - { - fprintf( outf, " case 0x%x: ", i->first ); - - for( unsigned x = 0; x < i->second.size(); ++x ) - fprintf( outf, "out[ %u ] = 0x%x; ", x, i->second[ x ] ); - - fprintf( outf, "return %u;\n", i->second.size() ); - } - } - - fprintf( outf, " default: *out = in; return 1;\n" ); - fprintf( outf, " }\n}\n\n" ); - - fprintf( outf, "wchar foldCaseSimple( wchar in )\n{\n switch( in )\n {\n" ); - - for( map< wchar_t, wchar_t >::const_iterator i = simpleFoldTable.begin(); - i != simpleFoldTable.end(); ++i ) - fprintf( outf, " case 0x%x: return 0x%x;\n", i->first, i->second ); - - fprintf( outf, " default: return in;\n" ); - fprintf( outf, " }\n}\n" ); - - fclose( outf ); - } - - // Diacritic folding - { - FILE * inf = fopen( "DiacriticFolding.txt", "r" ); - - if ( !inf ) - { - fprintf( stderr, "Failed to open DiacriticFolding.txt\n" ); - - return 1; - } - - char buf[ 4096 ]; - - map< wchar_t, Node > forest; - - while( fgets( buf, sizeof( buf ), inf ) ) - { - if ( *buf == '#' || *buf == '\n' ) - continue; // A comment or a whiteline - - unsigned long in[ 4 ], out; - - unsigned totalIn; - - if ( sscanf( buf, "%lx %lx %lx %lx; %lx", in, in + 1, in + 2, in + 3, &out ) == 5 ) - { - fprintf( stderr, "Four input chars ecountered in DiacriticFolding.txt, which we expected" - "the file didn't have, make changes into the program.\n" ); - - return 1; - } - else - if ( sscanf( buf, "%lx %lx %lx; %lx", in, in + 1, in + 2, &out ) == 4 ) - totalIn = 3; - else - if ( sscanf( buf, "%lx %lx; %lx", in, in + 1, &out ) == 3 ) - totalIn = 2; - else - if ( sscanf( buf, "%lx; %lx", in, &out ) == 2 ) - totalIn = 1; - else - { - fprintf( stderr, "Erroneous input in DiacriticFolding.txt: %s\n", buf ); - - return 1; - } - - map< wchar_t, Node > * cur = &forest; - - for( unsigned x = 0; x < totalIn - 1; ++x ) - { - //printf( "%x ", in[ x ] ); - - cur = &( (*cur)[ in[ x ] ].nodes ); - } - - //printf( "%x\n", in[ totalIn - 1 ] ); - - if ( (*cur)[ in[ totalIn - 1 ] ].tail ) - { - fprintf( stderr, "Ambiguity in DiacriticFolding.txt\n" ); - return 1; - } - - (*cur)[ in[ totalIn - 1 ] ].tail = out; - } - fclose( inf ); - - // Create an outfile - - FILE * outf = fopen( "../inc_diacritic_folding.hh", "w" ); - - if ( !outf ) - { - fprintf( stderr, "Failed to create outfile\n" ); - - return 1; - } - - fprintf( outf, "// This file was generated automatically. Do not edit directly.\n\n" ); - - fprintf( outf, "enum { foldDiacriticMaxIn = 3 };\n\n" ); - fprintf( outf, "wchar foldDiacritic( wchar const * in, size_t size, size_t & consumed )\n{\n" ); - - handleForest( outf, forest, 0, 1 ); - - fprintf( outf, " if ( size )\n" - " {\n" - " consumed = 1; return *in;\n" - " }\n" - " consumed = 0; return 0;\n" - "}\n" ); - - fclose( outf ); - } - - return 0; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/make_flags_qrc.sh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/make_flags_qrc.sh deleted file mode 100755 index 01e2884489..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/make_flags_qrc.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -# This script generates ../flags.qrc based on the ../flags dir contents - -cd .. - -OUT=flags.qrc - -echo "" > $OUT -echo " " >> $OUT - -for x in flags/*.png; do - echo " $x" >> $OUT -done - -echo " " >> $OUT -echo "" >> $OUT diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/readme.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/readme.txt deleted file mode 100644 index 7d7b793d96..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/generators/readme.txt +++ /dev/null @@ -1,4 +0,0 @@ -This directory holds various generators to generate some code/data. We ship -that generated content as part of the source code to simplify compilation, so -there's no need for the end user to regenerate anything. A developer making -changes to the relevant data files would need this, though, diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/german.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/german.cc deleted file mode 100644 index 6ad00e83ad..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/german.cc +++ /dev/null @@ -1,54 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "german.hh" -#include "transliteration.hh" -#include - -namespace GermanTranslit { - -class GermanTable: public Transliteration::Table -{ -public: - - GermanTable(); -}; - -GermanTable::GermanTable() -{ - // Utf8 - - ins( "ue", "ü" ); - ins( "ae", "ä" ); - ins( "oe", "ö" ); - ins( "ss", "ß" ); - - ins( "UE", "Ü" ); - ins( "AE", "Ä" ); - ins( "OE", "Ö" ); - ins( "SS", "ß" ); - - ins( "Ue", "Ü" ); - ins( "Ae", "Ä" ); - ins( "Oe", "Ö" ); - ins( "Ss", "ß" ); - -// ins( "ü", "ue" ); -// ins( "ä", "ae" ); -// ins( "ö", "oe" ); -// ins( "ß", "ss" ); - -} - -sptr< Dictionary::Class > makeDictionary() throw( std::exception ) -{ - static GermanTable t; - - return new Transliteration::TransliterationDictionary( "cf1b74acd98adea9b2bba16af38f1081", - QCoreApplication::translate( "GermanTranslit", "German Transliteration" ).toUtf8().data(), - QIcon( ":/flags/de.png" ), t ); -} - - -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/german.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/german.hh deleted file mode 100644 index 2d790f623c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/german.hh +++ /dev/null @@ -1,16 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef GERMAN_HH -#define GERMAN_HH - -#include "dictionary.hh" - -// Support for German transliteration -namespace GermanTranslit { - -sptr< Dictionary::Class > makeDictionary() throw( std::exception ); - -} - -#endif // GERMAN_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gestures.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/gestures.cc deleted file mode 100644 index 12aec789ba..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gestures.cc +++ /dev/null @@ -1,395 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include -#include -#include "articleview.hh" -#include "gestures.hh" - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - -namespace Gestures -{ - -Qt::GestureType GDPinchGestureType; -Qt::GestureType GDSwipeGestureType; -static bool fewTouchPointsPresented; - -bool isFewTouchPointsPresented() -{ - return fewTouchPointsPresented; -} - -QSwipeGesture::SwipeDirection getHorizontalDirection( qreal angle ) -{ - if ( ( 0 <= angle && angle <= 45 ) - || ( 315 <= angle && angle <= 360 ) ) - return QSwipeGesture::Right; - - if ( 135 <= angle && angle <= 225 ) - return QSwipeGesture::Left; - - return QSwipeGesture::NoDirection; -} - -QSwipeGesture::SwipeDirection getVerticalDirection( qreal angle ) -{ - if ( 45 < angle && angle < 135 ) - return QSwipeGesture::Up; - - if ( 225 < angle && angle < 315 ) - return QSwipeGesture::Down; - - return QSwipeGesture::NoDirection; -} - -GDPinchGesture::GDPinchGesture() : -isNewSequence( true ) -{ -} - -QGesture * GDPinchGestureRecognizer::create( QObject * pTarget ) -{ - if ( pTarget && pTarget->isWidgetType()) { - static_cast< QWidget * >( pTarget )->setAttribute( Qt::WA_AcceptTouchEvents ); - } - QGesture *pGesture = new GDPinchGesture; - return pGesture; -} - -void GDPinchGestureRecognizer::reset( QGesture * pGesture ) -{ - QGestureRecognizer::reset( pGesture ); -} - -QGestureRecognizer::Result GDPinchGestureRecognizer::recognize( QGesture * state, - QObject *, - QEvent * event) -{ - const QTouchEvent *ev = static_cast< const QTouchEvent * >( event ); - QGestureRecognizer::Result result = QGestureRecognizer::Ignore; - GDPinchGesture * gest = static_cast< GDPinchGesture * >( state ); - - switch ( event->type() ) - { - case QEvent::TouchBegin: - { - result = QGestureRecognizer::MayBeGesture; - gest->isNewSequence = true; - break; - } -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) - case QEvent::TouchCancel: -#endif - case QEvent::TouchEnd: - { - result = QGestureRecognizer::CancelGesture; - fewTouchPointsPresented = false; - break; - } - case QEvent::TouchUpdate: - { - gest->scaleChanged = false; - fewTouchPointsPresented = ( ev->touchPoints().size() > 1 ); - if ( ev->touchPoints().size() == 2 ) - { - QTouchEvent::TouchPoint p1 = ev->touchPoints().at( 0 ); - QTouchEvent::TouchPoint p2 = ev->touchPoints().at( 1 ); - - QPointF centerPoint = ( p1.screenPos() + p2.screenPos() ) / 2.0; - gest->setHotSpot( centerPoint ); - if ( gest->isNewSequence ) - { - gest->startPosition[ 0 ] = p1.screenPos(); - gest->startPosition[ 1 ] = p2.screenPos(); - gest->lastCenterPoint = centerPoint; - } - else - { - gest->lastCenterPoint = gest->centerPoint; - } - gest->centerPoint = centerPoint; - - if ( gest->isNewSequence ) - { - gest->scaleFactor = 1.0; - gest->lastScaleFactor = 1.0; - gest->totalScaleFactor = 1.0; - } - else - { - gest->lastScaleFactor = gest->scaleFactor; - QLineF line( p1.screenPos(), p2.screenPos() ); - QLineF lastLine( p1.lastScreenPos(), p2.lastScreenPos() ); - gest->scaleFactor = line.length() / lastLine.length(); - } - - gest->totalScaleFactor = gest->totalScaleFactor * gest->scaleFactor; - gest->scaleChanged = true; - - gest->isNewSequence = false; - if( gest->totalScaleFactor <= OUT_SCALE_LIMIT || gest->totalScaleFactor >= IN_SCALE_LIMIT ) - { - result = QGestureRecognizer::TriggerGesture; - gest->isNewSequence = true; - } - else - result = QGestureRecognizer::MayBeGesture; - } - else - { - gest->isNewSequence = true; - if ( gest->state() == Qt::NoGesture ) - result = QGestureRecognizer::Ignore; - else - result = QGestureRecognizer::FinishGesture; - } - break; - } - case QEvent::MouseButtonPress: - case QEvent::MouseMove: - case QEvent::MouseButtonRelease: - result = QGestureRecognizer::Ignore; - break; - default: - result = QGestureRecognizer::Ignore; - break; - } - return result; -} - - -GDSwipeGesture::GDSwipeGesture() : -vertDirection( QSwipeGesture::NoDirection ), -horizDirection( QSwipeGesture::NoDirection ), -started( false ) -{ -} - -QGesture * GDSwipeGestureRecognizer::create( QObject * pTarget ) -{ - if ( pTarget && pTarget->isWidgetType() ) { - static_cast< QWidget * >( pTarget )->setAttribute( Qt::WA_AcceptTouchEvents ); - } - QGesture *pGesture = new GDSwipeGesture; - return pGesture; -} - -void GDSwipeGestureRecognizer::reset( QGesture * pGesture ) -{ - GDSwipeGesture * gest = static_cast< GDSwipeGesture * >( pGesture ); - gest->vertDirection = QSwipeGesture::NoDirection; - gest->horizDirection = QSwipeGesture::NoDirection; - gest->lastPositions[ 0 ] = QPoint(); - gest->lastPositions[ 1 ] = QPoint(); - - QGestureRecognizer::reset( pGesture ); -} - -qreal GDSwipeGestureRecognizer::computeAngle( int dx, int dy ) -{ - double PI = 3.14159265; - - // Need to convert from screen coordinates direction - // into classical coordinates direction. - dy = -dy; - - double result = atan2( (double)dy, (double)dx ) ; - result = ( result * 180 ) / PI; - - // Always return positive angle. - if ( result < 0 ) - result += 360; - - return result; -} - -QGestureRecognizer::Result GDSwipeGestureRecognizer::recognize( QGesture * state, - QObject *, - QEvent * event) -{ - GDSwipeGesture * swipe = static_cast< GDSwipeGesture * >( state ); - const QTouchEvent * ev = static_cast< const QTouchEvent * >( event ); - QGestureRecognizer::Result result = QGestureRecognizer::Ignore; - - switch( event->type() ) - { - case QEvent::TouchBegin: - { - swipe->unsetHotSpot(); - swipe->lastPositions[ 0 ] = QPoint(); - swipe->started = true; - result = QGestureRecognizer::MayBeGesture; - break; - } -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) - case QEvent::TouchCancel: -#endif - case QEvent::TouchEnd: - { - fewTouchPointsPresented = false; - result = QGestureRecognizer::CancelGesture; - break; - } - case QEvent::TouchUpdate: - { - fewTouchPointsPresented = ( ev->touchPoints().size() > 1 ); - if( !swipe->started ) - result = QGestureRecognizer::CancelGesture; - else - if( ev->touchPoints().size() == 2 ) - { - //2-point gesture - - QTouchEvent::TouchPoint p1 = ev->touchPoints().at( 0 ); - QTouchEvent::TouchPoint p2 = ev->touchPoints().at( 1 ); - - if (swipe->lastPositions[0].isNull()) { - swipe->lastPositions[ 0 ] = p1.startScreenPos().toPoint(); - swipe->lastPositions[ 1 ] = p2.startScreenPos().toPoint(); - } - - if( !swipe->hasHotSpot() ) - { - swipe->setHotSpot( ( p1.startScreenPos() + p2.startScreenPos() ) / 2 ); - } - - int dx1 = p1.screenPos().toPoint().x() - swipe->lastPositions[ 0 ].x(); - int dx2 = p2.screenPos().toPoint().x() - swipe->lastPositions[ 1 ].x(); - int dy1 = p1.screenPos().toPoint().y() - swipe->lastPositions[ 0 ].y(); - int dy2 = p2.screenPos().toPoint().y() - swipe->lastPositions[ 1 ].y(); - - if( qAbs( ( dx1 + dx2 ) / 2.0 ) >= MOVE_X_TRESHOLD || - qAbs( ( dy1 + dy2 ) / 2.0 ) >= MOVE_Y_TRESHOLD ) - { - qreal angle1 = computeAngle( dx1, dy1 ); - qreal angle2 = computeAngle( dx2, dy2 ); - QSwipeGesture::SwipeDirection vertDir = getVerticalDirection( angle1 ); - QSwipeGesture::SwipeDirection horizDir = getHorizontalDirection( angle1 ); - - if( vertDir != getVerticalDirection( angle2 ) || - horizDir != getHorizontalDirection( angle2 ) ) - { - // It seems it is no swipe gesture - result = QGestureRecognizer::CancelGesture; - break; - } - - if( ( swipe->vertDirection != QSwipeGesture::NoDirection && horizDir != QSwipeGesture::NoDirection ) || - ( swipe->horizDirection != QSwipeGesture::NoDirection && vertDir != QSwipeGesture::NoDirection ) ) - { - // Gesture direction changed - result = QGestureRecognizer::CancelGesture; - break; - } - - swipe->vertDirection = vertDir; - swipe->horizDirection = horizDir; - - swipe->lastPositions[ 0 ] = p1.screenPos().toPoint(); - swipe->lastPositions[ 1 ] = p2.screenPos().toPoint(); - - result = QGestureRecognizer::TriggerGesture; - } - else - result = QGestureRecognizer::MayBeGesture; - } - else // No 2-point gesture - result = QGestureRecognizer::CancelGesture; - break; - } - case QEvent::MouseButtonPress: - case QEvent::MouseMove: - case QEvent::MouseButtonRelease: - result = QGestureRecognizer::Ignore; - break; - default: - result = QGestureRecognizer::Ignore; - break; - } - - return result; -} - -const qreal GDPinchGestureRecognizer::OUT_SCALE_LIMIT = 0.5; -const qreal GDPinchGestureRecognizer::IN_SCALE_LIMIT = 2; - -bool handleGestureEvent( QObject * obj, QEvent * event, GestureResult & result, - QPoint & point ) -{ - result = NOT_HANLDED; - - if( event->type() != QEvent::Gesture || !obj->isWidgetType() ) - return false; - - QGestureEvent * gev = static_cast( event ); - - gev->accept( Qt::PanGesture ); - - QGesture * gesture = gev->gesture( GDSwipeGestureType ); - if( gesture ) - { - GDSwipeGesture * swipe = static_cast< GDSwipeGesture * >( gesture ); - point = swipe->hotSpot().toPoint(); - - if( swipe->getHorizDirection() != QSwipeGesture::NoDirection ) - result = swipe->getHorizDirection() == QSwipeGesture::Left ? - SWIPE_LEFT : SWIPE_RIGHT; - - if( swipe->getVertDirection() != QSwipeGesture::NoDirection ) - result = swipe->getVertDirection() == QSwipeGesture::Up ? - SWIPE_UP : SWIPE_DOWN; - - gev->setAccepted( true ); - return true; - } - - gesture = gev->gesture( GDPinchGestureType ); - if( gesture ) - { - GDPinchGesture * pinch = static_cast< GDPinchGesture * >( gesture ); - point = pinch->getCenterPoint().toPoint(); - - if( pinch->isScaleChanged() ) - { - if( pinch->getTotalScaleFactor() <= GDPinchGestureRecognizer::OUT_SCALE_LIMIT ) - result = ZOOM_OUT; - if( pinch->getTotalScaleFactor() >= GDPinchGestureRecognizer::IN_SCALE_LIMIT ) - result = ZOOM_IN; - } - gev->setAccepted( true ); - return true; - } - - gesture = gev->gesture( Qt::PanGesture ); - if( gesture ) - { - gev->setAccepted( true ); - return true; - } - return false; -} - -void registerRecognizers() -{ - QGestureRecognizer * pRecognizer = new Gestures::GDPinchGestureRecognizer(); - GDPinchGestureType = QGestureRecognizer::registerRecognizer( pRecognizer ); - - pRecognizer = new Gestures::GDSwipeGestureRecognizer(); - GDSwipeGestureType = QGestureRecognizer::registerRecognizer( pRecognizer ); -} - -void unregisterRecognizers() -{ - if( GDPinchGestureType ) - QGestureRecognizer::unregisterRecognizer( GDPinchGestureType ); - - if( GDSwipeGestureType ) - QGestureRecognizer::unregisterRecognizer( GDSwipeGestureType ); -} - -} // namespace - -#endif //QT_VERSION diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gestures.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/gestures.hh deleted file mode 100644 index fa57fa234f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/gestures.hh +++ /dev/null @@ -1,117 +0,0 @@ -#ifndef __GESTURES_HH_INCLUDED__ -#define __GESTURES_HH_INCLUDED__ - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - -#include -#include -#include -#include -#include - -namespace Gestures -{ - -enum GestureResult -{ - NOT_HANLDED, - SWIPE_LEFT, - SWIPE_RIGHT, - SWIPE_UP, - SWIPE_DOWN, - ZOOM_IN, - ZOOM_OUT -}; - -extern Qt::GestureType GDPinchGestureType; -extern Qt::GestureType GDSwipeGestureType; - -void registerRecognizers(); - -void unregisterRecognizers(); - -bool isFewTouchPointsPresented(); - -class GDPinchGestureRecognizer; -class GDPinchGesture : public QGesture -{ -public: - GDPinchGesture(); - - bool isScaleChanged() const - { return scaleChanged; } - QPointF const & getCenterPoint() const - { return centerPoint; } - qreal getTotalScaleFactor() const - { return totalScaleFactor; } - -protected: - QPointF startCenterPoint; - QPointF lastCenterPoint; - QPointF centerPoint; - - qreal lastScaleFactor; - qreal scaleFactor; - qreal totalScaleFactor; - - bool isNewSequence; - QPointF startPosition[ 2 ]; - bool scaleChanged; - - friend class GDPinchGestureRecognizer; -}; - -class GDSwipeGestureRecognizer; -class GDSwipeGesture : public QGesture -{ -public: - GDSwipeGesture(); - QSwipeGesture::SwipeDirection getHorizDirection() const - { return horizDirection; } - QSwipeGesture::SwipeDirection getVertDirection() const - { return vertDirection; } - -protected: - QSwipeGesture::SwipeDirection vertDirection; - QSwipeGesture::SwipeDirection horizDirection; - QPoint lastPositions[ 2 ]; - bool started; - - friend class GDSwipeGestureRecognizer; -}; - -class GDPinchGestureRecognizer : public QGestureRecognizer -{ -public: - static const qreal OUT_SCALE_LIMIT; - static const qreal IN_SCALE_LIMIT; - - GDPinchGestureRecognizer() {} -private: - - virtual QGesture* create( QObject* pTarget ); - virtual QGestureRecognizer::Result recognize( QGesture* pGesture, QObject *pWatched, QEvent * pEvent ); - void reset( QGesture *pGesture ); -}; - -class GDSwipeGestureRecognizer : public QGestureRecognizer -{ -public: - GDSwipeGestureRecognizer(){} -private: - static const int MOVE_X_TRESHOLD = 100; - static const int MOVE_Y_TRESHOLD = 50; - - virtual QGesture * create( QObject* pTarget ); - virtual QGestureRecognizer::Result recognize( QGesture* pGesture, QObject * pWatched, QEvent * pEvent ); - void reset ( QGesture * pGesture ); - qreal computeAngle( int dx, int dy ); -}; - -bool handleGestureEvent( QObject * obj, QEvent * event, GestureResult & result, QPoint & point ); - -} // namespace - -#endif - -#endif // __GESTURES_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.pro deleted file mode 100644 index 9ba9e69f8a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.pro +++ /dev/null @@ -1,636 +0,0 @@ -TEMPLATE = app -TARGET = goldendict -VERSION = 1.5.0-RC2+git - -# Generate version file. We do this here and in a build rule described later. -# The build rule is required since qmake isn't run each time the project is -# rebuilt; and doing it here is required too since any other way the RCC -# compiler would complain if version.txt wouldn't exist (fresh checkouts). - -system(git describe --tags --always --dirty > version.txt): hasGit=1 - -isEmpty( hasGit ) { - message(Failed to precisely describe the version via Git -- using the default version string) - system(echo $$VERSION > version.txt) -} - -# DEPENDPATH += . generators -INCLUDEPATH += . - -QT += core \ - gui \ - xml \ - network \ - svg - -greaterThan(QT_MAJOR_VERSION, 4) { - QT += widgets \ - webkitwidgets \ - printsupport \ - help -} else { - QT += webkit - CONFIG += help -} - -QT += sql -CONFIG += exceptions \ - rtti \ - stl -OBJECTS_DIR = build -UI_DIR = build -MOC_DIR = build -RCC_DIR = build -LIBS += \ - -lz \ - -lbz2 \ - -llzo2 - -!isEmpty(DISABLE_INTERNAL_PLAYER): DEFINES += DISABLE_INTERNAL_PLAYER - -win32 { - TARGET = GoldenDict - - win32-msvc* { - VERSION = 1.5.0 # More complicated things cause errors during compilation under MSVC++ - DEFINES += __WIN32 _CRT_SECURE_NO_WARNINGS - contains(QMAKE_TARGET.arch, x86_64) { - DEFINES += NOMINMAX __WIN64 - } - LIBS += -L$${PWD}/winlibs/lib/msvc - QMAKE_CXXFLAGS += /wd4290 # silence the warning C4290: C++ exception specification ignored - QMAKE_LFLAGS_RELEASE += /OPT:REF /OPT:ICF - DEFINES += GD_NO_MANIFEST - # QMAKE_CXXFLAGS_RELEASE += /GL # slows down the linking significantly - LIBS += -lshell32 -luser32 -lsapi -lole32 - Debug: LIBS+= -lhunspelld - Release: LIBS+= -lhunspell - HUNSPELL_LIB = hunspell - } else { - CONFIG(gcc48) { - x64 { - LIBS += -L$${PWD}/winlibs/lib64-48 - QMAKE_CXXFLAGS += -m64 - QMAKE_CFLAGS += -m64 - } else { - LIBS += -L$${PWD}/winlibs/lib32-48 - } - } else { - LIBS += -L$${PWD}/winlibs/lib - } - !x64:QMAKE_LFLAGS += -Wl,--large-address-aware - - isEmpty(HUNSPELL_LIB) { - CONFIG(gcc48) { - LIBS += -lhunspell-1.3.2 - } else { - greaterThan(QT_MAJOR_VERSION, 4) { - lessThan(QT_MINOR_VERSION, 1) { - LIBS += -lhunspell-1.3-sjlj - } else { - LIBS += -lhunspell-1.3-dw2 - } - } else { - LIBS += -lhunspell-1.3.2 - } - } - } else { - LIBS += -l$$HUNSPELL_LIB - } - } - - LIBS += -liconv \ - -lwsock32 \ - -lpsapi \ - -lole32 \ - -loleaut32 \ - -ladvapi32 \ - -lcomdlg32 - LIBS += -lvorbisfile \ - -lvorbis \ - -logg - isEmpty(DISABLE_INTERNAL_PLAYER) { - LIBS += -lao \ - -lavutil-gd \ - -lavformat-gd \ - -lavcodec-gd - } - - - RC_FILE = goldendict.rc - INCLUDEPATH += winlibs/include - - # Enable console in Debug mode on Windows, with useful logging messages - Debug:CONFIG += console - - Release:DEFINES += NO_CONSOLE - - gcc48:QMAKE_CXXFLAGS += -Wno-unused-local-typedefs - - CONFIG += zim_support - - !CONFIG( no_chinese_conversion_support ) { - CONFIG += chinese_conversion_support - } - - greaterThan(QT_MAJOR_VERSION, 4) { - LIBS += -luxtheme - } -} - -unix:!mac { - DEFINES += HAVE_X11 - # This is to keep symbols for backtraces - QMAKE_CXXFLAGS += -rdynamic - QMAKE_LFLAGS += -rdynamic - - greaterThan(QT_MAJOR_VERSION, 4) { - greaterThan(QT_MINOR_VERSION, 0) { - QT += x11extras - } - } - - CONFIG += link_pkgconfig - PKGCONFIG += vorbisfile \ - vorbis \ - ogg \ - hunspell - isEmpty(DISABLE_INTERNAL_PLAYER) { - PKGCONFIG += ao \ - libavutil \ - libavformat \ - libavcodec - } - arm { - LIBS += -liconv - } else { - LIBS += -lX11 -lXtst - } - - # Install prefix: first try to use qmake's PREFIX variable, - # then $PREFIX from system environment, and if both fails, - # use the hardcoded /usr/local. - PREFIX = $${PREFIX} - isEmpty( PREFIX ):PREFIX = $$(PREFIX) - isEmpty( PREFIX ):PREFIX = /usr/local - message(Install Prefix is: $$PREFIX) - - DEFINES += PROGRAM_DATA_DIR=\\\"$$PREFIX/share/goldendict/\\\" - target.path = $$PREFIX/bin/ - locale.path = $$PREFIX/share/goldendict/locale/ - locale.files = locale/*.qm - INSTALLS += target \ - locale - icons.path = $$PREFIX/share/pixmaps - icons.files = redist/icons/*.* - INSTALLS += icons - desktops.path = $$PREFIX/share/applications - desktops.files = redist/*.desktop - INSTALLS += desktops - helps.path = $$PREFIX/share/goldendict/help/ - helps.files = help/*.qch - INSTALLS += helps -} -mac { - TARGET = GoldenDict - # Uncomment this line to make a universal binary. - # You will need to use Xcode 3 and Qt Carbon SDK - # if you want the support for PowerPC and/or Mac OS X 10.4 - # CONFIG += x86 x86_64 ppc - LIBS = -lz \ - -lbz2 \ - -liconv \ - -lvorbisfile \ - -lvorbis \ - -logg \ - -lhunspell-1.2 \ - -llzo2 - isEmpty(DISABLE_INTERNAL_PLAYER) { - LIBS += -lao \ - -lavutil-gd \ - -lavformat-gd \ - -lavcodec-gd - } - INCLUDEPATH = $${PWD}/maclibs/include - LIBS += -L$${PWD}/maclibs/lib -framework AppKit -framework Carbon - OBJECTIVE_SOURCES += lionsupport.mm \ - machotkeywrapper.mm \ - macmouseover.mm \ - speechclient_mac.mm - ICON = icons/macicon.icns - QMAKE_INFO_PLIST = myInfo.plist - QMAKE_POST_LINK = mkdir -p GoldenDict.app/Contents/Frameworks & \ - cp -nR $${PWD}/maclibs/lib/ GoldenDict.app/Contents/Frameworks/ & \ - mkdir -p GoldenDict.app/Contents/MacOS/locale & \ - cp -R locale/*.qm GoldenDict.app/Contents/MacOS/locale/ & \ - mkdir -p GoldenDict.app/Contents/MacOS/help & \ - cp -R $${PWD}/help/*.qch GoldenDict.app/Contents/MacOS/help/ - - CONFIG += zim_support - !CONFIG( no_chinese_conversion_support ) { - CONFIG += chinese_conversion_support - CONFIG( x86_64 ) { - QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \ - cp -R $${PWD}/opencc/x64/*.json GoldenDict.app/Contents/MacOS/opencc/ & \ - cp -R $${PWD}/opencc/x64/*.ocd GoldenDict.app/Contents/MacOS/opencc/ - } else { - QMAKE_POST_LINK += & mkdir -p GoldenDict.app/Contents/MacOS/opencc & \ - cp -R $${PWD}/opencc/*.json GoldenDict.app/Contents/MacOS/opencc/ & \ - cp -R $${PWD}/opencc/*.ocd GoldenDict.app/Contents/MacOS/opencc/ - } - } -} -DEFINES += PROGRAM_VERSION=\\\"$$VERSION\\\" - -# Input -HEADERS += folding.hh \ - inc_case_folding.hh \ - inc_diacritic_folding.hh \ - mainwindow.hh \ - sptr.hh \ - dictionary.hh \ - ex.hh \ - config.hh \ - sources.hh \ - utf8.hh \ - file.hh \ - bgl_babylon.hh \ - bgl.hh \ - initializing.hh \ - article_netmgr.hh \ - dictzip.h \ - btreeidx.hh \ - stardict.hh \ - chunkedstorage.hh \ - xdxf2html.hh \ - iconv.hh \ - lsa.hh \ - htmlescape.hh \ - dsl.hh \ - dsl_details.hh \ - filetype.hh \ - fsencoding.hh \ - groups.hh \ - groups_widgets.hh \ - instances.hh \ - article_maker.hh \ - scanpopup.hh \ - articleview.hh \ - externalviewer.hh \ - wordfinder.hh \ - groupcombobox.hh \ - keyboardstate.hh \ - mouseover.hh \ - preferences.hh \ - mutex.hh \ - mediawiki.hh \ - sounddir.hh \ - hunspell.hh \ - dictdfiles.hh \ - audiolink.hh \ - wstring.hh \ - wstring_qt.hh \ - processwrapper.hh \ - hotkeywrapper.hh \ - searchpanewidget.hh \ - hotkeyedit.hh \ - langcoder.hh \ - editdictionaries.hh \ - loaddictionaries.hh \ - transliteration.hh \ - romaji.hh \ - belarusiantranslit.hh \ - russiantranslit.hh \ - german.hh \ - website.hh \ - orderandprops.hh \ - language.hh \ - dictionarybar.hh \ - broken_xrecord.hh \ - history.hh \ - atomic_rename.hh \ - articlewebview.hh \ - zipfile.hh \ - indexedzip.hh \ - termination.hh \ - greektranslit.hh \ - webmultimediadownload.hh \ - forvo.hh \ - country.hh \ - about.hh \ - programs.hh \ - parsecmdline.hh \ - dictspanewidget.hh \ - maintabwidget.hh \ - mainstatusbar.hh \ - gdappstyle.hh \ - ufile.hh \ - xdxf.hh \ - sdict.hh \ - decompress.hh \ - aard.hh \ - mruqmenu.hh \ - dictinfo.hh \ - zipsounds.hh \ - stylescombobox.hh \ - extlineedit.hh \ - translatebox.hh \ - historypanewidget.hh \ - wordlist.hh \ - mdictparser.hh \ - mdx.hh \ - voiceengines.hh \ - ffmpegaudio.hh \ - articleinspector.hh \ - delegate.hh \ - zim.hh \ - gddebug.hh \ - qt4x5.hh \ - gestures.hh \ - tiff.hh \ - dictheadwords.hh \ - fulltextsearch.hh \ - ftshelpers.hh \ - dictserver.hh \ - helpwindow.hh \ - slob.hh \ - ripemd.hh - -FORMS += groups.ui \ - dictgroupwidget.ui \ - mainwindow.ui \ - sources.ui \ - initializing.ui \ - groupselectorwidget.ui \ - scanpopup.ui \ - articleview.ui \ - preferences.ui \ - about.ui \ - editdictionaries.ui \ - orderandprops.ui \ - dictinfo.ui \ - dictheadwords.ui \ - authentication.ui \ - fulltextsearch.ui - -SOURCES += folding.cc \ - main.cc \ - dictionary.cc \ - config.cc \ - sources.cc \ - mainwindow.cc \ - utf8.cc \ - file.cc \ - bgl_babylon.cc \ - bgl.cc \ - initializing.cc \ - article_netmgr.cc \ - dictzip.c \ - btreeidx.cc \ - stardict.cc \ - chunkedstorage.cc \ - xdxf2html.cc \ - iconv.cc \ - lsa.cc \ - htmlescape.cc \ - dsl.cc \ - dsl_details.cc \ - filetype.cc \ - fsencoding.cc \ - groups.cc \ - groups_widgets.cc \ - instances.cc \ - article_maker.cc \ - scanpopup.cc \ - articleview.cc \ - externalviewer.cc \ - wordfinder.cc \ - groupcombobox.cc \ - keyboardstate.cc \ - mouseover.cc \ - preferences.cc \ - mutex.cc \ - mediawiki.cc \ - sounddir.cc \ - hunspell.cc \ - dictdfiles.cc \ - audiolink.cc \ - wstring.cc \ - wstring_qt.cc \ - processwrapper.cc \ - hotkeywrapper.cc \ - hotkeyedit.cc \ - langcoder.cc \ - editdictionaries.cc \ - loaddictionaries.cc \ - transliteration.cc \ - romaji.cc \ - belarusiantranslit.cc \ - russiantranslit.cc \ - german.cc \ - website.cc \ - orderandprops.cc \ - language.cc \ - dictionarybar.cc \ - broken_xrecord.cc \ - history.cc \ - atomic_rename.cc \ - articlewebview.cc \ - zipfile.cc \ - indexedzip.cc \ - termination.cc \ - greektranslit.cc \ - webmultimediadownload.cc \ - forvo.cc \ - country.cc \ - about.cc \ - programs.cc \ - parsecmdline.cc \ - maintabwidget.cc \ - mainstatusbar.cc \ - gdappstyle.cc \ - ufile.cc \ - xdxf.cc \ - sdict.cc \ - decompress.cc \ - aard.cc \ - mruqmenu.cc \ - dictinfo.cc \ - zipsounds.cc \ - stylescombobox.cc \ - extlineedit.cc \ - translatebox.cc \ - historypanewidget.cc \ - wordlist.cc \ - mdictparser.cc \ - mdx.cc \ - voiceengines.cc \ - ffmpegaudio.cc \ - articleinspector.cc \ - delegate.cc \ - zim.cc \ - gddebug.cc \ - gestures.cc \ - tiff.cc \ - dictheadwords.cc \ - fulltextsearch.cc \ - ftshelpers.cc \ - dictserver.cc \ - helpwindow.cc \ - slob.cc \ - ripemd.cc - -win32 { - FORMS += texttospeechsource.ui - SOURCES += mouseover_win32/ThTypes.c \ - wordbyauto.cc \ - guids.c \ - x64.cc \ - speechclient_win.cc \ - texttospeechsource.cc \ - speechhlp.cc - HEADERS += mouseover_win32/ThTypes.h \ - wordbyauto.hh \ - uiauto.hh \ - x64.hh \ - texttospeechsource.hh \ - sapi.hh \ - sphelper.hh \ - speechclient.hh \ - speechhlp.hh -} - -mac { - HEADERS += macmouseover.hh \ - texttospeechsource.hh \ - speechclient.hh - FORMS += texttospeechsource.ui - SOURCES += texttospeechsource.cc -} - -CONFIG( zim_support ) { - DEFINES += MAKE_ZIM_SUPPORT - LIBS += -llzma -} - -!CONFIG( no_extra_tiff_handler ) { - DEFINES += MAKE_EXTRA_TIFF_HANDLER - LIBS += -ltiff -} - -CONFIG( no_epwing_support ) { - DEFINES += NO_EPWING_SUPPORT -} - -!CONFIG( no_epwing_support ) { - HEADERS += epwing.hh \ - epwing_book.hh \ - epwing_charmap.hh - SOURCES += epwing.cc \ - epwing_book.cc \ - epwing_charmap.cc - LIBS += -leb -} - -CONFIG( chinese_conversion_support ) { - DEFINES += MAKE_CHINESE_CONVERSION_SUPPORT - FORMS += chineseconversion.ui - HEADERS += chinese.hh \ - chineseconversion.hh - SOURCES += chinese.cc \ - chineseconversion.cc - win32-msvc* { - Debug: LIBS += -lopenccd - Release: LIBS += -lopencc - } else { - mac { - LIBS += -lopencc.2 - } else { - LIBS += -lopencc - } - } -} - -RESOURCES += resources.qrc \ - flags.qrc -TRANSLATIONS += locale/ru_RU.ts \ - locale/zh_CN.ts \ - locale/cs_CZ.ts \ - locale/de_DE.ts \ - locale/el_GR.ts \ - locale/bg_BG.ts \ - locale/ar_SA.ts \ - locale/lt_LT.ts \ - locale/uk_UA.ts \ - locale/vi_VN.ts \ - locale/it_IT.ts \ - locale/pl_PL.ts \ - locale/ja_JP.ts \ - locale/zh_TW.ts \ - locale/sq_AL.ts \ - locale/pt_BR.ts \ - locale/es_AR.ts \ - locale/es_BO.ts \ - locale/es_ES.ts \ - locale/sk_SK.ts \ - locale/tr_TR.ts \ - locale/qu_WI.ts \ - locale/tg_TJ.ts \ - locale/ay_WI.ts \ - locale/be_BY.ts \ - locale/be_BY@latin.ts \ - locale/fr_FR.ts \ - locale/ko_KR.ts \ - locale/nl_NL.ts \ - locale/sr_SR.ts \ - locale/sv_SE.ts \ - locale/tk_TM.ts \ - locale/fa_IR.ts \ - locale/mk_MK.ts - -# Build version file -!isEmpty( hasGit ) { - QMAKE_EXTRA_TARGETS += revtarget - PRE_TARGETDEPS += $$PWD/version.txt - revtarget.target = $$PWD/version.txt - - !win32 { - revtarget.commands = cd $$PWD; git describe --tags --always --dirty > $$revtarget.target - } else { - revtarget.commands = git --git-dir=\"$$PWD/.git\" describe --tags --always --dirty > $$revtarget.target - } - - ALL_SOURCES = $$SOURCES $$HEADERS $$FORMS - for(src, ALL_SOURCES) { - QUALIFIED_SOURCES += $${PWD}/$${src} - } - revtarget.depends = $$QUALIFIED_SOURCES -} - -# This makes qmake generate translations - -win32:# Windows doesn't seem to have *-qt4 symlinks -isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease -isEmpty(QMAKE_LRELEASE):QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease-qt4 - -# The *.qm files might not exist when qmake is run for the first time, -# causing the standard install rule to be ignored, and no translations -# will be installed. With this, we create the qm files during qmake run. -!win32 { - system($${QMAKE_LRELEASE} -silent $${_PRO_FILE_} 2> /dev/null) -} - -updateqm.input = TRANSLATIONS -updateqm.output = locale/${QMAKE_FILE_BASE}.qm -updateqm.commands = $$QMAKE_LRELEASE \ - ${QMAKE_FILE_IN} \ - -qm \ - ${QMAKE_FILE_OUT} -updateqm.CONFIG += no_link -QMAKE_EXTRA_COMPILERS += updateqm -TS_OUT = $$TRANSLATIONS -TS_OUT ~= s/.ts/.qm/g -PRE_TARGETDEPS += $$TS_OUT - -include( qtsingleapplication/src/qtsingleapplication.pri ) - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.rc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.rc deleted file mode 100644 index f6fbce0cb0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.rc +++ /dev/null @@ -1,39 +0,0 @@ -#include "windows.h" - -IDI_ICON1 ICON DISCARDABLE "icons/programicon.ico" -IDI_ICON2 ICON DISCARDABLE "icons/programicon_old.ico" -#define GOLDENDICT_VER 1,5,0,0 -#define GOLDENDICT_VER_STR "1.5.0" - -#if !defined( _MSC_VER ) && !defined( GD_NO_MANIFEST ) // Visual Studio embeds the manifest automatically -1 RT_MANIFEST GoldenDict.exe.manifest -#endif - -1 VERSIONINFO - FILEVERSION GOLDENDICT_VER - PRODUCTVERSION GOLDENDICT_VER - FILEFLAGS 0x0L - FILEFLAGSMASK 0x3fL - FILEOS 0x00040004L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "CompanyName", "GoldenDict" - VALUE "FileDescription", "GoldenDict dictionary lookup program" - VALUE "FileVersion", GOLDENDICT_VER_STR - VALUE "LegalCopyright", "www.goldendict.org" - VALUE "InternalName", "goldendict" - VALUE "OriginalFilename", "goldendict.exe" - VALUE "ProductName", "GoldenDict" - VALUE "ProductVersion", GOLDENDICT_VER_STR - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.sln b/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.sln deleted file mode 100644 index 844420d9ff..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.sln +++ /dev/null @@ -1,38 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "goldendict", "goldendict.vcxproj", "{C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Debug-Qt4|Win32 = Debug-Qt4|Win32 - Debug-Qt4|x64 = Debug-Qt4|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - Release-Qt4|Win32 = Release-Qt4|Win32 - Release-Qt4|x64 = Release-Qt4|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug|Win32.ActiveCfg = Debug|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug|Win32.Build.0 = Debug|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug|x64.ActiveCfg = Debug|x64 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug|x64.Build.0 = Debug|x64 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug-Qt4|Win32.ActiveCfg = Debug-Qt4|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug-Qt4|Win32.Build.0 = Debug-Qt4|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug-Qt4|x64.ActiveCfg = Debug-Qt4|x64 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Debug-Qt4|x64.Build.0 = Debug-Qt4|x64 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release|Win32.ActiveCfg = Release|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release|Win32.Build.0 = Release|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release|x64.ActiveCfg = Release|x64 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release|x64.Build.0 = Release|x64 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release-Qt4|Win32.ActiveCfg = Release-Qt4|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release-Qt4|Win32.Build.0 = Release-Qt4|Win32 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release-Qt4|x64.ActiveCfg = Release-Qt4|x64 - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8}.Release-Qt4|x64.Build.0 = Release-Qt4|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.vcxproj b/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.vcxproj deleted file mode 100644 index 8c3d8a8040..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.vcxproj +++ /dev/null @@ -1,1373 +0,0 @@ - - - - - Debug-Qt4 - Win32 - - - Debug-Qt4 - x64 - - - Debug - x64 - - - Release-Qt4 - Win32 - - - Release-Qt4 - x64 - - - Release - Win32 - - - Debug - Win32 - - - Release - x64 - - - - {C3D65E5B-B7EE-3F85-B73F-6D65D9C501A8} - GoldenDict - Qt4VSv1.0 - - - - v110 - release\ - false - Unicode - Application - build\ - GoldenDict1 - true - - - v110 - release\ - false - Unicode - Application - build\ - GoldenDict1 - true - - - v110 - debug\ - false - Unicode - Application - build\ - GoldenDict1 - - - v110 - debug\ - false - Unicode - Application - build\ - GoldenDict1 - - - v110 - debug\ - false - Unicode - Application - build\ - GoldenDict1 - - - v110 - debug\ - false - Unicode - Application - build\ - GoldenDict1 - - - v110 - debug\ - false - Unicode - Application - build\ - GoldenDict1 - true - - - v110 - debug\ - false - Unicode - Application - build\ - GoldenDict1 - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(Configuration)\$(Platform)\ - $(Configuration)\$(Platform)\ - tmp\ - GoldenDict - GoldenDict - true - true - false - false - $(Configuration)\$(Platform)\ - $(Configuration)\$(Platform)\ - $(Configuration)\$(Platform)\ - $(Configuration)\$(Platform)\ - $(Configuration)\$(Platform)\ - $(Configuration)\$(Platform)\ - tmp\ - tmp\ - GoldenDict - GoldenDict - GoldenDict - GoldenDict - GoldenDict - GoldenDict - true - true - true - true - true - true - - - - - - - false - $(ProjectDir)\tmp\$(Configuration)\$(Platform)\ - true - - - false - $(ProjectDir)\tmp\$(Configuration)\$(Platform)\ - true - - - - - - ".";"winlibs\include";"qtsingleapplication\src";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKitWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQuick";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimediaWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtOpenGL";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtPrintSupport";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSvg";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKit";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimedia";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSensors";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtNetwork";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtXml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtGui";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtANGLE";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtCore";"build";"build";..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - Sync - MaxSpeed - __LZO_EXPORT1XXXX#__declspec(dllimport);_WINDOWS;UNICODE;WIN32;NO_CONSOLE;PROGRAM_VERSION="1.5.0+git";QT_NO_DEBUG;QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;NDEBUG;__WIN32;NOMINMAX;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - MultiThreadedDLL - true - true - true - Level3 - 4290;%(DisableSpecificWarnings) - true - Speed - false - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;hunspell.lib;lzo2.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\Qt5WebKitWidgets.lib;$(QTDIR)\lib\Qt5Quick.lib;$(QTDIR)\lib\Qt5MultimediaWidgets.lib;$(QTDIR)\lib\Qt5OpenGL.lib;$(QTDIR)\lib\Qt5PrintSupport.lib;$(QTDIR)\lib\Qt5Svg.lib;$(QTDIR)\lib\Qt5WebKit.lib;$(QTDIR)\lib\Qt5Qml.lib;$(QTDIR)\lib\Qt5Multimedia.lib;$(QTDIR)\lib\Qt5Widgets.lib;$(QTDIR)\lib\Qt5Sensors.lib;$(QTDIR)\lib\Qt5Network.lib;$(QTDIR)\lib\Qt5Xml.lib;$(QTDIR)\lib\Qt5Gui.lib;$(QTDIR)\lib\Qt5Core.lib;libEGL.lib;libGLESv2.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - false - true - false - $(OutDir)\GoldenDict.exe - true - Windows - true - 1.5 - true - - - Unsigned - None - 0 - - - _WINDOWS;UNICODE;WIN32;NO_CONSOLE;PROGRAM_VERSION=\"1.5.0+git\";QT_NO_DEBUG;QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - ".";"winlibs\include";"qtsingleapplication\src";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKitWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQuick";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimediaWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtOpenGL";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtPrintSupport";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSvg";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKit";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimedia";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSensors";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtNetwork";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtXml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtGui";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtANGLE";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtCore";"build";"build";..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - Sync - MaxSpeed - __WIN32;__WIN64;NOMINMAX;_CRT_SECURE_NO_WARNINGS;QT_NO_OPENSSL;UNICODE;WIN32;PROGRAM_VERSION="1.5.0+git";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;%(PreprocessorDefinitions) - false - MultiThreadedDLL - true - true - true - Level3 - 4290;%(DisableSpecificWarnings) - true - Speed - false - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;hunspell.lib;lzo2.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\Qt5WebKitWidgets.lib;$(QTDIR)\lib\Qt5Quick.lib;$(QTDIR)\lib\Qt5MultimediaWidgets.lib;$(QTDIR)\lib\Qt5OpenGL.lib;$(QTDIR)\lib\Qt5PrintSupport.lib;$(QTDIR)\lib\Qt5Svg.lib;$(QTDIR)\lib\Qt5WebKit.lib;$(QTDIR)\lib\Qt5Qml.lib;$(QTDIR)\lib\Qt5Multimedia.lib;$(QTDIR)\lib\Qt5Widgets.lib;$(QTDIR)\lib\Qt5Sensors.lib;$(QTDIR)\lib\Qt5Network.lib;$(QTDIR)\lib\Qt5Xml.lib;$(QTDIR)\lib\Qt5Gui.lib;$(QTDIR)\lib\Qt5Core.lib;libEGL.lib;libGLESv2.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc\x64;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - false - true - false - $(OutDir)\GoldenDict.exe - true - Windows - true - 1.5 - true - - - Unsigned - None - 0 - - - _WINDOWS;UNICODE;WIN32;NO_CONSOLE;PROGRAM_VERSION=\"1.5.0+git\";QT_NO_DEBUG;QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\x64\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - ".";"winlibs\include";"qtsingleapplication\src";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKitWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQuick";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimediaWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtOpenGL";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtPrintSupport";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSvg";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKit";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimedia";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSensors";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtNetwork";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtXml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtGui";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtANGLE";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtCore";"build";"build";..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - ProgramDatabase - Sync - Disabled - __LZO_EXPORT1XXXX#__declspec(dllimport);_CONSOLE;UNICODE;WIN32;PROGRAM_VERSION="1.5.0+git";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;DISABLE_INTERNAL_PLAYER;__WIN32;NOMINMAX;HUNSPELL_STATIC;USING_STATIC_LIBICONV;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - MultiThreadedDebugDLL - true - true - Level3 - 4290;%(DisableSpecificWarnings) - EnableFastChecks - true - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;hunspell.lib;lzo2.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\Qt5WebKitWidgetsd.lib;$(QTDIR)\lib\Qt5Quickd.lib;$(QTDIR)\lib\Qt5MultimediaWidgetsd.lib;$(QTDIR)\lib\Qt5OpenGLd.lib;$(QTDIR)\lib\Qt5PrintSupportd.lib;$(QTDIR)\lib\Qt5Svgd.lib;$(QTDIR)\lib\Qt5WebKitd.lib;$(QTDIR)\lib\Qt5Qmld.lib;$(QTDIR)\lib\Qt5Multimediad.lib;$(QTDIR)\lib\Qt5Widgetsd.lib;$(QTDIR)\lib\Qt5Sensorsd.lib;$(QTDIR)\lib\Qt5Networkd.lib;$(QTDIR)\lib\Qt5Xmld.lib;$(QTDIR)\lib\Qt5Guid.lib;$(QTDIR)\lib\Qt5Cored.lib;libEGLd.lib;libGLESv2d.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - true - true - $(OutDir)\GoldenDict.exe - true - Console - true - NotSet - 1.5 - true - true - iconv.dll - - - Unsigned - None - 0 - - - _CONSOLE;UNICODE;WIN32;PROGRAM_VERSION=\"1.5.0+git\";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;_DEBUG;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - ".";"winlibs\include";"qtsingleapplication\src";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKitWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQuick";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimediaWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtOpenGL";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtPrintSupport";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSvg";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWebKit";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtQml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtMultimedia";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtWidgets";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtSensors";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtNetwork";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtXml";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtGui";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtANGLE";"..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\include\QtCore";"build";"build";..\..\Qt\Qt5.1.0-msvc2012\5.1.0\msvc2012\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - ProgramDatabase - Sync - Disabled - __WIN32;__WIN64;NOMINMAX;_CRT_SECURE_NO_WARNINGS;QT_NO_OPENSSL;UNICODE;WIN32;DEBUG;_DEBUG;PROGRAM_VERSION="1.5.0+git";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;%(PreprocessorDefinitions) - false - MultiThreadedDebugDLL - true - true - Level3 - 4290;%(DisableSpecificWarnings) - EnableFastChecks - true - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;hunspell.lib;lzo2.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\Qt5WebKitWidgetsd.lib;$(QTDIR)\lib\Qt5Quickd.lib;$(QTDIR)\lib\Qt5MultimediaWidgetsd.lib;$(QTDIR)\lib\Qt5OpenGLd.lib;$(QTDIR)\lib\Qt5PrintSupportd.lib;$(QTDIR)\lib\Qt5Svgd.lib;$(QTDIR)\lib\Qt5WebKitd.lib;$(QTDIR)\lib\Qt5Qmld.lib;$(QTDIR)\lib\Qt5Multimediad.lib;$(QTDIR)\lib\Qt5Widgetsd.lib;$(QTDIR)\lib\Qt5Sensorsd.lib;$(QTDIR)\lib\Qt5Networkd.lib;$(QTDIR)\lib\Qt5Xmld.lib;$(QTDIR)\lib\Qt5Guid.lib;$(QTDIR)\lib\Qt5Cored.lib;libEGLd.lib;libGLESv2d.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc\x64;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - true - true - $(OutDir)\GoldenDict.exe - true - Console - true - NotSet - 1.5 - true - true - iconv.dll - - - Unsigned - None - 0 - - - _CONSOLE;UNICODE;WIN32;PROGRAM_VERSION=\"1.5.0+git\";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;_DEBUG;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\x64\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - ProgramDatabase - Sync - Disabled - __LZO_EXPORT1XXXX#__declspec(dllimport);QT_NO_OPENSSL;_CONSOLE;UNICODE;WIN32;PROGRAM_VERSION="1.5.0+git";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;DISABLE_INTERNAL_PLAYER;__WIN32;NOMINMAX;HUNSPELL_STATIC;USING_STATIC_LIBICONV;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - MultiThreadedDebugDLL - true - false - Level3 - 4290;%(DisableSpecificWarnings) - EnableFastChecks - true - .;winlibs\include;qtsingleapplication\src;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWebKit;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtCore;build;$(QTDIR)\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;lzo2.lib;hunspell.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\QtSvg4.lib;$(QTDIR)\lib\QtWebKit4.lib;$(QTDIR)\lib\QtNetwork4.lib;$(QTDIR)\lib\QtXml4.lib;$(QTDIR)\lib\QtGui4.lib;$(QTDIR)\lib\QtCore4.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - true - true - $(OutDir)\GoldenDict.exe - true - Console - true - NotSet - 1.5 - true - true - - - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc;%(AdditionalLibraryDirectories) - - - Unsigned - None - 0 - - - _CONSOLE;UNICODE;WIN32;PROGRAM_VERSION=\"1.5.0+git\";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;_DEBUG;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - .;winlibs\include;qtsingleapplication\src;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWebKit;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtCore;build;$(QTDIR)\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - ProgramDatabase - Sync - Disabled - __WIN32;__WIN64;NOMINMAX;_CRT_SECURE_NO_WARNINGS;QT_NO_OPENSSL;UNICODE;WIN32;DEBUG;_DEBUG;PROGRAM_VERSION="1.5.0+git";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;%(PreprocessorDefinitions) - false - MultiThreadedDebugDLL - true - false - Level3 - 4290;%(DisableSpecificWarnings) - EnableFastChecks - true - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;lzo2.lib;hunspell.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\QtSvg4.lib;$(QTDIR)\lib\QtWebKit4.lib;$(QTDIR)\lib\QtNetwork4.lib;$(QTDIR)\lib\QtXml4.lib;$(QTDIR)\lib\QtGui4.lib;$(QTDIR)\lib\QtCore4.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - true - true - $(OutDir)\GoldenDict.exe - true - Console - true - NotSet - 1.5 - true - true - - - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc\x64;%(AdditionalLibraryDirectories) - - - Unsigned - None - 0 - - - _CONSOLE;UNICODE;WIN32;PROGRAM_VERSION=\"1.5.0+git\";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;_DEBUG;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\x64\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - .;winlibs\include;qtsingleapplication\src;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWebKit;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtCore;build;$(QTDIR)\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - Sync - MaxSpeed - QT_NO_OPENSSL;UNICODE;WIN32;PROGRAM_VERSION="1.5.0+git";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;__WIN32;NOMINMAX;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - MultiThreadedDLL - true - false - Level3 - 4290;%(DisableSpecificWarnings) - Default - Neither - false - true - false - - None - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;lzo2.lib;hunspell.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\QtSvg4.lib;$(QTDIR)\lib\QtWebKit4.lib;$(QTDIR)\lib\QtNetwork4.lib;$(QTDIR)\lib\QtXml4.lib;$(QTDIR)\lib\QtGui4.lib;$(QTDIR)\lib\QtCore4.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - true - $(OutDir)\GoldenDict.exe - true - Windows - true - NotSet - 1.5 - - - true - - - true - true - false - - - Unsigned - None - 0 - - - _CONSOLE;UNICODE;WIN32;PROGRAM_VERSION=\"1.5.0+git\";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;_DEBUG;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)\GoldenDict.exe.manifest %(AdditionalManifestFiles) - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - .;winlibs\include;qtsingleapplication\src;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWebKit;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtCore;build;$(QTDIR)\mkspecs\win32-msvc2012;%(AdditionalIncludeDirectories) - -Zm200 -w34100 -w34189 %(AdditionalOptions) - false - Sync - MaxSpeed - __WIN32;__WIN64;NOMINMAX;_CRT_SECURE_NO_WARNINGS;QT_NO_OPENSSL;UNICODE;WIN32;PROGRAM_VERSION="1.5.0+git";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;%(PreprocessorDefinitions) - false - MultiThreadedDLL - true - false - Level3 - 4290;%(DisableSpecificWarnings) - Default - Neither - false - true - false - - - None - - - qtmain.lib;avutil-gd.lib;avcodec-gd.lib;avformat-gd.lib;ao.lib;z.lib;bz2.lib;lzo2.lib;hunspell.lib;iconv.lib;vorbisfile.lib;vorbis.lib;ogg.lib;wsock32.lib;psapi.lib;ole32.lib;oleaut32.lib;advapi32.lib;comdlg32.lib;$(QTDIR)\lib\QtSvg4.lib;$(QTDIR)\lib\QtWebKit4.lib;$(QTDIR)\lib\QtNetwork4.lib;$(QTDIR)\lib\QtXml4.lib;$(QTDIR)\lib\QtGui4.lib;$(QTDIR)\lib\QtCore4.lib;gdi32.lib;user32.lib;%(AdditionalDependencies) - $(QTDIR)\lib;$(ProjectDir)\winlibs\lib\msvc\x64;%(AdditionalLibraryDirectories) - "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions) - true - true - $(OutDir)\GoldenDict.exe - true - Windows - true - NotSet - 1.5 - - - true - - - true - true - false - - - Unsigned - None - 0 - - - _CONSOLE;UNICODE;WIN32;PROGRAM_VERSION=\"1.5.0+git\";QT_WEBKITWIDGETS_LIB;QT_QUICK_LIB;QT_MULTIMEDIAWIDGETS_LIB;QT_OPENGL_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;QT_WEBKIT_LIB;QT_QML_LIB;QT_MULTIMEDIA_LIB;QT_WIDGETS_LIB;QT_SENSORS_LIB;QT_NETWORK_LIB;QT_XML_LIB;QT_GUI_LIB;QT_CORE_LIB;QT_OPENGL_ES_2;QT_OPENGL_ES_2_ANGLE;_DEBUG;%(PreprocessorDefinitions) - - - copy $(ProjectDir)\winlibs\lib\msvc\x64\*.dll $(ProjectDir)\$(Configuration)\$(Platform) >NUL - - - $(ProjectDir)\GoldenDict.exe.manifest %(AdditionalManifestFiles) - - - $(ProjectDir)build\ui_%(Filename).h - $(QTDIR)\bin\uic.exe - - - false - $(OutDir)locale\%(Filename).qm - - - $(ProjectDir)build\moc_%(Filename).cpp - - - $(ProjectDir)build\qrc_%(Filename).cpp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CompileAsC - CompileAsC - CompileAsC - CompileAsC - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - false - false - true - true - _MSC_VER;%(PreprocessorDefinitions) - _MSC_VER;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.vcxproj.filters b/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.vcxproj.filters deleted file mode 100644 index d5137fdb18..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/goldendict.vcxproj.filters +++ /dev/null @@ -1,1953 +0,0 @@ - - - - - {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} - cpp;c;cxx;moc;h;def;odl;idl;res; - - - {71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11} - cpp;c;cxx;moc;h;def;odl;idl;res; - - - {3235203c-8555-42b3-9ec2-22de8a260dc6} - - - {99349809-55BA-4b9d-BF79-8FDBB0286EB3} - ui - false - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E} - qrc;* - false - - - {18a218fa-2efc-4ea0-a7d0-9cdea6a87bda} - png;* - - - {83b951bc-8d6e-48c9-a401-ab9d3f217987} - - - {5df1e6e9-52e2-4184-8424-291751501b81} - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {639EADAA-A684-42e4-A9AD-28FC9BCB8F7C} - ts;xlf - false - - - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - Generated Files - - - - - Resources - - - Customizations - - - Customizations - - - Customizations - - - Customizations - - - Customizations - - - Customizations - - - Customizations - - - Customizations - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Customizations - - - Customizations - - - - - Customizations - - - Customizations - - - Customizations - - - Customizations - - - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - Forms - - - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - Translations - - - - - Generated Files - - - Generated Files - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - Headers - - - - - Resources\Flags - - - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\CSS - - - Resources\Icons - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Flags - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - Resources\Icons - - - - - Resources - - - - - Resources - - - Resources - - - \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/greektranslit.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/greektranslit.cc deleted file mode 100644 index 82cdd74c3e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/greektranslit.cc +++ /dev/null @@ -1,843 +0,0 @@ -/* This file is (c) 2010 Jennie Petoumenou - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "greektranslit.hh" -#include "transliteration.hh" -#include - -namespace GreekTranslit { - -class GreekTable: public Transliteration::Table -{ -public: - - GreekTable(); -}; - -GreekTable::GreekTable() -{ - // Utf8 - - //I. LATIN -> MODERN & CLASSICAL GREEK (COMMON CHARACTERS) - ins("a", "α"); - ins("b", "β"); - ins("v", "β"); - ins("g", "γ"); - ins("d", "δ"); - ins("e", "ε"); - ins("z", "ζ"); - ins("h", "η"); - ins("q", "θ"); - ins("8", "θ"); - ins("i", "ι"); - ins("k", "κ"); - ins("l", "λ"); - ins("m", "μ"); - ins("n", "ν"); - ins("c", "ξ"); - ins("3", "ξ"); - ins("ks", "ξ"); - ins("o", "ο"); - ins("p", "π"); - ins("r", "ρ"); - ins("s", "σ"); - ins("s1", "σ"); - ins("j", "ς"); - ins("s2", "ς"); - ins("s\\n", "ς"); - ins("t", "τ"); - ins("u", "υ"); - ins("f", "φ"); - ins("x", "χ"); - ins("y", "ψ"); - ins("ps", "ψ"); - ins("w", "ω"); - - ins("A", "Α"); - ins("B", "Β"); - ins("V", "Β"); - ins("G", "Γ"); - ins("D", "Δ"); - ins("E", "Ε"); - ins("Z", "Ζ"); - ins("H", "Η"); - ins("Q", "Θ"); - ins("I", "Ι"); - ins("K", "Κ"); - ins("L", "Λ"); - ins("M", "Μ"); - ins("N", "Ν"); - ins("C", "Ξ"); - ins("KS", "Ξ"); - ins("Ks", "Ξ"); - ins("O", "Ο"); - ins("P", "Π"); - ins("R", "Τ"); - ins("S", "Σ"); - ins("S1", "Σ"); - ins("J", "Σ"); - ins("S2", "Σ"); - ins("S\\n", "Σ"); - ins("T", "Τ"); - ins("U", "Υ"); - ins("F", "Φ"); - ins("X", "Χ"); - ins("Y", "Ψ"); - ins("PS", "Ψ"); - ins("Ps", "Ψ"); - ins("W", "Ω"); - - //II. LATIN -> MODERN GREEK (DIACRITICS) - - ins("'a", "ά"); - ins("'e", "έ"); - ins("'h", "ή"); - ins("'i", "ί"); - ins("\"i", "ϊ"); - ins("\"'i", "ΐ"); - ins("'\"i", "ΐ"); - ins("'o", "ό"); - ins("'u", "ύ"); - ins("\"u", "ϋ"); - ins("\"'u", "ΰ"); - ins("'\"u", "ΰ"); - ins("'w", "ώ"); - - ins("'A", "Ά"); - ins("'E", "Έ"); - ins("'H", "Ή"); - ins("'I", "Ί"); - ins("\"I", "Ϊ"); - ins("'O", "Ό"); - ins("'U", "Ύ"); - ins("\"U", "Ϋ"); - ins("'W", "Ώ"); - - //IV. LATIN -> CLASSICAL GREEK (DIACRITICS - BETA CODE) - // Adapted from beta2unicode.py by James Tauber - - //ORDER: Breathing - Accent - - //uppercase (asterisk & capitals) - - //oceia - bareia - ins("*)A", "Ἀ"); - ins("*(A", "Ἁ"); - ins("*\\A", "Ὰ"); - ins("*/A", "Ά"); - ins("*)\\A", "Ἂ"); - ins("*(\\A", "Ἃ"); - ins("*)/A", "Ἄ"); - ins("*(/A", "Ἅ"); - - ins("*)E", "Ἐ"); - ins("*(E", "Ἑ"); - ins("*\\E", "Ὲ"); - ins("*/E", "Έ"); - ins("*)\\E", "Ἒ"); - ins("*(\\E", "Ἓ"); - ins("*)/E", "Ἔ"); - ins("*(/E", "Ἕ"); - - ins("*)H", "Ἠ"); - ins("*(H", "Ἡ"); - ins("*\\H", "Ὴ"); - ins("*/H", "Ή"); - ins("*)\\H", "Ἢ"); - ins("*(\\H", "Ἣ"); - ins("*)/H", "Ἤ"); - ins("*(/H", "Ἥ"); - - ins("*)I", "Ἰ"); - ins("*(I", "Ἱ"); - ins("*\\I", "Ὶ"); - ins("*/I", "Ί"); - ins("*)\\I", "Ἲ"); - ins("*(\\I", "Ἳ"); - ins("*)/I", "Ἴ"); - ins("*(/I", "Ἵ"); - - ins("*)O", "Ὀ"); - ins("*(O", "Ὁ"); - ins("*\\O", "Ὸ"); - ins("*/O", "Ό"); - ins("*)\\O", "Ὂ"); - ins("*(\\O", "Ὃ"); - ins("*)/O", "Ὄ"); - ins("*(/O", "Ὅ"); - - ins("*(R", "Ῥ"); - - ins("*(U", "Ὑ"); - ins("*\\U", "Ὺ"); - ins("*/U", "Ύ"); - ins("*(\\U", "Ὓ"); - ins("*(/U", "Ὕ"); - - ins("*)W", "Ὠ"); - ins("*(W", "Ὡ"); - ins("*\\W", "Ὼ"); - ins("*/W", "Ώ"); - ins("*)\\W", "Ὢ"); - ins("*(\\W", "Ὣ"); - ins("*)/W", "Ὤ"); - ins("*(/W", "Ὥ"); - - //perispwmenh - ins("*)=A", "Ἆ"); - ins("*(=A", "Ἇ"); - - ins("*)=H", "Ἦ"); - ins("*(=H", "Ἧ"); - - ins("*)=I", "Ἶ"); - ins("*(=I", "Ἷ"); - - ins("*(=U", "Ὗ"); - - ins("*)=W", "Ὦ"); - ins("*(=W", "Ὧ"); - - //upogegrammenh - ins("*A|", "ᾼ"); - ins("*)A|", "ᾈ"); - ins("*(A|", "ᾉ"); - ins("*)/A|", "ᾌ"); - ins("*(/A|", "ᾍ"); - ins("*)=A|", "ᾎ"); - ins("*(=A|", "ᾏ"); - - ins("*H|", "ῌ"); - ins("*)H|", "ᾘ"); - ins("*(H|", "ᾙ"); - ins("*)/H|", "ᾜ"); - ins("*(/H|", "ᾝ"); - ins("*)=H|", "ᾞ"); - ins("*(=H|", "ᾟ"); - - ins("*W|", "ῼ"); - ins("*)W|", "ᾨ"); - ins("*(W|", "ᾩ"); - ins("*)/W|", "ᾬ"); - ins("*(/W|", "ᾭ"); - ins("*)=W|", "ᾮ"); - ins("*(=W|", "ᾯ"); - - ins("*|A", "ᾼ"); - ins("*)|A", "ᾈ"); - ins("*(|A", "ᾉ"); - ins("*)/|A", "ᾌ"); - ins("*(/|A", "ᾍ"); - ins("*)=|A", "ᾎ"); - ins("*(=|A", "ᾏ"); - - ins("*|H", "ῌ"); - ins("*)|H", "ᾘ"); - ins("*(|H", "ᾙ"); - ins("*)/|H", "ᾜ"); - ins("*(/|H", "ᾝ"); - ins("*)=|H", "ᾞ"); - ins("*(=|H", "ᾟ"); - - ins("*|W", "ῼ"); - ins("*)|W", "ᾨ"); - ins("*(|W", "ᾩ"); - ins("*)/|W", "ᾬ"); - ins("*(/|W", "ᾭ"); - ins("*)=|W", "ᾮ"); - ins("*(=|W", "ᾯ"); - - //diairesis - ins("*+I", "Ϊ"); - ins("*+U", "Ϋ"); - - //uppercase (asterisk & small letters) - - //oceia - bareia - ins("*)a", "Ἀ"); - ins("*(a", "Ἁ"); - ins("*\\a", "Ὰ"); - ins("*/a", "Ά"); - ins("*)\\a", "Ἂ"); - ins("*(\\a", "Ἃ"); - ins("*)/a", "Ἄ"); - ins("*(/a", "Ἅ"); - - ins("*)e", "Ἐ"); - ins("*(e", "Ἑ"); - ins("*\\e", "Ὲ"); - ins("*/e", "Έ"); - ins("*)\\e", "Ἒ"); - ins("*(\\e", "Ἓ"); - ins("*)/e", "Ἔ"); - ins("*(/e", "Ἕ"); - - ins("*)h", "Ἠ"); - ins("*(h", "Ἡ"); - ins("*\\h", "Ὴ"); - ins("*/h", "Ή"); - ins("*)\\h", "Ἢ"); - ins("*(\\h", "Ἣ"); - ins("*)/h", "Ἤ"); - ins("*(/h", "Ἥ"); - - ins("*)i", "Ἰ"); - ins("*(i", "Ἱ"); - ins("*\\i", "Ὶ"); - ins("*/i", "Ί"); - ins("*)\\i", "Ἲ"); - ins("*(\\i", "Ἳ"); - ins("*)/i", "Ἴ"); - ins("*(/i", "Ἵ"); - - ins("*)o", "Ὀ"); - ins("*(o", "Ὁ"); - ins("*\\o", "Ὸ"); - ins("*/o", "Ό"); - ins("*)\\o", "Ὂ"); - ins("*(\\o", "Ὃ"); - ins("*)/o", "Ὄ"); - ins("*(/o", "Ὅ"); - - ins("*(r", "Ῥ"); - - ins("*(u", "Ὑ"); - ins("*\\u", "Ὺ"); - ins("*/u", "Ύ"); - ins("*(\\u", "Ὓ"); - ins("*(/u", "Ὕ"); - - ins("*)w", "Ὠ"); - ins("*(w", "Ὡ"); - ins("*\\w", "Ὼ"); - ins("*/w", "Ώ"); - ins("*)\\w", "Ὢ"); - ins("*(\\w", "Ὣ"); - ins("*)/w", "Ὤ"); - ins("*(/w", "Ὥ"); - - //perispwmenh - ins("*)=a", "Ἆ"); - ins("*(=a", "Ἇ"); - - ins("*)=h", "Ἦ"); - ins("*(=h", "Ἧ"); - - ins("*)=i", "Ἶ"); - ins("*(=i", "Ἷ"); - - ins("*(=u", "Ὗ"); - - ins("*)=w", "Ὦ"); - ins("*(=w", "Ὧ"); - - //upogegrammenh - ins("*a|", "ᾼ"); - ins("*)a|", "ᾈ"); - ins("*(a|", "ᾉ"); - ins("*)/a|", "ᾌ"); - ins("*(/a|", "ᾍ"); - ins("*)=a|", "ᾎ"); - ins("*(=a|", "ᾏ"); - - ins("*h|", "ῌ"); - ins("*)h|", "ᾘ"); - ins("*(h|", "ᾙ"); - ins("*)/h|", "ᾜ"); - ins("*(/h|", "ᾝ"); - ins("*)=h|", "ᾞ"); - ins("*(=h|", "ᾟ"); - - ins("*w|", "ῼ"); - ins("*)w|", "ᾨ"); - ins("*(w|", "ᾩ"); - ins("*)/w|", "ᾬ"); - ins("*(/w|", "ᾭ"); - ins("*)=w|", "ᾮ"); - ins("*(=w|", "ᾯ"); - - ins("*|a", "ᾼ"); - ins("*)|a", "ᾈ"); - ins("*(|a", "ᾉ"); - ins("*)/|a", "ᾌ"); - ins("*(/|a", "ᾍ"); - ins("*)=|a", "ᾎ"); - ins("*(=|a", "ᾏ"); - - ins("*|h", "ῌ"); - ins("*)|h", "ᾘ"); - ins("*(|h", "ᾙ"); - ins("*)/|h", "ᾜ"); - ins("*(/|h", "ᾝ"); - ins("*)=|h", "ᾞ"); - ins("*(=|h", "ᾟ"); - - ins("*|w", "ῼ"); - ins("*)|w", "ᾨ"); - ins("*(|w", "ᾩ"); - ins("*)/|w", "ᾬ"); - ins("*(/|w", "ᾭ"); - ins("*)=|w", "ᾮ"); - ins("*(=|w", "ᾯ"); - - //diairesis - ins("*+i", "Ϊ"); - ins("*+u", "Ϋ"); - - //uppercase (capitals) - - //oceia - bareia - ins("A)", "Ἀ"); - ins("A(", "Ἁ"); - ins("A\\", "Ὰ"); - ins("A/", "Ά"); - ins("A)\\", "Ἂ"); - ins("A(\\", "Ἃ"); - ins("A)/", "Ἄ"); - ins("A(/", "Ἅ"); - - ins("E)", "Ἐ"); - ins("E(", "Ἑ"); - ins("E\\", "Ὲ"); - ins("E/", "Έ"); - ins("E)\\", "Ἒ"); - ins("E(\\", "Ἓ"); - ins("E)/", "Ἔ"); - ins("E(/", "Ἕ"); - - ins("H)", "Ἠ"); - ins("H(", "Ἡ"); - ins("H\\", "Ὴ"); - ins("H/", "Ή"); - ins("H)\\", "Ἢ"); - ins("H(\\", "Ἣ"); - ins("H)/", "Ἤ"); - ins("H(/", "Ἥ"); - - ins("I)", "Ἰ"); - ins("I(", "Ἱ"); - ins("I\\", "Ὶ"); - ins("I/", "Ί"); - ins("I)\\", "Ἲ"); - ins("I(\\", "Ἳ"); - ins("I)/", "Ἴ"); - ins("I(/", "Ἵ"); - - ins("O)", "Ὀ"); - ins("O(", "Ὁ"); - ins("O\\", "Ὸ"); - ins("O/", "Ό"); - ins("O)\\", "Ὂ"); - ins("O(\\", "Ὃ"); - ins("O)/", "Ὄ"); - ins("O(/", "Ὅ"); - - ins("R(", "Ῥ"); - - ins("U)", "ὐ"); - ins("U(", "Ὑ"); - ins("U\\", "Ὺ"); - ins("U/", "Ύ"); - ins("U)\\", "ὒ"); - ins("U(\\", "Ὓ"); - ins("U)/", "ὔ"); - ins("U(/", "Ὕ"); - - ins("W)", "Ὠ"); - ins("W(", "Ὡ"); - ins("W\\", "Ὼ"); - ins("W/", "Ώ"); - ins("W)\\", "Ὢ"); - ins("W(\\", "Ὣ"); - ins("W)/", "Ὤ"); - ins("W(/", "Ὥ"); - - //perispwmenh - ins("A=", "ᾶ"); - ins("A)=", "Ἆ"); - ins("A(=", "Ἇ"); - - ins("H=", "ῆ"); - ins("H)=", "Ἦ"); - ins("H(=", "Ἧ"); - - ins("I=", "ῖ"); - ins("I)=", "Ἶ"); - ins("I(=", "Ἷ"); - - ins("U=", "ῦ"); - ins("U)=", "ὖ"); - ins("U(=", "Ὗ"); - - ins("W=", "ῶ"); - ins("W)=", "Ὦ"); - ins("W(=", "Ὧ"); - - //upogegrammenh - ins("A|", "ᾼ"); - ins("A)|", "ᾈ"); - ins("A(|", "ᾉ"); - ins("A/|", "ᾴ"); - ins("A)/|", "ᾌ"); - ins("A(/|", "ᾍ"); - ins("A=|", "ᾷ"); - ins("A)=|", "ᾎ"); - ins("A(=|", "ᾏ"); - - ins("H|", "ῌ"); - ins("H)|", "ᾘ"); - ins("H(|", "ᾙ"); - ins("H/|", "ῄ"); - ins("H)/|", "ᾜ"); - ins("H(/|", "ᾝ"); - ins("H=|", "ῇ"); - ins("H)=|", "ᾞ"); - ins("H(=|", "ᾟ"); - - ins("W|", "ῼ"); - ins("W)|", "ᾨ"); - ins("W(|", "ᾩ"); - ins("W/|", "ῴ"); - ins("W)/|", "ᾬ"); - ins("W(/|", "ᾭ"); - ins("W=|", "ῷ"); - ins("W)=|", "ᾮ"); - ins("W(=|", "ᾯ"); - - //diairesis - ins("I+", "Ϊ"); - ins("I+\\", "ῒ"); - ins("I+/", "ΐ"); - ins("U+", "Ϋ"); - ins("U+\\", "ῢ"); - ins("U+/", "ΰ"); - - //lowercase (small letters) - - //oceia - bareia - ins("a)", "ἀ"); - ins("a(", "ἁ"); - ins("a\\", "ὰ"); - ins("a/", "ά"); - ins("a)\\", "ἂ"); - ins("a(\\", "ἃ"); - ins("a)/", "ἄ"); - ins("a(/", "ἅ"); - - ins("e)", "ἐ"); - ins("e(", "ἑ"); - ins("e\\", "ὲ"); - ins("e/", "έ"); - ins("e)\\", "ἒ"); - ins("e(\\", "ἓ"); - ins("e)/", "ἔ"); - ins("e(/", "ἕ"); - - ins("h)", "ἠ"); - ins("h(", "ἡ"); - ins("h\\", "ὴ"); - ins("h/", "ή"); - ins("h)\\", "ἢ"); - ins("h(\\", "ἣ"); - ins("h)/", "ἤ"); - ins("h(/", "ἥ"); - - ins("i)", "ἰ"); - ins("i(", "ἱ"); - ins("i\\", "ὶ"); - ins("i/", "ί"); - ins("i)\\", "ἲ"); - ins("i(\\", "ἳ"); - ins("i)/", "ἴ"); - ins("i(/", "ἵ"); - - ins("o)", "ὀ"); - ins("o(", "ὁ"); - ins("o\\", "ὸ"); - ins("o/", "ό"); - ins("o)\\", "ὂ"); - ins("o(\\", "ὃ"); - ins("o)/", "ὄ"); - ins("o(/", "ὅ"); - - ins("r(", "ῤ"); - - ins("u)", "ὐ"); - ins("u(", "ὑ"); - ins("u\\", "ὺ"); - ins("u/", "ύ"); - ins("u)\\", "ὒ"); - ins("u(\\", "ὓ"); - ins("u)/", "ὔ"); - ins("u(/", "ὕ"); - - ins("w)", "ὠ"); - ins("w(", "ὡ"); - ins("w\\", "ὼ"); - ins("w/", "ώ"); - ins("w)\\", "ὢ"); - ins("w(\\", "ὣ"); - ins("w)/", "ὤ"); - ins("w(/", "ὥ"); - - //perispwmenh - ins("a=", "ᾶ"); - ins("a)=", "ἆ"); - ins("a(=", "ἇ"); - - ins("h=", "ῆ"); - ins("h)=", "ἦ"); - ins("h(=", "ἧ"); - - ins("i=", "ῖ"); - ins("i)=", "ἶ"); - ins("i(=", "ἷ"); - - ins("u=", "ῦ"); - ins("u)=", "ὖ"); - ins("u(=", "ὗ"); - - ins("w=", "ῶ"); - ins("w)=", "ὦ"); - ins("w(=", "ὧ"); - - //upogegrammenh - ins("a|", "ᾳ"); - ins("a)|", "ᾀ"); - ins("a(|", "ᾁ"); - ins("a/|", "ᾴ"); - ins("a)/|", "ᾄ"); - ins("a(/|", "ᾅ"); - ins("a=|", "ᾷ"); - ins("a)=|", "ᾆ"); - ins("a(=|", "ᾇ"); - - ins("h|", "ῃ"); - ins("h)|", "ᾐ"); - ins("h(|", "ᾑ"); - ins("h/|", "ῄ"); - ins("h)/|", "ᾔ"); - ins("h(/|", "ᾕ"); - ins("h=|", "ῇ"); - ins("h)=|", "ᾖ"); - ins("h(=|", "ᾗ"); - - ins("w|", "ῳ"); - ins("w)|", "ᾠ"); - ins("w(|", "ᾡ"); - ins("w/|", "ῴ"); - ins("w)/|", "ᾤ"); - ins("w(/|", "ᾥ"); - ins("w=|", "ῷ"); - ins("w)=|", "ᾦ"); - ins("w(=|", "ᾧ"); - - //diairesis - ins("i+", "ϊ"); - ins("i+\\", "ῒ"); - ins("i+/", "ΐ"); - ins("u+", "ϋ"); - ins("u+\\", "ῢ"); - ins("u+/", "ΰ"); - - - //ORDER: ACCENT - BREATHING (UNOFFICIAL) - - //uppercase (capitals) - - //oceia - bareia - ins("A\\)", "Ἂ"); - ins("A\\(", "Ἃ"); - ins("A/)", "Ἄ"); - ins("A/(", "Ἅ"); - - ins("E\\)", "Ἒ"); - ins("E\\(", "Ἓ"); - ins("E/)", "Ἔ"); - ins("E/(", "Ἕ"); - - ins("H\\)", "Ἢ"); - ins("H\\(", "Ἣ"); - ins("H/)", "Ἤ"); - ins("H/(", "Ἥ"); - - ins("I\\)", "Ἲ"); - ins("I\\(", "Ἳ"); - ins("I/)", "Ἴ"); - ins("I/(", "Ἵ"); - - ins("O\\)", "Ὂ"); - ins("O\\(", "Ὃ"); - ins("O/)", "Ὄ"); - ins("O/(", "Ὅ"); - - ins("U\\(", "Ὓ"); - ins("U/(", "Ὕ"); - - ins("W\\)", "Ὢ"); - ins("W\\(", "Ὣ"); - ins("W/)", "Ὤ"); - ins("W/(", "Ὥ"); - - //perispwmenh - ins("A=)", "Ἆ"); - ins("A=(", "Ἇ"); - - ins("H=)", "Ἦ"); - ins("H=(", "Ἧ"); - - ins("I=)", "Ἶ"); - ins("I=(", "Ἷ"); - - ins("U=(", "Ὗ"); - - ins("W=)", "Ὦ"); - ins("W=(", "Ὧ"); - - //upogegrammenh - ins("A/)|", "ᾌ"); - ins("A/(|", "ᾍ"); - ins("A=)|", "ᾎ"); - ins("A=(|", "ᾏ"); - - ins("H/)|", "ᾜ"); - ins("H/(|", "ᾝ"); - ins("H=)|", "ᾞ"); - ins("H=(|", "ᾟ"); - - ins("W/)|", "ᾬ"); - ins("W/(|", "ᾭ"); - ins("W=)|", "ᾮ"); - ins("W=(|", "ᾯ"); - - //lowercase (small letters) - - //oceia - bareia - ins("a\\)", "ἂ"); - ins("a\\(", "ἃ"); - ins("a/)", "ἄ"); - ins("a/(", "ἅ"); - - - ins("e\\)", "ἒ"); - ins("e\\(", "ἓ"); - ins("e/)", "ἔ"); - ins("e/(", "ἕ"); - - ins("h\\)", "ἢ"); - ins("h\\(", "ἣ"); - ins("h/)", "ἤ"); - ins("h/(", "ἥ"); - - ins("i\\)", "ἲ"); - ins("i\\(", "ἳ"); - ins("i/)", "ἴ"); - ins("i/(", "ἵ"); - - ins("o\\)", "ὂ"); - ins("o\\(", "ὃ"); - ins("o/)", "ὄ"); - ins("o/(", "ὅ"); - - ins("u\\)", "ὒ"); - ins("u\\(", "ὓ"); - ins("u/)", "ὔ"); - ins("u/(", "ὕ"); - - ins("w\\)", "ὢ"); - ins("w\\(", "ὣ"); - ins("w/)", "ὤ"); - ins("w/(", "ὥ"); - - //perispwmenh - ins("a=)", "ἆ"); - ins("a=(", "ἇ"); - - ins("h=)", "ἦ"); - ins("h=(", "ἧ"); - - ins("i=)", "ἶ"); - ins("i=(", "ἷ"); - - ins("u=)", "ὖ"); - ins("u=(", "ὗ"); - - ins("w=)", "ὦ"); - ins("w=(", "ὧ"); - - //upogegrammenh - ins("a/)|", "ᾄ"); - ins("a/(|", "ᾅ"); - ins("a=)|", "ᾆ"); - ins("a=(|", "ᾇ"); - - ins("h/)|", "ᾔ"); - ins("h/(|", "ᾕ"); - ins("h=)|", "ᾖ"); - ins("h=(|", "ᾗ"); - - ins("w/)|", "ᾤ"); - ins("w/(|", "ᾥ"); - ins("w=)|", "ᾦ"); - ins("w=(|", "ᾧ"); - - //diairesis - ins("i\\+", "ῒ"); - ins("i/+", "ΐ"); - ins("u\\+", "ῢ"); - ins("u/+", "ΰ"); - - //IΙI. MODERN GREEK <-> CLASSICAL GREEK - //convert tonos to oceia - - ins("ά", "ά"); - ins("έ", "έ"); - ins("ή", "ή"); - ins("ί", "ί"); - ins("ΐ", "ΐ"); - ins("ό", "ό"); - ins("ύ", "ύ"); - ins("ΰ", "ΰ"); - ins("ώ", "ώ"); - - ins("Ά", "Ά"); - ins("Έ", "Έ"); - ins("Ή", "Ή"); - ins("Ί", "Ί"); - ins("Ό", "Ό"); - ins("Ύ", "Ύ"); - ins("Ώ", "Ώ"); - - //convert oceia to tonos - - ins("ά", "ά"); - ins("έ", "έ"); - ins("ή", "ή"); - ins("ί", "ί"); - ins("ΐ", "ΐ"); - ins("ό", "ό"); - ins("ύ", "ύ"); - ins("ΰ", "ΰ"); - ins("ώ", "ώ"); - - ins("Ά", "Ά"); - ins("Έ", "Έ"); - ins("Ή", "Ή"); - ins("Ί", "Ί"); - ins("Ό", "Ό"); - ins("Ύ", "Ύ"); - ins("Ώ", "Ώ"); - - -} - -sptr< Dictionary::Class > makeDictionary() throw( std::exception ) -{ - static GreekTable t; - - return new Transliteration::TransliterationDictionary( "baa9e37a1aa69cdb5daca14a48ffe5ae", - QCoreApplication::translate( "GreekTranslit", "Greek Transliteration" ).toUtf8().data(), - QIcon( ":/flags/gr.png" ), t ); -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/greektranslit.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/greektranslit.hh deleted file mode 100644 index fcf91a7634..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/greektranslit.hh +++ /dev/null @@ -1,16 +0,0 @@ -/* This file is (c) 2010 Jennie Petoumenou - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef GREEKTRANSLIT_HH -#define GREEKTRANSLIT_HH - -#include "dictionary.hh" - -// Support for Greek transliteration -namespace GreekTranslit { - -sptr< Dictionary::Class > makeDictionary() throw( std::exception ); - -} - -#endif // GREEKTRANSLIT_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupcombobox.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupcombobox.cc deleted file mode 100644 index 3d8a88b16c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupcombobox.cc +++ /dev/null @@ -1,131 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "groupcombobox.hh" -#include -#include - -GroupComboBox::GroupComboBox( QWidget * parent ): QComboBox( parent ), - popupAction( this ), - selectNextAction( this ), - selectPreviousAction( this ) -{ - setSizeAdjustPolicy( AdjustToContents ); - setToolTip( tr( "Choose a Group (Alt+G)" ) ); - - popupAction.setShortcut( QKeySequence( "Alt+G" ) ); - connect( &popupAction, SIGNAL( triggered() ), - this, SLOT( popupGroups() ) ); - - addAction( &popupAction ); - - selectNextAction.setShortcut( QKeySequence( "Alt+PgDown" ) ); - connect( &selectNextAction, SIGNAL( triggered() ), - this, SLOT( selectNextGroup() ) ); - addAction( &selectNextAction ); - - selectPreviousAction.setShortcut( QKeySequence( "Alt+PgUp" ) ); - connect( &selectPreviousAction, SIGNAL( triggered() ), - this, SLOT( selectPreviousGroup() ) ); - addAction( &selectPreviousAction ); -} - -void GroupComboBox::fill( Instances::Groups const & groups ) -{ - unsigned prevId = 0; - - if ( count() ) - prevId = itemData( currentIndex() ).toUInt(); - - clear(); - - for( QMap< int, int >::iterator i = shortcuts.begin(); i != shortcuts.end(); ++i ) - releaseShortcut( i.key() ); - - shortcuts.clear(); - - for( unsigned x = 0; x < groups.size(); ++x ) - { - addItem( groups[ x ].makeIcon(), - groups[ x ].name, groups[ x ].id ); - - if ( prevId == groups[ x ].id ) - setCurrentIndex( x ); - - // Create a shortcut - - if ( !groups[ x ].shortcut.isEmpty() ) - { - int id = grabShortcut( groups[ x ].shortcut ); - setShortcutEnabled( id ); - - shortcuts.insert( id, x ); - } - } -} - -bool GroupComboBox::event( QEvent * event ) -{ - if ( event->type() == QEvent::Shortcut ) - { - QShortcutEvent * ev = ( QShortcutEvent * ) event; - - QMap< int, int >::const_iterator i = shortcuts.find( ev->shortcutId() ); - - if ( i != shortcuts.end() ) - { - ev->accept(); - setCurrentIndex( i.value() ); - return true; - } - } - - return QComboBox::event( event ); - -} - - -void GroupComboBox::setCurrentGroup( unsigned id ) -{ - for( int x = 0; x < count(); ++x ) - { - if ( itemData( x ).toUInt() == id ) - { - setCurrentIndex( x ); - break; - } - } -} - -unsigned GroupComboBox::getCurrentGroup() const -{ - if ( !count() ) - return 0; - - return itemData( currentIndex() ).toUInt(); -} - -void GroupComboBox::popupGroups() -{ - showPopup(); -} - -void GroupComboBox::selectNextGroup() -{ - if( count() <= 1 ) - return; - int n = currentIndex() + 1; - if( n >= count() ) - n = 0; - setCurrentIndex( n ); -} - -void GroupComboBox::selectPreviousGroup() -{ - if( count() <= 1 ) - return; - int n = currentIndex() - 1; - if( n < 0 ) - n = count() - 1; - setCurrentIndex( n ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupcombobox.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupcombobox.hh deleted file mode 100644 index ec4744a474..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupcombobox.hh +++ /dev/null @@ -1,50 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __GROUPCOMBOBOX_HH_INCLUDED__ -#define __GROUPCOMBOBOX_HH_INCLUDED__ - -#include -#include -#include "instances.hh" - -/// This is a combo box which is for choosing the dictionary group -class GroupComboBox: public QComboBox -{ - Q_OBJECT - -public: - - GroupComboBox( QWidget * parent ); - - /// Fills combo-box with the given groups - void fill( Instances::Groups const & ); - - /// Chooses the given group in the combobox. If there's no such group, - /// does nothing. - void setCurrentGroup( unsigned id ); - - - /// Returns current group. - unsigned getCurrentGroup() const; - -protected: - - /// We handle shortcut events here. - virtual bool event( QEvent * event ); - -private slots: - - void popupGroups(); - void selectNextGroup(); - void selectPreviousGroup(); - -private: - - QAction popupAction; - QAction selectNextAction, selectPreviousAction; - QMap< int, int > shortcuts; -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.cc deleted file mode 100644 index a686c40048..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.cc +++ /dev/null @@ -1,246 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "groups.hh" -#include "instances.hh" -#include "dictionary.hh" -#include -#include - -using std::vector; - -Groups::Groups( QWidget * parent, - vector< sptr< Dictionary::Class > > const & dicts_, - Config::Groups const & groups_, - Config::Group const & order ): QWidget( parent ), - dicts( dicts_ ), groups( groups_ ) -{ - ui.setupUi( this ); - - // Populate the dictionaries' list - - ui.dictionaries->setAsSource(); - ui.dictionaries->populate( Instances::Group( order, dicts ).dictionaries, - dicts ); - - ui.searchLine->applyTo( ui.dictionaries ); - addAction( ui.searchLine->getFocusAction() ); - - groupsListMenu = new QMenu( tr( "Group tabs" ), ui.groups ); - - groupsListButton = new QToolButton( ui.groups ); - groupsListButton->setAutoRaise( true ); - groupsListButton->setIcon( QIcon( ":/icons/windows-list.png" ) ); - groupsListButton->setMenu( groupsListMenu ); - groupsListButton->setToolTip( tr( "Open groups list" ) ); - groupsListButton->setPopupMode( QToolButton::InstantPopup ); - ui.groups->setCornerWidget( groupsListButton ); - groupsListButton->setFocusPolicy( Qt::ClickFocus ); - - connect(groupsListMenu, SIGNAL( aboutToShow() ), this, SLOT( fillGroupsMenu() ) ); - connect(groupsListMenu, SIGNAL( triggered( QAction * ) ), - this, SLOT( switchToGroup( QAction * ) ) ); - - // Populate groups' widget - - ui.groups->populate( groups, dicts, ui.dictionaries->getCurrentDictionaries() ); - - connect( ui.addGroup, SIGNAL( clicked() ), - this, SLOT( addNew() ) ); - connect( ui.renameGroup, SIGNAL( clicked() ), - this, SLOT( renameCurrent() ) ); - connect( ui.removeGroup, SIGNAL( clicked() ), - this, SLOT( removeCurrent() ) ); - connect( ui.removeAllGroups, SIGNAL( clicked() ), - this, SLOT( removeAll() ) ); - connect( ui.addDictsToGroup, SIGNAL( clicked() ), - this, SLOT( addToGroup() ) ); - connect( ui.dictionaries, SIGNAL( doubleClicked(const QModelIndex &) ), - this, SLOT( addToGroup() ) ); - connect( ui.removeDictsFromGroup, SIGNAL( clicked() ), - this, SLOT( removeFromGroup() ) ); - connect( ui.autoGroups, SIGNAL( clicked() ), - this, SLOT( addAutoGroups() ) ); - connect( ui.groups, SIGNAL( showDictionaryInfo( QString const & ) ), - this, SIGNAL( showDictionaryInfo( QString const & ) ) ); - - ui.dictionaries->setContextMenuPolicy( Qt::CustomContextMenu ); - connect( ui.dictionaries, SIGNAL( customContextMenuRequested( QPoint ) ), - this, SLOT( showDictInfo( QPoint ) ) ); - - countChanged(); -} - -void Groups::editGroup( unsigned id ) -{ - for( int x = 0; x < groups.size(); ++x ) - { - if ( groups[ x ].id == id ) - { - ui.groups->setCurrentIndex( x ); - ui.groups->currentWidget()->setFocus(); - break; - } - } -} - -void Groups::updateDictionaryOrder( Config::Group const & order ) -{ - // Make sure it differs from what we have - - Instances::Group newOrder( order, dicts ); - - if ( ui.dictionaries->getCurrentDictionaries() != newOrder.dictionaries ) - { - // Repopulate - ui.dictionaries->populate( Instances::Group( order, dicts ).dictionaries, - dicts ); - } -} - -Config::Groups Groups::getGroups() const -{ - return ui.groups->makeGroups(); -} - -void Groups::countChanged() -{ - bool en = ui.groups->count(); - - ui.renameGroup->setEnabled( en ); - ui.removeGroup->setEnabled( en ); - ui.removeAllGroups->setEnabled( en ); - - int stretch = ui.groups->count() / 5; - if( stretch > 3 ) stretch = 3; - ui.gridLayout->setColumnStretch( 2, stretch ); -} - -void Groups::addNew() -{ - bool ok; - - QString name = QInputDialog::getText( this, tr( "Add group" ), - tr("Give a name for the new group:"), QLineEdit::Normal, - "", &ok ); - - if ( ok ) - { - ui.groups->addNewGroup( name ); - countChanged(); - } -} - -void Groups::addAutoGroups() -{ - ui.groups->addAutoGroups(); - countChanged(); -} - -void Groups::renameCurrent() -{ - int current = ui.groups->currentIndex(); - - if ( current < 0 ) - return; - - bool ok; - - QString name = QInputDialog::getText( this, tr("Rename group"), - tr("Give a new name for the group:"), QLineEdit::Normal, - ui.groups->getCurrentGroupName(), &ok ); - - if ( ok ) - ui.groups->renameCurrentGroup( name ); -} - -void Groups::removeCurrent() -{ - int current = ui.groups->currentIndex(); - - if ( current >= 0 && QMessageBox::question( this, tr( "Remove group" ), - tr( "Are you sure you want to remove the group %1?" ).arg( ui.groups->getCurrentGroupName() ), - QMessageBox::Yes, QMessageBox::Cancel ) == QMessageBox::Yes ) - { - ui.groups->removeCurrentGroup(); - countChanged(); - } -} - -void Groups::removeAll() -{ - int current = ui.groups->currentIndex(); - - if ( current >= 0 && QMessageBox::question( this, tr( "Remove all groups" ), - tr( "Are you sure you want to remove all the groups?" ), - QMessageBox::Yes, QMessageBox::Cancel ) == QMessageBox::Yes ) - { - ui.groups->removeAllGroups(); - countChanged(); - } -} - -void Groups::addToGroup() -{ - int current = ui.groups->currentIndex(); - - if ( current >= 0 ) - { - ui.groups->getCurrentModel()->addSelectedUniqueFromModel( ui.dictionaries->selectionModel() ); - } -} - -void Groups::removeFromGroup() -{ - int current = ui.groups->currentIndex(); - - if ( current >= 0 ) - { - ui.groups->getCurrentModel()->removeSelectedRows( ui.groups->getCurrentSelectionModel() ); - } -} - -void Groups::showDictInfo( QPoint const & pos ) -{ - QVariant data = ui.dictionaries->getModel()->data( - ui.searchLine->mapToSource(ui.dictionaries->indexAt( pos ) ), Qt::EditRole ); - QString id; - if( data.canConvert< QString >() ) - id = data.toString(); - - if( !id.isEmpty() ) - { - vector< sptr< Dictionary::Class > > const & dicts = ui.dictionaries->getCurrentDictionaries(); - unsigned n; - for( n = 0; n < dicts.size(); n++ ) - if( id.compare( QString::fromUtf8( dicts.at( n )->getId().c_str() ) ) == 0 ) - break; - if( n < dicts.size() ) - emit showDictionaryInfo( id ); - } -} - -void Groups::fillGroupsMenu() -{ - groupsListMenu->clear(); - for( int i = 0; i < ui.groups->count(); i++ ) - { - QAction * act = groupsListMenu->addAction( ui.groups->tabText( i ) ); - act->setData( i ); - if (ui.groups->currentIndex() == i) - { - QFont f( act->font() ); - f.setBold( true ); - act->setFont( f ); - } - } - - if( groupsListMenu->actions().size() > 1 ) - groupsListMenu->setActiveAction( groupsListMenu->actions().at( ui.groups->currentIndex() ) ); -} - -void Groups::switchToGroup( QAction * act ) -{ - int idx = act->data().toInt(); - ui.groups->setCurrentIndex(idx); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.hh deleted file mode 100644 index 5ad5aea16e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.hh +++ /dev/null @@ -1,61 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __GROUPS_HH_INCLUDED__ -#define __GROUPS_HH_INCLUDED__ - -#include "ui_groups.h" -#include "config.hh" -#include "dictionary.hh" -#include "groups_widgets.hh" -#include -#include - -class Groups: public QWidget -{ - Q_OBJECT - -public: - Groups( QWidget * parent, - std::vector< sptr< Dictionary::Class > > const &, - Config::Groups const &, - Config::Group const & order ); - - /// Instructs the dialog to position itself on editing the given group. - void editGroup( unsigned id ); - - /// Should be called when the dictionary order has changed to reflect on - /// that changes. It would only do anything if the order has actually - /// changed. - void updateDictionaryOrder( Config::Group const & order ); - - Config::Groups getGroups() const; - -private: - Ui::Groups ui; - std::vector< sptr< Dictionary::Class > > const & dicts; - Config::Groups groups; - - QToolButton * groupsListButton; - QMenu * groupsListMenu; - - // Reacts to the event that the number of groups is possibly changed - void countChanged(); - -private slots: - void addNew(); - void renameCurrent(); - void removeCurrent(); - void removeAll(); - void addToGroup(); - void removeFromGroup(); - void addAutoGroups(); - void showDictInfo( const QPoint & pos ); - void fillGroupsMenu(); - void switchToGroup( QAction * act ); - -signals: - void showDictionaryInfo( QString const & id ); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.ui deleted file mode 100644 index 2bb633fb7f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups.ui +++ /dev/null @@ -1,238 +0,0 @@ - - - Groups - - - - 0 - 0 - 662 - 319 - - - - Groups - - - - - - - - Dictionaries available: - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 32 - 32 - - - - - 32 - 32 - - - - Add selected dictionaries to group (Ins) - - - > - - - Ins - - - - - - - - 32 - 32 - - - - - 32 - 32 - - - - Remove selected dictionaries from group (Del) - - - < - - - Del - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Groups: - - - - - - - QTabWidget::North - - - Qt::ElideRight - - - - Tab 2 - - - - - - - - - - Create new dictionary group - - - &Add group - - - - - - - Create language-based groups - - - Auto groups - - - - - - - Rename current dictionary group - - - Re&name group - - - - - - - Remove current dictionary group - - - &Remove group - - - - - - - Remove all dictionary groups - - - Remove all groups - - - - - - - - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - - - true - - - - - - - - DictListWidget - QListWidget -
groups_widgets.hh
-
- - QuickFilterLine - QLineEdit -
groups_widgets.hh
-
- - DictGroupsWidget - QTabWidget -
groups_widgets.hh
- 1 -
-
- - dictionaries - addDictsToGroup - removeDictsFromGroup - groups - addGroup - autoGroups - renameGroup - removeGroup - removeAllGroups - searchLine - - - -
diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups_widgets.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups_widgets.cc deleted file mode 100644 index 8932e606e8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups_widgets.cc +++ /dev/null @@ -1,1111 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "groups_widgets.hh" - -#include "instances.hh" -#include "config.hh" -#include "langcoder.hh" -#include "language.hh" -#include "fsencoding.hh" - -//#include "initializing.hh" - -#include -#include -#include -#include -#include -#include -#include -#include - -using std::vector; - -/// DictGroupWidget - -DictGroupWidget::DictGroupWidget( QWidget * parent, - vector< sptr< Dictionary::Class > > const & dicts, - Config::Group const & group ): - QWidget( parent ), - groupId( group.id ) -{ - ui.setupUi( this ); - ui.dictionaries->populate( Instances::Group( group, dicts ).dictionaries, dicts ); - - // Populate icons' list - - QStringList icons = QDir( ":/flags/" ).entryList( QDir::Files, QDir::NoSort ); - - ui.groupIcon->addItem( tr( "None" ), "" ); - - bool usesIconData = !group.iconData.isEmpty(); - - if ( !usesIconData ) - ui.groupIcon->addItem( tr( "From file..." ), "" ); - else - ui.groupIcon->addItem( Instances::iconFromData( group.iconData ), group.icon, group.icon ); - - for( int x = 0; x < icons.size(); ++x ) - { - QString n( icons[ x ] ); - n.chop( 4 ); - n[ 0 ] = n[ 0 ].toUpper(); - - ui.groupIcon->addItem( QIcon( ":/flags/" + icons[ x ] ), n, icons[ x ] ); - - if ( !usesIconData && icons[ x ] == group.icon ) - ui.groupIcon->setCurrentIndex( x + 2 ); - } - - if ( usesIconData ) - ui.groupIcon->setCurrentIndex( 1 ); - - ui.shortcut->setHotKey( Config::HotKey( group.shortcut ) ); - - connect( ui.groupIcon, SIGNAL(activated(int)),this,SLOT(groupIconActivated(int)), - Qt::QueuedConnection ); - - ui.dictionaries->setContextMenuPolicy( Qt::CustomContextMenu ); - connect( ui.dictionaries, SIGNAL( customContextMenuRequested( QPoint ) ), - this, SLOT( showDictInfo( QPoint ) ) ); - - connect( ui.dictionaries, SIGNAL( doubleClicked( QModelIndex ) ), - this, SLOT( removeCurrentItem( QModelIndex ) ) ); -} - -void DictGroupWidget::groupIconActivated( int index ) -{ - if ( index == 1 ) - { - QList< QByteArray > supImageFormats = QImageReader::supportedImageFormats(); - - QString formatList( " (" ); - - for( int x = 0; x < supImageFormats.size(); ++x ) - formatList += "*." + QString::fromLatin1( supImageFormats[ x ] ) + " "; - - formatList.chop( 1 ); - formatList.append( ")" ); - - QString chosenFile = - QFileDialog::getOpenFileName( this, tr( "Choose a file to use as group icon" ), - QString(), - tr( "Images" ) + formatList + ";;" + - tr( "All files" ) + " (*.*)" ); - - if ( !chosenFile.isEmpty() ) - { - QIcon icon( chosenFile ); - - if ( icon.isNull() ) - QMessageBox::critical( this, tr( "Error" ), tr( "Can't read the specified image file." ) ); - else - { - ui.groupIcon->setItemIcon( 1, icon ); - - QString baseName = QFileInfo( chosenFile ).completeBaseName(); - ui.groupIcon->setItemText( 1, baseName ); - ui.groupIcon->setItemData( 1, baseName ); - } - } - } -} - -Config::Group DictGroupWidget::makeGroup() const -{ - Instances::Group g( "" ); - - g.id = groupId; - - g.dictionaries = ui.dictionaries->getCurrentDictionaries(); - - int currentIndex = ui.groupIcon->currentIndex(); - - if ( currentIndex == 1 ) // File - g.iconData = ui.groupIcon->itemIcon( currentIndex ); - - g.icon = ui.groupIcon->itemData( currentIndex ).toString(); - - g.shortcut = ui.shortcut->getHotKey().toKeySequence(); - - return g.makeConfigGroup(); -} - -void DictGroupWidget::showDictInfo( QPoint const & pos ) -{ - QVariant data = ui.dictionaries->getModel()->data( ui.dictionaries->indexAt( pos ), Qt::EditRole ); - QString id; - if( data.canConvert< QString >() ) - id = data.toString(); - - if( !id.isEmpty() ) - { - vector< sptr< Dictionary::Class > > const & dicts = ui.dictionaries->getCurrentDictionaries(); - unsigned n; - for( n = 0; n < dicts.size(); n++ ) - if( id.compare( QString::fromUtf8( dicts.at( n )->getId().c_str() ) ) == 0 ) - break; - if( n < dicts.size() ) - emit showDictionaryInfo( id ); - } -} - -void DictGroupWidget::removeCurrentItem( QModelIndex const & index ) -{ - (void)index; - ui.dictionaries->getModel()->removeSelectedRows( ui.dictionaries->selectionModel() ); -} - -/// DictListModel - -void DictListModel::populate( - std::vector< sptr< Dictionary::Class > > const & active, - std::vector< sptr< Dictionary::Class > > const & available ) -{ - dictionaries = active; - allDicts = &available; - - beginResetModel(); - endResetModel(); -} - -void DictListModel::populate( - std::vector< sptr< Dictionary::Class > > const & active ) -{ - dictionaries = active; - beginResetModel(); - endResetModel(); -} - -void DictListModel::setAsSource() -{ - isSource = true; -} - -std::vector< sptr< Dictionary::Class > > const & - DictListModel::getCurrentDictionaries() const -{ - return dictionaries; -} - -Qt::ItemFlags DictListModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags defaultFlags = QAbstractListModel::flags( index ); - - if (index.isValid()) - return Qt::ItemIsDragEnabled | defaultFlags; - else - return Qt::ItemIsDropEnabled | defaultFlags; -} - -int DictListModel::rowCount( QModelIndex const & ) const -{ - return dictionaries.size(); -} - -QVariant DictListModel::data( QModelIndex const & index, int role ) const -{ - if( index.row() < 0 ) - return QVariant(); - - sptr< Dictionary::Class > const & item = dictionaries[ index.row() ]; - - if ( !item ) - return QVariant(); - - switch ( role ) - { - case Qt::ToolTipRole: - { - QString tt = "" + QString::fromUtf8( item->getName().c_str() ) + ""; - - QString lfrom( Language::localizedNameForId( item->getLangFrom() ) ); - QString lto( Language::localizedNameForId( item->getLangTo() ) ); - if ( !lfrom.isEmpty() ) - { - if ( lfrom == lto ) - tt += "
" + lfrom; - else - tt += "
" + lfrom + " - " + lto; - } - - int entries = item->getArticleCount(); - if ( !entries ) - entries = item->getWordCount(); - if ( entries ) - tt += "
" + tr( "%1 entries" ).arg( entries ); - - const std::vector< std::string > & dirs = item->getDictionaryFilenames(); - - if ( dirs.size() ) - { - tt += "
"; - tt += FsEncoding::decode( dirs.at( 0 ).c_str() ); - } - - tt.replace( " ", " " ); - return tt; - } - - case Qt::DisplayRole : - return QString::fromUtf8( item->getName().c_str() ); - - case Qt::EditRole : - return QString::fromUtf8( item->getId().c_str() ); - - case Qt::DecorationRole: - // make all icons of the same size to avoid visual size/alignment problems - return item->getIcon().pixmap( 32 ).scaledToHeight( 21, Qt::SmoothTransformation ); - - default:; - } - - return QVariant(); -} - -bool DictListModel::insertRows( int row, int count, const QModelIndex & parent ) -{ - if ( isSource ) - return false; - - beginInsertRows( parent, row, row + count - 1 ); - dictionaries.insert( dictionaries.begin() + row, count, - sptr< Dictionary::Class >() ); - endInsertRows(); - emit contentChanged(); - return true; -} - -void DictListModel::addRow(const QModelIndex & parent, sptr< Dictionary::Class > dict) -{ - for (unsigned i = 0; i < dictionaries.size(); i++) - { - if (dictionaries[i]->getId() == dict->getId()) - return; - } - - beginInsertRows( parent, dictionaries.size(), dictionaries.size()+1 ); - dictionaries.push_back(dict); - endInsertRows(); - emit contentChanged(); -} - -bool DictListModel::removeRows( int row, int count, - const QModelIndex & parent ) -{ - if ( isSource ) - return false; - - beginRemoveRows( parent, row, row + count - 1 ); - dictionaries.erase( dictionaries.begin() + row, - dictionaries.begin() + row + count ); - endRemoveRows(); - emit contentChanged(); - return true; -} - -bool DictListModel::setData( QModelIndex const & index, const QVariant & value, - int role ) -{ - if ( isSource || !allDicts || !index.isValid() || - index.row() >= (int)dictionaries.size() ) - return false; - - if ( ( role == Qt::DisplayRole ) || ( role == Qt::DecorationRole ) ) - { - // Allow changing that, but do nothing - return true; - } - - if ( role == Qt::EditRole ) - { - Config::Group g; - - g.dictionaries.push_back( Config::DictionaryRef( value.toString(), QString() ) ); - - Instances::Group i( g, *allDicts ); - - if ( i.dictionaries.size() == 1 ) - { - // Found that dictionary - dictionaries[ index.row() ] = i.dictionaries.front(); - - emit dataChanged( index, index ); - - return true; - } - } - - return false; -} - -Qt::DropActions DictListModel::supportedDropActions() const -{ - return Qt::MoveAction; -} - -void DictListModel::removeSelectedRows( QItemSelectionModel * source ) -{ - if ( !source ) - return; - - QModelIndexList rows = source->selectedRows(); - - if ( !rows.count() ) - return; - - for ( int i = rows.count()-1; i >= 0; --i ) - { - dictionaries.erase( dictionaries.begin() + rows.at( i ).row() ); - } - - beginResetModel(); - endResetModel(); - emit contentChanged(); -} - -void DictListModel::addSelectedUniqueFromModel( QItemSelectionModel * source ) -{ - if ( !source ) - return; - - QModelIndexList rows = source->selectedRows(); - - if ( !rows.count() ) - return; - - const QSortFilterProxyModel * proxyModel = dynamic_cast< const QSortFilterProxyModel * > ( source->model() ); - - const DictListModel * baseModel; - - if ( proxyModel ) - { - baseModel = dynamic_cast< const DictListModel * > ( proxyModel->sourceModel() ); - } - else - { - baseModel = dynamic_cast< const DictListModel * > ( source->model() ); - } - - if ( !baseModel ) - return; - - QVector< std::string > list; - QVector< std::string > dicts; - for ( unsigned i = 0; i < dictionaries.size(); i++ ) - dicts.append( dictionaries.at( i )->getId() ); - - for ( int i = 0; i < rows.count(); i++ ) - { - QModelIndex idx = proxyModel ? proxyModel->mapToSource(rows.at( i )) : rows.at( i ); - std::string id = baseModel->dictionaries.at( idx.row() )->getId(); - - if ( !dicts.contains( id ) ) - list.append( id ); - } - - if ( list.empty() ) - return; - - for ( unsigned i = 0; i < allDicts->size(); i++ ) - { - for ( int j = 0; j < list.size(); j++ ) - { - if ( allDicts->at( i )->getId() == list.at( j ) ) - { - dictionaries.push_back( allDicts->at( i ) ); - list.remove( j ); - if ( list.isEmpty() ) - { - beginResetModel(); - endResetModel(); - emit contentChanged(); - return; - } - break; - } - } - } - - beginResetModel(); - endResetModel(); - emit contentChanged(); -} - -void DictListModel::filterDuplicates() -{ - QSet< QString > ids; - bool doReset = false; - - for ( unsigned i = 0; i < dictionaries.size(); i++ ) - { - QString id = QString::fromStdString( dictionaries.at( i )->getId() ); - - if ( ids.contains( id ) ) - { - dictionaries.erase( dictionaries.begin() + i-- ); - doReset = true; - continue; - } - - ids.insert( id ); - } - - if ( doReset ) - { - beginResetModel(); - endResetModel(); - emit contentChanged(); - } -} - -/// DictListWidget - -DictListWidget::DictListWidget( QWidget * parent ): QListView( parent ), - model( this ) -{ - setModel( &model ); - - setSelectionMode( ExtendedSelection ); - - setDragEnabled( true ); - setAcceptDrops( true ); - setDropIndicatorShown( true ); -} - -DictListWidget::~DictListWidget() -{ - setModel( 0 ); -} - -void DictListWidget::populate( - std::vector< sptr< Dictionary::Class > > const & active, - std::vector< sptr< Dictionary::Class > > const & available ) -{ - model.populate( active, available ); -} - -void DictListWidget::populate( - std::vector< sptr< Dictionary::Class > > const & active ) -{ - model.populate( active ); -} - -void DictListWidget::setAsSource() -{ - setDropIndicatorShown( false ); - model.setAsSource(); -} - -std::vector< sptr< Dictionary::Class > > const & - DictListWidget::getCurrentDictionaries() const -{ - return model.getCurrentDictionaries(); -} - -void DictListWidget::dropEvent( QDropEvent * event ) -{ - DictListWidget * sourceList = dynamic_cast< DictListWidget * > ( event->source() ); - - QListView::dropEvent( event ); - - if ( sourceList != this ) - { - model.filterDuplicates(); - } -} - -void DictListWidget::focusInEvent( QFocusEvent * ) -{ - emit gotFocus(); -} - -void DictListWidget::rowsInserted( QModelIndex const & parent, int start, int end ) -{ - QListView::rowsInserted( parent, start, end ); - - // When inserting new rows, make the first of them current - selectionModel()->setCurrentIndex( model.index( start, 0, parent ), - QItemSelectionModel::NoUpdate ); -} - -void DictListWidget::rowsAboutToBeRemoved( QModelIndex const & parent, int start, int end ) -{ - // When removing rows, if the current row is among the removed ones, select - // an item just before the first row to be removed, if there's one. - QModelIndex current = currentIndex(); - - if ( current.isValid() && current.row() && - current.row() >= start && current.row() <= end ) - selectionModel()->setCurrentIndex( model.index( current.row() - 1, 0, parent ), - QItemSelectionModel::NoUpdate ); - - QListView::rowsAboutToBeRemoved( parent, start, end ); -} - - -// DictGroupsWidget - -DictGroupsWidget::DictGroupsWidget( QWidget * parent ): - QTabWidget( parent ), nextId( 1 ), allDicts( 0 ), activeDicts( 0 ) -{ -#if QT_VERSION >= 0x040500 - setMovable( true ); -#endif - setContextMenuPolicy( Qt::CustomContextMenu ); - connect( this, SIGNAL( customContextMenuRequested( QPoint ) ), - this, SLOT( contextMenu( QPoint ) ) ); -} - -namespace { - -QString escapeAmps( QString const & str ) -{ - QString result( str ); - result.replace( "&", "&&" ); - return result; -} - -QString unescapeAmps( QString const & str ) -{ - QString result( str ); - result.replace( "&&", "&" ); - return result; -} - -} - -void DictGroupsWidget::populate( Config::Groups const & groups, - vector< sptr< Dictionary::Class > > const & allDicts_, - vector< sptr< Dictionary::Class > > const & activeDicts_ ) -{ - while( count() ) - removeCurrentGroup(); - - allDicts = &allDicts_; - activeDicts = &activeDicts_; - - for( int x = 0; x < groups.size(); ++x ) - { - DictGroupWidget *gr = new DictGroupWidget( this, *allDicts, groups[ x ] ); - addTab( gr, escapeAmps( groups[ x ].name ) ); - connect( gr, SIGNAL( showDictionaryInfo( QString const & ) ), - this, SIGNAL( showDictionaryInfo( QString const & ) ) ); - connect( gr->getModel(), SIGNAL( contentChanged() ), this, SLOT( tabDataChanged() ) ); - - setCurrentIndex( x ); - QString toolTipStr = "\"" + tabText( x ) + "\"\n" + tr( "Dictionaries: " ) - + QString::number( getCurrentModel()->getCurrentDictionaries().size() ); - setTabToolTip( x, toolTipStr ); - } - - nextId = groups.nextId; - - setCurrentIndex( 0 ); - - setUsesScrollButtons( count() > 3 ); -} - -/// Creates groups from what is currently set up -Config::Groups DictGroupsWidget::makeGroups() const -{ - Config::Groups result; - - result.nextId = nextId; - - for( int x = 0; x < count(); ++x ) - { - result.push_back( dynamic_cast< DictGroupWidget & >( *widget( x ) ).makeGroup() ); - result.back().name = unescapeAmps( tabText( x ) ); - } - - return result; -} - -DictListModel * DictGroupsWidget::getCurrentModel() const -{ - int current = currentIndex(); - - if ( current >= 0 ) - { - DictGroupWidget * w = ( DictGroupWidget * ) widget( current ); - return w->getModel(); - } - - return 0; -} - -QItemSelectionModel * DictGroupsWidget::getCurrentSelectionModel() const -{ - int current = currentIndex(); - - if ( current >= 0 ) - { - DictGroupWidget * w = ( DictGroupWidget * ) widget( current ); - return w->getSelectionModel(); - } - - return 0; -} - - -void DictGroupsWidget::addNewGroup( QString const & name ) -{ - if ( !allDicts ) - return; - - int idx = currentIndex() + 1; - - Config::Group newGroup; - - newGroup.id = nextId++; - - DictGroupWidget *gr = new DictGroupWidget( this, *allDicts, newGroup ); - insertTab( idx, gr, escapeAmps( name ) ); - connect( gr, SIGNAL( showDictionaryInfo( QString const & ) ), - this, SIGNAL( showDictionaryInfo( QString const & ) ) ); - - setCurrentIndex( idx ); - - connect( gr->getModel(), SIGNAL( contentChanged() ), this, SLOT( tabDataChanged() ) ); - - QString toolTipStr = "\"" + tabText( idx ) + "\"\n" + tr( "Dictionaries: " ) - + QString::number( getCurrentModel()->getCurrentDictionaries().size() ); - setTabToolTip( idx, toolTipStr ); - - setUsesScrollButtons( count() > 3 ); -} - -int DictGroupsWidget::addUniqueGroup( const QString & name ) -{ - for( int n = 0; n < count(); n++ ) - if( tabText( n ) == name ) - { - setCurrentIndex( n ); - return n; - } - - addNewGroup( name ); - return currentIndex(); -} - -void DictGroupsWidget::addAutoGroups() -{ - if( !activeDicts ) - return; - - if ( QMessageBox::information( this, tr( "Confirmation" ), - tr( "Are you sure you want to generate a set of groups " - "based on language pairs?" ), QMessageBox::Yes, - QMessageBox::Cancel ) != QMessageBox::Yes ) - return; - - QMap< QString, QVector< sptr > > dictMap; - QMap< QString, QVector< sptr > > morphoMap; - - // Put active dictionaries into lists - - for ( unsigned i = 0; i < activeDicts->size(); i++ ) - { - sptr dict = activeDicts->at( i ); - - int idFrom = dict->getLangFrom(); - int idTo = dict->getLangTo(); - if( idFrom == 0) - { - // Attempt to find language pair in dictionary name - - QPair ids = LangCoder::findIdsForName( QString::fromUtf8( dict->getName().c_str() ) ); - idFrom = ids.first; - idTo = ids.second; - } - - QString name( tr( "Unassigned" ) ); - if ( idFrom != 0 && idTo != 0 ) - { - QString lfrom = LangCoder::intToCode2( idFrom ); - QString lto = LangCoder::intToCode2( idTo ); - lfrom[ 0 ] = lfrom[ 0 ].toTitleCase(); - lto[ 0 ] = lto[ 0 ].toTitleCase(); - name = lfrom + " - " + lto; - } - else if( !dict->getDictionaryFilenames().empty() ) - { - // Handle special case - morphology dictionaries - - QString fileName = QFileInfo( FsEncoding::decode( dict->getDictionaryFilenames()[ 0 ].c_str() ) ).fileName(); - if( fileName.endsWith( ".aff", Qt::CaseInsensitive ) ) - { - QString code = fileName.left( 2 ).toLower(); - QVector > vd = morphoMap[ code ]; - vd.append( dict ); - morphoMap[ code ] = vd; - continue; - } - } - - QVector > vd = dictMap[ name ]; - vd.append( dict ); - dictMap[ name ] = vd; - } - - QStringList groupList = dictMap.uniqueKeys(); - QStringList morphoList = morphoMap.uniqueKeys(); - - // Insert morphology dictionaries into corresponding lists - - for( QStringList::ConstIterator ln = morphoList.begin(); ln != morphoList.end(); ++ln ) - { - for( QStringList::ConstIterator gr = groupList.begin(); gr != groupList.end(); ++gr ) - if( ln->compare( gr->left( 2 ), Qt::CaseInsensitive ) == 0 ) - { - QVector > vdg = dictMap[ *gr ]; - vdg += morphoMap[ *ln ]; - dictMap[ *gr ] = vdg; - } - } - - // Make groups - - for( QStringList::ConstIterator gr = groupList.begin(); gr != groupList.end(); ++gr ) - { - if( count() ) - setCurrentIndex( count() - 1 ); - - addUniqueGroup( *gr ); - - // add dictionaries into the current group - QVector< sptr > vd = dictMap[ *gr ]; - DictListModel *model = getCurrentModel(); - for( int i = 0; i < vd.count(); i++ ) - model->addRow(QModelIndex(), vd.at( i ) ); - } -} - -QString DictGroupsWidget::getCurrentGroupName() const -{ - int current = currentIndex(); - - if ( current >= 0 ) - return unescapeAmps( tabText( current ) ); - - return QString(); -} - -void DictGroupsWidget::renameCurrentGroup( QString const & name ) -{ - int current = currentIndex(); - - if ( current >= 0 ) - setTabText( current, escapeAmps( name ) ); -} - -void DictGroupsWidget::removeCurrentGroup() -{ - int current = currentIndex(); - - if ( current >= 0 ) - { - QWidget * w = widget( current ); - removeTab( current ); - delete w; - } - - setUsesScrollButtons( count() > 3 ); -} - -void DictGroupsWidget::removeAllGroups() -{ - while ( count() ) - { - QWidget * w = widget( 0 ); - removeTab( 0 ); - delete w; - } -} - -void DictGroupsWidget::combineGroups( int source, int target ) -{ - if( source < 0 || source >= count() || target < 0 || target >= count() ) - return; - - setCurrentIndex( source ); - vector< sptr< Dictionary::Class > > const & dicts = getCurrentModel()->getCurrentDictionaries(); - - setCurrentIndex( target ); - DictListModel *model = getCurrentModel(); - - disconnect( model, SIGNAL( contentChanged() ), this, SLOT( tabDataChanged() ) ); - - for( unsigned i = 0; i < dicts.size(); i++ ) - model->addRow( QModelIndex(), dicts[ i ] ); - - connect( model, SIGNAL( contentChanged() ), this, SLOT( tabDataChanged() ) ); - - QString toolTipStr = "\"" + tabText( target ) + "\"\n" + tr( "Dictionaries: " ) - + QString::number( model->getCurrentDictionaries().size() ); - setTabToolTip( target, toolTipStr ); -} - -void DictGroupsWidget::contextMenu( QPoint const & pos ) -{ - int clickedGroup = tabBar()->tabAt( pos ); - if( clickedGroup < 0 ) - return; - QString name = tabText( clickedGroup ); - if( name.length() != 7 || name.mid( 2, 3 ) != " - " ) - return; - - QMenu menu( this ); - - QAction *combineSourceAction = new QAction( QString( tr( "Combine groups by source language to \"%1->\"" ) ) - .arg( name.left( 2 ) ), &menu ); - combineSourceAction->setEnabled( false ); - - QString grLeft = name.left( 2 ); - QString grRight = name.right( 2 ); - for( int i = 0; i < count(); i++ ) - { - QString str = tabText( i ); - if( i != clickedGroup && str.length() == 7 && str.mid( 2, 3 ) == " - " && str.startsWith( grLeft ) ) - { - combineSourceAction->setEnabled( true ); - break; - } - } - menu.addAction( combineSourceAction ); - - QAction *combineTargetAction = new QAction( QString( tr( "Combine groups by target language to \"->%1\"" ) ) - .arg( name.right( 2 ) ), &menu ); - combineTargetAction->setEnabled( false ); - - for( int i = 0; i < count(); i++ ) - { - QString str = tabText( i ); - if( i != clickedGroup && str.length() == 7 && str.mid( 2, 3 ) == " - " && str.endsWith( grRight ) ) - { - combineTargetAction->setEnabled( true ); - break; - } - } - menu.addAction( combineTargetAction ); - - QAction *combineTwoSidedAction = NULL; - if( grLeft != grRight ) - { - combineTwoSidedAction = new QAction( QString( tr( "Make two-side translate group \"%1-%2-%1\"" ) ) - .arg( grLeft ).arg( grRight ), &menu ); - - combineTwoSidedAction->setEnabled( false ); - - QString str = grRight + " - " + grLeft; - for( int i = 0; i < count(); i++ ) - { - if( str == tabText( i ) ) - { - combineTwoSidedAction->setEnabled( true ); - break; - } - } - - menu.addAction( combineTwoSidedAction ); - } - - QAction *combineFirstAction = new QAction( QString( tr( "Combine groups with \"%1\"" ) ) - .arg( grLeft ), &menu ); - combineFirstAction->setEnabled( false ); - for( int i = 0; i < count(); i++ ) - { - QString str = tabText( i ); - if( i != clickedGroup && str.length() == 7 && str.mid( 2, 3 ) == " - " && - ( str.startsWith( grLeft ) || str.endsWith( grLeft ) ) ) - { - combineFirstAction->setEnabled( true ); - break; - } - } - menu.addAction( combineFirstAction ); - - QAction *combineSecondAction = NULL; - - if( grLeft != grRight ) - { - combineSecondAction = new QAction( QString( tr( "Combine groups with \"%1\"" ) ) - .arg( grRight ), &menu ); - combineSecondAction->setEnabled( false ); - - for( int i = 0; i < count(); i++ ) - { - QString str = tabText( i ); - if( i != clickedGroup && str.length() == 7 && str.mid( 2, 3 ) == " - " && - ( str.startsWith( grRight ) || str.endsWith( grRight ) ) ) - { - combineSecondAction->setEnabled( true ); - break; - } - } - menu.addAction( combineSecondAction ); - } - - QAction *result = menu.exec( mapToGlobal( pos ) ); - - setUpdatesEnabled( false ); - int targetGroup; - - if( result && result == combineSourceAction ) - { - setCurrentIndex( clickedGroup ); - targetGroup = addUniqueGroup( grLeft + "->" ); - - for( int i = 0; i < count(); i++ ) - { - QString str = tabText( i ); - if( str.length() == 7 && str.mid( 2, 3 ) == " - " && str.startsWith( grLeft ) ) - combineGroups( i, targetGroup ); - } - - setCurrentIndex( targetGroup ); - } - else - if( result && result == combineTargetAction ) - { - setCurrentIndex( clickedGroup ); - targetGroup = addUniqueGroup( "->" + grRight ); - - for( int i = 0; i < count(); i++ ) - { - QString str = tabText( i ); - if( str.length() == 7 && str.mid( 2, 3 ) == " - " && str.endsWith( grRight ) ) - combineGroups( i, targetGroup ); - } - - setCurrentIndex( targetGroup ); - } - else - if( result && result == combineTwoSidedAction ) - { - setCurrentIndex( clickedGroup ); - targetGroup = addUniqueGroup( name + " - " + grLeft ); - QString str = grRight + " - " + grLeft; - - for( int i = 0; i < count(); i++ ) - if( tabText( i ) == name || tabText( i ) == str ) - combineGroups( i, targetGroup ); - - setCurrentIndex( targetGroup ); - } - else - if( result && ( result == combineFirstAction || result == combineSecondAction ) ) - { - QString const & grBase = result == combineFirstAction ? grLeft : grRight; - setCurrentIndex( clickedGroup ); - targetGroup = addUniqueGroup( grBase ); - - for( int i = 0; i < count(); i++ ) - { - QString str = tabText( i ); - if( str.length() == 7 && str.mid( 2, 3 ) == " - " && - ( str.startsWith( grBase ) || str.endsWith( grBase ) ) ) - combineGroups( i, targetGroup ); - } - - setCurrentIndex( targetGroup ); - } - - setUpdatesEnabled( true ); -} - -void DictGroupsWidget::tabDataChanged() -{ - QString toolTipStr = "\"" + tabText( currentIndex() ) + "\"\n" + tr( "Dictionaries: " ) - + QString::number( getCurrentModel()->getCurrentDictionaries().size() ); - setTabToolTip( currentIndex(), toolTipStr ); -} - -QuickFilterLine::QuickFilterLine( QWidget * parent ): ExtLineEdit( parent ), m_focusAction(this) -{ - m_proxyModel.setFilterCaseSensitivity( Qt::CaseInsensitive ); - -#if QT_VERSION >= 0x040700 - setPlaceholderText( tr( "Dictionary search/filter (Ctrl+F)" ) ); -#endif - - m_focusAction.setShortcut( QKeySequence( "Ctrl+F" ) ); - connect( &m_focusAction, SIGNAL( triggered() ), - this, SLOT( focusFilterLine() ) ); - - QPixmap image(":/icons/system-search.png"); - setButtonPixmap(ExtLineEdit::Left, image.scaled(18, 18, Qt::KeepAspectRatio, Qt::SmoothTransformation)); - setButtonToolTip(ExtLineEdit::Left, tr("Quick Search")); - setButtonVisible(ExtLineEdit::Left, true); - - QPixmap right(":/icons/clear.png"); - setButtonPixmap(ExtLineEdit::Right, right); - setButtonToolTip(ExtLineEdit::Right, tr("Clear Search")); - setButtonVisible(ExtLineEdit::Right, true); - setButtonAutoHide(ExtLineEdit::Right, true); - connect( this, SIGNAL( rightButtonClicked() ), this, SLOT( clear() ) ); - - setFocusPolicy(Qt::StrongFocus); - - connect (this, SIGNAL( textChanged( QString const & ) ), - this, SLOT( filterChangedInternal() ) ); -} - -QuickFilterLine::~QuickFilterLine() -{ -} - -void QuickFilterLine::applyTo( QAbstractItemView * source ) -{ - m_source = source; - m_proxyModel.setSourceModel( source->model() ); - source->setModel( &m_proxyModel ); -} - -QModelIndex QuickFilterLine::mapToSource( QModelIndex const & idx ) -{ - if ( &m_proxyModel == idx.model() ) - { - return m_proxyModel.mapToSource( idx ); - } - else - { - return idx; - } -} - -void QuickFilterLine::filterChangedInternal() -{ - // emit signal in async manner, to avoid UI slowdown - QTimer::singleShot( 1, this, SLOT( emitFilterChanged() ) ); -} - -void QuickFilterLine::emitFilterChanged() -{ - m_proxyModel.setFilterFixedString(text()); - emit filterChanged( text() ); -} - -void QuickFilterLine::focusFilterLine() -{ - setFocus(); - selectAll(); -} - -void QuickFilterLine::keyPressEvent( QKeyEvent * event ) -{ - switch ( event->key() ) - { - case Qt::Key_Down: - if ( m_source ) - { - m_source->setCurrentIndex( m_source->model()->index( 0,0 ) ); - m_source->setFocus(); - } - break; - default: - ExtLineEdit::keyPressEvent( event ); - } -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups_widgets.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups_widgets.hh deleted file mode 100644 index ce442fa2b9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groups_widgets.hh +++ /dev/null @@ -1,237 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __GROUPS_WIDGETS_HH_INCLUDED__ -#define __GROUPS_WIDGETS_HH_INCLUDED__ - -// Various custom widgets used in the Groups dialog - -#include - -#include -#include - -#include "config.hh" -#include "dictionary.hh" -#include "extlineedit.hh" - -/// A model to be projected into the view, according to Qt's MVC model -class DictListModel: public QAbstractListModel -{ - Q_OBJECT - -public: - - DictListModel( QWidget * parent ): - QAbstractListModel( parent ), isSource( false ), allDicts( 0 ) - {} - - /// Populates the current model with the given dictionaries. This is - /// ought to be part of construction process. - void populate( std::vector< sptr< Dictionary::Class > > const & active, - std::vector< sptr< Dictionary::Class > > const & available ); - void populate( std::vector< sptr< Dictionary::Class > > const & active ); - - /// Marks that this model is used as an immutable dictionary source - void setAsSource(); - bool sourceModel() const { return isSource; } - - /// Returns the dictionaries the model currently has listed - std::vector< sptr< Dictionary::Class > > const & getCurrentDictionaries() const; - - void removeSelectedRows( QItemSelectionModel * source ); - void addSelectedUniqueFromModel( QItemSelectionModel * source ); - - Qt::ItemFlags flags( QModelIndex const &index ) const; - int rowCount( QModelIndex const & parent ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool insertRows( int row, int count, const QModelIndex & parent ); - bool removeRows( int row, int count, const QModelIndex & parent ); - bool setData( QModelIndex const & index, const QVariant & value, int role ); - - void addRow(const QModelIndex & parent, sptr< Dictionary::Class > dict); - - Qt::DropActions supportedDropActions() const; - - void filterDuplicates(); - -private: - - bool isSource; - std::vector< sptr< Dictionary::Class > > dictionaries; - std::vector< sptr< Dictionary::Class > > const * allDicts; - -signals: - void contentChanged(); -}; - -/// This widget is for dictionaries' lists, it handles drag-n-drop operations -/// with them etc. -class DictListWidget: public QListView -{ - Q_OBJECT -public: - DictListWidget( QWidget * parent ); - ~DictListWidget(); - - /// Populates the current list with the given dictionaries. - void populate( std::vector< sptr< Dictionary::Class > > const & active, - std::vector< sptr< Dictionary::Class > > const & available ); - void populate( std::vector< sptr< Dictionary::Class > > const & active ); - - /// Marks that this widget is used as an immutable dictionary source - void setAsSource(); - - /// Returns the dictionaries the widget currently has listed - std::vector< sptr< Dictionary::Class > > const & getCurrentDictionaries() const; - - DictListModel * getModel() - { return & model; } - -signals: - void gotFocus(); - -protected: - virtual void dropEvent( QDropEvent * event ); - virtual void focusInEvent(QFocusEvent *); - - // We need these to to handle drag-and-drop focus issues - virtual void rowsInserted( QModelIndex const & parent, int start, int end ); - virtual void rowsAboutToBeRemoved( QModelIndex const & parent, int start, int end ); - -private: - DictListModel model; -}; - -#include "ui_dictgroupwidget.h" - -/// A widget that is placed into each tab in the Groups dialog. -class DictGroupWidget: public QWidget -{ - Q_OBJECT - -public: - DictGroupWidget( QWidget * parent, - std::vector< sptr< Dictionary::Class > > const &, - Config::Group const & ); - - /// Makes the group's configuration out of the data currently held. - /// Since the group's name is not part of the widget by design right now - /// (it is known by the containing tab widget only), it is returned as empty. - Config::Group makeGroup() const; - - DictListModel * getModel() const - { return ui.dictionaries->getModel(); } - - QItemSelectionModel * getSelectionModel() const - { return ui.dictionaries->selectionModel(); } - -private slots: - - void groupIconActivated( int ); - void showDictInfo( const QPoint & pos ); - void removeCurrentItem( QModelIndex const & ); - -private: - Ui::DictGroupWidget ui; - unsigned groupId; - -signals: - void showDictionaryInfo( QString const & id ); -}; - -/// A tab widget with groups inside -class DictGroupsWidget: public QTabWidget -{ - Q_OBJECT - -public: - - DictGroupsWidget( QWidget * parent ); - - /// Creates all the tabs with the groups - void populate( Config::Groups const &, - std::vector< sptr< Dictionary::Class > > const & allDicts, - std::vector< sptr< Dictionary::Class > > const & activeDicts ); - - /// Creates new empty group with the given name - void addNewGroup( QString const & ); - - /// Creates new empty group with the given name if no such group - /// and return it index - int addUniqueGroup( QString const & name ); - - void addAutoGroups(); - - /// Returns currently chosen group's name - QString getCurrentGroupName() const; - - /// Changes the name of the currently chosen group, if any, to the given one - void renameCurrentGroup( QString const & ); - - /// Removes the currently chosen group, if any - void removeCurrentGroup(); - - /// Removes all the groups - void removeAllGroups(); - - /// Creates groups from what is currently set up - Config::Groups makeGroups() const; - - DictListModel * getCurrentModel() const; - - QItemSelectionModel * getCurrentSelectionModel() const; - -private: - - /// Add source group to target group - void combineGroups( int source, int target ); - - unsigned nextId; - std::vector< sptr< Dictionary::Class > > const * allDicts; - std::vector< sptr< Dictionary::Class > > const * activeDicts; - -private slots: - void contextMenu( QPoint const & ); - void tabDataChanged(); - -signals: - void showDictionaryInfo( QString const & id ); -}; - -class QuickFilterLine: public ExtLineEdit -{ - Q_OBJECT - -public: - - QuickFilterLine( QWidget * parent ); - ~QuickFilterLine(); - - /// Sets the source view to filter - void applyTo( QAbstractItemView * source ); - - QAction * getFocusAction() { return & m_focusAction; } - - QModelIndex mapToSource( QModelIndex const & idx ); - -protected: - virtual void keyPressEvent( QKeyEvent * event ); - -private: - QSortFilterProxyModel m_proxyModel; - QAction m_focusAction; - QAbstractItemView * m_source; - -private slots: - void filterChangedInternal(); - void emitFilterChanged(); - void focusFilterLine(); - -signals: - void filterChanged(QString const & filter); - - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupselectorwidget.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupselectorwidget.ui deleted file mode 100644 index f79ce55c3f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/groupselectorwidget.ui +++ /dev/null @@ -1,34 +0,0 @@ - - GroupSelectorWidget - - - - 0 - 0 - 134 - 40 - - - - Form - - - - - - Look in - - - - - - - QComboBox::AdjustToContents - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/guids.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/guids.c deleted file mode 100644 index 57d374aea9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/guids.c +++ /dev/null @@ -1,23 +0,0 @@ -#define INITGUID -#include - -DEFINE_GUID(IID_IUIAutomation, 0x30cbe57d, 0xd9d0, 0x452a, 0xab, 0x13, 0x7a, 0xc5, 0xac, 0x48, 0x25, 0xee); -DEFINE_GUID(CLSID_CUIAutomation, 0xff48dba4, 0x60ef, 0x4201, 0xaa, 0x87, 0x54, 0x10, 0x3e, 0xef, 0x59, 0x4e); -DEFINE_GUID(IID_IUIAutomationElement, 0xd22108aa, 0x8ac5, 0x49a5, 0x83, 0x7b, 0x37, 0xbb, 0xb3, 0xd7, 0x59, 0x1e); -DEFINE_GUID(IID_IUIAutomationTextPattern, 0x32eba289, 0x3583, 0x42c9, 0x9c, 0x59, 0x3b, 0x6d, 0x9a, 0x1e, 0x9b, 0x6a); -DEFINE_GUID(IID_IUIAutomationTextRange, 0xa543cc6a, 0xf4ae, 0x494b, 0x82, 0x39, 0xc8, 0x14, 0x48, 0x11, 0x87, 0xa8); -DEFINE_GUID(IID_IUIAutomationTreeWalker, 0x4042c624, 0x389c, 0x4afc, 0xa6, 0x30, 0x9d, 0xf8, 0x54, 0xa5, 0x41, 0xfc); - -DEFINE_GUID(CLSID_SpVoice, 0x96749377, 0x3391, 0x11D2, 0x9e, 0xe3, 0x00, 0xc0, 0x4f, 0x79, 0x73, 0x96); -DEFINE_GUID(IID_ISpVoice, 0x6C44DF74, 0x72B9, 0x4992, 0xa1, 0xec, 0xef, 0x99, 0x6e, 0x04, 0x22, 0xd4); -DEFINE_GUID(CLSID_SpObjectToken, 0xEF411752, 0x3736, 0x4CB4, 0x9c, 0x8c, 0x8e, 0xf4, 0xcc, 0xb5, 0x8e, 0xfe); -DEFINE_GUID(IID_ISpObjectToken, 0x14056589, 0xE16C, 0x11D2, 0xbb, 0x90, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0xc0); -DEFINE_GUID(CLSID_SpObjectTokenCategory, 0xA910187F, 0x0C7A, 0x45AC, 0x92, 0xcc, 0x59, 0xed, 0xaf, 0xb7, 0x7b, 0x53); -DEFINE_GUID(IID_ISpObjectTokenCategory, 0x2D3D3845, 0x39AF, 0x4850, 0xbb, 0xf9, 0x40, 0xb4, 0x97, 0x80, 0x01, 0x1d); -DEFINE_GUID(IID_IEnumSpObjectTokens, 0x06B64F9E, 0x7FDA, 0x11D2, 0xb4, 0xf2, 0x00, 0xc0, 0x4f, 0x79, 0x73, 0x96); -DEFINE_GUID(IID_ISpEventSource, 0xBE7A9CCE, 0x5F9E, 0x11D2, 0x96, 0x0f, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0x28); -DEFINE_GUID(IID_ISpNotifySource, 0x5EFF4AEF, 0x8487, 0x11D2, 0x96, 0x1c, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0x28); -DEFINE_GUID(IID_ISpNotifySink, 0x259684DC, 0x37C3, 0x11D2, 0x96, 0x03, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0x28); -DEFINE_GUID(IID_ISpDataKey, 0x14056581, 0xE16C, 0x11D2, 0xbb, 0x90, 0x00, 0xc0, 0x4f, 0x8e, 0xe6, 0xc0); -DEFINE_GUID(IID_ISpStreamFormat, 0xBED530BE, 0x2606, 0x4F4D, 0xa1, 0xc0, 0x54, 0xc5, 0xcd, 0xa5, 0x56, 0x6f); - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/help/gdhelp_en.qch b/office/misc/goldendict/files/goldendict-1.5.0-RC2/help/gdhelp_en.qch deleted file mode 100644 index aea3d28070..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/help/gdhelp_en.qch and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/help/gdhelp_ru.qch b/office/misc/goldendict/files/goldendict-1.5.0-RC2/help/gdhelp_ru.qch deleted file mode 100644 index 5c9454e001..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/help/gdhelp_ru.qch and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/helpwindow.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/helpwindow.cc deleted file mode 100644 index cdacc76970..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/helpwindow.cc +++ /dev/null @@ -1,264 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include -#include -#include -#include -#include - -#include "helpwindow.hh" -#include "gddebug.hh" - -namespace Help { - -HelpBrowser::HelpBrowser( QHelpEngineCore * engine, QWidget *parent ) : - QTextBrowser( parent ), - helpEngine( engine ) -{ - connect( this, SIGNAL( anchorClicked( QUrl ) ), this, SLOT( linkClicked( QUrl ) ) ); -} - -void HelpBrowser::showHelpForKeyword( QString const & id ) -{ - if ( helpEngine ) - { - QMap< QString, QUrl > links = helpEngine->linksForIdentifier( id ); - if( !links.isEmpty() ) - setSource( links.constBegin().value() ); - } -} - -QVariant HelpBrowser::loadResource( int type, QUrl const & name ) -{ - QByteArray ba; - if( type < 4 && helpEngine ) - { - QUrl url(name); - if( name.isRelative() ) - url = source().resolved( url ); - - ba = helpEngine->fileData(url ); - } - return ba; -} - -void HelpBrowser::linkClicked( QUrl const & url ) -{ - if( url.scheme() == "http" || url.scheme() == "https" ) - { - QDesktopServices::openUrl( url ); - } - else - setSource( url ); -} - -HelpWindow::HelpWindow( QWidget * parent, Config::Class & cfg_ ) : - QDialog( parent ), - cfg( cfg_ ), - helpEngine( 0 ) -{ - resize( QSize( 600, 450 ) ); - setWindowTitle( tr( "GoldenDict help" ) ); - setWindowFlags( windowFlags() & ~Qt::WindowContextHelpButtonHint ); - - QVBoxLayout * mainLayout = new QVBoxLayout( this ); - setLayout( mainLayout ); - - navToolBar = new QToolBar( this ); - navHome = navToolBar->addAction( QIcon( ":/icons/home.png" ), tr( "Home" ) ); - navToolBar->widgetForAction( navHome )->setObjectName( "helpHomeButton" ); - navBack = navToolBar->addAction( QIcon( ":/icons/previous.png" ), tr( "Back" ) ); - navToolBar->widgetForAction( navBack )->setObjectName( "helpBackButton" ); - navForward = navToolBar->addAction( QIcon( ":/icons/next.png" ), tr( "Forward" ) ); - navToolBar->widgetForAction( navForward )->setObjectName( "helpForwardButton" ); - - navToolBar->addSeparator(); - - zoomInAction = navToolBar->addAction( QIcon( ":/icons/icon32_zoomin" ), tr( "Zoom In" ) ); - navToolBar->widgetForAction( zoomInAction )->setObjectName( "zoomInButton" ); - zoomOutAction = navToolBar->addAction( QIcon( ":/icons/icon32_zoomout" ), tr( "Zoom Out" ) ); - navToolBar->widgetForAction( zoomInAction )->setObjectName( "zoomOutButton" ); - zoomBaseAction = navToolBar->addAction( QIcon( ":/icons/icon32_zoombase" ), tr( "Normal Size" ) ); - navToolBar->widgetForAction( zoomBaseAction )->setObjectName( "zoomBaseButton" ); - - navForward->setEnabled( false ); - navBack->setEnabled( false ); - - mainLayout->addWidget( navToolBar ); - - QString localeName = cfg.preferences.helpLanguage; - - if( localeName.isEmpty() ) - localeName = cfg.preferences.interfaceLanguage; - - if( localeName.isEmpty() ) - localeName = QLocale::system().name(); - - QString helpDir = Config::getHelpDir(); - helpFile = QDir::toNativeSeparators( helpDir + "/gdhelp_" + localeName + ".qch" ); - - if( !QFileInfo( helpFile ).isFile() ) - helpFile = QDir::toNativeSeparators( helpDir + "/gdhelp_" + localeName.left( 2 ) + ".qch" ); - - if( !QFileInfo( helpFile ).isFile() ) - helpFile = QDir::toNativeSeparators( helpDir + "/gdhelp_en.qch" ); - - helpCollectionFile = QDir::toNativeSeparators( Config::getConfigDir() + "gdhelp.qhc" ); - - helpEngine = new QHelpEngine( helpCollectionFile ); - - if( !helpEngine->setupData() ) - { - gdWarning( "Help engine initialization error: %s", helpEngine->error().toUtf8().data() ); - delete helpEngine; - helpEngine = 0; - } - else - { - if( !helpEngine->registerDocumentation( helpFile ) ) - { - gdWarning( "Help engine set file error: %s", helpEngine->error().toUtf8().data() ); - } - - tabWidget = new QTabWidget( this ); - tabWidget->addTab( helpEngine->contentWidget(), tr( "Content" ) ); - tabWidget->addTab( helpEngine->indexWidget(), tr( "Index" ) ); - - helpBrowser = new HelpBrowser( helpEngine, this ); - - helpBrowser->setOpenLinks( false ); - - connect( helpEngine->contentWidget(), SIGNAL( linkActivated( QUrl ) ), - helpBrowser, SLOT( setSource( QUrl ) ) ); - connect( helpEngine->indexWidget(), SIGNAL( linkActivated( QUrl, QString ) ), - helpBrowser, SLOT( setSource( QUrl ) ) ); - - connect( navHome, SIGNAL( triggered() ), helpBrowser, SLOT( home() ) ); - connect( navForward, SIGNAL( triggered() ), helpBrowser, SLOT( forward() ) ); - connect( navBack, SIGNAL( triggered() ), helpBrowser, SLOT( backward() ) ); - - connect( helpBrowser, SIGNAL( forwardAvailable( bool ) ), - this, SLOT( forwardEnabled( bool ) ) ); - - connect( helpBrowser, SIGNAL( backwardAvailable( bool ) ), - this, SLOT( backwardEnabled( bool ) ) ); - - connect( helpEngine->contentWidget(), SIGNAL( clicked( QModelIndex ) ), - this, SLOT( contentsItemClicked( QModelIndex ) ) ); - - connect( zoomInAction, SIGNAL( triggered( ) ), this, SLOT( zoomIn() ) ); - connect( zoomOutAction, SIGNAL( triggered( ) ), this, SLOT( zoomOut() ) ); - connect( zoomBaseAction, SIGNAL( triggered( ) ), this, SLOT( zoomBase() ) ); - - splitter = new QSplitter( this ); - splitter->addWidget( tabWidget ); - splitter->addWidget( helpBrowser ); - - splitter->setStretchFactor( 0, 1 ); - splitter->setStretchFactor( 1, 4 ); - mainLayout->addWidget( splitter ); - } - - if( !cfg.helpWindowGeometry.isEmpty() ) - restoreGeometry( cfg.helpWindowGeometry ); - if( !cfg.helpSplitterState.isEmpty() ) - splitter->restoreState( cfg.helpSplitterState ); - - QFont f = helpBrowser->font(); - fontSize = f.pointSize(); - if( fontSize < 10 ) - { - fontSize = 10; - f.setPointSize( fontSize ); - helpBrowser->setFont( f ); - } - - applyZoomFactor(); -} - -HelpWindow::~HelpWindow() -{ - if( helpEngine ) - delete helpEngine; - - QFile f( helpCollectionFile ); - f.remove(); -} - -void HelpWindow::reject() -{ - cfg.helpWindowGeometry = saveGeometry(); - cfg.helpSplitterState = splitter->saveState(); - emit needClose(); -} - -void HelpWindow::accept() -{ - cfg.helpWindowGeometry = saveGeometry(); - cfg.helpSplitterState = splitter->saveState(); - emit needClose(); -} - -void HelpWindow::showHelpFor( QString const & keyword ) -{ - helpBrowser->showHelpForKeyword( keyword ); -} - -void HelpWindow::forwardEnabled( bool enabled ) -{ - navForward->setEnabled( enabled ); -} - -void HelpWindow::backwardEnabled( bool enabled ) -{ - navBack->setEnabled( enabled ); -} - -void HelpWindow::contentsItemClicked( QModelIndex const & index ) -{ - QHelpContentItem * item = helpEngine->contentModel()->contentItemAt( index ); - if( !item->url().isEmpty() ) - helpBrowser->setSource( item->url() ); -} - -void HelpWindow::zoomIn() -{ - cfg.preferences.helpZoomFactor += 0.2; - applyZoomFactor(); -} - -void HelpWindow::zoomOut() -{ - cfg.preferences.helpZoomFactor -= 0.2; - applyZoomFactor(); -} - -void HelpWindow::zoomBase() -{ - cfg.preferences.helpZoomFactor = 1; - applyZoomFactor(); -} - -void HelpWindow::applyZoomFactor() -{ - if ( cfg.preferences.helpZoomFactor >= 5 ) - cfg.preferences.helpZoomFactor = 5; - else if ( cfg.preferences.helpZoomFactor <= 0.2 ) - cfg.preferences.helpZoomFactor = 0.2; - - zoomInAction->setEnabled( cfg.preferences.helpZoomFactor < 5 ); - zoomOutAction->setEnabled( cfg.preferences.helpZoomFactor > 0.2 ); - zoomBaseAction->setEnabled( cfg.preferences.helpZoomFactor != 1.0 ); - - if( fontSize > 0 ) - { - QFont f = helpBrowser->font(); - f.setPointSize( fontSize * cfg.preferences.helpZoomFactor ); - helpBrowser->setFont( f ); - } -} - -} // namespace Help diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/helpwindow.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/helpwindow.hh deleted file mode 100644 index 279b82afa9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/helpwindow.hh +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef __HELPWINDOW_HH_INCLUDED__ -#define __HELPWINDOW_HH_INCLUDED__ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "config.hh" - -namespace Help { - -class HelpBrowser : public QTextBrowser -{ -Q_OBJECT -public: - HelpBrowser( QHelpEngineCore * engine, QWidget *parent ); - void showHelpForKeyword( QString const & id ); -private: - QVariant loadResource( int type, QUrl const & name ); - QHelpEngineCore * helpEngine; - -private slots: - void linkClicked( QUrl const & url ); -}; - - -class HelpWindow : public QDialog -{ -Q_OBJECT - - Config::Class & cfg; - QToolBar * navToolBar; - QHelpEngine * helpEngine; - QTabWidget * tabWidget; - HelpBrowser * helpBrowser; - QAction * navForward, * navBack, * navHome; - QAction * zoomInAction, * zoomOutAction, * zoomBaseAction; - QSplitter * splitter; - - QString helpFile, helpCollectionFile; - - int fontSize; - - void applyZoomFactor(); - -public: - HelpWindow( QWidget * parent, Config::Class & cfg_ ); - ~HelpWindow(); - - QHelpEngine const * getHelpEngine() - { return helpEngine; } - - void showHelpFor( QString const & keyword ); - -public slots: - virtual void reject(); - virtual void accept(); - void forwardEnabled( bool enabled ); - void backwardEnabled( bool enabled ); - void contentsItemClicked( QModelIndex const & index ); - - void zoomIn(); - void zoomOut(); - void zoomBase(); - -signals: - void needClose(); -}; - -} // namespace Help - -#endif // __HELPWINDOW_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/history.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/history.cc deleted file mode 100644 index 2239afe54b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/history.cc +++ /dev/null @@ -1,180 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "history.hh" -#include "config.hh" -#include "atomic_rename.hh" -#include -#include - -History::History( unsigned size, unsigned maxItemLength_ ): maxSize( size ), - maxItemLength( maxItemLength_ ), addingEnabled( true ) -{ -} - -History::History( Load, unsigned size, unsigned maxItemLength_ ): maxSize( size ), - maxItemLength( maxItemLength_ ), addingEnabled( true ) - , dirty( false ) - , timerId ( 0 ) -{ - QFile file( Config::getHistoryFileName() ); - - if ( !file.open( QFile::ReadOnly | QIODevice::Text ) ) - return; // No file -- no history - - for( unsigned count = 0 ; count < maxSize; ++count ) - { - QByteArray lineUtf8 = file.readLine( 4096 ); - - if ( lineUtf8.endsWith( '\n' ) ) - lineUtf8.chop( 1 ); - - if ( lineUtf8.isEmpty() ) - break; - - QString line = QString::fromUtf8( lineUtf8 ); - - int firstSpace = line.indexOf( ' ' ); - - if ( firstSpace < 0 || firstSpace + 1 == line.size() ) - // No spaces or value? Bad line. End this. - break; - - bool isNumber; - - unsigned groupId = line.left( firstSpace ).toUInt( &isNumber, 10 ); - - if ( !isNumber ) - break; // That's not right - - items.push_back( Item( groupId, line.right( line.size() - firstSpace - 1 ) ) ); - } -} - -History::Item History::getItem( int index ) -{ - if ( index < 0 || index >= items.size() ) - { - return Item(); - } - return items.at( index ); -} - -void History::addItem( Item const & item ) -{ - // qDebug() << "adding item " << item.word << ", enabled=" << enabled(); - if( !enabled() ) - return; - - if ( (unsigned)item.word.size() > getMaxItemLength() || item.word.isEmpty() ) - { - // The search looks bogus. Don't save it. - return; - } - - if ( items.contains( item ) ) - items.removeAll( item ); - - // Special case: if this items differs from the previous one only by group, - // remove it too. - - if ( items.size() && items.first().word == item.word ) - items.pop_front(); - - items.push_front( item ); - - ensureSizeConstraints(); - - dirty = true; - - emit itemsChanged(); -} - -bool History::ensureSizeConstraints() -{ - bool changed = false; - while( items.size() > (int)maxSize ) - { - items.pop_back(); - changed = true; - dirty = true; - } - - return changed; -} - -void History::setMaxSize( unsigned maxSize_ ) -{ - maxSize = maxSize_; - if ( ensureSizeConstraints() ) - { - emit itemsChanged(); - } -} - -int History::size() const -{ - return items.size(); -} - -bool History::save() -{ - if( !dirty ) - return true; - - QFile file( Config::getHistoryFileName() + ".tmp" ); - - if ( !file.open( QFile::WriteOnly | QIODevice::Text ) ) - return false; - - for( QList< Item >::const_iterator i = items.constBegin(); - i != items.constEnd(); ++i ) - { - QByteArray line = i->word.toUtf8(); - - // Those could ruin our format, so we replace them by spaces. They shouldn't - // be there anyway. - line.replace( '\n', ' ' ); - line.replace( '\r', ' ' ); - - line = QByteArray::number( i->groupId ) + " " + line + "\n"; - - if ( file.write( line ) != line.size() ) - return false; - } - - file.close(); - - dirty = false; - - return renameAtomically( file.fileName(), Config::getHistoryFileName() ); -} - -void History::clear() -{ - items.clear(); - dirty = true; - - emit itemsChanged(); -} - -void History::setSaveInterval( unsigned interval ) -{ - if( timerId ) - { - killTimer( timerId ); - timerId = 0; - } - if( interval ) - { - if( dirty ) - save(); - timerId = startTimer( interval * 60000 ); - } -} - -void History::timerEvent( QTimerEvent * ev ) -{ - Q_UNUSED( ev ); - save(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/history.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/history.hh deleted file mode 100644 index 564a620fba..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/history.hh +++ /dev/null @@ -1,116 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __HISTORY_HH_INCLUDED__ -#define __HISTORY_HH_INCLUDED__ - -#include -#include -#include - -#define DEFAULT_MAX_HISTORY_ITEM_LENGTH 256 - -/// Search history -class History: public QObject -{ - Q_OBJECT - -public: - - /// An item in history - struct Item - { - /// Group the search was perfomed in - unsigned groupId; - /// The word that was searched - QString word; - - Item(): groupId( 0 ) - {} - - Item( unsigned groupId_, QString const & word_ ): - groupId( groupId_ ), word( word_ ) - {} - - bool operator == ( Item const & other ) const - { return QString::compare( word, other.word, Qt::CaseInsensitive) == 0 && groupId == other.groupId; } - - bool operator != ( Item const & other ) const - { return ! operator == ( other ); } - }; - - /// Indicates an intention to load -- see the relevant History constructor. - struct Load {}; - - /// Constructs an empty history which can hold at most "size" items. - History( unsigned size = 20 , unsigned maxItemLength = DEFAULT_MAX_HISTORY_ITEM_LENGTH ); - - /// Loads history from its file. If load fails, the result would be an empty - /// history. The size parameter is same as in other constructor. - History( Load, unsigned size = 20, unsigned maxItemLength = DEFAULT_MAX_HISTORY_ITEM_LENGTH ); - - /// Adds new item. The item is always added at the beginning of the list. - /// If there was such an item already somewhere on the list, it gets removed - /// from there. If otherwise the resulting list gets too large, the oldest - /// item gets removed from the end of the list. - void addItem( Item const & ); - - Item getItem( int index ); - - /// Remove item with given index from list - void removeItem( int index ) - { items.removeAt( index ); dirty = true; emit itemsChanged(); } - - /// Attempts saving history. Returns true if succeeded - false otherwise. - /// Since history isn't really that valuable, failures can be ignored. - bool save(); - - /// Clears history. - void clear(); - - /// History size. - int size() const; - - /// Gets the current items. The first one is the newest one on the list. - QList< Item > const & getItems() const - { return items; } - - /// Enable/disable add words to hystory - void enableAdd( bool enable ) - { addingEnabled = enable; } - bool enabled() - { return addingEnabled; } - - void setMaxSize( unsigned maxSize_ ); - - void setSaveInterval( unsigned interval ); - - unsigned getMaxSize() - { return maxSize; } - - unsigned getMaxItemLength() const - { return maxItemLength; } - -signals: - - /// Signals the changes in items in response to addItem() or clear(). - void itemsChanged(); - -private: - - /// Returns true if the items list has been modified - /// in order to fit into the constraints. - bool ensureSizeConstraints(); - - QList< Item > items; - unsigned maxSize; - unsigned maxItemLength; - bool addingEnabled; - bool dirty; - int timerId; - -protected: - virtual void timerEvent( QTimerEvent * ); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/historypanewidget.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/historypanewidget.cc deleted file mode 100644 index c92b0ec487..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/historypanewidget.cc +++ /dev/null @@ -1,267 +0,0 @@ -/* This file is (c) 2013 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include -#include -#include - -#include "historypanewidget.hh" - -void HistoryPaneWidget::setUp( Config::Class * cfg, History * history, QMenu * menu ) -{ - m_cfg = cfg; - m_history = history; - m_historyList = findChild( "historyList" ); - QDockWidget * historyPane = qobject_cast( parentWidget() ); - - // Delete selected items action - m_deleteSelectedAction = new QAction( this ); - m_deleteSelectedAction->setText( tr( "&Delete Selected" ) ); - m_deleteSelectedAction->setShortcut( QKeySequence( QKeySequence::Delete ) ); - m_deleteSelectedAction->setShortcutContext( Qt::WidgetWithChildrenShortcut ); - addAction( m_deleteSelectedAction ); - connect( m_deleteSelectedAction, SIGNAL( triggered() ), - this, SLOT( deleteSelectedItems() ) ); - - // Copy selected items to clipboard - m_copySelectedToClipboard = new QAction( this ); - m_copySelectedToClipboard->setText( tr( "Copy Selected" ) ); - m_copySelectedToClipboard->setShortcut( QKeySequence( QKeySequence::Copy ) ); - m_copySelectedToClipboard->setShortcutContext( Qt::WidgetWithChildrenShortcut ); - addAction( m_copySelectedToClipboard ); - connect( m_copySelectedToClipboard, SIGNAL( triggered() ), - this, SLOT( copySelectedItems() ) ); - - - // Handle context menu, reusing some of the top-level window's History menu - m_historyMenu = new QMenu( this ); - m_separator = m_historyMenu->addSeparator(); - QListIterator actionsIter( menu->actions() ); - while ( actionsIter.hasNext() ) - m_historyMenu->addAction( actionsIter.next() ); - - // Make the history pane's titlebar - - historyLabel.setText( tr( "History:" ) ); - historyLabel.setObjectName( "historyLabel" ); - historyCountLabel.setObjectName( "historyCountLabel" ); - if ( layoutDirection() == Qt::LeftToRight ) - { - historyLabel.setAlignment( Qt::AlignLeft ); - historyCountLabel.setAlignment( Qt::AlignRight ); - } - else - { - historyLabel.setAlignment( Qt::AlignRight ); - historyCountLabel.setAlignment( Qt::AlignLeft ); - } - updateHistoryCounts(); - - historyPaneTitleBarLayout.addWidget( &historyLabel ); - historyPaneTitleBarLayout.addWidget( &historyCountLabel ); - historyPaneTitleBarLayout.setContentsMargins(5, 5, 5, 5); - historyPaneTitleBar.setLayout( &historyPaneTitleBarLayout ); - historyPaneTitleBar.setObjectName("historyPaneTitleBar"); - historyPane->setTitleBarWidget( &historyPaneTitleBar ); - - // History list - HistoryModel * historyModel = new HistoryModel( m_history, this ); - m_historyList->setModel( historyModel ); - m_historyList->setContextMenuPolicy( Qt::CustomContextMenu ); - // very important call, for performance reasons: - m_historyList->setUniformItemSizes( true ); - m_historyList->setSelectionMode( QAbstractItemView::ExtendedSelection ); - m_historyList->installEventFilter( this ); - m_historyList->viewport()->installEventFilter( this ); - - // list selection and keyboard navigation - connect( m_historyList, SIGNAL( clicked( QModelIndex const & ) ), - this, SLOT( onItemClicked( QModelIndex const & ) ) ); - connect( m_history, SIGNAL( itemsChanged() ), - this, SLOT( updateHistoryCounts() ) ); - connect ( m_historyList->selectionModel(), SIGNAL( selectionChanged ( QItemSelection const & , QItemSelection const & ) ), - this, SLOT( onSelectionChanged( QItemSelection const & ) ) ); - - connect( m_historyList, SIGNAL( customContextMenuRequested( QPoint const & ) ), - this, SLOT( showCustomMenu( QPoint const & ) ) ); - - listItemDelegate = new WordListItemDelegate( m_historyList->itemDelegate() ); - m_historyList->setItemDelegate( listItemDelegate ); -} - -HistoryPaneWidget::~HistoryPaneWidget() -{ - if( listItemDelegate ) - delete listItemDelegate; -} - -void HistoryPaneWidget::copySelectedItems() -{ - QModelIndexList selectedIdxs = m_historyList->selectionModel()->selectedIndexes(); - - if ( selectedIdxs.isEmpty() ) - { - // nothing to do - return; - } - - QStringList selectedStrings; - QListIterator i( selectedIdxs ); - while ( i.hasNext() ) - { - selectedStrings << m_historyList->model()->data( i.next() ).toString(); - } - - QApplication::clipboard()->setText( selectedStrings.join( QString::fromLatin1( "\n" ) ) ); -} - -void HistoryPaneWidget::deleteSelectedItems() -{ - QModelIndexList selectedIdxs = m_historyList->selectionModel()->selectedIndexes(); - - if ( selectedIdxs.isEmpty() ) - { - // nothing to do - return; - } - - QList idxsToDelete; - - QListIterator i( selectedIdxs ); - while ( i.hasNext() ) - { - idxsToDelete << i.next().row(); - } - - // Need to sort indexes in the decreasing order so that - // the first deletions won't affect the indexes for subsequent deletions. - qSort( idxsToDelete.begin(), idxsToDelete.end(), qGreater() ); - - QListIterator idxs( idxsToDelete ); - while ( idxs.hasNext() ) - m_history->removeItem( idxs.next() ); - - if ( idxsToDelete.size() == 1 ) - { - // We've just removed a single entry, - // keep the selection at the same index. - m_historyList->setCurrentIndex(selectedIdxs.front()); - m_historyList->selectionModel()->select( - selectedIdxs.front(), QItemSelectionModel::SelectCurrent ); - } - else - { - // Too many deletions, better to reset the selection. - m_historyList->selectionModel()->reset(); - } -} - -bool HistoryPaneWidget::eventFilter( QObject * obj, QEvent * ev ) -{ - // unused for now - - return QWidget::eventFilter( obj, ev ); -} - -void HistoryPaneWidget::showCustomMenu(QPoint const & pos) -{ - bool selectionEmpty = m_historyList->selectionModel()->selection().empty(); - - m_historyMenu->removeAction( m_copySelectedToClipboard ); - m_historyMenu->removeAction( m_deleteSelectedAction ); - - m_separator->setVisible( !selectionEmpty ); - - if ( !selectionEmpty ) - { - m_historyMenu->insertAction( m_separator, m_copySelectedToClipboard ); - m_historyMenu->insertAction( m_separator, m_deleteSelectedAction ); - } - - m_historyMenu->exec( m_historyList->mapToGlobal( pos ) ); -} - -void HistoryPaneWidget::emitHistoryItemRequested( QModelIndex const & idx ) -{ - QVariant value = m_historyList->model()->data( idx ); - if ( !value.isNull() ) - { - emit historyItemRequested( value.toString() ); - } -} - -void HistoryPaneWidget::onSelectionChanged( QItemSelection const & selection ) -{ - // qDebug() << "selectionChanged"; - - if ( selection.empty() ) - return; - - itemSelectionChanged = true; - emitHistoryItemRequested( selection.front().topLeft() ); -} - -void HistoryPaneWidget::onItemClicked( QModelIndex const & idx ) -{ - // qDebug() << "clicked"; - - if ( !itemSelectionChanged ) - { - emitHistoryItemRequested( idx ); - } - itemSelectionChanged = false; -} - -void HistoryPaneWidget::updateHistoryCounts() -{ - historyCountLabel.setText( tr( "%1/%2" ). - arg( m_history->size() ). - arg( m_cfg->preferences.maxStringsInHistory ) ); - historyCountLabel.setToolTip( - tr( "History size: %1 entries out of maximum %2" ). - arg( m_history->size() ). - arg( m_cfg->preferences.maxStringsInHistory )); -} - -HistoryModel::HistoryModel( History * history, QObject * parent ) - : QAbstractListModel( parent ), m_history(history) -{ - - connect( m_history, SIGNAL( itemsChanged() ), - this, SLOT( historyChanged() ) ); - -} - -int HistoryModel::rowCount( QModelIndex const & /*parent*/ ) const -{ - return m_history->size(); -} - -QVariant HistoryModel::data( QModelIndex const & index, int role ) const -{ - // qDebug() << "data: " << index; - - if ( !index.isValid() || index.row() >= m_history->size() ) - { - return QVariant(); - } - - if ( role == Qt::DisplayRole || role == Qt::ToolTipRole ) - { - return m_history->getItem( index.row() ).word; - } - else - { - return QVariant(); - } -} - -void HistoryModel::historyChanged() -{ -// qDebug() << "History Changed!!"; - - beginResetModel(); - endResetModel(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/historypanewidget.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/historypanewidget.hh deleted file mode 100644 index a8487f63bc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/historypanewidget.hh +++ /dev/null @@ -1,89 +0,0 @@ -/* This file is (c) 2013 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __HISTORYPANEWIDGET_HH_INCLUDED__ -#define __HISTORYPANEWIDGET_HH_INCLUDED__ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include "history.hh" -#include "delegate.hh" - -/// A widget holding the contents of the 'History' docklet. -class HistoryPaneWidget : public QWidget -{ - Q_OBJECT -public: - explicit HistoryPaneWidget( QWidget * parent = 0 ): QWidget( parent ), - itemSelectionChanged( false ) - , listItemDelegate( 0 ) - {} - virtual ~HistoryPaneWidget(); - - virtual QSize sizeHint() const - { return QSize( 204, 204 ); } - - void setUp( Config::Class * cfg, History * history, QMenu * menu ); - -signals: - void historyItemRequested( QString const & word ); - -public slots: - void updateHistoryCounts(); - -private slots: - void emitHistoryItemRequested(QModelIndex const &); - void onSelectionChanged(QItemSelection const & selection); - void onItemClicked(QModelIndex const & idx); - void showCustomMenu(QPoint const & pos); - void deleteSelectedItems(); - void copySelectedItems(); - -private: - virtual bool eventFilter( QObject *, QEvent * ); - - Config::Class * m_cfg ; - History * m_history; - QListView * m_historyList; - QMenu * m_historyMenu; - QAction * m_deleteSelectedAction; - QAction * m_separator; - QAction * m_copySelectedToClipboard; - - QWidget historyPaneTitleBar; - QHBoxLayout historyPaneTitleBarLayout; - QLabel historyLabel; - QLabel historyCountLabel; - - /// needed to avoid multiple notifications - /// when selecting history items via mouse and keyboard - bool itemSelectionChanged; - - WordListItemDelegate * listItemDelegate; -}; - -class HistoryModel : public QAbstractListModel -{ - Q_OBJECT -public: - explicit HistoryModel( History * history , QObject * parent = 0 ); - - int rowCount( QModelIndex const & parent = QModelIndex() ) const; - - QVariant data( QModelIndex const & index, int role = Qt::DisplayRole ) const; - -private slots: - void historyChanged(); - -private: - History * m_history; -}; - -#endif // HISTORYPANEWIDGET_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeyedit.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeyedit.cc deleted file mode 100644 index cf255dde2e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeyedit.cc +++ /dev/null @@ -1,220 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "hotkeyedit.hh" -#include - -#ifdef Q_OS_WIN -#include -#endif - -HotKeyEdit::HotKeyEdit( QWidget * parent ): - QLineEdit( parent ), - currentModifiers( 0 ), currentKey1( 0 ), currentKey2( 0 ), - continuingCombo( false ) -{ - renderCurrentValue(); - installEventFilter( this ); -} - -void HotKeyEdit::setHotKey( Config::HotKey const & hk ) -{ - currentModifiers = hk.modifiers; - currentKey1 = hk.key1; - currentKey2 = hk.key2; - - renderCurrentValue(); -} - -Config::HotKey HotKeyEdit::getHotKey() const -{ - Config::HotKey hk; - - hk.modifiers = currentModifiers; - hk.key1 = currentKey1; - hk.key2 = currentKey2; - - return hk; -} - -void HotKeyEdit::renderCurrentValue() -{ - QString result; - - if ( currentKey1 ) - { - result = QKeySequence( currentKey1 | currentModifiers ).toString( QKeySequence::NativeText ); - - if ( currentKey2 ) - result += "+" + QKeySequence( currentKey2 ).toString( QKeySequence::NativeText ); - } - - setText( result ); -} - -void HotKeyEdit::keyPressEvent( QKeyEvent * event ) -{ - int key = event->key(); - Qt::KeyboardModifiers modifiers = event->modifiers() & ~Qt::KeypadModifier; - -#ifdef Q_OS_WIN - if( objectName() == "mainWindowHotkey" || objectName() == "clipboardHotkey" ) - { - int newkey = VkeyToQTkey( event->nativeVirtualKey() ); - if( newkey ) - key = newkey; - } -#endif - - switch( key ) - { - case 0: - case Qt::Key_unknown: - case Qt::Key_Shift: - case Qt::Key_Control: - case Qt::Key_Meta: - case Qt::Key_Alt: - case Qt::Key_AltGr: - continuingCombo = false; - QLineEdit::keyPressEvent( event ); - break; - - default: - { - if ( !modifiers && - ( ( key == Qt::Key_Backspace ) || ( key == Qt::Key_Delete ) ) ) - { - // Delete current combo - currentKey1 = 0; - currentKey2 = 0; - currentModifiers = 0; - continuingCombo = false; - } - else - if ( !continuingCombo ) - { - if ( modifiers || event->text().isEmpty() ) // Don't allow plain letters - { - currentKey2 = 0; - currentKey1 = key; - currentModifiers = modifiers; - continuingCombo = true; - } - } - else - { - currentKey2 = key; - continuingCombo = false; - } - - renderCurrentValue(); - } - break; - } -} - -void HotKeyEdit::keyReleaseEvent( QKeyEvent * event ) -{ - switch( event->key() ) - { - case 0: - case Qt::Key_unknown: - case Qt::Key_Shift: - case Qt::Key_Control: - case Qt::Key_Meta: - case Qt::Key_Alt: - case Qt::Key_AltGr: - continuingCombo = false; - break; - } - - QLineEdit::keyReleaseEvent( event ); -} - -bool HotKeyEdit::eventFilter( QObject *, QEvent * event ) -{ - if( event->type() == QEvent::ShortcutOverride ) - { - event->accept(); - return true; - } - return false; -} - -#ifdef Q_OS_WIN - -int HotKeyEdit::VkeyToQTkey( quint32 vkey ) -{ - if ( vkey >= Qt::Key_A && vkey <= Qt::Key_Z) - return vkey; - - switch( vkey ) - { - case VK_NUMPAD0: return Qt::Key_0; - case VK_NUMPAD1: return Qt::Key_1; - case VK_NUMPAD2: return Qt::Key_2; - case VK_NUMPAD3: return Qt::Key_3; - case VK_NUMPAD4: return Qt::Key_4; - case VK_NUMPAD5: return Qt::Key_5; - case VK_NUMPAD6: return Qt::Key_6; - case VK_NUMPAD7: return Qt::Key_7; - case VK_NUMPAD8: return Qt::Key_8; - case VK_NUMPAD9: return Qt::Key_9; - case VK_DIVIDE: return Qt::Key_Slash; - case VK_MULTIPLY: return Qt::Key_Asterisk; - case VK_SUBTRACT: return Qt::Key_Minus; - case VK_ADD: return Qt::Key_Plus; - case VK_DECIMAL: return Qt::Key_Period; - case VK_F1: return Qt::Key_F1; - case VK_F2: return Qt::Key_F2; - case VK_F3: return Qt::Key_F3; - case VK_F4: return Qt::Key_F4; - case VK_F5: return Qt::Key_F5; - case VK_F6: return Qt::Key_F6; - case VK_F7: return Qt::Key_F7; - case VK_F8: return Qt::Key_F8; - case VK_F9: return Qt::Key_F9; - case VK_F10: return Qt::Key_F10; - case VK_F11: return Qt::Key_F11; - case VK_F12: return Qt::Key_F12; - case VK_F13: return Qt::Key_F13; - case VK_F14: return Qt::Key_F14; - case VK_F15: return Qt::Key_F15; - case VK_F16: return Qt::Key_F16; - case VK_F17: return Qt::Key_F17; - case VK_F18: return Qt::Key_F18; - case VK_F19: return Qt::Key_F19; - case VK_F20: return Qt::Key_F20; - case VK_F21: return Qt::Key_F21; - case VK_F22: return Qt::Key_F22; - case VK_F23: return Qt::Key_F23; - case VK_F24: return Qt::Key_F24; - case 0x30: return Qt::Key_ParenRight; - case 0x31: return Qt::Key_Exclam; - case 0x32: return Qt::Key_At; - case 0x33: return Qt::Key_NumberSign; - case 0x34: return Qt::Key_Dollar; - case 0x35: return Qt::Key_Percent; - case 0x36: return Qt::Key_AsciiCircum; - case 0x37: return Qt::Key_Ampersand; - case 0x38: return Qt::Key_copyright; - case 0x39: return Qt::Key_ParenLeft; - case VK_OEM_MINUS: return Qt::Key_Underscore; - case VK_OEM_PLUS: return Qt::Key_Equal; - case VK_OEM_1: return Qt::Key_Semicolon; - case VK_OEM_2: return Qt::Key_Question; - case VK_OEM_3: return Qt::Key_QuoteLeft; - case VK_OEM_4: return Qt::Key_BracketLeft; - case VK_OEM_5: return Qt::Key_Backslash; - case VK_OEM_6: return Qt::Key_BracketRight; - case VK_OEM_7: return Qt::Key_Apostrophe; - case VK_OEM_COMMA: return Qt::Key_Less; - case VK_OEM_PERIOD: return Qt::Key_Greater; - - default:; - } - - return 0; -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeyedit.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeyedit.hh deleted file mode 100644 index 512c031948..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeyedit.hh +++ /dev/null @@ -1,41 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __HOTKEYEDIT_HH_INCLUDED__ -#define __HOTKEYEDIT_HH_INCLUDED__ - -#include "config.hh" -#include - -// This widget allows grabbing a hotkey -class HotKeyEdit: public QLineEdit -{ - Q_OBJECT - - Qt::KeyboardModifiers currentModifiers; - int currentKey1, currentKey2; - - bool continuingCombo; - -public: - - HotKeyEdit( QWidget * parent = 0 ); - - void setHotKey( Config::HotKey const & ); - Config::HotKey getHotKey() const; - -protected: - - void keyPressEvent( QKeyEvent * event ); - void keyReleaseEvent( QKeyEvent * event ); - -private: - - void renderCurrentValue(); - bool eventFilter( QObject *, QEvent * event ); -#ifdef Q_OS_WIN - int VkeyToQTkey( quint32 vkey ); -#endif -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeywrapper.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeywrapper.cc deleted file mode 100644 index 267e0be1e7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeywrapper.cc +++ /dev/null @@ -1,779 +0,0 @@ -#ifdef __WIN32 // Q_OS_WIN32 isn't available at this point -#define _WIN32_WINNT 0x0430 -#include -#endif - -#include "hotkeywrapper.hh" -#include "gddebug.hh" - -#include -#include - -#ifdef Q_OS_WIN32 -#include "mainwindow.hh" -#endif - -////////////////////////////////////////////////////////////////////////// - -QHotkeyApplication::QHotkeyApplication( int & argc, char ** argv ): - QtSingleApplication( argc, argv ) -#ifdef Q_OS_WIN32 -, mainWindow( 0 ) -#endif -{ -#if defined( Q_OS_WIN ) && IS_QT_5 - installNativeEventFilter( this ); -#endif -} - -QHotkeyApplication::QHotkeyApplication( QString const & id, - int & argc, char ** argv ): - QtSingleApplication( id, argc, argv ) -#ifdef Q_OS_WIN32 -, mainWindow( 0 ) -#endif -{ -#if defined( Q_OS_WIN ) && IS_QT_5 - installNativeEventFilter( this ); -#endif -} - -void QHotkeyApplication::addDataCommiter( DataCommitter & d ) -{ - dataCommitters.append( &d ); -} - -void QHotkeyApplication::removeDataCommiter( DataCommitter & d ) -{ - dataCommitters.removeAll( &d ); -} - -void QHotkeyApplication::commitData( QSessionManager & s ) -{ - for( int x = 0; x < dataCommitters.size(); ++x ) - dataCommitters[ x ]->commitData( s ); -} - -void QHotkeyApplication::registerWrapper(HotkeyWrapper *wrapper) -{ - if (wrapper && !hotkeyWrappers.contains(wrapper)) - hotkeyWrappers.append(wrapper); -} - -void QHotkeyApplication::unregisterWrapper(HotkeyWrapper *wrapper) -{ - if (wrapper && hotkeyWrappers.contains(wrapper)) - hotkeyWrappers.removeAll(wrapper); -} - -////////////////////////////////////////////////////////////////////////// - -HotkeyStruct::HotkeyStruct( quint32 key_, quint32 key2_, quint32 modifier_, - int handle_, int id_ ): - key( key_ ), - key2( key2_ ), - modifier( modifier_ ), - handle( handle_ ), - id( id_ ) -#ifdef Q_OS_MAC - , hkRef( 0 ) - , hkRef2( 0 ) -#endif -{ -} - -////////////////////////////////////////////////////////////////////////// - -#if !defined(Q_OS_MAC) && !defined(Q_WS_QWS) -HotkeyWrapper::HotkeyWrapper(QObject *parent) : QThread( parent ), - state2(false) -{ -#ifdef Q_OS_WIN - hwnd=(HWND)((static_cast(parent))->winId()); -#else - init(); -#endif - (static_cast(qApp))->registerWrapper(this); -} - -HotkeyWrapper::~HotkeyWrapper() -{ - unregister(); -} - -void HotkeyWrapper::waitKey2() -{ - state2 = false; - -#ifdef HAVE_X11 - - if ( keyToUngrab != grabbedKeys.end() ) - { - ungrabKey( keyToUngrab ); - keyToUngrab = grabbedKeys.end(); - } - -#endif -} - -bool HotkeyWrapper::checkState(quint32 vk, quint32 mod) -{ - if ( state2 ) - { // wait for 2nd key - - waitKey2(); // Cancel the 2nd-key wait stage - - if (state2waiter.key2 == vk && state2waiter.modifier == mod) - { - emit hotkeyActivated( state2waiter.handle ); - return true; - } - } - - for (int i = 0; i < hotkeys.count(); i++) { - - const HotkeyStruct &hs = hotkeys.at(i); - - if (hs.key == vk && hs.modifier == mod) { - - #ifdef Q_OS_WIN32 - - if( hs.key2 != 0 || ( mod == MOD_CONTROL && ( vk == VK_INSERT || vk == 'c' || vk == 'C' ) ) ) - { - // Pass-through first part of compound hotkey or clipdoard copy command - - INPUT i[ 10 ]; - memset( i, 0, sizeof( i ) ); - int nextKeyNom = 0; - short emulateModKeys = 0; - - // If modifier keys aren't pressed it looks like emulation - // We then also emulate full sequence - - if( ( mod & MOD_ALT ) != 0 && ( GetAsyncKeyState( VK_MENU ) & 0x8000 ) == 0 ) - { - emulateModKeys |= MOD_ALT; - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_MENU; - nextKeyNom += 1; - } - if( ( mod & MOD_CONTROL ) != 0 && ( GetAsyncKeyState( VK_CONTROL ) & 0x8000 ) == 0 ) - { - emulateModKeys |= MOD_CONTROL; - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_CONTROL; - nextKeyNom += 1; - } - if( ( mod & MOD_SHIFT ) != 0 && ( GetAsyncKeyState( VK_SHIFT ) & 0x8000 ) == 0 ) - { - emulateModKeys |= MOD_SHIFT; - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_SHIFT; - nextKeyNom += 1; - } - if( ( mod & MOD_WIN ) != 0 && ( GetAsyncKeyState( VK_LWIN ) & 0x8000 ) == 0 - && ( GetAsyncKeyState( VK_RWIN ) & 0x8000 ) == 0 ) - { - emulateModKeys |= MOD_WIN; - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_LWIN; - nextKeyNom += 1; - } - - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = vk; - nextKeyNom += 1; - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = vk; - i[ nextKeyNom ].ki.dwFlags = KEYEVENTF_KEYUP; - nextKeyNom += 1; - - if( emulateModKeys & MOD_WIN ) - { - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_LWIN; - i[ nextKeyNom ].ki.dwFlags = KEYEVENTF_KEYUP; - nextKeyNom += 1; - } - if( emulateModKeys & MOD_SHIFT ) - { - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_SHIFT; - i[ nextKeyNom ].ki.dwFlags = KEYEVENTF_KEYUP; - nextKeyNom += 1; - } - if( emulateModKeys & MOD_CONTROL ) - { - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_CONTROL; - i[ nextKeyNom ].ki.dwFlags = KEYEVENTF_KEYUP; - nextKeyNom += 1; - } - if( emulateModKeys & MOD_ALT ) - { - i[ nextKeyNom ].type = INPUT_KEYBOARD; - i[ nextKeyNom ].ki.wVk = VK_MENU; - i[ nextKeyNom ].ki.dwFlags = KEYEVENTF_KEYUP; - nextKeyNom += 1; - } - - UnregisterHotKey( hwnd, hs.id ); - SendInput( nextKeyNom, i, sizeof( *i ) ); - RegisterHotKey(hwnd, hs.id, hs.modifier, hs.key); - } - #endif - - if (hs.key2 == 0) { - emit hotkeyActivated( hs.handle ); - return true; - } - - state2 = true; - state2waiter = hs; - QTimer::singleShot(500, this, SLOT(waitKey2())); - - #ifdef HAVE_X11 - - // Grab the second key, unless it's grabbed already - // Note that we only grab the clipboard key only if - // the sequence didn't begin with it - - if ( ( isCopyToClipboardKey( hs.key, hs.modifier ) || - !isCopyToClipboardKey( hs.key2, hs.modifier ) ) && - !isKeyGrabbed( hs.key2, hs.modifier ) ) - keyToUngrab = grabKey( hs.key2, hs.modifier ); - - #endif - - return true; - } - } - - state2 = false; - return false; -} - -////////////////////////////////////////////////////////////////////////// - -#ifdef Q_OS_WIN - -void HotkeyWrapper::init() -{ - QWidget *root = qApp->topLevelWidgets().value(0); - hwnd = (HWND)root->winId(); -} - -bool HotkeyWrapper::setGlobalKey( int key, int key2, - Qt::KeyboardModifiers modifier, int handle ) -{ - if ( !key ) - return false; // We don't monitor empty combinations - - static int id = 0; - if( id > 0xBFFF - 1 ) - id = 0; - - quint32 mod = 0; - if (modifier & Qt::CTRL) - mod |= MOD_CONTROL; - if (modifier & Qt::ALT) - mod |= MOD_ALT; - if (modifier & Qt::SHIFT) - mod |= MOD_SHIFT; - if (modifier & Qt::META) - mod |= MOD_WIN; - - quint32 vk = nativeKey( key ); - quint32 vk2 = key2 ? nativeKey( key2 ) : 0; - - hotkeys.append( HotkeyStruct( vk, vk2, mod, handle, id ) ); - - if (!RegisterHotKey(hwnd, id++, mod, vk)) - return false; - - if ( key2 && key2 != key ) - return RegisterHotKey(hwnd, id++, mod, vk2); - - return true; -} - -bool HotkeyWrapper::winEvent ( MSG * message, long * result ) -{ - (void) result; - if (message->message == WM_HOTKEY) - return checkState( (message->lParam >> 16), (message->lParam & 0xffff) ); - - return false; -} - -quint32 HotkeyWrapper::nativeKey(int key) -{ - if (key >= Qt::Key_0 && key <= Qt::Key_9) - return VK_NUMPAD0 + ( key - Qt::Key_0 ); - - if (key >= Qt::Key_A && key <= Qt::Key_Z) - return key; - - switch (key) { - case Qt::Key_Space: return VK_SPACE; - case Qt::Key_Asterisk: return VK_MULTIPLY; - case Qt::Key_Plus: return VK_ADD; - case Qt::Key_Comma: return VK_SEPARATOR; - case Qt::Key_Minus: return VK_SUBTRACT; - case Qt::Key_Slash: return VK_DIVIDE; - case Qt::Key_Tab: - case Qt::Key_Backtab: return VK_TAB; - case Qt::Key_Backspace: return VK_BACK; - case Qt::Key_Return: - case Qt::Key_Escape: return VK_ESCAPE; - case Qt::Key_Enter: return VK_RETURN; - case Qt::Key_Insert: return VK_INSERT; - case Qt::Key_Delete: return VK_DELETE; - case Qt::Key_Pause: return VK_PAUSE; - case Qt::Key_Print: return VK_PRINT; - case Qt::Key_Clear: return VK_CLEAR; - case Qt::Key_Home: return VK_HOME; - case Qt::Key_End: return VK_END; - case Qt::Key_Up: return VK_UP; - case Qt::Key_Down: return VK_DOWN; - case Qt::Key_Left: return VK_LEFT; - case Qt::Key_Right: return VK_RIGHT; - case Qt::Key_PageUp: return VK_PRIOR; - case Qt::Key_PageDown: return VK_NEXT; - case Qt::Key_F1: return VK_F1; - case Qt::Key_F2: return VK_F2; - case Qt::Key_F3: return VK_F3; - case Qt::Key_F4: return VK_F4; - case Qt::Key_F5: return VK_F5; - case Qt::Key_F6: return VK_F6; - case Qt::Key_F7: return VK_F7; - case Qt::Key_F8: return VK_F8; - case Qt::Key_F9: return VK_F9; - case Qt::Key_F10: return VK_F10; - case Qt::Key_F11: return VK_F11; - case Qt::Key_F12: return VK_F12; - case Qt::Key_F13: return VK_F13; - case Qt::Key_F14: return VK_F14; - case Qt::Key_F15: return VK_F15; - case Qt::Key_F16: return VK_F16; - case Qt::Key_F17: return VK_F17; - case Qt::Key_F18: return VK_F18; - case Qt::Key_F19: return VK_F19; - case Qt::Key_F20: return VK_F20; - case Qt::Key_F21: return VK_F21; - case Qt::Key_F22: return VK_F22; - case Qt::Key_F23: return VK_F23; - case Qt::Key_F24: return VK_F24; - case Qt::Key_Colon: - case Qt::Key_Semicolon: return VK_OEM_1; - case Qt::Key_Question: return VK_OEM_2; - case Qt::Key_AsciiTilde: - case Qt::Key_QuoteLeft: return VK_OEM_3; - case Qt::Key_BraceLeft: - case Qt::Key_BracketLeft: return VK_OEM_4; - case Qt::Key_Bar: - case Qt::Key_Backslash: return VK_OEM_5; - case Qt::Key_BraceRight: - case Qt::Key_BracketRight: return VK_OEM_6; - case Qt::Key_QuoteDbl: - case Qt::Key_Apostrophe: return VK_OEM_7; - case Qt::Key_Less: return VK_OEM_COMMA; - case Qt::Key_Greater: return VK_OEM_PERIOD; - case Qt::Key_Equal: return VK_OEM_PLUS; - case Qt::Key_ParenRight: return 0x30; - case Qt::Key_Exclam: return 0x31; - case Qt::Key_At: return 0x32; - case Qt::Key_NumberSign: return 0x33; - case Qt::Key_Dollar: return 0x34; - case Qt::Key_Percent: return 0x35; - case Qt::Key_AsciiCircum: return 0x36; - case Qt::Key_Ampersand: return 0x37; - case Qt::Key_copyright: return 0x38; - case Qt::Key_ParenLeft: return 0x39; - case Qt::Key_Underscore: return VK_OEM_MINUS; - default:; - } - - return key; -} - -void HotkeyWrapper::unregister() -{ - for (int i = 0; i < hotkeys.count(); i++) - { - HotkeyStruct const & hk = hotkeys.at( i ); - - UnregisterHotKey( hwnd, hk.id ); - - if ( hk.key2 && hk.key2 != hk.key ) - UnregisterHotKey( hwnd, hk.id+1 ); - } - - (static_cast(qApp))->unregisterWrapper(this); -} - - -#if IS_QT_5 - -bool QHotkeyApplication::nativeEventFilter( const QByteArray & /*eventType*/, void * message, long * result ) -{ - MSG * msg = reinterpret_cast< MSG * >( message ); - - if ( msg->message == WM_HOTKEY ) - { - for (int i = 0; i < hotkeyWrappers.size(); i++) - { - if ( hotkeyWrappers.at(i)->winEvent( msg, result ) ) - return true; - } - } - - if( mainWindow ) - { - if( ( static_cast< MainWindow * >( mainWindow ) )->handleGDMessage( msg, result ) ) - return true; - } - - return false; -} - -#else // IS_QT_5 - -bool QHotkeyApplication::winEventFilter ( MSG * message, long * result ) -{ - if (message->message == WM_HOTKEY) - { - for (int i = 0; i < hotkeyWrappers.size(); i++) - { - if ( hotkeyWrappers.at(i)->winEvent( message, result ) ) - return true; - } - } - - if( mainWindow ) - { - if( ( static_cast< MainWindow * >( mainWindow ) )->handleGDMessage( message, result ) ) - return true; - } - - return QApplication::winEventFilter( message, result ); -} - -#endif - -////////////////////////////////////////////////////////////////////////// - -#else - -////////////////////////////////////////////////////////////////////////// - -#include - -void HotkeyWrapper::init() -{ - keyToUngrab = grabbedKeys.end(); - - // We use RECORD extension instead of XGrabKey. That's because XGrabKey - // prevents other clients from getting their input if it's grabbed. - - Display * display = QX11Info::display(); - - lShiftCode = XKeysymToKeycode( display, XK_Shift_L ); - rShiftCode = XKeysymToKeycode( display, XK_Shift_R ); - - lCtrlCode = XKeysymToKeycode( display, XK_Control_L ); - rCtrlCode = XKeysymToKeycode( display, XK_Control_R ); - - lAltCode = XKeysymToKeycode( display, XK_Alt_L ); - rAltCode = XKeysymToKeycode( display, XK_Alt_R ); - - lMetaCode = XKeysymToKeycode( display, XK_Super_L ); - rMetaCode = XKeysymToKeycode( display, XK_Super_R ); - - cCode = XKeysymToKeycode( display, XK_c ); - insertCode = XKeysymToKeycode( display, XK_Insert ); - kpInsertCode = XKeysymToKeycode( display, XK_KP_Insert ); - - currentModifiers = 0; - - // This one will be used to read the recorded content - dataDisplay = XOpenDisplay( 0 ); - - if ( !dataDisplay ) - throw exInit(); - - recordRange = XRecordAllocRange(); - - if ( !recordRange ) - { - XCloseDisplay( dataDisplay ); - throw exInit(); - } - - recordRange->device_events.first = KeyPress; - recordRange->device_events.last = KeyRelease; - recordClientSpec = XRecordAllClients; - - recordContext = XRecordCreateContext( display, 0, - &recordClientSpec, 1, - &recordRange, 1 ); - - if ( !recordContext ) - { - XFree( recordRange ); - XCloseDisplay( dataDisplay ); - throw exInit(); - } - - // This is required to ensure context was indeed created - XSync( display, False ); - - connect( this, SIGNAL( keyRecorded( quint32, quint32 ) ), - this, SLOT( checkState( quint32, quint32 ) ), - Qt::QueuedConnection ); - - start(); -} - -void HotkeyWrapper::run() // Runs in a separate thread -{ - if ( !XRecordEnableContext( dataDisplay, recordContext, - recordEventCallback, - (XPointer) this ) ) - GD_DPRINTF( "Failed to enable record context\n" ); -} - - -void HotkeyWrapper::recordEventCallback( XPointer ptr, XRecordInterceptData * data ) -{ - ((HotkeyWrapper * )ptr)->handleRecordEvent( data ); -} - -void HotkeyWrapper::handleRecordEvent( XRecordInterceptData * data ) -{ - if ( data->category == XRecordFromServer ) - { - xEvent * event = ( xEvent * ) data->data; - - if ( event->u.u.type == KeyPress ) - { - KeyCode key = event->u.u.detail; - - if ( key == lShiftCode || - key == rShiftCode ) - currentModifiers |= ShiftMask; - else - if ( key == lCtrlCode || - key == rCtrlCode ) - currentModifiers |= ControlMask; - else - if ( key == lAltCode || - key == rAltCode ) - currentModifiers |= Mod1Mask; - else - if ( key == lMetaCode || - key == rMetaCode ) - currentModifiers |= Mod4Mask; - else - { - // Here we employ a kind of hack translating KP_Insert key - // to just Insert. This allows reacting to both Insert keys. - if ( key == kpInsertCode ) - key = insertCode; - - emit keyRecorded( key, currentModifiers ); - } - } - else - if ( event->u.u.type == KeyRelease ) - { - KeyCode key = event->u.u.detail; - - if ( key == lShiftCode || - key == rShiftCode ) - currentModifiers &= ~ShiftMask; - else - if ( key == lCtrlCode || - key == rCtrlCode ) - currentModifiers &= ~ControlMask; - else - if ( key == lAltCode || - key == rAltCode ) - currentModifiers &= ~Mod1Mask; - else - if ( key == lMetaCode || - key == rMetaCode ) - currentModifiers &= ~Mod4Mask; - } - } - - XRecordFreeData( data ); -} - -bool HotkeyWrapper::setGlobalKey( int key, int key2, - Qt::KeyboardModifiers modifier, int handle ) -{ - if ( !key ) - return false; // We don't monitor empty combinations - - int vk = nativeKey( key ); - int vk2 = key2 ? nativeKey( key2 ) : 0; - - quint32 mod = 0; - if (modifier & Qt::ShiftModifier) - mod |= ShiftMask; - if (modifier & Qt::ControlModifier) - mod |= ControlMask; - if (modifier & Qt::AltModifier) - mod |= Mod1Mask; - if (modifier & Qt::MetaModifier) - mod |= Mod4Mask; - - hotkeys.append( HotkeyStruct( vk, vk2, mod, handle, 0 ) ); - - if ( !isCopyToClipboardKey( vk, mod ) ) - grabKey( vk, mod ); // Make sure it doesn't get caught by other apps - - return true; -} - -bool HotkeyWrapper::isCopyToClipboardKey( quint32 keyCode, quint32 modifiers ) const -{ - return modifiers == ControlMask && - ( keyCode == cCode || keyCode == insertCode || keyCode == kpInsertCode ); -} - -bool HotkeyWrapper::isKeyGrabbed( quint32 keyCode, quint32 modifiers ) const -{ - GrabbedKeys::const_iterator i = grabbedKeys.find( std::make_pair( keyCode, modifiers ) ); - - return i != grabbedKeys.end(); -} - -namespace { - -typedef int (*X11ErrorHandler) ( Display * display, XErrorEvent * event ); - -class X11GrabUngrabErrorHandler { -public: - static bool error; - - static int grab_ungrab_error_handler( Display *, XErrorEvent * event ) - { - qDebug() << "grab_ungrab_error_handler is invoked"; - switch ( event->error_code ) - { - case BadAccess: - case BadValue: - case BadWindow: - if ( event->request_code == 33 /* X_GrabKey */ || - event->request_code == 34 /* X_UngrabKey */) - { - error = true; - } - } - return 0; - } - - X11GrabUngrabErrorHandler() - { - error = false; - previousErrorHandler_ = XSetErrorHandler( grab_ungrab_error_handler ); - } - - ~X11GrabUngrabErrorHandler() - { - XFlush( QX11Info::display() ); - (void) XSetErrorHandler( previousErrorHandler_ ); - } - - bool isError() const - { - XFlush( QX11Info::display() ); - return error; - } - -private: - X11ErrorHandler previousErrorHandler_; -}; - -bool X11GrabUngrabErrorHandler::error = false; - -} // anonymous namespace - - -HotkeyWrapper::GrabbedKeys::iterator HotkeyWrapper::grabKey( quint32 keyCode, - quint32 modifiers ) -{ - std::pair< GrabbedKeys::iterator, bool > result = - grabbedKeys.insert( std::make_pair( keyCode, modifiers ) ); - - - if ( result.second ) - { - X11GrabUngrabErrorHandler errorHandler; - XGrabKey( QX11Info::display(), keyCode, modifiers, QX11Info::appRootWindow(), - True, GrabModeAsync, GrabModeAsync ); - - if ( errorHandler.isError() ) - { - qDebug() << "Warning: Possible hotkeys conflict. Check your hotkeys options."; - ungrabKey( result.first ); - } - } - - return result.first; -} - -void HotkeyWrapper::ungrabKey( GrabbedKeys::iterator i ) -{ - X11GrabUngrabErrorHandler errorHandler; - XUngrabKey( QX11Info::display(), i->first, i->second, QX11Info::appRootWindow() ); - - grabbedKeys.erase( i ); - - if ( errorHandler.isError() ) - { - qDebug() << "Warning: Cannot ungrab the hotkey"; - } -} - -quint32 HotkeyWrapper::nativeKey(int key) -{ - QString keySymName; - - switch( key ) - { - case Qt::Key_Insert: - keySymName = "Insert"; - break; - default: - keySymName = QKeySequence( key ).toString(); - break; - } - - Display * display = QX11Info::display(); - return XKeysymToKeycode( display, XStringToKeysym( keySymName.toLatin1().data() ) ); -} - -void HotkeyWrapper::unregister() -{ - Display * display = QX11Info::display(); - - XRecordDisableContext( display, recordContext ); - XSync( display, False ); - - wait(); - - XRecordFreeContext( display, recordContext ); - XFree( recordRange ); - XCloseDisplay( dataDisplay ); - - while( grabbedKeys.size() ) - ungrabKey( grabbedKeys.begin() ); - - (static_cast(qApp))->unregisterWrapper(this); -} - -#endif -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeywrapper.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeywrapper.hh deleted file mode 100644 index a27873ee9b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hotkeywrapper.hh +++ /dev/null @@ -1,236 +0,0 @@ -#ifndef HOTKEYWRAPPER_H -#define HOTKEYWRAPPER_H - -#include - -#ifdef HAVE_X11 - -#include - -#include -#include -#include -#include - -#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) -#undef Bool -#endif - -#endif - -#ifdef Q_OS_MAC -#define __SECURITYHI__ -#include -#endif - -#include "ex.hh" -#include "qtsingleapplication.h" -#include "qt4x5.hh" - -////////////////////////////////////////////////////////////////////////// - -struct HotkeyStruct -{ - HotkeyStruct() {} - HotkeyStruct( quint32 key, quint32 key2, quint32 modifier, int handle, int id ); - - quint32 key, key2; - quint32 modifier; - int handle; - int id; -#ifdef Q_OS_MAC - EventHotKeyRef hkRef, hkRef2; -#endif -}; - -////////////////////////////////////////////////////////////////////////// - -#if !defined(Q_WS_QWS) -class HotkeyWrapper : public QThread // Thread is actually only used on X11 -{ - Q_OBJECT - - friend class QHotkeyApplication; - -public: - - DEF_EX( exInit, "Hotkey wrapper failed to init", std::exception ) - - HotkeyWrapper(QObject *parent); - virtual ~HotkeyWrapper(); - - /// The handle is passed back in hotkeyActivated() to inform which hotkey - /// was activated. - bool setGlobalKey( int key, int key2, Qt::KeyboardModifiers modifier, - int handle ); - - /// Unregisters everything - void unregister(); - -signals: - - void hotkeyActivated( int ); - -protected slots: - - void waitKey2(); - -#ifndef Q_OS_MAC -private slots: - - bool checkState( quint32 vk, quint32 mod ); -#endif - -private: - - void init(); - quint32 nativeKey(int key); - - QList hotkeys; - - bool state2; - HotkeyStruct state2waiter; - -#ifdef Q_OS_WIN32 - virtual bool winEvent ( MSG * message, long * result ); - HWND hwnd; - -#elif defined(Q_OS_MAC) - -public: - void activated( int hkId ); -private: - void sendCmdC(); - - static EventHandlerUPP hotKeyFunction; - quint32 keyC; - EventHandlerRef handlerRef; - -#else - - static void recordEventCallback( XPointer, XRecordInterceptData * ); - - /// Called by recordEventCallback() - void handleRecordEvent( XRecordInterceptData * ); - - void run(); // QThread - - // We do one-time init of those, translating keysyms to keycodes - KeyCode lShiftCode, rShiftCode, lCtrlCode, rCtrlCode, lAltCode, rAltCode, - cCode, insertCode, kpInsertCode, lMetaCode, rMetaCode; - - quint32 currentModifiers; - - Display * dataDisplay; - XRecordRange * recordRange; - XRecordContext recordContext; - XRecordClientSpec recordClientSpec; - - /// Holds all the keys currently grabbed. - /// The first value is keycode, the second is modifiers - typedef std::set< std::pair< quint32, quint32 > > GrabbedKeys; - GrabbedKeys grabbedKeys; - - GrabbedKeys::iterator keyToUngrab; // Used for second stage grabs - - /// Returns true if the given key is usually used to copy from clipboard, - /// false otherwise. - bool isCopyToClipboardKey( quint32 keyCode, quint32 modifiers ) const; - /// Returns true if the given key is grabbed, false otherwise - bool isKeyGrabbed( quint32 keyCode, quint32 modifiers ) const; - /// Grabs the given key, recording the fact in grabbedKeys. If the key's - /// already grabbed, does nothing. - /// Returns the key's iterator in grabbedKeys. - GrabbedKeys::iterator grabKey( quint32 keyCode, quint32 modifiers ); - /// Ungrabs the given key. erasing it from grabbedKeys. The key's provided - /// as an interator inside the grabbedKeys set. - void ungrabKey( GrabbedKeys::iterator ); - -signals: - - /// Emitted from the thread - void keyRecorded( quint32 vk, quint32 mod ); - -#endif -}; -#else - -class HotkeyWrapper : public QObject -{ - Q_OBJECT - - friend class QHotkeyApplication; - -public: - - DEF_EX( exInit, "Hotkey wrapper failed to init", std::exception ) - - HotkeyWrapper(QObject *parent): QObject( parent ) - {} - - bool setGlobalKey( int key, int key2, Qt::KeyboardModifiers modifier, - int handle ) - { return true; } - - void unregister() - {} - -signals: - - void hotkeyActivated( int ); -}; -#endif - -////////////////////////////////////////////////////////////////////////// - -class DataCommitter -{ -public: - - virtual void commitData( QSessionManager & )=0; - virtual ~DataCommitter() - {} -}; - -class QHotkeyApplication : public QtSingleApplication -#if defined( Q_OS_WIN ) && IS_QT_5 - , public QAbstractNativeEventFilter -#endif -{ - friend class HotkeyWrapper; - - QList< DataCommitter * > dataCommitters; - -public: - QHotkeyApplication( int & argc, char ** argv ); - QHotkeyApplication( QString const & id, int & argc, char ** argv ); - - void addDataCommiter( DataCommitter & ); - void removeDataCommiter( DataCommitter & ); - - /// This calls all data committers. - virtual void commitData( QSessionManager & ); - -protected: - void registerWrapper(HotkeyWrapper *wrapper); - void unregisterWrapper(HotkeyWrapper *wrapper); - -#ifdef Q_OS_WIN32 -#if IS_QT_5 - virtual bool nativeEventFilter( const QByteArray & eventType, void * message, long * result ); -#else // IS_QT_5 - virtual bool winEventFilter ( MSG * message, long * result ); -#endif // IS_QT_5 - - QWidget * mainWindow; -public: - void setMainWindow( QWidget * widget ) - { mainWindow = widget; } -protected: -#endif // Q_OS_WIN32 - QList hotkeyWrappers; -}; - -////////////////////////////////////////////////////////////////////////// - -#endif // HOTKEYWRAPPER_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/htmlescape.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/htmlescape.cc deleted file mode 100644 index 5b69c75ce1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/htmlescape.cc +++ /dev/null @@ -1,162 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include -#include "htmlescape.hh" - -namespace Html { - -string escape( string const & str ) -{ - string result( str ); - - for( size_t x = result.size(); x--; ) - switch ( result[ x ] ) - { - case '&': - result.erase( x, 1 ); - result.insert( x, "&" ); - break; - - case '<': - result.erase( x, 1 ); - result.insert( x, "<" ); - break; - - case '>': - result.erase( x, 1 ); - result.insert( x, ">" ); - break; - - case '"': - result.erase( x, 1 ); - result.insert( x, """ ); - break; - - default: - break; - } - - return result; -} - -static void storeLineInDiv( string & result, string const & line, bool baseRightToLeft ) -{ - result += ""; -} - -string preformat(string const & str , bool baseRightToLeft ) -{ - string escaped = escape( str ), result, line; - - line.reserve( escaped.size() ); - result.reserve( escaped.size() ); - - bool leading = true; - - for( char const * nextChar = escaped.c_str(); *nextChar; ++nextChar ) - { - if ( leading ) - { - if ( *nextChar == ' ' ) - { - line += " "; - continue; - } - else - if ( *nextChar == '\t' ) - { - line += "    "; - continue; - } - } - - if ( *nextChar == '\n' ) - { - storeLineInDiv( result, line, baseRightToLeft ); - line.clear(); - leading = true; - continue; - } - - if ( *nextChar == '\r' ) - continue; // Just skip all \r - - line.push_back( *nextChar ); - - leading = false; - } - - if( !line.empty() ) - storeLineInDiv( result, line, baseRightToLeft ); - - return result; -} - -string escapeForJavaScript( string const & str ) -{ - string result( str ); - - for( size_t x = result.size(); x--; ) - switch ( result[ x ] ) - { - case '\\': - case '"': - case '\'': - result.insert( x, 1, '\\' ); - break; - - case '\n': - result.erase( x, 1 ); - result.insert( x, "\\n" ); - break; - - case '\r': - result.erase( x, 1 ); - result.insert( x, "\\r" ); - break; - - case '\t': - result.erase( x, 1 ); - result.insert( x, "\\t" ); - break; - - default: - break; - } - - return result; -} - -QString unescape( QString const & str, bool saveFormat ) -{ - // Does it contain HTML? If it does, we need to strip it - if ( str.contains( '<' ) || str.contains( '&' ) ) - { - QString tmp = str; - if( !saveFormat ) - { - tmp.replace( QRegExp( "<(?:\\s*(?:div|p(?![alr])|br|li(?![ns])|td|blockquote|/ol))[^>]{0,}>", - Qt::CaseInsensitive, QRegExp::RegExp2 ), " " ); - tmp.remove( QRegExp( "<[^>]*>", Qt::CaseSensitive, QRegExp::RegExp2 ) ); - } - return QTextDocumentFragment::fromHtml( tmp.trimmed() ).toPlainText(); - } - return str; -} - -string unescapeUtf8( const string &str, bool saveFormat ) -{ - return string( unescape( QString::fromUtf8( str.c_str(), str.size() ) ).toUtf8().data(), saveFormat ); -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/htmlescape.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/htmlescape.hh deleted file mode 100644 index f86e413644..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/htmlescape.hh +++ /dev/null @@ -1,31 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __HTMLESCAPE_HH_INCLUDED__ -#define __HTMLESCAPE_HH_INCLUDED__ - -#include - -namespace Html { - -using std::string; - -// Replaces &, <, > and " by their html entity equivalents -// The " is not really required to be escaped in html, but is replaced anyway -// to make the result suitable for inserting as attributes' values. -string escape( string const & ); - -// Converts the given preformatted text to html. Each end of line is replaced by -//
, each leading space is converted to  . -string preformat( string const &, bool baseRightToLeft = false ); - -// Escapes the given string to be included in JavaScript. -string escapeForJavaScript( string const & ); - -// Replace html entities -QString unescape( QString const & str, bool saveFormat = false ); -string unescapeUtf8( string const & str, bool saveFormat = false ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hunspell.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/hunspell.cc deleted file mode 100644 index 7d0fe6cd11..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hunspell.cc +++ /dev/null @@ -1,885 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "hunspell.hh" -#include "utf8.hh" -#include "htmlescape.hh" -#include "iconv.hh" -#include "folding.hh" -#include "wstring_qt.hh" -#include "language.hh" -#include "langcoder.hh" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include "gddebug.hh" -#include "fsencoding.hh" -#include "qt4x5.hh" - -namespace HunspellMorpho { - -using namespace Dictionary; - -using gd::wchar; - -namespace { - -class HunspellDictionary: public Dictionary::Class -{ - string name; - Hunspell hunspell; - -#ifdef Q_OS_WIN32 - static string Utf8ToLocal8Bit( string const & name ) - { - return string( QString::fromUtf8( name.c_str() ).toLocal8Bit().data() ); - } -#endif - -public: - - /// files[ 0 ] should be .aff file, files[ 1 ] should be .dic file. - HunspellDictionary( string const & id, string const & name_, - vector< string > const & files ): - Dictionary::Class( id, files ), - name( name_ ), -#ifdef Q_OS_WIN32 - hunspell( Utf8ToLocal8Bit( files[ 0 ] ).c_str(), Utf8ToLocal8Bit( files[ 1 ] ).c_str() ) -#else - hunspell( files[ 0 ].c_str(), files[ 1 ].c_str() ) -#endif - { - } - - virtual string getName() throw() - { return name; } - - virtual map< Property, string > getProperties() throw() - { return map< Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return 0; } - - virtual unsigned long getWordCount() throw() - { return 0; } - - virtual sptr< WordSearchRequest > prefixMatch( wstring const &, - unsigned long maxResults ) - throw( std::exception ); - - virtual sptr< WordSearchRequest > findHeadwordsForSynonym( wstring const & ) - throw( std::exception ); - - virtual sptr< DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual bool isLocalDictionary() - { return true; } - - virtual vector< wstring > getAlternateWritings( const wstring & word ) throw(); - -protected: - - virtual void loadIcon() throw(); - -private: - - // We used to have a separate mutex for each Hunspell instance, assuming - // that its code was reentrant (though probably not thread-safe). However, - // crashes were discovered later when using several Hunspell dictionaries - // simultaneously, and we've switched to have a single mutex for all hunspell - // calls - evidently it's not really reentrant. - static Mutex & getHunspellMutex() - { - static Mutex mutex; - return mutex; - } -// Mutex hunspellMutex; -}; - -/// Encodes the given string to be passed to the hunspell object. May throw -/// Iconv::Ex -string encodeToHunspell( Hunspell &, wstring const & ); - -/// Decodes the given string returned by the hunspell object. May throw -/// Iconv::Ex -wstring decodeFromHunspell( Hunspell &, char const * ); - -/// Generates suggestions via hunspell -QVector< wstring > suggest( wstring & word, Mutex & hunspellMutex, - Hunspell & hunspell ); - -/// Generates suggestions for compound expression -void getSuggestionsForExpression( wstring const & expression, - vector< wstring > & suggestions, - Mutex & hunspellMutex, - Hunspell & hunspell ); - -/// Returns true if the string contains whitespace, false otherwise -bool containsWhitespace( wstring const & str ) -{ - wchar const * next = str.c_str(); - - for( ; *next; ++next ) - if ( Folding::isWhitespace( *next ) ) - return true; - - return false; -} - -void HunspellDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_hunspell.png"); - } - - dictionaryIconLoaded = true; -} - -vector< wstring > HunspellDictionary::getAlternateWritings( wstring const & word ) throw() -{ - vector< wstring > results; - - if( containsWhitespace( word ) ) - { - getSuggestionsForExpression( word, results, getHunspellMutex(), hunspell ); - } - - return results; -} - -/// HunspellDictionary::getArticle() - -class HunspellArticleRequest; - -class HunspellArticleRequestRunnable: public QRunnable -{ - HunspellArticleRequest & r; - QSemaphore & hasExited; - -public: - - HunspellArticleRequestRunnable( HunspellArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~HunspellArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class HunspellArticleRequest: public Dictionary::DataRequest -{ - friend class HunspellArticleRequestRunnable; - - Mutex & hunspellMutex; - Hunspell & hunspell; - wstring word; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - HunspellArticleRequest( wstring const & word_, - Mutex & hunspellMutex_, - Hunspell & hunspell_ ): - hunspellMutex( hunspellMutex_ ), - hunspell( hunspell_ ), - word( word_ ) - { - QThreadPool::globalInstance()->start( - new HunspellArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by HunspellArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~HunspellArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void HunspellArticleRequestRunnable::run() -{ - r.run(); -} - -void HunspellArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - // We'd need to free this if it gets allocated and an exception shows up - char ** suggestions = 0; - int suggestionsCount = 0; - - try - { - wstring trimmedWord = Folding::trimWhitespaceOrPunct( word ); - - if ( containsWhitespace( trimmedWord ) ) - { - // For now we don't analyze whitespace-containing phrases - finish(); - return; - } - - Mutex::Lock _( hunspellMutex ); - - string encodedWord = encodeToHunspell( hunspell, trimmedWord ); - - if ( hunspell.spell( encodedWord.c_str() ) ) - { - // Good word -- no spelling suggestions then. - finish(); - return; - } - - suggestionsCount = hunspell.suggest( &suggestions, encodedWord.c_str() ); - - if ( suggestionsCount ) - { - // There were some suggestions made for us. Make an appropriate output. - - string result = "
"; - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - } - } - catch( Iconv::Ex & e ) - { - gdWarning( "Hunspell: charset convertion error, no processing's done: %s\n", e.what() ); - } - catch( std::exception & e ) - { - gdWarning( "Hunspell: error: %s\n", e.what() ); - } - - if ( suggestions ) - { - Mutex::Lock _( hunspellMutex ); - - hunspell.free_list( &suggestions, suggestionsCount ); - } - - finish(); -} - -sptr< DataRequest > HunspellDictionary::getArticle( wstring const & word, - vector< wstring > const &, - wstring const & ) - throw( std::exception ) -{ - return new HunspellArticleRequest( word, getHunspellMutex(), hunspell ); -} - -/// HunspellDictionary::findHeadwordsForSynonym() - -class HunspellHeadwordsRequest; - -class HunspellHeadwordsRequestRunnable: public QRunnable -{ - HunspellHeadwordsRequest & r; - QSemaphore & hasExited; - -public: - - HunspellHeadwordsRequestRunnable( HunspellHeadwordsRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~HunspellHeadwordsRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class HunspellHeadwordsRequest: public Dictionary::WordSearchRequest -{ - friend class HunspellHeadwordsRequestRunnable; - - Mutex & hunspellMutex; - Hunspell & hunspell; - wstring word; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - HunspellHeadwordsRequest( wstring const & word_, - Mutex & hunspellMutex_, - Hunspell & hunspell_ ): - hunspellMutex( hunspellMutex_ ), - hunspell( hunspell_ ), - word( word_ ) - { - QThreadPool::globalInstance()->start( - new HunspellHeadwordsRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by HunspellHeadwordsRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~HunspellHeadwordsRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void HunspellHeadwordsRequestRunnable::run() -{ - r.run(); -} - -void HunspellHeadwordsRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - wstring trimmedWord = Folding::trimWhitespaceOrPunct( word ); - - if ( trimmedWord.size() > 80 ) - { - // We won't do anything for overly long sentences since that would probably - // only waste time. - finish(); - return; - } - - if ( containsWhitespace( trimmedWord ) ) - { - vector< wstring > results; - - getSuggestionsForExpression( trimmedWord, results, hunspellMutex, hunspell ); - - Mutex::Lock _( dataMutex ); - for( unsigned i = 0; i < results.size(); i++ ) - matches.push_back( results[ i ] ); - - } - else - { - QVector< wstring > suggestions = suggest( trimmedWord, hunspellMutex, hunspell ); - - if ( !suggestions.empty() ) - { - Mutex::Lock _( dataMutex ); - - for( int x = 0; x < suggestions.size(); ++x ) - matches.push_back( suggestions[ x ] ); - } - } - - finish(); -} - -QVector< wstring > suggest( wstring & word, Mutex & hunspellMutex, Hunspell & hunspell ) -{ - QVector< wstring > result; - - // We'd need to free this if it gets allocated and an exception shows up - char ** suggestions = 0; - int suggestionsCount = 0; - - try - { - Mutex::Lock _( hunspellMutex ); - - string encodedWord = encodeToHunspell( hunspell, word ); - - suggestionsCount = hunspell.analyze( &suggestions, encodedWord.c_str() ); - - if ( suggestionsCount ) - { - // There were some suggestions made for us. Make an appropriate output. - - wstring lowercasedWord = Folding::applySimpleCaseOnly( word ); - - static QRegExp cutStem( "^\\s*st:(((\\s+(?!\\w{2}:))|\\S+)+)" ); - - for( int x = 0; x < suggestionsCount; ++x ) - { - QString suggestion = gd::toQString( decodeFromHunspell( hunspell, suggestions[ x ] ) ); - - GD_DPRINTF( ">>>Sugg: %s\n", suggestion.toLocal8Bit().data() ); - - if ( cutStem.indexIn( suggestion ) != -1 ) - { - wstring alt = gd::toWString( cutStem.cap( 1 ) ); - - if ( Folding::applySimpleCaseOnly( alt ) != lowercasedWord ) // No point in providing same word - { -#ifdef QT_DEBUG - qDebug() << ">>>>>Alt:" << gd::toQString( alt ); -#endif - result.append( alt ); - } - } - } - } - } - catch( Iconv::Ex & e ) - { - gdWarning( "Hunspell: charset convertion error, no processing's done: %s\n", e.what() ); - } - - if ( suggestions ) - { - Mutex::Lock _( hunspellMutex ); - - hunspell.free_list( &suggestions, suggestionsCount ); - } - - return result; -} - - -sptr< WordSearchRequest > HunspellDictionary::findHeadwordsForSynonym( wstring const & word ) - throw( std::exception ) -{ - return new HunspellHeadwordsRequest( word, getHunspellMutex(), hunspell ); -} - - -/// HunspellDictionary::prefixMatch() - -class HunspellPrefixMatchRequest; - -class HunspellPrefixMatchRequestRunnable: public QRunnable -{ - HunspellPrefixMatchRequest & r; - QSemaphore & hasExited; - -public: - - HunspellPrefixMatchRequestRunnable( HunspellPrefixMatchRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~HunspellPrefixMatchRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class HunspellPrefixMatchRequest: public Dictionary::WordSearchRequest -{ - friend class HunspellPrefixMatchRequestRunnable; - - Mutex & hunspellMutex; - Hunspell & hunspell; - wstring word; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - HunspellPrefixMatchRequest( wstring const & word_, - Mutex & hunspellMutex_, - Hunspell & hunspell_ ): - hunspellMutex( hunspellMutex_ ), - hunspell( hunspell_ ), - word( word_ ) - { - QThreadPool::globalInstance()->start( - new HunspellPrefixMatchRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by HunspellPrefixMatchRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~HunspellPrefixMatchRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void HunspellPrefixMatchRequestRunnable::run() -{ - r.run(); -} - -void HunspellPrefixMatchRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - try - { - wstring trimmedWord = Folding::trimWhitespaceOrPunct( word ); - - if ( trimmedWord.empty() || containsWhitespace( trimmedWord ) ) - { - // For now we don't analyze whitespace-containing phrases - finish(); - return; - } - - Mutex::Lock _( hunspellMutex ); - - string encodedWord = encodeToHunspell( hunspell, trimmedWord ); - - if ( hunspell.spell( encodedWord.c_str() ) ) - { - // Known word -- add it to the result - - Mutex::Lock _( dataMutex ); - - matches.push_back( WordMatch( trimmedWord, 1 ) ); - } - } - catch( Iconv::Ex & e ) - { - gdWarning( "Hunspell: charset convertion error, no processing's done: %s\n", e.what() ); - } - - finish(); -} - -sptr< WordSearchRequest > HunspellDictionary::prefixMatch( wstring const & word, - unsigned long /*maxResults*/ ) - throw( std::exception ) -{ - return new HunspellPrefixMatchRequest( word, getHunspellMutex(), hunspell ); -} - -void getSuggestionsForExpression( wstring const & expression, - vector & suggestions, - Mutex & hunspellMutex, - Hunspell & hunspell ) -{ - // Analyze each word separately and use the first two suggestions, if any. - // This is useful for compound expressions where some words is - // in different form, e.g. "dozing off" -> "doze off". - - wstring trimmedWord = Folding::trimWhitespaceOrPunct( expression ); - wstring word, punct; - QVector< wstring > words; - - suggestions.clear(); - - // Parse string to separate words - - for( wchar const * c = trimmedWord.c_str(); ; ++c ) - { - if ( !*c || Folding::isPunct( *c ) || Folding::isWhitespace( * c ) ) - { - if ( word.size() ) - { - words.push_back( word ); - word.clear(); - } - if ( *c ) - punct.push_back( *c ); - } - else - { - if( punct.size() ) - { - words.push_back( punct ); - punct.clear(); - } - if( *c ) - word.push_back( *c ); - } - if( !*c ) - break; - } - - if( words.size() > 21 ) - { - // Too many words - no suggestions - return; - } - - // Combine result strings from suggestions - - QVector< wstring > results; - - for( int i = 0; i < words.size(); i++ ) - { - word = words.at( i ); - if( Folding::isPunct( word[ 0 ] ) || Folding::isWhitespace( word[ 0 ] ) ) - { - for( int j = 0; j < results.size(); j++ ) - results[ j ].append( word ); - } - else - { - QVector< wstring > sugg = suggest( word, hunspellMutex, hunspell ); - int suggNum = sugg.size() + 1; - if( suggNum > 3 ) - suggNum = 3; - int resNum = results.size(); - wstring resultStr; - - if( resNum == 0 ) - { - for( int k = 0; k < suggNum; k++ ) - results.push_back( k == 0 ? word : sugg.at( k - 1 ) ); - } - else - { - for( int j = 0; j < resNum; j++ ) - { - resultStr = results.at( j ); - for( int k = 0; k < suggNum; k++ ) - { - if( k == 0) - results[ j ].append( word ); - else - results.push_back( resultStr + sugg.at( k - 1 ) ); - } - } - } - } - } - - for( int i = 0; i < results.size(); i++ ) - if( results.at( i ) != trimmedWord ) - suggestions.push_back( results.at( i ) ); -} - -string encodeToHunspell( Hunspell & hunspell, wstring const & str ) -{ - Iconv conv( hunspell.get_dic_encoding(), Iconv::GdWchar ); - - void const * in = str.data(); - size_t inLeft = str.size() * sizeof( wchar ); - - vector< char > result( str.size() * 4 + 1 ); // +1 isn't actually needed, - // but then iconv complains on empty - // words - - void * out = &result.front(); - size_t outLeft = result.size(); - - if ( conv.convert( in, inLeft, out, outLeft ) != Iconv::Success ) - throw Iconv::Ex(); - - return string( &result.front(), result.size() - outLeft ); -} - -wstring decodeFromHunspell( Hunspell & hunspell, char const * str ) -{ - Iconv conv( Iconv::GdWchar, hunspell.get_dic_encoding() ); - - void const * in = str; - size_t inLeft = strlen( str ); - - vector< wchar > result( inLeft + 1 ); // +1 isn't needed, but see above - - void * out = &result.front(); - size_t outLeft = result.size() * sizeof( wchar ); - - if ( conv.convert( in, inLeft, out, outLeft ) != Iconv::Success ) - throw Iconv::Ex(); - - return wstring( &result.front(), result.size() - outLeft/sizeof( wchar ) ); -} - -} - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::Hunspell const & cfg ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - vector< DataFiles > dataFiles = findDataFiles( cfg.dictionariesPath ); - - - for( int x = 0; x < cfg.enabledDictionaries.size(); ++x ) - { - for( unsigned d = dataFiles.size(); d--; ) - { - if ( dataFiles[ d ].dictId == cfg.enabledDictionaries[ x ] ) - { - // Found it - - vector< string > dictFiles; - - dictFiles.push_back( - FsEncoding::encode( QDir::toNativeSeparators( dataFiles[ d ].affFileName ) ) ); - dictFiles.push_back( - FsEncoding::encode( QDir::toNativeSeparators( dataFiles[ d ].dicFileName ) ) ); - - result.push_back( - new HunspellDictionary( Dictionary::makeDictionaryId( dictFiles ), - dataFiles[ d ].dictName.toUtf8().data(), - dictFiles ) ); - break; - } - } - } - - return result; -} - -vector< DataFiles > findDataFiles( QString const & path ) -{ - // Empty path means unconfigured directory - if ( path.isEmpty() ) - return vector< DataFiles >(); - - QDir dir( path ); - - // Find all affix files - - QFileInfoList affixFiles = dir.entryInfoList( ( QStringList() << "*.aff" << "*.AFF" ), QDir::Files ); - - vector< DataFiles > result; - std::set< QString > presentNames; - - for( QFileInfoList::const_iterator i = affixFiles.constBegin(); - i != affixFiles.constEnd(); ++i ) - { - QString affFileName = i->absoluteFilePath(); - - // See if there's a corresponding .dic file - QString dicFileNameBase = affFileName.mid( 0, affFileName.size() - 3 ); - - QString dicFileName = dicFileNameBase + "dic"; - - if ( !QFile( dicFileName ).exists() ) - { - dicFileName = dicFileNameBase + "DIC"; - if ( !QFile( dicFileName ).exists() ) - continue; // No dic file - } - - QString dictId = i->fileName(); - dictId.chop( 4 ); - - QString dictBaseId = dictId.size() < 3 ? dictId : - ( ( dictId[ 2 ] == '-' || dictId[ 2 ] == '_' ) ? dictId.mid( 0, 2 ) : QString() ); - - dictBaseId = dictBaseId.toLower(); - - // Try making up good readable name from dictBaseId - - QString localizedName; - - if ( dictBaseId.size() == 2 ) - localizedName = Language::localizedNameForId( LangCoder::code2toInt( dictBaseId.toLatin1().data() ) ); - - QString dictName = dictId; - - if ( localizedName.size() ) - { - dictName = localizedName; - - if ( dictId.size() > 2 && ( dictId[ 2 ] == '-' || dictId[ 2 ] == '_' ) && - dictId.mid( 3 ).toLower() != dictBaseId ) - dictName += " (" + dictId.mid( 3 ) + ")"; - } - - dictName = QCoreApplication::translate( "Hunspell", "%1 Morphology" ).arg( dictName ); - - if ( presentNames.insert( dictName ).second ) - { - // Only include dictionaries with unique names. This combats stuff - // like symlinks en-US->en_US and such - - result.push_back( DataFiles( affFileName, dicFileName, dictId, dictName ) ); - } - } - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hunspell.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/hunspell.hh deleted file mode 100644 index 3c9e15813d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/hunspell.hh +++ /dev/null @@ -1,41 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __HUNSPELL_HH_INCLUDED__ -#define __HUNSPELL_HH_INCLUDED__ - -#ifdef _MSC_VER -#define HUNSPELL_STATIC -#endif - -#include "dictionary.hh" -#include "config.hh" - -/// Support for Hunspell-based morphology. -namespace HunspellMorpho { - -using std::vector; -using std::string; - -struct DataFiles -{ - QString affFileName, dicFileName; // Absolute, with Qt separators - QString dictId; // Dictionary id, e.g. "en_US" - QString dictName; // Localized dictionary name to be displayed, e.g. "English(US) Morphology" - - DataFiles( QString const & affFileName_, QString const & dicFileName_, - QString const & dictId_, QString const & dictName_ ): - affFileName( affFileName_ ), dicFileName( dicFileName_ ), - dictId( dictId_ ), dictName( dictName_ ) - {} -}; - -/// Finds all the DataFiles it can at the given path (with Qt separators). -vector< DataFiles > findDataFiles( QString const & path ); - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::Hunspell const & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/1downarrow.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/1downarrow.png deleted file mode 100644 index accc1caa1b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/1downarrow.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/addtab.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/addtab.png deleted file mode 100644 index 4bb0feb92d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/addtab.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/arrow.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/arrow.png deleted file mode 100644 index 0acee70bcd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/arrow.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/blank.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/blank.png deleted file mode 100644 index bd396de62e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/blank.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/book.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/book.png deleted file mode 100644 index 3a6d4619a5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/book.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/bookcase.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/bookcase.png deleted file mode 100644 index 829d3642e2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/bookcase.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/clear.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/clear.png deleted file mode 100644 index 8c2c33973f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/clear.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/closetab.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/closetab.png deleted file mode 100644 index ef9e02086c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/closetab.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_article.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_article.png deleted file mode 100644 index 3959083c3a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_article.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_article_hovered.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_article_hovered.png deleted file mode 100644 index 9155ad3a30..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_article_hovered.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_opt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_opt.png deleted file mode 100644 index fe50c03334..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/collapse_opt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/configure.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/configure.png deleted file mode 100644 index fd38b243d9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/configure.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/downarrow.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/downarrow.png deleted file mode 100644 index d1b18170a6..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/downarrow.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/error.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/error.png deleted file mode 100644 index c8454bfb1d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/error.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_article.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_article.png deleted file mode 100644 index 0720a08c2f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_article.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_article_hovered.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_article_hovered.png deleted file mode 100644 index 7434f70fc3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_article_hovered.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_opt.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_opt.png deleted file mode 100644 index 0adbbefffd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/expand_opt.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/fileopen.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/fileopen.png deleted file mode 100644 index fc6f17e977..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/fileopen.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/filesave.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/filesave.png deleted file mode 100644 index 8feec99bee..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/filesave.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/forvo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/forvo.png deleted file mode 100644 index 0dd7a2fd00..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/forvo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/highlighter.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/highlighter.png deleted file mode 100644 index 3392167bf9..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/highlighter.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/home.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/home.png deleted file mode 100644 index b1c6ae1913..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/home.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/hotkeys.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/hotkeys.png deleted file mode 100644 index 18b172fc06..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/hotkeys.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon.svg b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon.svg deleted file mode 100644 index 5defab83b7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon.svg +++ /dev/null @@ -1,868 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_aard.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_aard.png deleted file mode 100644 index 1c6279eaf6..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_aard.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_bgl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_bgl.png deleted file mode 100644 index 0ce2325c5c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_bgl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_dictd.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_dictd.png deleted file mode 100644 index 2ef21dfdf1..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_dictd.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_dsl.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_dsl.png deleted file mode 100644 index 6e9999b6b0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_dsl.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_epwing.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_epwing.png deleted file mode 100644 index 7a9cb31e6b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_epwing.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_hunspell.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_hunspell.png deleted file mode 100644 index 70786947f8..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_hunspell.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_lingoes.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_lingoes.png deleted file mode 100644 index 820d314c7c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_lingoes.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_sdict.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_sdict.png deleted file mode 100644 index e4dd00fe74..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_sdict.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_slob.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_slob.png deleted file mode 100644 index 984205ea66..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_slob.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_stardict.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_stardict.png deleted file mode 100644 index b8e3b1ca91..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_stardict.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_wiki.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_wiki.png deleted file mode 100644 index 89536d672e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_wiki.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_xdxf.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_xdxf.png deleted file mode 100644 index d2c1ad0143..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_xdxf.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zim.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zim.png deleted file mode 100644 index 7277646d47..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zim.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoombase.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoombase.png deleted file mode 100644 index ed0c0c7982..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoombase.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoomin.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoomin.png deleted file mode 100644 index d46f5aff0d..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoomin.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoomout.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoomout.png deleted file mode 100644 index 46326566d1..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon32_zoomout.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon_dsl_native.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon_dsl_native.png deleted file mode 100644 index 888eb48795..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/icon_dsl_native.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/interface.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/interface.png deleted file mode 100644 index 7f33b0312a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/interface.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/internet.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/internet.png deleted file mode 100644 index 4ddadd6010..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/internet.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/macicon.icns b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/macicon.icns deleted file mode 100644 index 206276eef6..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/macicon.icns and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/macicon.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/macicon.png deleted file mode 100644 index fe7d4542a5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/macicon.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/mdict.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/mdict.png deleted file mode 100644 index 97a93677ad..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/mdict.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/menu_button.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/menu_button.png deleted file mode 100644 index 142b3777f7..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/menu_button.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/network.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/network.png deleted file mode 100644 index 50303c7e02..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/network.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/next.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/next.png deleted file mode 100644 index 8df4127a00..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/next.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound.png deleted file mode 100644 index deb213d5d0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound_color.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound_color.png deleted file mode 100644 index 367ff42e0a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound_color.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound_full.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound_full.png deleted file mode 100644 index 0c5dce4c45..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/playsound_full.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/prefix.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/prefix.png deleted file mode 100644 index c7b98329de..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/prefix.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/previous.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/previous.png deleted file mode 100644 index 0780bc23dd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/previous.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/print.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/print.png deleted file mode 100644 index ba7c02dc18..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/print.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon.ico b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon.ico deleted file mode 100644 index 25f4ce7ead..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon.ico and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon.png deleted file mode 100644 index 50c1804c2f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_old.ico b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_old.ico deleted file mode 100644 index e25aa4c7a8..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_old.ico and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_old.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_old.png deleted file mode 100644 index 774be2231c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_old.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_scan.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_scan.png deleted file mode 100644 index 0ec35b03fb..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programicon_scan.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programs.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programs.png deleted file mode 100644 index 580c86d1e0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/programs.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/pushpin.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/pushpin.png deleted file mode 100644 index accac87df1..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/pushpin.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/reload.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/reload.png deleted file mode 100644 index 885fa48ad3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/reload.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/system-search.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/system-search.png deleted file mode 100644 index 950d792af5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/system-search.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/video.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/video.png deleted file mode 100644 index 80e4389a73..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/video.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/warning.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/warning.png deleted file mode 100644 index cfe54b0c1f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/warning.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/windows-list.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/windows-list.png deleted file mode 100644 index f60678d682..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/windows-list.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/wizard.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/wizard.png deleted file mode 100644 index 7c0e107aea..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/icons/wizard.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/iconv.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/iconv.cc deleted file mode 100644 index 30f22a03f7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/iconv.cc +++ /dev/null @@ -1,152 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "iconv.hh" -#include -#include -#include - -#ifdef __WIN32 -char const * const Iconv::GdWchar = "UCS-4LE"; -#else -char const * const Iconv::GdWchar = "WCHAR_T"; -#endif - -char const * const Iconv::Utf16Le = "UTF-16LE"; -char const * const Iconv::Utf8 = "UTF-8"; - -using gd::wchar; - -Iconv::Iconv( char const * to, char const * from ) throw( exCantInit ): - state( iconv_open( to, from ) ) -{ - if ( state == (iconv_t) -1 ) - throw exCantInit( strerror( errno ) ); -} - -void Iconv::reinit( char const * to, char const * from ) throw( exCantInit ) -{ - iconv_close( state ); - - state = iconv_open( to, from ); - - if ( state == (iconv_t) -1 ) - throw exCantInit( strerror( errno ) ); -} - -Iconv::~Iconv() throw() -{ - iconv_close( state ); -} - -Iconv::Result Iconv::convert( void const * & inBuf, size_t & inBytesLeft, - void * & outBuf, size_t & outBytesLeft ) - throw( exIncorrectSeq, exOther ) -{ - size_t result = iconv( state, -// #ifdef __WIN32 -// (char const **)&inBuf, -// #else - (char **)&inBuf, -// #endif - &inBytesLeft, - (char **)&outBuf, &outBytesLeft ); - - if ( result == (size_t) -1 ) - { - switch( errno ) - { - case EILSEQ: - throw exIncorrectSeq(); - case EINVAL: - return NeedMoreIn; - case E2BIG: - return NeedMoreOut; - default: - throw exOther( strerror( errno ) ); - } - } - - return Success; -} - -gd::wstring Iconv::toWstring( char const * fromEncoding, void const * fromData, - size_t dataSize ) - throw( exCantInit, exIncorrectSeq, exPrematureEnd, exOther ) -{ - /// Special-case the dataSize == 0 to avoid any kind of iconv-specific - /// behaviour in that regard. - - if ( !dataSize ) - return gd::wstring(); - - Iconv ic( GdWchar, fromEncoding ); - - /// This size is usually enough, but may be enlarged during the conversion - std::vector< wchar > outBuf( dataSize ); - - void * outBufPtr = &outBuf.front(); - - size_t outBufLeft = outBuf.size() * sizeof( wchar ); - - for( ; ; ) - { - switch( ic.convert( fromData, dataSize, outBufPtr, outBufLeft ) ) - { - case Success: - return gd::wstring( &outBuf.front(), - outBuf.size() - outBufLeft / sizeof( wchar ) ); - case NeedMoreIn: - throw exPrematureEnd(); - case NeedMoreOut: - { - // Grow the buffer and retry - // The pointer may get invalidated so we save the diff and restore it - size_t offset = (wchar *)outBufPtr - &outBuf.front(); - outBuf.resize( outBuf.size() + 256 ); - outBufPtr = &outBuf.front() + offset; - outBufLeft += 256; - } - } - } -} - -std::string Iconv::toUtf8( char const * fromEncoding, void const * fromData, - size_t dataSize ) - throw( exCantInit, exIncorrectSeq, exPrematureEnd, exOther ) -{ - // Similar to toWstring - - if ( !dataSize ) - return std::string(); - - Iconv ic( Utf8, fromEncoding ); - - std::vector< char > outBuf( dataSize ); - - void * outBufPtr = &outBuf.front(); - - size_t outBufLeft = outBuf.size(); - - for( ; ; ) - { - switch( ic.convert( fromData, dataSize, outBufPtr, outBufLeft ) ) - { - case Success: - return std::string( &outBuf.front(), - outBuf.size() - outBufLeft ); - case NeedMoreIn: - throw exPrematureEnd(); - case NeedMoreOut: - { - // Grow the buffer and retry - // The pointer may get invalidated so we save the diff and restore it - size_t offset = (char *)outBufPtr - &outBuf.front(); - outBuf.resize( outBuf.size() + 256 ); - outBufPtr = &outBuf.front() + offset; - outBufLeft += 256; - } - } - } -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/iconv.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/iconv.hh deleted file mode 100644 index 5553ebdf8a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/iconv.hh +++ /dev/null @@ -1,67 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ICONV_HH_INCLUDED__ -#define __ICONV_HH_INCLUDED__ - -#include -#include "wstring.hh" -#include "ex.hh" - -/// A wrapper for the iconv() character set conversion functions -class Iconv -{ - iconv_t state; - -public: - - DEF_EX( Ex, "Iconv exception", std::exception ) - DEF_EX_STR( exCantInit, "Can't initialize iconv conversion:", Ex ) - DEF_EX( exIncorrectSeq, "Invalid character sequence encountered during character conversion", Ex ) - DEF_EX( exPrematureEnd, "Character sequence ended prematurely during character conversion", Ex ) - DEF_EX_STR( exOther, "An error has occured during character conversion:", Ex ) - - // Some predefined character sets' names - - static char const * const GdWchar; - static char const * const Utf16Le; - static char const * const Utf8; - - Iconv( char const * to, char const * from ) throw( exCantInit ); - - // Changes to another pair of encodings. All the internal state is reset. - void reinit( char const * to, char const * from ) throw( exCantInit ); - - ~Iconv() throw(); - - enum Result - { - Success, // All the data was successfully converted - NeedMoreIn, // Input has an incomplete multibyte character at its end - NeedMoreOut // The output buffer can't hold the result - }; - - Result convert( void const * & inBuf, size_t & inBytesLeft, - void * & outBuf, size_t & outBytesLeft ) throw( exIncorrectSeq, - exOther ); - - // Converts a given block of data from the given encoding to a wide string. - static gd::wstring toWstring( char const * fromEncoding, void const * fromData, - size_t dataSize ) - throw( exCantInit, exIncorrectSeq, exPrematureEnd, exOther ); - - // Converts a given block of data from the given encoding to an utf8-encoded - // string. - static std::string toUtf8( char const * fromEncoding, void const * fromData, - size_t dataSize ) - throw( exCantInit, exIncorrectSeq, exPrematureEnd, exOther ); - -private: - - // Copying/assigning not supported - Iconv( Iconv const & ); - Iconv & operator = ( Iconv const & ); -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/inc_case_folding.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/inc_case_folding.hh deleted file mode 100644 index dd01be35ec..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/inc_case_folding.hh +++ /dev/null @@ -1,2177 +0,0 @@ -// This file was generated automatically. Do not edit directly. - -enum { foldCaseMaxOut = 3 }; - -size_t foldCase( wchar in, wchar * out ) -{ - switch( in ) - { - case 0x41: *out = 0x61; return 1; - case 0x42: *out = 0x62; return 1; - case 0x43: *out = 0x63; return 1; - case 0x44: *out = 0x64; return 1; - case 0x45: *out = 0x65; return 1; - case 0x46: *out = 0x66; return 1; - case 0x47: *out = 0x67; return 1; - case 0x48: *out = 0x68; return 1; - case 0x49: *out = 0x69; return 1; - case 0x4a: *out = 0x6a; return 1; - case 0x4b: *out = 0x6b; return 1; - case 0x4c: *out = 0x6c; return 1; - case 0x4d: *out = 0x6d; return 1; - case 0x4e: *out = 0x6e; return 1; - case 0x4f: *out = 0x6f; return 1; - case 0x50: *out = 0x70; return 1; - case 0x51: *out = 0x71; return 1; - case 0x52: *out = 0x72; return 1; - case 0x53: *out = 0x73; return 1; - case 0x54: *out = 0x74; return 1; - case 0x55: *out = 0x75; return 1; - case 0x56: *out = 0x76; return 1; - case 0x57: *out = 0x77; return 1; - case 0x58: *out = 0x78; return 1; - case 0x59: *out = 0x79; return 1; - case 0x5a: *out = 0x7a; return 1; - case 0xb5: *out = 0x3bc; return 1; - case 0xc0: *out = 0xe0; return 1; - case 0xc1: *out = 0xe1; return 1; - case 0xc2: *out = 0xe2; return 1; - case 0xc3: *out = 0xe3; return 1; - case 0xc4: *out = 0xe4; return 1; - case 0xc5: *out = 0xe5; return 1; - case 0xc6: *out = 0xe6; return 1; - case 0xc7: *out = 0xe7; return 1; - case 0xc8: *out = 0xe8; return 1; - case 0xc9: *out = 0xe9; return 1; - case 0xca: *out = 0xea; return 1; - case 0xcb: *out = 0xeb; return 1; - case 0xcc: *out = 0xec; return 1; - case 0xcd: *out = 0xed; return 1; - case 0xce: *out = 0xee; return 1; - case 0xcf: *out = 0xef; return 1; - case 0xd0: *out = 0xf0; return 1; - case 0xd1: *out = 0xf1; return 1; - case 0xd2: *out = 0xf2; return 1; - case 0xd3: *out = 0xf3; return 1; - case 0xd4: *out = 0xf4; return 1; - case 0xd5: *out = 0xf5; return 1; - case 0xd6: *out = 0xf6; return 1; - case 0xd8: *out = 0xf8; return 1; - case 0xd9: *out = 0xf9; return 1; - case 0xda: *out = 0xfa; return 1; - case 0xdb: *out = 0xfb; return 1; - case 0xdc: *out = 0xfc; return 1; - case 0xdd: *out = 0xfd; return 1; - case 0xde: *out = 0xfe; return 1; - case 0xdf: out[ 0 ] = 0x73; out[ 1 ] = 0x73; return 2; - case 0x100: *out = 0x101; return 1; - case 0x102: *out = 0x103; return 1; - case 0x104: *out = 0x105; return 1; - case 0x106: *out = 0x107; return 1; - case 0x108: *out = 0x109; return 1; - case 0x10a: *out = 0x10b; return 1; - case 0x10c: *out = 0x10d; return 1; - case 0x10e: *out = 0x10f; return 1; - case 0x110: *out = 0x111; return 1; - case 0x112: *out = 0x113; return 1; - case 0x114: *out = 0x115; return 1; - case 0x116: *out = 0x117; return 1; - case 0x118: *out = 0x119; return 1; - case 0x11a: *out = 0x11b; return 1; - case 0x11c: *out = 0x11d; return 1; - case 0x11e: *out = 0x11f; return 1; - case 0x120: *out = 0x121; return 1; - case 0x122: *out = 0x123; return 1; - case 0x124: *out = 0x125; return 1; - case 0x126: *out = 0x127; return 1; - case 0x128: *out = 0x129; return 1; - case 0x12a: *out = 0x12b; return 1; - case 0x12c: *out = 0x12d; return 1; - case 0x12e: *out = 0x12f; return 1; - case 0x130: out[ 0 ] = 0x69; out[ 1 ] = 0x307; return 2; - case 0x132: *out = 0x133; return 1; - case 0x134: *out = 0x135; return 1; - case 0x136: *out = 0x137; return 1; - case 0x139: *out = 0x13a; return 1; - case 0x13b: *out = 0x13c; return 1; - case 0x13d: *out = 0x13e; return 1; - case 0x13f: *out = 0x140; return 1; - case 0x141: *out = 0x142; return 1; - case 0x143: *out = 0x144; return 1; - case 0x145: *out = 0x146; return 1; - case 0x147: *out = 0x148; return 1; - case 0x149: out[ 0 ] = 0x2bc; out[ 1 ] = 0x6e; return 2; - case 0x14a: *out = 0x14b; return 1; - case 0x14c: *out = 0x14d; return 1; - case 0x14e: *out = 0x14f; return 1; - case 0x150: *out = 0x151; return 1; - case 0x152: *out = 0x153; return 1; - case 0x154: *out = 0x155; return 1; - case 0x156: *out = 0x157; return 1; - case 0x158: *out = 0x159; return 1; - case 0x15a: *out = 0x15b; return 1; - case 0x15c: *out = 0x15d; return 1; - case 0x15e: *out = 0x15f; return 1; - case 0x160: *out = 0x161; return 1; - case 0x162: *out = 0x163; return 1; - case 0x164: *out = 0x165; return 1; - case 0x166: *out = 0x167; return 1; - case 0x168: *out = 0x169; return 1; - case 0x16a: *out = 0x16b; return 1; - case 0x16c: *out = 0x16d; return 1; - case 0x16e: *out = 0x16f; return 1; - case 0x170: *out = 0x171; return 1; - case 0x172: *out = 0x173; return 1; - case 0x174: *out = 0x175; return 1; - case 0x176: *out = 0x177; return 1; - case 0x178: *out = 0xff; return 1; - case 0x179: *out = 0x17a; return 1; - case 0x17b: *out = 0x17c; return 1; - case 0x17d: *out = 0x17e; return 1; - case 0x17f: *out = 0x73; return 1; - case 0x181: *out = 0x253; return 1; - case 0x182: *out = 0x183; return 1; - case 0x184: *out = 0x185; return 1; - case 0x186: *out = 0x254; return 1; - case 0x187: *out = 0x188; return 1; - case 0x189: *out = 0x256; return 1; - case 0x18a: *out = 0x257; return 1; - case 0x18b: *out = 0x18c; return 1; - case 0x18e: *out = 0x1dd; return 1; - case 0x18f: *out = 0x259; return 1; - case 0x190: *out = 0x25b; return 1; - case 0x191: *out = 0x192; return 1; - case 0x193: *out = 0x260; return 1; - case 0x194: *out = 0x263; return 1; - case 0x196: *out = 0x269; return 1; - case 0x197: *out = 0x268; return 1; - case 0x198: *out = 0x199; return 1; - case 0x19c: *out = 0x26f; return 1; - case 0x19d: *out = 0x272; return 1; - case 0x19f: *out = 0x275; return 1; - case 0x1a0: *out = 0x1a1; return 1; - case 0x1a2: *out = 0x1a3; return 1; - case 0x1a4: *out = 0x1a5; return 1; - case 0x1a6: *out = 0x280; return 1; - case 0x1a7: *out = 0x1a8; return 1; - case 0x1a9: *out = 0x283; return 1; - case 0x1ac: *out = 0x1ad; return 1; - case 0x1ae: *out = 0x288; return 1; - case 0x1af: *out = 0x1b0; return 1; - case 0x1b1: *out = 0x28a; return 1; - case 0x1b2: *out = 0x28b; return 1; - case 0x1b3: *out = 0x1b4; return 1; - case 0x1b5: *out = 0x1b6; return 1; - case 0x1b7: *out = 0x292; return 1; - case 0x1b8: *out = 0x1b9; return 1; - case 0x1bc: *out = 0x1bd; return 1; - case 0x1c4: *out = 0x1c6; return 1; - case 0x1c5: *out = 0x1c6; return 1; - case 0x1c7: *out = 0x1c9; return 1; - case 0x1c8: *out = 0x1c9; return 1; - case 0x1ca: *out = 0x1cc; return 1; - case 0x1cb: *out = 0x1cc; return 1; - case 0x1cd: *out = 0x1ce; return 1; - case 0x1cf: *out = 0x1d0; return 1; - case 0x1d1: *out = 0x1d2; return 1; - case 0x1d3: *out = 0x1d4; return 1; - case 0x1d5: *out = 0x1d6; return 1; - case 0x1d7: *out = 0x1d8; return 1; - case 0x1d9: *out = 0x1da; return 1; - case 0x1db: *out = 0x1dc; return 1; - case 0x1de: *out = 0x1df; return 1; - case 0x1e0: *out = 0x1e1; return 1; - case 0x1e2: *out = 0x1e3; return 1; - case 0x1e4: *out = 0x1e5; return 1; - case 0x1e6: *out = 0x1e7; return 1; - case 0x1e8: *out = 0x1e9; return 1; - case 0x1ea: *out = 0x1eb; return 1; - case 0x1ec: *out = 0x1ed; return 1; - case 0x1ee: *out = 0x1ef; return 1; - case 0x1f0: out[ 0 ] = 0x6a; out[ 1 ] = 0x30c; return 2; - case 0x1f1: *out = 0x1f3; return 1; - case 0x1f2: *out = 0x1f3; return 1; - case 0x1f4: *out = 0x1f5; return 1; - case 0x1f6: *out = 0x195; return 1; - case 0x1f7: *out = 0x1bf; return 1; - case 0x1f8: *out = 0x1f9; return 1; - case 0x1fa: *out = 0x1fb; return 1; - case 0x1fc: *out = 0x1fd; return 1; - case 0x1fe: *out = 0x1ff; return 1; - case 0x200: *out = 0x201; return 1; - case 0x202: *out = 0x203; return 1; - case 0x204: *out = 0x205; return 1; - case 0x206: *out = 0x207; return 1; - case 0x208: *out = 0x209; return 1; - case 0x20a: *out = 0x20b; return 1; - case 0x20c: *out = 0x20d; return 1; - case 0x20e: *out = 0x20f; return 1; - case 0x210: *out = 0x211; return 1; - case 0x212: *out = 0x213; return 1; - case 0x214: *out = 0x215; return 1; - case 0x216: *out = 0x217; return 1; - case 0x218: *out = 0x219; return 1; - case 0x21a: *out = 0x21b; return 1; - case 0x21c: *out = 0x21d; return 1; - case 0x21e: *out = 0x21f; return 1; - case 0x220: *out = 0x19e; return 1; - case 0x222: *out = 0x223; return 1; - case 0x224: *out = 0x225; return 1; - case 0x226: *out = 0x227; return 1; - case 0x228: *out = 0x229; return 1; - case 0x22a: *out = 0x22b; return 1; - case 0x22c: *out = 0x22d; return 1; - case 0x22e: *out = 0x22f; return 1; - case 0x230: *out = 0x231; return 1; - case 0x232: *out = 0x233; return 1; - case 0x23a: *out = 0x2c65; return 1; - case 0x23b: *out = 0x23c; return 1; - case 0x23d: *out = 0x19a; return 1; - case 0x23e: *out = 0x2c66; return 1; - case 0x241: *out = 0x242; return 1; - case 0x243: *out = 0x180; return 1; - case 0x244: *out = 0x289; return 1; - case 0x245: *out = 0x28c; return 1; - case 0x246: *out = 0x247; return 1; - case 0x248: *out = 0x249; return 1; - case 0x24a: *out = 0x24b; return 1; - case 0x24c: *out = 0x24d; return 1; - case 0x24e: *out = 0x24f; return 1; - case 0x345: *out = 0x3b9; return 1; - case 0x370: *out = 0x371; return 1; - case 0x372: *out = 0x373; return 1; - case 0x376: *out = 0x377; return 1; - case 0x386: *out = 0x3ac; return 1; - case 0x388: *out = 0x3ad; return 1; - case 0x389: *out = 0x3ae; return 1; - case 0x38a: *out = 0x3af; return 1; - case 0x38c: *out = 0x3cc; return 1; - case 0x38e: *out = 0x3cd; return 1; - case 0x38f: *out = 0x3ce; return 1; - case 0x390: out[ 0 ] = 0x3b9; out[ 1 ] = 0x308; out[ 2 ] = 0x301; return 3; - case 0x391: *out = 0x3b1; return 1; - case 0x392: *out = 0x3b2; return 1; - case 0x393: *out = 0x3b3; return 1; - case 0x394: *out = 0x3b4; return 1; - case 0x395: *out = 0x3b5; return 1; - case 0x396: *out = 0x3b6; return 1; - case 0x397: *out = 0x3b7; return 1; - case 0x398: *out = 0x3b8; return 1; - case 0x399: *out = 0x3b9; return 1; - case 0x39a: *out = 0x3ba; return 1; - case 0x39b: *out = 0x3bb; return 1; - case 0x39c: *out = 0x3bc; return 1; - case 0x39d: *out = 0x3bd; return 1; - case 0x39e: *out = 0x3be; return 1; - case 0x39f: *out = 0x3bf; return 1; - case 0x3a0: *out = 0x3c0; return 1; - case 0x3a1: *out = 0x3c1; return 1; - case 0x3a3: *out = 0x3c3; return 1; - case 0x3a4: *out = 0x3c4; return 1; - case 0x3a5: *out = 0x3c5; return 1; - case 0x3a6: *out = 0x3c6; return 1; - case 0x3a7: *out = 0x3c7; return 1; - case 0x3a8: *out = 0x3c8; return 1; - case 0x3a9: *out = 0x3c9; return 1; - case 0x3aa: *out = 0x3ca; return 1; - case 0x3ab: *out = 0x3cb; return 1; - case 0x3b0: out[ 0 ] = 0x3c5; out[ 1 ] = 0x308; out[ 2 ] = 0x301; return 3; - case 0x3c2: *out = 0x3c3; return 1; - case 0x3cf: *out = 0x3d7; return 1; - case 0x3d0: *out = 0x3b2; return 1; - case 0x3d1: *out = 0x3b8; return 1; - case 0x3d5: *out = 0x3c6; return 1; - case 0x3d6: *out = 0x3c0; return 1; - case 0x3d8: *out = 0x3d9; return 1; - case 0x3da: *out = 0x3db; return 1; - case 0x3dc: *out = 0x3dd; return 1; - case 0x3de: *out = 0x3df; return 1; - case 0x3e0: *out = 0x3e1; return 1; - case 0x3e2: *out = 0x3e3; return 1; - case 0x3e4: *out = 0x3e5; return 1; - case 0x3e6: *out = 0x3e7; return 1; - case 0x3e8: *out = 0x3e9; return 1; - case 0x3ea: *out = 0x3eb; return 1; - case 0x3ec: *out = 0x3ed; return 1; - case 0x3ee: *out = 0x3ef; return 1; - case 0x3f0: *out = 0x3ba; return 1; - case 0x3f1: *out = 0x3c1; return 1; - case 0x3f4: *out = 0x3b8; return 1; - case 0x3f5: *out = 0x3b5; return 1; - case 0x3f7: *out = 0x3f8; return 1; - case 0x3f9: *out = 0x3f2; return 1; - case 0x3fa: *out = 0x3fb; return 1; - case 0x3fd: *out = 0x37b; return 1; - case 0x3fe: *out = 0x37c; return 1; - case 0x3ff: *out = 0x37d; return 1; - case 0x400: *out = 0x450; return 1; - case 0x401: *out = 0x451; return 1; - case 0x402: *out = 0x452; return 1; - case 0x403: *out = 0x453; return 1; - case 0x404: *out = 0x454; return 1; - case 0x405: *out = 0x455; return 1; - case 0x406: *out = 0x456; return 1; - case 0x407: *out = 0x457; return 1; - case 0x408: *out = 0x458; return 1; - case 0x409: *out = 0x459; return 1; - case 0x40a: *out = 0x45a; return 1; - case 0x40b: *out = 0x45b; return 1; - case 0x40c: *out = 0x45c; return 1; - case 0x40d: *out = 0x45d; return 1; - case 0x40e: *out = 0x45e; return 1; - case 0x40f: *out = 0x45f; return 1; - case 0x410: *out = 0x430; return 1; - case 0x411: *out = 0x431; return 1; - case 0x412: *out = 0x432; return 1; - case 0x413: *out = 0x433; return 1; - case 0x414: *out = 0x434; return 1; - case 0x415: *out = 0x435; return 1; - case 0x416: *out = 0x436; return 1; - case 0x417: *out = 0x437; return 1; - case 0x418: *out = 0x438; return 1; - case 0x419: *out = 0x439; return 1; - case 0x41a: *out = 0x43a; return 1; - case 0x41b: *out = 0x43b; return 1; - case 0x41c: *out = 0x43c; return 1; - case 0x41d: *out = 0x43d; return 1; - case 0x41e: *out = 0x43e; return 1; - case 0x41f: *out = 0x43f; return 1; - case 0x420: *out = 0x440; return 1; - case 0x421: *out = 0x441; return 1; - case 0x422: *out = 0x442; return 1; - case 0x423: *out = 0x443; return 1; - case 0x424: *out = 0x444; return 1; - case 0x425: *out = 0x445; return 1; - case 0x426: *out = 0x446; return 1; - case 0x427: *out = 0x447; return 1; - case 0x428: *out = 0x448; return 1; - case 0x429: *out = 0x449; return 1; - case 0x42a: *out = 0x44a; return 1; - case 0x42b: *out = 0x44b; return 1; - case 0x42c: *out = 0x44c; return 1; - case 0x42d: *out = 0x44d; return 1; - case 0x42e: *out = 0x44e; return 1; - case 0x42f: *out = 0x44f; return 1; - case 0x460: *out = 0x461; return 1; - case 0x462: *out = 0x463; return 1; - case 0x464: *out = 0x465; return 1; - case 0x466: *out = 0x467; return 1; - case 0x468: *out = 0x469; return 1; - case 0x46a: *out = 0x46b; return 1; - case 0x46c: *out = 0x46d; return 1; - case 0x46e: *out = 0x46f; return 1; - case 0x470: *out = 0x471; return 1; - case 0x472: *out = 0x473; return 1; - case 0x474: *out = 0x475; return 1; - case 0x476: *out = 0x477; return 1; - case 0x478: *out = 0x479; return 1; - case 0x47a: *out = 0x47b; return 1; - case 0x47c: *out = 0x47d; return 1; - case 0x47e: *out = 0x47f; return 1; - case 0x480: *out = 0x481; return 1; - case 0x48a: *out = 0x48b; return 1; - case 0x48c: *out = 0x48d; return 1; - case 0x48e: *out = 0x48f; return 1; - case 0x490: *out = 0x491; return 1; - case 0x492: *out = 0x493; return 1; - case 0x494: *out = 0x495; return 1; - case 0x496: *out = 0x497; return 1; - case 0x498: *out = 0x499; return 1; - case 0x49a: *out = 0x49b; return 1; - case 0x49c: *out = 0x49d; return 1; - case 0x49e: *out = 0x49f; return 1; - case 0x4a0: *out = 0x4a1; return 1; - case 0x4a2: *out = 0x4a3; return 1; - case 0x4a4: *out = 0x4a5; return 1; - case 0x4a6: *out = 0x4a7; return 1; - case 0x4a8: *out = 0x4a9; return 1; - case 0x4aa: *out = 0x4ab; return 1; - case 0x4ac: *out = 0x4ad; return 1; - case 0x4ae: *out = 0x4af; return 1; - case 0x4b0: *out = 0x4b1; return 1; - case 0x4b2: *out = 0x4b3; return 1; - case 0x4b4: *out = 0x4b5; return 1; - case 0x4b6: *out = 0x4b7; return 1; - case 0x4b8: *out = 0x4b9; return 1; - case 0x4ba: *out = 0x4bb; return 1; - case 0x4bc: *out = 0x4bd; return 1; - case 0x4be: *out = 0x4bf; return 1; - case 0x4c0: *out = 0x4cf; return 1; - case 0x4c1: *out = 0x4c2; return 1; - case 0x4c3: *out = 0x4c4; return 1; - case 0x4c5: *out = 0x4c6; return 1; - case 0x4c7: *out = 0x4c8; return 1; - case 0x4c9: *out = 0x4ca; return 1; - case 0x4cb: *out = 0x4cc; return 1; - case 0x4cd: *out = 0x4ce; return 1; - case 0x4d0: *out = 0x4d1; return 1; - case 0x4d2: *out = 0x4d3; return 1; - case 0x4d4: *out = 0x4d5; return 1; - case 0x4d6: *out = 0x4d7; return 1; - case 0x4d8: *out = 0x4d9; return 1; - case 0x4da: *out = 0x4db; return 1; - case 0x4dc: *out = 0x4dd; return 1; - case 0x4de: *out = 0x4df; return 1; - case 0x4e0: *out = 0x4e1; return 1; - case 0x4e2: *out = 0x4e3; return 1; - case 0x4e4: *out = 0x4e5; return 1; - case 0x4e6: *out = 0x4e7; return 1; - case 0x4e8: *out = 0x4e9; return 1; - case 0x4ea: *out = 0x4eb; return 1; - case 0x4ec: *out = 0x4ed; return 1; - case 0x4ee: *out = 0x4ef; return 1; - case 0x4f0: *out = 0x4f1; return 1; - case 0x4f2: *out = 0x4f3; return 1; - case 0x4f4: *out = 0x4f5; return 1; - case 0x4f6: *out = 0x4f7; return 1; - case 0x4f8: *out = 0x4f9; return 1; - case 0x4fa: *out = 0x4fb; return 1; - case 0x4fc: *out = 0x4fd; return 1; - case 0x4fe: *out = 0x4ff; return 1; - case 0x500: *out = 0x501; return 1; - case 0x502: *out = 0x503; return 1; - case 0x504: *out = 0x505; return 1; - case 0x506: *out = 0x507; return 1; - case 0x508: *out = 0x509; return 1; - case 0x50a: *out = 0x50b; return 1; - case 0x50c: *out = 0x50d; return 1; - case 0x50e: *out = 0x50f; return 1; - case 0x510: *out = 0x511; return 1; - case 0x512: *out = 0x513; return 1; - case 0x514: *out = 0x515; return 1; - case 0x516: *out = 0x517; return 1; - case 0x518: *out = 0x519; return 1; - case 0x51a: *out = 0x51b; return 1; - case 0x51c: *out = 0x51d; return 1; - case 0x51e: *out = 0x51f; return 1; - case 0x520: *out = 0x521; return 1; - case 0x522: *out = 0x523; return 1; - case 0x524: *out = 0x525; return 1; - case 0x531: *out = 0x561; return 1; - case 0x532: *out = 0x562; return 1; - case 0x533: *out = 0x563; return 1; - case 0x534: *out = 0x564; return 1; - case 0x535: *out = 0x565; return 1; - case 0x536: *out = 0x566; return 1; - case 0x537: *out = 0x567; return 1; - case 0x538: *out = 0x568; return 1; - case 0x539: *out = 0x569; return 1; - case 0x53a: *out = 0x56a; return 1; - case 0x53b: *out = 0x56b; return 1; - case 0x53c: *out = 0x56c; return 1; - case 0x53d: *out = 0x56d; return 1; - case 0x53e: *out = 0x56e; return 1; - case 0x53f: *out = 0x56f; return 1; - case 0x540: *out = 0x570; return 1; - case 0x541: *out = 0x571; return 1; - case 0x542: *out = 0x572; return 1; - case 0x543: *out = 0x573; return 1; - case 0x544: *out = 0x574; return 1; - case 0x545: *out = 0x575; return 1; - case 0x546: *out = 0x576; return 1; - case 0x547: *out = 0x577; return 1; - case 0x548: *out = 0x578; return 1; - case 0x549: *out = 0x579; return 1; - case 0x54a: *out = 0x57a; return 1; - case 0x54b: *out = 0x57b; return 1; - case 0x54c: *out = 0x57c; return 1; - case 0x54d: *out = 0x57d; return 1; - case 0x54e: *out = 0x57e; return 1; - case 0x54f: *out = 0x57f; return 1; - case 0x550: *out = 0x580; return 1; - case 0x551: *out = 0x581; return 1; - case 0x552: *out = 0x582; return 1; - case 0x553: *out = 0x583; return 1; - case 0x554: *out = 0x584; return 1; - case 0x555: *out = 0x585; return 1; - case 0x556: *out = 0x586; return 1; - case 0x587: out[ 0 ] = 0x565; out[ 1 ] = 0x582; return 2; - case 0x10a0: *out = 0x2d00; return 1; - case 0x10a1: *out = 0x2d01; return 1; - case 0x10a2: *out = 0x2d02; return 1; - case 0x10a3: *out = 0x2d03; return 1; - case 0x10a4: *out = 0x2d04; return 1; - case 0x10a5: *out = 0x2d05; return 1; - case 0x10a6: *out = 0x2d06; return 1; - case 0x10a7: *out = 0x2d07; return 1; - case 0x10a8: *out = 0x2d08; return 1; - case 0x10a9: *out = 0x2d09; return 1; - case 0x10aa: *out = 0x2d0a; return 1; - case 0x10ab: *out = 0x2d0b; return 1; - case 0x10ac: *out = 0x2d0c; return 1; - case 0x10ad: *out = 0x2d0d; return 1; - case 0x10ae: *out = 0x2d0e; return 1; - case 0x10af: *out = 0x2d0f; return 1; - case 0x10b0: *out = 0x2d10; return 1; - case 0x10b1: *out = 0x2d11; return 1; - case 0x10b2: *out = 0x2d12; return 1; - case 0x10b3: *out = 0x2d13; return 1; - case 0x10b4: *out = 0x2d14; return 1; - case 0x10b5: *out = 0x2d15; return 1; - case 0x10b6: *out = 0x2d16; return 1; - case 0x10b7: *out = 0x2d17; return 1; - case 0x10b8: *out = 0x2d18; return 1; - case 0x10b9: *out = 0x2d19; return 1; - case 0x10ba: *out = 0x2d1a; return 1; - case 0x10bb: *out = 0x2d1b; return 1; - case 0x10bc: *out = 0x2d1c; return 1; - case 0x10bd: *out = 0x2d1d; return 1; - case 0x10be: *out = 0x2d1e; return 1; - case 0x10bf: *out = 0x2d1f; return 1; - case 0x10c0: *out = 0x2d20; return 1; - case 0x10c1: *out = 0x2d21; return 1; - case 0x10c2: *out = 0x2d22; return 1; - case 0x10c3: *out = 0x2d23; return 1; - case 0x10c4: *out = 0x2d24; return 1; - case 0x10c5: *out = 0x2d25; return 1; - case 0x1e00: *out = 0x1e01; return 1; - case 0x1e02: *out = 0x1e03; return 1; - case 0x1e04: *out = 0x1e05; return 1; - case 0x1e06: *out = 0x1e07; return 1; - case 0x1e08: *out = 0x1e09; return 1; - case 0x1e0a: *out = 0x1e0b; return 1; - case 0x1e0c: *out = 0x1e0d; return 1; - case 0x1e0e: *out = 0x1e0f; return 1; - case 0x1e10: *out = 0x1e11; return 1; - case 0x1e12: *out = 0x1e13; return 1; - case 0x1e14: *out = 0x1e15; return 1; - case 0x1e16: *out = 0x1e17; return 1; - case 0x1e18: *out = 0x1e19; return 1; - case 0x1e1a: *out = 0x1e1b; return 1; - case 0x1e1c: *out = 0x1e1d; return 1; - case 0x1e1e: *out = 0x1e1f; return 1; - case 0x1e20: *out = 0x1e21; return 1; - case 0x1e22: *out = 0x1e23; return 1; - case 0x1e24: *out = 0x1e25; return 1; - case 0x1e26: *out = 0x1e27; return 1; - case 0x1e28: *out = 0x1e29; return 1; - case 0x1e2a: *out = 0x1e2b; return 1; - case 0x1e2c: *out = 0x1e2d; return 1; - case 0x1e2e: *out = 0x1e2f; return 1; - case 0x1e30: *out = 0x1e31; return 1; - case 0x1e32: *out = 0x1e33; return 1; - case 0x1e34: *out = 0x1e35; return 1; - case 0x1e36: *out = 0x1e37; return 1; - case 0x1e38: *out = 0x1e39; return 1; - case 0x1e3a: *out = 0x1e3b; return 1; - case 0x1e3c: *out = 0x1e3d; return 1; - case 0x1e3e: *out = 0x1e3f; return 1; - case 0x1e40: *out = 0x1e41; return 1; - case 0x1e42: *out = 0x1e43; return 1; - case 0x1e44: *out = 0x1e45; return 1; - case 0x1e46: *out = 0x1e47; return 1; - case 0x1e48: *out = 0x1e49; return 1; - case 0x1e4a: *out = 0x1e4b; return 1; - case 0x1e4c: *out = 0x1e4d; return 1; - case 0x1e4e: *out = 0x1e4f; return 1; - case 0x1e50: *out = 0x1e51; return 1; - case 0x1e52: *out = 0x1e53; return 1; - case 0x1e54: *out = 0x1e55; return 1; - case 0x1e56: *out = 0x1e57; return 1; - case 0x1e58: *out = 0x1e59; return 1; - case 0x1e5a: *out = 0x1e5b; return 1; - case 0x1e5c: *out = 0x1e5d; return 1; - case 0x1e5e: *out = 0x1e5f; return 1; - case 0x1e60: *out = 0x1e61; return 1; - case 0x1e62: *out = 0x1e63; return 1; - case 0x1e64: *out = 0x1e65; return 1; - case 0x1e66: *out = 0x1e67; return 1; - case 0x1e68: *out = 0x1e69; return 1; - case 0x1e6a: *out = 0x1e6b; return 1; - case 0x1e6c: *out = 0x1e6d; return 1; - case 0x1e6e: *out = 0x1e6f; return 1; - case 0x1e70: *out = 0x1e71; return 1; - case 0x1e72: *out = 0x1e73; return 1; - case 0x1e74: *out = 0x1e75; return 1; - case 0x1e76: *out = 0x1e77; return 1; - case 0x1e78: *out = 0x1e79; return 1; - case 0x1e7a: *out = 0x1e7b; return 1; - case 0x1e7c: *out = 0x1e7d; return 1; - case 0x1e7e: *out = 0x1e7f; return 1; - case 0x1e80: *out = 0x1e81; return 1; - case 0x1e82: *out = 0x1e83; return 1; - case 0x1e84: *out = 0x1e85; return 1; - case 0x1e86: *out = 0x1e87; return 1; - case 0x1e88: *out = 0x1e89; return 1; - case 0x1e8a: *out = 0x1e8b; return 1; - case 0x1e8c: *out = 0x1e8d; return 1; - case 0x1e8e: *out = 0x1e8f; return 1; - case 0x1e90: *out = 0x1e91; return 1; - case 0x1e92: *out = 0x1e93; return 1; - case 0x1e94: *out = 0x1e95; return 1; - case 0x1e96: out[ 0 ] = 0x68; out[ 1 ] = 0x331; return 2; - case 0x1e97: out[ 0 ] = 0x74; out[ 1 ] = 0x308; return 2; - case 0x1e98: out[ 0 ] = 0x77; out[ 1 ] = 0x30a; return 2; - case 0x1e99: out[ 0 ] = 0x79; out[ 1 ] = 0x30a; return 2; - case 0x1e9a: out[ 0 ] = 0x61; out[ 1 ] = 0x2be; return 2; - case 0x1e9b: *out = 0x1e61; return 1; - case 0x1e9e: out[ 0 ] = 0x73; out[ 1 ] = 0x73; return 2; - case 0x1ea0: *out = 0x1ea1; return 1; - case 0x1ea2: *out = 0x1ea3; return 1; - case 0x1ea4: *out = 0x1ea5; return 1; - case 0x1ea6: *out = 0x1ea7; return 1; - case 0x1ea8: *out = 0x1ea9; return 1; - case 0x1eaa: *out = 0x1eab; return 1; - case 0x1eac: *out = 0x1ead; return 1; - case 0x1eae: *out = 0x1eaf; return 1; - case 0x1eb0: *out = 0x1eb1; return 1; - case 0x1eb2: *out = 0x1eb3; return 1; - case 0x1eb4: *out = 0x1eb5; return 1; - case 0x1eb6: *out = 0x1eb7; return 1; - case 0x1eb8: *out = 0x1eb9; return 1; - case 0x1eba: *out = 0x1ebb; return 1; - case 0x1ebc: *out = 0x1ebd; return 1; - case 0x1ebe: *out = 0x1ebf; return 1; - case 0x1ec0: *out = 0x1ec1; return 1; - case 0x1ec2: *out = 0x1ec3; return 1; - case 0x1ec4: *out = 0x1ec5; return 1; - case 0x1ec6: *out = 0x1ec7; return 1; - case 0x1ec8: *out = 0x1ec9; return 1; - case 0x1eca: *out = 0x1ecb; return 1; - case 0x1ecc: *out = 0x1ecd; return 1; - case 0x1ece: *out = 0x1ecf; return 1; - case 0x1ed0: *out = 0x1ed1; return 1; - case 0x1ed2: *out = 0x1ed3; return 1; - case 0x1ed4: *out = 0x1ed5; return 1; - case 0x1ed6: *out = 0x1ed7; return 1; - case 0x1ed8: *out = 0x1ed9; return 1; - case 0x1eda: *out = 0x1edb; return 1; - case 0x1edc: *out = 0x1edd; return 1; - case 0x1ede: *out = 0x1edf; return 1; - case 0x1ee0: *out = 0x1ee1; return 1; - case 0x1ee2: *out = 0x1ee3; return 1; - case 0x1ee4: *out = 0x1ee5; return 1; - case 0x1ee6: *out = 0x1ee7; return 1; - case 0x1ee8: *out = 0x1ee9; return 1; - case 0x1eea: *out = 0x1eeb; return 1; - case 0x1eec: *out = 0x1eed; return 1; - case 0x1eee: *out = 0x1eef; return 1; - case 0x1ef0: *out = 0x1ef1; return 1; - case 0x1ef2: *out = 0x1ef3; return 1; - case 0x1ef4: *out = 0x1ef5; return 1; - case 0x1ef6: *out = 0x1ef7; return 1; - case 0x1ef8: *out = 0x1ef9; return 1; - case 0x1efa: *out = 0x1efb; return 1; - case 0x1efc: *out = 0x1efd; return 1; - case 0x1efe: *out = 0x1eff; return 1; - case 0x1f08: *out = 0x1f00; return 1; - case 0x1f09: *out = 0x1f01; return 1; - case 0x1f0a: *out = 0x1f02; return 1; - case 0x1f0b: *out = 0x1f03; return 1; - case 0x1f0c: *out = 0x1f04; return 1; - case 0x1f0d: *out = 0x1f05; return 1; - case 0x1f0e: *out = 0x1f06; return 1; - case 0x1f0f: *out = 0x1f07; return 1; - case 0x1f18: *out = 0x1f10; return 1; - case 0x1f19: *out = 0x1f11; return 1; - case 0x1f1a: *out = 0x1f12; return 1; - case 0x1f1b: *out = 0x1f13; return 1; - case 0x1f1c: *out = 0x1f14; return 1; - case 0x1f1d: *out = 0x1f15; return 1; - case 0x1f28: *out = 0x1f20; return 1; - case 0x1f29: *out = 0x1f21; return 1; - case 0x1f2a: *out = 0x1f22; return 1; - case 0x1f2b: *out = 0x1f23; return 1; - case 0x1f2c: *out = 0x1f24; return 1; - case 0x1f2d: *out = 0x1f25; return 1; - case 0x1f2e: *out = 0x1f26; return 1; - case 0x1f2f: *out = 0x1f27; return 1; - case 0x1f38: *out = 0x1f30; return 1; - case 0x1f39: *out = 0x1f31; return 1; - case 0x1f3a: *out = 0x1f32; return 1; - case 0x1f3b: *out = 0x1f33; return 1; - case 0x1f3c: *out = 0x1f34; return 1; - case 0x1f3d: *out = 0x1f35; return 1; - case 0x1f3e: *out = 0x1f36; return 1; - case 0x1f3f: *out = 0x1f37; return 1; - case 0x1f48: *out = 0x1f40; return 1; - case 0x1f49: *out = 0x1f41; return 1; - case 0x1f4a: *out = 0x1f42; return 1; - case 0x1f4b: *out = 0x1f43; return 1; - case 0x1f4c: *out = 0x1f44; return 1; - case 0x1f4d: *out = 0x1f45; return 1; - case 0x1f50: out[ 0 ] = 0x3c5; out[ 1 ] = 0x313; return 2; - case 0x1f52: out[ 0 ] = 0x3c5; out[ 1 ] = 0x313; out[ 2 ] = 0x300; return 3; - case 0x1f54: out[ 0 ] = 0x3c5; out[ 1 ] = 0x313; out[ 2 ] = 0x301; return 3; - case 0x1f56: out[ 0 ] = 0x3c5; out[ 1 ] = 0x313; out[ 2 ] = 0x342; return 3; - case 0x1f59: *out = 0x1f51; return 1; - case 0x1f5b: *out = 0x1f53; return 1; - case 0x1f5d: *out = 0x1f55; return 1; - case 0x1f5f: *out = 0x1f57; return 1; - case 0x1f68: *out = 0x1f60; return 1; - case 0x1f69: *out = 0x1f61; return 1; - case 0x1f6a: *out = 0x1f62; return 1; - case 0x1f6b: *out = 0x1f63; return 1; - case 0x1f6c: *out = 0x1f64; return 1; - case 0x1f6d: *out = 0x1f65; return 1; - case 0x1f6e: *out = 0x1f66; return 1; - case 0x1f6f: *out = 0x1f67; return 1; - case 0x1f80: out[ 0 ] = 0x1f00; out[ 1 ] = 0x3b9; return 2; - case 0x1f81: out[ 0 ] = 0x1f01; out[ 1 ] = 0x3b9; return 2; - case 0x1f82: out[ 0 ] = 0x1f02; out[ 1 ] = 0x3b9; return 2; - case 0x1f83: out[ 0 ] = 0x1f03; out[ 1 ] = 0x3b9; return 2; - case 0x1f84: out[ 0 ] = 0x1f04; out[ 1 ] = 0x3b9; return 2; - case 0x1f85: out[ 0 ] = 0x1f05; out[ 1 ] = 0x3b9; return 2; - case 0x1f86: out[ 0 ] = 0x1f06; out[ 1 ] = 0x3b9; return 2; - case 0x1f87: out[ 0 ] = 0x1f07; out[ 1 ] = 0x3b9; return 2; - case 0x1f88: out[ 0 ] = 0x1f00; out[ 1 ] = 0x3b9; return 2; - case 0x1f89: out[ 0 ] = 0x1f01; out[ 1 ] = 0x3b9; return 2; - case 0x1f8a: out[ 0 ] = 0x1f02; out[ 1 ] = 0x3b9; return 2; - case 0x1f8b: out[ 0 ] = 0x1f03; out[ 1 ] = 0x3b9; return 2; - case 0x1f8c: out[ 0 ] = 0x1f04; out[ 1 ] = 0x3b9; return 2; - case 0x1f8d: out[ 0 ] = 0x1f05; out[ 1 ] = 0x3b9; return 2; - case 0x1f8e: out[ 0 ] = 0x1f06; out[ 1 ] = 0x3b9; return 2; - case 0x1f8f: out[ 0 ] = 0x1f07; out[ 1 ] = 0x3b9; return 2; - case 0x1f90: out[ 0 ] = 0x1f20; out[ 1 ] = 0x3b9; return 2; - case 0x1f91: out[ 0 ] = 0x1f21; out[ 1 ] = 0x3b9; return 2; - case 0x1f92: out[ 0 ] = 0x1f22; out[ 1 ] = 0x3b9; return 2; - case 0x1f93: out[ 0 ] = 0x1f23; out[ 1 ] = 0x3b9; return 2; - case 0x1f94: out[ 0 ] = 0x1f24; out[ 1 ] = 0x3b9; return 2; - case 0x1f95: out[ 0 ] = 0x1f25; out[ 1 ] = 0x3b9; return 2; - case 0x1f96: out[ 0 ] = 0x1f26; out[ 1 ] = 0x3b9; return 2; - case 0x1f97: out[ 0 ] = 0x1f27; out[ 1 ] = 0x3b9; return 2; - case 0x1f98: out[ 0 ] = 0x1f20; out[ 1 ] = 0x3b9; return 2; - case 0x1f99: out[ 0 ] = 0x1f21; out[ 1 ] = 0x3b9; return 2; - case 0x1f9a: out[ 0 ] = 0x1f22; out[ 1 ] = 0x3b9; return 2; - case 0x1f9b: out[ 0 ] = 0x1f23; out[ 1 ] = 0x3b9; return 2; - case 0x1f9c: out[ 0 ] = 0x1f24; out[ 1 ] = 0x3b9; return 2; - case 0x1f9d: out[ 0 ] = 0x1f25; out[ 1 ] = 0x3b9; return 2; - case 0x1f9e: out[ 0 ] = 0x1f26; out[ 1 ] = 0x3b9; return 2; - case 0x1f9f: out[ 0 ] = 0x1f27; out[ 1 ] = 0x3b9; return 2; - case 0x1fa0: out[ 0 ] = 0x1f60; out[ 1 ] = 0x3b9; return 2; - case 0x1fa1: out[ 0 ] = 0x1f61; out[ 1 ] = 0x3b9; return 2; - case 0x1fa2: out[ 0 ] = 0x1f62; out[ 1 ] = 0x3b9; return 2; - case 0x1fa3: out[ 0 ] = 0x1f63; out[ 1 ] = 0x3b9; return 2; - case 0x1fa4: out[ 0 ] = 0x1f64; out[ 1 ] = 0x3b9; return 2; - case 0x1fa5: out[ 0 ] = 0x1f65; out[ 1 ] = 0x3b9; return 2; - case 0x1fa6: out[ 0 ] = 0x1f66; out[ 1 ] = 0x3b9; return 2; - case 0x1fa7: out[ 0 ] = 0x1f67; out[ 1 ] = 0x3b9; return 2; - case 0x1fa8: out[ 0 ] = 0x1f60; out[ 1 ] = 0x3b9; return 2; - case 0x1fa9: out[ 0 ] = 0x1f61; out[ 1 ] = 0x3b9; return 2; - case 0x1faa: out[ 0 ] = 0x1f62; out[ 1 ] = 0x3b9; return 2; - case 0x1fab: out[ 0 ] = 0x1f63; out[ 1 ] = 0x3b9; return 2; - case 0x1fac: out[ 0 ] = 0x1f64; out[ 1 ] = 0x3b9; return 2; - case 0x1fad: out[ 0 ] = 0x1f65; out[ 1 ] = 0x3b9; return 2; - case 0x1fae: out[ 0 ] = 0x1f66; out[ 1 ] = 0x3b9; return 2; - case 0x1faf: out[ 0 ] = 0x1f67; out[ 1 ] = 0x3b9; return 2; - case 0x1fb2: out[ 0 ] = 0x1f70; out[ 1 ] = 0x3b9; return 2; - case 0x1fb3: out[ 0 ] = 0x3b1; out[ 1 ] = 0x3b9; return 2; - case 0x1fb4: out[ 0 ] = 0x3ac; out[ 1 ] = 0x3b9; return 2; - case 0x1fb6: out[ 0 ] = 0x3b1; out[ 1 ] = 0x342; return 2; - case 0x1fb7: out[ 0 ] = 0x3b1; out[ 1 ] = 0x342; out[ 2 ] = 0x3b9; return 3; - case 0x1fb8: *out = 0x1fb0; return 1; - case 0x1fb9: *out = 0x1fb1; return 1; - case 0x1fba: *out = 0x1f70; return 1; - case 0x1fbb: *out = 0x1f71; return 1; - case 0x1fbc: out[ 0 ] = 0x3b1; out[ 1 ] = 0x3b9; return 2; - case 0x1fbe: *out = 0x3b9; return 1; - case 0x1fc2: out[ 0 ] = 0x1f74; out[ 1 ] = 0x3b9; return 2; - case 0x1fc3: out[ 0 ] = 0x3b7; out[ 1 ] = 0x3b9; return 2; - case 0x1fc4: out[ 0 ] = 0x3ae; out[ 1 ] = 0x3b9; return 2; - case 0x1fc6: out[ 0 ] = 0x3b7; out[ 1 ] = 0x342; return 2; - case 0x1fc7: out[ 0 ] = 0x3b7; out[ 1 ] = 0x342; out[ 2 ] = 0x3b9; return 3; - case 0x1fc8: *out = 0x1f72; return 1; - case 0x1fc9: *out = 0x1f73; return 1; - case 0x1fca: *out = 0x1f74; return 1; - case 0x1fcb: *out = 0x1f75; return 1; - case 0x1fcc: out[ 0 ] = 0x3b7; out[ 1 ] = 0x3b9; return 2; - case 0x1fd2: out[ 0 ] = 0x3b9; out[ 1 ] = 0x308; out[ 2 ] = 0x300; return 3; - case 0x1fd3: out[ 0 ] = 0x3b9; out[ 1 ] = 0x308; out[ 2 ] = 0x301; return 3; - case 0x1fd6: out[ 0 ] = 0x3b9; out[ 1 ] = 0x342; return 2; - case 0x1fd7: out[ 0 ] = 0x3b9; out[ 1 ] = 0x308; out[ 2 ] = 0x342; return 3; - case 0x1fd8: *out = 0x1fd0; return 1; - case 0x1fd9: *out = 0x1fd1; return 1; - case 0x1fda: *out = 0x1f76; return 1; - case 0x1fdb: *out = 0x1f77; return 1; - case 0x1fe2: out[ 0 ] = 0x3c5; out[ 1 ] = 0x308; out[ 2 ] = 0x300; return 3; - case 0x1fe3: out[ 0 ] = 0x3c5; out[ 1 ] = 0x308; out[ 2 ] = 0x301; return 3; - case 0x1fe4: out[ 0 ] = 0x3c1; out[ 1 ] = 0x313; return 2; - case 0x1fe6: out[ 0 ] = 0x3c5; out[ 1 ] = 0x342; return 2; - case 0x1fe7: out[ 0 ] = 0x3c5; out[ 1 ] = 0x308; out[ 2 ] = 0x342; return 3; - case 0x1fe8: *out = 0x1fe0; return 1; - case 0x1fe9: *out = 0x1fe1; return 1; - case 0x1fea: *out = 0x1f7a; return 1; - case 0x1feb: *out = 0x1f7b; return 1; - case 0x1fec: *out = 0x1fe5; return 1; - case 0x1ff2: out[ 0 ] = 0x1f7c; out[ 1 ] = 0x3b9; return 2; - case 0x1ff3: out[ 0 ] = 0x3c9; out[ 1 ] = 0x3b9; return 2; - case 0x1ff4: out[ 0 ] = 0x3ce; out[ 1 ] = 0x3b9; return 2; - case 0x1ff6: out[ 0 ] = 0x3c9; out[ 1 ] = 0x342; return 2; - case 0x1ff7: out[ 0 ] = 0x3c9; out[ 1 ] = 0x342; out[ 2 ] = 0x3b9; return 3; - case 0x1ff8: *out = 0x1f78; return 1; - case 0x1ff9: *out = 0x1f79; return 1; - case 0x1ffa: *out = 0x1f7c; return 1; - case 0x1ffb: *out = 0x1f7d; return 1; - case 0x1ffc: out[ 0 ] = 0x3c9; out[ 1 ] = 0x3b9; return 2; - case 0x2126: *out = 0x3c9; return 1; - case 0x212a: *out = 0x6b; return 1; - case 0x212b: *out = 0xe5; return 1; - case 0x2132: *out = 0x214e; return 1; - case 0x2160: *out = 0x2170; return 1; - case 0x2161: *out = 0x2171; return 1; - case 0x2162: *out = 0x2172; return 1; - case 0x2163: *out = 0x2173; return 1; - case 0x2164: *out = 0x2174; return 1; - case 0x2165: *out = 0x2175; return 1; - case 0x2166: *out = 0x2176; return 1; - case 0x2167: *out = 0x2177; return 1; - case 0x2168: *out = 0x2178; return 1; - case 0x2169: *out = 0x2179; return 1; - case 0x216a: *out = 0x217a; return 1; - case 0x216b: *out = 0x217b; return 1; - case 0x216c: *out = 0x217c; return 1; - case 0x216d: *out = 0x217d; return 1; - case 0x216e: *out = 0x217e; return 1; - case 0x216f: *out = 0x217f; return 1; - case 0x2183: *out = 0x2184; return 1; - case 0x24b6: *out = 0x24d0; return 1; - case 0x24b7: *out = 0x24d1; return 1; - case 0x24b8: *out = 0x24d2; return 1; - case 0x24b9: *out = 0x24d3; return 1; - case 0x24ba: *out = 0x24d4; return 1; - case 0x24bb: *out = 0x24d5; return 1; - case 0x24bc: *out = 0x24d6; return 1; - case 0x24bd: *out = 0x24d7; return 1; - case 0x24be: *out = 0x24d8; return 1; - case 0x24bf: *out = 0x24d9; return 1; - case 0x24c0: *out = 0x24da; return 1; - case 0x24c1: *out = 0x24db; return 1; - case 0x24c2: *out = 0x24dc; return 1; - case 0x24c3: *out = 0x24dd; return 1; - case 0x24c4: *out = 0x24de; return 1; - case 0x24c5: *out = 0x24df; return 1; - case 0x24c6: *out = 0x24e0; return 1; - case 0x24c7: *out = 0x24e1; return 1; - case 0x24c8: *out = 0x24e2; return 1; - case 0x24c9: *out = 0x24e3; return 1; - case 0x24ca: *out = 0x24e4; return 1; - case 0x24cb: *out = 0x24e5; return 1; - case 0x24cc: *out = 0x24e6; return 1; - case 0x24cd: *out = 0x24e7; return 1; - case 0x24ce: *out = 0x24e8; return 1; - case 0x24cf: *out = 0x24e9; return 1; - case 0x2c00: *out = 0x2c30; return 1; - case 0x2c01: *out = 0x2c31; return 1; - case 0x2c02: *out = 0x2c32; return 1; - case 0x2c03: *out = 0x2c33; return 1; - case 0x2c04: *out = 0x2c34; return 1; - case 0x2c05: *out = 0x2c35; return 1; - case 0x2c06: *out = 0x2c36; return 1; - case 0x2c07: *out = 0x2c37; return 1; - case 0x2c08: *out = 0x2c38; return 1; - case 0x2c09: *out = 0x2c39; return 1; - case 0x2c0a: *out = 0x2c3a; return 1; - case 0x2c0b: *out = 0x2c3b; return 1; - case 0x2c0c: *out = 0x2c3c; return 1; - case 0x2c0d: *out = 0x2c3d; return 1; - case 0x2c0e: *out = 0x2c3e; return 1; - case 0x2c0f: *out = 0x2c3f; return 1; - case 0x2c10: *out = 0x2c40; return 1; - case 0x2c11: *out = 0x2c41; return 1; - case 0x2c12: *out = 0x2c42; return 1; - case 0x2c13: *out = 0x2c43; return 1; - case 0x2c14: *out = 0x2c44; return 1; - case 0x2c15: *out = 0x2c45; return 1; - case 0x2c16: *out = 0x2c46; return 1; - case 0x2c17: *out = 0x2c47; return 1; - case 0x2c18: *out = 0x2c48; return 1; - case 0x2c19: *out = 0x2c49; return 1; - case 0x2c1a: *out = 0x2c4a; return 1; - case 0x2c1b: *out = 0x2c4b; return 1; - case 0x2c1c: *out = 0x2c4c; return 1; - case 0x2c1d: *out = 0x2c4d; return 1; - case 0x2c1e: *out = 0x2c4e; return 1; - case 0x2c1f: *out = 0x2c4f; return 1; - case 0x2c20: *out = 0x2c50; return 1; - case 0x2c21: *out = 0x2c51; return 1; - case 0x2c22: *out = 0x2c52; return 1; - case 0x2c23: *out = 0x2c53; return 1; - case 0x2c24: *out = 0x2c54; return 1; - case 0x2c25: *out = 0x2c55; return 1; - case 0x2c26: *out = 0x2c56; return 1; - case 0x2c27: *out = 0x2c57; return 1; - case 0x2c28: *out = 0x2c58; return 1; - case 0x2c29: *out = 0x2c59; return 1; - case 0x2c2a: *out = 0x2c5a; return 1; - case 0x2c2b: *out = 0x2c5b; return 1; - case 0x2c2c: *out = 0x2c5c; return 1; - case 0x2c2d: *out = 0x2c5d; return 1; - case 0x2c2e: *out = 0x2c5e; return 1; - case 0x2c60: *out = 0x2c61; return 1; - case 0x2c62: *out = 0x26b; return 1; - case 0x2c63: *out = 0x1d7d; return 1; - case 0x2c64: *out = 0x27d; return 1; - case 0x2c67: *out = 0x2c68; return 1; - case 0x2c69: *out = 0x2c6a; return 1; - case 0x2c6b: *out = 0x2c6c; return 1; - case 0x2c6d: *out = 0x251; return 1; - case 0x2c6e: *out = 0x271; return 1; - case 0x2c6f: *out = 0x250; return 1; - case 0x2c70: *out = 0x252; return 1; - case 0x2c72: *out = 0x2c73; return 1; - case 0x2c75: *out = 0x2c76; return 1; - case 0x2c7e: *out = 0x23f; return 1; - case 0x2c7f: *out = 0x240; return 1; - case 0x2c80: *out = 0x2c81; return 1; - case 0x2c82: *out = 0x2c83; return 1; - case 0x2c84: *out = 0x2c85; return 1; - case 0x2c86: *out = 0x2c87; return 1; - case 0x2c88: *out = 0x2c89; return 1; - case 0x2c8a: *out = 0x2c8b; return 1; - case 0x2c8c: *out = 0x2c8d; return 1; - case 0x2c8e: *out = 0x2c8f; return 1; - case 0x2c90: *out = 0x2c91; return 1; - case 0x2c92: *out = 0x2c93; return 1; - case 0x2c94: *out = 0x2c95; return 1; - case 0x2c96: *out = 0x2c97; return 1; - case 0x2c98: *out = 0x2c99; return 1; - case 0x2c9a: *out = 0x2c9b; return 1; - case 0x2c9c: *out = 0x2c9d; return 1; - case 0x2c9e: *out = 0x2c9f; return 1; - case 0x2ca0: *out = 0x2ca1; return 1; - case 0x2ca2: *out = 0x2ca3; return 1; - case 0x2ca4: *out = 0x2ca5; return 1; - case 0x2ca6: *out = 0x2ca7; return 1; - case 0x2ca8: *out = 0x2ca9; return 1; - case 0x2caa: *out = 0x2cab; return 1; - case 0x2cac: *out = 0x2cad; return 1; - case 0x2cae: *out = 0x2caf; return 1; - case 0x2cb0: *out = 0x2cb1; return 1; - case 0x2cb2: *out = 0x2cb3; return 1; - case 0x2cb4: *out = 0x2cb5; return 1; - case 0x2cb6: *out = 0x2cb7; return 1; - case 0x2cb8: *out = 0x2cb9; return 1; - case 0x2cba: *out = 0x2cbb; return 1; - case 0x2cbc: *out = 0x2cbd; return 1; - case 0x2cbe: *out = 0x2cbf; return 1; - case 0x2cc0: *out = 0x2cc1; return 1; - case 0x2cc2: *out = 0x2cc3; return 1; - case 0x2cc4: *out = 0x2cc5; return 1; - case 0x2cc6: *out = 0x2cc7; return 1; - case 0x2cc8: *out = 0x2cc9; return 1; - case 0x2cca: *out = 0x2ccb; return 1; - case 0x2ccc: *out = 0x2ccd; return 1; - case 0x2cce: *out = 0x2ccf; return 1; - case 0x2cd0: *out = 0x2cd1; return 1; - case 0x2cd2: *out = 0x2cd3; return 1; - case 0x2cd4: *out = 0x2cd5; return 1; - case 0x2cd6: *out = 0x2cd7; return 1; - case 0x2cd8: *out = 0x2cd9; return 1; - case 0x2cda: *out = 0x2cdb; return 1; - case 0x2cdc: *out = 0x2cdd; return 1; - case 0x2cde: *out = 0x2cdf; return 1; - case 0x2ce0: *out = 0x2ce1; return 1; - case 0x2ce2: *out = 0x2ce3; return 1; - case 0x2ceb: *out = 0x2cec; return 1; - case 0x2ced: *out = 0x2cee; return 1; - case 0xa640: *out = 0xa641; return 1; - case 0xa642: *out = 0xa643; return 1; - case 0xa644: *out = 0xa645; return 1; - case 0xa646: *out = 0xa647; return 1; - case 0xa648: *out = 0xa649; return 1; - case 0xa64a: *out = 0xa64b; return 1; - case 0xa64c: *out = 0xa64d; return 1; - case 0xa64e: *out = 0xa64f; return 1; - case 0xa650: *out = 0xa651; return 1; - case 0xa652: *out = 0xa653; return 1; - case 0xa654: *out = 0xa655; return 1; - case 0xa656: *out = 0xa657; return 1; - case 0xa658: *out = 0xa659; return 1; - case 0xa65a: *out = 0xa65b; return 1; - case 0xa65c: *out = 0xa65d; return 1; - case 0xa65e: *out = 0xa65f; return 1; - case 0xa662: *out = 0xa663; return 1; - case 0xa664: *out = 0xa665; return 1; - case 0xa666: *out = 0xa667; return 1; - case 0xa668: *out = 0xa669; return 1; - case 0xa66a: *out = 0xa66b; return 1; - case 0xa66c: *out = 0xa66d; return 1; - case 0xa680: *out = 0xa681; return 1; - case 0xa682: *out = 0xa683; return 1; - case 0xa684: *out = 0xa685; return 1; - case 0xa686: *out = 0xa687; return 1; - case 0xa688: *out = 0xa689; return 1; - case 0xa68a: *out = 0xa68b; return 1; - case 0xa68c: *out = 0xa68d; return 1; - case 0xa68e: *out = 0xa68f; return 1; - case 0xa690: *out = 0xa691; return 1; - case 0xa692: *out = 0xa693; return 1; - case 0xa694: *out = 0xa695; return 1; - case 0xa696: *out = 0xa697; return 1; - case 0xa722: *out = 0xa723; return 1; - case 0xa724: *out = 0xa725; return 1; - case 0xa726: *out = 0xa727; return 1; - case 0xa728: *out = 0xa729; return 1; - case 0xa72a: *out = 0xa72b; return 1; - case 0xa72c: *out = 0xa72d; return 1; - case 0xa72e: *out = 0xa72f; return 1; - case 0xa732: *out = 0xa733; return 1; - case 0xa734: *out = 0xa735; return 1; - case 0xa736: *out = 0xa737; return 1; - case 0xa738: *out = 0xa739; return 1; - case 0xa73a: *out = 0xa73b; return 1; - case 0xa73c: *out = 0xa73d; return 1; - case 0xa73e: *out = 0xa73f; return 1; - case 0xa740: *out = 0xa741; return 1; - case 0xa742: *out = 0xa743; return 1; - case 0xa744: *out = 0xa745; return 1; - case 0xa746: *out = 0xa747; return 1; - case 0xa748: *out = 0xa749; return 1; - case 0xa74a: *out = 0xa74b; return 1; - case 0xa74c: *out = 0xa74d; return 1; - case 0xa74e: *out = 0xa74f; return 1; - case 0xa750: *out = 0xa751; return 1; - case 0xa752: *out = 0xa753; return 1; - case 0xa754: *out = 0xa755; return 1; - case 0xa756: *out = 0xa757; return 1; - case 0xa758: *out = 0xa759; return 1; - case 0xa75a: *out = 0xa75b; return 1; - case 0xa75c: *out = 0xa75d; return 1; - case 0xa75e: *out = 0xa75f; return 1; - case 0xa760: *out = 0xa761; return 1; - case 0xa762: *out = 0xa763; return 1; - case 0xa764: *out = 0xa765; return 1; - case 0xa766: *out = 0xa767; return 1; - case 0xa768: *out = 0xa769; return 1; - case 0xa76a: *out = 0xa76b; return 1; - case 0xa76c: *out = 0xa76d; return 1; - case 0xa76e: *out = 0xa76f; return 1; - case 0xa779: *out = 0xa77a; return 1; - case 0xa77b: *out = 0xa77c; return 1; - case 0xa77d: *out = 0x1d79; return 1; - case 0xa77e: *out = 0xa77f; return 1; - case 0xa780: *out = 0xa781; return 1; - case 0xa782: *out = 0xa783; return 1; - case 0xa784: *out = 0xa785; return 1; - case 0xa786: *out = 0xa787; return 1; - case 0xa78b: *out = 0xa78c; return 1; - case 0xfb00: out[ 0 ] = 0x66; out[ 1 ] = 0x66; return 2; - case 0xfb01: out[ 0 ] = 0x66; out[ 1 ] = 0x69; return 2; - case 0xfb02: out[ 0 ] = 0x66; out[ 1 ] = 0x6c; return 2; - case 0xfb03: out[ 0 ] = 0x66; out[ 1 ] = 0x66; out[ 2 ] = 0x69; return 3; - case 0xfb04: out[ 0 ] = 0x66; out[ 1 ] = 0x66; out[ 2 ] = 0x6c; return 3; - case 0xfb05: out[ 0 ] = 0x73; out[ 1 ] = 0x74; return 2; - case 0xfb06: out[ 0 ] = 0x73; out[ 1 ] = 0x74; return 2; - case 0xfb13: out[ 0 ] = 0x574; out[ 1 ] = 0x576; return 2; - case 0xfb14: out[ 0 ] = 0x574; out[ 1 ] = 0x565; return 2; - case 0xfb15: out[ 0 ] = 0x574; out[ 1 ] = 0x56b; return 2; - case 0xfb16: out[ 0 ] = 0x57e; out[ 1 ] = 0x576; return 2; - case 0xfb17: out[ 0 ] = 0x574; out[ 1 ] = 0x56d; return 2; - case 0xff21: *out = 0xff41; return 1; - case 0xff22: *out = 0xff42; return 1; - case 0xff23: *out = 0xff43; return 1; - case 0xff24: *out = 0xff44; return 1; - case 0xff25: *out = 0xff45; return 1; - case 0xff26: *out = 0xff46; return 1; - case 0xff27: *out = 0xff47; return 1; - case 0xff28: *out = 0xff48; return 1; - case 0xff29: *out = 0xff49; return 1; - case 0xff2a: *out = 0xff4a; return 1; - case 0xff2b: *out = 0xff4b; return 1; - case 0xff2c: *out = 0xff4c; return 1; - case 0xff2d: *out = 0xff4d; return 1; - case 0xff2e: *out = 0xff4e; return 1; - case 0xff2f: *out = 0xff4f; return 1; - case 0xff30: *out = 0xff50; return 1; - case 0xff31: *out = 0xff51; return 1; - case 0xff32: *out = 0xff52; return 1; - case 0xff33: *out = 0xff53; return 1; - case 0xff34: *out = 0xff54; return 1; - case 0xff35: *out = 0xff55; return 1; - case 0xff36: *out = 0xff56; return 1; - case 0xff37: *out = 0xff57; return 1; - case 0xff38: *out = 0xff58; return 1; - case 0xff39: *out = 0xff59; return 1; - case 0xff3a: *out = 0xff5a; return 1; - case 0x10400: *out = 0x10428; return 1; - case 0x10401: *out = 0x10429; return 1; - case 0x10402: *out = 0x1042a; return 1; - case 0x10403: *out = 0x1042b; return 1; - case 0x10404: *out = 0x1042c; return 1; - case 0x10405: *out = 0x1042d; return 1; - case 0x10406: *out = 0x1042e; return 1; - case 0x10407: *out = 0x1042f; return 1; - case 0x10408: *out = 0x10430; return 1; - case 0x10409: *out = 0x10431; return 1; - case 0x1040a: *out = 0x10432; return 1; - case 0x1040b: *out = 0x10433; return 1; - case 0x1040c: *out = 0x10434; return 1; - case 0x1040d: *out = 0x10435; return 1; - case 0x1040e: *out = 0x10436; return 1; - case 0x1040f: *out = 0x10437; return 1; - case 0x10410: *out = 0x10438; return 1; - case 0x10411: *out = 0x10439; return 1; - case 0x10412: *out = 0x1043a; return 1; - case 0x10413: *out = 0x1043b; return 1; - case 0x10414: *out = 0x1043c; return 1; - case 0x10415: *out = 0x1043d; return 1; - case 0x10416: *out = 0x1043e; return 1; - case 0x10417: *out = 0x1043f; return 1; - case 0x10418: *out = 0x10440; return 1; - case 0x10419: *out = 0x10441; return 1; - case 0x1041a: *out = 0x10442; return 1; - case 0x1041b: *out = 0x10443; return 1; - case 0x1041c: *out = 0x10444; return 1; - case 0x1041d: *out = 0x10445; return 1; - case 0x1041e: *out = 0x10446; return 1; - case 0x1041f: *out = 0x10447; return 1; - case 0x10420: *out = 0x10448; return 1; - case 0x10421: *out = 0x10449; return 1; - case 0x10422: *out = 0x1044a; return 1; - case 0x10423: *out = 0x1044b; return 1; - case 0x10424: *out = 0x1044c; return 1; - case 0x10425: *out = 0x1044d; return 1; - case 0x10426: *out = 0x1044e; return 1; - case 0x10427: *out = 0x1044f; return 1; - default: *out = in; return 1; - } -} - -wchar foldCaseSimple( wchar in ) -{ - switch( in ) - { - case 0x41: return 0x61; - case 0x42: return 0x62; - case 0x43: return 0x63; - case 0x44: return 0x64; - case 0x45: return 0x65; - case 0x46: return 0x66; - case 0x47: return 0x67; - case 0x48: return 0x68; - case 0x49: return 0x69; - case 0x4a: return 0x6a; - case 0x4b: return 0x6b; - case 0x4c: return 0x6c; - case 0x4d: return 0x6d; - case 0x4e: return 0x6e; - case 0x4f: return 0x6f; - case 0x50: return 0x70; - case 0x51: return 0x71; - case 0x52: return 0x72; - case 0x53: return 0x73; - case 0x54: return 0x74; - case 0x55: return 0x75; - case 0x56: return 0x76; - case 0x57: return 0x77; - case 0x58: return 0x78; - case 0x59: return 0x79; - case 0x5a: return 0x7a; - case 0xb5: return 0x3bc; - case 0xc0: return 0xe0; - case 0xc1: return 0xe1; - case 0xc2: return 0xe2; - case 0xc3: return 0xe3; - case 0xc4: return 0xe4; - case 0xc5: return 0xe5; - case 0xc6: return 0xe6; - case 0xc7: return 0xe7; - case 0xc8: return 0xe8; - case 0xc9: return 0xe9; - case 0xca: return 0xea; - case 0xcb: return 0xeb; - case 0xcc: return 0xec; - case 0xcd: return 0xed; - case 0xce: return 0xee; - case 0xcf: return 0xef; - case 0xd0: return 0xf0; - case 0xd1: return 0xf1; - case 0xd2: return 0xf2; - case 0xd3: return 0xf3; - case 0xd4: return 0xf4; - case 0xd5: return 0xf5; - case 0xd6: return 0xf6; - case 0xd8: return 0xf8; - case 0xd9: return 0xf9; - case 0xda: return 0xfa; - case 0xdb: return 0xfb; - case 0xdc: return 0xfc; - case 0xdd: return 0xfd; - case 0xde: return 0xfe; - case 0x100: return 0x101; - case 0x102: return 0x103; - case 0x104: return 0x105; - case 0x106: return 0x107; - case 0x108: return 0x109; - case 0x10a: return 0x10b; - case 0x10c: return 0x10d; - case 0x10e: return 0x10f; - case 0x110: return 0x111; - case 0x112: return 0x113; - case 0x114: return 0x115; - case 0x116: return 0x117; - case 0x118: return 0x119; - case 0x11a: return 0x11b; - case 0x11c: return 0x11d; - case 0x11e: return 0x11f; - case 0x120: return 0x121; - case 0x122: return 0x123; - case 0x124: return 0x125; - case 0x126: return 0x127; - case 0x128: return 0x129; - case 0x12a: return 0x12b; - case 0x12c: return 0x12d; - case 0x12e: return 0x12f; - case 0x132: return 0x133; - case 0x134: return 0x135; - case 0x136: return 0x137; - case 0x139: return 0x13a; - case 0x13b: return 0x13c; - case 0x13d: return 0x13e; - case 0x13f: return 0x140; - case 0x141: return 0x142; - case 0x143: return 0x144; - case 0x145: return 0x146; - case 0x147: return 0x148; - case 0x14a: return 0x14b; - case 0x14c: return 0x14d; - case 0x14e: return 0x14f; - case 0x150: return 0x151; - case 0x152: return 0x153; - case 0x154: return 0x155; - case 0x156: return 0x157; - case 0x158: return 0x159; - case 0x15a: return 0x15b; - case 0x15c: return 0x15d; - case 0x15e: return 0x15f; - case 0x160: return 0x161; - case 0x162: return 0x163; - case 0x164: return 0x165; - case 0x166: return 0x167; - case 0x168: return 0x169; - case 0x16a: return 0x16b; - case 0x16c: return 0x16d; - case 0x16e: return 0x16f; - case 0x170: return 0x171; - case 0x172: return 0x173; - case 0x174: return 0x175; - case 0x176: return 0x177; - case 0x178: return 0xff; - case 0x179: return 0x17a; - case 0x17b: return 0x17c; - case 0x17d: return 0x17e; - case 0x17f: return 0x73; - case 0x181: return 0x253; - case 0x182: return 0x183; - case 0x184: return 0x185; - case 0x186: return 0x254; - case 0x187: return 0x188; - case 0x189: return 0x256; - case 0x18a: return 0x257; - case 0x18b: return 0x18c; - case 0x18e: return 0x1dd; - case 0x18f: return 0x259; - case 0x190: return 0x25b; - case 0x191: return 0x192; - case 0x193: return 0x260; - case 0x194: return 0x263; - case 0x196: return 0x269; - case 0x197: return 0x268; - case 0x198: return 0x199; - case 0x19c: return 0x26f; - case 0x19d: return 0x272; - case 0x19f: return 0x275; - case 0x1a0: return 0x1a1; - case 0x1a2: return 0x1a3; - case 0x1a4: return 0x1a5; - case 0x1a6: return 0x280; - case 0x1a7: return 0x1a8; - case 0x1a9: return 0x283; - case 0x1ac: return 0x1ad; - case 0x1ae: return 0x288; - case 0x1af: return 0x1b0; - case 0x1b1: return 0x28a; - case 0x1b2: return 0x28b; - case 0x1b3: return 0x1b4; - case 0x1b5: return 0x1b6; - case 0x1b7: return 0x292; - case 0x1b8: return 0x1b9; - case 0x1bc: return 0x1bd; - case 0x1c4: return 0x1c6; - case 0x1c5: return 0x1c6; - case 0x1c7: return 0x1c9; - case 0x1c8: return 0x1c9; - case 0x1ca: return 0x1cc; - case 0x1cb: return 0x1cc; - case 0x1cd: return 0x1ce; - case 0x1cf: return 0x1d0; - case 0x1d1: return 0x1d2; - case 0x1d3: return 0x1d4; - case 0x1d5: return 0x1d6; - case 0x1d7: return 0x1d8; - case 0x1d9: return 0x1da; - case 0x1db: return 0x1dc; - case 0x1de: return 0x1df; - case 0x1e0: return 0x1e1; - case 0x1e2: return 0x1e3; - case 0x1e4: return 0x1e5; - case 0x1e6: return 0x1e7; - case 0x1e8: return 0x1e9; - case 0x1ea: return 0x1eb; - case 0x1ec: return 0x1ed; - case 0x1ee: return 0x1ef; - case 0x1f1: return 0x1f3; - case 0x1f2: return 0x1f3; - case 0x1f4: return 0x1f5; - case 0x1f6: return 0x195; - case 0x1f7: return 0x1bf; - case 0x1f8: return 0x1f9; - case 0x1fa: return 0x1fb; - case 0x1fc: return 0x1fd; - case 0x1fe: return 0x1ff; - case 0x200: return 0x201; - case 0x202: return 0x203; - case 0x204: return 0x205; - case 0x206: return 0x207; - case 0x208: return 0x209; - case 0x20a: return 0x20b; - case 0x20c: return 0x20d; - case 0x20e: return 0x20f; - case 0x210: return 0x211; - case 0x212: return 0x213; - case 0x214: return 0x215; - case 0x216: return 0x217; - case 0x218: return 0x219; - case 0x21a: return 0x21b; - case 0x21c: return 0x21d; - case 0x21e: return 0x21f; - case 0x220: return 0x19e; - case 0x222: return 0x223; - case 0x224: return 0x225; - case 0x226: return 0x227; - case 0x228: return 0x229; - case 0x22a: return 0x22b; - case 0x22c: return 0x22d; - case 0x22e: return 0x22f; - case 0x230: return 0x231; - case 0x232: return 0x233; - case 0x23a: return 0x2c65; - case 0x23b: return 0x23c; - case 0x23d: return 0x19a; - case 0x23e: return 0x2c66; - case 0x241: return 0x242; - case 0x243: return 0x180; - case 0x244: return 0x289; - case 0x245: return 0x28c; - case 0x246: return 0x247; - case 0x248: return 0x249; - case 0x24a: return 0x24b; - case 0x24c: return 0x24d; - case 0x24e: return 0x24f; - case 0x345: return 0x3b9; - case 0x370: return 0x371; - case 0x372: return 0x373; - case 0x376: return 0x377; - case 0x386: return 0x3ac; - case 0x388: return 0x3ad; - case 0x389: return 0x3ae; - case 0x38a: return 0x3af; - case 0x38c: return 0x3cc; - case 0x38e: return 0x3cd; - case 0x38f: return 0x3ce; - case 0x391: return 0x3b1; - case 0x392: return 0x3b2; - case 0x393: return 0x3b3; - case 0x394: return 0x3b4; - case 0x395: return 0x3b5; - case 0x396: return 0x3b6; - case 0x397: return 0x3b7; - case 0x398: return 0x3b8; - case 0x399: return 0x3b9; - case 0x39a: return 0x3ba; - case 0x39b: return 0x3bb; - case 0x39c: return 0x3bc; - case 0x39d: return 0x3bd; - case 0x39e: return 0x3be; - case 0x39f: return 0x3bf; - case 0x3a0: return 0x3c0; - case 0x3a1: return 0x3c1; - case 0x3a3: return 0x3c3; - case 0x3a4: return 0x3c4; - case 0x3a5: return 0x3c5; - case 0x3a6: return 0x3c6; - case 0x3a7: return 0x3c7; - case 0x3a8: return 0x3c8; - case 0x3a9: return 0x3c9; - case 0x3aa: return 0x3ca; - case 0x3ab: return 0x3cb; - case 0x3c2: return 0x3c3; - case 0x3cf: return 0x3d7; - case 0x3d0: return 0x3b2; - case 0x3d1: return 0x3b8; - case 0x3d5: return 0x3c6; - case 0x3d6: return 0x3c0; - case 0x3d8: return 0x3d9; - case 0x3da: return 0x3db; - case 0x3dc: return 0x3dd; - case 0x3de: return 0x3df; - case 0x3e0: return 0x3e1; - case 0x3e2: return 0x3e3; - case 0x3e4: return 0x3e5; - case 0x3e6: return 0x3e7; - case 0x3e8: return 0x3e9; - case 0x3ea: return 0x3eb; - case 0x3ec: return 0x3ed; - case 0x3ee: return 0x3ef; - case 0x3f0: return 0x3ba; - case 0x3f1: return 0x3c1; - case 0x3f4: return 0x3b8; - case 0x3f5: return 0x3b5; - case 0x3f7: return 0x3f8; - case 0x3f9: return 0x3f2; - case 0x3fa: return 0x3fb; - case 0x3fd: return 0x37b; - case 0x3fe: return 0x37c; - case 0x3ff: return 0x37d; - case 0x400: return 0x450; - case 0x401: return 0x451; - case 0x402: return 0x452; - case 0x403: return 0x453; - case 0x404: return 0x454; - case 0x405: return 0x455; - case 0x406: return 0x456; - case 0x407: return 0x457; - case 0x408: return 0x458; - case 0x409: return 0x459; - case 0x40a: return 0x45a; - case 0x40b: return 0x45b; - case 0x40c: return 0x45c; - case 0x40d: return 0x45d; - case 0x40e: return 0x45e; - case 0x40f: return 0x45f; - case 0x410: return 0x430; - case 0x411: return 0x431; - case 0x412: return 0x432; - case 0x413: return 0x433; - case 0x414: return 0x434; - case 0x415: return 0x435; - case 0x416: return 0x436; - case 0x417: return 0x437; - case 0x418: return 0x438; - case 0x419: return 0x439; - case 0x41a: return 0x43a; - case 0x41b: return 0x43b; - case 0x41c: return 0x43c; - case 0x41d: return 0x43d; - case 0x41e: return 0x43e; - case 0x41f: return 0x43f; - case 0x420: return 0x440; - case 0x421: return 0x441; - case 0x422: return 0x442; - case 0x423: return 0x443; - case 0x424: return 0x444; - case 0x425: return 0x445; - case 0x426: return 0x446; - case 0x427: return 0x447; - case 0x428: return 0x448; - case 0x429: return 0x449; - case 0x42a: return 0x44a; - case 0x42b: return 0x44b; - case 0x42c: return 0x44c; - case 0x42d: return 0x44d; - case 0x42e: return 0x44e; - case 0x42f: return 0x44f; - case 0x460: return 0x461; - case 0x462: return 0x463; - case 0x464: return 0x465; - case 0x466: return 0x467; - case 0x468: return 0x469; - case 0x46a: return 0x46b; - case 0x46c: return 0x46d; - case 0x46e: return 0x46f; - case 0x470: return 0x471; - case 0x472: return 0x473; - case 0x474: return 0x475; - case 0x476: return 0x477; - case 0x478: return 0x479; - case 0x47a: return 0x47b; - case 0x47c: return 0x47d; - case 0x47e: return 0x47f; - case 0x480: return 0x481; - case 0x48a: return 0x48b; - case 0x48c: return 0x48d; - case 0x48e: return 0x48f; - case 0x490: return 0x491; - case 0x492: return 0x493; - case 0x494: return 0x495; - case 0x496: return 0x497; - case 0x498: return 0x499; - case 0x49a: return 0x49b; - case 0x49c: return 0x49d; - case 0x49e: return 0x49f; - case 0x4a0: return 0x4a1; - case 0x4a2: return 0x4a3; - case 0x4a4: return 0x4a5; - case 0x4a6: return 0x4a7; - case 0x4a8: return 0x4a9; - case 0x4aa: return 0x4ab; - case 0x4ac: return 0x4ad; - case 0x4ae: return 0x4af; - case 0x4b0: return 0x4b1; - case 0x4b2: return 0x4b3; - case 0x4b4: return 0x4b5; - case 0x4b6: return 0x4b7; - case 0x4b8: return 0x4b9; - case 0x4ba: return 0x4bb; - case 0x4bc: return 0x4bd; - case 0x4be: return 0x4bf; - case 0x4c0: return 0x4cf; - case 0x4c1: return 0x4c2; - case 0x4c3: return 0x4c4; - case 0x4c5: return 0x4c6; - case 0x4c7: return 0x4c8; - case 0x4c9: return 0x4ca; - case 0x4cb: return 0x4cc; - case 0x4cd: return 0x4ce; - case 0x4d0: return 0x4d1; - case 0x4d2: return 0x4d3; - case 0x4d4: return 0x4d5; - case 0x4d6: return 0x4d7; - case 0x4d8: return 0x4d9; - case 0x4da: return 0x4db; - case 0x4dc: return 0x4dd; - case 0x4de: return 0x4df; - case 0x4e0: return 0x4e1; - case 0x4e2: return 0x4e3; - case 0x4e4: return 0x4e5; - case 0x4e6: return 0x4e7; - case 0x4e8: return 0x4e9; - case 0x4ea: return 0x4eb; - case 0x4ec: return 0x4ed; - case 0x4ee: return 0x4ef; - case 0x4f0: return 0x4f1; - case 0x4f2: return 0x4f3; - case 0x4f4: return 0x4f5; - case 0x4f6: return 0x4f7; - case 0x4f8: return 0x4f9; - case 0x4fa: return 0x4fb; - case 0x4fc: return 0x4fd; - case 0x4fe: return 0x4ff; - case 0x500: return 0x501; - case 0x502: return 0x503; - case 0x504: return 0x505; - case 0x506: return 0x507; - case 0x508: return 0x509; - case 0x50a: return 0x50b; - case 0x50c: return 0x50d; - case 0x50e: return 0x50f; - case 0x510: return 0x511; - case 0x512: return 0x513; - case 0x514: return 0x515; - case 0x516: return 0x517; - case 0x518: return 0x519; - case 0x51a: return 0x51b; - case 0x51c: return 0x51d; - case 0x51e: return 0x51f; - case 0x520: return 0x521; - case 0x522: return 0x523; - case 0x524: return 0x525; - case 0x531: return 0x561; - case 0x532: return 0x562; - case 0x533: return 0x563; - case 0x534: return 0x564; - case 0x535: return 0x565; - case 0x536: return 0x566; - case 0x537: return 0x567; - case 0x538: return 0x568; - case 0x539: return 0x569; - case 0x53a: return 0x56a; - case 0x53b: return 0x56b; - case 0x53c: return 0x56c; - case 0x53d: return 0x56d; - case 0x53e: return 0x56e; - case 0x53f: return 0x56f; - case 0x540: return 0x570; - case 0x541: return 0x571; - case 0x542: return 0x572; - case 0x543: return 0x573; - case 0x544: return 0x574; - case 0x545: return 0x575; - case 0x546: return 0x576; - case 0x547: return 0x577; - case 0x548: return 0x578; - case 0x549: return 0x579; - case 0x54a: return 0x57a; - case 0x54b: return 0x57b; - case 0x54c: return 0x57c; - case 0x54d: return 0x57d; - case 0x54e: return 0x57e; - case 0x54f: return 0x57f; - case 0x550: return 0x580; - case 0x551: return 0x581; - case 0x552: return 0x582; - case 0x553: return 0x583; - case 0x554: return 0x584; - case 0x555: return 0x585; - case 0x556: return 0x586; - case 0x10a0: return 0x2d00; - case 0x10a1: return 0x2d01; - case 0x10a2: return 0x2d02; - case 0x10a3: return 0x2d03; - case 0x10a4: return 0x2d04; - case 0x10a5: return 0x2d05; - case 0x10a6: return 0x2d06; - case 0x10a7: return 0x2d07; - case 0x10a8: return 0x2d08; - case 0x10a9: return 0x2d09; - case 0x10aa: return 0x2d0a; - case 0x10ab: return 0x2d0b; - case 0x10ac: return 0x2d0c; - case 0x10ad: return 0x2d0d; - case 0x10ae: return 0x2d0e; - case 0x10af: return 0x2d0f; - case 0x10b0: return 0x2d10; - case 0x10b1: return 0x2d11; - case 0x10b2: return 0x2d12; - case 0x10b3: return 0x2d13; - case 0x10b4: return 0x2d14; - case 0x10b5: return 0x2d15; - case 0x10b6: return 0x2d16; - case 0x10b7: return 0x2d17; - case 0x10b8: return 0x2d18; - case 0x10b9: return 0x2d19; - case 0x10ba: return 0x2d1a; - case 0x10bb: return 0x2d1b; - case 0x10bc: return 0x2d1c; - case 0x10bd: return 0x2d1d; - case 0x10be: return 0x2d1e; - case 0x10bf: return 0x2d1f; - case 0x10c0: return 0x2d20; - case 0x10c1: return 0x2d21; - case 0x10c2: return 0x2d22; - case 0x10c3: return 0x2d23; - case 0x10c4: return 0x2d24; - case 0x10c5: return 0x2d25; - case 0x1e00: return 0x1e01; - case 0x1e02: return 0x1e03; - case 0x1e04: return 0x1e05; - case 0x1e06: return 0x1e07; - case 0x1e08: return 0x1e09; - case 0x1e0a: return 0x1e0b; - case 0x1e0c: return 0x1e0d; - case 0x1e0e: return 0x1e0f; - case 0x1e10: return 0x1e11; - case 0x1e12: return 0x1e13; - case 0x1e14: return 0x1e15; - case 0x1e16: return 0x1e17; - case 0x1e18: return 0x1e19; - case 0x1e1a: return 0x1e1b; - case 0x1e1c: return 0x1e1d; - case 0x1e1e: return 0x1e1f; - case 0x1e20: return 0x1e21; - case 0x1e22: return 0x1e23; - case 0x1e24: return 0x1e25; - case 0x1e26: return 0x1e27; - case 0x1e28: return 0x1e29; - case 0x1e2a: return 0x1e2b; - case 0x1e2c: return 0x1e2d; - case 0x1e2e: return 0x1e2f; - case 0x1e30: return 0x1e31; - case 0x1e32: return 0x1e33; - case 0x1e34: return 0x1e35; - case 0x1e36: return 0x1e37; - case 0x1e38: return 0x1e39; - case 0x1e3a: return 0x1e3b; - case 0x1e3c: return 0x1e3d; - case 0x1e3e: return 0x1e3f; - case 0x1e40: return 0x1e41; - case 0x1e42: return 0x1e43; - case 0x1e44: return 0x1e45; - case 0x1e46: return 0x1e47; - case 0x1e48: return 0x1e49; - case 0x1e4a: return 0x1e4b; - case 0x1e4c: return 0x1e4d; - case 0x1e4e: return 0x1e4f; - case 0x1e50: return 0x1e51; - case 0x1e52: return 0x1e53; - case 0x1e54: return 0x1e55; - case 0x1e56: return 0x1e57; - case 0x1e58: return 0x1e59; - case 0x1e5a: return 0x1e5b; - case 0x1e5c: return 0x1e5d; - case 0x1e5e: return 0x1e5f; - case 0x1e60: return 0x1e61; - case 0x1e62: return 0x1e63; - case 0x1e64: return 0x1e65; - case 0x1e66: return 0x1e67; - case 0x1e68: return 0x1e69; - case 0x1e6a: return 0x1e6b; - case 0x1e6c: return 0x1e6d; - case 0x1e6e: return 0x1e6f; - case 0x1e70: return 0x1e71; - case 0x1e72: return 0x1e73; - case 0x1e74: return 0x1e75; - case 0x1e76: return 0x1e77; - case 0x1e78: return 0x1e79; - case 0x1e7a: return 0x1e7b; - case 0x1e7c: return 0x1e7d; - case 0x1e7e: return 0x1e7f; - case 0x1e80: return 0x1e81; - case 0x1e82: return 0x1e83; - case 0x1e84: return 0x1e85; - case 0x1e86: return 0x1e87; - case 0x1e88: return 0x1e89; - case 0x1e8a: return 0x1e8b; - case 0x1e8c: return 0x1e8d; - case 0x1e8e: return 0x1e8f; - case 0x1e90: return 0x1e91; - case 0x1e92: return 0x1e93; - case 0x1e94: return 0x1e95; - case 0x1e9b: return 0x1e61; - case 0x1e9e: return 0xdf; - case 0x1ea0: return 0x1ea1; - case 0x1ea2: return 0x1ea3; - case 0x1ea4: return 0x1ea5; - case 0x1ea6: return 0x1ea7; - case 0x1ea8: return 0x1ea9; - case 0x1eaa: return 0x1eab; - case 0x1eac: return 0x1ead; - case 0x1eae: return 0x1eaf; - case 0x1eb0: return 0x1eb1; - case 0x1eb2: return 0x1eb3; - case 0x1eb4: return 0x1eb5; - case 0x1eb6: return 0x1eb7; - case 0x1eb8: return 0x1eb9; - case 0x1eba: return 0x1ebb; - case 0x1ebc: return 0x1ebd; - case 0x1ebe: return 0x1ebf; - case 0x1ec0: return 0x1ec1; - case 0x1ec2: return 0x1ec3; - case 0x1ec4: return 0x1ec5; - case 0x1ec6: return 0x1ec7; - case 0x1ec8: return 0x1ec9; - case 0x1eca: return 0x1ecb; - case 0x1ecc: return 0x1ecd; - case 0x1ece: return 0x1ecf; - case 0x1ed0: return 0x1ed1; - case 0x1ed2: return 0x1ed3; - case 0x1ed4: return 0x1ed5; - case 0x1ed6: return 0x1ed7; - case 0x1ed8: return 0x1ed9; - case 0x1eda: return 0x1edb; - case 0x1edc: return 0x1edd; - case 0x1ede: return 0x1edf; - case 0x1ee0: return 0x1ee1; - case 0x1ee2: return 0x1ee3; - case 0x1ee4: return 0x1ee5; - case 0x1ee6: return 0x1ee7; - case 0x1ee8: return 0x1ee9; - case 0x1eea: return 0x1eeb; - case 0x1eec: return 0x1eed; - case 0x1eee: return 0x1eef; - case 0x1ef0: return 0x1ef1; - case 0x1ef2: return 0x1ef3; - case 0x1ef4: return 0x1ef5; - case 0x1ef6: return 0x1ef7; - case 0x1ef8: return 0x1ef9; - case 0x1efa: return 0x1efb; - case 0x1efc: return 0x1efd; - case 0x1efe: return 0x1eff; - case 0x1f08: return 0x1f00; - case 0x1f09: return 0x1f01; - case 0x1f0a: return 0x1f02; - case 0x1f0b: return 0x1f03; - case 0x1f0c: return 0x1f04; - case 0x1f0d: return 0x1f05; - case 0x1f0e: return 0x1f06; - case 0x1f0f: return 0x1f07; - case 0x1f18: return 0x1f10; - case 0x1f19: return 0x1f11; - case 0x1f1a: return 0x1f12; - case 0x1f1b: return 0x1f13; - case 0x1f1c: return 0x1f14; - case 0x1f1d: return 0x1f15; - case 0x1f28: return 0x1f20; - case 0x1f29: return 0x1f21; - case 0x1f2a: return 0x1f22; - case 0x1f2b: return 0x1f23; - case 0x1f2c: return 0x1f24; - case 0x1f2d: return 0x1f25; - case 0x1f2e: return 0x1f26; - case 0x1f2f: return 0x1f27; - case 0x1f38: return 0x1f30; - case 0x1f39: return 0x1f31; - case 0x1f3a: return 0x1f32; - case 0x1f3b: return 0x1f33; - case 0x1f3c: return 0x1f34; - case 0x1f3d: return 0x1f35; - case 0x1f3e: return 0x1f36; - case 0x1f3f: return 0x1f37; - case 0x1f48: return 0x1f40; - case 0x1f49: return 0x1f41; - case 0x1f4a: return 0x1f42; - case 0x1f4b: return 0x1f43; - case 0x1f4c: return 0x1f44; - case 0x1f4d: return 0x1f45; - case 0x1f59: return 0x1f51; - case 0x1f5b: return 0x1f53; - case 0x1f5d: return 0x1f55; - case 0x1f5f: return 0x1f57; - case 0x1f68: return 0x1f60; - case 0x1f69: return 0x1f61; - case 0x1f6a: return 0x1f62; - case 0x1f6b: return 0x1f63; - case 0x1f6c: return 0x1f64; - case 0x1f6d: return 0x1f65; - case 0x1f6e: return 0x1f66; - case 0x1f6f: return 0x1f67; - case 0x1f88: return 0x1f80; - case 0x1f89: return 0x1f81; - case 0x1f8a: return 0x1f82; - case 0x1f8b: return 0x1f83; - case 0x1f8c: return 0x1f84; - case 0x1f8d: return 0x1f85; - case 0x1f8e: return 0x1f86; - case 0x1f8f: return 0x1f87; - case 0x1f98: return 0x1f90; - case 0x1f99: return 0x1f91; - case 0x1f9a: return 0x1f92; - case 0x1f9b: return 0x1f93; - case 0x1f9c: return 0x1f94; - case 0x1f9d: return 0x1f95; - case 0x1f9e: return 0x1f96; - case 0x1f9f: return 0x1f97; - case 0x1fa8: return 0x1fa0; - case 0x1fa9: return 0x1fa1; - case 0x1faa: return 0x1fa2; - case 0x1fab: return 0x1fa3; - case 0x1fac: return 0x1fa4; - case 0x1fad: return 0x1fa5; - case 0x1fae: return 0x1fa6; - case 0x1faf: return 0x1fa7; - case 0x1fb8: return 0x1fb0; - case 0x1fb9: return 0x1fb1; - case 0x1fba: return 0x1f70; - case 0x1fbb: return 0x1f71; - case 0x1fbc: return 0x1fb3; - case 0x1fbe: return 0x3b9; - case 0x1fc8: return 0x1f72; - case 0x1fc9: return 0x1f73; - case 0x1fca: return 0x1f74; - case 0x1fcb: return 0x1f75; - case 0x1fcc: return 0x1fc3; - case 0x1fd8: return 0x1fd0; - case 0x1fd9: return 0x1fd1; - case 0x1fda: return 0x1f76; - case 0x1fdb: return 0x1f77; - case 0x1fe8: return 0x1fe0; - case 0x1fe9: return 0x1fe1; - case 0x1fea: return 0x1f7a; - case 0x1feb: return 0x1f7b; - case 0x1fec: return 0x1fe5; - case 0x1ff8: return 0x1f78; - case 0x1ff9: return 0x1f79; - case 0x1ffa: return 0x1f7c; - case 0x1ffb: return 0x1f7d; - case 0x1ffc: return 0x1ff3; - case 0x2126: return 0x3c9; - case 0x212a: return 0x6b; - case 0x212b: return 0xe5; - case 0x2132: return 0x214e; - case 0x2160: return 0x2170; - case 0x2161: return 0x2171; - case 0x2162: return 0x2172; - case 0x2163: return 0x2173; - case 0x2164: return 0x2174; - case 0x2165: return 0x2175; - case 0x2166: return 0x2176; - case 0x2167: return 0x2177; - case 0x2168: return 0x2178; - case 0x2169: return 0x2179; - case 0x216a: return 0x217a; - case 0x216b: return 0x217b; - case 0x216c: return 0x217c; - case 0x216d: return 0x217d; - case 0x216e: return 0x217e; - case 0x216f: return 0x217f; - case 0x2183: return 0x2184; - case 0x24b6: return 0x24d0; - case 0x24b7: return 0x24d1; - case 0x24b8: return 0x24d2; - case 0x24b9: return 0x24d3; - case 0x24ba: return 0x24d4; - case 0x24bb: return 0x24d5; - case 0x24bc: return 0x24d6; - case 0x24bd: return 0x24d7; - case 0x24be: return 0x24d8; - case 0x24bf: return 0x24d9; - case 0x24c0: return 0x24da; - case 0x24c1: return 0x24db; - case 0x24c2: return 0x24dc; - case 0x24c3: return 0x24dd; - case 0x24c4: return 0x24de; - case 0x24c5: return 0x24df; - case 0x24c6: return 0x24e0; - case 0x24c7: return 0x24e1; - case 0x24c8: return 0x24e2; - case 0x24c9: return 0x24e3; - case 0x24ca: return 0x24e4; - case 0x24cb: return 0x24e5; - case 0x24cc: return 0x24e6; - case 0x24cd: return 0x24e7; - case 0x24ce: return 0x24e8; - case 0x24cf: return 0x24e9; - case 0x2c00: return 0x2c30; - case 0x2c01: return 0x2c31; - case 0x2c02: return 0x2c32; - case 0x2c03: return 0x2c33; - case 0x2c04: return 0x2c34; - case 0x2c05: return 0x2c35; - case 0x2c06: return 0x2c36; - case 0x2c07: return 0x2c37; - case 0x2c08: return 0x2c38; - case 0x2c09: return 0x2c39; - case 0x2c0a: return 0x2c3a; - case 0x2c0b: return 0x2c3b; - case 0x2c0c: return 0x2c3c; - case 0x2c0d: return 0x2c3d; - case 0x2c0e: return 0x2c3e; - case 0x2c0f: return 0x2c3f; - case 0x2c10: return 0x2c40; - case 0x2c11: return 0x2c41; - case 0x2c12: return 0x2c42; - case 0x2c13: return 0x2c43; - case 0x2c14: return 0x2c44; - case 0x2c15: return 0x2c45; - case 0x2c16: return 0x2c46; - case 0x2c17: return 0x2c47; - case 0x2c18: return 0x2c48; - case 0x2c19: return 0x2c49; - case 0x2c1a: return 0x2c4a; - case 0x2c1b: return 0x2c4b; - case 0x2c1c: return 0x2c4c; - case 0x2c1d: return 0x2c4d; - case 0x2c1e: return 0x2c4e; - case 0x2c1f: return 0x2c4f; - case 0x2c20: return 0x2c50; - case 0x2c21: return 0x2c51; - case 0x2c22: return 0x2c52; - case 0x2c23: return 0x2c53; - case 0x2c24: return 0x2c54; - case 0x2c25: return 0x2c55; - case 0x2c26: return 0x2c56; - case 0x2c27: return 0x2c57; - case 0x2c28: return 0x2c58; - case 0x2c29: return 0x2c59; - case 0x2c2a: return 0x2c5a; - case 0x2c2b: return 0x2c5b; - case 0x2c2c: return 0x2c5c; - case 0x2c2d: return 0x2c5d; - case 0x2c2e: return 0x2c5e; - case 0x2c60: return 0x2c61; - case 0x2c62: return 0x26b; - case 0x2c63: return 0x1d7d; - case 0x2c64: return 0x27d; - case 0x2c67: return 0x2c68; - case 0x2c69: return 0x2c6a; - case 0x2c6b: return 0x2c6c; - case 0x2c6d: return 0x251; - case 0x2c6e: return 0x271; - case 0x2c6f: return 0x250; - case 0x2c70: return 0x252; - case 0x2c72: return 0x2c73; - case 0x2c75: return 0x2c76; - case 0x2c7e: return 0x23f; - case 0x2c7f: return 0x240; - case 0x2c80: return 0x2c81; - case 0x2c82: return 0x2c83; - case 0x2c84: return 0x2c85; - case 0x2c86: return 0x2c87; - case 0x2c88: return 0x2c89; - case 0x2c8a: return 0x2c8b; - case 0x2c8c: return 0x2c8d; - case 0x2c8e: return 0x2c8f; - case 0x2c90: return 0x2c91; - case 0x2c92: return 0x2c93; - case 0x2c94: return 0x2c95; - case 0x2c96: return 0x2c97; - case 0x2c98: return 0x2c99; - case 0x2c9a: return 0x2c9b; - case 0x2c9c: return 0x2c9d; - case 0x2c9e: return 0x2c9f; - case 0x2ca0: return 0x2ca1; - case 0x2ca2: return 0x2ca3; - case 0x2ca4: return 0x2ca5; - case 0x2ca6: return 0x2ca7; - case 0x2ca8: return 0x2ca9; - case 0x2caa: return 0x2cab; - case 0x2cac: return 0x2cad; - case 0x2cae: return 0x2caf; - case 0x2cb0: return 0x2cb1; - case 0x2cb2: return 0x2cb3; - case 0x2cb4: return 0x2cb5; - case 0x2cb6: return 0x2cb7; - case 0x2cb8: return 0x2cb9; - case 0x2cba: return 0x2cbb; - case 0x2cbc: return 0x2cbd; - case 0x2cbe: return 0x2cbf; - case 0x2cc0: return 0x2cc1; - case 0x2cc2: return 0x2cc3; - case 0x2cc4: return 0x2cc5; - case 0x2cc6: return 0x2cc7; - case 0x2cc8: return 0x2cc9; - case 0x2cca: return 0x2ccb; - case 0x2ccc: return 0x2ccd; - case 0x2cce: return 0x2ccf; - case 0x2cd0: return 0x2cd1; - case 0x2cd2: return 0x2cd3; - case 0x2cd4: return 0x2cd5; - case 0x2cd6: return 0x2cd7; - case 0x2cd8: return 0x2cd9; - case 0x2cda: return 0x2cdb; - case 0x2cdc: return 0x2cdd; - case 0x2cde: return 0x2cdf; - case 0x2ce0: return 0x2ce1; - case 0x2ce2: return 0x2ce3; - case 0x2ceb: return 0x2cec; - case 0x2ced: return 0x2cee; - case 0xa640: return 0xa641; - case 0xa642: return 0xa643; - case 0xa644: return 0xa645; - case 0xa646: return 0xa647; - case 0xa648: return 0xa649; - case 0xa64a: return 0xa64b; - case 0xa64c: return 0xa64d; - case 0xa64e: return 0xa64f; - case 0xa650: return 0xa651; - case 0xa652: return 0xa653; - case 0xa654: return 0xa655; - case 0xa656: return 0xa657; - case 0xa658: return 0xa659; - case 0xa65a: return 0xa65b; - case 0xa65c: return 0xa65d; - case 0xa65e: return 0xa65f; - case 0xa662: return 0xa663; - case 0xa664: return 0xa665; - case 0xa666: return 0xa667; - case 0xa668: return 0xa669; - case 0xa66a: return 0xa66b; - case 0xa66c: return 0xa66d; - case 0xa680: return 0xa681; - case 0xa682: return 0xa683; - case 0xa684: return 0xa685; - case 0xa686: return 0xa687; - case 0xa688: return 0xa689; - case 0xa68a: return 0xa68b; - case 0xa68c: return 0xa68d; - case 0xa68e: return 0xa68f; - case 0xa690: return 0xa691; - case 0xa692: return 0xa693; - case 0xa694: return 0xa695; - case 0xa696: return 0xa697; - case 0xa722: return 0xa723; - case 0xa724: return 0xa725; - case 0xa726: return 0xa727; - case 0xa728: return 0xa729; - case 0xa72a: return 0xa72b; - case 0xa72c: return 0xa72d; - case 0xa72e: return 0xa72f; - case 0xa732: return 0xa733; - case 0xa734: return 0xa735; - case 0xa736: return 0xa737; - case 0xa738: return 0xa739; - case 0xa73a: return 0xa73b; - case 0xa73c: return 0xa73d; - case 0xa73e: return 0xa73f; - case 0xa740: return 0xa741; - case 0xa742: return 0xa743; - case 0xa744: return 0xa745; - case 0xa746: return 0xa747; - case 0xa748: return 0xa749; - case 0xa74a: return 0xa74b; - case 0xa74c: return 0xa74d; - case 0xa74e: return 0xa74f; - case 0xa750: return 0xa751; - case 0xa752: return 0xa753; - case 0xa754: return 0xa755; - case 0xa756: return 0xa757; - case 0xa758: return 0xa759; - case 0xa75a: return 0xa75b; - case 0xa75c: return 0xa75d; - case 0xa75e: return 0xa75f; - case 0xa760: return 0xa761; - case 0xa762: return 0xa763; - case 0xa764: return 0xa765; - case 0xa766: return 0xa767; - case 0xa768: return 0xa769; - case 0xa76a: return 0xa76b; - case 0xa76c: return 0xa76d; - case 0xa76e: return 0xa76f; - case 0xa779: return 0xa77a; - case 0xa77b: return 0xa77c; - case 0xa77d: return 0x1d79; - case 0xa77e: return 0xa77f; - case 0xa780: return 0xa781; - case 0xa782: return 0xa783; - case 0xa784: return 0xa785; - case 0xa786: return 0xa787; - case 0xa78b: return 0xa78c; - case 0xff21: return 0xff41; - case 0xff22: return 0xff42; - case 0xff23: return 0xff43; - case 0xff24: return 0xff44; - case 0xff25: return 0xff45; - case 0xff26: return 0xff46; - case 0xff27: return 0xff47; - case 0xff28: return 0xff48; - case 0xff29: return 0xff49; - case 0xff2a: return 0xff4a; - case 0xff2b: return 0xff4b; - case 0xff2c: return 0xff4c; - case 0xff2d: return 0xff4d; - case 0xff2e: return 0xff4e; - case 0xff2f: return 0xff4f; - case 0xff30: return 0xff50; - case 0xff31: return 0xff51; - case 0xff32: return 0xff52; - case 0xff33: return 0xff53; - case 0xff34: return 0xff54; - case 0xff35: return 0xff55; - case 0xff36: return 0xff56; - case 0xff37: return 0xff57; - case 0xff38: return 0xff58; - case 0xff39: return 0xff59; - case 0xff3a: return 0xff5a; - case 0x10400: return 0x10428; - case 0x10401: return 0x10429; - case 0x10402: return 0x1042a; - case 0x10403: return 0x1042b; - case 0x10404: return 0x1042c; - case 0x10405: return 0x1042d; - case 0x10406: return 0x1042e; - case 0x10407: return 0x1042f; - case 0x10408: return 0x10430; - case 0x10409: return 0x10431; - case 0x1040a: return 0x10432; - case 0x1040b: return 0x10433; - case 0x1040c: return 0x10434; - case 0x1040d: return 0x10435; - case 0x1040e: return 0x10436; - case 0x1040f: return 0x10437; - case 0x10410: return 0x10438; - case 0x10411: return 0x10439; - case 0x10412: return 0x1043a; - case 0x10413: return 0x1043b; - case 0x10414: return 0x1043c; - case 0x10415: return 0x1043d; - case 0x10416: return 0x1043e; - case 0x10417: return 0x1043f; - case 0x10418: return 0x10440; - case 0x10419: return 0x10441; - case 0x1041a: return 0x10442; - case 0x1041b: return 0x10443; - case 0x1041c: return 0x10444; - case 0x1041d: return 0x10445; - case 0x1041e: return 0x10446; - case 0x1041f: return 0x10447; - case 0x10420: return 0x10448; - case 0x10421: return 0x10449; - case 0x10422: return 0x1044a; - case 0x10423: return 0x1044b; - case 0x10424: return 0x1044c; - case 0x10425: return 0x1044d; - case 0x10426: return 0x1044e; - case 0x10427: return 0x1044f; - default: return in; - } -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/inc_diacritic_folding.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/inc_diacritic_folding.hh deleted file mode 100644 index cf3c98f9ab..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/inc_diacritic_folding.hh +++ /dev/null @@ -1,4854 +0,0 @@ -// This file was generated automatically. Do not edit directly. - -enum { foldDiacriticMaxIn = 3 }; - -wchar foldDiacritic( wchar const * in, size_t size, size_t & consumed ) -{ - if ( size > 0 ) - { - switch( in[ 0 ] ) - { - case 0x41: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x41; - case 0x301: - consumed = 2; return 0x41; - case 0x302: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x41; - case 0x301: - consumed = 3; return 0x41; - case 0x303: - consumed = 3; return 0x41; - case 0x309: - consumed = 3; return 0x41; - } - } - consumed = 2; return 0x41; - case 0x303: - consumed = 2; return 0x41; - case 0x304: - consumed = 2; return 0x41; - case 0x306: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x41; - case 0x301: - consumed = 3; return 0x41; - case 0x303: - consumed = 3; return 0x41; - case 0x309: - consumed = 3; return 0x41; - } - } - consumed = 2; return 0x41; - case 0x307: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x41; - } - } - consumed = 2; return 0x41; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x41; - } - } - consumed = 2; return 0x41; - case 0x309: - consumed = 2; return 0x41; - case 0x30a: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x41; - } - } - consumed = 2; return 0x41; - case 0x30c: - consumed = 2; return 0x41; - case 0x30f: - consumed = 2; return 0x41; - case 0x311: - consumed = 2; return 0x41; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x302: - consumed = 3; return 0x41; - case 0x306: - consumed = 3; return 0x41; - } - } - consumed = 2; return 0x41; - case 0x325: - consumed = 2; return 0x41; - case 0x328: - consumed = 2; return 0x41; - } - } - consumed = 1; return *in; - case 0x42: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x42; - case 0x323: - consumed = 2; return 0x42; - case 0x331: - consumed = 2; return 0x42; - } - } - consumed = 1; return *in; - case 0x43: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x43; - case 0x302: - consumed = 2; return 0x43; - case 0x307: - consumed = 2; return 0x43; - case 0x30c: - consumed = 2; return 0x43; - case 0x327: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x43; - } - } - consumed = 2; return 0x43; - } - } - consumed = 1; return *in; - case 0x44: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x44; - case 0x30c: - consumed = 2; return 0x44; - case 0x323: - consumed = 2; return 0x44; - case 0x327: - consumed = 2; return 0x44; - case 0x32d: - consumed = 2; return 0x44; - case 0x331: - consumed = 2; return 0x44; - } - } - consumed = 1; return *in; - case 0x45: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x45; - case 0x301: - consumed = 2; return 0x45; - case 0x302: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x45; - case 0x301: - consumed = 3; return 0x45; - case 0x303: - consumed = 3; return 0x45; - case 0x309: - consumed = 3; return 0x45; - } - } - consumed = 2; return 0x45; - case 0x303: - consumed = 2; return 0x45; - case 0x304: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x45; - case 0x301: - consumed = 3; return 0x45; - } - } - consumed = 2; return 0x45; - case 0x306: - consumed = 2; return 0x45; - case 0x307: - consumed = 2; return 0x45; - case 0x308: - consumed = 2; return 0x45; - case 0x309: - consumed = 2; return 0x45; - case 0x30c: - consumed = 2; return 0x45; - case 0x30f: - consumed = 2; return 0x45; - case 0x311: - consumed = 2; return 0x45; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x302: - consumed = 3; return 0x45; - } - } - consumed = 2; return 0x45; - case 0x327: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x306: - consumed = 3; return 0x45; - } - } - consumed = 2; return 0x45; - case 0x328: - consumed = 2; return 0x45; - case 0x32d: - consumed = 2; return 0x45; - case 0x330: - consumed = 2; return 0x45; - } - } - consumed = 1; return *in; - case 0x46: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x46; - } - } - consumed = 1; return *in; - case 0x47: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x47; - case 0x302: - consumed = 2; return 0x47; - case 0x304: - consumed = 2; return 0x47; - case 0x306: - consumed = 2; return 0x47; - case 0x307: - consumed = 2; return 0x47; - case 0x30c: - consumed = 2; return 0x47; - case 0x327: - consumed = 2; return 0x47; - } - } - consumed = 1; return *in; - case 0x48: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x302: - consumed = 2; return 0x48; - case 0x307: - consumed = 2; return 0x48; - case 0x308: - consumed = 2; return 0x48; - case 0x30c: - consumed = 2; return 0x48; - case 0x323: - consumed = 2; return 0x48; - case 0x327: - consumed = 2; return 0x48; - case 0x32e: - consumed = 2; return 0x48; - } - } - consumed = 1; return *in; - case 0x49: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x49; - case 0x301: - consumed = 2; return 0x49; - case 0x302: - consumed = 2; return 0x49; - case 0x303: - consumed = 2; return 0x49; - case 0x304: - consumed = 2; return 0x49; - case 0x306: - consumed = 2; return 0x49; - case 0x307: - consumed = 2; return 0x49; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x49; - } - } - consumed = 2; return 0x49; - case 0x309: - consumed = 2; return 0x49; - case 0x30c: - consumed = 2; return 0x49; - case 0x30f: - consumed = 2; return 0x49; - case 0x311: - consumed = 2; return 0x49; - case 0x323: - consumed = 2; return 0x49; - case 0x328: - consumed = 2; return 0x49; - case 0x330: - consumed = 2; return 0x49; - } - } - consumed = 1; return *in; - case 0x4a: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x302: - consumed = 2; return 0x4a; - } - } - consumed = 1; return *in; - case 0x4b: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x4b; - case 0x30c: - consumed = 2; return 0x4b; - case 0x323: - consumed = 2; return 0x4b; - case 0x327: - consumed = 2; return 0x4b; - case 0x331: - consumed = 2; return 0x4b; - } - } - consumed = 1; return *in; - case 0x4c: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x4c; - case 0x30c: - consumed = 2; return 0x4c; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x4c; - } - } - consumed = 2; return 0x4c; - case 0x327: - consumed = 2; return 0x4c; - case 0x32d: - consumed = 2; return 0x4c; - case 0x331: - consumed = 2; return 0x4c; - } - } - consumed = 1; return *in; - case 0x4d: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x4d; - case 0x307: - consumed = 2; return 0x4d; - case 0x323: - consumed = 2; return 0x4d; - } - } - consumed = 1; return *in; - case 0x4e: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x4e; - case 0x301: - consumed = 2; return 0x4e; - case 0x303: - consumed = 2; return 0x4e; - case 0x307: - consumed = 2; return 0x4e; - case 0x30c: - consumed = 2; return 0x4e; - case 0x323: - consumed = 2; return 0x4e; - case 0x327: - consumed = 2; return 0x4e; - case 0x32d: - consumed = 2; return 0x4e; - case 0x331: - consumed = 2; return 0x4e; - } - } - consumed = 1; return *in; - case 0x4f: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x4f; - case 0x301: - consumed = 2; return 0x4f; - case 0x302: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x4f; - case 0x301: - consumed = 3; return 0x4f; - case 0x303: - consumed = 3; return 0x4f; - case 0x309: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - case 0x303: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x4f; - case 0x304: - consumed = 3; return 0x4f; - case 0x308: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - case 0x304: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x4f; - case 0x301: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - case 0x306: - consumed = 2; return 0x4f; - case 0x307: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - case 0x309: - consumed = 2; return 0x4f; - case 0x30b: - consumed = 2; return 0x4f; - case 0x30c: - consumed = 2; return 0x4f; - case 0x30f: - consumed = 2; return 0x4f; - case 0x311: - consumed = 2; return 0x4f; - case 0x31b: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x4f; - case 0x301: - consumed = 3; return 0x4f; - case 0x303: - consumed = 3; return 0x4f; - case 0x309: - consumed = 3; return 0x4f; - case 0x323: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x302: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - case 0x328: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x4f; - } - } - consumed = 2; return 0x4f; - } - } - consumed = 1; return *in; - case 0x50: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x50; - case 0x307: - consumed = 2; return 0x50; - } - } - consumed = 1; return *in; - case 0x52: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x52; - case 0x307: - consumed = 2; return 0x52; - case 0x30c: - consumed = 2; return 0x52; - case 0x30f: - consumed = 2; return 0x52; - case 0x311: - consumed = 2; return 0x52; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x52; - } - } - consumed = 2; return 0x52; - case 0x327: - consumed = 2; return 0x52; - case 0x331: - consumed = 2; return 0x52; - } - } - consumed = 1; return *in; - case 0x53: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x307: - consumed = 3; return 0x53; - } - } - consumed = 2; return 0x53; - case 0x302: - consumed = 2; return 0x53; - case 0x307: - consumed = 2; return 0x53; - case 0x30c: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x307: - consumed = 3; return 0x53; - } - } - consumed = 2; return 0x53; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x307: - consumed = 3; return 0x53; - } - } - consumed = 2; return 0x53; - case 0x326: - consumed = 2; return 0x53; - case 0x327: - consumed = 2; return 0x53; - } - } - consumed = 1; return *in; - case 0x54: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x54; - case 0x30c: - consumed = 2; return 0x54; - case 0x323: - consumed = 2; return 0x54; - case 0x326: - consumed = 2; return 0x54; - case 0x327: - consumed = 2; return 0x54; - case 0x32d: - consumed = 2; return 0x54; - case 0x331: - consumed = 2; return 0x54; - } - } - consumed = 1; return *in; - case 0x55: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x55; - case 0x301: - consumed = 2; return 0x55; - case 0x302: - consumed = 2; return 0x55; - case 0x303: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x55; - } - } - consumed = 2; return 0x55; - case 0x304: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x308: - consumed = 3; return 0x55; - } - } - consumed = 2; return 0x55; - case 0x306: - consumed = 2; return 0x55; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x55; - case 0x301: - consumed = 3; return 0x55; - case 0x304: - consumed = 3; return 0x55; - case 0x30c: - consumed = 3; return 0x55; - } - } - consumed = 2; return 0x55; - case 0x309: - consumed = 2; return 0x55; - case 0x30a: - consumed = 2; return 0x55; - case 0x30b: - consumed = 2; return 0x55; - case 0x30c: - consumed = 2; return 0x55; - case 0x30f: - consumed = 2; return 0x55; - case 0x311: - consumed = 2; return 0x55; - case 0x31b: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x55; - case 0x301: - consumed = 3; return 0x55; - case 0x303: - consumed = 3; return 0x55; - case 0x309: - consumed = 3; return 0x55; - case 0x323: - consumed = 3; return 0x55; - } - } - consumed = 2; return 0x55; - case 0x323: - consumed = 2; return 0x55; - case 0x324: - consumed = 2; return 0x55; - case 0x328: - consumed = 2; return 0x55; - case 0x32d: - consumed = 2; return 0x55; - case 0x330: - consumed = 2; return 0x55; - } - } - consumed = 1; return *in; - case 0x56: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x303: - consumed = 2; return 0x56; - case 0x323: - consumed = 2; return 0x56; - } - } - consumed = 1; return *in; - case 0x57: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x57; - case 0x301: - consumed = 2; return 0x57; - case 0x302: - consumed = 2; return 0x57; - case 0x307: - consumed = 2; return 0x57; - case 0x308: - consumed = 2; return 0x57; - case 0x323: - consumed = 2; return 0x57; - } - } - consumed = 1; return *in; - case 0x58: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x58; - case 0x308: - consumed = 2; return 0x58; - } - } - consumed = 1; return *in; - case 0x59: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x59; - case 0x301: - consumed = 2; return 0x59; - case 0x302: - consumed = 2; return 0x59; - case 0x303: - consumed = 2; return 0x59; - case 0x304: - consumed = 2; return 0x59; - case 0x307: - consumed = 2; return 0x59; - case 0x308: - consumed = 2; return 0x59; - case 0x309: - consumed = 2; return 0x59; - case 0x323: - consumed = 2; return 0x59; - } - } - consumed = 1; return *in; - case 0x5a: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x5a; - case 0x302: - consumed = 2; return 0x5a; - case 0x307: - consumed = 2; return 0x5a; - case 0x30c: - consumed = 2; return 0x5a; - case 0x323: - consumed = 2; return 0x5a; - case 0x331: - consumed = 2; return 0x5a; - } - } - consumed = 1; return *in; - case 0x61: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x61; - case 0x301: - consumed = 2; return 0x61; - case 0x302: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x61; - case 0x301: - consumed = 3; return 0x61; - case 0x303: - consumed = 3; return 0x61; - case 0x309: - consumed = 3; return 0x61; - } - } - consumed = 2; return 0x61; - case 0x303: - consumed = 2; return 0x61; - case 0x304: - consumed = 2; return 0x61; - case 0x306: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x61; - case 0x301: - consumed = 3; return 0x61; - case 0x303: - consumed = 3; return 0x61; - case 0x309: - consumed = 3; return 0x61; - } - } - consumed = 2; return 0x61; - case 0x307: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x61; - } - } - consumed = 2; return 0x61; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x61; - } - } - consumed = 2; return 0x61; - case 0x309: - consumed = 2; return 0x61; - case 0x30a: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x61; - } - } - consumed = 2; return 0x61; - case 0x30c: - consumed = 2; return 0x61; - case 0x30f: - consumed = 2; return 0x61; - case 0x311: - consumed = 2; return 0x61; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x302: - consumed = 3; return 0x61; - case 0x306: - consumed = 3; return 0x61; - } - } - consumed = 2; return 0x61; - case 0x325: - consumed = 2; return 0x61; - case 0x328: - consumed = 2; return 0x61; - } - } - consumed = 1; return *in; - case 0x62: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x62; - case 0x323: - consumed = 2; return 0x62; - case 0x331: - consumed = 2; return 0x62; - } - } - consumed = 1; return *in; - case 0x63: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x63; - case 0x302: - consumed = 2; return 0x63; - case 0x307: - consumed = 2; return 0x63; - case 0x30c: - consumed = 2; return 0x63; - case 0x327: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x63; - } - } - consumed = 2; return 0x63; - } - } - consumed = 1; return *in; - case 0x64: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x64; - case 0x30c: - consumed = 2; return 0x64; - case 0x323: - consumed = 2; return 0x64; - case 0x327: - consumed = 2; return 0x64; - case 0x32d: - consumed = 2; return 0x64; - case 0x331: - consumed = 2; return 0x64; - } - } - consumed = 1; return *in; - case 0x65: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x65; - case 0x301: - consumed = 2; return 0x65; - case 0x302: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x65; - case 0x301: - consumed = 3; return 0x65; - case 0x303: - consumed = 3; return 0x65; - case 0x309: - consumed = 3; return 0x65; - } - } - consumed = 2; return 0x65; - case 0x303: - consumed = 2; return 0x65; - case 0x304: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x65; - case 0x301: - consumed = 3; return 0x65; - } - } - consumed = 2; return 0x65; - case 0x306: - consumed = 2; return 0x65; - case 0x307: - consumed = 2; return 0x65; - case 0x308: - consumed = 2; return 0x65; - case 0x309: - consumed = 2; return 0x65; - case 0x30c: - consumed = 2; return 0x65; - case 0x30f: - consumed = 2; return 0x65; - case 0x311: - consumed = 2; return 0x65; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x302: - consumed = 3; return 0x65; - } - } - consumed = 2; return 0x65; - case 0x327: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x306: - consumed = 3; return 0x65; - } - } - consumed = 2; return 0x65; - case 0x328: - consumed = 2; return 0x65; - case 0x32d: - consumed = 2; return 0x65; - case 0x330: - consumed = 2; return 0x65; - } - } - consumed = 1; return *in; - case 0x66: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x66; - } - } - consumed = 1; return *in; - case 0x67: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x67; - case 0x302: - consumed = 2; return 0x67; - case 0x304: - consumed = 2; return 0x67; - case 0x306: - consumed = 2; return 0x67; - case 0x307: - consumed = 2; return 0x67; - case 0x30c: - consumed = 2; return 0x67; - case 0x327: - consumed = 2; return 0x67; - } - } - consumed = 1; return *in; - case 0x68: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x302: - consumed = 2; return 0x68; - case 0x307: - consumed = 2; return 0x68; - case 0x308: - consumed = 2; return 0x68; - case 0x30c: - consumed = 2; return 0x68; - case 0x323: - consumed = 2; return 0x68; - case 0x327: - consumed = 2; return 0x68; - case 0x32e: - consumed = 2; return 0x68; - case 0x331: - consumed = 2; return 0x68; - } - } - consumed = 1; return *in; - case 0x69: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x69; - case 0x301: - consumed = 2; return 0x69; - case 0x302: - consumed = 2; return 0x69; - case 0x303: - consumed = 2; return 0x69; - case 0x304: - consumed = 2; return 0x69; - case 0x306: - consumed = 2; return 0x69; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x69; - } - } - consumed = 2; return 0x69; - case 0x309: - consumed = 2; return 0x69; - case 0x30c: - consumed = 2; return 0x69; - case 0x30f: - consumed = 2; return 0x69; - case 0x311: - consumed = 2; return 0x69; - case 0x323: - consumed = 2; return 0x69; - case 0x328: - consumed = 2; return 0x69; - case 0x330: - consumed = 2; return 0x69; - } - } - consumed = 1; return *in; - case 0x6a: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x302: - consumed = 2; return 0x6a; - case 0x30c: - consumed = 2; return 0x6a; - } - } - consumed = 1; return *in; - case 0x6b: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x6b; - case 0x30c: - consumed = 2; return 0x6b; - case 0x323: - consumed = 2; return 0x6b; - case 0x327: - consumed = 2; return 0x6b; - case 0x331: - consumed = 2; return 0x6b; - } - } - consumed = 1; return *in; - case 0x6c: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x6c; - case 0x30c: - consumed = 2; return 0x6c; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x6c; - } - } - consumed = 2; return 0x6c; - case 0x327: - consumed = 2; return 0x6c; - case 0x32d: - consumed = 2; return 0x6c; - case 0x331: - consumed = 2; return 0x6c; - } - } - consumed = 1; return *in; - case 0x6d: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x6d; - case 0x307: - consumed = 2; return 0x6d; - case 0x323: - consumed = 2; return 0x6d; - } - } - consumed = 1; return *in; - case 0x6e: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x6e; - case 0x301: - consumed = 2; return 0x6e; - case 0x303: - consumed = 2; return 0x6e; - case 0x307: - consumed = 2; return 0x6e; - case 0x30c: - consumed = 2; return 0x6e; - case 0x323: - consumed = 2; return 0x6e; - case 0x327: - consumed = 2; return 0x6e; - case 0x32d: - consumed = 2; return 0x6e; - case 0x331: - consumed = 2; return 0x6e; - } - } - consumed = 1; return *in; - case 0x6f: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x6f; - case 0x301: - consumed = 2; return 0x6f; - case 0x302: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x6f; - case 0x301: - consumed = 3; return 0x6f; - case 0x303: - consumed = 3; return 0x6f; - case 0x309: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - case 0x303: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x6f; - case 0x304: - consumed = 3; return 0x6f; - case 0x308: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - case 0x304: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x6f; - case 0x301: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - case 0x306: - consumed = 2; return 0x6f; - case 0x307: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - case 0x309: - consumed = 2; return 0x6f; - case 0x30b: - consumed = 2; return 0x6f; - case 0x30c: - consumed = 2; return 0x6f; - case 0x30f: - consumed = 2; return 0x6f; - case 0x311: - consumed = 2; return 0x6f; - case 0x31b: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x6f; - case 0x301: - consumed = 3; return 0x6f; - case 0x303: - consumed = 3; return 0x6f; - case 0x309: - consumed = 3; return 0x6f; - case 0x323: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x302: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - case 0x328: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x6f; - } - } - consumed = 2; return 0x6f; - } - } - consumed = 1; return *in; - case 0x70: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x70; - case 0x307: - consumed = 2; return 0x70; - } - } - consumed = 1; return *in; - case 0x72: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x72; - case 0x307: - consumed = 2; return 0x72; - case 0x30c: - consumed = 2; return 0x72; - case 0x30f: - consumed = 2; return 0x72; - case 0x311: - consumed = 2; return 0x72; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x304: - consumed = 3; return 0x72; - } - } - consumed = 2; return 0x72; - case 0x327: - consumed = 2; return 0x72; - case 0x331: - consumed = 2; return 0x72; - } - } - consumed = 1; return *in; - case 0x73: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x307: - consumed = 3; return 0x73; - } - } - consumed = 2; return 0x73; - case 0x302: - consumed = 2; return 0x73; - case 0x307: - consumed = 2; return 0x73; - case 0x30c: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x307: - consumed = 3; return 0x73; - } - } - consumed = 2; return 0x73; - case 0x323: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x307: - consumed = 3; return 0x73; - } - } - consumed = 2; return 0x73; - case 0x326: - consumed = 2; return 0x73; - case 0x327: - consumed = 2; return 0x73; - } - } - consumed = 1; return *in; - case 0x74: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x74; - case 0x308: - consumed = 2; return 0x74; - case 0x30c: - consumed = 2; return 0x74; - case 0x323: - consumed = 2; return 0x74; - case 0x326: - consumed = 2; return 0x74; - case 0x327: - consumed = 2; return 0x74; - case 0x32d: - consumed = 2; return 0x74; - case 0x331: - consumed = 2; return 0x74; - } - } - consumed = 1; return *in; - case 0x75: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x75; - case 0x301: - consumed = 2; return 0x75; - case 0x302: - consumed = 2; return 0x75; - case 0x303: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x301: - consumed = 3; return 0x75; - } - } - consumed = 2; return 0x75; - case 0x304: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x308: - consumed = 3; return 0x75; - } - } - consumed = 2; return 0x75; - case 0x306: - consumed = 2; return 0x75; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x75; - case 0x301: - consumed = 3; return 0x75; - case 0x304: - consumed = 3; return 0x75; - case 0x30c: - consumed = 3; return 0x75; - } - } - consumed = 2; return 0x75; - case 0x309: - consumed = 2; return 0x75; - case 0x30a: - consumed = 2; return 0x75; - case 0x30b: - consumed = 2; return 0x75; - case 0x30c: - consumed = 2; return 0x75; - case 0x30f: - consumed = 2; return 0x75; - case 0x311: - consumed = 2; return 0x75; - case 0x31b: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x75; - case 0x301: - consumed = 3; return 0x75; - case 0x303: - consumed = 3; return 0x75; - case 0x309: - consumed = 3; return 0x75; - case 0x323: - consumed = 3; return 0x75; - } - } - consumed = 2; return 0x75; - case 0x323: - consumed = 2; return 0x75; - case 0x324: - consumed = 2; return 0x75; - case 0x328: - consumed = 2; return 0x75; - case 0x32d: - consumed = 2; return 0x75; - case 0x330: - consumed = 2; return 0x75; - } - } - consumed = 1; return *in; - case 0x76: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x303: - consumed = 2; return 0x76; - case 0x323: - consumed = 2; return 0x76; - } - } - consumed = 1; return *in; - case 0x77: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x77; - case 0x301: - consumed = 2; return 0x77; - case 0x302: - consumed = 2; return 0x77; - case 0x307: - consumed = 2; return 0x77; - case 0x308: - consumed = 2; return 0x77; - case 0x30a: - consumed = 2; return 0x77; - case 0x323: - consumed = 2; return 0x77; - } - } - consumed = 1; return *in; - case 0x78: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x78; - case 0x308: - consumed = 2; return 0x78; - } - } - consumed = 1; return *in; - case 0x79: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x79; - case 0x301: - consumed = 2; return 0x79; - case 0x302: - consumed = 2; return 0x79; - case 0x303: - consumed = 2; return 0x79; - case 0x304: - consumed = 2; return 0x79; - case 0x307: - consumed = 2; return 0x79; - case 0x308: - consumed = 2; return 0x79; - case 0x309: - consumed = 2; return 0x79; - case 0x30a: - consumed = 2; return 0x79; - case 0x323: - consumed = 2; return 0x79; - } - } - consumed = 1; return *in; - case 0x7a: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x7a; - case 0x302: - consumed = 2; return 0x7a; - case 0x307: - consumed = 2; return 0x7a; - case 0x30c: - consumed = 2; return 0x7a; - case 0x323: - consumed = 2; return 0x7a; - case 0x331: - consumed = 2; return 0x7a; - } - } - consumed = 1; return *in; - case 0xc0: - consumed = 1; return 0x41; - case 0xc1: - consumed = 1; return 0x41; - case 0xc2: - consumed = 1; return 0x41; - case 0xc3: - consumed = 1; return 0x41; - case 0xc4: - consumed = 1; return 0x41; - case 0xc5: - consumed = 1; return 0x41; - case 0xc6: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0xc6; - case 0x304: - consumed = 2; return 0xc6; - } - } - consumed = 1; return *in; - case 0xc7: - consumed = 1; return 0x43; - case 0xc8: - consumed = 1; return 0x45; - case 0xc9: - consumed = 1; return 0x45; - case 0xca: - consumed = 1; return 0x45; - case 0xcb: - consumed = 1; return 0x45; - case 0xcc: - consumed = 1; return 0x49; - case 0xcd: - consumed = 1; return 0x49; - case 0xce: - consumed = 1; return 0x49; - case 0xcf: - consumed = 1; return 0x49; - case 0xd1: - consumed = 1; return 0x4e; - case 0xd2: - consumed = 1; return 0x4f; - case 0xd3: - consumed = 1; return 0x4f; - case 0xd4: - consumed = 1; return 0x4f; - case 0xd5: - consumed = 1; return 0x4f; - case 0xd6: - consumed = 1; return 0x4f; - case 0xd8: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0xd8; - } - } - consumed = 1; return 0x4f; - case 0xd9: - consumed = 1; return 0x55; - case 0xda: - consumed = 1; return 0x55; - case 0xdb: - consumed = 1; return 0x55; - case 0xdc: - consumed = 1; return 0x55; - case 0xdd: - consumed = 1; return 0x59; - case 0xe0: - consumed = 1; return 0x61; - case 0xe1: - consumed = 1; return 0x61; - case 0xe2: - consumed = 1; return 0x61; - case 0xe3: - consumed = 1; return 0x61; - case 0xe4: - consumed = 1; return 0x61; - case 0xe5: - consumed = 1; return 0x61; - case 0xe6: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0xe6; - case 0x304: - consumed = 2; return 0xe6; - } - } - consumed = 1; return *in; - case 0xe7: - consumed = 1; return 0x63; - case 0xe8: - consumed = 1; return 0x65; - case 0xe9: - consumed = 1; return 0x65; - case 0xea: - consumed = 1; return 0x65; - case 0xeb: - consumed = 1; return 0x65; - case 0xec: - consumed = 1; return 0x69; - case 0xed: - consumed = 1; return 0x69; - case 0xee: - consumed = 1; return 0x69; - case 0xef: - consumed = 1; return 0x69; - case 0xf1: - consumed = 1; return 0x6e; - case 0xf2: - consumed = 1; return 0x6f; - case 0xf3: - consumed = 1; return 0x6f; - case 0xf4: - consumed = 1; return 0x6f; - case 0xf5: - consumed = 1; return 0x6f; - case 0xf6: - consumed = 1; return 0x6f; - case 0xf8: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0xf8; - } - } - consumed = 1; return 0x6f; - case 0xf9: - consumed = 1; return 0x75; - case 0xfa: - consumed = 1; return 0x75; - case 0xfb: - consumed = 1; return 0x75; - case 0xfc: - consumed = 1; return 0x75; - case 0xfd: - consumed = 1; return 0x79; - case 0xff: - consumed = 1; return 0x79; - case 0x100: - consumed = 1; return 0x41; - case 0x101: - consumed = 1; return 0x61; - case 0x102: - consumed = 1; return 0x41; - case 0x103: - consumed = 1; return 0x61; - case 0x104: - consumed = 1; return 0x41; - case 0x105: - consumed = 1; return 0x61; - case 0x106: - consumed = 1; return 0x43; - case 0x107: - consumed = 1; return 0x63; - case 0x108: - consumed = 1; return 0x43; - case 0x109: - consumed = 1; return 0x63; - case 0x10a: - consumed = 1; return 0x43; - case 0x10b: - consumed = 1; return 0x63; - case 0x10c: - consumed = 1; return 0x43; - case 0x10d: - consumed = 1; return 0x63; - case 0x10e: - consumed = 1; return 0x44; - case 0x10f: - consumed = 1; return 0x64; - case 0x110: - consumed = 1; return 0x44; - case 0x111: - consumed = 1; return 0x64; - case 0x112: - consumed = 1; return 0x45; - case 0x113: - consumed = 1; return 0x65; - case 0x114: - consumed = 1; return 0x45; - case 0x115: - consumed = 1; return 0x65; - case 0x116: - consumed = 1; return 0x45; - case 0x117: - consumed = 1; return 0x65; - case 0x118: - consumed = 1; return 0x45; - case 0x119: - consumed = 1; return 0x65; - case 0x11a: - consumed = 1; return 0x45; - case 0x11b: - consumed = 1; return 0x65; - case 0x11c: - consumed = 1; return 0x47; - case 0x11d: - consumed = 1; return 0x67; - case 0x11e: - consumed = 1; return 0x47; - case 0x11f: - consumed = 1; return 0x67; - case 0x120: - consumed = 1; return 0x47; - case 0x121: - consumed = 1; return 0x67; - case 0x122: - consumed = 1; return 0x47; - case 0x123: - consumed = 1; return 0x67; - case 0x124: - consumed = 1; return 0x48; - case 0x125: - consumed = 1; return 0x68; - case 0x126: - consumed = 1; return 0x48; - case 0x127: - consumed = 1; return 0x68; - case 0x128: - consumed = 1; return 0x49; - case 0x129: - consumed = 1; return 0x69; - case 0x12a: - consumed = 1; return 0x49; - case 0x12b: - consumed = 1; return 0x69; - case 0x12c: - consumed = 1; return 0x49; - case 0x12d: - consumed = 1; return 0x69; - case 0x12e: - consumed = 1; return 0x49; - case 0x12f: - consumed = 1; return 0x69; - case 0x130: - consumed = 1; return 0x49; - case 0x134: - consumed = 1; return 0x4a; - case 0x135: - consumed = 1; return 0x6a; - case 0x136: - consumed = 1; return 0x4b; - case 0x137: - consumed = 1; return 0x6b; - case 0x139: - consumed = 1; return 0x4c; - case 0x13a: - consumed = 1; return 0x6c; - case 0x13b: - consumed = 1; return 0x4c; - case 0x13c: - consumed = 1; return 0x6c; - case 0x13d: - consumed = 1; return 0x4c; - case 0x13e: - consumed = 1; return 0x6c; - case 0x140: - consumed = 1; return 0x6c; - case 0x141: - consumed = 1; return 0x4c; - case 0x142: - consumed = 1; return 0x6c; - case 0x143: - consumed = 1; return 0x4e; - case 0x144: - consumed = 1; return 0x6e; - case 0x145: - consumed = 1; return 0x4e; - case 0x146: - consumed = 1; return 0x6e; - case 0x147: - consumed = 1; return 0x4e; - case 0x148: - consumed = 1; return 0x6e; - case 0x14c: - consumed = 1; return 0x4f; - case 0x14d: - consumed = 1; return 0x6f; - case 0x14e: - consumed = 1; return 0x4f; - case 0x14f: - consumed = 1; return 0x6f; - case 0x150: - consumed = 1; return 0x4f; - case 0x151: - consumed = 1; return 0x6f; - case 0x154: - consumed = 1; return 0x52; - case 0x155: - consumed = 1; return 0x72; - case 0x156: - consumed = 1; return 0x52; - case 0x157: - consumed = 1; return 0x72; - case 0x158: - consumed = 1; return 0x52; - case 0x159: - consumed = 1; return 0x72; - case 0x15a: - consumed = 1; return 0x53; - case 0x15b: - consumed = 1; return 0x73; - case 0x15c: - consumed = 1; return 0x53; - case 0x15d: - consumed = 1; return 0x73; - case 0x15e: - consumed = 1; return 0x53; - case 0x15f: - consumed = 1; return 0x73; - case 0x160: - consumed = 1; return 0x53; - case 0x161: - consumed = 1; return 0x73; - case 0x162: - consumed = 1; return 0x54; - case 0x163: - consumed = 1; return 0x74; - case 0x164: - consumed = 1; return 0x54; - case 0x165: - consumed = 1; return 0x74; - case 0x166: - consumed = 1; return 0x54; - case 0x167: - consumed = 1; return 0x74; - case 0x168: - consumed = 1; return 0x55; - case 0x169: - consumed = 1; return 0x75; - case 0x16a: - consumed = 1; return 0x55; - case 0x16b: - consumed = 1; return 0x75; - case 0x16c: - consumed = 1; return 0x55; - case 0x16d: - consumed = 1; return 0x75; - case 0x16e: - consumed = 1; return 0x55; - case 0x16f: - consumed = 1; return 0x75; - case 0x170: - consumed = 1; return 0x55; - case 0x171: - consumed = 1; return 0x75; - case 0x172: - consumed = 1; return 0x55; - case 0x173: - consumed = 1; return 0x75; - case 0x174: - consumed = 1; return 0x57; - case 0x175: - consumed = 1; return 0x77; - case 0x176: - consumed = 1; return 0x59; - case 0x177: - consumed = 1; return 0x79; - case 0x178: - consumed = 1; return 0x59; - case 0x179: - consumed = 1; return 0x5a; - case 0x17a: - consumed = 1; return 0x7a; - case 0x17b: - consumed = 1; return 0x5a; - case 0x17c: - consumed = 1; return 0x7a; - case 0x17d: - consumed = 1; return 0x5a; - case 0x17e: - consumed = 1; return 0x7a; - case 0x17f: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x307: - consumed = 2; return 0x17f; - } - } - consumed = 1; return *in; - case 0x180: - consumed = 1; return 0x62; - case 0x181: - consumed = 1; return 0x42; - case 0x182: - consumed = 1; return 0x42; - case 0x183: - consumed = 1; return 0x62; - case 0x187: - consumed = 1; return 0x43; - case 0x188: - consumed = 1; return 0x63; - case 0x18a: - consumed = 1; return 0x44; - case 0x18b: - consumed = 1; return 0x44; - case 0x18c: - consumed = 1; return 0x64; - case 0x191: - consumed = 1; return 0x46; - case 0x192: - consumed = 1; return 0x66; - case 0x193: - consumed = 1; return 0x47; - case 0x197: - consumed = 1; return 0x49; - case 0x198: - consumed = 1; return 0x4b; - case 0x199: - consumed = 1; return 0x6b; - case 0x19a: - consumed = 1; return 0x6c; - case 0x19d: - consumed = 1; return 0x4e; - case 0x19e: - consumed = 1; return 0x6e; - case 0x19f: - consumed = 1; return 0x4f; - case 0x1a0: - consumed = 1; return 0x4f; - case 0x1a1: - consumed = 1; return 0x6f; - case 0x1a4: - consumed = 1; return 0x50; - case 0x1a5: - consumed = 1; return 0x70; - case 0x1ab: - consumed = 1; return 0x74; - case 0x1ac: - consumed = 1; return 0x54; - case 0x1ad: - consumed = 1; return 0x74; - case 0x1ae: - consumed = 1; return 0x54; - case 0x1af: - consumed = 1; return 0x55; - case 0x1b0: - consumed = 1; return 0x75; - case 0x1b2: - consumed = 1; return 0x56; - case 0x1b3: - consumed = 1; return 0x59; - case 0x1b4: - consumed = 1; return 0x79; - case 0x1b5: - consumed = 1; return 0x5a; - case 0x1b6: - consumed = 1; return 0x7a; - case 0x1b7: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x30c: - consumed = 2; return 0x1b7; - } - } - consumed = 1; return *in; - case 0x1ba: - consumed = 1; return 0x292; - case 0x1cd: - consumed = 1; return 0x41; - case 0x1ce: - consumed = 1; return 0x61; - case 0x1cf: - consumed = 1; return 0x49; - case 0x1d0: - consumed = 1; return 0x69; - case 0x1d1: - consumed = 1; return 0x4f; - case 0x1d2: - consumed = 1; return 0x6f; - case 0x1d3: - consumed = 1; return 0x55; - case 0x1d4: - consumed = 1; return 0x75; - case 0x1d5: - consumed = 1; return 0x55; - case 0x1d6: - consumed = 1; return 0x75; - case 0x1d7: - consumed = 1; return 0x55; - case 0x1d8: - consumed = 1; return 0x75; - case 0x1d9: - consumed = 1; return 0x55; - case 0x1da: - consumed = 1; return 0x75; - case 0x1db: - consumed = 1; return 0x55; - case 0x1dc: - consumed = 1; return 0x75; - case 0x1de: - consumed = 1; return 0x41; - case 0x1df: - consumed = 1; return 0x61; - case 0x1e0: - consumed = 1; return 0x41; - case 0x1e1: - consumed = 1; return 0x61; - case 0x1e2: - consumed = 1; return 0xc6; - case 0x1e3: - consumed = 1; return 0xe6; - case 0x1e4: - consumed = 1; return 0x47; - case 0x1e5: - consumed = 1; return 0x67; - case 0x1e6: - consumed = 1; return 0x47; - case 0x1e7: - consumed = 1; return 0x67; - case 0x1e8: - consumed = 1; return 0x4b; - case 0x1e9: - consumed = 1; return 0x6b; - case 0x1ea: - consumed = 1; return 0x4f; - case 0x1eb: - consumed = 1; return 0x6f; - case 0x1ec: - consumed = 1; return 0x4f; - case 0x1ed: - consumed = 1; return 0x6f; - case 0x1ee: - consumed = 1; return 0x1b7; - case 0x1ef: - consumed = 1; return 0x292; - case 0x1f0: - consumed = 1; return 0x6a; - case 0x1f4: - consumed = 1; return 0x47; - case 0x1f5: - consumed = 1; return 0x67; - case 0x1f8: - consumed = 1; return 0x4e; - case 0x1f9: - consumed = 1; return 0x6e; - case 0x1fa: - consumed = 1; return 0x41; - case 0x1fb: - consumed = 1; return 0x61; - case 0x1fc: - consumed = 1; return 0xc6; - case 0x1fd: - consumed = 1; return 0xe6; - case 0x1fe: - consumed = 1; return 0x4f; - case 0x1ff: - consumed = 1; return 0x6f; - case 0x200: - consumed = 1; return 0x41; - case 0x201: - consumed = 1; return 0x61; - case 0x202: - consumed = 1; return 0x41; - case 0x203: - consumed = 1; return 0x61; - case 0x204: - consumed = 1; return 0x45; - case 0x205: - consumed = 1; return 0x65; - case 0x206: - consumed = 1; return 0x45; - case 0x207: - consumed = 1; return 0x65; - case 0x208: - consumed = 1; return 0x49; - case 0x209: - consumed = 1; return 0x69; - case 0x20a: - consumed = 1; return 0x49; - case 0x20b: - consumed = 1; return 0x69; - case 0x20c: - consumed = 1; return 0x4f; - case 0x20d: - consumed = 1; return 0x6f; - case 0x20e: - consumed = 1; return 0x4f; - case 0x20f: - consumed = 1; return 0x6f; - case 0x210: - consumed = 1; return 0x52; - case 0x211: - consumed = 1; return 0x72; - case 0x212: - consumed = 1; return 0x52; - case 0x213: - consumed = 1; return 0x72; - case 0x214: - consumed = 1; return 0x55; - case 0x215: - consumed = 1; return 0x75; - case 0x216: - consumed = 1; return 0x55; - case 0x217: - consumed = 1; return 0x75; - case 0x218: - consumed = 1; return 0x53; - case 0x219: - consumed = 1; return 0x73; - case 0x21a: - consumed = 1; return 0x54; - case 0x21b: - consumed = 1; return 0x74; - case 0x21e: - consumed = 1; return 0x48; - case 0x21f: - consumed = 1; return 0x68; - case 0x220: - consumed = 1; return 0x4e; - case 0x221: - consumed = 1; return 0x64; - case 0x224: - consumed = 1; return 0x5a; - case 0x225: - consumed = 1; return 0x7a; - case 0x226: - consumed = 1; return 0x41; - case 0x227: - consumed = 1; return 0x61; - case 0x228: - consumed = 1; return 0x45; - case 0x229: - consumed = 1; return 0x65; - case 0x22a: - consumed = 1; return 0x4f; - case 0x22b: - consumed = 1; return 0x6f; - case 0x22c: - consumed = 1; return 0x4f; - case 0x22d: - consumed = 1; return 0x6f; - case 0x22e: - consumed = 1; return 0x4f; - case 0x22f: - consumed = 1; return 0x6f; - case 0x230: - consumed = 1; return 0x4f; - case 0x231: - consumed = 1; return 0x6f; - case 0x232: - consumed = 1; return 0x59; - case 0x233: - consumed = 1; return 0x79; - case 0x234: - consumed = 1; return 0x6c; - case 0x235: - consumed = 1; return 0x6e; - case 0x236: - consumed = 1; return 0x74; - case 0x253: - consumed = 1; return 0x62; - case 0x255: - consumed = 1; return 0x63; - case 0x256: - consumed = 1; return 0x64; - case 0x257: - consumed = 1; return 0x64; - case 0x25a: - consumed = 1; return 0x259; - case 0x260: - consumed = 1; return 0x67; - case 0x266: - consumed = 1; return 0x68; - case 0x268: - consumed = 1; return 0x69; - case 0x26b: - consumed = 1; return 0x6c; - case 0x26c: - consumed = 1; return 0x6c; - case 0x26d: - consumed = 1; return 0x6c; - case 0x271: - consumed = 1; return 0x6d; - case 0x272: - consumed = 1; return 0x6e; - case 0x273: - consumed = 1; return 0x6e; - case 0x27c: - consumed = 1; return 0x72; - case 0x27d: - consumed = 1; return 0x72; - case 0x282: - consumed = 1; return 0x73; - case 0x286: - consumed = 1; return 0x283; - case 0x288: - consumed = 1; return 0x74; - case 0x28b: - consumed = 1; return 0x76; - case 0x290: - consumed = 1; return 0x7a; - case 0x291: - consumed = 1; return 0x7a; - case 0x292: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x30c: - consumed = 2; return 0x292; - } - } - consumed = 1; return *in; - case 0x293: - consumed = 1; return 0x292; - case 0x29d: - consumed = 1; return 0x6a; - case 0x2a0: - consumed = 1; return 0x71; - case 0x386: - consumed = 1; return 0x391; - case 0x388: - consumed = 1; return 0x395; - case 0x389: - consumed = 1; return 0x397; - case 0x38a: - consumed = 1; return 0x399; - case 0x38c: - consumed = 1; return 0x39f; - case 0x38e: - consumed = 1; return 0x3a5; - case 0x38f: - consumed = 1; return 0x3a9; - case 0x390: - consumed = 1; return 0x3b9; - case 0x391: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x391; - case 0x301: - consumed = 2; return 0x391; - case 0x304: - consumed = 2; return 0x391; - case 0x306: - consumed = 2; return 0x391; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x391; - case 0x301: - consumed = 3; return 0x391; - case 0x342: - consumed = 3; return 0x391; - } - } - consumed = 2; return 0x391; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x391; - case 0x301: - consumed = 3; return 0x391; - case 0x342: - consumed = 3; return 0x391; - } - } - consumed = 2; return 0x391; - } - } - consumed = 1; return *in; - case 0x395: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x395; - case 0x301: - consumed = 2; return 0x395; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x395; - case 0x301: - consumed = 3; return 0x395; - } - } - consumed = 2; return 0x395; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x395; - case 0x301: - consumed = 3; return 0x395; - } - } - consumed = 2; return 0x395; - } - } - consumed = 1; return *in; - case 0x397: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x397; - case 0x301: - consumed = 2; return 0x397; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x397; - case 0x301: - consumed = 3; return 0x397; - case 0x342: - consumed = 3; return 0x397; - } - } - consumed = 2; return 0x397; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x397; - case 0x301: - consumed = 3; return 0x397; - case 0x342: - consumed = 3; return 0x397; - } - } - consumed = 2; return 0x397; - } - } - consumed = 1; return *in; - case 0x399: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x399; - case 0x301: - consumed = 2; return 0x399; - case 0x304: - consumed = 2; return 0x399; - case 0x306: - consumed = 2; return 0x399; - case 0x308: - consumed = 2; return 0x399; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x399; - case 0x301: - consumed = 3; return 0x399; - case 0x342: - consumed = 3; return 0x399; - } - } - consumed = 2; return 0x399; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x399; - case 0x301: - consumed = 3; return 0x399; - case 0x342: - consumed = 3; return 0x399; - } - } - consumed = 2; return 0x399; - } - } - consumed = 1; return *in; - case 0x39f: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x39f; - case 0x301: - consumed = 2; return 0x39f; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x39f; - case 0x301: - consumed = 3; return 0x39f; - } - } - consumed = 2; return 0x39f; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x39f; - case 0x301: - consumed = 3; return 0x39f; - } - } - consumed = 2; return 0x39f; - } - } - consumed = 1; return *in; - case 0x3a1: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x314: - consumed = 2; return 0x3a1; - } - } - consumed = 1; return *in; - case 0x3a5: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3a5; - case 0x301: - consumed = 2; return 0x3a5; - case 0x304: - consumed = 2; return 0x3a5; - case 0x306: - consumed = 2; return 0x3a5; - case 0x308: - consumed = 2; return 0x3a5; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3a5; - case 0x301: - consumed = 3; return 0x3a5; - case 0x342: - consumed = 3; return 0x3a5; - } - } - consumed = 2; return 0x3a5; - } - } - consumed = 1; return *in; - case 0x3a9: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3a9; - case 0x301: - consumed = 2; return 0x3a9; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3a9; - case 0x301: - consumed = 3; return 0x3a9; - case 0x342: - consumed = 3; return 0x3a9; - } - } - consumed = 2; return 0x3a9; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3a9; - case 0x301: - consumed = 3; return 0x3a9; - case 0x342: - consumed = 3; return 0x3a9; - } - } - consumed = 2; return 0x3a9; - } - } - consumed = 1; return *in; - case 0x3aa: - consumed = 1; return 0x399; - case 0x3ab: - consumed = 1; return 0x3a5; - case 0x3ac: - consumed = 1; return 0x3b1; - case 0x3ad: - consumed = 1; return 0x3b5; - case 0x3ae: - consumed = 1; return 0x3b7; - case 0x3af: - consumed = 1; return 0x3b9; - case 0x3b0: - consumed = 1; return 0x3c5; - case 0x3b1: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3b1; - case 0x301: - consumed = 2; return 0x3b1; - case 0x304: - consumed = 2; return 0x3b1; - case 0x306: - consumed = 2; return 0x3b1; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b1; - case 0x301: - consumed = 3; return 0x3b1; - case 0x342: - consumed = 3; return 0x3b1; - } - } - consumed = 2; return 0x3b1; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b1; - case 0x301: - consumed = 3; return 0x3b1; - case 0x342: - consumed = 3; return 0x3b1; - } - } - consumed = 2; return 0x3b1; - case 0x342: - consumed = 2; return 0x3b1; - } - } - consumed = 1; return *in; - case 0x3b5: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3b5; - case 0x301: - consumed = 2; return 0x3b5; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b5; - case 0x301: - consumed = 3; return 0x3b5; - } - } - consumed = 2; return 0x3b5; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b5; - case 0x301: - consumed = 3; return 0x3b5; - } - } - consumed = 2; return 0x3b5; - } - } - consumed = 1; return *in; - case 0x3b7: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3b7; - case 0x301: - consumed = 2; return 0x3b7; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b7; - case 0x301: - consumed = 3; return 0x3b7; - case 0x342: - consumed = 3; return 0x3b7; - } - } - consumed = 2; return 0x3b7; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b7; - case 0x301: - consumed = 3; return 0x3b7; - case 0x342: - consumed = 3; return 0x3b7; - } - } - consumed = 2; return 0x3b7; - case 0x342: - consumed = 2; return 0x3b7; - } - } - consumed = 1; return *in; - case 0x3b9: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3b9; - case 0x301: - consumed = 2; return 0x3b9; - case 0x304: - consumed = 2; return 0x3b9; - case 0x306: - consumed = 2; return 0x3b9; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b9; - case 0x301: - consumed = 3; return 0x3b9; - case 0x342: - consumed = 3; return 0x3b9; - } - } - consumed = 2; return 0x3b9; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b9; - case 0x301: - consumed = 3; return 0x3b9; - case 0x342: - consumed = 3; return 0x3b9; - } - } - consumed = 2; return 0x3b9; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3b9; - case 0x301: - consumed = 3; return 0x3b9; - case 0x342: - consumed = 3; return 0x3b9; - } - } - consumed = 2; return 0x3b9; - case 0x342: - consumed = 2; return 0x3b9; - } - } - consumed = 1; return *in; - case 0x3bf: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3bf; - case 0x301: - consumed = 2; return 0x3bf; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3bf; - case 0x301: - consumed = 3; return 0x3bf; - } - } - consumed = 2; return 0x3bf; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3bf; - case 0x301: - consumed = 3; return 0x3bf; - } - } - consumed = 2; return 0x3bf; - } - } - consumed = 1; return *in; - case 0x3c1: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x313: - consumed = 2; return 0x3c1; - case 0x314: - consumed = 2; return 0x3c1; - } - } - consumed = 1; return *in; - case 0x3c5: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3c5; - case 0x301: - consumed = 2; return 0x3c5; - case 0x304: - consumed = 2; return 0x3c5; - case 0x306: - consumed = 2; return 0x3c5; - case 0x308: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3c5; - case 0x301: - consumed = 3; return 0x3c5; - case 0x342: - consumed = 3; return 0x3c5; - } - } - consumed = 2; return 0x3c5; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3c5; - case 0x301: - consumed = 3; return 0x3c5; - case 0x342: - consumed = 3; return 0x3c5; - } - } - consumed = 2; return 0x3c5; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3c5; - case 0x301: - consumed = 3; return 0x3c5; - case 0x342: - consumed = 3; return 0x3c5; - } - } - consumed = 2; return 0x3c5; - case 0x342: - consumed = 2; return 0x3c5; - } - } - consumed = 1; return *in; - case 0x3c9: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x3c9; - case 0x301: - consumed = 2; return 0x3c9; - case 0x313: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3c9; - case 0x301: - consumed = 3; return 0x3c9; - case 0x342: - consumed = 3; return 0x3c9; - } - } - consumed = 2; return 0x3c9; - case 0x314: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x300: - consumed = 3; return 0x3c9; - case 0x301: - consumed = 3; return 0x3c9; - case 0x342: - consumed = 3; return 0x3c9; - } - } - consumed = 2; return 0x3c9; - case 0x342: - consumed = 2; return 0x3c9; - } - } - consumed = 1; return *in; - case 0x3ca: - consumed = 1; return 0x3b9; - case 0x3cb: - consumed = 1; return 0x3c5; - case 0x3cc: - consumed = 1; return 0x3bf; - case 0x3cd: - consumed = 1; return 0x3c5; - case 0x3ce: - consumed = 1; return 0x3c9; - case 0x3d2: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x301: - consumed = 2; return 0x3d2; - case 0x308: - consumed = 2; return 0x3d2; - } - } - consumed = 1; return *in; - case 0x400: - consumed = 1; return 0x415; - case 0x401: - consumed = 1; return 0x415; - case 0x40d: - consumed = 1; return 0x418; - case 0x410: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x306: - consumed = 2; return 0x410; - case 0x308: - consumed = 2; return 0x410; - } - } - consumed = 1; return *in; - case 0x415: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x415; - case 0x306: - consumed = 2; return 0x415; - } - } - consumed = 1; return *in; - case 0x416: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x306: - consumed = 2; return 0x416; - case 0x308: - consumed = 2; return 0x416; - } - } - consumed = 1; return *in; - case 0x417: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x417; - } - } - consumed = 1; return *in; - case 0x418: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x418; - case 0x304: - consumed = 2; return 0x418; - case 0x308: - consumed = 2; return 0x418; - } - } - consumed = 1; return *in; - case 0x41e: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x41e; - } - } - consumed = 1; return *in; - case 0x423: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x304: - consumed = 2; return 0x423; - case 0x308: - consumed = 2; return 0x423; - case 0x30b: - consumed = 2; return 0x423; - } - } - consumed = 1; return *in; - case 0x427: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x427; - } - } - consumed = 1; return *in; - case 0x42b: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x42b; - } - } - consumed = 1; return *in; - case 0x42d: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x42d; - } - } - consumed = 1; return *in; - case 0x430: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x306: - consumed = 2; return 0x430; - case 0x308: - consumed = 2; return 0x430; - } - } - consumed = 1; return *in; - case 0x435: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x435; - case 0x306: - consumed = 2; return 0x435; - } - } - consumed = 1; return *in; - case 0x436: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x306: - consumed = 2; return 0x436; - case 0x308: - consumed = 2; return 0x436; - } - } - consumed = 1; return *in; - case 0x437: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x437; - } - } - consumed = 1; return *in; - case 0x438: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x300: - consumed = 2; return 0x438; - case 0x304: - consumed = 2; return 0x438; - case 0x308: - consumed = 2; return 0x438; - } - } - consumed = 1; return *in; - case 0x43e: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x43e; - } - } - consumed = 1; return *in; - case 0x443: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x304: - consumed = 2; return 0x443; - case 0x308: - consumed = 2; return 0x443; - case 0x30b: - consumed = 2; return 0x443; - } - } - consumed = 1; return *in; - case 0x447: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x447; - } - } - consumed = 1; return *in; - case 0x44b: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x44b; - } - } - consumed = 1; return *in; - case 0x44d: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x44d; - } - } - consumed = 1; return *in; - case 0x450: - consumed = 1; return 0x435; - case 0x451: - consumed = 1; return 0x435; - case 0x45d: - consumed = 1; return 0x438; - case 0x474: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x30f: - consumed = 2; return 0x474; - } - } - consumed = 1; return *in; - case 0x475: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x30f: - consumed = 2; return 0x475; - } - } - consumed = 1; return *in; - case 0x476: - consumed = 1; return 0x474; - case 0x477: - consumed = 1; return 0x475; - case 0x47c: - consumed = 1; return 0x460; - case 0x47d: - consumed = 1; return 0x461; - case 0x48a: - consumed = 1; return 0x419; - case 0x48b: - consumed = 1; return 0x439; - case 0x48e: - consumed = 1; return 0x420; - case 0x48f: - consumed = 1; return 0x440; - case 0x490: - consumed = 1; return 0x413; - case 0x491: - consumed = 1; return 0x433; - case 0x492: - consumed = 1; return 0x413; - case 0x493: - consumed = 1; return 0x433; - case 0x494: - consumed = 1; return 0x413; - case 0x495: - consumed = 1; return 0x433; - case 0x496: - consumed = 1; return 0x416; - case 0x497: - consumed = 1; return 0x436; - case 0x498: - consumed = 1; return 0x417; - case 0x499: - consumed = 1; return 0x437; - case 0x49a: - consumed = 1; return 0x41a; - case 0x49b: - consumed = 1; return 0x43a; - case 0x49c: - consumed = 1; return 0x41a; - case 0x49d: - consumed = 1; return 0x43a; - case 0x49e: - consumed = 1; return 0x41a; - case 0x49f: - consumed = 1; return 0x43a; - case 0x4a2: - consumed = 1; return 0x41d; - case 0x4a3: - consumed = 1; return 0x43d; - case 0x4a6: - consumed = 1; return 0x41f; - case 0x4a7: - consumed = 1; return 0x43f; - case 0x4aa: - consumed = 1; return 0x421; - case 0x4ab: - consumed = 1; return 0x441; - case 0x4ac: - consumed = 1; return 0x422; - case 0x4ad: - consumed = 1; return 0x442; - case 0x4b0: - consumed = 1; return 0x4ae; - case 0x4b1: - consumed = 1; return 0x4af; - case 0x4b2: - consumed = 1; return 0x425; - case 0x4b3: - consumed = 1; return 0x425; - case 0x4b6: - consumed = 1; return 0x4bc; - case 0x4b7: - consumed = 1; return 0x4bc; - case 0x4b8: - consumed = 1; return 0x4bc; - case 0x4b9: - consumed = 1; return 0x447; - case 0x4be: - consumed = 1; return 0x4bc; - case 0x4bf: - consumed = 1; return 0x4bc; - case 0x4c1: - consumed = 1; return 0x416; - case 0x4c2: - consumed = 1; return 0x436; - case 0x4c3: - consumed = 1; return 0x41a; - case 0x4c4: - consumed = 1; return 0x43a; - case 0x4c5: - consumed = 1; return 0x41b; - case 0x4c6: - consumed = 1; return 0x43b; - case 0x4c7: - consumed = 1; return 0x41d; - case 0x4c8: - consumed = 1; return 0x43d; - case 0x4c9: - consumed = 1; return 0x41d; - case 0x4ca: - consumed = 1; return 0x43d; - case 0x4cb: - consumed = 1; return 0x4bc; - case 0x4cc: - consumed = 1; return 0x4bc; - case 0x4cd: - consumed = 1; return 0x41c; - case 0x4ce: - consumed = 1; return 0x43c; - case 0x4d0: - consumed = 1; return 0x410; - case 0x4d1: - consumed = 1; return 0x430; - case 0x4d2: - consumed = 1; return 0x410; - case 0x4d3: - consumed = 1; return 0x430; - case 0x4d6: - consumed = 1; return 0x415; - case 0x4d7: - consumed = 1; return 0x435; - case 0x4d8: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x4d8; - } - } - consumed = 1; return *in; - case 0x4d9: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x4d9; - } - } - consumed = 1; return *in; - case 0x4da: - consumed = 1; return 0x4d8; - case 0x4db: - consumed = 1; return 0x4d9; - case 0x4dc: - consumed = 1; return 0x416; - case 0x4dd: - consumed = 1; return 0x436; - case 0x4de: - consumed = 1; return 0x417; - case 0x4df: - consumed = 1; return 0x437; - case 0x4e2: - consumed = 1; return 0x418; - case 0x4e3: - consumed = 1; return 0x438; - case 0x4e4: - consumed = 1; return 0x418; - case 0x4e5: - consumed = 1; return 0x438; - case 0x4e6: - consumed = 1; return 0x41e; - case 0x4e7: - consumed = 1; return 0x43e; - case 0x4e8: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x4e8; - } - } - consumed = 1; return *in; - case 0x4e9: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x308: - consumed = 2; return 0x4e9; - } - } - consumed = 1; return *in; - case 0x4ea: - consumed = 1; return 0x4e8; - case 0x4eb: - consumed = 1; return 0x4e9; - case 0x4ec: - consumed = 1; return 0x42d; - case 0x4ed: - consumed = 1; return 0x44d; - case 0x4ee: - consumed = 1; return 0x423; - case 0x4ef: - consumed = 1; return 0x443; - case 0x4f0: - consumed = 1; return 0x423; - case 0x4f1: - consumed = 1; return 0x443; - case 0x4f2: - consumed = 1; return 0x423; - case 0x4f3: - consumed = 1; return 0x443; - case 0x4f4: - consumed = 1; return 0x427; - case 0x4f5: - consumed = 1; return 0x447; - case 0x4f8: - consumed = 1; return 0x42b; - case 0x4f9: - consumed = 1; return 0x44b; - case 0x5d0: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5b7: - consumed = 2; return 0x5d0; - case 0x5b8: - consumed = 2; return 0x5d0; - case 0x5bc: - consumed = 2; return 0x5d0; - } - } - consumed = 1; return *in; - case 0x5d1: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5d1; - case 0x5bf: - consumed = 2; return 0x5d1; - } - } - consumed = 1; return *in; - case 0x5d2: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5d2; - } - } - consumed = 1; return *in; - case 0x5d3: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5d3; - } - } - consumed = 1; return *in; - case 0x5d4: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5d4; - } - } - consumed = 1; return *in; - case 0x5d5: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5b9: - consumed = 2; return 0x5d5; - case 0x5bc: - consumed = 2; return 0x5d5; - } - } - consumed = 1; return *in; - case 0x5d6: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5d6; - } - } - consumed = 1; return *in; - case 0x5d8: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5d8; - } - } - consumed = 1; return *in; - case 0x5d9: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5b4: - consumed = 2; return 0x5d9; - case 0x5bc: - consumed = 2; return 0x5d9; - } - } - consumed = 1; return *in; - case 0x5da: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5da; - } - } - consumed = 1; return *in; - case 0x5db: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5db; - case 0x5bf: - consumed = 2; return 0x5db; - } - } - consumed = 1; return *in; - case 0x5dc: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5dc; - } - } - consumed = 1; return *in; - case 0x5de: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5de; - } - } - consumed = 1; return *in; - case 0x5e0: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5e0; - } - } - consumed = 1; return *in; - case 0x5e1: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5e1; - } - } - consumed = 1; return *in; - case 0x5e3: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5e3; - } - } - consumed = 1; return *in; - case 0x5e4: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5e4; - case 0x5bf: - consumed = 2; return 0x5e4; - } - } - consumed = 1; return *in; - case 0x5e6: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5e6; - } - } - consumed = 1; return *in; - case 0x5e7: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5e7; - } - } - consumed = 1; return *in; - case 0x5e8: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5e8; - } - } - consumed = 1; return *in; - case 0x5e9: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - if ( size > 2 ) - { - switch( in[ 2 ] ) - { - case 0x5c1: - consumed = 3; return 0x5e9; - case 0x5c2: - consumed = 3; return 0x5e9; - } - } - consumed = 2; return 0x5e9; - case 0x5c1: - consumed = 2; return 0x5e9; - case 0x5c2: - consumed = 2; return 0x5e9; - } - } - consumed = 1; return *in; - case 0x5ea: - if ( size > 1 ) - { - switch( in[ 1 ] ) - { - case 0x5bc: - consumed = 2; return 0x5ea; - } - } - consumed = 1; return *in; - case 0x1e00: - consumed = 1; return 0x41; - case 0x1e01: - consumed = 1; return 0x61; - case 0x1e02: - consumed = 1; return 0x42; - case 0x1e03: - consumed = 1; return 0x62; - case 0x1e04: - consumed = 1; return 0x42; - case 0x1e05: - consumed = 1; return 0x62; - case 0x1e06: - consumed = 1; return 0x42; - case 0x1e07: - consumed = 1; return 0x62; - case 0x1e08: - consumed = 1; return 0x43; - case 0x1e09: - consumed = 1; return 0x63; - case 0x1e0a: - consumed = 1; return 0x44; - case 0x1e0b: - consumed = 1; return 0x64; - case 0x1e0c: - consumed = 1; return 0x44; - case 0x1e0d: - consumed = 1; return 0x64; - case 0x1e0e: - consumed = 1; return 0x44; - case 0x1e0f: - consumed = 1; return 0x64; - case 0x1e10: - consumed = 1; return 0x44; - case 0x1e11: - consumed = 1; return 0x64; - case 0x1e12: - consumed = 1; return 0x44; - case 0x1e13: - consumed = 1; return 0x64; - case 0x1e14: - consumed = 1; return 0x45; - case 0x1e15: - consumed = 1; return 0x65; - case 0x1e16: - consumed = 1; return 0x45; - case 0x1e17: - consumed = 1; return 0x65; - case 0x1e18: - consumed = 1; return 0x45; - case 0x1e19: - consumed = 1; return 0x65; - case 0x1e1a: - consumed = 1; return 0x45; - case 0x1e1b: - consumed = 1; return 0x65; - case 0x1e1c: - consumed = 1; return 0x45; - case 0x1e1d: - consumed = 1; return 0x65; - case 0x1e1e: - consumed = 1; return 0x46; - case 0x1e1f: - consumed = 1; return 0x66; - case 0x1e20: - consumed = 1; return 0x47; - case 0x1e21: - consumed = 1; return 0x67; - case 0x1e22: - consumed = 1; return 0x48; - case 0x1e23: - consumed = 1; return 0x68; - case 0x1e24: - consumed = 1; return 0x48; - case 0x1e25: - consumed = 1; return 0x68; - case 0x1e26: - consumed = 1; return 0x48; - case 0x1e27: - consumed = 1; return 0x68; - case 0x1e28: - consumed = 1; return 0x48; - case 0x1e29: - consumed = 1; return 0x68; - case 0x1e2a: - consumed = 1; return 0x48; - case 0x1e2b: - consumed = 1; return 0x68; - case 0x1e2c: - consumed = 1; return 0x49; - case 0x1e2d: - consumed = 1; return 0x69; - case 0x1e2e: - consumed = 1; return 0x49; - case 0x1e2f: - consumed = 1; return 0x69; - case 0x1e30: - consumed = 1; return 0x4b; - case 0x1e31: - consumed = 1; return 0x6b; - case 0x1e32: - consumed = 1; return 0x4b; - case 0x1e33: - consumed = 1; return 0x6b; - case 0x1e34: - consumed = 1; return 0x4b; - case 0x1e35: - consumed = 1; return 0x6b; - case 0x1e36: - consumed = 1; return 0x4c; - case 0x1e37: - consumed = 1; return 0x6c; - case 0x1e38: - consumed = 1; return 0x4c; - case 0x1e39: - consumed = 1; return 0x6c; - case 0x1e3a: - consumed = 1; return 0x4c; - case 0x1e3b: - consumed = 1; return 0x6c; - case 0x1e3c: - consumed = 1; return 0x4c; - case 0x1e3d: - consumed = 1; return 0x6c; - case 0x1e3e: - consumed = 1; return 0x4d; - case 0x1e3f: - consumed = 1; return 0x6d; - case 0x1e40: - consumed = 1; return 0x4d; - case 0x1e41: - consumed = 1; return 0x6d; - case 0x1e42: - consumed = 1; return 0x4d; - case 0x1e43: - consumed = 1; return 0x6d; - case 0x1e44: - consumed = 1; return 0x4e; - case 0x1e45: - consumed = 1; return 0x6e; - case 0x1e46: - consumed = 1; return 0x4e; - case 0x1e47: - consumed = 1; return 0x6e; - case 0x1e48: - consumed = 1; return 0x4e; - case 0x1e49: - consumed = 1; return 0x6e; - case 0x1e4a: - consumed = 1; return 0x4e; - case 0x1e4b: - consumed = 1; return 0x6e; - case 0x1e4c: - consumed = 1; return 0x4f; - case 0x1e4d: - consumed = 1; return 0x6f; - case 0x1e4e: - consumed = 1; return 0x4f; - case 0x1e4f: - consumed = 1; return 0x6f; - case 0x1e50: - consumed = 1; return 0x4f; - case 0x1e51: - consumed = 1; return 0x6f; - case 0x1e52: - consumed = 1; return 0x4f; - case 0x1e53: - consumed = 1; return 0x6f; - case 0x1e54: - consumed = 1; return 0x50; - case 0x1e55: - consumed = 1; return 0x70; - case 0x1e56: - consumed = 1; return 0x50; - case 0x1e57: - consumed = 1; return 0x70; - case 0x1e58: - consumed = 1; return 0x52; - case 0x1e59: - consumed = 1; return 0x72; - case 0x1e5a: - consumed = 1; return 0x52; - case 0x1e5b: - consumed = 1; return 0x72; - case 0x1e5c: - consumed = 1; return 0x52; - case 0x1e5d: - consumed = 1; return 0x72; - case 0x1e5e: - consumed = 1; return 0x52; - case 0x1e5f: - consumed = 1; return 0x72; - case 0x1e60: - consumed = 1; return 0x53; - case 0x1e61: - consumed = 1; return 0x73; - case 0x1e62: - consumed = 1; return 0x53; - case 0x1e63: - consumed = 1; return 0x73; - case 0x1e64: - consumed = 1; return 0x53; - case 0x1e65: - consumed = 1; return 0x73; - case 0x1e66: - consumed = 1; return 0x53; - case 0x1e67: - consumed = 1; return 0x73; - case 0x1e68: - consumed = 1; return 0x53; - case 0x1e69: - consumed = 1; return 0x73; - case 0x1e6a: - consumed = 1; return 0x54; - case 0x1e6b: - consumed = 1; return 0x74; - case 0x1e6c: - consumed = 1; return 0x54; - case 0x1e6d: - consumed = 1; return 0x74; - case 0x1e6e: - consumed = 1; return 0x54; - case 0x1e6f: - consumed = 1; return 0x74; - case 0x1e70: - consumed = 1; return 0x54; - case 0x1e71: - consumed = 1; return 0x74; - case 0x1e72: - consumed = 1; return 0x55; - case 0x1e73: - consumed = 1; return 0x75; - case 0x1e74: - consumed = 1; return 0x55; - case 0x1e75: - consumed = 1; return 0x75; - case 0x1e76: - consumed = 1; return 0x55; - case 0x1e77: - consumed = 1; return 0x75; - case 0x1e78: - consumed = 1; return 0x55; - case 0x1e79: - consumed = 1; return 0x75; - case 0x1e7a: - consumed = 1; return 0x55; - case 0x1e7b: - consumed = 1; return 0x75; - case 0x1e7c: - consumed = 1; return 0x56; - case 0x1e7d: - consumed = 1; return 0x76; - case 0x1e7e: - consumed = 1; return 0x56; - case 0x1e7f: - consumed = 1; return 0x76; - case 0x1e80: - consumed = 1; return 0x57; - case 0x1e81: - consumed = 1; return 0x77; - case 0x1e82: - consumed = 1; return 0x57; - case 0x1e83: - consumed = 1; return 0x77; - case 0x1e84: - consumed = 1; return 0x57; - case 0x1e85: - consumed = 1; return 0x77; - case 0x1e86: - consumed = 1; return 0x57; - case 0x1e87: - consumed = 1; return 0x77; - case 0x1e88: - consumed = 1; return 0x57; - case 0x1e89: - consumed = 1; return 0x77; - case 0x1e8a: - consumed = 1; return 0x58; - case 0x1e8b: - consumed = 1; return 0x78; - case 0x1e8c: - consumed = 1; return 0x58; - case 0x1e8d: - consumed = 1; return 0x78; - case 0x1e8e: - consumed = 1; return 0x59; - case 0x1e8f: - consumed = 1; return 0x79; - case 0x1e90: - consumed = 1; return 0x5a; - case 0x1e91: - consumed = 1; return 0x7a; - case 0x1e92: - consumed = 1; return 0x5a; - case 0x1e93: - consumed = 1; return 0x7a; - case 0x1e94: - consumed = 1; return 0x5a; - case 0x1e95: - consumed = 1; return 0x7a; - case 0x1e96: - consumed = 1; return 0x68; - case 0x1e97: - consumed = 1; return 0x74; - case 0x1e98: - consumed = 1; return 0x77; - case 0x1e99: - consumed = 1; return 0x79; - case 0x1e9a: - consumed = 1; return 0x61; - case 0x1e9b: - consumed = 1; return 0x17f; - case 0x1ea0: - consumed = 1; return 0x41; - case 0x1ea1: - consumed = 1; return 0x61; - case 0x1ea2: - consumed = 1; return 0x41; - case 0x1ea3: - consumed = 1; return 0x61; - case 0x1ea4: - consumed = 1; return 0x41; - case 0x1ea5: - consumed = 1; return 0x61; - case 0x1ea6: - consumed = 1; return 0x41; - case 0x1ea7: - consumed = 1; return 0x61; - case 0x1ea8: - consumed = 1; return 0x41; - case 0x1ea9: - consumed = 1; return 0x61; - case 0x1eaa: - consumed = 1; return 0x41; - case 0x1eab: - consumed = 1; return 0x61; - case 0x1eac: - consumed = 1; return 0x41; - case 0x1ead: - consumed = 1; return 0x61; - case 0x1eae: - consumed = 1; return 0x41; - case 0x1eaf: - consumed = 1; return 0x61; - case 0x1eb0: - consumed = 1; return 0x41; - case 0x1eb1: - consumed = 1; return 0x61; - case 0x1eb2: - consumed = 1; return 0x41; - case 0x1eb3: - consumed = 1; return 0x61; - case 0x1eb4: - consumed = 1; return 0x41; - case 0x1eb5: - consumed = 1; return 0x61; - case 0x1eb6: - consumed = 1; return 0x41; - case 0x1eb7: - consumed = 1; return 0x61; - case 0x1eb8: - consumed = 1; return 0x45; - case 0x1eb9: - consumed = 1; return 0x65; - case 0x1eba: - consumed = 1; return 0x45; - case 0x1ebb: - consumed = 1; return 0x65; - case 0x1ebc: - consumed = 1; return 0x45; - case 0x1ebd: - consumed = 1; return 0x65; - case 0x1ebe: - consumed = 1; return 0x45; - case 0x1ebf: - consumed = 1; return 0x65; - case 0x1ec0: - consumed = 1; return 0x45; - case 0x1ec1: - consumed = 1; return 0x65; - case 0x1ec2: - consumed = 1; return 0x45; - case 0x1ec3: - consumed = 1; return 0x65; - case 0x1ec4: - consumed = 1; return 0x45; - case 0x1ec5: - consumed = 1; return 0x65; - case 0x1ec6: - consumed = 1; return 0x45; - case 0x1ec7: - consumed = 1; return 0x65; - case 0x1ec8: - consumed = 1; return 0x49; - case 0x1ec9: - consumed = 1; return 0x69; - case 0x1eca: - consumed = 1; return 0x49; - case 0x1ecb: - consumed = 1; return 0x69; - case 0x1ecc: - consumed = 1; return 0x4f; - case 0x1ecd: - consumed = 1; return 0x6f; - case 0x1ece: - consumed = 1; return 0x4f; - case 0x1ecf: - consumed = 1; return 0x6f; - case 0x1ed0: - consumed = 1; return 0x4f; - case 0x1ed1: - consumed = 1; return 0x6f; - case 0x1ed2: - consumed = 1; return 0x4f; - case 0x1ed3: - consumed = 1; return 0x6f; - case 0x1ed4: - consumed = 1; return 0x4f; - case 0x1ed5: - consumed = 1; return 0x6f; - case 0x1ed6: - consumed = 1; return 0x4f; - case 0x1ed7: - consumed = 1; return 0x6f; - case 0x1ed8: - consumed = 1; return 0x4f; - case 0x1ed9: - consumed = 1; return 0x6f; - case 0x1eda: - consumed = 1; return 0x4f; - case 0x1edb: - consumed = 1; return 0x6f; - case 0x1edc: - consumed = 1; return 0x4f; - case 0x1edd: - consumed = 1; return 0x6f; - case 0x1ede: - consumed = 1; return 0x4f; - case 0x1edf: - consumed = 1; return 0x6f; - case 0x1ee0: - consumed = 1; return 0x4f; - case 0x1ee1: - consumed = 1; return 0x6f; - case 0x1ee2: - consumed = 1; return 0x4f; - case 0x1ee3: - consumed = 1; return 0x6f; - case 0x1ee4: - consumed = 1; return 0x55; - case 0x1ee5: - consumed = 1; return 0x75; - case 0x1ee6: - consumed = 1; return 0x55; - case 0x1ee7: - consumed = 1; return 0x75; - case 0x1ee8: - consumed = 1; return 0x55; - case 0x1ee9: - consumed = 1; return 0x75; - case 0x1eea: - consumed = 1; return 0x55; - case 0x1eeb: - consumed = 1; return 0x75; - case 0x1eec: - consumed = 1; return 0x55; - case 0x1eed: - consumed = 1; return 0x75; - case 0x1eee: - consumed = 1; return 0x55; - case 0x1eef: - consumed = 1; return 0x75; - case 0x1ef0: - consumed = 1; return 0x55; - case 0x1ef1: - consumed = 1; return 0x75; - case 0x1ef2: - consumed = 1; return 0x59; - case 0x1ef3: - consumed = 1; return 0x79; - case 0x1ef4: - consumed = 1; return 0x59; - case 0x1ef5: - consumed = 1; return 0x79; - case 0x1ef6: - consumed = 1; return 0x59; - case 0x1ef7: - consumed = 1; return 0x79; - case 0x1ef8: - consumed = 1; return 0x59; - case 0x1ef9: - consumed = 1; return 0x79; - case 0x1f00: - consumed = 1; return 0x3b1; - case 0x1f01: - consumed = 1; return 0x3b1; - case 0x1f02: - consumed = 1; return 0x3b1; - case 0x1f03: - consumed = 1; return 0x3b1; - case 0x1f04: - consumed = 1; return 0x3b1; - case 0x1f05: - consumed = 1; return 0x3b1; - case 0x1f06: - consumed = 1; return 0x3b1; - case 0x1f07: - consumed = 1; return 0x3b1; - case 0x1f08: - consumed = 1; return 0x391; - case 0x1f09: - consumed = 1; return 0x391; - case 0x1f0a: - consumed = 1; return 0x391; - case 0x1f0b: - consumed = 1; return 0x391; - case 0x1f0c: - consumed = 1; return 0x391; - case 0x1f0d: - consumed = 1; return 0x391; - case 0x1f0e: - consumed = 1; return 0x391; - case 0x1f0f: - consumed = 1; return 0x391; - case 0x1f10: - consumed = 1; return 0x3b5; - case 0x1f11: - consumed = 1; return 0x3b5; - case 0x1f12: - consumed = 1; return 0x3b5; - case 0x1f13: - consumed = 1; return 0x3b5; - case 0x1f14: - consumed = 1; return 0x3b5; - case 0x1f15: - consumed = 1; return 0x3b5; - case 0x1f18: - consumed = 1; return 0x395; - case 0x1f19: - consumed = 1; return 0x395; - case 0x1f1a: - consumed = 1; return 0x395; - case 0x1f1b: - consumed = 1; return 0x395; - case 0x1f1c: - consumed = 1; return 0x395; - case 0x1f1d: - consumed = 1; return 0x395; - case 0x1f20: - consumed = 1; return 0x3b7; - case 0x1f21: - consumed = 1; return 0x3b7; - case 0x1f22: - consumed = 1; return 0x3b7; - case 0x1f23: - consumed = 1; return 0x3b7; - case 0x1f24: - consumed = 1; return 0x3b7; - case 0x1f25: - consumed = 1; return 0x3b7; - case 0x1f26: - consumed = 1; return 0x3b7; - case 0x1f27: - consumed = 1; return 0x3b7; - case 0x1f28: - consumed = 1; return 0x397; - case 0x1f29: - consumed = 1; return 0x397; - case 0x1f2a: - consumed = 1; return 0x397; - case 0x1f2b: - consumed = 1; return 0x397; - case 0x1f2c: - consumed = 1; return 0x397; - case 0x1f2d: - consumed = 1; return 0x397; - case 0x1f2e: - consumed = 1; return 0x397; - case 0x1f2f: - consumed = 1; return 0x397; - case 0x1f30: - consumed = 1; return 0x3b9; - case 0x1f31: - consumed = 1; return 0x3b9; - case 0x1f32: - consumed = 1; return 0x3b9; - case 0x1f33: - consumed = 1; return 0x3b9; - case 0x1f34: - consumed = 1; return 0x3b9; - case 0x1f35: - consumed = 1; return 0x3b9; - case 0x1f36: - consumed = 1; return 0x3b9; - case 0x1f37: - consumed = 1; return 0x3b9; - case 0x1f38: - consumed = 1; return 0x399; - case 0x1f39: - consumed = 1; return 0x399; - case 0x1f3a: - consumed = 1; return 0x399; - case 0x1f3b: - consumed = 1; return 0x399; - case 0x1f3c: - consumed = 1; return 0x399; - case 0x1f3d: - consumed = 1; return 0x399; - case 0x1f3e: - consumed = 1; return 0x399; - case 0x1f3f: - consumed = 1; return 0x399; - case 0x1f40: - consumed = 1; return 0x3bf; - case 0x1f41: - consumed = 1; return 0x3bf; - case 0x1f42: - consumed = 1; return 0x3bf; - case 0x1f43: - consumed = 1; return 0x3bf; - case 0x1f44: - consumed = 1; return 0x3bf; - case 0x1f45: - consumed = 1; return 0x3bf; - case 0x1f48: - consumed = 1; return 0x39f; - case 0x1f49: - consumed = 1; return 0x39f; - case 0x1f4a: - consumed = 1; return 0x39f; - case 0x1f4b: - consumed = 1; return 0x39f; - case 0x1f4c: - consumed = 1; return 0x39f; - case 0x1f4d: - consumed = 1; return 0x39f; - case 0x1f50: - consumed = 1; return 0x3c5; - case 0x1f51: - consumed = 1; return 0x3c5; - case 0x1f52: - consumed = 1; return 0x3c5; - case 0x1f53: - consumed = 1; return 0x3c5; - case 0x1f54: - consumed = 1; return 0x3c5; - case 0x1f55: - consumed = 1; return 0x3c5; - case 0x1f56: - consumed = 1; return 0x3c5; - case 0x1f57: - consumed = 1; return 0x3c5; - case 0x1f59: - consumed = 1; return 0x3a5; - case 0x1f5b: - consumed = 1; return 0x3a5; - case 0x1f5d: - consumed = 1; return 0x3a5; - case 0x1f5f: - consumed = 1; return 0x3a5; - case 0x1f60: - consumed = 1; return 0x3c9; - case 0x1f61: - consumed = 1; return 0x3c9; - case 0x1f62: - consumed = 1; return 0x3c9; - case 0x1f63: - consumed = 1; return 0x3c9; - case 0x1f64: - consumed = 1; return 0x3c9; - case 0x1f65: - consumed = 1; return 0x3c9; - case 0x1f66: - consumed = 1; return 0x3c9; - case 0x1f67: - consumed = 1; return 0x3c9; - case 0x1f68: - consumed = 1; return 0x3a9; - case 0x1f69: - consumed = 1; return 0x3a9; - case 0x1f6a: - consumed = 1; return 0x3a9; - case 0x1f6b: - consumed = 1; return 0x3a9; - case 0x1f6c: - consumed = 1; return 0x3a9; - case 0x1f6d: - consumed = 1; return 0x3a9; - case 0x1f6e: - consumed = 1; return 0x3a9; - case 0x1f6f: - consumed = 1; return 0x3a9; - case 0x1f70: - consumed = 1; return 0x3b1; - case 0x1f71: - consumed = 1; return 0x3b1; - case 0x1f72: - consumed = 1; return 0x3b5; - case 0x1f73: - consumed = 1; return 0x3b5; - case 0x1f74: - consumed = 1; return 0x3b7; - case 0x1f75: - consumed = 1; return 0x3b7; - case 0x1f76: - consumed = 1; return 0x3b9; - case 0x1f77: - consumed = 1; return 0x3b9; - case 0x1f78: - consumed = 1; return 0x3bf; - case 0x1f79: - consumed = 1; return 0x3bf; - case 0x1f7a: - consumed = 1; return 0x3c5; - case 0x1f7b: - consumed = 1; return 0x3c5; - case 0x1f7c: - consumed = 1; return 0x3c9; - case 0x1f7d: - consumed = 1; return 0x3c9; - case 0x1f80: - consumed = 1; return 0x3b1; - case 0x1f81: - consumed = 1; return 0x3b1; - case 0x1f82: - consumed = 1; return 0x3b1; - case 0x1f83: - consumed = 1; return 0x3b1; - case 0x1f84: - consumed = 1; return 0x3b1; - case 0x1f85: - consumed = 1; return 0x3b1; - case 0x1f86: - consumed = 1; return 0x3b1; - case 0x1f87: - consumed = 1; return 0x3b1; - case 0x1f88: - consumed = 1; return 0x391; - case 0x1f89: - consumed = 1; return 0x391; - case 0x1f8a: - consumed = 1; return 0x391; - case 0x1f8b: - consumed = 1; return 0x391; - case 0x1f8c: - consumed = 1; return 0x391; - case 0x1f8d: - consumed = 1; return 0x391; - case 0x1f8e: - consumed = 1; return 0x391; - case 0x1f8f: - consumed = 1; return 0x391; - case 0x1f90: - consumed = 1; return 0x3b7; - case 0x1f91: - consumed = 1; return 0x3b7; - case 0x1f92: - consumed = 1; return 0x3b7; - case 0x1f93: - consumed = 1; return 0x3b7; - case 0x1f94: - consumed = 1; return 0x3b7; - case 0x1f95: - consumed = 1; return 0x3b7; - case 0x1f96: - consumed = 1; return 0x3b7; - case 0x1f97: - consumed = 1; return 0x3b7; - case 0x1f98: - consumed = 1; return 0x397; - case 0x1f99: - consumed = 1; return 0x397; - case 0x1f9a: - consumed = 1; return 0x397; - case 0x1f9b: - consumed = 1; return 0x397; - case 0x1f9c: - consumed = 1; return 0x397; - case 0x1f9d: - consumed = 1; return 0x397; - case 0x1f9e: - consumed = 1; return 0x397; - case 0x1f9f: - consumed = 1; return 0x397; - case 0x1fa0: - consumed = 1; return 0x3c9; - case 0x1fa1: - consumed = 1; return 0x3c9; - case 0x1fa2: - consumed = 1; return 0x3c9; - case 0x1fa3: - consumed = 1; return 0x3c9; - case 0x1fa4: - consumed = 1; return 0x3c9; - case 0x1fa5: - consumed = 1; return 0x3c9; - case 0x1fa6: - consumed = 1; return 0x3c9; - case 0x1fa7: - consumed = 1; return 0x3c9; - case 0x1fa8: - consumed = 1; return 0x3a9; - case 0x1fa9: - consumed = 1; return 0x3a9; - case 0x1faa: - consumed = 1; return 0x3a9; - case 0x1fab: - consumed = 1; return 0x3a9; - case 0x1fac: - consumed = 1; return 0x3a9; - case 0x1fad: - consumed = 1; return 0x3a9; - case 0x1fae: - consumed = 1; return 0x3a9; - case 0x1faf: - consumed = 1; return 0x3a9; - case 0x1fb0: - consumed = 1; return 0x3b1; - case 0x1fb1: - consumed = 1; return 0x3b1; - case 0x1fb2: - consumed = 1; return 0x3b1; - case 0x1fb3: - consumed = 1; return 0x3b1; - case 0x1fb4: - consumed = 1; return 0x3b1; - case 0x1fb6: - consumed = 1; return 0x3b1; - case 0x1fb7: - consumed = 1; return 0x3b1; - case 0x1fb8: - consumed = 1; return 0x391; - case 0x1fb9: - consumed = 1; return 0x391; - case 0x1fba: - consumed = 1; return 0x391; - case 0x1fbb: - consumed = 1; return 0x391; - case 0x1fbc: - consumed = 1; return 0x391; - case 0x1fc2: - consumed = 1; return 0x3b7; - case 0x1fc3: - consumed = 1; return 0x3b7; - case 0x1fc4: - consumed = 1; return 0x3b7; - case 0x1fc6: - consumed = 1; return 0x3b7; - case 0x1fc7: - consumed = 1; return 0x3b7; - case 0x1fc8: - consumed = 1; return 0x395; - case 0x1fc9: - consumed = 1; return 0x395; - case 0x1fca: - consumed = 1; return 0x397; - case 0x1fcb: - consumed = 1; return 0x397; - case 0x1fcc: - consumed = 1; return 0x397; - case 0x1fd0: - consumed = 1; return 0x3b9; - case 0x1fd1: - consumed = 1; return 0x3b9; - case 0x1fd2: - consumed = 1; return 0x3b9; - case 0x1fd3: - consumed = 1; return 0x3b9; - case 0x1fd6: - consumed = 1; return 0x3b9; - case 0x1fd7: - consumed = 1; return 0x3b9; - case 0x1fd8: - consumed = 1; return 0x399; - case 0x1fd9: - consumed = 1; return 0x399; - case 0x1fda: - consumed = 1; return 0x399; - case 0x1fdb: - consumed = 1; return 0x399; - case 0x1fe0: - consumed = 1; return 0x3c5; - case 0x1fe1: - consumed = 1; return 0x3c5; - case 0x1fe2: - consumed = 1; return 0x3c5; - case 0x1fe3: - consumed = 1; return 0x3c5; - case 0x1fe4: - consumed = 1; return 0x3c1; - case 0x1fe5: - consumed = 1; return 0x3c1; - case 0x1fe6: - consumed = 1; return 0x3c5; - case 0x1fe7: - consumed = 1; return 0x3c5; - case 0x1fe8: - consumed = 1; return 0x3a5; - case 0x1fe9: - consumed = 1; return 0x3a5; - case 0x1fea: - consumed = 1; return 0x3a5; - case 0x1feb: - consumed = 1; return 0x3a5; - case 0x1fec: - consumed = 1; return 0x3a1; - case 0x1ff2: - consumed = 1; return 0x3c9; - case 0x1ff3: - consumed = 1; return 0x3c9; - case 0x1ff4: - consumed = 1; return 0x3c9; - case 0x1ff6: - consumed = 1; return 0x3c9; - case 0x1ff7: - consumed = 1; return 0x3c9; - case 0x1ff8: - consumed = 1; return 0x39f; - case 0x1ff9: - consumed = 1; return 0x39f; - case 0x1ffa: - consumed = 1; return 0x3a9; - case 0x1ffb: - consumed = 1; return 0x3a9; - case 0x1ffc: - consumed = 1; return 0x3a9; - case 0xfb1d: - consumed = 1; return 0x5d9; - case 0xfb2a: - consumed = 1; return 0x5e9; - case 0xfb2b: - consumed = 1; return 0x5e9; - case 0xfb2c: - consumed = 1; return 0x5e9; - case 0xfb2d: - consumed = 1; return 0x5e9; - case 0xfb2e: - consumed = 1; return 0x5d0; - case 0xfb2f: - consumed = 1; return 0x5d0; - case 0xfb30: - consumed = 1; return 0x5d0; - case 0xfb31: - consumed = 1; return 0x5d1; - case 0xfb32: - consumed = 1; return 0x5d2; - case 0xfb33: - consumed = 1; return 0x5d3; - case 0xfb34: - consumed = 1; return 0x5d4; - case 0xfb35: - consumed = 1; return 0x5d5; - case 0xfb36: - consumed = 1; return 0x5d6; - case 0xfb38: - consumed = 1; return 0x5d8; - case 0xfb39: - consumed = 1; return 0x5d9; - case 0xfb3a: - consumed = 1; return 0x5da; - case 0xfb3b: - consumed = 1; return 0x5db; - case 0xfb3c: - consumed = 1; return 0x5dc; - case 0xfb3e: - consumed = 1; return 0x5de; - case 0xfb40: - consumed = 1; return 0x5e0; - case 0xfb41: - consumed = 1; return 0x5e1; - case 0xfb43: - consumed = 1; return 0x5e3; - case 0xfb44: - consumed = 1; return 0x5e4; - case 0xfb46: - consumed = 1; return 0x5e6; - case 0xfb47: - consumed = 1; return 0x5e7; - case 0xfb48: - consumed = 1; return 0x5e8; - case 0xfb49: - consumed = 1; return 0x5e9; - case 0xfb4a: - consumed = 1; return 0x5ea; - case 0xfb4b: - consumed = 1; return 0x5d5; - case 0xfb4c: - consumed = 1; return 0x5d1; - case 0xfb4d: - consumed = 1; return 0x5db; - case 0xfb4e: - consumed = 1; return 0x5e4; - } - } - if ( size ) - { - consumed = 1; return *in; - } - consumed = 0; return 0; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/indexedzip.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/indexedzip.cc deleted file mode 100644 index 82301133bf..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/indexedzip.cc +++ /dev/null @@ -1,280 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "indexedzip.hh" -#include "zipfile.hh" -#include -#include "gddebug.hh" -#include "utf8.hh" -#include "iconv.hh" -#include "wstring_qt.hh" - -#include - -using namespace BtreeIndexing; -using std::vector; - -bool IndexedZip::openZipFile( QString const & name ) -{ - zip.setFileName( name ); - - zipIsOpen = zip.open( QFile::ReadOnly ); - - return zipIsOpen; -} - -bool IndexedZip::hasFile( gd::wstring const & name ) -{ - if ( !zipIsOpen ) - return false; - - vector< WordArticleLink > links = findArticles( name ); - - return !links.empty(); -} - -bool IndexedZip::loadFile( gd::wstring const & name, vector< char > & data ) -{ - if ( !zipIsOpen ) - return false; - - vector< WordArticleLink > links = findArticles( name ); - - if ( links.empty() ) - return false; - - return loadFile( links[ 0 ].articleOffset, data ); -} - -bool IndexedZip::loadFile( uint32_t offset, vector< char > & data ) -{ - if ( !zipIsOpen ) - return false; - - // Now seek into the zip file and read its header - - if ( !zip.seek( offset ) ) - return false; - - ZipFile::LocalFileHeader header; - - if ( !ZipFile::readLocalHeader( zip, header ) ) - { - GD_DPRINTF( "Failed to load header\n" ); - return false; - } - - // Which algorithm was used? - - switch( header.compressionMethod ) - { - case ZipFile::Uncompressed: - GD_DPRINTF( "Uncompressed\n" ); - data.resize( header.uncompressedSize ); - return (size_t) zip.read( &data.front(), data.size() ) == data.size(); - - case ZipFile::Deflated: - { - GD_DPRINTF( "Deflated\n" ); - - // Now do the deflation - - QByteArray compressedData = zip.read( header.compressedSize ); - - if ( compressedData.size() != (int)header.compressedSize ) - return false; - - data.resize( header.uncompressedSize ); - - z_stream stream; - - memset( &stream, 0, sizeof( stream ) ); - - stream.next_in = ( Bytef * ) compressedData.data(); - stream.avail_in = compressedData.size(); - stream.next_out = ( Bytef * ) &data.front(); - stream.avail_out = data.size(); - - if ( inflateInit2( &stream, -MAX_WBITS ) != Z_OK ) - { - data.clear(); - return false; - } - - if ( inflate( &stream, Z_FINISH ) != Z_STREAM_END ) - { - GD_DPRINTF( "Not zstream end!" ); - - data.clear(); - - inflateEnd( &stream ); - - return false; - } - - inflateEnd( &stream ); - - return true; - } - - default: - - return false; - } -} - -bool IndexedZip::indexFile( BtreeIndexing::IndexedWords &zipFileNames, quint32 * filesCount ) -{ - if ( !zipIsOpen ) - return false; - if ( !ZipFile::positionAtCentralDir( zip ) ) - return false; - - // File seems to be a valid zip file - - - QTextCodec * localeCodec = QTextCodec::codecForLocale(); - - ZipFile::CentralDirEntry entry; - - bool alreadyCounted; - if( filesCount ) - *filesCount = 0; - - while( ZipFile::readNextEntry( zip, entry ) ) - { - if ( entry.compressionMethod == ZipFile::Unsupported ) - { - qWarning( "Zip warning: compression method unsupported -- skipping file \"%s\"\n", - entry.fileName.data() ); - continue; - } - - // Check if the file name has some non-ascii letters. - - unsigned char const * ptr = ( unsigned char const * ) - entry.fileName.constData(); - - bool hasNonAscii = false; - - for( ; ; ) - { - if ( *ptr & 0x80 ) - { - hasNonAscii = true; - break; - } - else - if ( !*ptr++ ) - break; - } - - alreadyCounted = false; - - if ( !hasNonAscii ) - { - // Add entry as is - - zipFileNames.addSingleWord( Utf8::decode( entry.fileName.data() ), - entry.localHeaderOffset ); - if( filesCount ) - *filesCount += 1; - } - else - { - // Try assuming different encodings. Those are UTF8, system locale and two - // Russian ones (Windows and Windows OEM). Unfortunately, zip - // files do not say which encoding they utilize. - - // Utf8 - try - { - wstring decoded = Utf8::decode( entry.fileName.constData() ); - - zipFileNames.addSingleWord( decoded, - entry.localHeaderOffset ); - if( filesCount != 0 && !alreadyCounted ) - { - *filesCount += 1; - alreadyCounted = true; - } - } - catch( Utf8::exCantDecode ) - { - // Failed to decode - } - - if( !entry.fileNameInUTF8 ) - { - wstring nameInSystemLocale; - - // System locale - if( localeCodec ) - { - QString name = localeCodec->toUnicode( entry.fileName.constData(), - entry.fileName.size() ); - nameInSystemLocale = gd::toWString( name ); - if( !nameInSystemLocale.empty() ) - { - zipFileNames.addSingleWord( nameInSystemLocale, - entry.localHeaderOffset ); - - if( filesCount != 0 && !alreadyCounted ) - { - *filesCount += 1; - alreadyCounted = true; - } - } - } - - - // CP866 - try - { - wstring decoded = Iconv::toWstring( "CP866", entry.fileName.constData(), - entry.fileName.size() ); - - if( nameInSystemLocale.compare( decoded ) != 0 ) - { - zipFileNames.addSingleWord( decoded, - entry.localHeaderOffset ); - - if( filesCount != 0 && !alreadyCounted ) - { - *filesCount += 1; - alreadyCounted = true; - } - } - } - catch( Iconv::Ex ) - { - // Failed to decode - } - - // CP1251 - try - { - wstring decoded = Iconv::toWstring( "CP1251", entry.fileName.constData(), - entry.fileName.size() ); - - if( nameInSystemLocale.compare( decoded ) != 0 ) - { - zipFileNames.addSingleWord( decoded, - entry.localHeaderOffset ); - - if( filesCount != 0 && !alreadyCounted ) - { - *filesCount += 1; - alreadyCounted = true; - } - } - } - catch( Iconv::Ex ) - { - // Failed to decode - } - } - } - } - return true; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/indexedzip.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/indexedzip.hh deleted file mode 100644 index 837f1e85af..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/indexedzip.hh +++ /dev/null @@ -1,45 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __INDEXEDZIP_HH_INCLUDED__ -#define __INDEXEDZIP_HH_INCLUDED__ - -#include "btreeidx.hh" -#include - -/// Allows using a btree index to read zip files. Basically built on top of -/// the base dictionary infrastructure adapted for zips. -class IndexedZip: public BtreeIndexing::BtreeIndex -{ - QFile zip; - bool zipIsOpen; - -public: - - IndexedZip(): zipIsOpen( false ) - {} - - /// Opens the index. The values are those previously returned by buildIndex(). - using BtreeIndexing::BtreeIndex::openIndex; - - /// Opens the zip file itself. Returns true if succeeded, false otherwise. - bool openZipFile( QString const & ); - - /// Returns true if the zip is open, false otherwise. - bool isOpen() const - { return zipIsOpen; } - - /// Checks whether the given file exists in the zip file or not. - /// Note that this function is thread-safe, since it does not access zip file. - bool hasFile( gd::wstring const & name ); - - /// Attempts loading the given file into the given vector. Returns true on - /// success, false otherwise. - bool loadFile( gd::wstring const & name, std::vector< char > & ); - bool loadFile( uint32_t offset, std::vector< char > & ); - - /// Index compressed files in zip file - bool indexFile( BtreeIndexing::IndexedWords &zipFileNames, quint32 * filesCount = 0 ); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.cc deleted file mode 100644 index 0db6909b9c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.cc +++ /dev/null @@ -1,87 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "initializing.hh" -#include - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) -#include -#include -#include -#endif - -Initializing::Initializing( QWidget * parent, bool showOnStartup ): QDialog( parent ) -{ - ui.setupUi( this ); - setWindowFlags( Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | - Qt::WindowMinimizeButtonHint ); - - #ifndef Q_OS_MAC - setWindowIcon( QIcon( ":/icons/programicon.png" ) ); - #else - setWindowIcon( QIcon( ":/icons/macicon.png" ) ); - #endif - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - - // Style "windowsvista" in Qt5 turn off progress bar animation for classic appearance - // We use simply "windows" style instead for this case - - barStyle = 0; - oldBarStyle = 0; - - if( QSysInfo::windowsVersion() >= QSysInfo::WV_VISTA - && ( QSysInfo::windowsVersion() & QSysInfo::WV_NT_based ) - && !IsThemeActive() ) - { - barStyle = QStyleFactory::create( "windows" ); - - if( barStyle ) - { - oldBarStyle = ui.progressBar->style(); - ui.progressBar->setStyle( barStyle ); - } - } - -#endif - - if ( showOnStartup ) - { - ui.operation->setText( tr( "Please wait..." ) ); - ui.dictionary->hide(); - ui.progressBar->hide(); - show(); - } -} - -void Initializing::indexing( QString const & dictionaryName ) -{ - ui.operation->setText( tr( "Please wait while indexing dictionary" ) ); - ui.dictionary->setText( dictionaryName ); - ui.dictionary->show(); - ui.progressBar->show(); - adjustSize(); - show(); -} - -void Initializing::closeEvent( QCloseEvent * ev ) -{ - ev->ignore(); -} - -void Initializing::reject() -{ -} - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - -Initializing::~Initializing() -{ - if( barStyle ) - { - ui.progressBar->setStyle( oldBarStyle ); - delete barStyle; - } -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.hh deleted file mode 100644 index 99eb8fd56d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.hh +++ /dev/null @@ -1,37 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __INITIALIZING_HH_INCLUDED__ -#define __INITIALIZING_HH_INCLUDED__ - -#include -#include "ui_initializing.h" - -class Initializing: public QDialog -{ - Q_OBJECT - -public: - - Initializing( QWidget * parent, bool showOnStartup ); -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - ~Initializing(); -#endif - -public slots: - - void indexing( QString const & dictionaryName ); - -private: - - virtual void closeEvent( QCloseEvent * ); - virtual void reject(); -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) && defined( Q_OS_WIN32 ) - QStyle * barStyle, * oldBarStyle; -#endif - - Ui::Initializing ui; -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.ui deleted file mode 100644 index 6b789cebe9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/initializing.ui +++ /dev/null @@ -1,74 +0,0 @@ - - Initializing - - - Qt::ApplicationModal - - - - 0 - 0 - 326 - 84 - - - - - 326 - 0 - - - - GoldenDict - Initializing - - - - - - Please wait while indexing dictionary - - - Qt::AlignCenter - - - - - - - - 75 - true - - - - Dictionary Name - - - false - - - Qt::AlignCenter - - - true - - - - - - - 0 - - - -1 - - - Qt::AlignCenter - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/instances.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/instances.cc deleted file mode 100644 index a9af71ae90..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/instances.cc +++ /dev/null @@ -1,205 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "instances.hh" -#include -#include - -namespace Instances { - -using std::set; -using std::string; - -Group::Group( Config::Group const & cfgGroup, - vector< sptr< Dictionary::Class > > const & allDictionaries ): - id( cfgGroup.id ), - name( cfgGroup.name ), - icon( cfgGroup.icon ), - shortcut( cfgGroup.shortcut ) -{ - if ( !cfgGroup.iconData.isEmpty() ) - iconData = iconFromData( cfgGroup.iconData ); - - for( unsigned x = 0; x < (unsigned)cfgGroup.dictionaries.size(); ++x ) - { - std::string id = cfgGroup.dictionaries[ x ].id.toStdString(); - - bool added = false; - - for( unsigned y = allDictionaries.size(); y--; ) - if ( allDictionaries[ y ]->getId() == id ) - { - dictionaries.push_back( allDictionaries[ y ] ); - added = true; - break; - } - - if ( !added ) - { - // Try matching by name instead - QString qname = cfgGroup.dictionaries[ x ].name; - std::string name = qname.toUtf8().data(); - - if ( !qname.isEmpty() ) - { - - // To avoid duplicates in dictionaries list we don't add dictionary - // if it with such name was already added or presented in rest of list - - unsigned n; - for( n = 0; n < dictionaries.size(); n++ ) - if( dictionaries[ n ]->getName() == name ) - break; - if( n < dictionaries.size() ) - continue; - - for( n = x + 1; n < (unsigned)cfgGroup.dictionaries.size(); n++ ) - if( cfgGroup.dictionaries[ n ].name == qname ) - break; - if( n < (unsigned)cfgGroup.dictionaries.size() ) - continue; - - for( unsigned y = 0; y < allDictionaries.size(); ++y ) - if ( allDictionaries[ y ]->getName() == name ) - { - dictionaries.push_back( allDictionaries[ y ] ); - break; - } - } - } - } -} - -Group::Group( QString const & name_ ): id( 0 ), name( name_ ) -{ -} - -Config::Group Group::makeConfigGroup() -{ - Config::Group result; - - result.id = id; - result.name = name; - result.icon = icon; - result.shortcut = shortcut; - - if ( !iconData.isNull() ) - { - QDataStream stream( &result.iconData, QIODevice::WriteOnly ); - - stream << iconData; - } - - for( unsigned x = 0; x < dictionaries.size(); ++x ) - result.dictionaries.push_back( - Config::DictionaryRef( dictionaries[ x ]->getId().c_str(), - QString::fromUtf8( dictionaries[ x ]->getName().c_str() ) ) ); - - return result; -} - -QIcon Group::makeIcon() const -{ - if ( !iconData.isNull() ) - return iconData; - - QIcon i = icon.size() ? - QIcon( ":/flags/" + icon ) : QIcon(); - - return i; -} - -void Group::checkMutedDictionaries( Config::MutedDictionaries * mutedDictionaries ) const -{ - Config::MutedDictionaries temp; - - for( unsigned x = 0; x < dictionaries.size(); x++ ) - { - QString id = QString::fromStdString( dictionaries[ x ]->getId() ); - if( mutedDictionaries->contains( id ) ) - temp.insert( id ); - } - * mutedDictionaries = temp; -} - -Group * Groups::findGroup( unsigned id ) -{ - for( unsigned x = 0; x < size(); ++x ) - if ( operator [] ( x ).id == id ) - return &( operator [] ( x ) ); - - return 0; -} - -Group const * Groups::findGroup( unsigned id ) const -{ - for( unsigned x = 0; x < size(); ++x ) - if ( operator [] ( x ).id == id ) - return &( operator [] ( x ) ); - - return 0; -} - -void complementDictionaryOrder( Group & group, - Group const & inactiveDictionaries, - vector< sptr< Dictionary::Class > > const & dicts ) -{ - set< string > presentIds; - - for( unsigned x = group.dictionaries.size(); x--; ) - presentIds.insert( group.dictionaries[ x ]->getId()); - - for( unsigned x = inactiveDictionaries.dictionaries.size(); x--; ) - presentIds.insert( inactiveDictionaries.dictionaries[ x ]->getId() ); - - for( unsigned x = 0; x < dicts.size(); ++x ) - { - if ( presentIds.find( dicts[ x ]->getId() ) == presentIds.end() ) - group.dictionaries.push_back( dicts[ x ] ); - } -} - -void updateNames( Config::Group & group, - vector< sptr< Dictionary::Class > > const & allDictionaries ) -{ - - for( unsigned x = group.dictionaries.size(); x--; ) - { - std::string id = group.dictionaries[ x ].id.toStdString(); - - for( unsigned y = allDictionaries.size(); y--; ) - if ( allDictionaries[ y ]->getId() == id ) - { - group.dictionaries[ x ].name = QString::fromUtf8( allDictionaries[ y ]->getName().c_str() ); - break; - } - } -} - -void updateNames( Config::Groups & groups, - vector< sptr< Dictionary::Class > > const & allDictionaries ) -{ - for( int x = 0; x < groups.size(); ++x ) - updateNames( groups[ x ], allDictionaries ); -} - -void updateNames( Config::Class & cfg, - vector< sptr< Dictionary::Class > > const & allDictionaries ) -{ - updateNames( cfg.dictionaryOrder, allDictionaries ); - updateNames( cfg.inactiveDictionaries, allDictionaries ); - updateNames( cfg.groups, allDictionaries ); -} - -QIcon iconFromData( QByteArray const & iconData ) -{ - QDataStream stream( iconData ); - - QIcon result; - - stream >> result; - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/instances.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/instances.hh deleted file mode 100644 index 58dd31df38..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/instances.hh +++ /dev/null @@ -1,95 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __INSTANCES_HH_INCLUDED__ -#define __INSTANCES_HH_INCLUDED__ - -#include "config.hh" -#include "dictionary.hh" -#include -#include - -// This complements Config, providing instances for the stored configurations. -// Simply put, it can convert groups to ones which hold references to -// dictionaries directly, instead of only having their ids, and can also convert -// them back. - -namespace Instances { - -using std::vector; - -struct Group -{ - unsigned id; - QString name, icon; - QIcon iconData; - QKeySequence shortcut; - vector< sptr< Dictionary::Class > > dictionaries; - - /// Instantiates the given group from its configuration. If some dictionary - /// wasn't found, it just skips it. - Group( Config::Group const & cfgGroup, - vector< sptr< Dictionary::Class > > const & allDictionaries ); - - /// Creates an empty group. - Group( QString const & name_ ); - - /// Makes the configuration group from the current contents. - Config::Group makeConfigGroup(); - - /// Makes an icon object for this group, based on the icon's name or iconData. - QIcon makeIcon() const; - - /// Remove id's if not presented in group dictionaries - void checkMutedDictionaries( Config::MutedDictionaries * mutedDictionaries ) const; - - // Some constants - - /// The id of the 'All' group - static const unsigned AllGroupId = UINT_MAX - 1; - - /// The id of the fictious 'Help' group - static const unsigned HelpGroupId = UINT_MAX; - - /// Invalid value, used to specify that no group id is specified at all. - static const unsigned NoGroupId = 0; -}; - -struct Groups: public vector< Group > -{ - /// Tries finding the given group by its id. Returns the group found, or - /// 0 if there's no such group. - Group * findGroup( unsigned id ); - Group const * findGroup( unsigned id ) const; -}; - -/// Adds any dictionaries not already present in the given group or in -/// inactiveDictionaires to its end. Meant to be used with dictionaryOrder -/// special group. -void complementDictionaryOrder( Group & dictionaryOrder, - Group const & inactiveDictionaries, - vector< sptr< Dictionary::Class > > const & - allDictionaries ); - -/// For any dictionaries present in the group, updates their names to match -/// the dictionaries they refer to in their current form, if they exist. -/// If the dictionary instance can't be located, the name is left untouched. -void updateNames( Config::Group &, - vector< sptr< Dictionary::Class > > const & allDictionaries ); - -/// Does updateNames() for a set of given groups. -void updateNames( Config::Groups &, - vector< sptr< Dictionary::Class > > const & allDictionaries ); - -/// Does updateNames() for any relevant dictionary groups present in the -/// configuration. -void updateNames( Config::Class &, - vector< sptr< Dictionary::Class > > const & allDictionaries ); - -/// Creates icon from icon data. Used by Group, but also by others who work -/// with icon data directly. -QIcon iconFromData( QByteArray const & ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/keyboardstate.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/keyboardstate.cc deleted file mode 100644 index 29c986ff74..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/keyboardstate.cc +++ /dev/null @@ -1,54 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "keyboardstate.hh" -#include // To get Qt Q_OS defines - -#ifdef Q_OS_WIN32 -#include -#elif defined(HAVE_X11) -#include -#include -#include -#elif defined Q_OS_MAC -#define __SECURITYHI__ -#include -#endif - -bool KeyboardState::checkModifiersPressed( int mask ) -{ - #if defined(Q_WS_QWS) - return false; - #elif defined(Q_OS_WIN32) - - return !( - ( mask & Alt && !( GetAsyncKeyState( VK_MENU ) & 0x8000 ) ) || - ( mask & Ctrl && !( GetAsyncKeyState( VK_CONTROL ) & 0x8000 ) ) || - ( mask & Shift && !( GetAsyncKeyState( VK_SHIFT ) & 0x8000 ) ) || - ( mask & LeftAlt && !( GetAsyncKeyState( VK_LMENU ) & 0x8000 ) ) || - ( mask & RightAlt && !( GetAsyncKeyState( VK_RMENU ) & 0x8000 ) ) || - ( mask & LeftCtrl && !( GetAsyncKeyState( VK_LCONTROL ) & 0x8000 ) ) || - ( mask & RightCtrl && !( GetAsyncKeyState( VK_RCONTROL ) & 0x8000 ) ) || - ( mask & LeftShift && !( GetAsyncKeyState( VK_LSHIFT ) & 0x8000 ) ) || - ( mask & RightShift && !( GetAsyncKeyState( VK_RSHIFT ) & 0x8000 ) ) ); - - #elif defined Q_OS_MAC - UInt32 keys = GetCurrentKeyModifiers(); - return !( - ( mask & Alt && !( keys & ( 1 << optionKeyBit ) ) ) || - ( mask & Ctrl && !( keys & ( 1 << cmdKeyBit ) ) ) || - ( mask & Shift && !( keys & ( 1 << shiftKeyBit ) ) ) || - ( mask & Win && !( keys & ( 1 << controlKeyBit ) ) ) ); - #else - XkbStateRec state; - - XkbGetState( QX11Info::display(), XkbUseCoreKbd, &state ); - - return !( - ( mask & Alt && !( state.base_mods & Mod1Mask ) ) || - ( mask & Ctrl && !( state.base_mods & ControlMask ) ) || - ( mask & Shift && !( state.base_mods & ShiftMask ) ) || - ( mask & Win && !( state.base_mods & Mod4Mask ) ) ); - #endif -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/keyboardstate.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/keyboardstate.hh deleted file mode 100644 index a48e60c0c5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/keyboardstate.hh +++ /dev/null @@ -1,33 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __KEYBOARDSTATE_HH_INCLUDED__ -#define __KEYBOARDSTATE_HH_INCLUDED__ - -/// Since Qt doesn't provide a way to test for keyboard modifiers state -/// when the app isn't in focus, we have to implement this separately for -/// each platform. -class KeyboardState -{ -public: - - enum Modifier - { - Alt = 1, - Ctrl = 2, - Shift = 4, - Win = 8, // Ironically, Linux only, since it's no use under Windows - LeftAlt = 16, // Those Left-Right are Windows-only, at least for now - RightAlt = 32, - LeftCtrl = 64, - RightCtrl = 128, - LeftShift = 256, - RightShift = 512 - }; - - /// Returns true if all Modifiers present within the given mask are pressed - /// right now. - bool checkModifiersPressed( int mask ); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/langcoder.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/langcoder.cc deleted file mode 100644 index 29f3b044fe..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/langcoder.cc +++ /dev/null @@ -1,462 +0,0 @@ -/* This file is (c) 2008-2013 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "langcoder.hh" -#include "folding.hh" -#include "wstring_qt.hh" -#include "language.hh" - -#ifdef _MSC_VER -#include -#endif - -#include -#include - -LangCoder langCoder; - -// Language codes - -static GDLangCode LangCodes[] = { - - { "aa", "aar", -1, "Afar" }, - { "ab", "abk", -1, "Abkhazian" }, - { "ae", "ave", -1, "Avestan" }, - { "af", "afr", -1, "Afrikaans" }, - { "ak", "aka", -1, "Akan" }, - { "am", "amh", -1, "Amharic" }, - { "an", "arg", -1, "Aragonese" }, - { "ar", "ara", 1, "Arabic" }, - { "as", "asm", -1, "Assamese" }, - { "av", "ava", -1, "Avaric" }, - { "ay", "aym", -1, "Aymara" }, - { "az", "aze", 0, "Azerbaijani" }, - { "ba", "bak", 0, "Bashkir" }, - { "be", "bel", 0, "Belarusian" }, - { "bg", "bul", 0, "Bulgarian" }, - { "bh", "bih", -1, "Bihari" }, - { "bi", "bis", -1, "Bislama" }, - { "bm", "bam", -1, "Bambara" }, - { "bn", "ben", -1, "Bengali" }, - { "bo", "tib", -1, "Tibetan" }, - { "br", "bre", -1, "Breton" }, - { "bs", "bos", 0, "Bosnian" }, - { "ca", "cat", -1, "Catalan" }, - { "ce", "che", -1, "Chechen" }, - { "ch", "cha", -1, "Chamorro" }, - { "co", "cos", -1, "Corsican" }, - { "cr", "cre", -1, "Cree" }, - { "cs", "cze", 0, "Czech" }, - { "cu", "chu", 0, "Church Slavic" }, - { "cv", "chv", 0, "Chuvash" }, - { "cy", "wel", 0, "Welsh" }, - { "da", "dan", 0, "Danish" }, - { "de", "ger", 0, "German" }, - { "dv", "div", -1, "Divehi" }, - { "dz", "dzo", -1, "Dzongkha" }, - { "ee", "ewe", -1, "Ewe" }, - { "el", "gre", 0, "Greek" }, - { "en", "eng", 0, "English" }, - { "eo", "epo", 0, "Esperanto" }, - { "es", "spa", 0, "Spanish" }, - { "et", "est", 0, "Estonian" }, - { "eu", "baq", 0, "Basque" }, - { "fa", "per", -1, "Persian" }, - { "ff", "ful", -1, "Fulah" }, - { "fi", "fin", 0, "Finnish" }, - { "fj", "fij", -1, "Fijian" }, - { "fo", "fao", -1, "Faroese" }, - { "fr", "fre", 0, "French" }, - { "fy", "fry", -1, "Western Frisian" }, - { "ga", "gle", 0, "Irish" }, - { "gd", "gla", 0, "Scottish Gaelic" }, - { "gl", "glg", -1, "Galician" }, - { "gn", "grn", -1, "Guarani" }, - { "gu", "guj", -1, "Gujarati" }, - { "gv", "glv", -1, "Manx" }, - { "ha", "hau", -1, "Hausa" }, - { "he", "heb", 1, "Hebrew" }, - { "hi", "hin", -1, "Hindi" }, - { "ho", "hmo", -1, "Hiri Motu" }, - { "hr", "hrv", 0, "Croatian" }, - { "ht", "hat", -1, "Haitian" }, - { "hu", "hun", 0, "Hungarian" }, - { "hy", "arm", 0, "Armenian" }, - { "hz", "her", -1, "Herero" }, - { "ia", "ina", -1, "Interlingua" }, - { "id", "ind", -1, "Indonesian" }, - { "ie", "ile", -1, "Interlingue" }, - { "ig", "ibo", -1, "Igbo" }, - { "ii", "iii", -1, "Sichuan Yi" }, - { "ik", "ipk", -1, "Inupiaq" }, - { "io", "ido", -1, "Ido" }, - { "is", "ice", -1, "Icelandic" }, - { "it", "ita", 0, "Italian" }, - { "iu", "iku", -1, "Inuktitut" }, - { "ja", "jpn", 0, "Japanese" }, - { "jv", "jav", -1, "Javanese" }, - { "ka", "geo", 0, "Georgian" }, - { "kg", "kon", -1, "Kongo" }, - { "ki", "kik", -1, "Kikuyu" }, - { "kj", "kua", -1, "Kwanyama" }, - { "kk", "kaz", 0, "Kazakh" }, - { "kl", "kal", -1, "Kalaallisut" }, - { "km", "khm", -1, "Khmer" }, - { "kn", "kan", -1, "Kannada" }, - { "ko", "kor", 0, "Korean" }, - { "kr", "kau", -1, "Kanuri" }, - { "ks", "kas", -1, "Kashmiri" }, - { "ku", "kur", -1, "Kurdish" }, - { "kv", "kom", 0, "Komi" }, - { "kw", "cor", -1, "Cornish" }, - { "ky", "kir", -1, "Kirghiz" }, - { "la", "lat", 0, "Latin" }, - { "lb", "ltz", 0, "Luxembourgish" }, - { "lg", "lug", -1, "Ganda" }, - { "li", "lim", -1, "Limburgish" }, - { "ln", "lin", -1, "Lingala" }, - { "lo", "lao", -1, "Lao" }, - { "lt", "lit", 0, "Lithuanian" }, - { "lu", "lub", -1, "Luba-Katanga" }, - { "lv", "lav", 0, "Latvian" }, - { "mg", "mlg", -1, "Malagasy" }, - { "mh", "mah", -1, "Marshallese" }, - { "mi", "mao", -1, "Maori" }, - { "mk", "mac", 0, "Macedonian" }, - { "ml", "mal", -1, "Malayalam" }, - { "mn", "mon", -1, "Mongolian" }, - { "mr", "mar", -1, "Marathi" }, - { "ms", "may", -1, "Malay" }, - { "mt", "mlt", -1, "Maltese" }, - { "my", "bur", -1, "Burmese" }, - { "na", "nau", -1, "Nauru" }, - { "nb", "nob", 0, "Norwegian Bokmal" }, - { "nd", "nde", -1, "North Ndebele" }, - { "ne", "nep", -1, "Nepali" }, - { "ng", "ndo", -1, "Ndonga" }, - { "nl", "dut", -1, "Dutch" }, - { "nn", "nno", -1, "Norwegian Nynorsk" }, - { "no", "nor", 0, "Norwegian" }, - { "nr", "nbl", -1, "South Ndebele" }, - { "nv", "nav", -1, "Navajo" }, - { "ny", "nya", -1, "Chichewa" }, - { "oc", "oci", -1, "Occitan" }, - { "oj", "oji", -1, "Ojibwa" }, - { "om", "orm", -1, "Oromo" }, - { "or", "ori", -1, "Oriya" }, - { "os", "oss", -1, "Ossetian" }, - { "pa", "pan", -1, "Panjabi" }, - { "pi", "pli", -1, "Pali" }, - { "pl", "pol", 0, "Polish" }, - { "ps", "pus", -1, "Pashto" }, - { "pt", "por", 0, "Portuguese" }, - { "qu", "que", -1, "Quechua" }, - { "rm", "roh", -1, "Raeto-Romance" }, - { "rn", "run", -1, "Kirundi" }, - { "ro", "rum", 0, "Romanian" }, - { "ru", "rus", 0, "Russian" }, - { "rw", "kin", -1, "Kinyarwanda" }, - { "sa", "san", -1, "Sanskrit" }, - { "sc", "srd", -1, "Sardinian" }, - { "sd", "snd", -1, "Sindhi" }, - { "se", "sme", -1, "Northern Sami" }, - { "sg", "sag", -1, "Sango" }, - { "sh", "shr", 0, "Serbo-Croatian" }, - { "si", "sin", -1, "Sinhala" }, - { "sk", "slo", 0, "Slovak" }, - { "sl", "slv", 0, "Slovenian" }, - { "sm", "smo", -1, "Samoan" }, - { "sn", "sna", -1, "Shona" }, - { "so", "som", -1, "Somali" }, - { "sq", "alb", 0, "Albanian" }, - { "sr", "srp", 0, "Serbian" }, - { "ss", "ssw", -1, "Swati" }, - { "st", "sot", -1, "Southern Sotho" }, - { "su", "sun", -1, "Sundanese" }, - { "sv", "swe", 0, "Swedish" }, - { "sw", "swa", -1, "Swahili" }, - { "ta", "tam", -1, "Tamil" }, - { "te", "tel", -1, "Telugu" }, - { "tg", "tgk", 0, "Tajik" }, - { "th", "tha", -1, "Thai" }, - { "ti", "tir", -1, "Tigrinya" }, - { "tk", "tuk", 0, "Turkmen" }, - { "tl", "tgl", -1, "Tagalog" }, - { "tn", "tsn", -1, "Tswana" }, - { "to", "ton", -1, "Tonga" }, - { "tr", "tur", 0, "Turkish" }, - { "ts", "tso", -1, "Tsonga" }, - { "tt", "tat", -1, "Tatar" }, - { "tw", "twi", -1, "Twi" }, - { "ty", "tah", -1, "Tahitian" }, - { "ug", "uig", -1, "Uighur" }, - { "uk", "ukr", -1, "Ukrainian" }, - { "ur", "urd", -1, "Urdu" }, - { "uz", "uzb", 0, "Uzbek" }, - { "ve", "ven", -1, "Venda" }, - { "vi", "vie", -1, "Vietnamese" }, - { "vo", "vol", 0, "Volapuk" }, - { "wa", "wln", -1, "Walloon" }, - { "wo", "wol", -1, "Wolof" }, - { "xh", "xho", -1, "Xhosa" }, - { "yi", "yid", -1, "Yiddish" }, - { "yo", "yor", -1, "Yoruba" }, - { "za", "zha", -1, "Zhuang" }, - { "zh", "chi", 0, "Chinese" }, - { "zu", "zul", -1, "Zulu" }, - { "jb", "jbo", 0, "Lojban" }, - - { "", "", 0, "" } -}; - -LangCoder::LangCoder() -{ - for (int i = 0; true; i++) { - const GDLangCode &lc = LangCodes[i]; - if (lc.lang[0] == 0) - break; - codeMap[code2toInt(lc.code)] = i; - } -} - -QString LangCoder::decode(quint32 code) -{ - if (langCoder.codeMap.contains(code)) - return LangCodes[langCoder.codeMap[code]].lang; - - return QString(); -} - -QIcon LangCoder::icon(quint32 code) -{ - if (langCoder.codeMap.contains(code)) - { - const GDLangCode &lc = LangCodes[ langCoder.codeMap[ code ] ]; - return QIcon( ":/flags/" + QString(lc.code) + ".png" ); - } - - return QIcon(); -} - -LangStruct LangCoder::langStruct(quint32 code) -{ - LangStruct ls; - ls.code = code; - ls.order = -1; - if (codeMap.contains(code)) { - int order = codeMap[code]; - const GDLangCode &lc = LangCodes[order]; - ls.order = order; - ls.lang = lc.lang; - ls.icon = QIcon(":/flags/" + QString(lc.code) + ".png"); - } - return ls; -} - -QString LangCoder::intToCode2( quint32 val ) -{ - if ( !val || val == 0xFFffFFff ) - return QString(); - - char code[ 2 ]; - - code[ 0 ] = val & 0xFF; - code[ 1 ] = ( val >> 8 ) & 0xFF; - - return QString::fromLatin1( code, 2 ); -} - -quint32 LangCoder::code3toInt(const std::string& code3) -{ - if (code3.length() < 2) - return 0; - - // this is temporary - char code1 = tolower( code3.at(1) ); - char code0 = tolower( code3.at(0) ); - - return ( ((quint32)code1) << 8 ) + (quint32)code0; -} - -quint32 LangCoder::findIdForLanguage( gd::wstring const & lang ) -{ - gd::wstring langFolded = Folding::apply( lang ); - - for( GDLangCode const * lc = LangCodes; lc->code[ 0 ]; ++lc ) - { - if ( langFolded == Folding::apply( gd::toWString( lc->lang ) ) ) - { - // We've got a match - return code2toInt( lc->code ); - } - } - - return Language::findBlgLangIDByEnglishName( lang ); - //return 0; -} - -quint32 LangCoder::findIdForLanguageCode3( const char * code3 ) -{ - for( GDLangCode const * lc = LangCodes; lc->code[ 0 ]; ++lc ) - { - if ( strcasecmp( code3, lc->code3 ) == 0 ) - { - // We've got a match - return code2toInt( lc->code ); - } - } - - return 0; -} - -quint32 LangCoder::guessId( const QString & lang ) -{ - QString lstr = lang.simplified().toLower(); - - // too small to guess - if (lstr.size() < 2) - return 0; - - // check if it could be the whole language name - if (lstr.size() >= 3) - { - for( GDLangCode const * lc = LangCodes; lc->code[ 0 ]; ++lc ) - { - if ( lstr == ( lstr.size() == 3 ? QString( lc->code3 ) : QString( lc->lang ) ) ) - { - // We've got a match - return code2toInt( lc->code ); - } - } - } - - // still not found - try to match by 2-symbol code - return code2toInt( lstr.left(2).toLatin1().data() ); -} - -QPair LangCoder::findIdsForName( QString const & name ) -{ - QString nameFolded = "|" + name.toCaseFolded() + "|"; - QRegExp reg( "[^a-z]([a-z]{2,3})-([a-z]{2,3})[^a-z]" ); reg.setMinimal(true); - int off = 0; - - while ( reg.indexIn( nameFolded, off ) >= 0 ) - { - quint32 from = guessId( reg.cap(1) ); - quint32 to = guessId( reg.cap(2) ); - if (from && to) - return QPair(from, to); - - off += reg.matchedLength(); - } - - return QPair(0, 0); -} - -QPair LangCoder::findIdsForFilename( QString const & name ) -{ - return findIdsForName( QFileInfo( name ).fileName() ); -} - -bool LangCoder::isLanguageRTL( quint32 code ) -{ - if ( langCoder.codeMap.contains( code ) ) - { - GDLangCode &lc = LangCodes[ langCoder.codeMap[ code ] ]; - if( lc.isRTL < 0 ) - { -#if QT_VERSION >= 0x040700 - lc.isRTL = ( int )( QLocale( lc.code ).textDirection() == Qt::RightToLeft ); -#else - lc.isRTL = 0; -#endif - } - return lc.isRTL != 0; - } - - return false; -} - -/* -LangStruct& LangCoder::CodeToLangStruct(const QString &code) -{ - if (codeMap.contains(code)) { - LangStruct &ls = codeMap[code]; - if (ls.icon.isNull() && *ls.icon_code) { - ls.icon = QIcon(":/Resources/flags/" + QString(ls.icon_code) + ".png"); - } - return ls; - } - - return dummyLS; -} - -QString LangCoder::CodeToHtml(const QString &code) -{ - if (codeMap.contains(code)) { - LangStruct &ls = codeMap[code]; - if (*ls.icon_code) { - return " " + ls.lang; - } - return ls.lang; - } - - return ""; -} - -bool LangCoder::CheckCode(QString &code) -{ - code = code.toUpper(); - - if (codeMap.contains(code)) - return true; - - if (code == "DEU") { - code = "GER"; - return true; - } - - return false; -} -*/ - -/* -LangModel::LangModel(QObject * parent) : QAbstractItemModel(parent) -{ -} - -int LangModel::columnCount ( const QModelIndex & parent ) const -{ - return 2; -} - -int LangModel::rowCount ( const QModelIndex & parent ) const -{ - return arraySize(LangCodes); -} - -QVariant LangModel::data ( const QModelIndex & index, int role ) const -{ - switch (role) { - case Qt::DisplayRole: - return LangCodes[index.row()].lang; - - case LangCodeRole: - return LangCodes[index.row()].code; - - default:; - } - - return QVariant(); -} - -QModelIndex LangModel::index ( int row, int column, const QModelIndex & parent ) const -{ - return createIndex(row, column); -} - -QModelIndex LangModel::parent ( const QModelIndex & index ) const -{ - return QModelIndex(); -} -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/langcoder.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/langcoder.hh deleted file mode 100644 index e2e7cbf11e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/langcoder.hh +++ /dev/null @@ -1,94 +0,0 @@ -#ifndef LANGCODER_H -#define LANGCODER_H - -#include -#include "wstring.hh" - -struct GDLangCode -{ - char code[ 3 ]; // ISO 639-1 - char code3[ 4 ]; // ISO 639-2B ( http://www.loc.gov/standards/iso639-2/ ) - int isRTL; // Right-to-left writing; 0 - no, 1 - yes, -1 - let Qt define - char const * lang; // Language name in English -}; - - -template -inline int arraySize(T (&)[N]) { return N; } - - -struct LangStruct -{ - int order; - quint32 code; - QIcon icon; - QString lang; -}; - -class LangCoder -{ -public: - LangCoder(); - - static quint32 code2toInt(const char code[2]) - { return ( ((quint32)code[1]) << 8 ) + (quint32)code[0]; } - - static QString intToCode2( quint32 ); - - static quint32 code3toInt(const std::string& code3); - - /// Finds the id for the given language name, written in english. The search - /// is case- and punctuation insensitive. - static quint32 findIdForLanguage( gd::wstring const & ); - - static quint32 findIdForLanguageCode3( const char * ); - - static QPair findIdsForName( QString const & ); - static QPair findIdsForFilename( QString const & ); - - static quint32 guessId( const QString & lang ); - - /// Returns decoded name of language or empty string if not found. - static QString decode(quint32 code); - /// Returns icon for language or empty string if not found. - static QIcon icon(quint32 code); - - /// Return true for RTL languages - static bool isLanguageRTL(quint32 code); - - //const QMap& codes() { return codeMap; } - - LangStruct langStruct(quint32 code); - -// QString CodeToHtml(const QString &code); - -// bool CheckCode(QString &code); - -private: - QMap codeMap; -// LangStruct dummyLS; -}; - -//extern LangCoder langCoder; - -/////////////////////////////////////////////////////////////////////////////// - -#define LangCodeRole Qt::UserRole - -/* -class LangModel : public QAbstractItemModel -{ -public: - LangModel(QObject * parent = 0); - - virtual int columnCount ( const QModelIndex & parent = QModelIndex(}, const; - virtual int rowCount ( const QModelIndex & parent = QModelIndex(}, const; - - virtual QVariant data ( const QModelIndex & index, int role = Qt::DisplayRole ) const; - - virtual QModelIndex index ( int row, int column, const QModelIndex & parent = QModelIndex(}, const; - virtual QModelIndex parent ( const QModelIndex & index ) const; -}; -*/ - -#endif // LANGCODER_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/language.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/language.cc deleted file mode 100644 index 357470e86a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/language.cc +++ /dev/null @@ -1,468 +0,0 @@ -#include "language.hh" -#include "langcoder.hh" -#include -#include - -#if defined( _MSC_VER ) && _MSC_VER < 1800 // VS2012 and older -#include -#else -#include -#endif - -namespace Language { - -namespace { - -using std::map; - -struct Db -{ - static Db const & instance(); - - map< QString, QString > const & getIso2ToEnglish() const - { return iso2ToEnglish; } - map< QString, QString > const & getIso2ToLocalized() const - { return iso2ToLocalized; } - - map< QString, QString > const & getIso2ToCountry() const - { return iso2ToCountry; } - -private: - - map< QString, QString > iso2ToEnglish, iso2ToLocalized, iso2ToCountry; - - Db(); - - void addEntry( QString const & iso2, QString const & english, - QString const & localized ); -}; - -Db const & Db::instance() -{ - static Db v; - - return v; -} - -void Db::addEntry( QString const & iso2, QString const & english, - QString const & localized ) -{ - iso2ToEnglish[ iso2 ] = english; - iso2ToLocalized[ iso2 ] = localized; -} - -Db::Db() -{ - addEntry( "aa", "Afar", QCoreApplication::translate( "Language", "Afar" ) ); - addEntry( "ab", "Abkhazian", QCoreApplication::translate( "Language", "Abkhazian" ) ); - addEntry( "ae", "Avestan", QCoreApplication::translate( "Language", "Avestan" ) ); - addEntry( "af", "Afrikaans", QCoreApplication::translate( "Language", "Afrikaans" ) ); - addEntry( "ak", "Akan", QCoreApplication::translate( "Language", "Akan" ) ); - addEntry( "am", "Amharic", QCoreApplication::translate( "Language", "Amharic" ) ); - addEntry( "an", "Aragonese", QCoreApplication::translate( "Language", "Aragonese" ) ); - addEntry( "ar", "Arabic", QCoreApplication::translate( "Language", "Arabic" ) ); - addEntry( "as", "Assamese", QCoreApplication::translate( "Language", "Assamese" ) ); - addEntry( "av", "Avaric", QCoreApplication::translate( "Language", "Avaric" ) ); - addEntry( "ay", "Aymara", QCoreApplication::translate( "Language", "Aymara" ) ); - addEntry( "az", "Azerbaijani", QCoreApplication::translate( "Language", "Azerbaijani" ) ); - addEntry( "ba", "Bashkir", QCoreApplication::translate( "Language", "Bashkir" ) ); - addEntry( "be", "Belarusian", QCoreApplication::translate( "Language", "Belarusian" ) ); - addEntry( "bg", "Bulgarian", QCoreApplication::translate( "Language", "Bulgarian" ) ); - addEntry( "bh", "Bihari", QCoreApplication::translate( "Language", "Bihari" ) ); - addEntry( "bi", "Bislama", QCoreApplication::translate( "Language", "Bislama" ) ); - addEntry( "bm", "Bambara", QCoreApplication::translate( "Language", "Bambara" ) ); - addEntry( "bn", "Bengali", QCoreApplication::translate( "Language", "Bengali" ) ); - addEntry( "bo", "Tibetan", QCoreApplication::translate( "Language", "Tibetan" ) ); - addEntry( "br", "Breton", QCoreApplication::translate( "Language", "Breton" ) ); - addEntry( "bs", "Bosnian", QCoreApplication::translate( "Language", "Bosnian" ) ); - addEntry( "ca", "Catalan", QCoreApplication::translate( "Language", "Catalan" ) ); - addEntry( "ce", "Chechen", QCoreApplication::translate( "Language", "Chechen" ) ); - addEntry( "ch", "Chamorro", QCoreApplication::translate( "Language", "Chamorro" ) ); - addEntry( "co", "Corsican", QCoreApplication::translate( "Language", "Corsican" ) ); - addEntry( "cr", "Cree", QCoreApplication::translate( "Language", "Cree" ) ); - addEntry( "cs", "Czech", QCoreApplication::translate( "Language", "Czech" ) ); - addEntry( "cu", "Church Slavic", QCoreApplication::translate( "Language", "Church Slavic" ) ); - addEntry( "cv", "Chuvash", QCoreApplication::translate( "Language", "Chuvash" ) ); - addEntry( "cy", "Welsh", QCoreApplication::translate( "Language", "Welsh" ) ); - addEntry( "da", "Danish", QCoreApplication::translate( "Language", "Danish" ) ); - addEntry( "de", "German", QCoreApplication::translate( "Language", "German" ) ); - addEntry( "dv", "Divehi", QCoreApplication::translate( "Language", "Divehi" ) ); - addEntry( "dz", "Dzongkha", QCoreApplication::translate( "Language", "Dzongkha" ) ); - addEntry( "ee", "Ewe", QCoreApplication::translate( "Language", "Ewe" ) ); - addEntry( "el", "Greek", QCoreApplication::translate( "Language", "Greek" ) ); - addEntry( "en", "English", QCoreApplication::translate( "Language", "English" ) ); - addEntry( "eo", "Esperanto", QCoreApplication::translate( "Language", "Esperanto" ) ); - addEntry( "es", "Spanish", QCoreApplication::translate( "Language", "Spanish" ) ); - addEntry( "et", "Estonian", QCoreApplication::translate( "Language", "Estonian" ) ); - addEntry( "eu", "Basque", QCoreApplication::translate( "Language", "Basque" ) ); - addEntry( "fa", "Persian", QCoreApplication::translate( "Language", "Persian" ) ); - addEntry( "ff", "Fulah", QCoreApplication::translate( "Language", "Fulah" ) ); - addEntry( "fi", "Finnish", QCoreApplication::translate( "Language", "Finnish" ) ); - addEntry( "fj", "Fijian", QCoreApplication::translate( "Language", "Fijian" ) ); - addEntry( "fo", "Faroese", QCoreApplication::translate( "Language", "Faroese" ) ); - addEntry( "fr", "French", QCoreApplication::translate( "Language", "French" ) ); - addEntry( "fy", "Western Frisian", QCoreApplication::translate( "Language", "Western Frisian" ) ); - addEntry( "ga", "Irish", QCoreApplication::translate( "Language", "Irish" ) ); - addEntry( "gd", "Scottish Gaelic", QCoreApplication::translate( "Language", "Scottish Gaelic" ) ); - addEntry( "gl", "Galician", QCoreApplication::translate( "Language", "Galician" ) ); - addEntry( "gn", "Guarani", QCoreApplication::translate( "Language", "Guarani" ) ); - addEntry( "gu", "Gujarati", QCoreApplication::translate( "Language", "Gujarati" ) ); - addEntry( "gv", "Manx", QCoreApplication::translate( "Language", "Manx" ) ); - addEntry( "ha", "Hausa", QCoreApplication::translate( "Language", "Hausa" ) ); - addEntry( "he", "Hebrew", QCoreApplication::translate( "Language", "Hebrew" ) ); - addEntry( "hi", "Hindi", QCoreApplication::translate( "Language", "Hindi" ) ); - addEntry( "ho", "Hiri Motu", QCoreApplication::translate( "Language", "Hiri Motu" ) ); - addEntry( "hr", "Croatian", QCoreApplication::translate( "Language", "Croatian" ) ); - addEntry( "ht", "Haitian", QCoreApplication::translate( "Language", "Haitian" ) ); - addEntry( "hu", "Hungarian", QCoreApplication::translate( "Language", "Hungarian" ) ); - addEntry( "hy", "Armenian", QCoreApplication::translate( "Language", "Armenian" ) ); - addEntry( "hz", "Herero", QCoreApplication::translate( "Language", "Herero" ) ); - addEntry( "ia", "Interlingua", QCoreApplication::translate( "Language", "Interlingua" ) ); - addEntry( "id", "Indonesian", QCoreApplication::translate( "Language", "Indonesian" ) ); - addEntry( "ie", "Interlingue", QCoreApplication::translate( "Language", "Interlingue" ) ); - addEntry( "ig", "Igbo", QCoreApplication::translate( "Language", "Igbo" ) ); - addEntry( "ii", "Sichuan Yi", QCoreApplication::translate( "Language", "Sichuan Yi" ) ); - addEntry( "ik", "Inupiaq", QCoreApplication::translate( "Language", "Inupiaq" ) ); - addEntry( "io", "Ido", QCoreApplication::translate( "Language", "Ido" ) ); - addEntry( "is", "Icelandic", QCoreApplication::translate( "Language", "Icelandic" ) ); - addEntry( "it", "Italian", QCoreApplication::translate( "Language", "Italian" ) ); - addEntry( "iu", "Inuktitut", QCoreApplication::translate( "Language", "Inuktitut" ) ); - addEntry( "ja", "Japanese", QCoreApplication::translate( "Language", "Japanese" ) ); - addEntry( "jv", "Javanese", QCoreApplication::translate( "Language", "Javanese" ) ); - addEntry( "ka", "Georgian", QCoreApplication::translate( "Language", "Georgian" ) ); - addEntry( "kg", "Kongo", QCoreApplication::translate( "Language", "Kongo" ) ); - addEntry( "ki", "Kikuyu", QCoreApplication::translate( "Language", "Kikuyu" ) ); - addEntry( "kj", "Kwanyama", QCoreApplication::translate( "Language", "Kwanyama" ) ); - addEntry( "kk", "Kazakh", QCoreApplication::translate( "Language", "Kazakh" ) ); - addEntry( "kl", "Kalaallisut", QCoreApplication::translate( "Language", "Kalaallisut" ) ); - addEntry( "km", "Khmer", QCoreApplication::translate( "Language", "Khmer" ) ); - addEntry( "kn", "Kannada", QCoreApplication::translate( "Language", "Kannada" ) ); - addEntry( "ko", "Korean", QCoreApplication::translate( "Language", "Korean" ) ); - addEntry( "kr", "Kanuri", QCoreApplication::translate( "Language", "Kanuri" ) ); - addEntry( "ks", "Kashmiri", QCoreApplication::translate( "Language", "Kashmiri" ) ); - addEntry( "ku", "Kurdish", QCoreApplication::translate( "Language", "Kurdish" ) ); - addEntry( "kv", "Komi", QCoreApplication::translate( "Language", "Komi" ) ); - addEntry( "kw", "Cornish", QCoreApplication::translate( "Language", "Cornish" ) ); - addEntry( "ky", "Kirghiz", QCoreApplication::translate( "Language", "Kirghiz" ) ); - addEntry( "la", "Latin", QCoreApplication::translate( "Language", "Latin" ) ); - addEntry( "lb", "Luxembourgish", QCoreApplication::translate( "Language", "Luxembourgish" ) ); - addEntry( "lg", "Ganda", QCoreApplication::translate( "Language", "Ganda" ) ); - addEntry( "li", "Limburgish", QCoreApplication::translate( "Language", "Limburgish" ) ); - addEntry( "ln", "Lingala", QCoreApplication::translate( "Language", "Lingala" ) ); - addEntry( "lo", "Lao", QCoreApplication::translate( "Language", "Lao" ) ); - addEntry( "lt", "Lithuanian", QCoreApplication::translate( "Language", "Lithuanian" ) ); - addEntry( "lu", "Luba-Katanga", QCoreApplication::translate( "Language", "Luba-Katanga" ) ); - addEntry( "lv", "Latvian", QCoreApplication::translate( "Language", "Latvian" ) ); - addEntry( "mg", "Malagasy", QCoreApplication::translate( "Language", "Malagasy" ) ); - addEntry( "mh", "Marshallese", QCoreApplication::translate( "Language", "Marshallese" ) ); - addEntry( "mi", "Maori", QCoreApplication::translate( "Language", "Maori" ) ); - addEntry( "mk", "Macedonian", QCoreApplication::translate( "Language", "Macedonian" ) ); - addEntry( "ml", "Malayalam", QCoreApplication::translate( "Language", "Malayalam" ) ); - addEntry( "mn", "Mongolian", QCoreApplication::translate( "Language", "Mongolian" ) ); - addEntry( "mr", "Marathi", QCoreApplication::translate( "Language", "Marathi" ) ); - addEntry( "ms", "Malay", QCoreApplication::translate( "Language", "Malay" ) ); - addEntry( "mt", "Maltese", QCoreApplication::translate( "Language", "Maltese" ) ); - addEntry( "my", "Burmese", QCoreApplication::translate( "Language", "Burmese" ) ); - addEntry( "na", "Nauru", QCoreApplication::translate( "Language", "Nauru" ) ); - addEntry( "nb", "Norwegian Bokmal", QCoreApplication::translate( "Language", "Norwegian Bokmal" ) ); - addEntry( "nd", "North Ndebele", QCoreApplication::translate( "Language", "North Ndebele" ) ); - addEntry( "ne", "Nepali", QCoreApplication::translate( "Language", "Nepali" ) ); - addEntry( "ng", "Ndonga", QCoreApplication::translate( "Language", "Ndonga" ) ); - addEntry( "nl", "Dutch", QCoreApplication::translate( "Language", "Dutch" ) ); - addEntry( "nn", "Norwegian Nynorsk", QCoreApplication::translate( "Language", "Norwegian Nynorsk" ) ); - addEntry( "no", "Norwegian", QCoreApplication::translate( "Language", "Norwegian" ) ); - addEntry( "nr", "South Ndebele", QCoreApplication::translate( "Language", "South Ndebele" ) ); - addEntry( "nv", "Navajo", QCoreApplication::translate( "Language", "Navajo" ) ); - addEntry( "ny", "Chichewa", QCoreApplication::translate( "Language", "Chichewa" ) ); - addEntry( "oc", "Occitan", QCoreApplication::translate( "Language", "Occitan" ) ); - addEntry( "oj", "Ojibwa", QCoreApplication::translate( "Language", "Ojibwa" ) ); - addEntry( "om", "Oromo", QCoreApplication::translate( "Language", "Oromo" ) ); - addEntry( "or", "Oriya", QCoreApplication::translate( "Language", "Oriya" ) ); - addEntry( "os", "Ossetian", QCoreApplication::translate( "Language", "Ossetian" ) ); - addEntry( "pa", "Panjabi", QCoreApplication::translate( "Language", "Panjabi" ) ); - addEntry( "pi", "Pali", QCoreApplication::translate( "Language", "Pali" ) ); - addEntry( "pl", "Polish", QCoreApplication::translate( "Language", "Polish" ) ); - addEntry( "ps", "Pashto", QCoreApplication::translate( "Language", "Pashto" ) ); - addEntry( "pt", "Portuguese", QCoreApplication::translate( "Language", "Portuguese" ) ); - addEntry( "qu", "Quechua", QCoreApplication::translate( "Language", "Quechua" ) ); - addEntry( "rm", "Raeto-Romance", QCoreApplication::translate( "Language", "Raeto-Romance" ) ); - addEntry( "rn", "Kirundi", QCoreApplication::translate( "Language", "Kirundi" ) ); - addEntry( "ro", "Romanian", QCoreApplication::translate( "Language", "Romanian" ) ); - addEntry( "ru", "Russian", QCoreApplication::translate( "Language", "Russian" ) ); - addEntry( "rw", "Kinyarwanda", QCoreApplication::translate( "Language", "Kinyarwanda" ) ); - addEntry( "sa", "Sanskrit", QCoreApplication::translate( "Language", "Sanskrit" ) ); - addEntry( "sc", "Sardinian", QCoreApplication::translate( "Language", "Sardinian" ) ); - addEntry( "sd", "Sindhi", QCoreApplication::translate( "Language", "Sindhi" ) ); - addEntry( "se", "Northern Sami", QCoreApplication::translate( "Language", "Northern Sami" ) ); - addEntry( "sg", "Sango", QCoreApplication::translate( "Language", "Sango" ) ); - addEntry( "sh", "Serbo-Croatian", QCoreApplication::translate( "Language", "Serbo-Croatian" ) ); - addEntry( "si", "Sinhala", QCoreApplication::translate( "Language", "Sinhala" ) ); - addEntry( "sk", "Slovak", QCoreApplication::translate( "Language", "Slovak" ) ); - addEntry( "sl", "Slovenian", QCoreApplication::translate( "Language", "Slovenian" ) ); - addEntry( "sm", "Samoan", QCoreApplication::translate( "Language", "Samoan" ) ); - addEntry( "sn", "Shona", QCoreApplication::translate( "Language", "Shona" ) ); - addEntry( "so", "Somali", QCoreApplication::translate( "Language", "Somali" ) ); - addEntry( "sq", "Albanian", QCoreApplication::translate( "Language", "Albanian" ) ); - addEntry( "sr", "Serbian", QCoreApplication::translate( "Language", "Serbian" ) ); - addEntry( "ss", "Swati", QCoreApplication::translate( "Language", "Swati" ) ); - addEntry( "st", "Southern Sotho", QCoreApplication::translate( "Language", "Southern Sotho" ) ); - addEntry( "su", "Sundanese", QCoreApplication::translate( "Language", "Sundanese" ) ); - addEntry( "sv", "Swedish", QCoreApplication::translate( "Language", "Swedish" ) ); - addEntry( "sw", "Swahili", QCoreApplication::translate( "Language", "Swahili" ) ); - addEntry( "ta", "Tamil", QCoreApplication::translate( "Language", "Tamil" ) ); - addEntry( "te", "Telugu", QCoreApplication::translate( "Language", "Telugu" ) ); - addEntry( "tg", "Tajik", QCoreApplication::translate( "Language", "Tajik" ) ); - addEntry( "th", "Thai", QCoreApplication::translate( "Language", "Thai" ) ); - addEntry( "ti", "Tigrinya", QCoreApplication::translate( "Language", "Tigrinya" ) ); - addEntry( "tk", "Turkmen", QCoreApplication::translate( "Language", "Turkmen" ) ); - addEntry( "tl", "Tagalog", QCoreApplication::translate( "Language", "Tagalog" ) ); - addEntry( "tn", "Tswana", QCoreApplication::translate( "Language", "Tswana" ) ); - addEntry( "to", "Tonga", QCoreApplication::translate( "Language", "Tonga" ) ); - addEntry( "tr", "Turkish", QCoreApplication::translate( "Language", "Turkish" ) ); - addEntry( "ts", "Tsonga", QCoreApplication::translate( "Language", "Tsonga" ) ); - addEntry( "tt", "Tatar", QCoreApplication::translate( "Language", "Tatar" ) ); - addEntry( "tw", "Twi", QCoreApplication::translate( "Language", "Twi" ) ); - addEntry( "ty", "Tahitian", QCoreApplication::translate( "Language", "Tahitian" ) ); - addEntry( "ug", "Uighur", QCoreApplication::translate( "Language", "Uighur" ) ); - addEntry( "uk", "Ukrainian", QCoreApplication::translate( "Language", "Ukrainian" ) ); - addEntry( "ur", "Urdu", QCoreApplication::translate( "Language", "Urdu" ) ); - addEntry( "uz", "Uzbek", QCoreApplication::translate( "Language", "Uzbek" ) ); - addEntry( "ve", "Venda", QCoreApplication::translate( "Language", "Venda" ) ); - addEntry( "vi", "Vietnamese", QCoreApplication::translate( "Language", "Vietnamese" ) ); - addEntry( "vo", "Volapuk", QCoreApplication::translate( "Language", "Volapuk" ) ); - addEntry( "wa", "Walloon", QCoreApplication::translate( "Language", "Walloon" ) ); - addEntry( "wo", "Wolof", QCoreApplication::translate( "Language", "Wolof" ) ); - addEntry( "xh", "Xhosa", QCoreApplication::translate( "Language", "Xhosa" ) ); - addEntry( "yi", "Yiddish", QCoreApplication::translate( "Language", "Yiddish" ) ); - addEntry( "yo", "Yoruba", QCoreApplication::translate( "Language", "Yoruba" ) ); - addEntry( "za", "Zhuang", QCoreApplication::translate( "Language", "Zhuang" ) ); - addEntry( "zh", "Chinese", QCoreApplication::translate( "Language", "Chinese" ) ); - addEntry( "zu", "Zulu", QCoreApplication::translate( "Language", "Zulu" ) ); - addEntry( "jb", "Lojban", QCoreApplication::translate( "Language", "Lojban" ) ); - - // Countries - - iso2ToCountry[ "aa" ] = "et"; - iso2ToCountry[ "af" ] = "za"; - iso2ToCountry[ "am" ] = "et"; - iso2ToCountry[ "an" ] = "es"; - iso2ToCountry[ "ar" ] = "ae"; - iso2ToCountry[ "as" ] = "in"; - iso2ToCountry[ "az" ] = "az"; - iso2ToCountry[ "be" ] = "by"; - iso2ToCountry[ "bg" ] = "bg"; - iso2ToCountry[ "bn" ] = "bd"; - iso2ToCountry[ "bo" ] = "cn"; - iso2ToCountry[ "br" ] = "fr"; - iso2ToCountry[ "bs" ] = "ba"; - iso2ToCountry[ "ca" ] = "ad"; - iso2ToCountry[ "cs" ] = "cz"; - iso2ToCountry[ "cy" ] = "gb"; - iso2ToCountry[ "da" ] = "dk"; - iso2ToCountry[ "de" ] = "de"; - iso2ToCountry[ "dz" ] = "bt"; - iso2ToCountry[ "el" ] = "gr"; - iso2ToCountry[ "en" ] = "gb"; - iso2ToCountry[ "es" ] = "es"; - iso2ToCountry[ "et" ] = "ee"; - iso2ToCountry[ "eu" ] = "es"; - iso2ToCountry[ "fa" ] = "ir"; - iso2ToCountry[ "fi" ] = "fi"; - iso2ToCountry[ "fo" ] = "fo"; - iso2ToCountry[ "fr" ] = "fr"; - iso2ToCountry[ "fy" ] = "nl"; - iso2ToCountry[ "ga" ] = "ie"; - iso2ToCountry[ "gd" ] = "gb"; - iso2ToCountry[ "gl" ] = "es"; - iso2ToCountry[ "gu" ] = "in"; - iso2ToCountry[ "gv" ] = "gb"; - iso2ToCountry[ "ha" ] = "ng"; - iso2ToCountry[ "he" ] = "il"; - iso2ToCountry[ "hi" ] = "in"; - iso2ToCountry[ "hr" ] = "hr"; - iso2ToCountry[ "ht" ] = "ht"; - iso2ToCountry[ "hu" ] = "hu"; - iso2ToCountry[ "hy" ] = "am"; - iso2ToCountry[ "id" ] = "id"; - iso2ToCountry[ "ig" ] = "ng"; - iso2ToCountry[ "ik" ] = "ca"; - iso2ToCountry[ "is" ] = "is"; - iso2ToCountry[ "it" ] = "it"; - iso2ToCountry[ "iu" ] = "ca"; - iso2ToCountry[ "iw" ] = "il"; - iso2ToCountry[ "ja" ] = "jp"; - iso2ToCountry[ "ka" ] = "ge"; - iso2ToCountry[ "kk" ] = "kz"; - iso2ToCountry[ "kl" ] = "gl"; - iso2ToCountry[ "km" ] = "kh"; - iso2ToCountry[ "kn" ] = "in"; - iso2ToCountry[ "ko" ] = "kr"; - iso2ToCountry[ "ku" ] = "tr"; - iso2ToCountry[ "kw" ] = "gb"; - iso2ToCountry[ "ky" ] = "kg"; - iso2ToCountry[ "lg" ] = "ug"; - iso2ToCountry[ "li" ] = "be"; - iso2ToCountry[ "lo" ] = "la"; - iso2ToCountry[ "lt" ] = "lt"; - iso2ToCountry[ "lv" ] = "lv"; - iso2ToCountry[ "mg" ] = "mg"; - iso2ToCountry[ "mi" ] = "nz"; - iso2ToCountry[ "mk" ] = "mk"; - iso2ToCountry[ "ml" ] = "in"; - iso2ToCountry[ "mn" ] = "mn"; - iso2ToCountry[ "mr" ] = "in"; - iso2ToCountry[ "ms" ] = "my"; - iso2ToCountry[ "mt" ] = "mt"; - iso2ToCountry[ "nb" ] = "no"; - iso2ToCountry[ "ne" ] = "np"; - iso2ToCountry[ "nl" ] = "nl"; - iso2ToCountry[ "nn" ] = "no"; - iso2ToCountry[ "nr" ] = "za"; - iso2ToCountry[ "oc" ] = "fr"; - iso2ToCountry[ "om" ] = "et"; - iso2ToCountry[ "or" ] = "in"; - iso2ToCountry[ "pa" ] = "pk"; - iso2ToCountry[ "pl" ] = "pl"; - iso2ToCountry[ "pt" ] = "pt"; - iso2ToCountry[ "ro" ] = "ro"; - iso2ToCountry[ "ru" ] = "ru"; - iso2ToCountry[ "rw" ] = "rw"; - iso2ToCountry[ "sa" ] = "in"; - iso2ToCountry[ "sc" ] = "it"; - iso2ToCountry[ "sd" ] = "in"; - iso2ToCountry[ "se" ] = "no"; - iso2ToCountry[ "si" ] = "lk"; - iso2ToCountry[ "sk" ] = "sk"; - iso2ToCountry[ "sl" ] = "si"; - iso2ToCountry[ "so" ] = "so"; - iso2ToCountry[ "sq" ] = "al"; - iso2ToCountry[ "sr" ] = "rs"; - iso2ToCountry[ "ss" ] = "za"; - iso2ToCountry[ "st" ] = "za"; - iso2ToCountry[ "sv" ] = "se"; - iso2ToCountry[ "ta" ] = "in"; - iso2ToCountry[ "te" ] = "in"; - iso2ToCountry[ "tg" ] = "tj"; - iso2ToCountry[ "th" ] = "th"; - iso2ToCountry[ "ti" ] = "er"; - iso2ToCountry[ "tk" ] = "tm"; - iso2ToCountry[ "tl" ] = "ph"; - iso2ToCountry[ "tn" ] = "za"; - iso2ToCountry[ "tr" ] = "tr"; - iso2ToCountry[ "ts" ] = "za"; - iso2ToCountry[ "tt" ] = "ru"; - iso2ToCountry[ "ug" ] = "cn"; - iso2ToCountry[ "uk" ] = "ua"; - iso2ToCountry[ "ur" ] = "pk"; - iso2ToCountry[ "uz" ] = "uz"; - iso2ToCountry[ "ve" ] = "za"; - iso2ToCountry[ "vi" ] = "vn"; - iso2ToCountry[ "wa" ] = "be"; - iso2ToCountry[ "wo" ] = "sn"; - iso2ToCountry[ "xh" ] = "za"; - iso2ToCountry[ "yi" ] = "us"; - iso2ToCountry[ "yo" ] = "ng"; - iso2ToCountry[ "zh" ] = "cn"; - iso2ToCountry[ "zu" ] = "za"; -} - -} - -/// babylon languages -#ifndef blgCode2Int -#define blgCode2Int( index, code0, code1 ) (((uint32_t)index) << 16 ) + (((uint32_t)code1) << 8 ) + (uint32_t)code0 -#endif -const BabylonLang BabylonDb[] ={ - { blgCode2Int( 1, 'z', 'h' ), "tw", "Traditional Chinese", QT_TR_NOOP( "Traditional Chinese" ) }, - { blgCode2Int( 2, 'z', 'h' ), "cn", "Simplified Chinese", QT_TR_NOOP( "Simplified Chinese" ) }, - { blgCode2Int( 3, 0, 0 ), "other", "Other", QT_TR_NOOP( "Other" ) }, - { blgCode2Int( 4, 'z', 'h' ), "cn", "Other Simplified Chinese dialects", QT_TR_NOOP( "Other Simplified Chinese dialects" ) }, - { blgCode2Int( 5, 'z', 'h' ), "tw", "Other Traditional Chinese dialects", QT_TR_NOOP( "Other Traditional Chinese dialects" ) }, - { blgCode2Int( 6, 0, 0 ), "other", "Other Eastern-European languages", QT_TR_NOOP( "Other Eastern-European languages" ) }, - { blgCode2Int( 7, 0, 0 ), "other", "Other Western-European languages", QT_TR_NOOP( "Other Western-European languages" )}, - { blgCode2Int( 8, 'r', 'u' ), "ru", "Other Russian languages", QT_TR_NOOP( "Other Russian languages" ) }, - { blgCode2Int( 9, 'j', 'a' ), "jp", "Other Japanese languages", QT_TR_NOOP( "Other Japanese languages" ) }, - { blgCode2Int( 10, 0, 0 ), "other", "Other Baltic languages", QT_TR_NOOP( "Other Baltic languages" )}, - { blgCode2Int( 11, 'e', 'l' ), "gr", "Other Greek languages", QT_TR_NOOP( "Other Greek languages" ) }, - { blgCode2Int( 12, 'k', 'o' ), "kr", "Other Korean dialects", QT_TR_NOOP( "Other Korean dialects" ) }, - { blgCode2Int( 13, 't', 'r' ), "tr", "Other Turkish dialects", QT_TR_NOOP( "Other Turkish dialects" ) }, - { blgCode2Int( 14, 't', 'h' ), "th", "Other Thai dialects", QT_TR_NOOP( "Other Thai dialects" ) }, - { blgCode2Int( 15, 0, 0 ), "dz", "Tamazight", QT_TR_NOOP( "Tamazight" ) } -}; - -BabylonLang getBabylonLangByIndex( int index ) -{ - return BabylonDb[ index ]; -} - -quint32 findBlgLangIDByEnglishName( gd::wstring const & lang ) -{ - QString enName = gd::toQString( lang ); - for( int idx=0;idx < 15 ; ++idx ) - { - if( QString::compare( BabylonDb[ idx ].englishName, enName, Qt::CaseInsensitive ) == 0 ) - return BabylonDb[ idx ].id; - } - return 0; -} - -QString englishNameForId( Id id ) -{ - if( id >= 0x010000 && id <= 0x0fffff ) //babylon - { - return BabylonDb[ ( (id >> 16 ) & 0x0f) - 1 ].englishName; - } - map< QString, QString >::const_iterator i = - Db::instance().getIso2ToEnglish().find( LangCoder::intToCode2( id ) ); - - if ( i == Db::instance().getIso2ToEnglish().end() ) - return QString(); - - return i->second; -} - -QString localizedNameForId( Id id ) -{ - if( id >= 0x010000 && id <= 0x0fffff ) //babylon - { - return QCoreApplication::translate( "Language", BabylonDb[ ( ( id >> 16 ) & 0x0f ) - 1 ].localizedName ); - } - map< QString, QString >::const_iterator i = - Db::instance().getIso2ToLocalized().find( LangCoder::intToCode2( id ) ); - - if ( i == Db::instance().getIso2ToLocalized().end() ) - return QString(); - - return i->second; -} - -QString countryCodeForId( Id id ) -{ - if( id >= 0x010000 && id <= 0x0fffff ) //babylon - { - return BabylonDb[ ( ( id >> 16 ) & 0x0f ) - 1 ].contryCode; - } - map< QString, QString >::const_iterator i = - Db::instance().getIso2ToCountry().find( LangCoder::intToCode2( id ) ); - - if ( i == Db::instance().getIso2ToCountry().end() ) - return QString(); - - return i->second; -} - -QString localizedStringForId( Id langId ) -{ - QString name = localizedNameForId( langId ); - - if ( name.isEmpty() ) - return name; - - QString iconId = countryCodeForId( langId ); - - if( iconId.isEmpty() ) - return name; - else - return QString( " %2" ).arg( iconId ).arg( name ); - } -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/language.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/language.hh deleted file mode 100644 index a2d02a3d5b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/language.hh +++ /dev/null @@ -1,54 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __LANGUAGE_HH_INCLUDED__ -#define __LANGUAGE_HH_INCLUDED__ - -#include -#include "wstring_qt.hh" -/// Language-specific stuff - codes, names, ids etc. -namespace Language { - -/// This identifies any language uniquely within the program. It also has -/// two special meanings - Unknown and Any. -typedef quint32 Id; - -enum -{ - /// Value for Id which signifies that the language is unknown or unspecified. - Unknown = 0, - /// Value for Id which signifies that the language can be any, or all of them. - Any = 0xFFffFFff -}; - -/// Returns name in English for the given Id. If the Id is incorrect, or has -/// Unknown/Any values, returns empty string. -QString englishNameForId( Id ); - -/// Returns name for the given Id, translated to the current UI language. -/// If the Id is incorrect, or has Unknown/Any values, returns empty string. -QString localizedNameForId( Id ); - -/// Returns a two-letter code of a country which speaks the given language. -/// This is useful for picking up icons for languages. If there's no -/// corresponding country it the database, returns an empty strings. -QString countryCodeForId( Id ); - -/// Returns name for the given Id, translated to the current UI language, wish corresponding image tag. -/// If the Id is incorrect, or has Unknown/Any values, returns empty string. -QString localizedStringForId( Id ); - -// All other functions are to be used from LangCoder, which is supposed to -// be migrated here over time. - -struct BabylonLang{ - Id id; - const QString contryCode; - const QString englishName; - const char * localizedName; -}; -BabylonLang getBabylonLangByIndex( int index ); -quint32 findBlgLangIDByEnglishName( gd::wstring const & lang ); -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lionsupport.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/lionsupport.h deleted file mode 100644 index 2fd1d897dc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lionsupport.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef LIONSUPPORT_H -#define LIONSUPPORT_H - -#include "mainwindow.hh" - -class LionSupport -{ -public: - /** - * Returns whether the current system is Lion. - */ - static bool isLion(); - - /** - * Adds fullscreen button to window for Lion. - */ - static void addFullscreen(MainWindow *window); - - //Check for retina display - static bool isRetinaDisplay(); -}; - -#endif // LIONSUPPORT_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lionsupport.mm b/office/misc/goldendict/files/goldendict-1.5.0-RC2/lionsupport.mm deleted file mode 100644 index 1917b8f9ca..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lionsupport.mm +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include -#include "lionsupport.h" - -bool LionSupport::isLion() -{ - NSString *string = [NSString string]; - // this selector was added only in Lion. so we can check if it's responding, we are on Lion - return [string respondsToSelector:@selector(linguisticTagsInRange:scheme:options:orthography:tokenRanges:)]; -} - -void LionSupport::addFullscreen(MainWindow *window) -{ -#if defined(MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - if (isLion()) // checks if lion is running - { - NSView *nsview = (NSView *) window->winId(); - NSWindow *nswindow = [nsview window]; - [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; - } -#else -#warning No fullscreen support will be included in this build -#endif -} - -bool LionSupport::isRetinaDisplay() -{ -#if defined(MAC_OS_X_VERSION_10_7) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - return( [ [ NSScreen mainScreen ] respondsToSelector:@selector( backingScaleFactor ) ] - && [ [ NSScreen mainScreen ] backingScaleFactor ] > 1.5 ); -#else - return false; -#endif -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/loaddictionaries.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/loaddictionaries.cc deleted file mode 100644 index cf31e632dd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/loaddictionaries.cc +++ /dev/null @@ -1,420 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "loaddictionaries.hh" -#include "initializing.hh" -#include "bgl.hh" -#include "stardict.hh" -#include "lsa.hh" -#include "dsl.hh" -#include "mediawiki.hh" -#include "sounddir.hh" -#include "hunspell.hh" -#include "dictdfiles.hh" -#include "romaji.hh" -#include "russiantranslit.hh" -#include "german.hh" -#include "greektranslit.hh" -#include "belarusiantranslit.hh" -#include "website.hh" -#include "forvo.hh" -#include "programs.hh" -#include "voiceengines.hh" -#include "gddebug.hh" -#include "fsencoding.hh" -#include "xdxf.hh" -#include "sdict.hh" -#include "aard.hh" -#include "zipsounds.hh" -#include "mdx.hh" -#include "zim.hh" -#include "dictserver.hh" -#include "slob.hh" - -#ifndef NO_EPWING_SUPPORT -#include "epwing.hh" -#endif - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT -#include "chinese.hh" -#endif - -#include -#include - -#include - -using std::set; - -using std::string; -using std::vector; - -LoadDictionaries::LoadDictionaries( Config::Class const & cfg ): - paths( cfg.paths ), soundDirs( cfg.soundDirs ), hunspell( cfg.hunspell ), - transliteration( cfg.transliteration ), - exceptionText( "Load did not finish" ), // Will be cleared upon success - maxPictureWidth( cfg.maxPictureWidth ), - maxHeadwordSize( cfg.maxHeadwordSize ) -{ - // Populate name filters - - nameFilters << "*.bgl" << "*.ifo" << "*.lsa" << "*.dat" - << "*.dsl" << "*.dsl.dz" << "*.index" << "*.xdxf" - << "*.xdxf.dz" << "*.dct" << "*.aar" << "*.zips" - << "*.mdx" -#ifdef MAKE_ZIM_SUPPORT - << "*.zim" << "*.zimaa" << "*.slob" -#endif -#ifndef NO_EPWING_SUPPORT - << "*catalogs" -#endif -; -} - -void LoadDictionaries::run() -{ - try - { - for( Config::Paths::const_iterator i = paths.begin(); i != paths.end(); ++i ) - handlePath( *i ); - - // Make soundDirs - { - vector< sptr< Dictionary::Class > > soundDirDictionaries = - SoundDir::makeDictionaries( soundDirs, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), soundDirDictionaries.begin(), - soundDirDictionaries.end() ); - } - - // Make hunspells - { - vector< sptr< Dictionary::Class > > hunspellDictionaries = - HunspellMorpho::makeDictionaries( hunspell ); - - dictionaries.insert( dictionaries.end(), hunspellDictionaries.begin(), - hunspellDictionaries.end() ); - } - - exceptionText.clear(); - } - catch( std::exception & e ) - { - exceptionText = e.what(); - } -} - -void LoadDictionaries::handlePath( Config::Path const & path ) -{ - vector< string > allFiles; - - QDir dir( path.path ); - - QFileInfoList entries = dir.entryInfoList( nameFilters, QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot ); - - for( QFileInfoList::const_iterator i = entries.constBegin(); - i != entries.constEnd(); ++i ) - { - QString fullName = i->canonicalFilePath(); - - if ( path.recursive && i->isDir() ) - { - // Make sure the path doesn't look like with dsl resources - if ( !fullName.endsWith( ".dsl.files", Qt::CaseInsensitive ) && - !fullName.endsWith( ".dsl.dz.files", Qt::CaseInsensitive ) ) - handlePath( Config::Path( fullName, true ) ); - } - - if ( !i->isDir() ) - allFiles.push_back( FsEncoding::encode( QDir::toNativeSeparators( fullName ) ) ); - } - - { - vector< sptr< Dictionary::Class > > bglDictionaries = - Bgl::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), bglDictionaries.begin(), - bglDictionaries.end() ); - } - - { - vector< sptr< Dictionary::Class > > stardictDictionaries = - Stardict::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), stardictDictionaries.begin(), - stardictDictionaries.end() ); - } - - { - vector< sptr< Dictionary::Class > > lsaDictionaries = - Lsa::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), lsaDictionaries.begin(), - lsaDictionaries.end() ); - } - - { - vector< sptr< Dictionary::Class > > dslDictionaries = - Dsl::makeDictionaries( - allFiles, FsEncoding::encode( Config::getIndexDir() ), *this, maxPictureWidth, maxHeadwordSize ); - - dictionaries.insert( dictionaries.end(), dslDictionaries.begin(), - dslDictionaries.end() ); - } - - { - vector< sptr< Dictionary::Class > > dictdDictionaries = - DictdFiles::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), dictdDictionaries.begin(), - dictdDictionaries.end() ); - } - { - vector< sptr< Dictionary::Class > > xdxfDictionaries = - Xdxf::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), xdxfDictionaries.begin(), - xdxfDictionaries.end() ); - } - { - vector< sptr< Dictionary::Class > > sdictDictionaries = - Sdict::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), sdictDictionaries.begin(), - sdictDictionaries.end() ); - } - { - vector< sptr< Dictionary::Class > > aardDictionaries = - Aard::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), aardDictionaries.begin(), - aardDictionaries.end() ); - } - { - vector< sptr< Dictionary::Class > > zipSoundsDictionaries = - ZipSounds::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), zipSoundsDictionaries.begin(), - zipSoundsDictionaries.end() ); - } - { - vector< sptr< Dictionary::Class > > mdxDictionaries = - Mdx::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), mdxDictionaries.begin(), - mdxDictionaries.end() ); - } -#ifdef MAKE_ZIM_SUPPORT - { - vector< sptr< Dictionary::Class > > zimDictionaries = - Zim::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), zimDictionaries.begin(), - zimDictionaries.end() ); - } - { - vector< sptr< Dictionary::Class > > slobDictionaries = - Slob::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), slobDictionaries.begin(), - slobDictionaries.end() ); - } -#endif -#ifndef NO_EPWING_SUPPORT - { - vector< sptr< Dictionary::Class > > epwingDictionaries = - Epwing::makeDictionaries( allFiles, FsEncoding::encode( Config::getIndexDir() ), *this ); - - dictionaries.insert( dictionaries.end(), epwingDictionaries.begin(), - epwingDictionaries.end() ); - } -#endif -} - -void LoadDictionaries::indexingDictionary( string const & dictionaryName ) throw() -{ - emit indexingDictionarySignal( QString::fromUtf8( dictionaryName.c_str() ) ); -} - - -void loadDictionaries( QWidget * parent, bool showInitially, - Config::Class const & cfg, - std::vector< sptr< Dictionary::Class > > & dictionaries, - QNetworkAccessManager & dictNetMgr, - bool doDeferredInit_ ) -{ - dictionaries.clear(); - - ::Initializing init( parent, showInitially ); - - // Start a thread to load all the dictionaries - - LoadDictionaries loadDicts( cfg ); - - QObject::connect( &loadDicts, SIGNAL( indexingDictionarySignal( QString const & ) ), - &init, SLOT( indexing( QString const & ) ) ); - - QEventLoop localLoop; - - QObject::connect( &loadDicts, SIGNAL( finished() ), - &localLoop, SLOT( quit() ) ); - - loadDicts.start(); - - localLoop.exec(); - - loadDicts.wait(); - - if ( loadDicts.getExceptionText().size() ) - { - QMessageBox::critical( parent, QCoreApplication::translate( "LoadDictionaries", "Error loading dictionaries" ), - QString::fromUtf8( loadDicts.getExceptionText().c_str() ) ); - - return; - } - - dictionaries = loadDicts.getDictionaries(); - - ///// We create transliterations syncronously since they are very simple - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - // Make Chinese conversion - { - vector< sptr< Dictionary::Class > > chineseDictionaries = - Chinese::makeDictionaries( cfg.transliteration.chinese ); - - dictionaries.insert( dictionaries.end(), chineseDictionaries.begin(), - chineseDictionaries.end() ); - } -#endif - - // Make Romaji - { - vector< sptr< Dictionary::Class > > romajiDictionaries = - Romaji::makeDictionaries( cfg.transliteration.romaji ); - - dictionaries.insert( dictionaries.end(), romajiDictionaries.begin(), - romajiDictionaries.end() ); - } - - // Make Russian transliteration - if ( cfg.transliteration.enableRussianTransliteration ) - dictionaries.push_back( RussianTranslit::makeDictionary() ); - - // Make German transliteration - if ( cfg.transliteration.enableGermanTransliteration ) - dictionaries.push_back( GermanTranslit::makeDictionary() ); - - // Make Greek transliteration - if ( cfg.transliteration.enableGreekTransliteration ) - dictionaries.push_back( GreekTranslit::makeDictionary() ); - - // Make Belarusian transliteration - if ( cfg.transliteration.enableBelarusianTransliteration ) - { - vector< sptr< Dictionary::Class > > dicts = BelarusianTranslit::makeDictionaries(); - dictionaries.insert( dictionaries.end(), dicts.begin(), dicts.end() ); - } - - ///// We create MediaWiki dicts syncronously, since they use netmgr - - { - vector< sptr< Dictionary::Class > > dicts = - MediaWiki::makeDictionaries( loadDicts, cfg.mediawikis, dictNetMgr ); - - dictionaries.insert( dictionaries.end(), dicts.begin(), dicts.end() ); - } - - ///// WebSites are very simple, no need to create them asyncronously - { - vector< sptr< Dictionary::Class > > dicts = - WebSite::makeDictionaries( cfg.webSites ); - - dictionaries.insert( dictionaries.end(), dicts.begin(), dicts.end() ); - } - - //// Forvo dictionaries - - { - vector< sptr< Dictionary::Class > > dicts = - Forvo::makeDictionaries( loadDicts, cfg.forvo, dictNetMgr ); - - dictionaries.insert( dictionaries.end(), dicts.begin(), dicts.end() ); - } - - //// Programs - { - vector< sptr< Dictionary::Class > > dicts = - Programs::makeDictionaries( cfg.programs ); - - dictionaries.insert( dictionaries.end(), dicts.begin(), dicts.end() ); - } - - //// Text to Speech - { - vector< sptr< Dictionary::Class > > dicts = - VoiceEngines::makeDictionaries( cfg.voiceEngines ); - - dictionaries.insert( dictionaries.end(), dicts.begin(), dicts.end() ); - } - - { - vector< sptr< Dictionary::Class > > dicts = - DictServer::makeDictionaries( cfg.dictServers ); - - dictionaries.insert( dictionaries.end(), dicts.begin(), dicts.end() ); - } - - GD_DPRINTF( "Load done\n" ); - - // Remove any stale index files - - set< string > ids; - std::pair< std::set< string >::iterator, bool > ret; - -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "UTF8" ) ); -#endif - - for( unsigned x = dictionaries.size(); x--; ) - { - ret = ids.insert( dictionaries[ x ]->getId() ); - if( !ret.second ) - { - gdWarning( "Duplicate dictionary ID found: ID=%s, name=\"%s\", path=\"%s\"", - dictionaries[ x ]->getId().c_str(), - dictionaries[ x ]->getName().c_str(), - dictionaries[ x ]->getDictionaryFilenames().empty() ? - "" : dictionaries[ x ]->getDictionaryFilenames()[ 0 ].c_str() - ); - } - } - - QDir indexDir( Config::getIndexDir() ); - - QStringList allIdxFiles = indexDir.entryList( QDir::Files ); - - for( QStringList::const_iterator i = allIdxFiles.constBegin(); - i != allIdxFiles.constEnd(); ++i ) - { - if ( ids.find( FsEncoding::encode( *i ) ) == ids.end() - && i->size() == 32 ) - indexDir.remove( *i ); - else - if ( i->endsWith( "_FTS" ) - && i->size() == 36 - && ids.find( FsEncoding::encode( i->left( 32 ) ) ) == ids.end() ) - indexDir.remove( *i ); - } - - // Run deferred inits - - if ( doDeferredInit_ ) - doDeferredInit( dictionaries ); -} - -void doDeferredInit( std::vector< sptr< Dictionary::Class > > & dictionaries ) -{ - for( unsigned x = 0; x < dictionaries.size(); ++x ) - dictionaries[ x ]->deferredInit(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/loaddictionaries.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/loaddictionaries.hh deleted file mode 100644 index e540970c94..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/loaddictionaries.hh +++ /dev/null @@ -1,70 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __LOADDICTIONARIES_HH_INCLUDED__ -#define __LOADDICTIONARIES_HH_INCLUDED__ - -#include "initializing.hh" -#include "config.hh" -#include "dictionary.hh" - -#include -#include - -/// Use loadDictionaries() function below -- this is a helper thread class -class LoadDictionaries: public QThread, public Dictionary::Initializing -{ - Q_OBJECT - - QStringList nameFilters; - Config::Paths const & paths; - Config::SoundDirs const & soundDirs; - Config::Hunspell const & hunspell; - Config::Transliteration const & transliteration; - std::vector< sptr< Dictionary::Class > > dictionaries; - std::string exceptionText; - int maxPictureWidth; - unsigned int maxHeadwordSize; - -public: - - LoadDictionaries( Config::Class const & cfg ); - - virtual void run(); - - std::vector< sptr< Dictionary::Class > > const & getDictionaries() const - { return dictionaries; } - - /// Empty string means to exception occured - std::string const & getExceptionText() const - { return exceptionText; } - -signals: - - void indexingDictionarySignal( QString const & dictionaryName ); - -public: - - virtual void indexingDictionary( std::string const & dictionaryName ) throw(); - -private: - - void handlePath( Config::Path const & ); -}; - -/// Loads all dictionaries mentioned in the configuration passed, into the -/// supplied array. When necessary, a window would pop up describing the process. -/// If showInitially is passed as true, the window will always popup. -/// If doDeferredInit is true (default), doDeferredInit() is done on all -/// dictionaries at the end. -void loadDictionaries( QWidget * parent, bool showInitially, - Config::Class const & cfg, - std::vector< sptr< Dictionary::Class > > &, - QNetworkAccessManager & dictNetMgr, - bool doDeferredInit = true ); - -/// Runs deferredInit() on all the given dictionaries. Useful when -/// loadDictionaries() was previously called with doDeferredInit = false. -void doDeferredInit( std::vector< sptr< Dictionary::Class > > & ); -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ar_SA.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ar_SA.ts deleted file mode 100644 index cf7d0f0389..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ar_SA.ts +++ /dev/null @@ -1,4710 +0,0 @@ - - - - - About - - - About - حول - - - - GoldenDict dictionary lookup program, version - برنامج القاموس الذهبي للبحث في القواميس، الإصدار - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 قسطنطين ايزاكوف (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - مرخص وفق الإصدار الثّالث من رُخصة غنّو أو أحدث - - - - Credits: - إشادات: - - - - [Unknown] - [غير معروف] - - - - Based on Qt %1 (%2, %3 bit) - مبني على كيوتي %1 (%2، %3 بت) - - - - ArticleMaker - - - Expand article - وسّع المقالة - - - - Collapse article - اطوِ المقالة - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - تعذّر إيجاد ترجمة لـ <b>%1</b> في المجموعة <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - تعذّر إيجاد ترجمة في مجموعة <b>%1</b>. - - - - Welcome! - مرحبًا بك! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 dir="RTL" align="center">مرحبًا بك في <b>القاموس الذهبي</b>!</h3><p dir="RTL">لبدأ العمل مع البرنامج، زُر أولًا <b>حرّر|قواميس</b> لإضافة بعض مسارات القواميس حيث يُبحث فيها عن ملفات القواميس، إعداد مواقع ويكيبيديا شتّى أو مصادر أخرى، ضبط ترتيب القواميس أو إنشاء مجموعات قواميس.<p dir="RTL">ثمَّ ستكون جاهزًا للبحث عن الكلمات! يمكنك فعل ذلك في الناقذة باستخدام اللوحة على اليمين، أو يمكنك <a href="Working with popup">البحث عن الكلمات من تطبيقات نشطة أخرى</a>. <p dir="RTL">لتخصيص البرنامج، اكتشف التفضيلات المتوفّرة في <b>حرّر|تفضيلات</b>. كل الإعدادات هناك تملك تلميحات، تأكّد من قرائتها إن كنت تشكّ في أي شيء.<p dir="RTL">إن احتجت إلى مزيدٍ من المعلومات، لديك بعض الأسئلة، اقتراحات أو تتسائل فيما يفكّر الغير، نرحّب بك دائمًا في <a href="http://goldendict.org/forum/">منتدى</a> البرنامج.<p dir="RTL">تحقّق من <a href="http://goldendict.org/">موقع وِب</a> البرنامج للتحديثات.<p dir="RTL">حقوق النشر 2008-2013 كونستانتين إيساكوف. مرخّص وفق رخصة جنو العمومية الإصدار 3 أو أحدث. - - - - Working with popup - العمل مع المنبثقات - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 dir="RTL" align="center">العمل مع المنبثقة</h3><p dir="RTL">للبحث عن الكلمات في تطبيقات نشطة أخرى، عليك أولًا تفعيل <i>"وظيفة منبثقة الاستكشاف"</i> في <b>تفضيلات</b>، ثمّ مكّنها في أي وقت بإطلاق أيقونة "منبثقة" بالأعلى، أو بنقر أيقونة صينية النظام بزر الفأرة الأيمن واختيارها في القائمة التي ظهرت. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - <p dir="RTL">ثمَّ أوقف فقط المؤشر على الكلمة التي تريد البحث عنها في التطبيق الآخر، وستنبثق نافذة تصِف لكَ الكلمة. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - <p dir="RTL">ثمَّ حدّد فقط أي كلمة تريد البحث عنها في التطبيق الآخر بالفأرة (انقر مزدوجًا أو مرّرها بالفأرة أثناء ضغط الزر)، وستنبثق نافذة تصِف لكَ الكلمة. - - - - (untitled) - (غير معنون) - - - - (picture) - (صورة) - - - - ArticleRequest - - - Expand article - وسّع المقالة - - - - From - من - - - - Collapse article - اطوِ المقالة - - - - Query error: %1 - خطأ استعلام: %1 - - - - Close words: - الكلمات القريبة: - - - - Compound expressions: - التعابير المركّبة: - - - - Individual words: - الكلمات مفردةً: - - - - ArticleView - - - Form - نموذج - - - - about:blank - حول:فارغ - - - - Find: - اعثر على: - - - - x - س - - - - - &Previous - ال&سابق - - - - - &Next - ال&تالي - - - - Ctrl+G - Ctrl+G - - - - Highlight &all - أبرز ال&كل - - - - &Case Sensitive - ح&سّاس للحالة - - - - Select Current Article - حدّد المقالة الحالية - - - - Copy as text - انسخ كنص - - - - Inspect - افحص - - - - Resource - المورد - - - - Audio - الصوت - - - - TTS Voice - صوت قراءة النّصوص - - - - Picture - الصورة - - - - Video - المرئيات - - - - Video: %1 - المقطع المرئي: %1 - - - - Definition from dictionary "%1": %2 - التّعريف من القاموس "%1": %2 - - - - Definition: %1 - تعريف: %1 - - - - - The referenced resource doesn't exist. - المورد المشار إليه غير موجود. - - - - The referenced audio program doesn't exist. - برنامج الصوت المشار إليه غير موجود. - - - - - ERROR: %1 - خطأ: %1 - - - - &Open Link - ا&فتح الوصلة - - - - Open Link in New &Tab - افتح الوصلة في &لسان جديد - - - - Open Link in &External Browser - افتح الوصلة في متصفّح &خارجي - - - - Save &image... - احفظ ال&صّورة... - - - - Save s&ound... - احفظ الصّو&ت... - - - - &Look up "%1" - اب&حث عن "%1" - - - - Look up "%1" in &New Tab - ابحث عن "%1" في لسان &جديد - - - - Send "%1" to input line - أرسل "%1" إلى سطر الإدخال - - - - - &Add "%1" to history - أ&ضف "%1" إلى التأريخ - - - - Look up "%1" in %2 - ابحث عن "%1" في %2 - - - - Look up "%1" in %2 in &New Tab - ابحث عن "%1" في %2 في لسان &جديد - - - - Save sound - احفظ الصوت - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - ملفات صوت (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;كل الملفات (*.*) - - - - Save image - احفظ الصّورة - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - ملفات صورة (*.bmp *.jpg *.png *.tif);;كل الملفات (*.*) - - - - Failed to run a player to play sound file: %1 - فشل فتح مشغّل لملف الصّوت: %1 - - - - Failed to create temporary file. - فشل في إنشاء ملف مؤقت. - - - - Failed to auto-open resource file, try opening manually: %1. - فشل في فتح ملف المورد تلقائيًّا، حاول فتحه يدويًّا: %1. - - - - WARNING: %1 - تحذير: %1 - - - - The referenced resource failed to download. - فشل تنزيل المورد المشار إليه. - - - - WARNING: FFmpeg Audio Player: %1 - تحذير: مشغّل FFmpeg الصوتي: %1 - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - النّقل الحرفي البيلاروسي من اللاتينية إلى السيريلية (قواعد الإملاء التّقليدية) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - النّقل الحرفي البيلاروسي من اللاتينية إلى السيريلية (قواعد الإملاء المدرسية) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - النّقل الحرفي البيلاروسي (ينعّم الفوارق بين قواعد الإملاء التّقليدية والمدرسية في السيريلية) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - كلمة المرور: - - - - DictGroupWidget - - - Form - نموذج - - - - Group icon: - رمز المجموعة: - - - - Shortcut: - الاختصار: - - - - None - لا شيء - - - - From file... - من ملف... - - - - Choose a file to use as group icon - اختر ملفًا لاستخدامه كرمز للمجموعة - - - - Images - الصور - - - - All files - كل الملفات - - - - Error - خطأ - - - - Can't read the specified image file. - تعذّر قراءة ملف الصورة المحدّد. - - - - DictGroupsWidget - - - - - - Dictionaries: - القواميس: - - - - Confirmation - التّأكيد - - - - Are you sure you want to generate a set of groups based on language pairs? - هل أنت متأكد من توليد مجموعة مجموعات مبنية على زوجي اللّغة؟ - - - - Unassigned - غير مُعيّن - - - - Combine groups by source language to "%1->" - ادمج المجموعات باللغة المصدر إلى "%1->" - - - - Combine groups by target language to "->%1" - ادمج المجموعات باللغة الهدف إلى "->%1" - - - - Make two-side translate group "%1-%2-%1" - أنشئ مجموعة ترجمة من جهتين "%1-%2-%1" - - - - - Combine groups with "%1" - ادمج المجموعات بـ "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - ملفات نص (*.txt);;كل الملفات (*.*) - - - - Export headwords... - - - - - Cancel - ألغِ - - - - DictInfo - - - Total articles: - مجموع المقالات: - - - - Translates from: - ترجم من: - - - - Total words: - مجموع الكلمات: - - - - Translates to: - ترجم إلى: - - - - Open folder - افتح المجلد - - - - Edit dictionary - حرّر القاموس - - - - Files comprising this dictionary: - الملفات التي تتضمن القاموس: - - - - Description: - الوصف: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - حرّر القاموس بالأمر: %1 - - - - DictListModel - - - %1 entries - %1 من المدخلات - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - - - - - Name - الاسم - - - - Address - العنوان - - - - Databases - - - - - Strategies - - - - - Icon - - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - - &Dictionary Bar - شريط ال&قواميس - - - - Extended menu with all dictionaries... - قائمة موسّعة بكل القواميس... - - - - Edit this group - حرّر هذه المجموعة - - - - Dictionary info - معلومات القاموس - - - - Dictionary headwords - - - - - Open dictionary folder - افتح مجلد القاموس - - - - Edit dictionary - حرّر القاموس - - - - EditDictionaries - - - Dictionaries - قواميس - - - - &Sources - م&صادر - - - - - &Dictionaries - &قواميس - - - - - &Groups - م&جموعات - - - - Sources changed - تغيّرت المصادر - - - - Some sources were changed. Would you like to accept the changes? - بعض المصادر تغيّرت. أتقبل التّغييرات؟ - - - - Accept - اقبل - - - - Cancel - ألغِ - - - - ExternalViewer - - - the viewer program name is empty - اسم برنامج العارض فارغ - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - خطأ تحليل XML: %1 عند %2،%3 - - - - Added %1 - أُضيف %1 - - - - by - بواسطة - - - - Male - ذكر - - - - Female - أنثى - - - - from - من - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - اذهب إلى حرّر|قواميس|فورڤو واطلب منّا مفتاح API لإخفاء هذا الخطأ. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - ألغِ - - - - Help - - - - - GermanTranslit - - - German Transliteration - النسخ الألماني الحرفي - - - - GreekTranslit - - - Greek Transliteration - النسخ اليوناني الحرفي - - - - GroupComboBox - - - Choose a Group (Alt+G) - اختر مجموعة (Alt+G) - - - - GroupSelectorWidget - - - Form - نموذج - - - - Look in - ابحث في - - - - Groups - - - Dictionaries available: - القواميس المتوفرة: - - - - Add selected dictionaries to group (Ins) - أضف القواميس المحدّدة إلى المجموعة (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - أزل القواميس المحدّدة من المجموعة (Del) - - - - < - < - - - - Del - Del - - - - Groups: - المجموعات: - - - - Tab 2 - لسان 2 - - - - Create new dictionary group - أنشئ مجموعة قواميس جديدة - - - - &Add group - أ&ضف مجموعة - - - - Create language-based groups - أنشئ مجموعات مبنية على اللغات - - - - Auto groups - مجموعات تلقائية - - - - Rename current dictionary group - أعد تسمية مجموعة القواميس الحالية - - - - Re&name group - أ&عد تسمية المجموعة - - - - Remove current dictionary group - أزل مجموعة القواميس الحالية - - - - &Remove group - أ&زل المجموعة - - - - Remove all dictionary groups - أزل كل مجموعات القواميس - - - - - Remove all groups - أزل كل المجموعات - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - اسحب وأ&فلت القواميس من وإلى المجموعات، انقلها داخل المجموعات، أعد ترتيب المجموعات باستخدام الفأرة. - - - - Group tabs - - - - - Open groups list - - - - - Add group - أضف مجموعة - - - - Give a name for the new group: - ضع اسمًا للمجموعة الجديدة: - - - - Rename group - أعد تسمية المجموعة - - - - Give a new name for the group: - ضع اسمًا جديدًا للمجموعة: - - - - Remove group - أزل المجموعة - - - - Are you sure you want to remove the group <b>%1</b>? - هل أنت متأكد من إزالة المجموعة <b>%1</b>؟ - - - - Are you sure you want to remove all the groups? - هل أنت متأكد من إزالة كل المجموعات؟ - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - ارجع - - - - Forward - تقدّم - - - - Zoom In - قرّب - - - - Zoom Out - بعّد - - - - Normal Size - الحجم الطّبيعي - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - ا&حذف المحدّد - - - - Copy Selected - انسخ المحدّد - - - - History: - التأريخ: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - حجم التأريخ: %1 من المدخلات من أصل %2 - - - - Hunspell - - - Spelling suggestions: - اقتراحات الإملاء: - - - - %1 Morphology - الصَرْف %1 - - - - HunspellDictsModel - - - Enabled - مُمكّن - - - - Name - الاسم - - - - Initializing - - - GoldenDict - Initializing - القاموس الذهبي - يهيّئ - - - - - Please wait while indexing dictionary - فضلًا انتظر بينما تُفهرَس القواميس - - - - Dictionary Name - اسم القامويس - - - - Please wait... - فضلًا انتظر... - - - - Language - - - Afar - العفرية - - - - Abkhazian - الأبخازية - - - - Avestan - الأفستية - - - - Afrikaans - الإفريقية - - - - Akan - الأكانية - - - - Amharic - الأمهرية - - - - Aragonese - الأراغونية - - - - Arabic - العربية - - - - Assamese - الأسامية - - - - Avaric - الأفارية - - - - Aymara - الأيمارية - - - - Azerbaijani - الأذرية - - - - Bashkir - الباشكيرية - - - - Belarusian - البلاروسية - - - - Bulgarian - البلغارية - - - - Bihari - البيهارية - - - - Bislama - البيسلامية - - - - Bambara - البامبارية - - - - Bengali - البنغالية - - - - Tibetan - التبتية - - - - Breton - البريتونية - - - - Bosnian - البوسنية - - - - Catalan - الكتالانية - - - - Chechen - الشيشانية - - - - Chamorro - التشامورو - - - - Corsican - الكورسيكية - - - - Cree - الكري - - - - Czech - التشيكية - - - - Church Slavic - الكنيسة السلافية - - - - Chuvash - التشوفاشية - - - - Welsh - الويلزية - - - - Danish - الدنماركية - - - - German - الألمانية - - - - Divehi - الدِّيْفِيْهيّة - - - - Dzongkha - الزونخاية - - - - Ewe - اليو - - - - Greek - اليونانية - - - - English - الإنجليزية - - - - Esperanto - الاسبرانتو - - - - Spanish - الإسبانية - - - - Estonian - الأستونية - - - - Basque - الباسكية - - - - Persian - الفارسية - - - - Fulah - الفولانية - - - - Finnish - الفنلندية - - - - Fijian - الفيجية - - - - Faroese - الفاروية - - - - French - الفرنسية - - - - Western Frisian - الفريزيان - - - - Irish - الأيرلندية - - - - Scottish Gaelic - الغيلية الأسكتلندية - - - - Galician - الجاليكية - - - - Guarani - الغوارانية - - - - Gujarati - الغوجاراتية - - - - Manx - المنكية - - - - Hausa - الهوساوية - - - - Hebrew - العبرية - - - - Hindi - الهندية - - - - Hiri Motu - الحيري موتو - - - - Croatian - الكرواتية - - - - Haitian - الهايتية - - - - Hungarian - المجرية - - - - Armenian - الأرمينية - - - - Herero - الهيريرو - - - - Interlingua - الوسيطة - - - - Indonesian - الأندونيسية - - - - Interlingue - الإنترلينجوا - - - - Igbo - الإيبو - - - - Sichuan Yi - سيتشوان يي - - - - Inupiaq - الاينبياك - - - - Ido - الآيدوية - - - - Icelandic - الأيسلاندية - - - - Italian - الإيطالية - - - - Inuktitut - الإنكتيتوتية - - - - Japanese - اليابانية - - - - Javanese - الجاوية - - - - Georgian - الجورجية - - - - Kongo - الكونغو - - - - Kikuyu - الكيكويو - - - - Kwanyama - الكوانيامية - - - - Kazakh - الكازاخية - - - - Kalaallisut - الجرينلاندية - - - - Khmer - الخميرية - - - - Kannada - الكانادية - - - - Korean - الكورية - - - - Kanuri - الكانورية - - - - Kashmiri - الكشميرية - - - - Kurdish - الكردية - - - - Komi - الكومية - - - - Cornish - الكورنية - - - - Kirghiz - القيرقيزية - - - - Latin - اللاتينية - - - - Luxembourgish - اللوكسمبرجية - - - - Ganda - الغاندا - - - - Limburgish - الليمبرجيشية - - - - Lingala - اللينغالية - - - - Lao - اللاوية - - - - Lithuanian - اللتوانية - - - - Luba-Katanga - لوبا-كاتانغا - - - - Latvian - اللاتفية - - - - Malagasy - المالاجاشية - - - - Marshallese - المارشالية - - - - Maori - الماورية - - - - Macedonian - المقدونية - - - - Malayalam - المالايالامية - - - - Mongolian - المنغولية - - - - Marathi - المهاراتية - - - - Malay - المالاوية - - - - Maltese - المالطية - - - - Burmese - البورمية - - - - Nauru - الناورو - - - - Norwegian Bokmal - بوكمال النرويجية - - - - North Ndebele - شمال نديبيلي - - - - Nepali - النيبالية - - - - Ndonga - الإندونجية - - - - Dutch - الهولندية - - - - Norwegian Nynorsk - النينورسك النرويجية - - - - Norwegian - النرويجية - - - - South Ndebele - جنوب نديبيلي - - - - Navajo - النافاهو - - - - Chichewa - الشيشيوا - - - - Occitan - الأوكيتانية - - - - Ojibwa - الأوجيبوا - - - - Oromo - الأورومية - - - - Oriya - الأوريا - - - - Ossetian - الأوسيتية - - - - Panjabi - البنجابية - - - - Pali - البالية - - - - Polish - البولندية - - - - Pashto - البشتونية - - - - Portuguese - البرتغالية - - - - Quechua - الكويتشوا - - - - Raeto-Romance - ريتو-الرومانسية - - - - Kirundi - الكيروندية - - - - Romanian - الرومانية - - - - Russian - الروسية - - - - Kinyarwanda - الكينيارواندية - - - - Sanskrit - السنسكريتية - - - - Sardinian - السردينية - - - - Sindhi - السندية - - - - Northern Sami - شمال سامي - - - - Sango - السانغو - - - - Serbo-Croatian - الصربية الكرواتية - - - - Sinhala - السنهالية - - - - Slovak - السلوفاكية - - - - Slovenian - السلوفينية - - - - Samoan - الساموية - - - - Shona - الشونا - - - - Somali - الصومالية - - - - Albanian - الألبانية - - - - Serbian - الصربية - - - - Swati - السواتية - - - - Southern Sotho - جنوب السوتو - - - - Sundanese - السوندانية - - - - Swedish - السويدية - - - - Swahili - السواحلية - - - - Tamil - التاميلية - - - - Telugu - التيلجو - - - - Tajik - الطاجيكية - - - - Thai - التايلاندية - - - - Tigrinya - التغرينية - - - - Turkmen - التركمانية - - - - Tagalog - التاجالوجية - - - - Tswana - التسوانية - - - - Tonga - التونغا - - - - Turkish - التركية - - - - Tsonga - التسونجا - - - - Tatar - التتارية - - - - Twi - التوي - - - - Tahitian - التاهيتية - - - - Uighur - الإيغورية - - - - Ukrainian - الأوكرانية - - - - Urdu - الأُردية - - - - Uzbek - الأوزبكية - - - - Venda - الفيندا - - - - Vietnamese - الفيتنامية - - - - Volapuk - فولابوك - - - - Walloon - الولونية - - - - Wolof - الوولوف - - - - Xhosa - زوسا - - - - Yiddish - اليديشية - - - - Yoruba - اليوروبية - - - - Zhuang - التشوانغية - - - - Chinese - الصينية - - - - Zulu - الزولو - - - - Lojban - اللوجبانية - - - - Traditional Chinese - الصينية التقليدية - - - - Simplified Chinese - الصينية المبسطة - - - - Other - أخرى - - - - Other Simplified Chinese dialects - لهجات الصينية المبسطة الأخرى - - - - Other Traditional Chinese dialects - لهجات الصينية التقليدية الأخرى - - - - Other Eastern-European languages - لغات شرق أوروبا الأخرى - - - - Other Western-European languages - لغات غرب أوروبا الأخرى - - - - Other Russian languages - اللغات الروسية الأخرى - - - - Other Japanese languages - اللغات اليابانية الأخرى - - - - Other Baltic languages - اللغات البلطيقية الأخرى - - - - Other Greek languages - اللغات اليونانية الأخرى - - - - Other Korean dialects - اللهجات الكورية الأخرى - - - - Other Turkish dialects - اللهجات التركية الأخرى - - - - Other Thai dialects - اللهجات التايلاندية الأخرى - - - - Tamazight - الأمازيغية - - - - LoadDictionaries - - - Error loading dictionaries - خطأ في تحميل القواميس - - - - Main - - - Error in configuration file. Continue with default settings? - خطأ في ملف الإعداد. أأتابع بالإعدادات الافتراضية؟ - - - - MainWindow - - - - Welcome! - مرحبًا بك! - - - - &File - &ملف - - - - &Edit - &حرّر - - - - &Help - م&ساعدة - - - - &View - &عرض - - - - &Zoom - ت&قريب - - - - H&istory - &تأريخ - - - - Search - - - - - &Search Pane - لوحة ال&بحث - - - - &Results Navigation Pane - لوحة التنقّل بين النتائ&ج - - - - &History Pane - لوحة التأري&خ - - - - &Dictionaries... - &قواميس... - - - - F3 - F3 - - - - &Preferences... - ت&فضيلات... - - - - F4 - F4 - - - - &Homepage - &صفحة البداية - - - - &About - &حول - - - - About GoldenDict - حول القاموس الذهبي - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - ا&خرج - - - - Quit from application - اخرج من التطبيق - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - المن&تدى - - - - &Close To Tray - أ&غلق إلى صينية النظام - - - - Minimizes the window to tray - يصغّر النافذة إلى صينية النظام - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - ا&حفظ المقالة - - - - Save Article - احفظ المقالة - - - - F2 - F2 - - - - &Print - ا&طبع - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - إ&عداد الصفحة - - - - Print Pre&view - معاي&نة الطباعة - - - - &Rescan Files - أعد إ&كتشاف الملفات - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - ا&محُ - - - - &New Tab - لسان &جديد - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - مجلد الإ&عداد - - - - - &Show - أ&ظهر - - - - Ctrl+H - Ctrl+H - - - - &Export - &صدّر - - - - &Import - ا&ستورد - - - - &Always on Top - &دائمًا في الأعلى - - - - Always on Top - دائمًا في الأعلى - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - زر قائمة - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - - Show Names in Dictionary &Bar - أظهر الأسماء في &شريط القواميس - - - - Show Small Icons in &Toolbars - أظهر رموز صغيرة في شريط الأد&وات - - - - &Menubar - شريط ال&قوائم - - - - &Navigation - التن&قّل - - - - Back - ارجع - - - - Forward - تقدّم - - - - Scan Popup - منبثقة الاستكشاف - - - - Pronounce Word (Alt+S) - انطق الكلمة (Alt+S) - - - - Zoom In - قرّب - - - - Zoom Out - بعّد - - - - Normal Size - الحجم الطّبيعي - - - - - Look up in: - ابحث في: - - - - Found in Dictionaries: - اعثر في القواميس: - - - - Words Zoom In - قرّب الكلمات - - - - Words Zoom Out - يعّد الكلمات - - - - Words Normal Size - حجم الكلمات العادي - - - - Show &Main Window - أظهر النافذة ال&رئيسية - - - - Opened tabs - الألسنة المفتوحة - - - - Close current tab - أغلق اللسان الحالي - - - - Close all tabs - أغلق كل الألسنة - - - - Close all tabs except current - أغلق كل الألسنة ما عدا هذا - - - - Loading... - يحمّل... - - - - New Tab - لسان جديد - - - - - Accessibility API is not enabled - أداة الإتاحة غير ممكّنة - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - %1 dictionaries, %2 articles, %3 words - %1 من القواميس، %2 من المقالات، %3 من الكلمات - - - - Look up: - ابحث عن: - - - - All - الكل - - - - Open Tabs List - قائمة الألسنة المفتوحة - - - - (untitled) - (غير معنون) - - - - %1 - %2 - %1 - %2 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - فشل تهيئة تقنية مراقبة المفاتيح الساخنة.<br>تأكد من أن امتداد RECORD في XServer ممكّن. - - - - New Release Available - إصدار جديد متوفّر - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - الإصدار <b>%1</b> من القاموس الذهبي متوفّر الآن للتنزيل.<br>انقر <b>نزّل</b> للوصول إلى صفحة التنزيل. - - - - Download - نزّل - - - - Skip This Release - تخطّ هذا الإصدار - - - - You have chosen to hide a menubar. Use %1 to show it back. - اخترت إخفاء شريط القوائم. استخدم %1 لإظهاره مرة أخرى. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - إعداد الصفحة - - - - No printer is available. Please install one first. - لا تتوفر طابعة. فضلًا ثبّت واحدة أولًا. - - - - Print Article - اطبع المقالة - - - - Article, Complete (*.html) - مقالة، بالكامل (*.html) - - - - Article, HTML Only (*.html) - مقالة، HTML فقط (*.html) - - - - Save Article As - احفظ المقالة كـ - - - - Error - خطأ - - - - Can't save article: %1 - تعذّر حفظ المقالة: %1 - - - - Saving article... - يحفظ المقالة... - - - - The main window is set to be always on top. - عُيّنت النافذة الرئيسية في الأعلى دائمًا. - - - - &Hide - أ&خفِ - - - - Export history to file - صدّر التأريخ إلى ملف - - - - - Text files (*.txt);;All files (*.*) - ملفات نص (*.txt);;كل الملفات (*.*) - - - - History export complete - اكتمل تصدير التأريخ - - - - Export error: - خطأ استيراد: - - - - Import history from file - استورد التأريخ من ملف - - - - Import error: invalid data in file - خطأ استيراد: بيانات غير صالحة في الملف - - - - History import complete - اكتمل استيراد التأريخ - - - - Import error: - خطأ استيراد: - - - - Dictionary info - معلومات القاموس - - - - Dictionary headwords - - - - - Open dictionary folder - افتح مجلد القاموس - - - - Edit dictionary - حرّر القاموس - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - عُبث في ملف القاموس أو أُتلف - - - - Failed loading article from %1, reason: %2 - فشل تحميل المقالة من %1، السبب: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - خطأ تحليل XML: %1 عند %2،%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - خطأ تحليل XML: %1 عند %2،%3 - - - - MediaWikisModel - - - Enabled - ممكّن - - - - Name - الاسم - - - - Address - العنوان - - - - Icon - الرّمز - - - - OrderAndProps - - - Form - النموذج - - - ... - ... - - - - Dictionary order: - ترتيب القواميس: - - - - Inactive (disabled) dictionaries: - القواميس غير النشطة (المعطّلة): - - - - Dictionary information - معلومات القاموس - - - - Name: - الاسم: - - - - Total articles: - مجموع المقالات: - - - - Total words: - مجموع الكلمات: - - - - Translates from: - الترجمات من: - - - - Translates to: - الترجمات إلى: - - - - Description: - الوصف: - - - - Files comprising this dictionary: - الملفات التي تتضمن القاموس: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - اضبط الترتيب بسحب العناصر إفلاتها في القائمة. أفلت القواميس في المجموعة غير النشطة لتعطيل استخدامها. - - - - Sort by name - افرز بالاسم - - - - Sort by languages - افرز باللغة - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - المسار - - - - Recursive - التكرارية - - - - Preferences - - - Preferences - تفضيلات - - - - &Interface - ال&واجهة - - - - Startup - البدء - - - - Automatically starts GoldenDict after operation system bootup. - يبدأ القاموس الذهبي مباشرة بعد إقلاع النّظام . - - - - Start with system - ابدأ مع النظام - - - - Add-on style: - نمط الملحقة: - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - عند تمكينه، سيظهر رمز في صينية النظام حيث يمكن استخدامها -لفتح النافذة الرئيسية وإجراء مهامَ أخرى. - - - - Enable system tray icon - مكّن رمز صينية النظام - - - - With this on, the application starts directly to system tray without showing -its main window. - بهذه، يبدأ التطبيق تلقائيًّا في صينية النظام دون -أن تظهر النافذة الرئيسية. - - - - Start to system tray - ابدأ إلى صينية النظام - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - بهذه، محاولة إغلاق النافذة الرئيسية يخفي التطبيق بدلًا -من إنهائه. - - - - Close to system tray - أغلق إلى صينية النظام - - - - Double-click translates the word clicked - النقر المزدوج يترجم الكلمة المحدّدة - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - عادةً، ضغط ESC ينقل التركيز إلى سطر الترجمة. -بهذه، على أي حال، ستُخفي النافذة الرئيسية. - - - - ESC key hides main window - مفتاح ESC يخفي النافذة الرئيسية - - - - Turn this option on if you want to select words by single mouse click - مكّن هذا الخيار إن أردت تحديد الكلمة بنقرة فأرة واحدة - - - - Select word by single click - حدّد الكلمة بنقرة مفردة - - - - Tabbed browsing - التصفّح المبوّب - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - عادةً، عند فتح لسان، يُتبدَّل إليه تلقائيًّا. -بهذه، على أي حال، الألسنة الجديدة ستُفتح دون -التبديل إليها. - - - - Open new tabs in background - افتح الألسنة الجديدة في الخلفية - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - بهذه، الألسنة ستُفتح فقط بعد -الحاليّة، النشطة. وإلّا ستُضاف -إلى الألسنة الأخيرة. - - - - Open new tabs after the current one - افتح الألسنة الجديدة بعد الحاليّة - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - اختر هذا الخيار إن لم تكن تريد رؤية شريط الألسنة الرئيسي عندما يكون لسان واحد مفتوح. - - - - Hide single tab - أخفِ لسانًا واحدًا - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab يتنقّل بين الألسنة بترتيب MRU - - - - Interface language: - لغة الواجهة: - - - - Display style: - نمط العرض: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - اضبط هذه القيمة لتجنّب قوائم المحتوى الضخمة. - - - - Context menu dictionaries limit: - حد القواميس في قائمة السياق: - - - - &Scan Popup - منبثقة الا&ستكشاف - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - إن مكّن، نافذة ترجمة منبثقة ستظهر كل مرة -تضع المؤشر على أي كلمة على الشاشة (ويندوز) -أو تحدّد أي كلمة بالفأرة (لينكس). إن مكّن، تستطيع -تشغيله أو تعطيله من النافذة الرئيسية أو صينية النظام. - - - - Enable scan popup functionality - مكّن وظيفة منبثقة الاستكشاف - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - يحدّد إن كان وضع منبثقة الاستكشاف ممكّن افتراضيًّا أو لا. إن عُلِّم، -سيبدأ البرنامج دائمًا ومنبثقة الاستكشاف نشطة. - - - - Start with scan popup turned on - ابدأ و منبثقة الاستكشاف تعمل - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - إن كان هذا ممكّنًا، النافذة المنبثقة ستظهر فقط إن كانت كل -المفاتيح مضغوطة عندما يتغيّر تحديد الكلمة. - - - - Only show popup when all selected keys are kept pressed: - أظهر المنبثقة فقط عند إبقاء الضغط على المفاتيح هذه كلها: - - - - Left Ctrl only - Ctrl اليساري فقط - - - - Left Ctrl - Ctrl اليساري - - - - Right Shift only - Shift اليميني فقط - - - - Right Shift - Shift اليميني - - - - Alt key - مفتاح Alt - - - - Alt - Alt - - - - Ctrl key - مفتاح Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Alt اليساري فقط - - - - Left Alt - Alt اليساري - - - - Shift key - مفتاح Shift - - - - Shift - Shift - - - - Right Alt only - Alt اليميني فقط - - - - Right Alt - Alt اليميني - - - - Right Ctrl only - Ctrl اليميني فقط - - - - Right Ctrl - Ctrl اليميني - - - - Left Shift only - Shift اليساري فقط - - - - Left Shift - Shift اليساري - - - - Windows key or Meta key - مفتاح الشّعار - - - - Win/Meta - ويندوز/ميتا - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - عادةً، لتفعيل المنبثقة عليك إبقاء -الضغط على المفاتيح المختارة وأنت -تحدّد الكلمة. عند تمكين هذا، المفاتيح -المختارة يمكن ضغطها بوقت أقل بعد -الانتهاء من التحديد. - - - - Keys may also be pressed afterwards, within - يمكن أيضًا ضغط المفاتيح فيما بعد خلال - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - لتجنّب الأخطاء، تُراقب المفاتيح أيضًا -بعد الاختيار القيمة لوقت محدّد من -الثواني، والذي تستطيع تحديده هنا. - - - - secs - ث - - - - Send translated word to main window instead of to show it in popup window - أرسل الكلمة المترجمة إلى النافذة الرئيسية بدلًا من إظهارها في نافذة منبثقة - - - - Send translated word to main window - أرسل الكلمة المترجمة إلى النافذة الرئيسية - - - - Hotkeys - المفاتيح السريعة - - - - Use the following hotkey to show or hide the main window: - استخدم المفتاح السّريع التالي لإظهار أو إخفاء النافذة الرئيسية: - - - - Use the following hotkey to translate a word from clipboard: - استخدم المفاتيح السّريع التالي لترجمة كلمة من الحافظة: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - المفاتيح السريعة تعمل في أي مكان من الحاسوب خلال أي محتوى طالما القاموس الذهبي يعمل في الخلفية. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p dir="RTL" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">ملاحظة: يبدو أنك تعمل على إصدار X.Org XServer لديه ملحقة RECORD معطّلة. المفاتيح السريعة في القاموس الذهبي قد لا تعمل. يمكن إصلاح هذا في الخدم نفسه. فضلًا ارجع إلى </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">العلة هذه</span></a><span style=" color:#ff0000;"> واترك تعليقًا هناك إن أحببت.</span></p></body></html> - - - - &Audio - ال&صوت - - - - Pronunciation - النطق - - - - Auto-pronounce words in main window - انطق تلقائيًّا الكلمات في النافذة الرئيسية - - - - Auto-pronounce words in scan popup - انطق تلقائيًّا الكلمات في منبثقة الاستكشاف - - - - Playback - التشغيل - - - - Play audio files via FFmpeg(libav) and libao - شغّل ملفات الصوت بـ FFmpeg(libav) و libao - - - - Use internal player - استخدم المشغّل الداخلي - - - - Use any external program to play audio files - استخدم أي برنامج خارجي لتشغيل ملفات الصوت - - - - Use external program: - استخدم برنامجًا خارجيًا: - - - - &Network - ال&شّبكة - - - - Enable if you wish to use a proxy server -for all program's network requests. - مكّنه إن وددت استخدام مُلقّم -لجميع طلبات البرنامج في الشبكة. - - - - Use proxy server - استخدم مُلقّمًا - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Type: - النّوع: - - - - Host: - المضيف: - - - - Port: - المنفذ: - - - - User: - المستخدم: - - - - Password: - كلمة المرور: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - تمكين هذا يجعل القاموس الذهبي يمنع أغلب الإعلانات -بعدم السماح بالمحتوى (صور، إطارات) غير المُنشأ من الموقع -الذي تتصفّحه. إن انهارت بعض المواقع بسبب هذا، حاول تعطيله. - - - - Disallow loading content from other sites (hides most advertisements) - امنع تحميل المحتوى من مواقع أخرى (يخفي أغلب الإعلانات) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - تمكين هذا سيسمح بالاستماع إلى نطق الصوت -من القواميس الموجودة على الإنترنت التي تعتمد -مشغّل فلاش أو إضافات وِب. يجب تثبيت الإضافة -ليعمل هذا الخيار. - - - - Enable web plugins - مكّن إضافات الوِب - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - بعض المواقع تكتشف القاموس الذهبي من خلال ترويسات HTTP وتمنع الطلبات. -مكّن هذا الخيار للالتفاف حول المشكلة. - - - - Do not identify GoldenDict in HTTP headers - لا تعرّف القاموس الذهبي في ترويسات HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - عند تمكين هذا، يلتمس البرنامج -كل فترة إن كان هناك تحديث جديد -للبرنامج متوفّر للتنزيل. إن كان كذلك، -سيُعلمك البرنامج عنه ويطلب فتح صفحة التنزيل. - - - - Check for new program releases periodically - التمس عن إصدار جديد للبرنامج كل فترة - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Ad&vanced - مت&قدّم - - - - ScanPopup extra technologies - تقنيات منبثقة الاستكشاف الإضافية - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - حاول أن تستخدم تقنية IAccessibleEx لاسترجاع الكلمة الواقعة تحت المؤشر. -تعمل هذه التقنية فقط مع بعض البرمجيات التي تدعمها. -(على سبيل المثال انترنت اكسبلورر 9) -لا حاجة لانتقاء هذا الخيار إذا كنت لا تستخدم مثل هذه البرمجيات. - - - - Use &IAccessibleEx - استخدم &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - حاول أن تستخدم تقنية أتمتة واجهة المُستخدم لاسترجاع الكلمة الواقعة تحت المؤشر. -تعمل هذه التقنية فقط مع بعض البرمجيات التي تدعمها. -لا حاجة لانتقاء هذا الخيار إذا كنت لا تستخدم مثل هذه البرمجيات. - - - - Use &UIAutomation - استخدم أ&تمتة واجهة المستخدم - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - حاول استخدام رسالة القاموس الذهبي لاسترجاع الكلمة تحت المؤشر. -هذه التقنية تعمل فقط مع بعض البرامج وتدعمها. -ليس مهمًّا تحديد هذا الخيار إن لم تكن تستخدم هكذا برنامج. - - - - Use &GoldenDict message - استخدم رسالة القاموس ال&ذهبي - - - - History - التأريخ - - - - Turn this option on to store history of the translated words - مكّن هذا الخيار لتخزين تأريخ الكلمات المترجمة - - - - Store &history - خزّن ال&تأريخ - - - - Specify the maximum number of entries to keep in history. - حدّد عدد المدخلات الأقصى لإبقائها في التأريخ. - - - - Maximum history size: - حجم التأريخ الأقصى: - - - - History saving interval. If set to 0 history will be saved only during exit. - فترة حفظ التأريخ. إن عُيِّنت إلى 0، سيُحفظ التأريخ أثناء إنهاء التطبيق فقط. - - - - Save every - احفظ كلّ - - - - minutes - دقيقة - - - - Articles - المقالات - - - - Turn this option on to always expand optional parts of articles - مكّن هذا الخيار لتوسيع الأجزاء الاختيارية من المقالات دائمًا - - - - Expand optional &parts - وسّع الأ&قسام الاختيارية - - - - Select this option to automatic collapse big articles - حدّد هذا الخيار لطي المقالات الكبيرة تلقائيًّا - - - - Collapse articles more than - اطو المقالات الأكبر من الـ - - - - Articles longer than this size will be collapsed - المقالات الأكبر من هذا الحجم ستطوى - - - - symbols - رمز - - - - System default - افتراضي النظام - - - - - Default - الافتراضي - - - - Modern - عصري - - - - Lingvo - لنغفو - - - - Babylon - بابيلون - - - - Lingoes - لِنْغوز - - - - Lingoes-Blue - لِنْغوز-بلو - - - - Changing Language - يغيّر اللغة - - - - Restart the program to apply the language change. - أعد تشغيل البرنامج لتطبيق تغيير اللغة. - - - - ProgramTypeEditor - - - Audio - صوت - - - - Plain Text - نص مجرّد - - - - Html - Html - - - - Prefix Match - طابِق السابقة - - - - Unknown - غير معروف - - - - Programs::RunInstance - - - No program name was given. - لم يُعطَ اسم للبرنامج. - - - - The program has crashed. - انهار البرنامج. - - - - The program has returned exit code %1. - أرجعَ البرنامج شِفرة الخروج %1. - - - - ProgramsModel - - - Enabled - ممكّن - - - - Type - النوع - - - - Name - الاسم - - - - Command Line - سطر الأوامر - - - - Icon - الرّمز - - - - QObject - - - - Article loading error - خطأ في تحميل المقالة - - - - - Article decoding error - خطأ في فك ترميز المقالة - - - - avformat_alloc_context() failed. - فشل avformat_alloc_context(). - - - - av_malloc() failed. - فشل av_malloc(). - - - - avio_alloc_context() failed. - فشل avio_alloc_context(). - - - - avformat_open_input() failed: %1. - فشل avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - فشل avformat_find_stream_info(): %1. - - - - Could not find audio stream. - تعذّر العثور على دفق الصوت. - - - - Codec [id: %1] not found. - لم يُعثر على المرماز [المعرّف: %1]. - - - - avcodec_open2() failed: %1. - فشلavcodec_open2(): %1. - - - - Cannot find usable audio output device. - تعذّر العثور على جهاز خرج صوت قابل للاستخدام. - - - - Unsupported sample format. - صيغة النموذج غير مدعومة. - - - - ao_open_live() failed: - فشل ao_open_live(): - - - - No driver. - لا تعريف. - - - - This driver is not a live output device. - هذا التعريف ليس جهاز خرج حيّ. - - - - A valid option key has an invalid value. - مفتاح خيار صالح يملك قيمة غير صالحة. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - تعذّر فتح الجهاز: %1، القنوات: %2، المعدّل: %3، البتات: %4. - - - - Unknown error. - خطأ غير معروف. - - - - avcodec_alloc_frame() failed. - فشل avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - رشّح/ابحث في القاموس (Ctrl+F) - - - - Quick Search - بحث سريع - - - - Clear Search - امحُ البحث - - - - ResourceToSaveHandler - - - - ERROR: %1 - خطأ: %1 - - - - Resource saving error: - خطأ في حفظ المورد: - - - - The referenced resource failed to download. - فشل تنزيل المورد المشار إليه. - - - - Romaji - - - Hepburn Romaji for Hiragana - رومانجي هِپ‌بيرن للهيراجانا - - - - Hepburn Romaji for Katakana - رومانجي هِپ‌بيرن للكاتاكانا - - - - RussianTranslit - - - Russian Transliteration - النسخ الروسي الحرفي - - - - ScanPopup - - - Dialog - الحوار - - - - Back - ارجع - - - - - - - - ... - ... - - - - Forward - تقدّم - - - - Pronounce Word (Alt+S) - انطق الكلمة (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - أرسل الكلمة إلى النافذة الرئيسية (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - يُظهر أو يخفي شريط القاموس - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - استخدم هذا لتثبيت النافذة فتبقى على الشاشة، -يمكن تغيير حجمها أو إدارتها بطرق عدّة. - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - المسار - - - - Name - الاسم - - - - Icon - الرّمز - - - - Sources - - - Files - الملفات - - - - Paths to search for the dictionary files: - المسارات للبحث فيها عن ملفات القواميس: - - - - - - - - - &Add... - أ&ضف... - - - - - - - - - &Remove - أ&زل - - - - Re&scan now - أعد الا&كتشاف الآن - - - - Sound Dirs - أدلة الصوت - - - - Make dictionaries from bunches of audiofiles by adding paths here: - اعمل قواميس من مجموعات من ملفات الصوت بإضافة المسارات هنا: - - - - Morphology - الصَرْف - - - - Path to a directory with Hunspell/Myspell dictionaries: - المسار إلى دليل بقواميس Hunspell/Myspell: - - - - &Change... - &غيّر... - - - - Available morphology dictionaries: - قواميس الصَرْف المتوفّرة: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - كل قاموس صَرْف يظهر -كقاموس مساعد منفصل -حيث يقدّم جذر الكلمة للبحث -واقتراحات الإملاء للكلمات -الخاطئة. أضف القواميس -المناسبة إلى أسفل المجموعات -المناسبة لاستخدامها. - - - - Wikipedia - ويكيبيديا - - - - Wikipedia (MediaWiki) sites: - مواقع ويكيبيديا (ميدياويكي): - - - - Websites - مواقع الوِب - - - - Any websites. A string %GDWORD% will be replaced with the query word: - أي مواقع للوِب. السلسلة %GDWORD% ستُستبدل بكلمة الاستعلام: - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - إضافةً إلى ذلك، استخدم %GD1251% لـ CP1251، و %GDISO1% لـ ISO 8859-1، و %GDISO16% لـ ISO 8859-16، و -%GDBIG5% لـ Big-5، و %GDBIG5HKSCS% لـ Big5-HKSCS، و %GDGBK% لـ GBK و GB18030، و %GDSHIFTJIS% لـ Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Programs - البرامج - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - أي برامج خارجية، السلسلة %GDWORD% ستُستبدل بكلمة الاستعلام. إن لم تُقدَّم هكذا سلسلة، ستُغذّى الكلمة إلى الإدخال القياسي. - - - - Forvo - فورڤو - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - نطق حيّ من <a href="http://www.forvo.com/">forvo.com</a>. هذا الموقع يسمح للناس بتسجيل ومشاركة نطق الكلمة. يمكنك الإستماع إليها من القاموس الذهبي. - - - - Enable pronunciations from Forvo - مكّن النطق من فورڤو - - - - API Key: - مفتاح API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - استخدام فورڤو حاليًّا يتطلّب مفتاح API. اترك هذا الحقل -فارغًا إن أردت استخدام الافتراضي، والذي قد لا يتوفّر في -المستقبل، أو سجّل في موقعنا للحصول على مفتاحك الخاص. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - احصل على مفتاحك الخاص من <a href="http://api.forvo.com/key/">هنا</a>، أو اتركه فارغًا لاستخدام الافتراضي. - - - - Language codes (comma-separated): - ترميزات اللغة (مقسّمة بفواصل): - - - - List of language codes you would like to have. Example: "en, ru". - قائمة ترميزات اللغة التي تريد امتلاكها. مثال: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - القائمة الكاملة من ترميزات اللغة متوفّرة <a href="http://www.forvo.com/languages-codes/">هنا</a>. - - - - Transliteration - النسخ الحرفي - - - - Russian transliteration - النسخ الروسي الحرفي - - - - Greek transliteration - النسخ اليوناني الحرفي - - - - German transliteration - النسخ الألماني الحرفي - - - - Belarusian transliteration - النسخ البلاروسي الحرفي - - - - Enables to use the Latin alphabet to write the Japanese language - يمكّن استخدام الأبجدية اللاتينية لكتابة اللغة اليابانية - - - - Japanese Romaji - روماجي اليابانية - - - - Systems: - الأنظمة: - - - - The most widely used method of transcription of Japanese, -based on English phonology - الطريقة الأكثر استخدامًا لنسخ اليابانية، -مبنية على الفونولوجيا الإنجليزية - - - - Hepburn - هِپ‌بيرن - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - النظام الأكثر اعتيادية، لهُ علاقة واحد إلى واحد لأنظمة -كتابة الكانا، موحّدة كـ ISO 3602 - -لم يُنفَّذ حتى الآن في القاموس الذهبي. - - - - Nihon-shiki - نيهون-شيكي - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - مبني على نيهون-شيكي، لكن مُعدَّل لليابانية العصرية القياسية. -موحّدة كـ ISO 3602 - -لم يُنفَّذ حتى الآن في القاموس الذهبي. - - - - Kunrei-shiki - كنريه-شيكي - - - - Syllabaries: - الكتابة المقطعية: - - - - Hiragana Japanese syllabary - الكتابة اليابانية الهيراجانا المقطعية - - - - Hiragana - الهيراجانا - - - - Katakana Japanese syllabary - الكتابة اليابانية الكاتاكانا المقطعية - - - - Katakana - الكاتاكانا - - - - Text to Speech - قراءة النّصوص - - - - (not available in portable version) - (ليس متوفّرًا في الإصدار المحمول) - - - - - - Choose a directory - اختر قاموسًا - - - - - - - - - Confirm removal - تأكيد الإزالة - - - - - Remove directory <b>%1</b> from the list? - أأزيل القاموس <b>%1</b> من القائمة؟ - - - - - - Remove site <b>%1</b> from the list? - أأزيل الموقع <b>%1</b> من القائمة؟ - - - - Remove program <b>%1</b> from the list? - أأزيل البرنامج <b>%1</b> من القائمة؟ - - - - StylesComboBox - - - None - لاشيء - - - - TextToSpeechSource - - - Selected voice engines: - محركات الصوت المحدّدة: - - - - &Add - أ&ضف - - - - &Remove - أ&زل - - - - Preferences - تفضيلات - - - - Volume: - الحجم: - - - - Rate: - المعدّل: - - - - Preview - معاينة - - - - Available voice engines: - محركات الصوت المتوفّرة: - - - - Text to be previewed: - النص لمعاينته: - - - - Type text to be previewed here. - اطبع نصًّا هنا لعرضه. - - - - &Preview - &عاين - - - - No TTS voice available - لم يُعثر على صوت TTS - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - تعذّر العثور على صوت TTS.<br>فضلًا تأكد من وجود محرك TTS بالإصدار الأخير مثبّت على حاسوبك. - - - - Confirm removal - تأكيد الإزالة - - - - Remove voice engine <b>%1</b> from the list? - أأزيل محرك الصوت <b>%1</b> من القائمة؟ - - - - TranslateBox - - - Type a word or phrase to search dictionaries - اطبع كلمة أو عبارة للبحث في القواميس - - - - Drop-down - القائمة المنسدلة - - - - VoiceEnginesModel - - - Enabled - ممكّن - - - - Name - الاسم - - - - Id - المعرّف - - - - Icon - الأيقونة - - - - WebSitesModel - - - Enabled - ممكّن - - - - Name - الاسم - - - - Address - العنوان - - - - Icon - الرّمز - - - - WordFinder - - - Failed to query some dictionaries. - فشل الاستعلام عن بعض القواميس. - - - - WordList - - - WARNING: %1 - تحذير: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ay_WI.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ay_WI.ts deleted file mode 100644 index ed98874338..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ay_WI.ts +++ /dev/null @@ -1,4724 +0,0 @@ - - - - - - - - XML parse error: %1 at %2,%3 - Jan wali XML ullarasa : %1 en %2,%3 - - - - About - - About - Uka jak'atxa - - - Credits: - credito - - - GoldenDict dictionary lookup program, version 0.7 - GoldenDict arupirwa electrónico, versión 0.7 - - - GoldenDict dictionary lookup program, version - GoldenDict, aru pirwa electrónico, versión - - - #.# - #.# - - - Licensed under GNU GPLv3 or later - Licencia GNU GPLv3 jan ukax ukatsa - - - [Unknown] - [jan uñat'ata] - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@users.berlios.de) - - - Based on Qt %1 (%2, %3 bit) - - - - - ArticleMaker - - No translation for <b>%1</b> was found in group <b>%2</b>. - Janiwa aru jaqukipañata <b>%1</b>qutut jikxatatanwa nwa <b>%2</b>. - - - No translation was found in group <b>%1</b>. - Janiwa aru jaqukipawit qutut jikxatatanwa <b>%1</b>. - - - Welcome! - ¡Aski jutawi! - - - Working with popup - Yurir t'uxu apnaqkasa - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">kunjams yurir t'uxux apnaqaña</h3>yaqha p'ikhu apnaqawinakat aru thaqtañatakixa, nayraqataxa qhananchawinakaw uñstayaña<i>"mä yurir t'uxuruw kikip qillqaqta"</i> en <b>qillqsuña|munatanaka</b>. ukatx kawkichiqans apnaqasikispawa, amsta unañchayiri qhanstayasa 'yurir t'uxuta'. maykipat clic lurt'am kupituqiru aynach mantañ llikawjaru ukat ma qhananchawi chhijllam <b>yurir t'uxumpi kikip qillqaqaña </b> menú chiqawjana. - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Ukat cursor jarkt'ama kuna arutix jumax yaqha yant'awin thaqtañ munt ukaru ukat mä yurir t'uxun uñstanini jiskt'añataki. - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Ukat, achakumamp chhijllam mä munat aru yaqha yant'awit thaqtañataki. Mä aru chhijllañatakixa paykut clic lurt'am jan ukax qatattamsa mä arxaru ukäkipansti achachun liq'iñapa limxatasa, ukatx mä yurir t'uxuw uñstanini arun qhananchawinakapampi. - - - (untitled) - (jan qillqatani) - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">¡aski jutawi <b>GoldenDict</b>!</h3><p>wakichawi apnaqas qalltañatakixa, nayraqatax menú ukar saram <b>qillqsuña|aru pirwanaka </b> Mä qawqha p'iqinchiri thakhinaka uchañatakixa aru pirwa q'ipinaka thaqhañatakixa, establecer sitios de Wikipediawjanak ukhamarak yaqha chiqawjanak utt'ayaña, aru pirwanakan utt'ayawip jikthapiyaña ja ukax tama aru pirwanak uñstayaña. <p>¡ukhamax, arunak thaqtasaw jumax qalltasma! aka t'uxut panel apnaqkasaw ch'iqatuqïxar thaqtasma ja ukax atismawa <a href="Working with popup">yaqha p'ikhu apnaqawinakatwa arunak thaqtasma </a>. <p>aka wakichaw mayjt'ayañatakixa, saram <b>qillqsuña&gt;munatanaka</b>. taqpacha qhananchawinakaxa machaqa yurir ulaqanakaniwa. jumatix jan qhananchawinakat amuyksta ukaxa ullaram. <p>jumatix mä juk'ampi yanapt'a munsta ukaxa, jiskt'anakanïsta, amtayaña jan ukax yaqhanakan arst'awinakapa yatiña munst ukaxa, aski jutawi satatawa <a href="http://goldendict.org/forum/">ch'axwawi</a> de GoldenDict. <p>tumpt'ama<a href="http://goldendict.org/">sitio web</a> wakichawin machaqachawinakap jikxatañatakixa. <p>(c) 2008-2013 Konstantin Isakov. GPLv3 amtanakapxaru jan ikax ukat. - - - (picture) - - - - Expand article - - - - Collapse article - - - - - ArticleRequest - - From - Ukata - - - From %1 - Ukata %1 - - - Query error: %1 - Thaqtawit pantjata: %1 - - - Close words: - Arunak jist'antaña: - - - Compound expressions: - Aski arunaka: - - - Individual words: - Sapa arunaka: - - - Expand article - - - - Collapse article - - - - - ArticleView - - GoldenDict - Quri aru pirwa - - - The referenced resource doesn't exist. - Janiw Chiqanchata wakiskirix utjkiti. - - - &Open Link - &Ch'uqat llawiraña. - - - Open Link in New &Tab - Machaq phichhut llawiraña - - - Open Link in &External Browser - Ch'uqa llawiraña mä &navegador web externo ukana - - - &Look up "%1" - &Thaqhaña"%1" - - - Look up "%1" in &New Tab - Thaqhaña "%1" mä &machaq phichhuta - - - Look up "%1" in %2 - Thaqhaña "%1" en %2 - - - Look up "%1" in %2 in &New Tab - Thaqhaña"%1" en %2 mä & machaq phichhuna - - - Playing a non-WAV file - Jan WAV uka kipumpi jaylliyaña - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Jaylliyañ sartayañatakix jan WAV ukampikix, por favor vaya a Editar|Preferencias, escoja la pestaña Audio y seleccione "Reproducir con DirectShow". - - - Failed to run a player to play sound file: %1 - Audio ist'añataki panthatawa: %1 - - - Failed to create temporary file. - Archivo temporalax panthiwa. - - - Failed to auto-open resource file, try opening manually: %1. - Archivox ist'arañ pantthiwa. manualmente yant'am : %1. - - - The referenced resource failed to download. - Apakañanaka pantjiwa - - - Form - Formulario - - - about:blank - Kuna layku: janq'u espacio - - - x - x - - - Find: - Thaqhaña: - - - &Previous - &Sayrïri - - - &Next - &Jutiri - - - Ctrl+G - Ctrl+G - - - &Case Sensitive - &JACH'A QILLQA/jisk'a qillqa - - - Highlight &all - - - - Resource - - - - Audio - - - - Picture - - - - Definition from dictionary "%1": %2 - - - - Definition: %1 - - - - The referenced audio program doesn't exist. - - - - Send "%1" to input line - - - - &Add "%1" to history - - - - WARNING: %1 - akataraki : %1 - - - Select Current Article - - - - ERROR: %1 - - - - Save sound - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - - - - Save image - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - - - - Save &image... - - - - Save s&ound... - - - - TTS Voice - - - - WARNING: FFmpeg Audio Player: %1 - - - - Copy as text - - - - Inspect - - - - Video - - - - Video: %1 - - - - - BelarusianTranslit - - Belarusian transliteration from latin to cyrillic (classic orthography) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - - - - - ChineseConversion - - GroupBox - - - - Enable conversion between simplified and traditional Chinese characters - - - - Chinese Con&version - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - SC to TC (Taiwan variant) - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - SC to TC (Hong Kong variant) - - - - Enable conversion from traditional characters to simplified characters - - - - TC to SC - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - Proxy authentication required - - - - You need to supply a Username and a Password to access via proxy - - - - Username: - - - - Password: - Mantawi: - - - - DictGroupWidget - - Form - Formulario - - - Group icon: - Qutu unanchawi: - - - Shortcut: - Jank'a Tecla mantañataki: - - - None - Ni maya - - - From file... - Ulluta... - - - Choose a file to use as group icon - Mä uyu ajllan qutux icono apñakañataki - - - Images - Jullinaka - - - All files - Taqpacha uyunaka - - - Error - Pantja - - - Can't read the specified image file. - Janiw uyu Jullinaka uyllañ munkiti - - - - DictGroupsWidget - - Confirmation - Jaysawi - - - Are you sure you want to generate a set of groups based on language pairs? - ¿Chiq pach mä tama lurañ muntati pä aru lurt'ata? - - - Dictionaries: - - - - Combine groups by source language to "%1->" - - - - Combine groups by target language to "->%1" - - - - Make two-side translate group "%1-%2-%1" - - - - Combine groups with "%1" - - - - Unassigned - - - - - DictHeadwords - - Search mode - - - - This element determines how filter string will be interpreted - - - - If checked on the symbols case will be take in account when filtering - - - - Match case - - - - Exports headwords to file - - - - Export - - - - OK - - - - Press this button to apply filter to headwords list - - - - Apply - - - - If checked any filter changes will we immediately applied to headwords list - - - - Auto apply - - - - Filter: - - - - Filter string (fixed string, wildcards or regular expression) - - - - Text - - - - Wildcards - - - - RegExp - - - - Unique headwords total: %1, filtered: %2 - - - - Save headwords to file - - - - Text files (*.txt);;All files (*.*) - - - - Export headwords... - - - - Cancel - Jan saña - - - Help - - - - - DictInfo - - Total articles: - Aru tamantatal: - - - Translates from: - Jaqukipan aka: - - - Total words: - Phuqha arunaka l: - - - Translates to: - Jaqukipan a: - - - Files comprising this dictionary: - Aka arupirwa archivot juti : - - - Description: - - - - Open folder - - - - Edit dictionary - - - - Edit the dictionary via command: -%1 - - - - Show all unique dictionary headwords - - - - Headwords - - - - - DictListModel - - %1 entries - %1 Mantañanaka - - - - DictServer - - Url: - - - - Databases: - - - - Search strategies: - - - - Server databases - - - - - DictServersModel - - Enabled - - - - Name - Suti - - - Address - - - - Databases - - - - Icon - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - Strategies - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Aru pirwa wanqaña - - - Edit this group - Aka tama askichaña - - - Dictionary info - - - - Edit dictionary - - - - &Dictionary Bar - - - - Open dictionary folder - - - - Extended menu with all dictionaries... - - - - Dictionary headwords - - - - - EditDictionaries - - &Sources - &Jutankiri - - - &Dictionaries - &Aru pirwanaka - - - &Groups - &Qutu - - - Sources changed - Jutankir akichjata - - - Some sources were changed. Would you like to accept the changes? - Jutinkirix lantitawa.lantitanakar yaw sañ muntati ? - - - Accept - Yay saña - - - Cancel - Jan saña - - - Dictionaries - Aru pirwanaka - - - - ExternalViewer - - the viewer program name is empty - - - - - FTS::FtsIndexing - - None - Ni maya - - - - FTS::FullTextSearchDialog - - Full-text search - - - - Whole words - - - - Plain text - - - - Wildcards - - - - RegExp - - - - Max distance between words (%1-%2): - - - - Max articles per dictionary (%1-%2): - - - - Articles found: - - - - Now indexing: - - - - The search line must contains at least one word containing - - - - or more symbols - - - - No dictionaries for full-text search - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - None - Ni maya - - - - FTS::Indexing - - None - Ni maya - - - - Forvo::ForvoArticleRequest - - XML parse error: %1 at %2,%3 - Uyllan phanta XML: %1 al %2,%3 - - - Added %1 - %1 Irjatata - - - by - "layku" - - - Male - Urqu - - - Female - Qachu - - - from - layku - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Editar saram |aru pirwanaka |Fuentes|Forvo clave mayiña API pantha chhaqañataki. - - - - FullTextSearchDialog - - Search - - - - Match case - - - - Mode: - - - - Articles found: - - - - Available dictionaries in group: - - - - Wait for indexing: - - - - Total: - - - - Indexed: - - - - Now indexing: None - - - - Cancel - Jan saña - - - Help - - - - - GermanTranslit - - German Transliteration - Alemana arut qillqantata - - - - GreekTranslit - - Greek Transliteration - Griega arut qillqantata - - - - GroupComboBox - - Choose a Group (Alt+G) - Mä tama thaktam (Alt+G) - - - - GroupSelectorWidget - - Form - Formulario "phuqhaña" - - - Look in - thaqhaña: - - - - Groups - - Add group - Tam uskuña - - - Give a name for the new group: - Machak tamar suti uskum: - - - Rename group - Mayanp tamar sutichtaña - - - Give a new name for the group: - Machak suti tamar uchaña: - - - Remove group - Tama chhaqayaña - - - Are you sure you want to remove the group <b>%1</b>? - Chiqpacha aka tama chhaqayañ muntati <b>%1</b>? - - - Remove all groups - Taqpach tamanaka chhaqhäyaña - - - Are you sure you want to remove all the groups? - Chiqpach taqpach tamanaka chhaqayañ muntati? - - - Groups - tamanaka - - - Dictionaries available: - Aru pirwa apnaqañataki: - - - Add selected dictionaries to group (Ins) - Thakat aru pirwanak tamar uskuña (INS) - - - > - > - - - Ins - INS - - - Remove selected dictionaries from group (Del) - Thaqat aru pirwanak apaqaña (SUPR) - - - < - < - - - Del - SUPR - - - Groups: - tamanaka: - - - Tab 2 - phichhu 2 - - - Create new dictionary group - Machak aru pirwanak luraña - - - &Add group - &Tama uskuña - - - Create language-based groups - Arut tamanak lurata - - - Auto groups - Sapa tama - - - Rename current dictionary group - Mayamp aru pirwa sut'istaña - - - Re&name group - &Mayamp tamar sutichtaña - - - Remove current dictionary group - Aru pirwan tamapa chhakayaña - - - &Remove group - &Tama chhaqhayaña - - - Remove all dictionary groups - Tajpach aru pirwa chhaqhayaña - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - "Aru pirwa tamanakar uskuñataki uchaku apnakam" uru pirwanaka tamarunakaru, ukhamaraki tamanak lantiñatakiwa, achakumpi katatayampi." - - - Group tabs - - - - Open groups list - - - - - Help::HelpWindow - - GoldenDict help - - - - Home - - - - Back - Qhipa - - - Forward - Arkiri - - - Zoom In - Jach'antaña - - - Zoom Out - Jisk'antaña - - - Normal Size - Tamaño normal - - - Content - - - - Index - - - - - HistoryPaneWidget - - &Delete Selected - - - - Copy Selected - - - - History: - - - - %1/%2 - - - - History size: %1 entries out of maximum %2 - - - - - Hunspell - - Spelling suggestions: - Arunak amuyt'awinaka: - - - Afar - Afar - - - Abkhazian - Abkhazian - - - Avestan - Avestan - - - Afrikaans - Africanos - - - Akan - Akan - - - Amharic - Amharic - - - Aragonese - Aragonese - - - Arabic - Árabe - - - Assamese - Assamese - - - Avaric - Avaric - - - Aymara - Aymara - - - Azerbaijani - Azerbaijani - - - Bashkir - Bashkir - - - Belarusian - Belarusian - - - Bulgarian - Bulgaria - - - Bihari - Bihari - - - Bislama - Bislama - - - Bambara - Bambara - - - Bengali - Bengali - - - Tibetan - Tibetan - - - Breton - Breton - - - Bosnian - Bosnian - - - Catalan - Catalan - - - Chechen - Chechen - - - Chamorro - Chamorro - - - Corsican - Corsican - - - Cree - Cree - - - Czech - Czech - - - Church Slavic - Church Slavic - - - Chuvash - Chuvash - - - Welsh - Welsh - - - Danish - Danes - - - German - alemania - - - Divehi - Divehi - - - Dzongkha - Dzongkha - - - Ewe - Ewe - - - Greek - Griego - - - English - Inglisa aru - - - Esperanto - Esperanto - - - Spanish - Español - - - Estonian - Estonian - - - Basque - Basque - - - Persian - Persian - - - Fulah - Fulah - - - Finnish - Finnish - - - Fijian - Fijian - - - Faroese - Faroese - - - French - Frances - - - Western Frisian - Western Frisian - - - Irish - Irish - - - Scottish Gaelic - Scottish Gaelic - - - Galician - Galician - - - Guarani - Guarani - - - Gujarati - Gujarati - - - Manx - Manx - - - Hausa - Hausa - - - Hebrew - Hebrew - - - Hindi - Hindi - - - Hiri Motu - Hiri Motu - - - Croatian - Croatian - - - Haitian - Haiti - - - Hungarian - Hungaria - - - Armenian - Armenia - - - Herero - Herero - - - Interlingua - Interlingua - - - Indonesian - Indonesia - - - Interlingue - Interlingue - - - Igbo - Igbo - - - Sichuan Yi - Sichuan Yi - - - Inupiaq - Inupiaq - - - Ido - Ido - - - Icelandic - Icelandic - - - Italian - Italiano - - - Inuktitut - Inuktitut - - - Japanese - Japanes - - - Javanese - Javanese - - - Georgian - Georgia - - - Kongo - Kongo - - - Kikuyu - Kikuyu - - - Kwanyama - Kwanyama - - - Kazakh - Kazakh - - - Kalaallisut - Kalaallisut - - - Khmer - Khmer - - - Kannada - Kannada - - - Korean - Koreano - - - Kanuri - Kanuri - - - Kashmiri - Kashmiri - - - Kurdish - Kurdish - - - Komi - Komi - - - Cornish - Cornish - - - Kirghiz - Kirghiz - - - Latin - Latino - - - Luxembourgish - Luxembourgish - - - Ganda - Ganda - - - Limburgish - Limburgish - - - Lingala - Lingala - - - Lao - Lao - - - Lithuanian - Lithuanian - - - Luba-Katanga - Luba-Katanga - - - Latvian - Latvian - - - Malagasy - Malagasy - - - Marshallese - Marshallese - - - Maori - Maori - - - Macedonian - Macedonian - - - Malayalam - Malayalam - - - Mongolian - Mongolian - - - Marathi - Marathi - - - Malay - Malay - - - Maltese - Maltes - - - Burmese - Burmese - - - Nauru - Nauru - - - Norwegian Bokmal - Norwegian Bokmal - - - North Ndebele - North Ndebele - - - Nepali - Nepali - - - Ndonga - Ndonga - - - Dutch - Dutch - - - Norwegian Nynorsk - Norwegian Nynorsk - - - Norwegian - Norwegian - - - South Ndebele - Sur Ndebele - - - Navajo - Navajo - - - Chichewa - Chichewa - - - Occitan - Occitan - - - Ojibwa - Ojibwa - - - Oromo - Oromo - - - Oriya - Oriya - - - Ossetian - Ossetian - - - Panjabi - Panjabi - - - Pali - Pali - - - Polish - Polish - - - Pashto - Pashto - - - Portuguese - Portugues - - - Quechua - Quechua - - - Raeto-Romance - Raeto-Romance - - - Kirundi - Kirundi - - - Romanian - Romania - - - Russian - Russia - - - Kinyarwanda - Kinyarwanda - - - Sanskrit - Sanskrit - - - Sardinian - Sardinian - - - Sindhi - Sindhi - - - Northern Sami - Northern Sami - - - Sango - Sango - - - Serbo-Croatian - Serbo-Croatian - - - Sinhala - Sinhala - - - Slovak - Slovak - - - Slovenian - Slovenian - - - Samoan - Samoan - - - Shona - Shona - - - Somali - Somali - - - Albanian - Albanian - - - Serbian - Serbian - - - Swati - Swati - - - Southern Sotho - Southern Sotho - - - Sundanese - Sundanes - - - Swedish - Swedish - - - Swahili - Swahili - - - Tamil - Tamil - - - Telugu - Telugu - - - Tajik - Tajik - - - Thai - Thai - - - Tigrinya - Tigrinya - - - Turkmen - Turkmen - - - Tagalog - Tagalog - - - Tswana - Tswana - - - Tonga - Tonga - - - Turkish - Turkish - - - Tsonga - Tsonga - - - Tatar - Tatar - - - Twi - Twi - - - Tahitian - Tahitian - - - Uighur - Uighur - - - Ukrainian - Ukrainian - - - Urdu - Urdu - - - Uzbek - Uzbek - - - Venda - Venda - - - Vietnamese - Vietnamese - - - Volapuk - Volapuk - - - Walloon - Walloon - - - Wolof - Wolof - - - Xhosa - Xhosa - - - Yiddish - Yiddish - - - Yoruba - Yoruba - - - Zhuang - Zhuang - - - Chinese - China - - - Zulu - Zulu - - - %1 Morphology - Morfología %1 - - - - HunspellDictsModel - - Enabled - Apnakañataki - - - Name - Suti - - - - Initializing - - Please wait... - amp suma suyt'am... - - - Please wait while indexing dictionary - amp suma suyt'am aru pirwanaka uñjañataki - - - GoldenDict - Initializing - GoldenDict - qaltaña - - - Dictionary Name - aru pirwa sutipa - - - - Language - - Afar - Afar - - - Abkhazian - Abjasio - - - Avestan - Avéstico - - - Afrikaans - Africanos - - - Akan - Acano - - - Amharic - Amárico - - - Aragonese - Aragonés - - - Arabic - Arabé - - - Assamese - Asamés - - - Avaric - Ávaro - - - Aymara - Aymara - - - Azerbaijani - Azerí - - - Bashkir - Bashkir - - - Belarusian - Bielorruso - - - Bulgarian - Búlgaro - - - Bihari - Bihari - - - Bislama - Bislama - - - Bambara - Bambara - - - Bengali - Bengalí - - - Tibetan - Tibetano - - - Breton - Bretón - - - Bosnian - Bosnio - - - Catalan - Catalán - - - Chechen - Chechén - - - Chamorro - Chamorro - - - Corsican - Corso - - - Cree - Cree - - - Czech - Checo - - - Church Slavic - Eslavo eclesiástico - - - Chuvash - Chuvasio - - - Welsh - Galés - - - Danish - Danés - - - German - Alemán - - - Divehi - Divehi - - - Dzongkha - Dzongkha - - - Ewe - Ewe - - - Greek - Griego - - - English - Inglés - - - Esperanto - Esperanto - - - Spanish - Español - - - Estonian - Estonio - - - Basque - Vasco (Euskara) - - - Persian - Farsì - - - Fulah - Fula - - - Finnish - Finlandés - - - Fijian - Fiyiano - - - Faroese - Feroés - - - French - Francés - - - Western Frisian - Frisón occidental - - - Irish - Irlandés - - - Scottish Gaelic - Gaélico escocés - - - Galician - Gallego - - - Guarani - Guaraní - - - Gujarati - Guyaratí - - - Manx - Manés - - - Hausa - Hausa - - - Hebrew - Hebreo - - - Hindi - Hindi - - - Hiri Motu - Hiri Motu - - - Croatian - Croato - - - Haitian - Criollo haitiano - - - Hungarian - Húngaro - - - Armenian - Armenio - - - Herero - Herero - - - Interlingua - Interlingua - - - Indonesian - Indonés - - - Interlingue - Interlingua - - - Igbo - Igbo - - - Sichuan Yi - Sichuan Yi - - - Inupiaq - Inupiaq - - - Ido - Ido - - - Icelandic - Islandés - - - Italian - Italiano - - - Inuktitut - Inuktitut - - - Japanese - Japonés - - - Javanese - Javanés - - - Georgian - Georgiano - - - Kongo - Kikongo - - - Kikuyu - Kikuyu - - - Kwanyama - Kwanyama - - - Kazakh - Cazaco - - - Kalaallisut - Groenlandés - - - Khmer - Camboyano - - - Kannada - Kannada - - - Korean - Coreano - - - Kanuri - Kanuri - - - Kashmiri - Cachemir - - - Kurdish - Kurdo - - - Komi - Komi - - - Cornish - Córnico - - - Kirghiz - Kirguís - - - Latin - Latín - - - Luxembourgish - Luxemburgués - - - Ganda - Ganda - - - Limburgish - Limburgés - - - Lingala - Lingala - - - Lao - Laosiano - - - Lithuanian - Lituano - - - Luba-Katanga - Luba-Katanga - - - Latvian - Letón - - - Malagasy - Malgache - - - Marshallese - Marshalés - - - Maori - Maori - - - Macedonian - Macedonio - - - Malayalam - Malayalam - - - Mongolian - Mongol - - - Marathi - Marathi - - - Malay - Malayo - - - Maltese - Maltés - - - Burmese - Birmano - - - Nauru - Nauruano - - - Norwegian Bokmal - Noruego bokmål - - - North Ndebele - Ndebele norteño - - - Nepali - Nepalés - - - Ndonga - Ndonga - - - Dutch - Danés - - - Norwegian Nynorsk - Noruego Nynorsk - - - Norwegian - Noruego - - - South Ndebele - Ndebele sureño - - - Navajo - Navajo - - - Chichewa - Chichewa - - - Occitan - Occitano - - - Ojibwa - Ojibwa - - - Oromo - Oromo - - - Oriya - Oriya - - - Ossetian - Osseto - - - Panjabi - Panjabi - - - Pali - Pali - - - Polish - Polaco - - - Pashto - Pastún - - - Portuguese - Portugués - - - Quechua - Quechua - - - Raeto-Romance - Retorrománico - - - Kirundi - Kirundi - - - Romanian - Rumano - - - Russian - Ruso - - - Kinyarwanda - Kinyarwanda - - - Sanskrit - Sanscrito - - - Sardinian - Sardo - - - Sindhi - Sindhi - - - Northern Sami - Sami norteño - - - Sango - Sango - - - Serbo-Croatian - Serbo-Croato - - - Sinhala - Cingalés - - - Slovak - Slovaco - - - Slovenian - Sloveno - - - Samoan - Samoano - - - Shona - Shona - - - Somali - Somalí - - - Albanian - Albanés - - - Serbian - Serbio - - - Swati - Swati - - - Southern Sotho - Sesotho - - - Sundanese - Sudanés - - - Swedish - Sueco - - - Swahili - Suajili - - - Tamil - Tamil - - - Telugu - Telugu - - - Tajik - Tayiko - - - Thai - Tailandés - - - Tigrinya - Tigriña - - - Turkmen - Turcomano - - - Tagalog - Tagalog - - - Tswana - Tswana - - - Tonga - Tonga - - - Turkish - Turco - - - Tsonga - Tsonga - - - Tatar - Tártaro - - - Twi - Twi - - - Tahitian - Tahitiano - - - Uighur - Uigur - - - Ukrainian - Ucranio - - - Urdu - Urdu - - - Uzbek - Uzbeco - - - Venda - Venda - - - Vietnamese - Vietnamita - - - Volapuk - Volapuk - - - Walloon - Valón - - - Wolof - Wólof - - - Xhosa - Xhosa - - - Yiddish - Yidis - - - Yoruba - Yoruba - - - Zhuang - Zhuang - - - Chinese - Chino - - - Zulu - Zulu - - - Traditional Chinese - - - - Simplified Chinese - - - - Other - - - - Other Simplified Chinese dialects - - - - Other Traditional Chinese dialects - - - - Other Eastern-European languages - - - - Other Western-European languages - - - - Other Russian languages - - - - Other Japanese languages - - - - Other Baltic languages - - - - Other Greek languages - - - - Other Korean dialects - - - - Other Turkish dialects - - - - Other Thai dialects - - - - Tamazight - - - - Lojban - - - - - LoadDictionaries - - Error loading dictionaries - Phanthawi aru pirwa uchaña - - - - Main - - Error in configuration file. Continue with default settings? - - - - - MainWindow - - Navigation - Thaqhawi - - - Back - Qhipa - - - Forward - Arkiri - - - Scan Popup - Escanear en ventana &emergente - - - Pronounce word - Pronounce word - - - Show &Main Window - T'uxu uñachaña &nayriri - - - &Quit - &Mistuña - - - Loading... - Apaqaña... - - - Skip This Release - Thukum aka tuqi - - - [Unknown] - [Sconosciuto] - - - Page Setup - Laphi askichaña - - - No printer is available. Please install one first. - Janiw liqsuña utkiti. amp suma mayampi ucham. - - - Print Article - Mä qillqa liqsuña - - - Save Article As - Kunjam qillqa imaña - - - Html files (*.html *.htm) - Archivos HTML (*.html *.htm) - - - Error - Pantja - - - Can't save article: %1 - Janiw qillqa imañ atiykiti: %1 - - - Error loading dictionaries - Pantjiw aru pirwa apaqaña - - - %1 dictionaries, %2 articles, %3 words - %1 arupirwa, %2 artículos, %3 arunaka - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Pantjiw teclas jank'aki unjañataki.<br>uñjam XServer naqañapaw RECORD. - - - New Release Available - Machak version apnaqasmawa - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Jicha versión <b>%1</b> de GoldenDict apñakañataki askiskiwa.<br>klik luram <b>apaqaña</b>apaqañ laphi sarañataki." - - - Download - Apaqaña - - - Look up in: - Kawkin thaqaña: - - - Show Names in Dictionary Bar - Sutinaka uñjañawi aru pirwan barrana - - - Pronounce Word (Alt+S) - Aru arst'asim (Alt+S) - - - Zoom In - Jach'antaña - - - Zoom Out - Jisk'antaña - - - Normal Size - Tamaño normal - - - Words Zoom In - Aru jach'antaña - - - Words Zoom Out - Aru jik'achaña - - - Words Normal Size - Ukhamak arunaka - - - Close current tab - Jicha phichhu ist'antaña - - - Close all tabs - taqi phichhu ist'antaña - - - Close all tabs except current - taqi phichhu - - - Look up: - thakam : - - - All - thajpacha - - - Opened tabs - jisk'anaka jist'ata - - - (untitled) - (jan sutini) - - - WARNING: %1 - akataraki : %1 - - - GoldenDict - GoldenDict - - - Tab 1 - Tab 1 - - - Tab 2 - Tab 2 - - - Welcome! - ¡Aski jutawi! - - - &File - &Archivo - - - &Edit - &Mayjachaña - - - &Help - &Yanapa - - - &Preferences... - &Preferencias... - - - &Sources... - &Sources... - - - F2 - F2 - - - &Groups... - &tamanaka... - - - &View - &unjaña - - - &Zoom - &Zoom - - - H&istory - &Historial - - - &Dictionaries... - &aru pirwanaka... - - - F3 - F3 - - - F4 - F4 - - - &Homepage - &Laphi qalta - - - &About - &Layku - - - About GoldenDict - GoldenDict layku - - - F1 - F1 - - - Quit from application - Aplicación mistuña - - - Ctrl+Q - Ctrl+Q - - - &Forum - &Foro - - - &Close To Tray - &Bandeja del sistema jist'araña - - - Minimizes the window to tray - Programa jisk'achaña bandeja sistemana - - - Ctrl+F4 - Ctrl+F4 - - - &Save Article - & Artículo imaña - - - Save Article - Artículo imaña - - - &Print - &Liqsuña - - - Ctrl+P - Ctrl+P - - - Page Set&up - Mayjachaña&laphi - - - Print Preview - liqsuñ uñjawi - - - Rescan Files - Reescanear Archivos - - - Ctrl+F5 - Ctrl+F5 - - - &Clear - &Despejar - - - Search Pane - Panel de búsquedas - - - Ctrl+F11 - Ctrl+F11 - - - New Tab - - - - Ctrl+T - - - - &Configuration Folder - - - - &Show - - - - Ctrl+H - - - - &Export - - - - &Import - - - - &Menubar - - - - Found in Dictionaries: - - - - Open Tabs List - - - - %1 - %2 - - - - You have chosen to hide a menubar. Use %1 to show it back. - - - - Ctrl+M - - - - &Hide - - - - Export history to file - - - - Text files (*.txt);;All files (*.*) - - - - History export complete - - - - Export error: - - - - Import history from file - - - - Import error: invalid data in file - - - - History import complete - - - - Import error: - - - - Dictionary info - - - - Edit dictionary - - - - &Search Pane - - - - &Results Navigation Pane - - - - Print Pre&view - - - - &Rescan Files - - - - &New Tab - - - - &Always on Top - - - - Always on Top - - - - Ctrl+O - - - - Menu Button - - - - Show Names in Dictionary &Bar - - - - Show Small Icons in &Toolbars - - - - &Navigation - - - - The main window is set to be always on top. - - - - &History Pane - - - - Accessibility API is not enabled - - - - Article, Complete (*.html) - - - - Article, HTML Only (*.html) - - - - Saving article... - - - - Open dictionary folder - - - - Dictionary headwords - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - Search - - - - Search in page - - - - Ctrl+F - - - - Full-text search - - - - Ctrl+Shift+F - - - - GoldenDict reference - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - Dictionary file was tampered or corrupted - - - - Failed loading article from %1, reason: %2 - - - - - MediaWiki::MediaWikiArticleRequest - - XML parse error: %1 at %2,%3 - Uyllaña phantaXML: %1 en %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - XML parse error: %1 at %2,%3 - Uyllaña phanta XML: %1 en %2,%3 - - - - MediaWikisModel - - Enabled - Apnaqañataki - - - Name - Suti - - - Address - Jutawi - - - Icon - - - - - OrderAndProps - - Form - Phuqhawi (formulario) - - - Dictionary order: - Aru pirwa pirqantata: - - - ... - ... - - - Inactive (disabled) dictionaries: - Aru pirwa jan apnaqañataki: - - - Dictionary information - Aru pirwan yatiyawi - - - Name: - Suti: - - - Total articles: - Aru tamantatal: - - - Total words: - Phuqha arunaka l: - - - Translates from: - Jaqukipan aka: - - - Translates to: - Jaqukipan a: - - - Files comprising this dictionary: - Aka arupirwa archivot juti : - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Askicham, aru pirwa achakump khatatasiña - - - Description: - - - - Sort by name - - - - Sort by languages - - - - Dictionary headwords - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - Path - Thaki - - - Recursive - Recursivo - - - - Preferences - - Preferences - Munata - - - &Interface - &Interfaz - - - Tabbed browsing - Pestañat wampuña - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Machak - - - Open new tabs in background - Machak pestañanak k'uchut ist'aram - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Phantat layku , mach'ak pestañas tukuwin uskutawa -listata. akampi machak pestañanakawa -pestaña chiqan ist'aratatawal. - - - Open new tabs after the current one - Machak pestañanak ist'aran - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Mä icono ist'arasin, mä t'uqu ist'ari - - - Enable system tray icon - Apnakir icono uskuña - - - With this on, the application starts directly to system tray without showing -its main window. - Akampi, jank'akiw t'uquw ist'ari. - - - Start to system tray - Apnakiri qaltawi - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Akampi mä yant'awi t'uqu jan ist'arasin imantani - - - Close to system tray - Bandeja del sistema ist'araña - - - Startup - Qaltawi - - - Start with system - Sistemampi qaltam - - - Interface language: - Interfaz aru: - - - Display style: - Uñjawi : - - - Double-click translates the word clicked - Pä klik aruw jaquqiyiri - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Jisa uskum thaqañataki jan walikitaki janiwa. akasti -marcado, thaqawi ist'araskaniwa - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - T'uqu istarañataki -arunakamay mayrakat taqañama. akampi, -teclanakax thaqantatawa - - - - Hotkeys - Jank'a teclanaka - - - Use the following hotkey to show or hide the main window: - Aka teclanakampi t'uqu apnakiri imanti imjaraki: - - - Use the following hotkey to translate a word from clipboard: - Aka teclampi laphi jaqukipañatakiwa: - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Jank'a teclanakax globaleskasipkiwa tajpach wakistawinpi apnakasi jan ukasti GoldenDict mankhat apnakasi - - - &Scan Popup - &T'uqumpi Escanear - - - Automatically starts GoldenDict after operation system bootup. - GoldenDict sapitakiw qaltani . - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Con esta opción habilitada, la ventana emergente aparecerá -cada vez que el ratón apunta a una palabra en la pantalla (Windows) o -una palabra está seleccionada con el ratón (Linux). Cuando habilitada, -se puede prenderla o -apagarla desde la ventana principal o el icono en la bandeja del sistema. - - - Scan popup functionality - Scan popup functionality - - - Enable scan popup functionality - Habilitar escaneo en una ventana emergente - - - Start with scan popup turned on - Habilitar escaneo en una ventana emergente cuando inicia - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Con esto habilitado, la ventana emergente sólo aparece si todas las teclas -seleccionadas estén oprimidas cuando la selección de la palabra cambie. - - - Only show popup when all selected keys are kept pressed: - Sólo muestra la ventana emergente cuando todas estas teclas seleccionadas sigan oprimidas: - - - Left Ctrl only - CTRL kupi - - - Left Ctrl - CTRL kupita - - - Right Shift only - JACH'A QILQA chiqata - - - Right Shift - JACH'A QILQA chiqata - - - Alt key - Tecla ALT - - - Alt - ALT - - - Ctrl key - Tecla CTRL - - - Ctrl - CTRL - - - Left Alt only - sapa ALT kupita - - - Left Alt - ALT kupita - - - Shift key - JACH'A QILQA chiqata - - - Shift - JACH'A QILQA - - - Right Alt only - JACH'A QILQA chiqata - - - Right Alt - ALT de derecho - - - Right Ctrl only - Sapa CTRL chiqata - - - Right Ctrl - CTRL chiqata - - - Left Shift only - Sapa JACH'A QILQA kupi - - - Left Shift - Jach'a qillqa kupi - - - Windows key or Meta key - Tecla de Windows o Meta - - - Win/Meta - Windows o Meta - - - Keys may also be pressed afterwards, within - Teclanaka uqat apnakatawa , mankhata - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Para evitar positivos falsos, las teclas sólo son monitoreadas después de la terminación de la selección adentro un tiempo limitado, que está especificado aquí. - - - secs - Ch'ipxtanaka - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Nota: Aparece que la extensión RECORD está rota en tu instalación de X.Org XServer. Las teclas de acceso rápido de GoldenDict probablemente no funcionan. Este problema puede ser arreglado en el servidor mismo. Por favor consulte al </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">reportaje de bug</span></a><span style=" color:#ff0000;"> y se puede entregar comentarios allí.</span></p></body></html> - - - &Audio - &Ist'awi - - - Pronunciation - Arstawi - - - Auto-pronounce words in main window - Aruntawi t'uqu apnakiri - - - Auto-pronounce words in scan popup - Sapa arst'awi naynir t'uqumpi laphi mistuyayiri - - - Playback - Aru jaquqipa - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Apnaqaña API nativa de Windows apnakañataki -a archivos .wav,askiwa. - - - Play via Windows native API - API apnaqaña nativa de Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Arst'awi Phonon arst'awayi. inach janiw sumaniti, -taxpach arunaka apnakispawa - - - Play via Phonon - Phononmpi arst'asi - - - Use any external program to play audio files - Taxpach wakist'awi arunakax apnakaskaniwa - - - Use external program: - Ankat wakist'awi apnaqam: - - - Program to play audio files: - Program to play audio files: - - - &Network - &Red - - - Enable if you wish to use a proxy server -for all program's network requests. - . - - - Use proxy server - Proxy apnaqaña - - - Type: - Kasta: - - - Host: - servidor - - - Port: - Punku: - - - User: - Apnakiri: - - - Password: - Mantawi: - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Akampi taqi wakistawi jist'arani, kunalayku janiw (imágenes y marcos) jist'arkiti. inach mä tuqi pantjatani, deshabilite esta opción. - - - Disallow loading content from other sites (hides most advertisements) - Janiw yakha chiqat qillqanak apnakiri (yat'istawi imantiri) - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Programa ist'arasisa GoldenDict yantam apaqañataki -. apnaqañatakispa apaqanataki yatiyatam -. - - - Check for new program releases periodically - Verificar periódicamente si haya una nueva versión del programa - - - System default - Sistemaw phanti - - - English - Inglés - - - Russian - Russia - - - Default - Phanta layku - - - Lingvo - Lingvo - - - Play via DirectShow - DirectShow - - - Changing Language - Aru turkawi - - - Restart the program to apply the language change. - Mayat programa aktayan sun apñaqañataki. - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - - - - Hide single tab - - - - Ctrl-Tab navigates tabs in MRU order - - - - Turn this option on if you want to select words by single mouse click - - - - Select word by single click - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - - - - ESC key hides main window - - - - Add-on style: - - - - Send translated word to main window instead of to show it in popup window - - - - Send translated word to main window - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - - - - Enable web plugins - - - - Ad&vanced - - - - ScanPopup extra technologies - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - - - - Use &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - Use &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - Use &GoldenDict message - - - - History - - - - Turn this option on to store history of the translated words - - - - Store &history - - - - Articles - - - - Turn this option on to always expand optional parts of articles - - - - Expand optional &parts - - - - Babylon - - - - Specify the maximum number of entries to keep in history. - - - - Maximum history size: - - - - History saving interval. If set to 0 history will be saved only during exit. - - - - Save every - - - - minutes - - - - Modern - - - - Lingoes - - - - Lingoes-Blue - - - - Play audio files via FFmpeg(libav) and libao - - - - Use internal player - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - - - - Do not identify GoldenDict in HTTP headers - - - - Select this option to automatic collapse big articles - - - - Collapse articles more than - - - - symbols - - - - Adjust this value to avoid huge context menus. - - - - Context menu dictionaries limit: - - - - Articles longer than this size will be collapsed - - - - System proxy - - - - Custom proxy - - - - Custom settings - - - - Full-text search - - - - Allow full-text search for: - - - - Don't search in dictionaries containing more than - - - - articles (0 - unlimited) - - - - Help language - - - - - ProgramTypeEditor - - Audio - - - - Plain Text - - - - Html - - - - Prefix Match - - - - Unknown - - - - - Programs::RunInstance - - No program name was given. - - - - The program has crashed. - - - - The program has returned exit code %1. - - - - - ProgramsModel - - Enabled - - - - Type - - - - Name - Suti - - - Command Line - - - - Icon - - - - - QObject - - Article loading error - - - - Article decoding error - - - - avformat_alloc_context() failed. - - - - av_malloc() failed. - - - - avio_alloc_context() failed. - - - - avformat_open_input() failed: %1. - - - - avformat_find_stream_info() failed: %1. - - - - Could not find audio stream. - - - - Codec [id: %1] not found. - - - - avcodec_open2() failed: %1. - - - - Cannot find usable audio output device. - - - - Unsupported sample format. - - - - ao_open_live() failed: - - - - No driver. - - - - This driver is not a live output device. - - - - A valid option key has an invalid value. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - - - - Unknown error. - - - - avcodec_alloc_frame() failed. - - - - - QuickFilterLine - - Dictionary search/filter (Ctrl+F) - - - - Quick Search - - - - Clear Search - - - - - ResourceToSaveHandler - - ERROR: %1 - - - - Resource saving error: - - - - The referenced resource failed to download. - Apakañanaka pantjiwa - - - - Romaji - - Hepburn Romaji for Hiragana - Romanización hepburn de Hiragana - - - Hepburn Romaji for Katakana - Romanización hepburn de Katakana - - - - RussianTranslit - - Russian Transliteration - Rusu arut qillqawi - - - - ScanPopup - - %1 results differing in diacritic marks - %1 results differing in diacritic marks - - - %1 result(s) beginning with the search word - %1 result(s) beginning with the search word - - - Dialog - Tantachaw aru - - - word - Aru - - - List Matches (Alt+M) - Kikpa amuyt'awan sinru qillqa (Alt+M) - - - Alt+M - Alt+M - - - Pronounce Word (Alt+S) - Aru arstaña (Alt+S) - - - Alt+S - Alt+S - - - Shows or hides the dictionary bar - Aru pirwa uñjam jan ukat imantam - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Utilice esto para fijar la ventana en la pantalla, redimensionarla o gerenciarla en otra manera. - - - List matches - List matches - - - ... - ... - - - Pronounce word - Pronounce word - - - Back - Qhipa - - - Forward - Arkiri - - - Send word to main window (Alt+W) - - - - Alt+W - - - - %1 - %2 - - - - - SoundDirsModel - - Path - Thaki - - - Name - Suti - - - Icon - - - - - Sources - - (not available in portable version) - (janiw lurkiti portátil) - - - Choose a directory - Mä directorio ajllim - - - Confirm removal - Chhaqtayapunitati - - - Remove directory <b>%1</b> from the list? - Directorio uk chhaqtayam<b>%1</b> tantata? - - - Remove site <b>%1</b> from the list? - <b>%1</b> de la lista? - - - Sources - Sources - - - Files - File - - - Paths to search for the dictionary files: - Thiyanak aru pirwa thakañataki: - - - &Add... - &Irjataña... - - - &Remove - &Chhakjaña - - - Re&scan now - &Jicha ullaña - - - Sound Dirs - Directorios de audio - - - Make dictionaries from bunches of audiofiles by adding paths here: - Aru pirwanak uñtayam, kipu thaki xiqjatata: - - - Morphology - T'aqa t'aqaru - - - Path to a directory with Hunspell/Myspell dictionaries: - Ruta de un directorio con diccionarios Hunspell o Myspell: - - - &Change... - &Apakipaña... - - - Available morphology dictionaries: - Aru pirwanakat t'aqa t'aqatawi "Diccionarios morfológicos disponibles": - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Sapa t'aqa t'aqat arupirwa uñjasi kunjama -má yanap aru pirwa t'aqa -tunanaka arunaka churi thaqhañataki -y sugerencias ortográficas de palabras -mal escritas. Agregar diccionarios a los -fondos de grupos apropriados para utilizarlos. - - - Websites - web laphinaka - - - Any websites. A string %GDWORD% will be replaced with the query word: - Taqi tuqi web. Una cadena %GDWORD% será reemplazada por la palabra buscada: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Alternativamente, use %GD1251% en lugar de CP1251, %GDISO1% en lugar de ISO 8859-1. - - - Forvo - Forvo - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Chiqpach arst'asim<a href="http://www.forvo.com/">forvo.com</a>. Akampi jaqix ist'aspaw jay ukkhamaraki wajtasmaw GoldenDict. - - - Enable pronunciations from Forvo - Forvompi arst'ayasiña - - - API Key: - Clave API: - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Forvo apnaqawi mä clavempi API mantani. jankukiw jaytam, inach jutir pacha istarani, jan ukax akar qillqasim. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Obtenga tu propria clave <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">aquí</span></a>, o deje en blanco para utilizar la clave por defecto.</p></td></tr></table></body></html> - - - Language codes (comma-separated): - Aru chimpunaka (chaqat jaljtata): - - - List of language codes you would like to have. Example: "en, ru". - Arunaka jumatak apnaqañamataki. akhama: "en, ru, es". - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Chimpunakan tantanakapa apnakañatakiwa<a href="http://www.forvo.com/languages-codes/">aquí</a>. - - - Transliteration - Arut qillqata - - - Russian transliteration - Rusa arut qillqata - - - Greek transliteration - Griega urut qillqata - - - German transliteration - Alemana - - - Enables to use the Latin alphabet to write the Japanese language - Romano aru uskum japonesa arut qillqañataki - - - Japanese Romaji - Japonés romanizado - - - Systems: - Sistemas: - - - The most widely used method of transcription of Japanese, -based on English phonology - japonés aru qillqañataki, -basado en la fonología inglesa - - - Hepburn - Hepburn - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 -Not implemented yet in GoldenDict. - El sistema más utilizado, con una relación uno-a-uno con sistemas de escritura kana. -Su estándar es ISO-3602. -Todavia no implementado en GoldenDict. - - - Nihon-shiki - Nihon-shiki - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 -Not implemented yet in GoldenDict. - Basado en el sistema Nihon-shiki, pero modificado para el japonés moderno estándar. -Estandarizado como ISO 3602 -Todavía no implementado en GoldenDict. - - - Kunrei-shiki - Kunrei-shiki - - - Syllabaries: - Silabario: - - - Hiragana Japanese syllabary - Silabario de Japonés Hiragana - - - Hiragana - Hiragana - - - Katakana Japanese syllabary - Silabario de Japonés Katakana - - - Katakana - Katakana - - - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - sapa t'aqa t'aqa arupirwa yanapa aru pirwa saphimpi uñsti qillqa askichañataki. t'aqa t'aqa arupirwa apnaqañataki uskuwayi. - - - Wikipedia - Wikipedia - - - Wikipedia (MediaWiki) sites: - Wikipedia tuqinaka(MediaWiki): - - - Programs - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - - - - Remove program <b>%1</b> from the list? - - - - Belarusian transliteration - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - - - - Text to Speech - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - - - - DICT servers - - - - DICT servers: - - - - - StylesComboBox - - None - Ni maya - - - - TextToSpeechSource - - Selected voice engines: - - - - &Add - - - - &Remove - &Chhakjaña - - - Preview - - - - Available voice engines: - - - - Text to be previewed: - - - - Type text to be previewed here. - - - - &Preview - - - - No TTS voice available - - - - Confirm removal - Chhaqtayapunitati - - - Remove voice engine <b>%1</b> from the list? - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - - - - Preferences - Munata - - - Volume: - - - - Rate: - - - - - TranslateBox - - Type a word or phrase to search dictionaries - - - - Drop-down - - - - - VoiceEnginesModel - - Enabled - - - - Name - Suti - - - Id - - - - Icon - - - - - WebSitesModel - - Enabled - Apnaqañataki - - - Name - Suti - - - Address - Jutir tuqi - - - Icon - - - - - WordFinder - - Failed to query some dictionaries. - Phantiw aru pirwa thaqawi. - - - - WordList - - WARNING: %1 - akataraki : %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/be_BY.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/be_BY.ts deleted file mode 100644 index bb75c5d984..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/be_BY.ts +++ /dev/null @@ -1,4717 +0,0 @@ - - - - - About - - - About - Інфармацыя - - - - GoldenDict dictionary lookup program, version - GoldenDict — праґрама прагляду слоўнікаў, вэрсія - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Канстанцін Ісакаў (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - Ліцэнзія GNU GPLv3 ці пазьнейшая - - - - Credits: - Удзельнікі праекту: - - - - [Unknown] - [Няведамая] - - - - Based on Qt %1 (%2, %3 bit) - На падставе Qt %1 (%2, %3 біты) - - - - ArticleMaker - - - Expand article - Разгарнуць артыкул - - - - Collapse article - Згарнуць артыкул - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - GoldenDict не знайшоў перакладу для <b>%1</b> у ґрупе <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - GoldenDict не знайшоў перакладу ў ґрупе <b>%1</b>. - - - - Welcome! - Вітаем! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Вітаем у <b>GoldenDict</b>!</h3><p>Перш за ўсё наведай <b>Зьмены|Слоўнікі</b>, каб пазначыць шляхі да слоўнікавых файлаў, зь якіх будзе станавіцца бібліятэка слоўнікаў, дадай розныя сайты Вікіпэдыі й іншыя крыніцы, вызначы парадак слоўнікаў ды ствары слоўнікавыя ґрупы.<p>Па наладжваньні праґрама будзе гатовая да прагляду слоўнікавых артыкулаў. Тое можна рабіць у гэтым акне (упішы шуканае слова ў радок шуканьня) ці ў вонкавых праґрамах з дапамогаю <a href="Карыстаньне слоўнікам у вонкавых праґрамах">выплыўных вокнаў</a>. <p>Каб дапасаваць да сябе праґраму, скарыстай даступныя налады ў <b>Зьменах|Наладах</b>. Усе зьмешчаныя там налады маюць падказкі. Чытай іх для пэўнасьці ў зробленых зьменах.<p>Калі ўзьніклі пытаньні, прапановы, ці проста захацелася знаць меркаваньні людзей, то запрашаем на наш <a href="http://goldendict.org/forum/">форум</a>.<p>Новыя вэрсіі праґрамы заўсёды можна знайсьці на нашым <a href="http://goldendict.org/">сайце</a>.<p>(c) 2008-2013 Канстанцін Ісакаў. Ліцэнзія GPLv3 ці пазьнейшая. - - - - Working with popup - Карыстаньне слоўнікам у вонкавых праґрамах - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Карыстаньне слоўнікам у вонкавых праґрамах</h3>Каб шукаць словы ў слоўніку з-пад іншых праґрамаў, трэба падлучыць <i>мэханізм выплыўных вокнаў</i> у <b>Наладах</b>, і заціснуць кнопку „Выплыўныя вокны“ ў галоўным акне, ці ўлучыць адпаведны пункт кантэкстнага мэню значка ў сыстэмным лотку. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Затым у кожнай праґраме проста спыні курсор мышы над словам, і праз хвілю зьявіцца выплыўное акно з адпаведным артыкулам. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Затым у кожнай праґраме проста абяры слова мышшу (двойчы пстрыкні ці правядзі па слове курсорам мышы з заціснутай левай кнопкай), і праз хвілю зьявіцца выплыўное акно з адпаведным артыкулам. - - - - (untitled) - (неназваная) - - - - (picture) - (відарыс) - - - - ArticleRequest - - - Expand article - Разгарнуць артыкул - - - - From - З - - - - Collapse article - Згарнуць артыкул - - - - Query error: %1 - Памылка запыту: %1 - - - - Close words: - Падобныя словы: - - - - Compound expressions: - Словазлучэньні: - - - - Individual words: - Словы паасобку: - - - - ArticleView - - - Form - Хорма - - - - about:blank - about:blank - - - - Find: - Шукаць: - - - - x - x - - - - - &Previous - &Папярэдні - - - - - &Next - &Наступны - - - - Ctrl+G - Ctrl+G - - - - Highlight &all - Пазначыць &усе - - - - &Case Sensitive - &Розьніць рэґістар - - - - Select Current Article - Выбраць дзейны артыкул - - - - Copy as text - Скапіяваць як тэкст - - - - Inspect - Інспэктар - - - - Resource - Рэсурс - - - - Audio - Аўдыё - - - - TTS Voice - Сынтэзатар голасу - - - - Picture - Відарыс - - - - Video - Відэа - - - - Video: %1 - Відэа: %1 - - - - Definition from dictionary "%1": %2 - Азначэньне з слоўніка „%1“: %2 - - - - Definition: %1 - Азначэньне: %1 - - - - - The referenced resource doesn't exist. - Запытанага рэсурсу не існуе. - - - - The referenced audio program doesn't exist. - Пазначанай праґрамы не існуе. - - - - - ERROR: %1 - ПАМЫЛКА: %1 - - - - Save sound - Захаваньне гуку - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Гукавыя файлы (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Усе файлы (*.*) - - - - Save image - Захаваньне выявы - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Файлы выяваў (*.bmp *.jpg *.png *.tif);;Усе файлы (*.*) - - - - &Open Link - &Адчыніць спасылку - - - - Open Link in New &Tab - Ачыніць спасылку ў новай &укладцы - - - - Open Link in &External Browser - Адчыніць спасылку ў &вонкавым аглядальніку - - - - Save &image... - Захаваць &выяву... - - - - Save s&ound... - Захаваць &гук... - - - - &Look up "%1" - &Шукаць „%1“ - - - - Look up "%1" in &New Tab - Шукаць „%1“ у &новай укладцы - - - - Send "%1" to input line - Зьмясьціць „%1“ у ўводным радку - - - - - &Add "%1" to history - &Дадаць „%1“ да гісторыі - - - - Look up "%1" in %2 - Шукаць „%1“ у ґрупе %2 - - - - Look up "%1" in %2 in &New Tab - Шукаць „%1“ у ґрупе %2 у новай у&кладцы - - - - WARNING: FFmpeg Audio Player: %1 - ПАПЯРЭДЖАНЬНЕ: Прайгравальнік FFMpeg: %1 - - - - WARNING: %1 - УВАГА: %1 - - - - Failed to run a player to play sound file: %1 - Ня здолеў запусьціць прайгравальніка гукавага файла: %1 - - - - Failed to create temporary file. - Ня здолеў стварыць часовага файла. - - - - Failed to auto-open resource file, try opening manually: %1. - Ня здолеў аўтаматычна адчыніць рэсурсавага файла. Паспрабуй адчыніць ручна %1. - - - - The referenced resource failed to download. - Ня здолеў зладаваць пазначанага рэсурсу. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Беларуская трансьлітэрацыя з лаціны ў кірыліцу (клясычны правапіс) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Беларуская трансьлітэрацыя з лаціны ў кірыліцу (школьны правапіс) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Беларуская трансьлітэрацыя (згладжвае розьніцу -між клясычным і школьным правапісам) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Пароль: - - - - DictGroupWidget - - - Form - Хорма - - - - Group icon: - Значак ґрупы: - - - - Shortcut: - Клявішны скарот: - - - - None - Няма - - - - From file... - З файла... - - - - Choose a file to use as group icon - Абяры файл выявы, якая будзе значкам ґрупы - - - - Images - Выявы - - - - All files - Усе файлы - - - - Error - Памылка - - - - Can't read the specified image file. - Нельга прачытаць абранага файла выявы. - - - - DictGroupsWidget - - - - - - Dictionaries: - Слоўнікаў: - - - - Confirmation - Пацьверджаньне - - - - Are you sure you want to generate a set of groups based on language pairs? - Ці напэўна хочаш зґенэраваць збор ґрупаў на падставе моўных пар? - - - - Unassigned - Па-за ґрупамі - - - - Combine groups by source language to "%1->" - Сабраць ґрупы „%1->“ паводле крынічнае мовы - - - - Combine groups by target language to "->%1" - Сабраць ґрупы „->%1“ паводле мэтавае мовы - - - - Make two-side translate group "%1-%2-%1" - Сабраць ґрупу двухбаковага перакладу „%1-%2-%1“ - - - - - Combine groups with "%1" - Сабраць ґрупы з „%1“ - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Тэкставыя файлы (*.txt);;Усе файлы (*.*) - - - - Export headwords... - - - - - Cancel - Скасаваць - - - - DictInfo - - - Total articles: - Усяго артыкулаў: - - - - Translates from: - Крынічная мова: - - - - Total words: - Усяго словаў: - - - - Translates to: - Мэтавая мова: - - - - Open folder - Адчыніць каталёґ - - - - Edit dictionary - Рэдаґаваць слоўнік - - - - Files comprising this dictionary: - Файлы, якія складаюць слоўнік: - - - - Description: - Апісаньне: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Зрэдаґаваць слоўнік праз загад: %1 - - - - DictListModel - - - %1 entries - %1 артыкулаў - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - - - - - Name - Назва - - - - Address - Адрас - - - - Databases - - - - - Strategies - - - - - Icon - Значак - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - - &Dictionary Bar - &Слоўнікавая паліца - - - - Extended menu with all dictionaries... - Пашыранае мэню з усімі слоўнікамі... - - - - Edit this group - Рэдаґаваць гэтую ґрупу - - - - Dictionary info - Інфармацыя пра слоўнік - - - - Dictionary headwords - - - - - Open dictionary folder - Адчыніць слоўнікавы каталёґ - - - - Edit dictionary - Рэдаґаваць слоўнік - - - - EditDictionaries - - - Dictionaries - Слоўнікі - - - - &Sources - &Крыніцы - - - - - &Dictionaries - &Слоўнікі - - - - - &Groups - Ґ&рупы - - - - Sources changed - Крыніцы зьмяніліся - - - - Some sources were changed. Would you like to accept the changes? - Колькі крыніц зьмянілася. Ці ўжыць зьмены? - - - - Accept - Ужыць - - - - Cancel - Скасаваць - - - - ExternalViewer - - - the viewer program name is empty - назва праґрамы праглядальніка парожняя - - - - FTS::FtsIndexing - - None - Няма - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Няма - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Няма - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Памылка разбору файла XML: %1 — радок %2, слупок %3 - - - - Added %1 - Дадана %1 - - - - by - - - - - Male - Мужчына - - - - Female - Жанчына - - - - from - з - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Прайдзі ў Зьмены|Слоўнікі|Крыніцы|Forvo і атрымай свой уласны API-ключ, каб прыбраць гэтую памылку. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Скасаваць - - - - Help - - - - - GermanTranslit - - - German Transliteration - Нямецкая трасьлітэрацыя - - - - GreekTranslit - - - Greek Transliteration - Грэцкая трансьлітэрацыя - - - - GroupComboBox - - - Choose a Group (Alt+G) - Абяры ґрупу (Alt+G) - - - - GroupSelectorWidget - - - Form - Хорма - - - - Look in - Шукаць у - - - - Groups - - - Dictionaries available: - Даступныя слоўнікі: - - - - Add selected dictionaries to group (Ins) - Дадаць выбраныя слоўнікі ў ґрупу (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Выняць выбраныя слоўнікі з ґрупы (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Ґрупы: - - - - Tab 2 - Укладка - - - - Create new dictionary group - Стварыць новую слоўнікавую ґрупу - - - - &Add group - &Дадаць ґрупу - - - - Create language-based groups - Стварыць ґрупы на падставе мовы - - - - Auto groups - Зґрупаваць аўтаматычна - - - - Rename current dictionary group - Пераназваць ґрупу - - - - Re&name group - Пера&назваць ґрупу - - - - Remove current dictionary group - Выдаліць ґрупу - - - - &Remove group - &Выдаліць ґрупу - - - - Remove all dictionary groups - Выдаліць усе слоўнікавыя ґрупы - - - - - Remove all groups - Выдаліць усе ґрупы - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Перацягвай слоўнікі ў/з ґрупы. Разьмяркоўвай іх у ґрупе з дапамогаю мышы. - - - - Group tabs - - - - - Open groups list - - - - - Add group - Дадаць ґрупу - - - - Give a name for the new group: - Задай назву новай ґрупы: - - - - Rename group - Пераназваньне ґрупы - - - - Give a new name for the group: - Задай новую назву ґрупы: - - - - Remove group - Выдаленьне ґрупы - - - - Are you sure you want to remove the group <b>%1</b>? - Сапраўды жадаеш выдаліць ґрупу <b>%1</b>? - - - - Are you sure you want to remove all the groups? - Сапраўды жадаеш выдаліць усе ґрупы? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Назад - - - - Forward - Наперад - - - - Zoom In - Павялічыць - - - - Zoom Out - Паменшыць - - - - Normal Size - Звычайны памер - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Выдаліць выбранае - - - - Copy Selected - Скапіяваць выбранае - - - - History: - Гісторыя: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Памер гісторыі: %1 запісаў з %2 магчымых - - - - Hunspell - - - Spelling suggestions: - Артаґрафічныя падказкі: - - - - %1 Morphology - Марфалёґія %1 - - - - HunspellDictsModel - - - Enabled - Улучана - - - - Name - Назва - - - - Initializing - - - GoldenDict - Initializing - Ініцыялізацыя - - - - - Please wait while indexing dictionary - Чакай! Ідзе індэксаваньне слоўнікаў - - - - Dictionary Name - Назва слоўніка - - - - Please wait... - Зараз... - - - - Language - - - Afar - Афар - - - - Abkhazian - Абхаская - - - - Avestan - Авэстыйская - - - - Afrikaans - Афрыкаанс - - - - Akan - Акан - - - - Amharic - Амгарская - - - - Aragonese - Араґонская - - - - Arabic - Арабская - - - - Assamese - Асамская - - - - Avaric - Аварская - - - - Aymara - Аймара - - - - Azerbaijani - Азэйбарджанская - - - - Bashkir - Башкірская - - - - Belarusian - Беларуская - - - - Bulgarian - Баўгарская - - - - Bihari - Біхары - - - - Bislama - Біслама - - - - Bambara - Бамбара - - - - Bengali - Бэнґальская - - - - Tibetan - Тыбэцкая - - - - Breton - Брэтонская - - - - Bosnian - Басьнійская - - - - Catalan - Каталянская - - - - Chechen - Чачэнская - - - - Chamorro - Чаморро - - - - Corsican - Карсыканская - - - - Cree - Кры - - - - Czech - Чэская - - - - Church Slavic - Царкоўнаславянская - - - - Chuvash - Чуваская - - - - Welsh - Валійская - - - - Danish - Дацкая - - - - German - Нямецкая - - - - Divehi - Дывехі - - - - Dzongkha - Дзонґха - - - - Ewe - Эвэ - - - - Greek - Грэцкая - - - - English - Анґельская - - - - Esperanto - Эспэранта - - - - Spanish - Гішпанская - - - - Estonian - Эстонская - - - - Basque - Басконская - - - - Persian - Пэрсыдзкая - - - - Fulah - Фула - - - - Finnish - Фінская - - - - Fijian - Фіджыйская - - - - Faroese - Фарэрская - - - - French - Француская - - - - Western Frisian - Заходнефрызыйская - - - - Irish - Ірляндзкая - - - - Scottish Gaelic - Шатляндзка-ґэльская - - - - Galician - Ґалісійская - - - - Guarani - Ґуарані - - - - Gujarati - Ґуджараці - - - - Manx - Мэнская - - - - Hausa - Хауса - - - - Hebrew - Іўрыт - - - - Hindi - Гіндзі - - - - Hiri Motu - Гіры-моту - - - - Croatian - Харвацкая - - - - Haitian - Гаіцянская - - - - Hungarian - Вугорская - - - - Armenian - Армянская - - - - Herero - Герэрская - - - - Interlingua - Інтэрлінгва - - - - Indonesian - Інданэзійская - - - - Interlingue - Акцыдэнталь - - - - Igbo - Іґбо - - - - Sichuan Yi - Носу - - - - Inupiaq - Інупяк - - - - Ido - Іда - - - - Icelandic - Ісьляндзкая - - - - Italian - Італьянская - - - - Inuktitut - Інуктытут - - - - Japanese - Японская - - - - Javanese - Яванская - - - - Georgian - Грузінская - - - - Kongo - Конга - - - - Kikuyu - Кікую - - - - Kwanyama - Кваньяма - - - - Kazakh - Казаская - - - - Kalaallisut - Ґрэнляндзкая - - - - Khmer - Кхмэрская - - - - Kannada - Канада - - - - Korean - Карэйская - - - - Kanuri - Кануры - - - - Kashmiri - Кашмірская - - - - Kurdish - Курдзкая - - - - Komi - Комі - - - - Cornish - Корнская - - - - Kirghiz - Кыргыская - - - - Latin - Лаціна - - - - Luxembourgish - Люксэмбурская - - - - Ganda - Луґанда - - - - Limburgish - Лімбурская - - - - Lingala - Лінґала - - - - Lao - Лаоская - - - - Lithuanian - Летувіская - - - - Luba-Katanga - Луба-катанґа - - - - Latvian - Латыская - - - - Malagasy - Малаґаская - - - - Marshallese - Маршальская - - - - Maori - Маары - - - - Macedonian - Македонская - - - - Malayalam - Малаялам - - - - Mongolian - Манґольская - - - - Marathi - Маратхі - - - - Malay - Малайская - - - - Maltese - Мальтыйская - - - - Burmese - Бірманская - - - - Nauru - Науру - - - - Norwegian Bokmal - Букмал - - - - North Ndebele - Паўночны Ндэбэле - - - - Nepali - Нэпальская - - - - Ndonga - Ндонґа - - - - Dutch - Нідэрляндзкая - - - - Norwegian Nynorsk - Нованарвэская - - - - Norwegian - Нарвэская - - - - South Ndebele - Паўднёвы Ндэбэле - - - - Navajo - Наваха - - - - Chichewa - Ньянджа - - - - Occitan - Аксытанская - - - - Ojibwa - Оджыбвэ - - - - Oromo - Арома - - - - Oriya - Орыя - - - - Ossetian - Асэтынская - - - - Panjabi - Панджабі - - - - Pali - Палі - - - - Polish - Польская - - - - Pashto - Пушту - - - - Portuguese - Партуґальская - - - - Quechua - Кечуа - - - - Raeto-Romance - Рэтараманская - - - - Kirundi - Кірундзі - - - - Romanian - Румынская - - - - Russian - Расейская - - - - Kinyarwanda - Руанда - - - - Sanskrit - Санскрыт - - - - Sardinian - Сардынская - - - - Sindhi - Сіндхі - - - - Northern Sami - Паўночнасаамская - - - - Sango - Санґо - - - - Serbo-Croatian - Сэрбскахарвацкая - - - - Sinhala - Сынгальская - - - - Slovak - Славацкая - - - - Slovenian - Славенская - - - - Samoan - Самаанская - - - - Shona - Шона - - - - Somali - Самалійская - - - - Albanian - Альбанская - - - - Serbian - Сэрбская - - - - Swati - Сваці - - - - Southern Sotho - Сэсота - - - - Sundanese - Сунданская - - - - Swedish - Швэдзкая - - - - Swahili - Суахілі - - - - Tamil - Тамільская - - - - Telugu - Тэлуґу - - - - Tajik - Таджыцкая - - - - Thai - Тайская - - - - Tigrinya - Тыґрынья - - - - Turkmen - Туркмэнская - - - - Tagalog - Таґальская - - - - Tswana - Тсвана - - - - Tonga - Танґанская - - - - Turkish - Турэцкая - - - - Tsonga - Тсонґа - - - - Tatar - Татарская - - - - Twi - Акан - - - - Tahitian - Таіцянская - - - - Uighur - Уйгурская - - - - Ukrainian - Украінская - - - - Urdu - Урду - - - - Uzbek - Узбэцкая - - - - Venda - Вэндзкая - - - - Vietnamese - Віетнамская - - - - Volapuk - Валапюк - - - - Walloon - Валёнская - - - - Wolof - Валоф - - - - Xhosa - Коса - - - - Yiddish - Ідыш - - - - Yoruba - Ёруба - - - - Zhuang - Чжуанская - - - - Chinese - Кітайская - - - - Zulu - Зулу - - - - Lojban - Ложбан - - - - Traditional Chinese - Традыцыйная кітайская - - - - Simplified Chinese - Спрошчаная кітайская - - - - Other - Іншая - - - - Other Simplified Chinese dialects - Іншыя дыялекты спрошчанай кітайскай - - - - Other Traditional Chinese dialects - Іншыя дыялекты традыцыйнай кітайскай - - - - Other Eastern-European languages - Іншыя ўсходнеэўрапейскія мовы - - - - Other Western-European languages - Іншыя заходнеэўрапейскія мовы - - - - Other Russian languages - Іншыя расейскія мовы - - - - Other Japanese languages - Іншыя японскія мовы - - - - Other Baltic languages - Іншыя балцкія мовы - - - - Other Greek languages - Іншыя грэцкія мовы - - - - Other Korean dialects - Іншыя карэйскія дыялекты - - - - Other Turkish dialects - Іншыя турэцкія дыялекты - - - - Other Thai dialects - Іншыя тайскія дыялекты - - - - Tamazight - Бэрбэрская - - - - LoadDictionaries - - - Error loading dictionaries - Памылка пры ладаваньні слоўнікаў - - - - Main - - - Error in configuration file. Continue with default settings? - Абмылка ў файле канфіґурацыі. Працягнуць з стандартнымі наладамі? - - - - MainWindow - - - - Welcome! - Вітаем! - - - - &File - &Файл - - - - &Edit - Зь&мены - - - - &Help - &Дапамога - - - - &View - &Выгляд - - - - &Zoom - &Сумер - - - - H&istory - &Гісторыя - - - - Search - - - - - &Search Pane - Панэль &шуканьня - - - - &Results Navigation Pane - Панэль &навіґацыі ў выніках - - - - &History Pane - Панэль &гісторыі - - - - &Dictionaries... - &Слоўнікі... - - - - F3 - F3 - - - - &Preferences... - &Налады... - - - - F4 - F4 - - - - &Homepage - &Хатняя бачына - - - - &About - &Інфармацыя - - - - About GoldenDict - Інфармацыя пра GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Выйсьці - - - - Quit from application - Выйсьці з праґрамы - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Форум - - - - &Close To Tray - Зьвінуць у &лотак - - - - Minimizes the window to tray - Зьвінуць акно ў лотак - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Захаваць артыкул - - - - Save Article - Захаваць артыкул - - - - F2 - F2 - - - - &Print - На&друкаваць - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Налады &бачыны - - - - Print Pre&view - Перадпр&агляд друку - - - - &Rescan Files - Пера&сканаваць файлы - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Ачысьціць - - - - &New Tab - &Новая ўкладка - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Тэчка &канфіґурацыі - - - - - &Show - &Паказаць - - - - Ctrl+H - Ctrl+H - - - - &Export - З&экспартаваць - - - - &Import - З&ымпартаваць - - - - &Always on Top - Заўсёды на &версе - - - - Always on Top - Заўсёды на версе - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Кнопка мэню - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - - Show Names in Dictionary &Bar - Паказваць &назвы ў слоўнікавай паліцы - - - - Show Small Icons in &Toolbars - Паказваць малыя значкі ў паліцы &прыладаў - - - - &Menubar - Паліца &мэню - - - - &Navigation - &Навіґацыя - - - - Back - Назад - - - - Forward - Наперад - - - - Scan Popup - Улучыць працу ў вонкавых праґрамах - - - - Pronounce Word (Alt+S) - Вымавіць слова (Alt+S) - - - - Zoom In - Павялічыць - - - - Zoom Out - Паменшыць - - - - Normal Size - Звычайны памер - - - - - Look up in: - Шукаць у: - - - - Found in Dictionaries: - Знойдзена ў наступных слоўніках: - - - - Words Zoom In - Павялічыць радок шуканьня - - - - Words Zoom Out - Паменшыць радок шуканьня - - - - Words Normal Size - Звычайны памер радка шуканьня - - - - Show &Main Window - Паказаць &галоўнае акно - - - - Opened tabs - Адчыненыя ўкладкі - - - - Close current tab - Зачыніць дзейную ўкладку - - - - Close all tabs - Зачыніць усе ўкладкі - - - - Close all tabs except current - Зачыніць усе ўкладкі апроч дзейнай - - - - Loading... - Ладаваньне... - - - - New Tab - Новая ўкладка - - - - %1 dictionaries, %2 articles, %3 words - %1 слоўнікаў, %2 артыкулаў, %3 словаў - - - - Look up: - Шукаць: - - - - All - Усе - - - - Open Tabs List - Адчыніць сьпіс укладак - - - - (untitled) - (бяз назвы) - - - - %1 - %2 - %1 - %2 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Памылка ініцыялізацыі цікаваньня клявішных скаротаў.<br>Пераканайся, што XServer мае ўлучанае пашырэньне RECORD. - - - - New Release Available - Дастуны новы выпуск - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - GoldenDict вэрсіі <b>%1</b> даступны для заладаваньня.<br>Пстрыкні па <b>Зладаваць</b>, каб перайсьці на бачыну сьцягваньня. - - - - Download - Зладаваць - - - - Skip This Release - Прамінуць гэты выпуск - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - Accessibility API ня ўлучаны - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - You have chosen to hide a menubar. Use %1 to show it back. - Паліца мэню ёсьць схаваная. Скарыстай %1, каб павараціць назад. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Налады бачыны - - - - No printer is available. Please install one first. - Няма дасяжных друкарак. Спачатку ўсталюй хоць адну. - - - - Print Article - Надрукаваць артыкул - - - - Article, Complete (*.html) - Артыкул цалком (*.html) - - - - Article, HTML Only (*.html) - Артыкул, толькі HTML (*.html) - - - - Save Article As - Захаваць артыкул як - - - - Error - Памылка - - - - Can't save article: %1 - Няможна захаваць артыкул: %1 - - - - Saving article... - Захоўваньне артыкула... - - - - The main window is set to be always on top. - Галоўнае акно цяпер заўсёды знаходзіцца вышэй іншых. - - - - &Hide - С&хаваць - - - - Export history to file - Экспартаваньне гісторыі ў файл - - - - - Text files (*.txt);;All files (*.*) - Тэкставыя файлы (*.txt);;Усе файлы (*.*) - - - - History export complete - Экспартаваньне гісторыі кончылася - - - - Export error: - Памылка экспарту: - - - - Import history from file - Імпартаваньне гісторыі з файла - - - - Import error: invalid data in file - Памылка імпартаваньня: хібныя зьвесткі ў файле - - - - History import complete - Імпартаваньне гісторыі кончылася - - - - Import error: - Памылка імпартаваньня: - - - - Dictionary info - Інфармацыя пра слоўнік - - - - Dictionary headwords - - - - - Open dictionary folder - Адчыніць слоўнікавы каталёґ - - - - Edit dictionary - Рэдаґаваць слоўнік - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Слоўнікавы файл скажоны ці пашкоджаны - - - - Failed loading article from %1, reason: %2 - Абмылка ладаваньня артыкула з %1, з прычыны: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Памылка разбору файла XML: %1 — радок %2, слупок %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Памылка разбору файла XML: %1 — радок %2, слупок %3 - - - - MediaWikisModel - - - Enabled - Улучаны - - - - Name - Назва - - - - Address - Адрас - - - - Icon - Значак - - - - OrderAndProps - - - Form - Хорма - - - - Dictionary order: - Парадак слоўнікаў: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Неўжываныя (вылучаныя) слоўнікі: - - - - Dictionary information - Інфармацыя пра слоўнік - - - - Name: - Назва: - - - - Total articles: - Усяго артыкулаў: - - - - Total words: - Усяго словаў: - - - - Translates from: - Крынічная мова: - - - - Translates to: - Мэтавая мова: - - - - Description: - Апісаньне: - - - - Files comprising this dictionary: - Файлы, якія складаюць слоўнік: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Упарадкуй слоўнікі, разьмеркаваўшы іх мышшу. Каб не ўжываць слоўніка, перацягні яго ў ґрупу вылучаных слоўнікаў. - - - - Sort by name - Сартаваць паводле назвы - - - - Sort by languages - Сартаваць паводле мовы - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Шлях - - - - Recursive - Рэкурсіўна - - - - Preferences - - - Preferences - Налады - - - - &Interface - &Інтэрфэйс - - - - Tabbed browsing - Кіраваньне ўкладкамі - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Звычайна, адчыненая ўкладка адразу становіцца дзейнай. -Па ўлучэньні гэтае опцыі, новыя ўкладкі будуць адчыняцца -безь пераходу ў стан дзейнай. - - - - Open new tabs in background - Адчыняць новыя ўкладкі ў фоне - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Па ўлучэньні гэтае опцыі, новыя ўкладкі будуць -адчыняцца адразу за дзейнай, а не ў канцы. - - - - Open new tabs after the current one - Адчыняць укладкі за дзейнай - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Улучы гэтую опцыю, калі не жадаеш бачыць паліцы ўкладак, -калі толькі адна ўкладка ёсьць адчыненая. - - - - Hide single tab - Хаваць адзіную ўкладку - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab пералучае ўкладкі ў скарыстаным парадку - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Калі ўлучана, у сыстэмным лотку зьявіцца значак, які можна -карыстаць для выкліканьня галоўнага акна ды іншых дзеяньняў. - - - - Enable system tray icon - Улучыць значак у сыстэмным лотку - - - - With this on, the application starts directly to system tray without showing -its main window. - З гэтай опцыяй праґрама будзе стартаваць прост у сыстэмным лотку з схаваным галоўным акном. - - - - Start to system tray - Стартаваць у сыстэмным лотку - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - З гэтай опцыяй зачыненьне галоўнага акна -будзе зьвінаць яго ў сыстэмны лотак. - - - - Close to system tray - Зьвінаць у сыстэмны лотак - - - - Turn this option on if you want to select words by single mouse click - Улучы гэтую опцыю, калі хочаш выбіраць словы адным пстрыкам - - - - Select word by single click - Выбіраць словы адным пстрыкам - - - - Startup - Стартаваньне - - - - Automatically starts GoldenDict after operation system bootup. - Аўтаматычна стартаваць GoldenDict па заладаваньні сыстэмы. - - - - Start with system - Стартаваць разам з сыстэмаю - - - - Interface language: - Мова інтэрфэйсу: - - - - Display style: - Стыль артыкулаў: - - - - Double-click translates the word clicked - Перакладаць выбранае слова падвойным пстрыкам - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Звычайна, націсканьне клявіша ESC перамяшчае фокус у радок уводу. -Разам з гэтай опцыяй, націск клявіша будзе хаваць галоўнае акно. - - - - ESC key hides main window - Клявіш ESC хавае галоўнае акно - - - - Add-on style: - Дадатковы стыль: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Настаў гэтае значэньне, каб унікаць вялікіх мэнюшак. - - - - Context menu dictionaries limit: - Граніца колькасьці слоўнікаў у выпадным мэню: - - - - &Scan Popup - &Карыстаньне звонку - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Калі ўлучана, выплыўное акно будзе паказвацца кожны раз, калі -перамясьціць курсор мышы на слова на экране (Windows) ці выбраць -яго (Linux). Калі ўлучана, можна адлучыць ці ўлучыць працу выплыўнога -акна ў галоўным акне ці ў сыстэмным лотку. - - - - Enable scan popup functionality - Улучыць мэханізм выплыўных вокнаў - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Вызначае ці ўлучаць вонкавыя выплыўныя вокны пры стартаваньні праґрамы. - - - - Start with scan popup turned on - Стартаваць разам з улучанымі выплыўнымі вокнамі - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Паказваць выплыўное акно толькі тады, калі карыстальнік зацісьне ўсе пазначаныя клявішы. - - - - Only show popup when all selected keys are kept pressed: - Паказваць выплыўное акно толькі пры наступных заціснутых клявішах: - - - - Left Ctrl only - Толькі левы Ctrl - - - - Left Ctrl - Левы Ctrl - - - - Right Shift only - Толькі правы Shift - - - - Right Shift - Правы Shift - - - - Alt key - Клявіш Alt - - - - Alt - Alt - - - - Ctrl key - Клявіш Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Толькі левы Alt - - - - Left Alt - Левы Alt - - - - Shift key - Клявіш Shift - - - - Shift - Shift - - - - Right Alt only - Толькі правы Alt - - - - Right Alt - Правы Alt - - - - Right Ctrl only - Толькі правы Ctrl - - - - Right Ctrl - Правы Ctrl - - - - Left Shift only - Толькі левы Shift - - - - Left Shift - Левы Shift - - - - Windows key or Meta key - Windows-клявіш ці Meta-клявіш - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Звычайна, каб выклікаць выплыўное акно, трэба трымаць -націснутымі адпаведныя клявішы ў час выбіраньня слова. -Разам з гэтай опцыяй, клявішы могуць быць націснутымі -і праз пэўны час. - - - - Keys may also be pressed afterwards, within - Клявішы можна націснуць і праз - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Каб унікаць памылковых выклікаў, GoldenDict цікуе за клявішамі -абмежаваную колькасьць сэкундаў, якая й задаецца тут. - - - - secs - с - - - - Send translated word to main window instead of to show it in popup window - Слаць перакладанае слова ў галоўнае акно замест выкліканьня выплыўнога - - - - Send translated word to main window - Слаць перакладанае слова ў галоўнае акно - - - - Hotkeys - Клявішныя скароты - - - - Use the following hotkey to show or hide the main window: - Выкарыстоўваць наступны скарот для выкліканьня галоўнага акна: - - - - Use the following hotkey to translate a word from clipboard: - Выкарыстоўваць наступны скарот для перакладу слова з кішэні: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Клявішныя скароты ёсьць ґлябальнымі і дзейнічаюць у кожнай праґраме ў кожным кантэксьце, пакуль працуе GoldenDict. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Заўвага: Падобна на тое, што дзейны выпуск X.Org XServer мае непрацаздольнае пашырэньне RECORD. Клявішныя скароты GoldenDict магчыма рабіць ня будуть. Гэта трэба выпраўляць на баку сэрвэру. Падрабязная інфармацыя </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">тут</span></a><span style=" color:#ff0000;">. Пры жаданьні там можна пакінуць свой камэнтар.</span></p></body></html> - - - - &Audio - &Аўдыё - - - - Pronunciation - Вымаўленьне - - - - Auto-pronounce words in main window - Аўтаматычна вымаўляць словы ў галоўным акне - - - - Auto-pronounce words in scan popup - Аўтаматычна вымаўляць словы ў выплыўным акне - - - - Playback - Прайграваньне - - - - Play audio files via FFmpeg(libav) and libao - Прайграваць гукі праз FFmpeg(libav) і libao - - - - Use internal player - Карыстаць убудаваны прайгравальнік - - - - Use any external program to play audio files - Скарыстаць вонкавую праґраму для прайграваньня аўдыё файлаў - - - - Use external program: - Прайграваць праз вонкавую праґраму: - - - - &Network - &Сетка - - - - Enable if you wish to use a proxy server -for all program's network requests. - Улучыць, каб выкарыстоўваць проксі сэрвэр -для ўсіх сеткавых запытаў праґрамы. - - - - Use proxy server - Скарыстаць проксі-сэрвэр - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Type: - Тып: - - - - Host: - Гост: - - - - Port: - Порт: - - - - User: - Карыстальнік: - - - - Password: - Пароль: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Дазволіць GoldenDict блякаваць большасьць рэклямы праз забарону -пэўнага зьмесьціва (выяваў, рамак), якое не належыць уласна сайтам. -Калі нейкія сайты зламаюцца, паспрабуй адлучыць гэтую опцыю. - - - - Disallow loading content from other sites (hides most advertisements) - Абмежаваць заладоўванае зьмесьціва зь іншых сайтаў (хавае большасьць рэклямы) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Дазволіць праслухоўваць вымаўленьне з вонкавых -сайтаў, якія патрабуюць Flash ці іншыя сеціўныя ўбудовы. -Убудовы мусяць быць усталяванымі. - - - - Enable web plugins - Улучыць сеціўныя ўбудовы - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Некаторыя сайты пазнаюць GoldenDict праз HTTP-загалоўкі -і блякуюць запыты. Улучы опцыю, каб абмінуць праблему. - - - - Do not identify GoldenDict in HTTP headers - Не пазначаць GoldenDict у HTTP-запытах - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Калі опцыя ўлучаная, праґрама будзе правяраць -наяўнасьць абнаўленьняў GoldenDict. Калі наяўнасьць -пацьвердзіцца, праґрама нагадае пра гэта -й прапануе наведаць бачыну зладаваньня. - - - - Check for new program releases periodically - Правяраць наяўнасьць новых выпускаў праґрамы - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Ad&vanced - &Дадаткова - - - - ScanPopup extra technologies - Дадатковыя мэханізмы сканаваньня словаў для выплыўных вокнаў - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Скарыстай тэхналёґію IAccessibleEx, каб вызначаць словы пад курсорам. -Яна працуе толькі з тымі праґрамамі, якія падтрымліваюць яе (прыкладам, -Internet Explorer 9). -Ня трэба ўлучаць гэтае опцыі, калі не карыстаешся такімі праґрамамі. - - - - Use &IAccessibleEx - Скарыстаць &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Скарыстай тэхналёґію UI Automation, каб вызначаць словы пад курсорам. -Яна працуе толькі з тымі праґрамамі, якія падтрымліваюць яе. -Ня трэба ўлучаць гэтае опцыі, калі не карыстаешся такімі праґрамамі. - - - - Use &UIAutomation - Скарыстаць &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Скарыстай адмысловыя запыты GoldenDict, каб вызначаць словы пад курсорам. -Яны працуюць толькі з тымі праґрамамі, якія іх падтрымліваюць. -Ня трэба ўлучаць гэтае опцыі, калі не карыстаешся такімі праґрамамі. - - - - Use &GoldenDict message - Скарыстаць запыты &GoldenDict - - - - History - Гісторыя - - - - Turn this option on to store history of the translated words - Улучы гэтую опцыю, каб захоўваць гісторыю перакладаных словаў - - - - Store &history - Захоўваць &гісторыю - - - - Specify the maximum number of entries to keep in history. - Пазначае максымальную колькасьць запісаў у гісторыі. - - - - Maximum history size: - Памер гісторыі: - - - - History saving interval. If set to 0 history will be saved only during exit. - Інтэрвал захаваньня гісторыі. Калі 0, гісторыя будзе захоўвацца толькі перад выхадам. - - - - Save every - Захоўваць праз - - - - minutes - хв - - - - Articles - Артыкулы - - - - Turn this option on to always expand optional parts of articles - Улучы гэтую опцыю, каб заўсёды разгортваць дадатковыя разьдзелы артыкулаў - - - - Expand optional &parts - Разгортваць дадатковыя &разьдзелы - - - - Select this option to automatic collapse big articles - Улучы опцыю, каб аўтаматычна згартаць вялікія артыкулы - - - - Collapse articles more than - Згартаць артыкулы, якія маюць больш за - - - - Articles longer than this size will be collapsed - Артыкулы большыя за гэта значэньне будуць згартацца - - - - symbols - знакаў - - - - System default - Сыстэмная - - - - - Default - Стандартны - - - - Modern - Сучасны - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - - Changing Language - Зьмена мовы - - - - Restart the program to apply the language change. - Перастартуй праґраму, каб ужыць новую мову. - - - - ProgramTypeEditor - - - Audio - Аўдыё - - - - Plain Text - Звычайны тэкст - - - - Html - Html - - - - Prefix Match - Паводле прэфіксу - - - - Unknown - Няведама - - - - Programs::RunInstance - - - No program name was given. - Назвы праґрамы не пазначылі. - - - - The program has crashed. - Праґрама нечакана скасавалася. - - - - The program has returned exit code %1. - Праґрама вярнула выходны код %1. - - - - ProgramsModel - - - Enabled - Улучана - - - - Type - Тып - - - - Name - Назва - - - - Command Line - Загадны радок - - - - Icon - Значак - - - - QObject - - - - Article loading error - Памылка ладаваньня артыкула - - - - - Article decoding error - Памылка раскадоўваньня артыкула - - - - avformat_alloc_context() failed. - Памылка avformat_alloc_context(). - - - - av_malloc() failed. - Памылка av_malloc(). - - - - avio_alloc_context() failed. - Памылка avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Памылка avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - Памылка avformat_find_stream_info(): %1. - - - - Could not find audio stream. - Ня выйшла знайсьці аўдыёплыні. - - - - Codec [id: %1] not found. - GoldenDict не знайшоў кодэка [id: %1]. - - - - avcodec_open2() failed: %1. - Памылка avcodec_open2(): %1. - - - - Cannot find usable audio output device. - Ня выйшла знайсьці прылады вываду гуку. - - - - Unsupported sample format. - Непадтрымліваны гукавы фармат. - - - - ao_open_live() failed: - Памылка ao_open_live(): - - - - No driver. - Няма драйвэра. - - - - This driver is not a live output device. - Гэты драйвэр ня ёсьць праладай вываду. - - - - A valid option key has an invalid value. - Сапраўдны ключ парамэтраў мае несапраўднае значэньне. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Няможна адчыніць: прылада: %1, каналаў: %2, часьціня дыскрэтызацыі: %3, бітплынь: %4. - - - - Unknown error. - Няведамая памылка. - - - - avcodec_alloc_frame() failed. - Памылка avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Фільтраваць слоўнікі паводле назвы (Ctrl+F) - - - - Quick Search - Хуткі пошук - - - - Clear Search - Ачысьціць - - - - ResourceToSaveHandler - - - - ERROR: %1 - АБМЫЛА: %1 - - - - Resource saving error: - Памылка захаваньня рэсурсу: - - - - The referenced resource failed to download. - Ня выйшла зладаваць пазначанага рэсурсу. - - - - Romaji - - - Hepburn Romaji for Hiragana - Сыстэма лацінізацыі Гэпбёрна для Хіраґаны - - - - Hepburn Romaji for Katakana - Сыстэма лацінізацыі Гэпбёрна для Катаканы - - - - RussianTranslit - - - Russian Transliteration - Расейская трасьлітэрацыя - - - - ScanPopup - - - Dialog - Дыялёґ - - - - Back - Назад - - - - - - - - ... - ... - - - - Forward - Наперад - - - - Pronounce Word (Alt+S) - Вымавіць слова (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Даслаць слова у галоўнае акно (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Паказаць або схаваць слоўнікавую паліцу - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Скарыстай шпільку, каб замацаваць акно на экране, зьмяняць -ягоны памер, ды кіраваць ім кожным зручным спосабам. - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Шлях - - - - Name - Назва - - - - Icon - Значак - - - - Sources - - - Files - Файлы - - - - Paths to search for the dictionary files: - Шляхі шуканьня слоўнікавых файлаў: - - - - - - - - - &Add... - &Дадаць... - - - - - - - - - &Remove - &Прыбраць - - - - Re&scan now - Пера&сканаваць - - - - Sound Dirs - Каталёґі гукавых файлаў - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Зрабіць слоўнікі адпаведна даданым шляхам: - - - - Morphology - Марфалёґія - - - - Path to a directory with Hunspell/Myspell dictionaries: - Шлях да слоўнікаў Hunspell/Myspell: - - - - &Change... - Зь&мяніць... - - - - Available morphology dictionaries: - Даступныя марфаляґічныя слоўнікі: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Кожны марфаляґічны слоўнік — гэта -асобны дапаможны слоўнік, які -забесьпячае падставовыя формы -словаў для шуканьня, і прапаноўвае -падобныя правільныя выразы для -памылкова напісаных. Дадавай -слоўнікі ў канец адпаведных ґруп. - - - - Wikipedia - Вікіпэдыя - - - - Wikipedia (MediaWiki) sites: - Сайты Вікіпэдыі (MediaWiki): - - - - Websites - Сайты - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Розныя сайты. %GDWORD% заменіцца на запытанае слова: - - - - Programs - Праґрамы - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Жывое вымаўленьне з <a href="http://www.forvo.com/">forvo.com</a>. Гэты сайт дазваляе людзям запісваць і дзяліцца вымаўленьнем словаў. Іх можна праслухаць пры дапамозе GoldenDict. - - - - Enable pronunciations from Forvo - Улучыць вымаўленьне з Forvo - - - - API Key: - Ключ API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Карыстаньне сайтам Forvo патрабуе ключ API. Пакінь поле пустым, каб карыстацца стандартным ключом, які пазьней можа стаць недаступным, ці зарэґіструйся на сайце і атрымай уласны ключ. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Атрымай свой уласны ключ <a href="http://api.forvo.com/key/">тут</a>, ці пакінь поле пустым для стандартнага значэньня. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Таксама карыстай %GD1251% для CP1251, %GDISO1%...%GDISO16% для ISO 8859-1...ISO 8859-16, %GDBIG5% -для Big-5, %GDBIG5HKSCS% для Big5-HKSCS, %GDGBK% для GBK і GB18030, %GDSHIFTJIS% для Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Розныя вонкавыя праґрамы. %GDWORD% заменіцца на запытанае слова. Калі такога слова няма, то яго накіруюць у стандартны ўвод. - - - - Language codes (comma-separated): - Моўныя коды (праз коску): - - - - List of language codes you would like to have. Example: "en, ru". - Пералік выбраных моўнык кодаў. Прыкладам: „en, uk, pl“. - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Поўны сьпіс даступных моўных кодаў <a href="http://www.forvo.com/languages-codes/">тут</a>. - - - - Transliteration - Трансьлітэрацыя - - - - Russian transliteration - Расейская трансьлітэрацыя - - - - Greek transliteration - Грэцкая трансьлітэрацыя - - - - German transliteration - Нямецкая трансьлітэрацыя - - - - Belarusian transliteration - Беларуская трансьлітэрацыя - - - - Enables to use the Latin alphabet to write the Japanese language - Улучае лацінскі альфабэт для японскае мовы - - - - Japanese Romaji - Японскі рамадзі - - - - Systems: - Сыстэмы: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Найбольш ужываны мэтад транскрыпцыі японскае мовы -на падставе анґельскае фаналёґіі - - - - Hepburn - Гэпбёрн - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Гэта сыстэма найбольш дакладна адлюстроўвае знакі каны. -Стандартызаваная ў ISO 3602. - -У GoldenDict яшчэ не падтрымліваецца. - - - - Nihon-shiki - Ніхон-сікі - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Створаная на падставе сыстэмы Ніхон-сікі і адаптаваная да сучаснай Японскай. -Стандартызаваная ў ISO 3602. - -У GoldenDict яшчэ не падтрымліваецца. - - - - Kunrei-shiki - Кунрэй-сікі - - - - Syllabaries: - Складовыя абэцэды: - - - - Hiragana Japanese syllabary - Складовая абэцэда Хіраґана - - - - Hiragana - Хіраґана - - - - Katakana Japanese syllabary - Складовая абэцэда Кітакана - - - - Katakana - Катакана - - - - Text to Speech - Сынтэз мовы - - - - (not available in portable version) - (не даступна ў пераноснай вэрсіі) - - - - - - Choose a directory - Выбар каталёґу - - - - - - - - - Confirm removal - Пацьверджаньне выдаленьня - - - - - Remove directory <b>%1</b> from the list? - Прыбраць каталёґ <b>%1</b> са сьпісу? - - - - - - Remove site <b>%1</b> from the list? - Прыбраць сайт <b>%1</b> са сьпісу? - - - - Remove program <b>%1</b> from the list? - Прыбраць праґраму <b>%1</b> са сьпісу? - - - - StylesComboBox - - - None - Няма - - - - TextToSpeechSource - - - Selected voice engines: - Выбраныя галасавыя рухавікі: - - - - &Add - &Дадаць - - - - &Remove - &Выдаліць - - - - Preferences - Налады - - - - Volume: - Гучнасьць: - - - - Rate: - Хуткасьць: - - - - Preview - Праслухоўваньне - - - - Available voice engines: - Даступныя рухавікі: - - - - Text to be previewed: - Тэкст для праслухоўваньня: - - - - Type text to be previewed here. - Упішы сюды тэкст, каб праслухаць. - - - - &Preview - &Праслухаць - - - - No TTS voice available - Няма даступных сынтэзатараў голасу - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - GoldenDict не знайшоў жаднага даступнага сынтэзатара голасу.<br>Пераканайся ў наяўнасьці хоць аднаго ўсталяванага сынтазатара на сваім кампутары. - - - - Confirm removal - Пацьверджаньне выдаленьня - - - - Remove voice engine <b>%1</b> from the list? - Выдаліць галасавы рухавік <b>%1</b> са сьпісу? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Упішы слова ці выраз для шуканьня ў слоўніках - - - - Drop-down - Выпадны сьпіс - - - - VoiceEnginesModel - - - Enabled - Улучана - - - - Name - Назва - - - - Id - Id - - - - Icon - Значак - - - - WebSitesModel - - - Enabled - Улучаны - - - - Name - Назва - - - - Address - Адрас - - - - Icon - Значак - - - - WordFinder - - - Failed to query some dictionaries. - Памылка запыту ў нейкіх слоўніках. - - - - WordList - - - WARNING: %1 - УВАГА: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/be_BY@latin.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/be_BY@latin.ts deleted file mode 100644 index 971245c6fd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/be_BY@latin.ts +++ /dev/null @@ -1,4717 +0,0 @@ - - - - - About - - - About - Infarmacyja - - - - GoldenDict dictionary lookup program, version - GoldenDict — pragrama prahladu słoŭnikaŭ, versija - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Kanstancin Isakaŭ (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - Licenzija GNU GPLv3 ci paźniejšaja - - - - Credits: - Udzielniki prajektu: - - - - [Unknown] - [Niaviedamaja] - - - - Based on Qt %1 (%2, %3 bit) - Na padstavie Qt %1 (%2, %3 bity) - - - - ArticleMaker - - - Expand article - Razharnuć artykuł - - - - Collapse article - Zharnuć artykuł - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - GoldenDict nie znajšoŭ pierakładu dla <b>%1</b> u grupie <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - GoldenDict nie znajšoŭ pierakładu ŭ grupie <b>%1</b>. - - - - Welcome! - Vitajem! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Vitajem u <b>GoldenDict</b>!</h3><p>Pierš za ŭsio naviedaj <b>Źmieny|Słoŭniki</b>, kab paznačyć šlachi da słoŭnikavych fajłaŭ, ź jakich budzie stanavicca biblijateka słoŭnikaŭ, dadaj roznyja sajty Vikipedyi j inšyja krynicy, vyznačy paradak słoŭnikaŭ dy stvary słoŭnikavyja grupy.<p>Pa naładžvańni pragrama budzie hatovaja da prahladu słoŭnikavych artykułaŭ. Toje možna rabić u hetym aknie (upišy šukanaje słova ŭ radok šukańnia) ci ŭ vonkavych pragramach z dapamohaju <a href="Karystańnie słoŭnikam u vonkavych pragramach">vypłyŭnych voknaŭ</a>. <p>Kab dapasavać da siabie pragramu, skarystaj dastupnyja nałady ŭ <b>Źmienach|Naładach</b>. Usie źmieščanyja tam nałady majuć padkazki. Čytaj ich dla peŭnaści ŭ zroblenych źmienach.<p>Kali ŭźnikli pytańni, prapanovy, ci prosta zachaciełasia znać mierkavańni ludziej, to zaprašajem na naš <a href="http://goldendict.org/forum/">forum</a>.<p>Novyja versii pragramy zaŭsiody možna znajści na našym <a href="http://goldendict.org/">sajcie</a>.<p>(c) 2008-2013 Kanstancin Isakaŭ. Licenzija GPLv3 ci paźniejšaja. - - - - Working with popup - Karystańnie słoŭnikam u vonkavych pragramach - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Karystańnie słoŭnikam u vonkavych pragramach</h3>Kab šukać słovy ŭ słoŭniku z-pad inšych pragramaŭ, treba padłučyć <i>mechanizm vypłyŭnych voknaŭ</i> u <b>Naładach</b>, i zacisnuć knopku „Vypłyŭnyja vokny“ ŭ hałoŭnym aknie, ci ŭłučyć adpaviedny punkt kantekstnaha meniu značka ŭ systemnym łotku. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Zatym u kožnaj pragramie prosta spyni kursor myšy nad słovam, i praz chvilu źjavicca vypłyŭnoje akno z adpaviednym artykułam. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Zatym u kožnaj pragramie prosta abiary słova myššu (dvojčy pstrykni ci praviadzi pa słovie kursoram myšy z zacisnutaj levaj knopkaj), i praz chvilu źjavicca vypłyŭnoje akno z adpaviednym artykułam. - - - - (untitled) - (nienazvanaja) - - - - (picture) - (vidarys) - - - - ArticleRequest - - - Expand article - Razharnuć artykuł - - - - From - Z - - - - Collapse article - Zharnuć artykuł - - - - Query error: %1 - Pamyłka zapytu: %1 - - - - Close words: - Padobnyja słovy: - - - - Compound expressions: - Słovazłučeńni: - - - - Individual words: - Słovy paasobku: - - - - ArticleView - - - Form - Chorma - - - - about:blank - about:blank - - - - Find: - Šukać: - - - - x - x - - - - - &Previous - &Papiaredni - - - - - &Next - &Nastupny - - - - Ctrl+G - Ctrl+G - - - - Highlight &all - Paznačyć &usie - - - - &Case Sensitive - &Roźnić registar - - - - Select Current Article - Vybrać dziejny artykuł - - - - Copy as text - Skapijavać jak tekst - - - - Inspect - Inspektar - - - - Resource - Resurs - - - - Audio - Aŭdyjo - - - - TTS Voice - Syntezatar hołasu - - - - Picture - Vidarys - - - - Video - Videa - - - - Video: %1 - Videa: %1 - - - - Definition from dictionary "%1": %2 - Aznačeńnie z słoŭnika „%1“: %2 - - - - Definition: %1 - Aznačeńnie: %1 - - - - - The referenced resource doesn't exist. - Zapytanaha resursu nie isnuje. - - - - The referenced audio program doesn't exist. - Paznačanaj pragramy nie isnuje. - - - - - ERROR: %1 - PAMYŁKA: %1 - - - - Save sound - Zachavańnie huku - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Hukavyja fajły (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Usie fajły (*.*) - - - - Save image - Zachavańnie vyjavy - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Fajły vyjavaŭ (*.bmp *.jpg *.png *.tif);;Usie fajły (*.*) - - - - &Open Link - &Adčynić spasyłku - - - - Open Link in New &Tab - Ačynić spasyłku ŭ novaj &układcy - - - - Open Link in &External Browser - Adčynić spasyłku ŭ &vonkavym ahladalniku - - - - Save &image... - Zachavać &vyjavu... - - - - Save s&ound... - Zachavać &huk... - - - - &Look up "%1" - &Šukać „%1“ - - - - Look up "%1" in &New Tab - Šukać „%1“ u &novaj układcy - - - - Send "%1" to input line - Źmiaścić „%1“ u ŭvodnym radku - - - - - &Add "%1" to history - &Dadać „%1“ da historyi - - - - Look up "%1" in %2 - Šukać „%1“ u grupie %2 - - - - Look up "%1" in %2 in &New Tab - Šukać „%1“ u grupie %2 u novaj u&kładcy - - - - WARNING: FFmpeg Audio Player: %1 - PAPIAREDŽAŃNIE: Prajhravalnik FFMpeg: %1 - - - - WARNING: %1 - UVAHA: %1 - - - - Failed to run a player to play sound file: %1 - Nia zdoleŭ zapuścić prajhravalnika hukavaha fajła: %1 - - - - Failed to create temporary file. - Nia zdoleŭ stvaryć časovaha fajła. - - - - Failed to auto-open resource file, try opening manually: %1. - Nia zdoleŭ aŭtamatyčna adčynić resursavaha fajła. Pasprabuj adčynić ručna %1. - - - - The referenced resource failed to download. - Nia zdoleŭ zładavać paznačanaha resursu. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Biełaruskaja tranśliteracyja z łaciny ŭ kirylicu (klasyčny pravapis) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Biełaruskaja tranśliteracyja z łaciny ŭ kirylicu (školny pravapis) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Biełaruskaja tranśliteracyja (zhładžvaje roźnicu -miž klasyčnym i školnym pravapisam) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Parol: - - - - DictGroupWidget - - - Form - Chorma - - - - Group icon: - Značak grupy: - - - - Shortcut: - Klavišny skarot: - - - - None - Niama - - - - From file... - Z fajła... - - - - Choose a file to use as group icon - Abiary fajł vyjavy, jakaja budzie značkam grupy - - - - Images - Vyjavy - - - - All files - Usie fajły - - - - Error - Pamyłka - - - - Can't read the specified image file. - Nielha pračytać abranaha fajła vyjavy. - - - - DictGroupsWidget - - - - - - Dictionaries: - Słoŭnikaŭ: - - - - Confirmation - Paćvierdžańnie - - - - Are you sure you want to generate a set of groups based on language pairs? - Ci napeŭna chočaš zgieneravać zbor grupaŭ na padstavie moŭnych par? - - - - Unassigned - Pa-za grupami - - - - Combine groups by source language to "%1->" - Sabrać grupy „%1->“ pavodle kryničnaje movy - - - - Combine groups by target language to "->%1" - Sabrać grupy „->%1“ pavodle metavaje movy - - - - Make two-side translate group "%1-%2-%1" - Sabrać grupu dvuchbakovaha pierakładu „%1-%2-%1“ - - - - - Combine groups with "%1" - Sabrać grupy z „%1“ - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Tekstavyja fajły (*.txt);;Usie fajły (*.*) - - - - Export headwords... - - - - - Cancel - Skasavać - - - - DictInfo - - - Total articles: - Usiaho artykułaŭ: - - - - Translates from: - Kryničnaja mova: - - - - Total words: - Usiaho słovaŭ: - - - - Translates to: - Metavaja mova: - - - - Open folder - Adčynić katalog - - - - Edit dictionary - Redagavać słoŭnik - - - - Files comprising this dictionary: - Fajły, jakija składajuć słoŭnik: - - - - Description: - Apisańnie: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Zredagavać słoŭnik praz zahad: %1 - - - - DictListModel - - - %1 entries - %1 artykułaŭ - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - - - - - Name - Nazva - - - - Address - Adras - - - - Databases - - - - - Strategies - - - - - Icon - Značak - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - - &Dictionary Bar - &Słoŭnikavaja palica - - - - Extended menu with all dictionaries... - Pašyranaje meniu z usimi słoŭnikami... - - - - Edit this group - Redagavać hetuju grupu - - - - Dictionary info - Infarmacyja pra słoŭnik - - - - Dictionary headwords - - - - - Open dictionary folder - Adčynić słoŭnikavy katalog - - - - Edit dictionary - Redagavać słoŭnik - - - - EditDictionaries - - - Dictionaries - Słoŭniki - - - - &Sources - &Krynicy - - - - - &Dictionaries - &Słoŭniki - - - - - &Groups - G&rupy - - - - Sources changed - Krynicy źmianilisia - - - - Some sources were changed. Would you like to accept the changes? - Kolki krynic źmianiłasia. Ci ŭžyć źmieny? - - - - Accept - Užyć - - - - Cancel - Skasavać - - - - ExternalViewer - - - the viewer program name is empty - nazva pragramy prahladalnika parožniaja - - - - FTS::FtsIndexing - - None - Niama - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Niama - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Niama - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Pamyłka razboru fajła XML: %1 — radok %2, słupok %3 - - - - Added %1 - Dadana %1 - - - - by - - - - - Male - Mužčyna - - - - Female - Žančyna - - - - from - z - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Prajdzi ŭ Źmieny|Słoŭniki|Krynicy|Forvo i atrymaj svoj ułasny API-kluč, kab prybrać hetuju pamyłku. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Skasavać - - - - Help - - - - - GermanTranslit - - - German Transliteration - Niamieckaja traśliteracyja - - - - GreekTranslit - - - Greek Transliteration - Hreckaja tranśliteracyja - - - - GroupComboBox - - - Choose a Group (Alt+G) - Abiary grupu (Alt+G) - - - - GroupSelectorWidget - - - Form - Chorma - - - - Look in - Šukać u - - - - Groups - - - Dictionaries available: - Dastupnyja słoŭniki: - - - - Add selected dictionaries to group (Ins) - Dadać vybranyja słoŭniki ŭ grupu (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Vyniać vybranyja słoŭniki z grupy (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Grupy: - - - - Tab 2 - Układka - - - - Create new dictionary group - Stvaryć novuju słoŭnikavuju grupu - - - - &Add group - &Dadać grupu - - - - Create language-based groups - Stvaryć grupy na padstavie movy - - - - Auto groups - Zgrupavać aŭtamatyčna - - - - Rename current dictionary group - Pieranazvać grupu - - - - Re&name group - Piera&nazvać grupu - - - - Remove current dictionary group - Vydalić grupu - - - - &Remove group - &Vydalić grupu - - - - Remove all dictionary groups - Vydalić usie słoŭnikavyja grupy - - - - - Remove all groups - Vydalić usie grupy - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Pieraciahvaj słoŭniki ŭ/z grupy. Raźmiarkoŭvaj ich u grupie z dapamohaju myšy. - - - - Group tabs - - - - - Open groups list - - - - - Add group - Dadać grupu - - - - Give a name for the new group: - Zadaj nazvu novaj grupy: - - - - Rename group - Pieranazvańnie grupy - - - - Give a new name for the group: - Zadaj novuju nazvu grupy: - - - - Remove group - Vydaleńnie grupy - - - - Are you sure you want to remove the group <b>%1</b>? - Sapraŭdy žadaješ vydalić grupu <b>%1</b>? - - - - Are you sure you want to remove all the groups? - Sapraŭdy žadaješ vydalić usie grupy? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Nazad - - - - Forward - Napierad - - - - Zoom In - Pavialičyć - - - - Zoom Out - Pamienšyć - - - - Normal Size - Zvyčajny pamier - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Vydalić vybranaje - - - - Copy Selected - Skapijavać vybranaje - - - - History: - Historyja: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Pamier historyi: %1 zapisaŭ z %2 mahčymych - - - - Hunspell - - - Spelling suggestions: - Artagrafičnyja padkazki: - - - - %1 Morphology - Marfalogija %1 - - - - HunspellDictsModel - - - Enabled - Ułučana - - - - Name - Nazva - - - - Initializing - - - GoldenDict - Initializing - Inicyjalizacyja - - - - - Please wait while indexing dictionary - Čakaj! Idzie indeksavańnie słoŭnikaŭ - - - - Dictionary Name - Nazva słoŭnika - - - - Please wait... - Zaraz... - - - - Language - - - Afar - Afar - - - - Abkhazian - Abchaskaja - - - - Avestan - Avestyjskaja - - - - Afrikaans - Afrykaans - - - - Akan - Akan - - - - Amharic - Amharskaja - - - - Aragonese - Aragonskaja - - - - Arabic - Arabskaja - - - - Assamese - Asamskaja - - - - Avaric - Avarskaja - - - - Aymara - Ajmara - - - - Azerbaijani - Azejbardžanskaja - - - - Bashkir - Baškirskaja - - - - Belarusian - Biełaruskaja - - - - Bulgarian - Baŭharskaja - - - - Bihari - Bichary - - - - Bislama - Bisłama - - - - Bambara - Bambara - - - - Bengali - Bengalskaja - - - - Tibetan - Tybeckaja - - - - Breton - Bretonskaja - - - - Bosnian - Baśnijskaja - - - - Catalan - Katalanskaja - - - - Chechen - Čačenskaja - - - - Chamorro - Čamorro - - - - Corsican - Karsykanskaja - - - - Cree - Kry - - - - Czech - Českaja - - - - Church Slavic - Carkoŭnasłavianskaja - - - - Chuvash - Čuvaskaja - - - - Welsh - Valijskaja - - - - Danish - Dackaja - - - - German - Niamieckaja - - - - Divehi - Dyviechi - - - - Dzongkha - Dzongcha - - - - Ewe - Eve - - - - Greek - Hreckaja - - - - English - Angielskaja - - - - Esperanto - Esperanta - - - - Spanish - Hišpanskaja - - - - Estonian - Estonskaja - - - - Basque - Baskonskaja - - - - Persian - Persydzkaja - - - - Fulah - Fuła - - - - Finnish - Finskaja - - - - Fijian - Fidžyjskaja - - - - Faroese - Farerskaja - - - - French - Francuskaja - - - - Western Frisian - Zachodniefryzyjskaja - - - - Irish - Irlandzkaja - - - - Scottish Gaelic - Šatlandzka-gelskaja - - - - Galician - Galisijskaja - - - - Guarani - Guarani - - - - Gujarati - Gudžaraci - - - - Manx - Menskaja - - - - Hausa - Chausa - - - - Hebrew - Iŭryt - - - - Hindi - Hindzi - - - - Hiri Motu - Hiry-motu - - - - Croatian - Charvackaja - - - - Haitian - Haicianskaja - - - - Hungarian - Vuhorskaja - - - - Armenian - Armianskaja - - - - Herero - Hiererskaja - - - - Interlingua - Interlinhva - - - - Indonesian - Indanezijskaja - - - - Interlingue - Akcydental - - - - Igbo - Igbo - - - - Sichuan Yi - Nosu - - - - Inupiaq - Inupiak - - - - Ido - Ida - - - - Icelandic - Iślandzkaja - - - - Italian - Italjanskaja - - - - Inuktitut - Inuktytut - - - - Japanese - Japonskaja - - - - Javanese - Javanskaja - - - - Georgian - Hruzinskaja - - - - Kongo - Konha - - - - Kikuyu - Kikuju - - - - Kwanyama - Kvańjama - - - - Kazakh - Kazaskaja - - - - Kalaallisut - Grenlandzkaja - - - - Khmer - Kchmerskaja - - - - Kannada - Kanada - - - - Korean - Karejskaja - - - - Kanuri - Kanury - - - - Kashmiri - Kašmirskaja - - - - Kurdish - Kurdzkaja - - - - Komi - Komi - - - - Cornish - Kornskaja - - - - Kirghiz - Kyrhyskaja - - - - Latin - Łacina - - - - Luxembourgish - Luksemburskaja - - - - Ganda - Ługanda - - - - Limburgish - Limburskaja - - - - Lingala - Lingała - - - - Lao - Łaoskaja - - - - Lithuanian - Letuviskaja - - - - Luba-Katanga - Łuba-katanga - - - - Latvian - Łatyskaja - - - - Malagasy - Małagaskaja - - - - Marshallese - Maršalskaja - - - - Maori - Maary - - - - Macedonian - Makiedonskaja - - - - Malayalam - Małajałam - - - - Mongolian - Mangolskaja - - - - Marathi - Maratchi - - - - Malay - Małajskaja - - - - Maltese - Maltyjskaja - - - - Burmese - Birmanskaja - - - - Nauru - Nauru - - - - Norwegian Bokmal - Bukmał - - - - North Ndebele - Paŭnočny Ndebele - - - - Nepali - Nepalskaja - - - - Ndonga - Ndonga - - - - Dutch - Niderlandzkaja - - - - Norwegian Nynorsk - Novanarveskaja - - - - Norwegian - Narveskaja - - - - South Ndebele - Paŭdniovy Ndebele - - - - Navajo - Navacha - - - - Chichewa - Ńjandža - - - - Occitan - Aksytanskaja - - - - Ojibwa - Odžybve - - - - Oromo - Aroma - - - - Oriya - Oryja - - - - Ossetian - Asetynskaja - - - - Panjabi - Pandžabi - - - - Pali - Pali - - - - Polish - Polskaja - - - - Pashto - Puštu - - - - Portuguese - Partugalskaja - - - - Quechua - Kiečua - - - - Raeto-Romance - Retaramanskaja - - - - Kirundi - Kirundzi - - - - Romanian - Rumynskaja - - - - Russian - Rasiejskaja - - - - Kinyarwanda - Ruanda - - - - Sanskrit - Sanskryt - - - - Sardinian - Sardynskaja - - - - Sindhi - Sindchi - - - - Northern Sami - Paŭnočnasaamskaja - - - - Sango - Sango - - - - Serbo-Croatian - Serbskacharvackaja - - - - Sinhala - Synhalskaja - - - - Slovak - Słavackaja - - - - Slovenian - Słavienskaja - - - - Samoan - Samaanskaja - - - - Shona - Šona - - - - Somali - Samalijskaja - - - - Albanian - Albanskaja - - - - Serbian - Serbskaja - - - - Swati - Svaci - - - - Southern Sotho - Sesota - - - - Sundanese - Sundanskaja - - - - Swedish - Švedzkaja - - - - Swahili - Suachili - - - - Tamil - Tamilskaja - - - - Telugu - Teługu - - - - Tajik - Tadžyckaja - - - - Thai - Tajskaja - - - - Tigrinya - Tygryńja - - - - Turkmen - Turkmenskaja - - - - Tagalog - Tagalskaja - - - - Tswana - Tsvana - - - - Tonga - Tanganskaja - - - - Turkish - Tureckaja - - - - Tsonga - Tsonga - - - - Tatar - Tatarskaja - - - - Twi - Akan - - - - Tahitian - Taicianskaja - - - - Uighur - Ujhurskaja - - - - Ukrainian - Ukrainskaja - - - - Urdu - Urdu - - - - Uzbek - Uzbeckaja - - - - Venda - Vendzkaja - - - - Vietnamese - Vijetnamskaja - - - - Volapuk - Vałapiuk - - - - Walloon - Valonskaja - - - - Wolof - Vałof - - - - Xhosa - Kosa - - - - Yiddish - Idyš - - - - Yoruba - Joruba - - - - Zhuang - Čžuanskaja - - - - Chinese - Kitajskaja - - - - Zulu - Zułu - - - - Lojban - Łožban - - - - Traditional Chinese - Tradycyjnaja kitajskaja - - - - Simplified Chinese - Sproščanaja kitajskaja - - - - Other - Inšaja - - - - Other Simplified Chinese dialects - Inšyja dyjalekty sproščanaj kitajskaj - - - - Other Traditional Chinese dialects - Inšyja dyjalekty tradycyjnaj kitajskaj - - - - Other Eastern-European languages - Inšyja ŭschodnieeŭrapiejskija movy - - - - Other Western-European languages - Inšyja zachodnieeŭrapiejskija movy - - - - Other Russian languages - Inšyja rasiejskija movy - - - - Other Japanese languages - Inšyja japonskija movy - - - - Other Baltic languages - Inšyja bałckija movy - - - - Other Greek languages - Inšyja hreckija movy - - - - Other Korean dialects - Inšyja karejskija dyjalekty - - - - Other Turkish dialects - Inšyja tureckija dyjalekty - - - - Other Thai dialects - Inšyja tajskija dyjalekty - - - - Tamazight - Berberskaja - - - - LoadDictionaries - - - Error loading dictionaries - Pamyłka pry ładavańni słoŭnikaŭ - - - - Main - - - Error in configuration file. Continue with default settings? - Abmyłka ŭ fajle kanfiguracyi. Praciahnuć z standartnymi naładami? - - - - MainWindow - - - - Welcome! - Vitajem! - - - - &File - &Fajł - - - - &Edit - Ź&mieny - - - - &Help - &Dapamoha - - - - &View - &Vyhlad - - - - &Zoom - &Sumier - - - - H&istory - &Historyja - - - - Search - - - - - &Search Pane - Panel &šukańnia - - - - &Results Navigation Pane - Panel &navigacyi ŭ vynikach - - - - &History Pane - Panel &historyi - - - - &Dictionaries... - &Słoŭniki... - - - - F3 - F3 - - - - &Preferences... - &Nałady... - - - - F4 - F4 - - - - &Homepage - &Chatniaja bačyna - - - - &About - &Infarmacyja - - - - About GoldenDict - Infarmacyja pra GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Vyjści - - - - Quit from application - Vyjści z pragramy - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forum - - - - &Close To Tray - Źvinuć u &łotak - - - - Minimizes the window to tray - Źvinuć akno ŭ łotak - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Zachavać artykuł - - - - Save Article - Zachavać artykuł - - - - F2 - F2 - - - - &Print - Na&drukavać - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Nałady &bačyny - - - - Print Pre&view - Pieradpr&ahlad druku - - - - &Rescan Files - Piera&skanavać fajły - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Ačyścić - - - - &New Tab - &Novaja ŭkładka - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Tečka &kanfiguracyi - - - - - &Show - &Pakazać - - - - Ctrl+H - Ctrl+H - - - - &Export - Z&ekspartavać - - - - &Import - Z&ympartavać - - - - &Always on Top - Zaŭsiody na &viersie - - - - Always on Top - Zaŭsiody na viersie - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Knopka meniu - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - - Show Names in Dictionary &Bar - Pakazvać &nazvy ŭ słoŭnikavaj palicy - - - - Show Small Icons in &Toolbars - Pakazvać małyja znački ŭ palicy &pryładaŭ - - - - &Menubar - Palica &meniu - - - - &Navigation - &Navigacyja - - - - Back - Nazad - - - - Forward - Napierad - - - - Scan Popup - Ułučyć pracu ŭ vonkavych pragramach - - - - Pronounce Word (Alt+S) - Vymavić słova (Alt+S) - - - - Zoom In - Pavialičyć - - - - Zoom Out - Pamienšyć - - - - Normal Size - Zvyčajny pamier - - - - - Look up in: - Šukać u: - - - - Found in Dictionaries: - Znojdziena ŭ nastupnych słoŭnikach: - - - - Words Zoom In - Pavialičyć radok šukańnia - - - - Words Zoom Out - Pamienšyć radok šukańnia - - - - Words Normal Size - Zvyčajny pamier radka šukańnia - - - - Show &Main Window - Pakazać &hałoŭnaje akno - - - - Opened tabs - Adčynienyja ŭkładki - - - - Close current tab - Začynić dziejnuju ŭkładku - - - - Close all tabs - Začynić usie ŭkładki - - - - Close all tabs except current - Začynić usie ŭkładki aproč dziejnaj - - - - Loading... - Ładavańnie... - - - - New Tab - Novaja ŭkładka - - - - %1 dictionaries, %2 articles, %3 words - %1 słoŭnikaŭ, %2 artykułaŭ, %3 słovaŭ - - - - Look up: - Šukać: - - - - All - Usie - - - - Open Tabs List - Adčynić śpis układak - - - - (untitled) - (biaz nazvy) - - - - %1 - %2 - %1 - %2 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Pamyłka inicyjalizacyi cikavańnia klavišnych skarotaŭ.<br>Pierakanajsia, što XServer maje ŭłučanaje pašyreńnie RECORD. - - - - New Release Available - Dastuny novy vypusk - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - GoldenDict versii <b>%1</b> dastupny dla załadavańnia.<br>Pstrykni pa <b>Zładavać</b>, kab pierajści na bačynu ściahvańnia. - - - - Download - Zładavać - - - - Skip This Release - Praminuć hety vypusk - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - Accessibility API nia ŭłučany - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - You have chosen to hide a menubar. Use %1 to show it back. - Palica meniu jość schavanaja. Skarystaj %1, kab pavaracić nazad. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Nałady bačyny - - - - No printer is available. Please install one first. - Niama dasiažnych drukarak. Spačatku ŭstaluj choć adnu. - - - - Print Article - Nadrukavać artykuł - - - - Article, Complete (*.html) - Artykuł całkom (*.html) - - - - Article, HTML Only (*.html) - Artykuł, tolki HTML (*.html) - - - - Save Article As - Zachavać artykuł jak - - - - Error - Pamyłka - - - - Can't save article: %1 - Niamožna zachavać artykuł: %1 - - - - Saving article... - Zachoŭvańnie artykuła... - - - - The main window is set to be always on top. - Hałoŭnaje akno ciapier zaŭsiody znachodzicca vyšej inšych. - - - - &Hide - S&chavać - - - - Export history to file - Ekspartavańnie historyi ŭ fajł - - - - - Text files (*.txt);;All files (*.*) - Tekstavyja fajły (*.txt);;Usie fajły (*.*) - - - - History export complete - Ekspartavańnie historyi končyłasia - - - - Export error: - Pamyłka ekspartu: - - - - Import history from file - Impartavańnie historyi z fajła - - - - Import error: invalid data in file - Pamyłka impartavańnia: chibnyja źviestki ŭ fajle - - - - History import complete - Impartavańnie historyi končyłasia - - - - Import error: - Pamyłka impartavańnia: - - - - Dictionary info - Infarmacyja pra słoŭnik - - - - Dictionary headwords - - - - - Open dictionary folder - Adčynić słoŭnikavy katalog - - - - Edit dictionary - Redagavać słoŭnik - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Słoŭnikavy fajł skažony ci paškodžany - - - - Failed loading article from %1, reason: %2 - Abmyłka ładavańnia artykuła z %1, z pryčyny: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Pamyłka razboru fajła XML: %1 — radok %2, słupok %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Pamyłka razboru fajła XML: %1 — radok %2, słupok %3 - - - - MediaWikisModel - - - Enabled - Ułučany - - - - Name - Nazva - - - - Address - Adras - - - - Icon - Značak - - - - OrderAndProps - - - Form - Chorma - - - - Dictionary order: - Paradak słoŭnikaŭ: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Nieŭžyvanyja (vyłučanyja) słoŭniki: - - - - Dictionary information - Infarmacyja pra słoŭnik - - - - Name: - Nazva: - - - - Total articles: - Usiaho artykułaŭ: - - - - Total words: - Usiaho słovaŭ: - - - - Translates from: - Kryničnaja mova: - - - - Translates to: - Metavaja mova: - - - - Description: - Apisańnie: - - - - Files comprising this dictionary: - Fajły, jakija składajuć słoŭnik: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Uparadkuj słoŭniki, raźmierkavaŭšy ich myššu. Kab nie ŭžyvać słoŭnika, pieraciahni jaho ŭ grupu vyłučanych słoŭnikaŭ. - - - - Sort by name - Sartavać pavodle nazvy - - - - Sort by languages - Sartavać pavodle movy - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Šlach - - - - Recursive - Rekursiŭna - - - - Preferences - - - Preferences - Nałady - - - - &Interface - &Interfejs - - - - Tabbed browsing - Kiravańnie ŭkładkami - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Zvyčajna, adčynienaja ŭkładka adrazu stanovicca dziejnaj. -Pa ŭłučeńni hetaje opcyi, novyja ŭkładki buduć adčyniacca -bieź pierachodu ŭ stan dziejnaj. - - - - Open new tabs in background - Adčyniać novyja ŭkładki ŭ fonie - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Pa ŭłučeńni hetaje opcyi, novyja ŭkładki buduć -adčyniacca adrazu za dziejnaj, a nie ŭ kancy. - - - - Open new tabs after the current one - Adčyniać układki za dziejnaj - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Ułučy hetuju opcyju, kali nie žadaješ bačyć palicy ŭkładak, -kali tolki adna ŭkładka jość adčynienaja. - - - - Hide single tab - Chavać adzinuju ŭkładku - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab pierałučaje ŭkładki ŭ skarystanym paradku - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Kali ŭłučana, u systemnym łotku źjavicca značak, jaki možna -karystać dla vyklikańnia hałoŭnaha akna dy inšych dziejańniaŭ. - - - - Enable system tray icon - Ułučyć značak u systemnym łotku - - - - With this on, the application starts directly to system tray without showing -its main window. - Z hetaj opcyjaj pragrama budzie startavać prost u systemnym łotku z schavanym hałoŭnym aknom. - - - - Start to system tray - Startavać u systemnym łotku - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Z hetaj opcyjaj začynieńnie hałoŭnaha akna -budzie źvinać jaho ŭ systemny łotak. - - - - Close to system tray - Źvinać u systemny łotak - - - - Turn this option on if you want to select words by single mouse click - Ułučy hetuju opcyju, kali chočaš vybirać słovy adnym pstrykam - - - - Select word by single click - Vybirać słovy adnym pstrykam - - - - Startup - Startavańnie - - - - Automatically starts GoldenDict after operation system bootup. - Aŭtamatyčna startavać GoldenDict pa załadavańni systemy. - - - - Start with system - Startavać razam z systemaju - - - - Interface language: - Mova interfejsu: - - - - Display style: - Styl artykułaŭ: - - - - Double-click translates the word clicked - Pierakładać vybranaje słova padvojnym pstrykam - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Zvyčajna, naciskańnie klaviša ESC pieramiaščaje fokus u radok uvodu. -Razam z hetaj opcyjaj, nacisk klaviša budzie chavać hałoŭnaje akno. - - - - ESC key hides main window - Klaviš ESC chavaje hałoŭnaje akno - - - - Add-on style: - Dadatkovy styl: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Nastaŭ hetaje značeńnie, kab unikać vialikich meniušak. - - - - Context menu dictionaries limit: - Hranica kolkaści słoŭnikaŭ u vypadnym meniu: - - - - &Scan Popup - &Karystańnie zvonku - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Kali ŭłučana, vypłyŭnoje akno budzie pakazvacca kožny raz, kali -pieramiaścić kursor myšy na słova na ekranie (Windows) ci vybrać -jaho (Linux). Kali ŭłučana, možna adłučyć ci ŭłučyć pracu vypłyŭnoha -akna ŭ hałoŭnym aknie ci ŭ systemnym łotku. - - - - Enable scan popup functionality - Ułučyć mechanizm vypłyŭnych voknaŭ - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Vyznačaje ci ŭłučać vonkavyja vypłyŭnyja vokny pry startavańni pragramy. - - - - Start with scan popup turned on - Startavać razam z ułučanymi vypłyŭnymi voknami - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Pakazvać vypłyŭnoje akno tolki tady, kali karystalnik zaciśnie ŭsie paznačanyja klavišy. - - - - Only show popup when all selected keys are kept pressed: - Pakazvać vypłyŭnoje akno tolki pry nastupnych zacisnutych klavišach: - - - - Left Ctrl only - Tolki levy Ctrl - - - - Left Ctrl - Levy Ctrl - - - - Right Shift only - Tolki pravy Shift - - - - Right Shift - Pravy Shift - - - - Alt key - Klaviš Alt - - - - Alt - Alt - - - - Ctrl key - Klaviš Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Tolki levy Alt - - - - Left Alt - Levy Alt - - - - Shift key - Klaviš Shift - - - - Shift - Shift - - - - Right Alt only - Tolki pravy Alt - - - - Right Alt - Pravy Alt - - - - Right Ctrl only - Tolki pravy Ctrl - - - - Right Ctrl - Pravy Ctrl - - - - Left Shift only - Tolki levy Shift - - - - Left Shift - Levy Shift - - - - Windows key or Meta key - Windows-klaviš ci Meta-klaviš - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Zvyčajna, kab vyklikać vypłyŭnoje akno, treba trymać -nacisnutymi adpaviednyja klavišy ŭ čas vybirańnia słova. -Razam z hetaj opcyjaj, klavišy mohuć być nacisnutymi -i praz peŭny čas. - - - - Keys may also be pressed afterwards, within - Klavišy možna nacisnuć i praz - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Kab unikać pamyłkovych vyklikaŭ, GoldenDict cikuje za klavišami -abmiežavanuju kolkaść sekundaŭ, jakaja j zadajecca tut. - - - - secs - s - - - - Send translated word to main window instead of to show it in popup window - Słać pierakładanaje słova ŭ hałoŭnaje akno zamiest vyklikańnia vypłyŭnoha - - - - Send translated word to main window - Słać pierakładanaje słova ŭ hałoŭnaje akno - - - - Hotkeys - Klavišnyja skaroty - - - - Use the following hotkey to show or hide the main window: - Vykarystoŭvać nastupny skarot dla vyklikańnia hałoŭnaha akna: - - - - Use the following hotkey to translate a word from clipboard: - Vykarystoŭvać nastupny skarot dla pierakładu słova z kišeni: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Klavišnyja skaroty jość glabalnymi i dziejničajuć u kožnaj pragramie ŭ kožnym kantekście, pakul pracuje GoldenDict. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Zaŭvaha: Padobna na toje, što dziejny vypusk X.Org XServer maje niepracazdolnaje pašyreńnie RECORD. Klavišnyja skaroty GoldenDict mahčyma rabić nia budutь. Heta treba vypraŭlać na baku serveru. Padrabiaznaja infarmacyja </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">tut</span></a><span style=" color:#ff0000;">. Pry žadańni tam možna pakinuć svoj kamentar.</span></p></body></html> - - - - &Audio - &Aŭdyjo - - - - Pronunciation - Vymaŭleńnie - - - - Auto-pronounce words in main window - Aŭtamatyčna vymaŭlać słovy ŭ hałoŭnym aknie - - - - Auto-pronounce words in scan popup - Aŭtamatyčna vymaŭlać słovy ŭ vypłyŭnym aknie - - - - Playback - Prajhravańnie - - - - Play audio files via FFmpeg(libav) and libao - Prajhravać huki praz FFmpeg(libav) i libao - - - - Use internal player - Karystać ubudavany prajhravalnik - - - - Use any external program to play audio files - Skarystać vonkavuju pragramu dla prajhravańnia aŭdyjo fajłaŭ - - - - Use external program: - Prajhravać praz vonkavuju pragramu: - - - - &Network - &Sietka - - - - Enable if you wish to use a proxy server -for all program's network requests. - Ułučyć, kab vykarystoŭvać proksi server -dla ŭsich sietkavych zapytaŭ pragramy. - - - - Use proxy server - Skarystać proksi-server - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Type: - Typ: - - - - Host: - Host: - - - - Port: - Port: - - - - User: - Karystalnik: - - - - Password: - Parol: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Dazvolić GoldenDict blakavać bolšaść reklamy praz zabaronu -peŭnaha źmieściva (vyjavaŭ, ramak), jakoje nie naležyć ułasna sajtam. -Kali niejkija sajty złamajucca, pasprabuj adłučyć hetuju opcyju. - - - - Disallow loading content from other sites (hides most advertisements) - Abmiežavać załadoŭvanaje źmieściva ź inšych sajtaŭ (chavaje bolšaść reklamy) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Dazvolić prasłuchoŭvać vymaŭleńnie z vonkavych -sajtaŭ, jakija patrabujuć Flash ci inšyja sieciŭnyja ŭbudovy. -Ubudovy musiać być ustalavanymi. - - - - Enable web plugins - Ułučyć sieciŭnyja ŭbudovy - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Niekatoryja sajty paznajuć GoldenDict praz HTTP-zahałoŭki -i blakujuć zapyty. Ułučy opcyju, kab abminuć prablemu. - - - - Do not identify GoldenDict in HTTP headers - Nie paznačać GoldenDict u HTTP-zapytach - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Kali opcyja ŭłučanaja, pragrama budzie praviarać -najaŭnaść abnaŭleńniaŭ GoldenDict. Kali najaŭnaść -paćvierdzicca, pragrama nahadaje pra heta -j prapanuje naviedać bačynu zładavańnia. - - - - Check for new program releases periodically - Praviarać najaŭnaść novych vypuskaŭ pragramy - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Ad&vanced - &Dadatkova - - - - ScanPopup extra technologies - Dadatkovyja mechanizmy skanavańnia słovaŭ dla vypłyŭnych voknaŭ - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Skarystaj technalogiju IAccessibleEx, kab vyznačać słovy pad kursoram. -Jana pracuje tolki z tymi pragramami, jakija padtrymlivajuć jaje (prykładam, -Internet Explorer 9). -Nia treba ŭłučać hetaje opcyi, kali nie karystaješsia takimi pragramami. - - - - Use &IAccessibleEx - Skarystać &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Skarystaj technalogiju UI Automation, kab vyznačać słovy pad kursoram. -Jana pracuje tolki z tymi pragramami, jakija padtrymlivajuć jaje. -Nia treba ŭłučać hetaje opcyi, kali nie karystaješsia takimi pragramami. - - - - Use &UIAutomation - Skarystać &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Skarystaj admysłovyja zapyty GoldenDict, kab vyznačać słovy pad kursoram. -Jany pracujuć tolki z tymi pragramami, jakija ich padtrymlivajuć. -Nia treba ŭłučać hetaje opcyi, kali nie karystaješsia takimi pragramami. - - - - Use &GoldenDict message - Skarystać zapyty &GoldenDict - - - - History - Historyja - - - - Turn this option on to store history of the translated words - Ułučy hetuju opcyju, kab zachoŭvać historyju pierakładanych słovaŭ - - - - Store &history - Zachoŭvać &historyju - - - - Specify the maximum number of entries to keep in history. - Paznačaje maksymalnuju kolkaść zapisaŭ u historyi. - - - - Maximum history size: - Pamier historyi: - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervał zachavańnia historyi. Kali 0, historyja budzie zachoŭvacca tolki pierad vychadam. - - - - Save every - Zachoŭvać praz - - - - minutes - chv - - - - Articles - Artykuły - - - - Turn this option on to always expand optional parts of articles - Ułučy hetuju opcyju, kab zaŭsiody razhortvać dadatkovyja raździeły artykułaŭ - - - - Expand optional &parts - Razhortvać dadatkovyja &raździeły - - - - Select this option to automatic collapse big articles - Ułučy opcyju, kab aŭtamatyčna zhartać vialikija artykuły - - - - Collapse articles more than - Zhartać artykuły, jakija majuć bolš za - - - - Articles longer than this size will be collapsed - Artykuły bolšyja za heta značeńnie buduć zhartacca - - - - symbols - znakaŭ - - - - System default - Systemnaja - - - - - Default - Standartny - - - - Modern - Sučasny - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - - Changing Language - Źmiena movy - - - - Restart the program to apply the language change. - Pierastartuj pragramu, kab užyć novuju movu. - - - - ProgramTypeEditor - - - Audio - Aŭdyjo - - - - Plain Text - Zvyčajny tekst - - - - Html - Html - - - - Prefix Match - Pavodle prefiksu - - - - Unknown - Niaviedama - - - - Programs::RunInstance - - - No program name was given. - Nazvy pragramy nie paznačyli. - - - - The program has crashed. - Pragrama niečakana skasavałasia. - - - - The program has returned exit code %1. - Pragrama viarnuła vychodny kod %1. - - - - ProgramsModel - - - Enabled - Ułučana - - - - Type - Typ - - - - Name - Nazva - - - - Command Line - Zahadny radok - - - - Icon - Značak - - - - QObject - - - - Article loading error - Pamyłka ładavańnia artykuła - - - - - Article decoding error - Pamyłka raskadoŭvańnia artykuła - - - - avformat_alloc_context() failed. - Pamyłka avformat_alloc_context(). - - - - av_malloc() failed. - Pamyłka av_malloc(). - - - - avio_alloc_context() failed. - Pamyłka avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Pamyłka avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - Pamyłka avformat_find_stream_info(): %1. - - - - Could not find audio stream. - Nia vyjšła znajści aŭdyjopłyni. - - - - Codec [id: %1] not found. - GoldenDict nie znajšoŭ kodeka [id: %1]. - - - - avcodec_open2() failed: %1. - Pamyłka avcodec_open2(): %1. - - - - Cannot find usable audio output device. - Nia vyjšła znajści pryłady vyvadu huku. - - - - Unsupported sample format. - Niepadtrymlivany hukavy farmat. - - - - ao_open_live() failed: - Pamyłka ao_open_live(): - - - - No driver. - Niama drajvera. - - - - This driver is not a live output device. - Hety drajver nia jość praładaj vyvadu. - - - - A valid option key has an invalid value. - Sapraŭdny kluč parametraŭ maje niesapraŭdnaje značeńnie. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Niamožna adčynić: pryłada: %1, kanałaŭ: %2, čaścinia dyskretyzacyi: %3, bitpłyń: %4. - - - - Unknown error. - Niaviedamaja pamyłka. - - - - avcodec_alloc_frame() failed. - Pamyłka avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Filtravać słoŭniki pavodle nazvy (Ctrl+F) - - - - Quick Search - Chutki pošuk - - - - Clear Search - Ačyścić - - - - ResourceToSaveHandler - - - - ERROR: %1 - ABMYŁA: %1 - - - - Resource saving error: - Pamyłka zachavańnia resursu: - - - - The referenced resource failed to download. - Nia vyjšła zładavać paznačanaha resursu. - - - - Romaji - - - Hepburn Romaji for Hiragana - Systema łacinizacyi Hepbiorna dla Chiragany - - - - Hepburn Romaji for Katakana - Systema łacinizacyi Hepbiorna dla Katakany - - - - RussianTranslit - - - Russian Transliteration - Rasiejskaja traśliteracyja - - - - ScanPopup - - - Dialog - Dyjalog - - - - Back - Nazad - - - - - - - - ... - ... - - - - Forward - Napierad - - - - Pronounce Word (Alt+S) - Vymavić słova (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Dasłać słova u hałoŭnaje akno (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Pakazać abo schavać słoŭnikavuju palicu - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Skarystaj špilku, kab zamacavać akno na ekranie, źmianiać -jahony pamier, dy kiravać im kožnym zručnym sposabam. - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Šlach - - - - Name - Nazva - - - - Icon - Značak - - - - Sources - - - Files - Fajły - - - - Paths to search for the dictionary files: - Šlachi šukańnia słoŭnikavych fajłaŭ: - - - - - - - - - &Add... - &Dadać... - - - - - - - - - &Remove - &Prybrać - - - - Re&scan now - Piera&skanavać - - - - Sound Dirs - Katalogi hukavych fajłaŭ - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Zrabić słoŭniki adpaviedna dadanym šlacham: - - - - Morphology - Marfalogija - - - - Path to a directory with Hunspell/Myspell dictionaries: - Šlach da słoŭnikaŭ Hunspell/Myspell: - - - - &Change... - Ź&mianić... - - - - Available morphology dictionaries: - Dastupnyja marfalagičnyja słoŭniki: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Kožny marfalagičny słoŭnik — heta -asobny dapamožny słoŭnik, jaki -zabieśpiačaje padstavovyja formy -słovaŭ dla šukańnia, i prapanoŭvaje -padobnyja pravilnyja vyrazy dla -pamyłkova napisanych. Dadavaj -słoŭniki ŭ kaniec adpaviednych grup. - - - - Wikipedia - Vikipedyja - - - - Wikipedia (MediaWiki) sites: - Sajty Vikipedyi (MediaWiki): - - - - Websites - Sajty - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Roznyja sajty. %GDWORD% zamienicca na zapytanaje słova: - - - - Programs - Pragramy - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Žyvoje vymaŭleńnie z <a href="http://www.forvo.com/">forvo.com</a>. Hety sajt dazvalaje ludziam zapisvać i dzialicca vymaŭleńniem słovaŭ. Ich možna prasłuchać pry dapamozie GoldenDict. - - - - Enable pronunciations from Forvo - Ułučyć vymaŭleńnie z Forvo - - - - API Key: - Kluč API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Karystańnie sajtam Forvo patrabuje kluč API. Pakiń pole pustym, kab karystacca standartnym klučom, jaki paźniej moža stać niedastupnym, ci zaregistrujsia na sajcie i atrymaj ułasny kluč. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Atrymaj svoj ułasny kluč <a href="http://api.forvo.com/key/">tut</a>, ci pakiń pole pustym dla standartnaha značeńnia. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Taksama karystaj %GD1251% dla CP1251, %GDISO1%...%GDISO16% dla ISO 8859-1...ISO 8859-16, %GDBIG5% -dla Big-5, %GDBIG5HKSCS% dla Big5-HKSCS, %GDGBK% dla GBK i GB18030, %GDSHIFTJIS% dla Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Roznyja vonkavyja pragramy. %GDWORD% zamienicca na zapytanaje słova. Kali takoha słova niama, to jaho nakirujuć u standartny ŭvod. - - - - Language codes (comma-separated): - Moŭnyja kody (praz kosku): - - - - List of language codes you would like to have. Example: "en, ru". - Pieralik vybranych moŭnyk kodaŭ. Prykładam: „en, uk, pl“. - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Poŭny śpis dastupnych moŭnych kodaŭ <a href="http://www.forvo.com/languages-codes/">tut</a>. - - - - Transliteration - Tranśliteracyja - - - - Russian transliteration - Rasiejskaja tranśliteracyja - - - - Greek transliteration - Hreckaja tranśliteracyja - - - - German transliteration - Niamieckaja tranśliteracyja - - - - Belarusian transliteration - Biełaruskaja tranśliteracyja - - - - Enables to use the Latin alphabet to write the Japanese language - Ułučaje łacinski alfabet dla japonskaje movy - - - - Japanese Romaji - Japonski ramadzi - - - - Systems: - Systemy: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Najbolš užyvany metad transkrypcyi japonskaje movy -na padstavie angielskaje fanalogii - - - - Hepburn - Hepbiorn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Heta systema najbolš dakładna adlustroŭvaje znaki kany. -Standartyzavanaja ŭ ISO 3602. - -U GoldenDict jašče nie padtrymlivajecca. - - - - Nihon-shiki - Nichon-siki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Stvoranaja na padstavie systemy Nichon-siki i adaptavanaja da sučasnaj Japonskaj. -Standartyzavanaja ŭ ISO 3602. - -U GoldenDict jašče nie padtrymlivajecca. - - - - Kunrei-shiki - Kunrej-siki - - - - Syllabaries: - Składovyja abecedy: - - - - Hiragana Japanese syllabary - Składovaja abeceda Chiragana - - - - Hiragana - Chiragana - - - - Katakana Japanese syllabary - Składovaja abeceda Kitakana - - - - Katakana - Katakana - - - - Text to Speech - Syntez movy - - - - (not available in portable version) - (nie dastupna ŭ pieranosnaj versii) - - - - - - Choose a directory - Vybar katalogu - - - - - - - - - Confirm removal - Paćvierdžańnie vydaleńnia - - - - - Remove directory <b>%1</b> from the list? - Prybrać katalog <b>%1</b> sa śpisu? - - - - - - Remove site <b>%1</b> from the list? - Prybrać sajt <b>%1</b> sa śpisu? - - - - Remove program <b>%1</b> from the list? - Prybrać pragramu <b>%1</b> sa śpisu? - - - - StylesComboBox - - - None - Niama - - - - TextToSpeechSource - - - Selected voice engines: - Vybranyja hałasavyja ruchaviki: - - - - &Add - &Dadać - - - - &Remove - &Vydalić - - - - Preferences - Nałady - - - - Volume: - Hučnaść: - - - - Rate: - Chutkaść: - - - - Preview - Prasłuchoŭvańnie - - - - Available voice engines: - Dastupnyja ruchaviki: - - - - Text to be previewed: - Tekst dla prasłuchoŭvańnia: - - - - Type text to be previewed here. - Upišy siudy tekst, kab prasłuchać. - - - - &Preview - &Prasłuchać - - - - No TTS voice available - Niama dastupnych syntezataraŭ hołasu - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - GoldenDict nie znajšoŭ žadnaha dastupnaha syntezatara hołasu.<br>Pierakanajsia ŭ najaŭnaści choć adnaho ŭstalavanaha syntazatara na svaim kamputary. - - - - Confirm removal - Paćvierdžańnie vydaleńnia - - - - Remove voice engine <b>%1</b> from the list? - Vydalić hałasavy ruchavik <b>%1</b> sa śpisu? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Upišy słova ci vyraz dla šukańnia ŭ słoŭnikach - - - - Drop-down - Vypadny śpis - - - - VoiceEnginesModel - - - Enabled - Ułučana - - - - Name - Nazva - - - - Id - Id - - - - Icon - Značak - - - - WebSitesModel - - - Enabled - Ułučany - - - - Name - Nazva - - - - Address - Adras - - - - Icon - Značak - - - - WordFinder - - - Failed to query some dictionaries. - Pamyłka zapytu ŭ niejkich słoŭnikach. - - - - WordList - - - WARNING: %1 - UVAHA: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/bg_BG.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/bg_BG.ts deleted file mode 100755 index 8ec66f6944..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/bg_BG.ts +++ /dev/null @@ -1,3914 +0,0 @@ - - - - - About - - About - Относно - - - GoldenDict dictionary lookup program, version - Програма за търсене в речници GoldenDict, версия - - - #.# - #.# - - - Licensed under GNU GPLv3 or later - Лицензирано под GNU GPLv3 или следваща версия - - - Credits: - Заслуги: - - - [Unknown] - [Неизвестно] - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © 2008-2013 Константин Исаков (ikm@goldendict.org) - - - Based on Qt %1 (%2, %3 bit) - - - - - ArticleMaker - - No translation for <b>%1</b> was found in group <b>%2</b>. - В групата <b>%2</b> не е намерен превод за <b>%1</b>. - - - Welcome! - Добре дошли! - - - Working with popup - Работа с изскачащ прозорец - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Работа с изскачащ прозорец</h3>За да търсите думи от други активни приложения, трябва да включите <i>"Разрешаване на изскачащ прозорец"</i> в <b>Настройки</b> и след това може да активирате по всяко време, чрез натискането на бутона "Изскачащ прозорец" по-горе или чрез цъкане с десен бутон върху иконата в системната област за известяване, и избирането на същото от показалото се меню. - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Сега просто спрете показалеца върху думата, която искате да потърсите в някое друго приложение и ще се покаже прозорец, който ще покаже значенията ѝ. - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - След това просто изберете думата, която желаете да потърсите в друго приложение с мишката (с двойно цъкане или избиране с натиснат бутон) и ще се покаже прозорец, който ще ви опише думата. - - - (untitled) - (без име) - - - No translation was found in group <b>%1</b>. - В групата <b>%1</b> не е открит превод. - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Добре дошли в <b>GoldenDict</b>!</h3><p>За да започнете да работите с програмата, първо посетете <b>Редактиране|Речници</b> за да добавите път за достъп до места, на които да се търсят речници, да настроите различни страници на Уикипедия или други ресруси, да подредите последователността на речниците или да създадете групи от речници.<p>Веднага след това сте готови да търсите думи! Можете да направите това в този прозорец, като използвате левия панел или можете да <a href="Working with popup">търсите думи от други активни приложения</a>. <p>За да настроите програмата, погледнете наличните настройки в <b>Редактиране|Настройки</b>. Всички настройки там имат подсказки - прочетете ги в случай, че се съмнявате за нещо.<p>Ако имате нужда от допълнителна помощ, имате въпроси, предложения или се чудите какво мислят останалите, сте добре дошли във <a href="http://goldendict.berlios.de/forum/">форума</a> на програмата.<p>Проверете <a href="http://goldendict.berlios.de/">уеб страницата</a> за обновления. <p>(c) 2008-2013 Konstantin Isakov. Лицензирано под GPLv3 или следваща версия. - - - (picture) - - - - Expand article - - - - Collapse article - - - - - ArticleRequest - - From - От - - - Query error: %1 - Грешка при търсенето: %1 - - - Close words: - Близки думи: - - - Compound expressions: - Сложни изрази: - - - Individual words: - Отделни думи: - - - Expand article - - - - Collapse article - - - - - ArticleView - - GoldenDict - GoldenDict - - - The referenced resource doesn't exist. - Даденият ресурс не съществува. - - - &Open Link - &Отваряне на връзката - - - Open Link in New &Tab - Отваряне на връзката в нов &подпрозорец - - - &Look up "%1" - &Търсене в "%1" - - - Look up "%1" in &New Tab - Търсене в "%1"в нов &подпрозорец - - - Look up "%1" in %2 - Търсене на "%1" в %2 - - - Look up "%1" in %2 in &New Tab - Търсене на "%1" в %2 в нов &подпрозорец - - - Failed to run a player to play sound file: %1 - Неуспех при пускането програма за възпроизвеждане на файл: %1 - - - Failed to create temporary file. - Неуспех при създаването на временен файл. - - - Failed to auto-open resource file, try opening manually: %1. - Неуспех при автоматично отваряне на ресурсен файл, опитай ръчно: %1. - - - The referenced resource failed to download. - Указаният ресурс не успя да се свали. - - - Form - - - - about:blank - about:blank - - - x - x - - - Find: - Търсене: - - - &Previous - &Предишна - - - &Next - &Следваща - - - Ctrl+G - Ctrl+G - - - &Case Sensitive - Отчитане на &регистъра - - - Open Link in &External Browser - Отваряне на връзката във &външен уеб четец - - - Playing a non-WAV file - Възпроизвеждане на не-WAV файл - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - За да включите възпрозвеждането на файлове, различни от WAV, отидете в Редактиране|Настройки, изберете подпрозореца Звук и изберете "Възпроизвеждане чрез DirectShow". - - - Highlight &all - - - - Resource - - - - Audio - - - - Definition: %1 - - - - The referenced audio program doesn't exist. - - - - WARNING: %1 - Внимание: %1 - - - &Add "%1" to history - - - - Definition from dictionary "%1": %2 - - - - Send "%1" to input line - - - - Picture - - - - Select Current Article - - - - ERROR: %1 - - - - Save sound - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - - - - Save image - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - - - - Save &image... - - - - Save s&ound... - - - - TTS Voice - - - - WARNING: FFmpeg Audio Player: %1 - - - - Copy as text - - - - Inspect - - - - Video - - - - Video: %1 - - - - - BelarusianTranslit - - Belarusian transliteration from latin to cyrillic (classic orthography) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - - - - - ChineseConversion - - GroupBox - - - - Enable conversion between simplified and traditional Chinese characters - - - - Chinese Con&version - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - SC to TC (Taiwan variant) - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - SC to TC (Hong Kong variant) - - - - Enable conversion from traditional characters to simplified characters - - - - TC to SC - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - Proxy authentication required - - - - You need to supply a Username and a Password to access via proxy - - - - Username: - - - - Password: - Парола: - - - - DictGroupWidget - - Form - - - - Group icon: - Икона на групата: - - - Shortcut: - Бърз клавиш: - - - None - Без - - - From file... - От файл... - - - Choose a file to use as group icon - Изберете файл, който да се използва като икона за групата - - - Images - Изображения - - - All files - Всички файлове - - - Error - ГрешкаГрешка - - - Can't read the specified image file. - Посоченият файл с изображение не може да бъде прочетен. - - - - DictGroupsWidget - - Confirmation - Потвърждаване - - - Are you sure you want to generate a set of groups based on language pairs? - Сигурни ли сте, че желаете да генерирате нов комплект от групи, на база езикови двойки? - - - Dictionaries: - - - - Combine groups by source language to "%1->" - - - - Combine groups by target language to "->%1" - - - - Make two-side translate group "%1-%2-%1" - - - - Combine groups with "%1" - - - - Unassigned - - - - - DictHeadwords - - Search mode - - - - This element determines how filter string will be interpreted - - - - If checked on the symbols case will be take in account when filtering - - - - Match case - - - - Exports headwords to file - - - - Export - - - - OK - - - - Press this button to apply filter to headwords list - - - - Apply - - - - If checked any filter changes will we immediately applied to headwords list - - - - Auto apply - - - - Filter: - - - - Filter string (fixed string, wildcards or regular expression) - - - - Text - - - - Wildcards - - - - RegExp - - - - Unique headwords total: %1, filtered: %2 - - - - Save headwords to file - - - - Text files (*.txt);;All files (*.*) - - - - Export headwords... - - - - Cancel - Отхвърляне - - - Help - - - - - DictInfo - - Total articles: - Брой статии: - - - Translates from: - Превод от: - - - Total words: - Брой думи: - - - Translates to: - Превод на: - - - Files comprising this dictionary: - Файлове, включващи се в речника: - - - Description: - - - - Open folder - - - - Edit dictionary - - - - Edit the dictionary via command: -%1 - - - - Show all unique dictionary headwords - - - - Headwords - - - - - DictListModel - - %1 entries - %1 записа - - - - DictServer - - Url: - - - - Databases: - - - - Search strategies: - - - - Server databases - - - - - DictServersModel - - Enabled - Включено - - - Name - Име - - - Address - Адрес - - - Databases - - - - Icon - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - Strategies - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Лента Речник - - - Edit this group - Редактиране на тази група - - - Dictionary info - - - - Edit dictionary - - - - &Dictionary Bar - - - - Open dictionary folder - - - - Extended menu with all dictionaries... - - - - Dictionary headwords - - - - - EditDictionaries - - &Sources - &Източници - - - &Dictionaries - &Речници - - - &Groups - &Групи - - - Sources changed - Източниците са променени - - - Some sources were changed. Would you like to accept the changes? - Някои източници бяха променени. Приемате ли промените? - - - Accept - Приемане - - - Cancel - Отхвърляне - - - Dictionaries - Речници - - - - ExternalViewer - - the viewer program name is empty - - - - - FTS::FtsIndexing - - None - Без - - - - FTS::FullTextSearchDialog - - Full-text search - - - - Whole words - - - - Plain text - - - - Wildcards - - - - RegExp - - - - Max distance between words (%1-%2): - - - - Max articles per dictionary (%1-%2): - - - - Articles found: - - - - Now indexing: - - - - The search line must contains at least one word containing - - - - or more symbols - - - - No dictionaries for full-text search - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - None - Без - - - - FTS::Indexing - - None - Без - - - - Forvo::ForvoArticleRequest - - XML parse error: %1 at %2,%3 - Грешка при обработката на XML: %1 на %2,%3 - - - Added %1 - - - - by - от - - - Male - Мъж - - - Female - Жена - - - from - от - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - - - - - FullTextSearchDialog - - Search - - - - Match case - - - - Mode: - - - - Articles found: - - - - Available dictionaries in group: - - - - Wait for indexing: - - - - Total: - - - - Indexed: - - - - Now indexing: None - - - - Cancel - Отхвърляне - - - Help - - - - - GermanTranslit - - German Transliteration - Германска транслитерация - - - - GreekTranslit - - Greek Transliteration - Гръцка транслитерация - - - - GroupComboBox - - Choose a Group (Alt+G) - Избор на група (Alt+G) - - - - GroupSelectorWidget - - Form - - - - Look in - Търсене в - - - - Groups - - Add group - Добавяне на група - - - Give a name for the new group: - Дайте име на новата група: - - - Rename group - Преименуване на групата - - - Give a new name for the group: - Дайте ново име за групата: - - - Remove group - Премахване на групата - - - Are you sure you want to remove the group <b>%1</b>? - Сигурни ли сте, че желаете да премахнете групата <b>%1</b>? - - - Remove all groups - Премахване на всички групи - - - Are you sure you want to remove all the groups? - Сигурни ли сте, че желаете да премахнете всички групи? - - - Dictionaries available: - Налични речници: - - - Add selected dictionaries to group (Ins) - Добавяне на избраните речници към групата (Ins) - - - > - > - - - Ins - Ins - - - Remove selected dictionaries from group (Del) - Премахване на избраните речници от групата (Del) - - - < - < - - - Del - Del - - - Groups: - Групи: - - - Tab 2 - - - - Create new dictionary group - Създаване на нова речникова група - - - &Add group - &Добавяне на група - - - Rename current dictionary group - Преименуване на текущата речникова група - - - Re&name group - &Преименуване - - - Remove current dictionary group - Премахване на текущата речникова група - - - &Remove group - &Премахване на групата - - - Remove all dictionary groups - Премахване на всички речникови групи - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Плъзгайте и пускайте речниците в и от групите, местете ги вътре в групите, пренареждайте групите, като използвате мишката. - - - Create language-based groups - Създаване на групи на база езика - - - Auto groups - Автоматични групи - - - Group tabs - - - - Open groups list - - - - - Help::HelpWindow - - GoldenDict help - - - - Home - - - - Back - Назад - - - Forward - Напред - - - Zoom In - Увеличаване - - - Zoom Out - Намаляване - - - Normal Size - Нормален размер - - - Content - - - - Index - - - - - HistoryPaneWidget - - &Delete Selected - - - - Copy Selected - - - - History: - - - - %1/%2 - - - - History size: %1 entries out of maximum %2 - - - - - Hunspell - - Spelling suggestions: - Варианти за проверка на правописа: - - - Dzongkha - (Бутан) - - - Sichuan Yi - И - - - %1 Morphology - %1 Морфология - - - - HunspellDictsModel - - Enabled - Включено - - - Name - Име - - - - Initializing - - Please wait... - Моля изчакайте... - - - Please wait while indexing dictionary - Моля изчакайте докато се индексира речника - - - GoldenDict - Initializing - GoldenDict - инициализиране - - - Dictionary Name - Име на речника - - - - Language - - Afar - Афарски - - - Abkhazian - Абхазки - - - Avestan - Авестийски - - - Afrikaans - Африкаанс - - - Akan - Акан - - - Amharic - Амхарски - - - Aragonese - Арагонски - - - Arabic - Арабски - - - Assamese - Асамски - - - Avaric - Аварски - - - Aymara - Аймарски - - - Azerbaijani - Азербайджански - - - Bashkir - Башкирски - - - Belarusian - Беларусски - - - Bulgarian - Български - - - Bihari - Бихарски - - - Bislama - Бислама - - - Bambara - Бамара - - - Bengali - Бенгали - - - Tibetan - Тибетски - - - Breton - Бретонски - - - Bosnian - Босненски - - - Catalan - Каталунски - - - Chechen - Чеченски - - - Chamorro - Чаморо - - - Corsican - Корсикански - - - Cree - Кри - - - Czech - Чешки - - - Church Slavic - Църковно-славянски - - - Chuvash - Чувашки - - - Welsh - Уелски - - - Danish - Датски - - - German - Германски - - - Divehi - Малдивски - - - Dzongkha - Дзонгкха - - - Ewe - Еве - - - Greek - Гръцки - - - English - Английски - - - Esperanto - Есперанто - - - Spanish - Испански - - - Estonian - Естонски - - - Basque - Баскски - - - Persian - Персийски - - - Fulah - Фула - - - Finnish - Финландски - - - Fijian - Фиджи - - - Faroese - Фарьорски - - - French - Френски - - - Western Frisian - Фризийски - - - Irish - Ирландски - - - Scottish Gaelic - Галски (Шотландия) - - - Galician - Галисийски - - - Guarani - Гуарани - - - Gujarati - Гуджарати - - - Manx - Манкс - - - Hausa - Хауса - - - Hebrew - Иврит - - - Hindi - Хинди - - - Hiri Motu - Хири-моту - - - Croatian - Хърватски - - - Haitian - Хаитянски - - - Hungarian - Унгарски - - - Armenian - Арменски - - - Herero - Хереро - - - Interlingua - Интерлингва - - - Indonesian - Индонезийски - - - Interlingue - Оксидентал - - - Igbo - Игбо - - - Sichuan Yi - - - - Inupiaq - - - - Ido - Идо - - - Icelandic - Исландски - - - Italian - Италиански - - - Inuktitut - Инуктитут - - - Japanese - Японски - - - Javanese - Явански - - - Georgian - Грузински - - - Kongo - Конго - - - Kikuyu - Кикую - - - Kwanyama - Кваняма - - - Kazakh - Казахски - - - Kalaallisut - Калаалисут - - - Khmer - Кхмерски - - - Kannada - Каннада - - - Korean - Корейски - - - Kanuri - Канури - - - Kashmiri - Кашмирски - - - Kurdish - Кюрдски - - - Komi - Коми - - - Cornish - Корнуолски - - - Kirghiz - Киргизки - - - Latin - Латински - - - Luxembourgish - Люксембургски - - - Ganda - Ганда - - - Limburgish - Лимбургски - - - Lingala - Лингала - - - Lao - Лао - - - Lithuanian - Литовски - - - Luba-Katanga - Луба-Катанга - - - Latvian - Латвийски - - - Malagasy - Малгашки - - - Marshallese - Маршалски - - - Maori - Маори - - - Macedonian - Македонски - - - Malayalam - Малаялам - - - Mongolian - Монголски - - - Marathi - Марати - - - Malay - Малайски - - - Maltese - Малтийски - - - Burmese - Бирмански - - - Nauru - Науру - - - Norwegian Bokmal - Норвежки букмол - - - North Ndebele - Сев. Ндебеле - - - Nepali - Непалски - - - Ndonga - Ндонга - - - Dutch - Холандски - - - Norwegian Nynorsk - Норвежки Нинорск - - - Norwegian - Норвежки - - - South Ndebele - Юж. Ндебеле - - - Navajo - Навахо - - - Chichewa - Чичеуа - - - Occitan - Френски (диалект Occitan) - - - Ojibwa - Оджибва - - - Oromo - Оромо - - - Oriya - Ория - - - Ossetian - Осетински - - - Panjabi - Панджаби - - - Pali - Пали - - - Polish - Полски - - - Pashto - Пашто - - - Portuguese - Португалски - - - Quechua - Кечуа - - - Raeto-Romance - - - - Kirundi - Кирунди - - - Romanian - Румънски - - - Russian - Руски - - - Kinyarwanda - Киняруанда - - - Sanskrit - Санскрит - - - Sardinian - Сардински - - - Sindhi - Синдхи - - - Northern Sami - Сев. Сами - - - Sango - Санго - - - Serbo-Croatian - Сърбо-хърватски - - - Sinhala - Синхала - - - Slovak - Словашки - - - Slovenian - Словенски - - - Samoan - Самоа - - - Shona - Шона - - - Somali - Сомалийски - - - Albanian - Албански - - - Serbian - Сръбски - - - Swati - Свази - - - Southern Sotho - Юж. Сото - - - Sundanese - Сундански - - - Swedish - Шведски - - - Swahili - Суахили - - - Tamil - Тамилски - - - Telugu - Телугу - - - Tajik - Таджикски - - - Thai - Тайски - - - Tigrinya - Тигриня - - - Turkmen - Туркменски - - - Tagalog - Тагалог - - - Tswana - Тсвана - - - Tonga - Тонга - - - Turkish - Турски - - - Tsonga - Цонга - - - Tatar - Татарски - - - Twi - - - - Tahitian - Таитянски - - - Uighur - Уйгурски - - - Ukrainian - Украински - - - Urdu - Урду - - - Uzbek - Узбекски - - - Venda - Венда - - - Vietnamese - Виетнамски - - - Volapuk - Волапюк - - - Walloon - Валонски - - - Wolof - Волоф - - - Xhosa - Кхоса - - - Yiddish - Идиш - - - Yoruba - Йоруба - - - Zhuang - Жуанг - - - Chinese - Китайски - - - Zulu - Зулу - - - Traditional Chinese - - - - Simplified Chinese - - - - Other - - - - Other Simplified Chinese dialects - - - - Other Traditional Chinese dialects - - - - Other Eastern-European languages - - - - Other Western-European languages - - - - Other Russian languages - - - - Other Japanese languages - - - - Other Baltic languages - - - - Other Greek languages - - - - Other Korean dialects - - - - Other Turkish dialects - - - - Other Thai dialects - - - - Tamazight - - - - Lojban - - - - - LoadDictionaries - - Error loading dictionaries - Грешка при зареждане на речниците - - - - Main - - Error in configuration file. Continue with default settings? - - - - - MainWindow - - Navigation - Навигация - - - Back - Назад - - - Forward - Напред - - - Scan Popup - Изскачащ прозорец - - - Show &Main Window - Показване на &главния прозорец - - - &Quit - &Изход - - - Loading... - Зареждане... - - - Skip This Release - Пропускане на това издание - - - Page Setup - Настройки на страницата - - - No printer is available. Please install one first. - Няма инсталиран принтер. - - - Print Article - Печат на статията - - - Save Article As - Запазване на статията като - - - Html files (*.html *.htm) - Файлове Html (*.html *.htm) - - - Error - Грешка - - - Can't save article: %1 - Статията не може да бъде запазена: %1 - - - %1 dictionaries, %2 articles, %3 words - %1 речници, %2 статии, %3 думи - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Грешка при инициализирането на механизма за наблюдение на бързи клавиши.<br>Уверете се, че вашият XServer е с включено разширение RECORD. - - - New Release Available - Налично е ново издание - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Версия <b>%1</b> на GoldenDict е налична за изтегляне.<br>Цъкнете на <b>Изтегляне</b> за да отидете до страницата за изтегляне. - - - Download - Изтегляне - - - Look up in: - Търсене в: - - - Pronounce Word (Alt+S) - Произнасяне на думата (Alt+S) - - - Zoom In - Увеличаване - - - Zoom Out - Намаляване - - - Normal Size - Нормален размер - - - Look up: - Търсене: - - - All - Всички - - - (untitled) - (без име) - - - WARNING: %1 - Внимание: %1 - - - GoldenDict - GoldenDict - - - Welcome! - Добре дошли! - - - &File - &Файл - - - &Edit - &Редактиране - - - &Help - &Помощ - - - &Preferences... - &Настройки... - - - F2 - F2 - - - &Groups... - &Групи... - - - &Dictionaries... - &Речници... - - - F3 - F3 - - - F4 - F4 - - - &Homepage - &Домашна страница - - - &About - &Относно - - - About GoldenDict - Относно GoldenDict - - - F1 - F1 - - - Quit from application - Излизане от приложението - - - Ctrl+Q - Ctrl+Q - - - &Forum - &Форум - - - &Close To Tray - &Затваряне в системната област за известяване - - - Minimizes the window to tray - Минимизира прозореца в системната област за известяване - - - Ctrl+F4 - Ctrl+F4 - - - &Save Article - &Запазване на статията - - - Save Article - Запазване на статията - - - &Print - &Печат - - - Ctrl+P - Ctrl+P - - - Page Set&up - &Настройки на страницата - - - Print Preview - Мостра на страница - - - Rescan Files - Повторно сканиране на файловете - - - Ctrl+F5 - Ctrl+F5 - - - Search Pane - Панел Търсене - - - Show Names in Dictionary Bar - Показване на имена в лентата Речник - - - &View - И&зглед - - - H&istory - &История - - - &Clear - Из&чистване - - - &Zoom - &Мащаб - - - Words Zoom In - Увеличаване на думите - - - Words Zoom Out - Намаляване на думите - - - Words Normal Size - Нормален размер на думите - - - Close current tab - Затваряне на текущия подпрозорец - - - Close all tabs - Затваряне на всички подпрозорци - - - Close all tabs except current - Затваряне на всички подпрозорци без текущия - - - Opened tabs - Отворени подпрозорци - - - New Tab - - - - Ctrl+T - - - - &Configuration Folder - - - - &Menubar - - - - Found in Dictionaries: - - - - Open Tabs List - - - - %1 - %2 - - - - You have chosen to hide a menubar. Use %1 to show it back. - - - - Ctrl+M - - - - &Show - - - - &Export - - - - &Hide - - - - Export history to file - - - - Text files (*.txt);;All files (*.*) - - - - History export complete - - - - Export error: - - - - Ctrl+H - - - - &Import - - - - Import history from file - - - - Import error: invalid data in file - - - - History import complete - - - - Import error: - - - - Dictionary info - - - - Edit dictionary - - - - &Search Pane - - - - &Results Navigation Pane - - - - Print Pre&view - - - - &Rescan Files - - - - &New Tab - - - - &Always on Top - - - - Always on Top - - - - Ctrl+O - - - - Menu Button - - - - Show Names in Dictionary &Bar - - - - Show Small Icons in &Toolbars - - - - &Navigation - - - - The main window is set to be always on top. - - - - &History Pane - - - - Accessibility API is not enabled - - - - Article, Complete (*.html) - - - - Article, HTML Only (*.html) - - - - Saving article... - - - - Open dictionary folder - - - - Dictionary headwords - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - Search - - - - Search in page - - - - Ctrl+F - - - - Full-text search - - - - Ctrl+Shift+F - - - - GoldenDict reference - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - Dictionary file was tampered or corrupted - - - - Failed loading article from %1, reason: %2 - - - - - MediaWiki::MediaWikiArticleRequest - - XML parse error: %1 at %2,%3 - Грешка при обработката на XML: %1 на %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - XML parse error: %1 at %2,%3 - Грешка при обработката на XML: %1 на %2,%3 - - - - MediaWikisModel - - Enabled - Включено - - - Name - Име - - - Address - Адрес - - - Icon - - - - - OrderAndProps - - Form - - - - Dictionary order: - Подредба на речниците: - - - ... - ... - - - Inactive (disabled) dictionaries: - Неактивни (изключени) речници: - - - Dictionary information - Информация за речника - - - Name: - Име: - - - Total articles: - Брой статии: - - - Total words: - Брой думи: - - - Translates from: - Превод от: - - - Translates to: - Превод на: - - - Files comprising this dictionary: - Файлове, включващи се в речника: - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Подредете последователността чрез влачене и пускане на елементи. Пускайте речници в неактивната група за да изключите от използване. - - - Description: - - - - Sort by name - - - - Sort by languages - - - - Dictionary headwords - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - Path - Път - - - Recursive - Рекурсивно - - - - Preferences - - Preferences - Настройки - - - &Interface - &Интерфейс - - - Tabbed browsing - Преглеждане в подпрозорци - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Обикновено отварянето на нов подпрозорец веднага -превключва към него. С тази настройка новите подпрозорци -ще се отварят без да се превключва към тях. - - - Open new tabs in background - Отваряне на нови подпрозорци на заден план - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Ако това е включено новите подпрозорци се отварят -след текущия, активен. Иначе те ще бъдат отворени -на последно място. - - - Open new tabs after the current one - Отваряне на новите подпрозорци след текущия - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Когато това е включено, в системната област за уведомяване се показва икона, чрез -която може да се отваря главния прозорец или да се извършнат други дейности. - - - Enable system tray icon - Икона в системната област за уведомяване - - - With this on, the application starts directly to system tray without showing -its main window. - Приложението се пуска директно в системната област за уведомяване, -без да се показва главния прозорец. - - - Start to system tray - Пускане в системната област за уведомяване - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Затварянето на главния прозорец ще го скрие, вместо да затвори -приложението. - - - Close to system tray - Затваряне в системната област за уведомяване - - - Startup - Пускане - - - Automatically starts GoldenDict after operation system bootup - Автоматично зарежда GoldenDict слез зареждане на ОС - - - Start with system - Автоматично стартиране - - - Interface language: - Език на интерфейса: - - - Display style: - Стил на интерфейса: - - - Hotkeys - Бързи клавиши - - - Use the following hotkey to show or hide the main window: - Използване на следните бързи клавиши за показване/скриване на главния прозорец: - - - Use the following hotkey to translate a word from clipboard: - Използване на следните бързи клавиши за превод на дума от системния буфер: - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Бързите клавиши са глобални и работят от всяка програма и контекст, стига GoldenDict да е пусната на заден фон. - - - &Scan Popup - &Изскачащ прозорец - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - При включване изскачащ прозорец с превода ще е показва всеки път -когато посочите с мишката дума на екрана (в Windows) или изберете -дума с мишката (в Linux). Когато това е включено, можете да променяте -състоянието му от главния прозорец или иконата в системната област. - - - Enable scan popup functionality - Включване на изскачащ прозорец - - - Chooses whether the scan popup mode is on by default nor not. If checked, -the program would always start with the scan popup active. - Избира дали изскачащият прозорец да е включен поначало или не. Ако е -включен, програмата винаги ще се стартира с активен изскачащ прозорец. - - - Start with scan popup turned on - Пускане с включен изскачащ прозорец - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Когато това е включено, изскачащият прозорец ще се показва само ако -избраните клавиши са натиснати, когато се промени избирането на дума. - - - Only show popup when all selected keys are kept pressed: - Показване на изскачащ прозорец когато всички избрани клавиши са натиснати: - - - Left Ctrl only - При натискане на ляв Ctrl - - - Left Ctrl - Ляв Ctrl - - - Right Shift only - При натискане на десен Shift - - - Right Shift - Десен Shift - - - Alt key - Клавиш Alt - - - Alt - Alt - - - Ctrl key - Клавиш Ctrl - - - Ctrl - Ctrl - - - Left Alt only - При натискане на ляв Alt - - - Left Alt - Ляв Alt - - - Shift key - Клавиш Shift - - - Shift - Shift - - - Right Alt only - При натискане на десен Alt - - - Right Alt - Десен Alt - - - Right Ctrl only - При натискане на десен Ctrl - - - Right Ctrl - Десен Ctrl - - - Left Shift only - При натискане на ляв Shift - - - Left Shift - Ляв Shift - - - Windows key or Meta key - Клавиш Windows или Meta - - - Win/Meta - Win/Meta - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shorty after the selection is done. - Обикновено, за да активирате изскачащ прозорец трябва да -задържите избраните клавиши докато избирате дума. -Когато това е включено, избраните клавиши могат да бъдат -натиснати и малко след като думата е избрана. - - - Keys may also be pressed afterwards, within - Клавишите могат натиснати и по-късно, в рамките на - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - За да се избягват лъжливи активирания, клавишите се -наблюдават само за определено време в секунди след -като се направи селекцията, определено тук. - - - secs - секунди - - - &Audio - &Звук - - - Auto-pronounce words in main window - Автоматично произнасяне на думите в главния прозорец - - - Auto-pronounce words in scan popup - Автоматично произнасяне на думите в изскачащия прозорец - - - Program to play audio files: - Програма да възпроизвеждане на звуковите файлове: - - - &Network - &Мрежа - - - Enable if you wish to use a proxy server -for all program's network requests. - Включете, ако желаете да използвате сървър-посредник -при всички обръщания на програмата към мрежата. - - - Use proxy server - Използване на сървър-посредник - - - Type: - Тип: - - - Host: - Име: - - - Port: - Порт: - - - User: - Потребител: - - - Password: - Парола: - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Когато това е включено, програмата периодично -проверява дали има нова версия на GoldenDict за -изтегляне. Ако има, програмата уведомява потребителя -и предлага да отвори страница за изтегляне. - - - Check for new program releases periodically - Периодична проверка за нови издания - - - System default - Системен - - - English - Английски - - - Russian - Руски - - - Default - По подразбиране - - - Lingvo - Lingvo - - - Changing Language - Промяна на езика - - - Restart the program to apply the language change. - Рестартирайте програмата, за да се приложи смяната на езика. - - - Automatically starts GoldenDict after operation system bootup. - Пуска GoldenDict автоматично след зареждане на системата. - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - - - - Disallow loading content from other sites (hides most advertisements) - - - - Pronunciation - Произношение - - - Playback - Възпроизвеждане - - - Play via Phonon - Възпроизвеждане чрез Phonon - - - Use external program: - Използване на външна програма: - - - Play via DirectShow - Възпроизвеждане чрез DirectShow - - - Double-click translates the word clicked - Двойното натискане превежда думата - - - Use any external program to play audio files - Използване на външна програма за възпроизвеждане на аудио файловете - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - - - - Hide single tab - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - - - - ESC key hides main window - - - - Send translated word to main window instead of to show it in popup window - - - - Send translated word to main window - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - - - - Enable web plugins - - - - Ad&vanced - - - - ScanPopup extra technologies - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - - - - Use &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - Use &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - Use &GoldenDict message - - - - Ctrl-Tab navigates tabs in MRU order - - - - Babylon - - - - History - - - - Turn this option on to store history of the translated words - - - - Store &history - - - - Articles - - - - Turn this option on to always expand optional parts of articles - - - - Expand optional &parts - - - - Turn this option on if you want to select words by single mouse click - - - - Select word by single click - - - - Add-on style: - - - - Specify the maximum number of entries to keep in history. - - - - Maximum history size: - - - - History saving interval. If set to 0 history will be saved only during exit. - - - - Save every - - - - minutes - - - - Modern - - - - Lingoes - - - - Lingoes-Blue - - - - Play audio files via FFmpeg(libav) and libao - - - - Use internal player - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - - - - Do not identify GoldenDict in HTTP headers - - - - Select this option to automatic collapse big articles - - - - Collapse articles more than - - - - symbols - - - - Adjust this value to avoid huge context menus. - - - - Context menu dictionaries limit: - - - - Articles longer than this size will be collapsed - - - - System proxy - - - - Custom proxy - - - - Custom settings - - - - Full-text search - - - - Allow full-text search for: - - - - Don't search in dictionaries containing more than - - - - articles (0 - unlimited) - - - - Help language - - - - - ProgramTypeEditor - - Audio - - - - Plain Text - - - - Html - - - - Prefix Match - - - - Unknown - - - - - Programs::RunInstance - - No program name was given. - - - - The program has crashed. - - - - The program has returned exit code %1. - - - - - ProgramsModel - - Enabled - Включено - - - Type - - - - Name - Име - - - Command Line - - - - Icon - - - - - QObject - - Article loading error - - - - Article decoding error - - - - avformat_alloc_context() failed. - - - - av_malloc() failed. - - - - avio_alloc_context() failed. - - - - avformat_open_input() failed: %1. - - - - avformat_find_stream_info() failed: %1. - - - - Could not find audio stream. - - - - Codec [id: %1] not found. - - - - avcodec_open2() failed: %1. - - - - Cannot find usable audio output device. - - - - Unsupported sample format. - - - - ao_open_live() failed: - - - - No driver. - - - - This driver is not a live output device. - - - - A valid option key has an invalid value. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - - - - Unknown error. - - - - avcodec_alloc_frame() failed. - - - - - QuickFilterLine - - Dictionary search/filter (Ctrl+F) - - - - Quick Search - - - - Clear Search - - - - - ResourceToSaveHandler - - ERROR: %1 - - - - Resource saving error: - - - - The referenced resource failed to download. - Указаният ресурс не успя да се свали. - - - - Romaji - - Hepburn Romaji for Hiragana - - - - Hepburn Romaji for Katakana - - - - - RussianTranslit - - Russian Transliteration - Транслитерация (Руски) - - - - ScanPopup - - Dialog - Диалог - - - word - дума - - - List Matches (Alt+M) - Списък с резултати (Alt+M) - - - Alt+M - Alt+M - - - Pronounce Word (Alt+S) - Произнасяне на думата (Alt+S) - - - Alt+S - Alt+S - - - ... - ... - - - Shows or hides the dictionary bar - Показва или скрива лентата Речник - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - - - - Send word to main window (Alt+W) - - - - Alt+W - - - - Back - Назад - - - Forward - Напред - - - GoldenDict - GoldenDict - - - %1 - %2 - - - - - SoundDirsModel - - Path - Път - - - Name - Име - - - Icon - - - - - Sources - - Choose a directory - Избор на папка - - - Confirm removal - Потвърждаване на премахването - - - Remove directory <b>%1</b> from the list? - Да се премахне ли от списъка папката <b>%1</b>? - - - Remove site <b>%1</b> from the list? - Да се премахне ли от списъка уеб страницата <b>%1</b>? - - - Files - Файлове - - - Paths to search for the dictionary files: - Пътища за търсене на файлове с речници: - - - &Add... - &Добавяне... - - - &Remove - &Премахване - - - Re&scan now - Повторно &сканиране - - - Sound Dirs - Папки със звуци - - - Make dictionaries from bunches of audiofiles by adding paths here: - Създаване на речници от различни звукови файлове, чрез добавяне - на пътищата им за достъп тук: - - - Morphology - Морфология - - - Path to a directory with Hunspell/Myspell dictionaries: - Път към речниците Hunspell/Myspell: - - - &Change... - &Промяна... - - - Available morphology dictionaries: - Достъпни морфологични речници: - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Всеки морфологичен речник -се представя като отделен -спомагателен речник, -предоставящ корена на думите при -търсене, а също и варианти за написване -на неправилно въведени думи. -За използването на речниците -добавяйте съответните речници -в края на съответните групи. - - - Websites - Уеб страници - - - Any websites. A string %GDWORD% will be replaced with the query word: - Произволни уеб страници. Низът %GDWORD% ще бъде заменен с думата за търсене: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Може да използвате и %GD1251% за кодиране CP1251, %GDISO1% за кодиране ISO 8859-1. - - - Transliteration - Транслитерация - - - Russian transliteration - Транслитерация (Руски) - - - German transliteration - Транслитерация (Германски - - - Enables to use the Latin alphabet to write the Japanese language - Позволява да се използва Латинската азбука, за да се пише на Японски - - - Japanese Romaji - - - - Systems: - Системи: - - - The most widely used method of transcription of Japanese, -based on English phonology - Най-широко използваният метод за транскрипция на Японски, -на основата на Английската фонология - - - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - -В GoldenDict пока не реализована. - - - Nihon-shiki - Nihon-shiki - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - -В GoldenDict пока не реализована. - - - Kunrei-shiki - Kunrei-shiki - - - Syllabaries: - Сричкови азбуки: - - - Hiragana Japanese syllabary - - - - Hiragana - - - - Katakana Japanese syllabary - - - - Katakana - - - - Wikipedia - Уикипедия - - - Wikipedia (MediaWiki) sites: - Страници Уикипедия (MediaWiki): - - - Forvo - Forvo - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - - - - Enable pronunciations from Forvo - Включване на произношенията от Forvo - - - API Key: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Получете собствен ключ <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, или оставете празно за използване на стандартния.</p></td></tr></table></body></html> - - - Language codes (comma-separated): - Езикови кодове (разделени със запетая): - - - List of language codes you would like to have. Example: "en, ru". - Списък с желани езикови кодове. Пример: "en, bg". - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Пълен списък с езикови кодове е наличен <a href="http://www.forvo.com/languages-codes/">тук</a>. - - - Greek transliteration - Гръцка транслитерация - - - (not available in portable version) - (не е налично в преносимата версия) - - - Programs - - - - Remove program <b>%1</b> from the list? - - - - Belarusian transliteration - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - - - - Text to Speech - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - - - - DICT servers - - - - DICT servers: - - - - - StylesComboBox - - None - Без - - - - TextToSpeechSource - - Selected voice engines: - - - - &Add - - - - &Remove - &Премахване - - - Preview - - - - Available voice engines: - - - - Text to be previewed: - - - - Type text to be previewed here. - - - - &Preview - - - - No TTS voice available - - - - Confirm removal - Потвърждаване на премахването - - - Remove voice engine <b>%1</b> from the list? - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - - - - Preferences - Настройки - - - Volume: - - - - Rate: - - - - - TranslateBox - - Type a word or phrase to search dictionaries - - - - Drop-down - - - - - VoiceEnginesModel - - Enabled - Включено - - - Name - Име - - - Id - - - - Icon - - - - - WebSitesModel - - Enabled - Включено - - - Name - Име - - - Address - Адрес - - - Icon - - - - - WordFinder - - Failed to query some dictionaries. - Неуспех при търсенето в някои речници. - - - - WordList - - WARNING: %1 - Внимание: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/cs_CZ.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/cs_CZ.ts deleted file mode 100644 index 3cc67425ea..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/cs_CZ.ts +++ /dev/null @@ -1,4758 +0,0 @@ - - - - - - - XML parse error: %1 at %2,%3 - Chyba při zpracování XML: %1 v %2, %3 - - - - About - - About - О programu - - - GoldenDict dictionary lookup program, version 0.7 - Словарь GoldenDict, версия 0.7 - - - GoldenDict dictionary lookup program, version - Prohledávač slovníků GoldenDict, verze - - - #.# - #.# - - - Licensed under GNU GPLv3 or later - Licencováno pod GNU GPLv3 nebo novější - - - Credits: - Zásluhy: - - - [Unknown] - [Neznámý] - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - Based on Qt %1 (%2, %3 bit) - Založeno na Qt %1 (%2, %3 bit) - - - - ArticleMaker - - No translation for <b>%1</b> was found in group <b>%2</b>. - Pro <b>%1</b> nebyl nalezen překlad ve skupině <b>%2</b>. - - - Welcome! - Vítejte! - - - Working with popup - Práce s vyskakovacím oknem - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Práce s vyskakovacím oknem</h3>Abyst mohli vyhledávat slova z jiných aplikací, potřebujete zapnout <i>"Vyskakovací okno"</i> v položce <b>Předvolby</b> a pak jej kdykoliv povolte buďto kliknutím na 'Vyskakovací' ikonu výše, nebo kliknutím na ikonu v systémové liště pravým tlačítkem myši a povolením v objevivší se nabídce. - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Pak jenom zastavte kurzorem nad slovem v jiné aplikaci, které chcete vyhledat, a vyskočí okno které vám jej popíše. - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Pak jenom myší vyberte jakékoliv slovo v jiné aplikaci, které chcete vyhledat (dvojklikem nebo označením tažením myší) a vyskočí okno, které vám to slovo popíše. - - - (untitled) - (nepojmenovaný) - - - No translation was found in group <b>%1</b>. - Ve skupině <b>%1</b> nebyl nalezen žádný překlad. - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Vítejte v programu <b>GoldenDict</b>!</h3><p>Práci s programem začněte v <b>Upravit|Slovníky</b>, kde můžete přidat cesty ke složkám, kde budou vyhledávány soubory slovníků, nastavíte různé stránky Wikipedie a jiné zdroje, upravíte pořadí adresářů nebo vytvoříte skupiny slovníků.<p>Pak budete moci vyhledávat slovíčka! To můžete provádět v tomto okně použitím pasnelu vlevo, nebo můžete <a href="Working with popup">vyhledávat slova z jiných aktivních aplikací</a>. <p>Upravení vlastností programu provedete v <b>Upravit|Předvolby</b>. Všechna nastavení mají nápovědu, která vám pomůže v případě, že máte o něčem pochybnosti.<p>Budete-li potřebovat další pomoc, budete mít nějaké návrhy nebo jenom budete chtít vědět co si myslí jiní, budete vítání na stránkách <a href="http://goldendict.berlios.de/forum/">diskuse</a> o programu.<p>Aktualizace programu hledejte na <a href="http://goldendict.org/">jeho stránkách</a>.<p>(c) 2008-2013 Konstantin Isakov. Licencováno pod GPLv3 nebo novější. - - - (picture) - (obrázek) - - - Expand article - Rozbalit článek - - - Collapse article - Sbalit článek - - - - ArticleRequest - - From - Od - - - From %1 - Из словаря %1 - - - Query error: %1 - Chyba dotazu: %1 - - - Close words: - Blízká slova: - - - Compound expressions: - Složené výrazy: - - - Individual words: - Jednotlivá slova: - - - Expand article - Rozbalit článek - - - Collapse article - Sbalit článek - - - - ArticleView - - GoldenDict - GoldenDict - - - The referenced resource doesn't exist. - Odkazovaný zdroj neexistuje. - - - &Open Link - &Otevřít odkaz - - - Open Link in New &Tab - Otevřít odkaz v nové kar&tě - - - &Look up "%1" - Vyh&ledat "%1" - - - Look up "%1" in &New Tab - Vyhledat "%1" v &nové kartě - - - Look up "%1" in %2 - Vyhledat "%1" v %2 - - - Look up "%1" in %2 in &New Tab - Vyhledat "%1" v %2 v &nové kartě - - - Failed to run a player to play sound file: %1 - Nepovedlo se spustit přehrávač zvukového souboru: %1 - - - Failed to create temporary file. - Nepovedlo se vytvořit dočasný soubor. - - - Failed to auto-open resource file, try opening manually: %1. - Nepovedlo se automaticky otevřít zdrojový soubor, zkuste jej otevřít manuálně: %1. - - - The referenced resource failed to download. - Odkázaný zdroj se nepovedlo stáhnout. - - - Form - Formulář - - - about:blank - about:blank - - - x - x - - - Find: - Najít: - - - &Previous - &Předchozí - - - &Next - &Následující - - - Ctrl+G - Ctrl+G - - - &Case Sensitive - Rozlišovat velikost pís&ma - - - Open Link in &External Browser - Otevřít odkaz v &externím prohlížeči - - - Playing a non-WAV file - Přehrávání souboru jiného než WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Pro povolení přehrávání jiných souborů než WAV, přejděte, prosím, do Upravit|Předvolby, zvolte kartu Audio a zde zvolte "Přehrát přes DirectShow". - - - Highlight &all - Zvýr&aznit vše - - - Resource - Zdroj - - - Audio - Audio - - - Definition: %1 - Definice: %1 - - - The referenced audio program doesn't exist. - Odkazovaný audio program neexistuje. - - - WARNING: %1 - VAROVÁNÍ: %1 - - - &Add "%1" to history - Přid&at "%1" do historie - - - Definition from dictionary "%1": %2 - Definice ze slovníku "%1": %2 - - - Send "%1" to input line - Poslat "%1" na vstupní řádek - - - Picture - Obrázek - - - Select Current Article - Vybrat aktuální článek - - - ERROR: %1 - CHYBA: %1 - - - Save sound - Uložit zvuk - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Zvukové soubory (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Všechny soubory (*.*) - - - Save image - Uložit obrázek - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Soubory obrázků (*.bmp *.jpg *.png *.tif);;Všechny soubory (*.*) - - - Save &image... - Ulož&it obrázek... - - - Save s&ound... - Ul&ožit zvuk... - - - TTS Voice - Zvuk TTS - - - WARNING: FFmpeg Audio Player: %1 - VAROVÁNÍ: FFmpeg Audio Player: %1 - - - Copy as text - Kopírovat jako text - - - Inspect - Projít - - - Video - Video - - - Video: %1 - Video: %1 - - - - BelarusianTranslit - - Belarusian transliteration from latin to cyrillic (classic orthography) - Běloruský přepis z latinky do cyrilice (klasická ortografie) - - - Belarusian transliteration from latin to cyrillic (school orthography) - Běloruský přepis z latinky do cyrilice (školní ortografie) - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Běloruský přepis (vyrovnává rodíly mezi klasickou -a školní ortografií v cyrilici) - - - - ChineseConversion - - GroupBox - - - - Enable conversion between simplified and traditional Chinese characters - - - - Chinese Con&version - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - SC to TC (Taiwan variant) - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - SC to TC (Hong Kong variant) - - - - Enable conversion from traditional characters to simplified characters - - - - TC to SC - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - Proxy authentication required - - - - You need to supply a Username and a Password to access via proxy - - - - Username: - - - - Password: - Heslo: - - - - DictGroupWidget - - Form - Formulář - - - Group icon: - Ikona skupiny: - - - Shortcut: - Zkratka: - - - None - Žádná - - - From file... - Ze souboru... - - - Choose a file to use as group icon - Zvolte soubor pro použití jako ikona skupiny - - - Images - Obrázky - - - All files - Všechny soubory - - - Error - Chyba - - - Can't read the specified image file. - Zvolený obrázek nelze přečíst. - - - - DictGroupsWidget - - Confirmation - Potvrzení - - - Are you sure you want to generate a set of groups based on language pairs? - Opravdu chcete vygenerovat set skupin založený na párech jazyků? - - - Dictionaries: - Slovníky: - - - Combine groups by source language to "%1->" - Sloučit skupiny podle zdrojového jazyka do "%1->" - - - Combine groups by target language to "->%1" - Sloučit skupiny podle cílového jazyka do "->%1" - - - Make two-side translate group "%1-%2-%1" - Vytvořit dvoustrannou skupinu překladů "%1-%2-%1" - - - Combine groups with "%1" - Sloučit skupiny s "%1" - - - Unassigned - Nepřidělený - - - - DictHeadwords - - Search mode - - - - This element determines how filter string will be interpreted - - - - If checked on the symbols case will be take in account when filtering - - - - Match case - - - - Exports headwords to file - - - - Export - - - - OK - - - - Press this button to apply filter to headwords list - - - - Apply - - - - If checked any filter changes will we immediately applied to headwords list - - - - Auto apply - - - - Filter: - - - - Filter string (fixed string, wildcards or regular expression) - - - - Text - - - - Wildcards - - - - RegExp - - - - Unique headwords total: %1, filtered: %2 - - - - Save headwords to file - - - - Text files (*.txt);;All files (*.*) - Textové soubory (*.txt);;Všechny soubory (*.*) - - - Export headwords... - - - - Cancel - Zrušit - - - Help - - - - - DictInfo - - Total articles: - Celkem článků: - - - Translates from: - Překládá z: - - - Total words: - Celkem slov: - - - Translates to: - Překládá do: - - - Files comprising this dictionary: - Soubory obsažené v tomto slovníku: - - - Description: - Popis: - - - Open folder - Otevřít složku - - - Edit dictionary - Upravit slovník - - - Edit the dictionary via command: -%1 - Upravit slovník příkazem: -%1 - - - Show all unique dictionary headwords - - - - Headwords - - - - - DictListModel - - %1 entries - %1 záznamů - - - - DictServer - - Url: - - - - Databases: - - - - Search strategies: - - - - Server databases - - - - - DictServersModel - - Enabled - Povoleno - - - Name - - - - Address - Adresa - - - Databases - - - - Icon - Ikona - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - Strategies - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Pruh slovníků - - - Edit this group - Upravit tuto skupinu - - - Dictionary info - Informace o slovníku - - - Edit dictionary - Upravit slovník - - - &Dictionary Bar - Pru&h slovníků - - - Open dictionary folder - Otevřít složku slovníků - - - Extended menu with all dictionaries... - Rozšířit nabídku se všemi slovníky... - - - Dictionary headwords - - - - - EditDictionaries - - &Sources - &Zdroje - - - &Dictionaries - &Slovníky - - - &Groups - S&kupiny - - - Sources changed - Změněny zdroje - - - Some sources were changed. Would you like to accept the changes? - Některé zdroje byly změněny. Chcete přijmout změny? - - - Accept - Přijmout - - - Cancel - Zrušit - - - Dictionaries - Slovníky - - - - ExternalViewer - - the viewer program name is empty - název prohlížecího programu je prázdný - - - - FTS::FtsIndexing - - None - Žádná - - - - FTS::FullTextSearchDialog - - Full-text search - - - - Whole words - - - - Plain text - - - - Wildcards - - - - RegExp - - - - Max distance between words (%1-%2): - - - - Max articles per dictionary (%1-%2): - - - - Articles found: - - - - Now indexing: - - - - The search line must contains at least one word containing - - - - or more symbols - - - - No dictionaries for full-text search - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - None - Žádná - - - - FTS::Indexing - - None - Žádná - - - - Forvo::ForvoArticleRequest - - XML parse error: %1 at %2,%3 - Chyba při zpracování XML: %1 v %2, %3 - - - Added %1 - Přidáno %1 - - - by - od - - - Male - Muž - - - Female - Žena - - - from - od - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Pro odstranění této chyby přejděte do Upravit|Slovníky|Zdroje|Forvo a aplikuje na vlasní klíč API. - - - - FullTextSearchDialog - - Search - - - - Match case - - - - Mode: - - - - Articles found: - - - - Available dictionaries in group: - - - - Wait for indexing: - - - - Total: - - - - Indexed: - - - - Now indexing: None - - - - Cancel - Zrušit - - - Help - - - - - GermanTranslit - - German Transliteration - Německý přepis - - - - GreekTranslit - - Greek Transliteration - Řecký přepis - - - - GroupComboBox - - Choose a Group (Alt+G) - Vyberte skupinu (Alt+G) - - - - GroupSelectorWidget - - Form - Formulář - - - Look in - Vyhledat v - - - - Groups - - Add group - Přidat skupinu - - - Give a name for the new group: - Pojmenujte novou skupinu: - - - Rename group - Přejmenovat skupinu - - - Give a new name for the group: - Dejte skupině nové jméno: - - - Remove group - Odstranit skupinu - - - Are you sure you want to remove the group <b>%1</b>? - Opravdu chcete odstranit skupinu <b>%1</b>? - - - Remove all groups - Odstranit všechny skupiny - - - Are you sure you want to remove all the groups? - Opravdu chcete odstranit všechny skupiny? - - - Groups - Группы - - - Dictionaries available: - Dostupné slovníky: - - - Add selected dictionaries to group (Ins) - Přidejte vybrané slovníky do skupinty (Ins) - - - > - > - - - Ins - Ins - - - Remove selected dictionaries from group (Del) - Odstranit ze skupiny vybrané slovníky (Del) - - - < - < - - - Del - Del - - - Groups: - Skupiny: - - - Tab 2 - Tab 2 - - - Create new dictionary group - Vytvořit novou skupinu slovníků - - - &Add group - Přid&at skupinu - - - Rename current dictionary group - Přejmenovat tuto skupinu slovníků - - - Re&name group - Přejme&novat skupinu - - - Remove current dictionary group - Odstranit tuto skupinu slovníků - - - &Remove group - Odst&ranit skupinu - - - Remove all dictionary groups - Odstranit všechny skupiny slovníků - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Chytněte a přetáhnete slovníky do a ze skupin, posunujte je uvnitř skupin, měňte pořa&dí skupin pomocí myši. - - - Create language-based groups - Vytvořit skupiny založené na jazycích - - - Auto groups - Automatické skupiny - - - Group tabs - - - - Open groups list - - - - - Help::HelpWindow - - GoldenDict help - - - - Home - - - - Back - Zpět - - - Forward - Vpřed - - - Zoom In - Přiblížit - - - Zoom Out - Oddálit - - - Normal Size - Normální velikost - - - Content - - - - Index - - - - - HistoryPaneWidget - - &Delete Selected - Smazat vy&brané - - - Copy Selected - Kopírovat vybrané - - - History: - Historie: - - - %1/%2 - %1/%2 - - - History size: %1 entries out of maximum %2 - Velikost historie: %1 položek z maximálně %2 - - - - Hunspell - - Spelling suggestions: - Návrhy výslovností: - - - Afar - Афарский - - - Abkhazian - Абхазский - - - Avestan - Авестийский - - - Afrikaans - Африкаанс - - - Akan - Аканский - - - Amharic - Амхарский - - - Aragonese - Арагонский - - - Arabic - Арабский - - - Assamese - Ассамский - - - Avaric - Аварский - - - Aymara - Аймарский - - - Azerbaijani - Азербайджанский - - - Bashkir - Башкирский - - - Belarusian - Белорусский - - - Bulgarian - Болгарский - - - Bihari - Бихарский - - - Bislama - Бислама - - - Bambara - Бамана - - - Bengali - Бенгали - - - Tibetan - Тибетский - - - Breton - Бретонский - - - Bosnian - Боснийский - - - Catalan - Каталонский - - - Chechen - Чеченский - - - Chamorro - Чаморро - - - Corsican - Корсиканский - - - Cree - Кри - - - Czech - Чешский - - - Church Slavic - Церковно-славянский - - - Chuvash - Чувашский - - - Welsh - Уэльский - - - Danish - Датский - - - German - Немецкий - - - Divehi - Мальдивский - - - Dzongkha - Дзонгка (Бутан) - - - Ewe - Эве - - - Greek - Греческий - - - English - Английский - - - Esperanto - Эсперанто - - - Spanish - Испанский - - - Estonian - Эстонский - - - Basque - Баскский - - - Persian - Персидский - - - Fulah - Фула - - - Finnish - Финский - - - Fijian - Фиджи - - - Faroese - Фарерский - - - French - Французский - - - Western Frisian - Фризийский - - - Irish - Галльский (Ирландия) - - - Scottish Gaelic - Галльский (Шотландия) - - - Galician - Галицийский - - - Guarani - Гуарани - - - Gujarati - Гуджарати - - - Manx - Манкс - - - Hausa - Хауса - - - Hebrew - Иврит - - - Hindi - Хинди - - - Hiri Motu - Хири-моту - - - Croatian - Хорватский - - - Haitian - Гаитянский - - - Hungarian - Венгерский - - - Armenian - Армянский - - - Herero - Эреро - - - Interlingua - Интерлингва - - - Indonesian - Индонезийский - - - Interlingue - Окциденталь - - - Igbo - Ибо - - - Sichuan Yi - Сычуаньский И - - - Inupiaq - Инупиак - - - Ido - Идо - - - Icelandic - Исландский - - - Italian - Итальянский - - - Inuktitut - Инуктитут - - - Japanese - Японский - - - Javanese - Яванский - - - Georgian - Грузинский - - - Kongo - Конго - - - Kikuyu - Кикую - - - Kwanyama - Кваньяма - - - Kazakh - Казахский - - - Kalaallisut - Калаалисут - - - Khmer - Кхмерский - - - Kannada - Каннада - - - Korean - Корейский - - - Kanuri - Канури - - - Kashmiri - Кашмирский - - - Kurdish - Курдский - - - Komi - Коми - - - Cornish - Корнуольский - - - Kirghiz - Киргизский - - - Latin - Латинский - - - Luxembourgish - Люксембургский - - - Ganda - Ганда - - - Limburgish - Лимбуржский - - - Lingala - Лингала - - - Lao - Лао - - - Lithuanian - Литовский - - - Luba-Katanga - Луба-Катанга - - - Latvian - Латышский - - - Malagasy - Мальгашский - - - Marshallese - Маршалльский - - - Maori - Маори - - - Macedonian - Македонский - - - Malayalam - Малайялам - - - Mongolian - Монгольский - - - Marathi - Марати - - - Malay - Малайский - - - Maltese - Мальтийский - - - Burmese - Бирманский - - - Nauru - Науру - - - Norwegian Bokmal - Норвежский букмол - - - North Ndebele - Сев. Ндебеле - - - Nepali - Непальский - - - Ndonga - Ндонга - - - Dutch - Голландский - - - Norwegian Nynorsk - Новонорвежский (нюнорск) - - - Norwegian - Норвежский - - - South Ndebele - Юж. Ндебеле - - - Navajo - Навахо - - - Chichewa - Чичева - - - Occitan - Французский (диалект Occitan) - - - Ojibwa - Оджибва - - - Oromo - Оромо - - - Oriya - Ория - - - Ossetian - Осетинский - - - Panjabi - Панджаби - - - Pali - Пали - - - Polish - Польский - - - Pashto - Пуштунский - - - Portuguese - Португальский - - - Quechua - Кечуа - - - Raeto-Romance - Романшский - - - Kirundi - Рунди - - - Romanian - Румынский - - - Russian - Русский - - - Kinyarwanda - Киньяруанда - - - Sanskrit - Санскрит - - - Sardinian - Сардинийский - - - Sindhi - Синдхи - - - Northern Sami - Северное Саами - - - Sango - Санго - - - Serbo-Croatian - Сербо-хорватский - - - Sinhala - Сингальский - - - Slovak - Словацкий - - - Slovenian - Словенский - - - Samoan - Самоа - - - Shona - Схона - - - Somali - Сомалийский - - - Albanian - Албанский - - - Serbian - Сербский - - - Swati - Свати - - - Southern Sotho - Юж. Сото - - - Sundanese - Сунданский - - - Swedish - Шведский - - - Swahili - Суахили - - - Tamil - Тамильский - - - Telugu - Телугу - - - Tajik - Таджикский - - - Thai - Тайский - - - Tigrinya - Тигринья - - - Turkmen - Туркменский - - - Tagalog - Тагалог - - - Tswana - Тсвана - - - Tonga - Тонга - - - Turkish - Турецкий - - - Tsonga - Тсонга - - - Tatar - Татарский - - - Twi - Тви - - - Tahitian - Таитянский - - - Uighur - Уйгурский - - - Ukrainian - Украинский - - - Urdu - Урду - - - Uzbek - Узбекский - - - Venda - Венда - - - Vietnamese - Вьетнамский - - - Volapuk - Волапюк - - - Walloon - Валлонский - - - Wolof - Уолоф - - - Xhosa - Кшоса - - - Yiddish - Идиш - - - Yoruba - Йоруба - - - Zhuang - Чжуанг - - - Chinese - Китайский - - - Zulu - Зулусский - - - %1 Morphology - %1 Morfologie - - - - HunspellDictsModel - - Enabled - Povoleno - - - Name - Jméno - - - - Initializing - - Please wait... - Prosím počkejte... - - - Please wait while indexing dictionary - Prosím počkejte na dokončení indexace slovníku - - - GoldenDict - Initializing - Načítám GoldenDict - - - Dictionary Name - Název slovníku - - - - Language - - Afar - Afarština - - - Abkhazian - Abcházština - - - Avestan - Avestan - - - Afrikaans - Afrikánština - - - Akan - Akan - - - Amharic - - - - Aragonese - Aragonština - - - Arabic - Arabština - - - Assamese - Ássamština - - - Avaric - Avarština - - - Aymara - Aymara - - - Azerbaijani - Ázerbajdžánština - - - Bashkir - Baškirština - - - Belarusian - Běloruština - - - Bulgarian - Bulharština - - - Bihari - Bihari - - - Bislama - Bislama - - - Bambara - Bambara - - - Bengali - Bengálština - - - Tibetan - Tibetština - - - Breton - Bretonština - - - Bosnian - Bosenština - - - Catalan - Katalánština - - - Chechen - Čečenština - - - Chamorro - Chamorro - - - Corsican - Korsičtina - - - Cree - Cree - - - Czech - Čeština - - - Church Slavic - Církevní Slovanština - - - Chuvash - Chuvash - - - Welsh - Welština - - - Danish - Dánština - - - German - Němčina - - - Divehi - Divehi - - - Dzongkha - Dzongkha - - - Ewe - Ewe - - - Greek - Řečtina - - - English - Angličtina - - - Esperanto - Esperanto - - - Spanish - Španělština - - - Estonian - Estonština - - - Basque - Baskičtina - - - Persian - Perština - - - Fulah - Fulah - - - Finnish - Finština - - - Fijian - Fijijština - - - Faroese - Faerština - - - French - Francouzština - - - Western Frisian - Západní Frýština - - - Irish - Irština - - - Scottish Gaelic - Skotská Gaelština - - - Galician - Galicijština - - - Guarani - Guarani - - - Gujarati - Gujarati - - - Manx - Manx - - - Hausa - Hausa - - - Hebrew - Hebrejština - - - Hindi - Hindština - - - Hiri Motu - Hiri Motu - - - Croatian - Chorvatština - - - Haitian - Haitština - - - Hungarian - Maďarština - - - Armenian - Arménština - - - Herero - Herero - - - Interlingua - Interlingua - - - Indonesian - Indonézština - - - Interlingue - Interlingue - - - Igbo - Igbo - - - Sichuan Yi - Sichuan Yi - - - Inupiaq - Inupiaq - - - Ido - Ido - - - Icelandic - Islandština - - - Italian - Italština - - - Inuktitut - Inuktitut - - - Japanese - Japonština - - - Javanese - Javánština - - - Georgian - Gruzínština - - - Kongo - Kongo - - - Kikuyu - Kikuyu - - - Kwanyama - Kwanyama - - - Kazakh - Kazaština - - - Kalaallisut - Kalaallisut - - - Khmer - Khmérština - - - Kannada - Kannada - - - Korean - Korejština - - - Kanuri - Kanuri - - - Kashmiri - Kashmiri - - - Kurdish - Kurdština - - - Komi - Komi - - - Cornish - - - - Kirghiz - Kirgizština - - - Latin - Latina - - - Luxembourgish - Lucemburština - - - Ganda - Ganda - - - Limburgish - Limburgština - - - Lingala - Lingala - - - Lao - Laoština - - - Lithuanian - Litevština - - - Luba-Katanga - Luba-Katanga - - - Latvian - Lotyšština - - - Malagasy - Malgaština - - - Marshallese - Marshallština - - - Maori - Maorština - - - Macedonian - Makedonština - - - Malayalam - Malayalam - - - Mongolian - Mangolština - - - Marathi - Marathi - - - Malay - Malajština - - - Maltese - Maltština - - - Burmese - Barmština - - - Nauru - Naurština - - - Norwegian Bokmal - Norština (Bokmal) - - - North Ndebele - Severní Ndebele - - - Nepali - Nepálština - - - Ndonga - Ndonga - - - Dutch - Holandština - - - Norwegian Nynorsk - Norština (Nynorsk) - - - Norwegian - Norština - - - South Ndebele - Jižní Ndebele - - - Navajo - Navajo - - - Chichewa - Chicheva - - - Occitan - Occitan - - - Ojibwa - Ojibwa - - - Oromo - Oromo - - - Oriya - Oriya - - - Ossetian - Ossetština - - - Panjabi - Panjábština - - - Pali - Pali - - - Polish - Polština - - - Pashto - Pastho - - - Portuguese - Portugalština - - - Quechua - Quechua - - - Raeto-Romance - Reto-Románština - - - Kirundi - Kirundi - - - Romanian - Rumunština - - - Russian - Ruština - - - Kinyarwanda - Kinyarwanda - - - Sanskrit - Sanskrit - - - Sardinian - Sardinština - - - Sindhi - Sindhi - - - Northern Sami - Severní Sami - - - Sango - Sango - - - Serbo-Croatian - Srbo-Chorvatština - - - Sinhala - Sinhaština - - - Slovak - Slovenština - - - Slovenian - Slovinština - - - Samoan - Samoiština - - - Shona - Shona - - - Somali - Somálština - - - Albanian - Albánština - - - Serbian - Srbština - - - Swati - Swati - - - Southern Sotho - Jižní Sotho - - - Sundanese - Sundanština - - - Swedish - Švédština - - - Swahili - Svahilština - - - Tamil - Tamil - - - Telugu - Telugu - - - Tajik - Tajičtina - - - Thai - Tahjština - - - Tigrinya - Tigrinya - - - Turkmen - Turkmenština - - - Tagalog - Tagalog - - - Tswana - Tswana - - - Tonga - Tswana - - - Turkish - Turečtina - - - Tsonga - Tsonga - - - Tatar - Tatarština - - - Twi - Twi - - - Tahitian - Tahitština - - - Uighur - Uigurština - - - Ukrainian - Ukrajinština - - - Urdu - Urdu - - - Uzbek - Uzbečtina - - - Venda - Venda - - - Vietnamese - Vietnamština - - - Volapuk - Volapuk - - - Walloon - Walonština - - - Wolof - Wolof - - - Xhosa - Xhosa - - - Yiddish - Yiddish - - - Yoruba - Yoruba - - - Zhuang - Zhuang - - - Chinese - Čínština - - - Zulu - Zulu - - - Traditional Chinese - Tradiční čínština - - - Simplified Chinese - Zjednodušená čínština - - - Other - Jiné - - - Other Simplified Chinese dialects - Jiné zjednodušené čínské dialekty - - - Other Traditional Chinese dialects - Jiné tradiční čínské dialekty - - - Other Eastern-European languages - Jiné východoevropské jazyky - - - Other Western-European languages - Jiné západoevropské jazyky - - - Other Russian languages - Jiné ruské jazyky - - - Other Japanese languages - Jiné japonské jazyky - - - Other Baltic languages - Jiné pobaltské jazyky - - - Other Greek languages - Jiné řecké jazyky - - - Other Korean dialects - Jiné korejské dialekty - - - Other Turkish dialects - Jiné turecké dialekty - - - Other Thai dialects - Jiné thajské dialekty - - - Tamazight - Tamazight - - - Lojban - Lojban - - - - LoadDictionaries - - Error loading dictionaries - Chyba při načítání slovníků - - - - Main - - Error in configuration file. Continue with default settings? - Chyba v konfiguračním souboru. Pokračovat s výchozím nastavením? - - - - MainWindow - - Navigation - Procházení - - - Back - Zpět - - - Forward - Vpřed - - - Scan Popup - Vyskakovací okno - - - Pronounce word - Произнести слово - - - Show &Main Window - Zobrazit hlav&ní okno - - - &Quit - U&končit - - - Loading... - Načítám... - - - Skip This Release - Přeskočit toto výdání - - - Page Setup - Nastavení stránky - - - No printer is available. Please install one first. - Není dostupná tiskárna. Prosím, přidejte nějakou. - - - Print Article - Vytisknout článek - - - Save Article As - Uložit článek jako - - - Html files (*.html *.htm) - Soubory Html (*.html *.htm) - - - Error - Chyba - - - Can't save article: %1 - Nemohu uložit článek: %1 - - - Error loading dictionaries - Ошибка при загрузке словарей - - - %1 dictionaries, %2 articles, %3 words - Slovníků: %1, článků: %2, slov: %3 - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Nepovedlo se inicializovat klávesové zkratky monitorujícícho mechanismu.<br>Ujistěte se, že má XServer zapnuto rozšíření RECORD. - - - New Release Available - Je dostupné nové vydání - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Verze<b>%1</b> programuGoldenDict je dostupná ke stažení.<br>Kliknutím na<b>Stáhnout</b> se přesunete na stránku souborů ke stažení. - - - Download - Stáhnout - - - Look up in: - Hledat v: - - - Pronounce Word (Alt+S) - Vyslovit slovo (Alt+S) - - - Zoom In - Přiblížit - - - Zoom Out - Oddálit - - - Normal Size - Normální velikost - - - Look up: - Vyhledat: - - - All - Vše - - - (untitled) - (nepojmenovaný) - - - WARNING: %1 - VAROVÁNÍ: %1 - - - GoldenDict - GoldenDict - - - Tab 1 - Tab 1 - - - Tab 2 - Tab 2 - - - Welcome! - Vítejte! - - - &File - &Soubor - - - &Edit - &Upravit - - - &Help - &Nápověda - - - &Preferences... - &Předvolby... - - - &Sources... - &Источники... - - - F2 - F2 - - - &Groups... - Sk&upiny... - - - &Dictionaries... - A&dresáře... - - - F3 - F3 - - - F4 - F4 - - - &Homepage - &Domovská stránka - - - &About - &O programu - - - About GoldenDict - О programu GoldenDict - - - F1 - F1 - - - Quit from application - Ukončit aplikaci - - - Ctrl+Q - Ctrl+Q - - - &Forum - &Fórum - - - &Close To Tray - Minimalizovat do systémového &panelu - - - Minimizes the window to tray - Minimalizuje do systémové lišty - - - Ctrl+F4 - Ctrl+F4 - - - &Save Article - Uložit článe&k - - - Save Article - Uložit článek - - - &Print - Vy&tisknout - - - Ctrl+P - Ctrl+P - - - Page Set&up - Nastavení st&ránky - - - Print Preview - Vytisknout náhled - - - Rescan Files - Znovu projít soubory - - - Ctrl+F5 - Ctrl+F5 - - - Search Pane - Vyhledávací panel - - - Ctrl+F11 - Ctrl+F11 - - - &View - &Pohled - - - Show Names in Dictionary Bar - Zobrazit názvy v pruhu slovníků - - - H&istory - H&istorie - - - &Clear - Vypráz&dnit - - - &Zoom - Přib&lížení - - - Words Zoom In - Přiblížit slova - - - Words Zoom Out - Oddálit slova - - - Words Normal Size - Normální velikost slov - - - Close current tab - Zavřít současnou kartu - - - Close all tabs - Zavřít všechny karty - - - Close all tabs except current - Zavřít všechny karty kromě současné - - - Opened tabs - Otevřené karty - - - New Tab - Nová karta - - - Ctrl+T - Ctrl+T - - - &Configuration Folder - Složka s nas&tavením - - - &Menubar - Pruh &nabídky - - - Found in Dictionaries: - Nalezeno ve slovnících: - - - Open Tabs List - Otevřít v seznamu karet - - - %1 - %2 - %1 - %2 - - - You have chosen to hide a menubar. Use %1 to show it back. - Rozhodli jste se skrýt pruh nabídky. Použijte %1 pro jeho zpětné zobrazení. - - - Ctrl+M - Ctrl+M - - - &Show - Zo&brazit - - - &Export - &Exportovat - - - &Hide - S&krýt - - - Export history to file - Exportovat historii do souboru - - - Text files (*.txt);;All files (*.*) - Textové soubory (*.txt);;Všechny soubory (*.*) - - - History export complete - Export historie byl dokončen - - - Export error: - Chyba exportu: - - - Ctrl+H - Ctrl+H - - - &Import - &Importovat - - - Import history from file - Importovat historii ze souboru - - - Import error: invalid data in file - Chyba importu: neplatná data v souboru - - - History import complete - Import historie byl dokončen - - - Import error: - Chyba importu: - - - Dictionary info - Informace o slovníku - - - Edit dictionary - Upravit slovník - - - &Search Pane - Vyhledávací pan&el - - - &Results Navigation Pane - Panel p&ro procházení výsledků - - - Print Pre&view - &Vytisknout náhled - - - &Rescan Files - Znovu p&rojít soubory - - - &New Tab - &Nová karta - - - &Always on Top - Vždy n&ahoře - - - Always on Top - Vždy nahoře - - - Ctrl+O - Ctrl+O - - - Menu Button - Tlačítko nabídky - - - Show Names in Dictionary &Bar - Zo&brazit názvy v pruhu slovníků - - - Show Small Icons in &Toolbars - Zobrazi&t malé ikony v nástrojových lištách - - - &Navigation - Procháze&ní - - - The main window is set to be always on top. - Hlavní okno je nastaveno vždy nahoře. - - - &History Pane - &Panel historie - - - Accessibility API is not enabled - API pro zpřístupnění není povoleno - - - Article, Complete (*.html) - Článek, Kompletní (*.html) - - - Article, HTML Only (*.html) - Článek, Pouze HTML (*.html) - - - Saving article... - Ukládá se článek... - - - Open dictionary folder - Otevřít složku slovníků - - - Dictionary headwords - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - Search - - - - Search in page - - - - Ctrl+F - - - - Full-text search - - - - Ctrl+Shift+F - - - - GoldenDict reference - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - Dictionary file was tampered or corrupted - Soubor slovníku byl změněn nebo poškozen - - - Failed loading article from %1, reason: %2 - Selhalo načtení článku z %1, důvod: %2 - - - - MediaWiki::MediaWikiArticleRequest - - XML parse error: %1 at %2,%3 - Chyba při zpracování XML: %1 v %2, %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - XML parse error: %1 at %2,%3 - Chyba při zpracování XML: %1 v %2, %3 - - - - MediaWikisModel - - Enabled - Povoleno - - - Name - Jméno - - - Address - Adresa - - - Icon - Ikona - - - - OrderAndProps - - Form - Formulář - - - Dictionary order: - Pořadí slovníků: - - - ... - ... - - - Inactive (disabled) dictionaries: - Neaktivní (vypnuté) slovníky: - - - Dictionary information - Informace o slovníku - - - Name: - Jméno: - - - Total articles: - Celkem článků: - - - Total words: - Celkem slov: - - - Translates from: - Překládá z: - - - Translates to: - Překládá do: - - - Files comprising this dictionary: - Soubory obsažené v tomto slovníku: - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Trochu divna formulace. - Upravte pořadí uchopením a přesunutím na požadované místo. Pšesuňte slovníky do neaktivní skupiny pro zakázání jejich použití. - - - Description: - Popis: - - - Sort by name - Seřadit podle názvu - - - Sort by languages - Seřadit podle jazyků - - - Dictionary headwords - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - Path - Cesta - - - Recursive - Rekurzívně - - - - Preferences - - Preferences - Předvolby - - - &Interface - &Rozhraní - - - Tabbed browsing - Prohlížení v kartách - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normálně se otevřením nové karty do ní automaticky přepnete. -Takto se budou nové karty otevírat bez přepnutí. - - - Open new tabs in background - Otevřít nové karty na pozadí - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - S touto volbou jsou nové karty otevřeny za používanou -kartou. Jinak jsou otevřeny jako poslední. - - - Open new tabs after the current one - Otevírat nové karty za současnou - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Pokud zapnuto, zobrazí se v systémovém panelu ikona, která pak může -být použita pro otevření hlavního okna a k provádění jiných úloh. - - - Enable system tray icon - Povolit ikonu v systémovém panelu - - - With this on, the application starts directly to system tray without showing -its main window. - S touto volbou se aplikace spustí rovnou do systémové lišty bez zobrazení -hlavního okna. - - - Start to system tray - Spustit se v systémovém panelu - - - With this on, an attempt to close main window would hide it instead of closing -the application. - S touto volbou pokus o zavření hlavního okna jej pouze skryje namísto -ukončení aplikace. - - - Close to system tray - Minimalizovat do systémové lišty - - - Startup - Spuštění - - - Automatically starts GoldenDict after operation system bootup - Automaticky spustí GoldenDict po spuštění systému - - - Start with system - Spustit se systémem - - - Interface language: - Jazyk rozhraní: - - - Display style: - Styl zobrazení: - - - Hotkeys - Klávesové zkratky - - - Use the following hotkey to show or hide the main window: - Použijte následující klávesovou zkratku pro zobrazení nebo zkrytí hlavního okna: - - - Use the following hotkey to translate a word from clipboard: - Použijte následující klávesu pro přeložení slova ze schránky: - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Klávesové zkratky jsou globální a fungují z jakéhokoliv programu a v jakémkoliv kontextu dokud GoldenDict běží na pozadí. - - - &Scan Popup - Vy&skakovací okno - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Pokud povoleno, pokaždé když najedete na obrazovce myší na slovo -(Windows) nebo jej označíte (Linux), zobrazí se okno s překladem. Když -je povoleno, můžete toto zapnout nebo vypnout v hlavním okně nebo -v ikoně v systémové liště. - - - Scan popup functionality - Показывать всплывающее окно - - - Enable scan popup functionality - Povolit vyskakovací okno - - - Chooses whether the scan popup mode is on by default nor not. If checked, -the program would always start with the scan popup active. - Určuje, zda je vyskakovací okno automaticky povoleno nebo zakázáno. Pokud -zaškrtnuto, program bude automaticky startovat s aktivovaným vyskakovacím oknem. - - - Start with scan popup turned on - Spouštět s povoleným vyskakovacím oknem - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Pokud toto zapnete, vyskakovací okno se zobrazí pouze pokud jsou -zvolené klávesy stisknuty při změně výběru. - - - Only show popup when all selected keys are kept pressed: - Zobrazit vyskakovací okno pouze pokud jsou podrženy vybrané klávesy: - - - Left Ctrl only - Pouze levý Ctrl - - - Left Ctrl - Levý Ctrl - - - Right Shift only - Pouze pravý Shift - - - Right Shift - Pravý Shift - - - Alt key - Klávesa Alt - - - Alt - Alt - - - Ctrl key - Klávesa Ctrl - - - Ctrl - Ctrl - - - Left Alt only - Pouze levý Alt - - - Left Alt - Levý Alt - - - Shift key - Klávesa Shift - - - Shift - Shift - - - Right Alt only - Pouze pravý Alt - - - Right Alt - Pravý Alt - - - Right Ctrl only - Pouze pravý Ctrl - - - Right Ctrl - Pravý Ctrl - - - Left Shift only - Pouze levý Shift - - - Left Shift - Levý Shift - - - Windows key or Meta key - Klávesa Windows nebo Meta - - - Win/Meta - Win/Meta - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shorty after the selection is done. - Normálně musíte pro aktivaci vyskakovacího okna -držet zkratkouvou klávesu během vybírání slova. -Takto stačí abyste tuto klávesu krátce stiskli až -po označení slova. - - - Keys may also be pressed afterwards, within - Klávesy poté mohou být stisknuty po - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Abyste se vyhnuli neúmyslnému spuštění, klávesy jsou -detekovány pouze pár sekund (počet můžete -nastavit zde) poté co označíte text. - - - secs - sekund (s) - - - &Audio - &Audio - - - Auto-pronounce words in main window - Automaticky vyslovovat slova v hlavním okně - - - Auto-pronounce words in scan popup - Automaticky vyslovovat slova ve vyskakovacím okně - - - Program to play audio files: - Program pro přehrávání audio souborů: - - - &Network - &Síť - - - Enable if you wish to use a proxy server -for all program's network requests. - Povolit pokud chcete použít proxy server -pro všechny síťové požadavky programu. - - - Use proxy server - Použít proxy server - - - Type: - Typ: - - - Host: - Hostitel: - - - Port: - Port: - - - User: - Uživatel: - - - Password: - Heslo: - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Pokud zapnuto, program periodicky kontroluje -jestli nebyla vydána novější verze programu GoldenDict. -Pokud se tak stalo, program informuje uživatele -a nabídne otevření stránky s aktualizací ke stažení. - - - Check for new program releases periodically - Periodicky kontrolovat dostupnost nových verzí - - - System default - Výchozí systému - - - English - Anglicky - - - Russian - Rusky - - - Default - Výchozí - - - Lingvo - Lingvo - - - Changing Language - Měním jazyk - - - Restart the program to apply the language change. - Restartujte program aby se provedla změna jazyka. - - - Automatically starts GoldenDict after operation system bootup. - Automaticky spustí GoldenDict po spuštění systému. - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Určuje, zda je vyskakovací okno automaticky povoleno nebo zakázáno. Pokud -zaškrtnuto, program bude automaticky startovat s aktivovaným vyskakovacím oknem. - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normálně musíte pro aktivaci vyskakovacího okna -držet zkratkouvou klávesu během vybírání slova. -Takto stačí abyste tuto klávesu krátce stiskli až -po označení slova. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Poznámka: Zdá se, že máte spuštěnu verzi ZServeru X.Org, která ma rozbité rozšíření RECORD. Zkratkové klávesy v GoldenDict nejspíš nebudou fungovat. Toto musí být opraveno v serveru samotném. Prosím, podívejte se na následující </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">chybové hlášení</span></a><span style=" color:#ff0000;"> a pokud chcete, zanechte komentář.</span></p></body></html> - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Toto umožní GoldenDictu blokovat většinu reklam nepovolením obsahu -(obrázky, rámce), který pochází z jiné stránky než kterou prohlížíte. -Pokud se kvůli tomuto některé stránky rozbijí, zkuste toto vypnout. - - - Disallow loading content from other sites (hides most advertisements) - Zakázat načítání obsahu z jiných stránek (skryje většinu reklam) - - - Pronunciation - Výslovnost - - - Playback - Přehrání - - - Play via Phonon - Pžehrát pomoci Phononu - - - Use external program: - Použít externí program: - - - Play via DirectShow - Přehrát pomocí DirectShow - - - Double-click translates the word clicked - Dvojklik přeloží označené slovo - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Použít nativní API Windows pro přehrávání. Podporuje pouze .wav, ale funguje velice dobře. - - - Play via Windows native API - Použít nativní API Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Přehrát audio pomocí Phononu. Může být poněkud nestabilní, -ale mělo by podporovat většinu audio formátů. - - - Use any external program to play audio files - Pro přehrání audio souborů použít externí program - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Vyberte tuto volbu pokud chcete aby se zobrazoval pruh s kartami ikdyž je otevřena jenom jedna karta. - - - Hide single tab - Skrýt jednu kartu - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Stisk ESC obvykle přepne na hlavní řádek překladu. -S touto volbou ale sryje hlavní okno. - - - ESC key hides main window - Klávesa ESC skryje hlavní okno - - - Send translated word to main window instead of to show it in popup window - Poslat přeložené slovo do hlavního okna namísto zobrazení ve vyskakovacím okně - - - Send translated word to main window - Poslat přeložené slovo do hlavního okna - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Pokud toto povolíte, umožníte poslech výslovností ze slovníků -online, jenž závisí na Flashi a jiných webových modulech. -Aby tato volba fungovala,.modul musí být nainstalován. - - - Enable web plugins - Powolit webové moduly - - - Ad&vanced - Pok&ročilé - - - ScanPopup extra technologies - Extra technologie vyskakovacího okna - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Pokusit se použít technologiiI AccessibleEx pro získání slova pod kurzorem. -Tato technologie pracuje pouze s některými programy které ji podporují - (např. Internet Explorer 9). -Pokud takové programy nepoužíváte, nemusíte tuto volbu zapínat. - - - Use &IAccessibleEx - Použít &IAccessibleEx - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Pokusit se použít technologiiI UI Automation pro získání slova pod kurzorem. -Tato technologie pracuje pouze s některými programy které ji podporují. -Pokud takové programy nepoužíváte, nemusíte tuto volbu zapínat. - - - Use &UIAutomation - Použít &UIAutomation - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Pokusit se použít speciální zprávu GoldenDict pro získání slova pod kurzorem. -Tato technologie pracuje pouze s některými programy které ji podporují. -Pokud takové programy nepoužíváte, nemusíte tuto volbu zapínat. - - - Use &GoldenDict message - Použít zprávu &GoldenDict - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab přepíná na naposled použité karty - - - Babylon - Babylon - - - History - Historie - - - Turn this option on to store history of the translated words - Zapněte tuto volbu pro ukládání historie překládaných slov - - - Store &history - Ukládat &historii - - - Articles - Články - - - Turn this option on to always expand optional parts of articles - Zapněte tuto volbu aby byly vždy rozbalovány volitelné části článků - - - Expand optional &parts - &Rozbalovat volitelné části - - - Turn this option on if you want to select words by single mouse click - Zapněte tuto volbu pokud chcete vybírat slova jedním kliknutím myši - - - Select word by single click - Vybírat slovo jedním kliknutím - - - Add-on style: - Styl doplňku: - - - Specify the maximum number of entries to keep in history. - Určete maximální počet záznamů, jenž se má uchovávat v historii. - - - Maximum history size: - Maximální velikost historie: - - - History saving interval. If set to 0 history will be saved only during exit. - Interval ukládání historie. Pokud nastaven na 0, historie bude uložena při ukončení. - - - Save every - Uložit každých - - - minutes - minut - - - Modern - Moderní - - - Lingoes - Lingoes - - - Lingoes-Blue - Lingoes-Blue - - - Play audio files via FFmpeg(libav) and libao - Přehrávat audio soubory přes FFmpeg(libav) a libao - - - Use internal player - Použít vlastní přehrávač - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Některé stránky detekují GoldenDict přes hlavičky HTTP a blokují jeho požadavky. -Povolením této volby problém obejdete. - - - Do not identify GoldenDict in HTTP headers - Neidentifikovat GoldenDict v lavičkách HTTP - - - Select this option to automatic collapse big articles - Vyberte tuto volbu pro automatické sbalení článků - - - Collapse articles more than - Sbalit čláky delší než - - - symbols - symboly - - - Adjust this value to avoid huge context menus. - Upravte tuto hodnotu abyste se vyhnuli velkým kontextovm nabídkám. - - - Context menu dictionaries limit: - Limit slovníků kontextové nabídky: - - - Articles longer than this size will be collapsed - Články delší než tato velikost budou sbaleny - - - System proxy - - - - Custom proxy - - - - Custom settings - - - - Full-text search - - - - Allow full-text search for: - - - - Don't search in dictionaries containing more than - - - - articles (0 - unlimited) - - - - Help language - - - - - ProgramTypeEditor - - Audio - Audio - - - Plain Text - Čistý text - - - Html - Html - - - Prefix Match - - - - Unknown - Neznámý - - - - Programs::RunInstance - - No program name was given. - Nebyl poskytnut název programu. - - - The program has crashed. - Program spadnul. - - - The program has returned exit code %1. - Program vrátil návratový kód %1. - - - - ProgramsModel - - Enabled - Povoleno - - - Type - Typ - - - Name - Název - - - Command Line - Příkazový řádek - - - Icon - Ikona - - - - QObject - - Article loading error - Chyba při načítání článku - - - Article decoding error - Chyba při rekódování článku - - - avformat_alloc_context() failed. - Selhal avformat_alloc_context(). - - - av_malloc() failed. - Selhal av_malloc(). - - - avio_alloc_context() failed. - Selhal avio_alloc_context(). - - - avformat_open_input() failed: %1. - Selhal avformat_open_input(): %1. - - - avformat_find_stream_info() failed: %1. - Selhal avformat_find_stream_info(): %1. - - - Could not find audio stream. - Nelze najít najít proud audio. - - - Codec [id: %1] not found. - Kodekc [id: %1] nenalezen. - - - avcodec_open2() failed: %1. - Selhal avcodec_open2(): %1. - - - Cannot find usable audio output device. - Nelze najít použitelné výstupní audio zařízení. - - - Unsupported sample format. - Nepodporovaný formát vzorku. - - - ao_open_live() failed: - Selhal ao_open_live(): - - - No driver. - Není ovladač. - - - This driver is not a live output device. - Tento ovladač není aktivní výstupní zařízení. - - - A valid option key has an invalid value. - Platná volba má neplatnou hodnotu. - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Nelze otevřít zařízení: %1, kanálů: %2, frekvence: %3, bitů: %4. - - - Unknown error. - Neznámá chyba. - - - avcodec_alloc_frame() failed. - Selhal avcodec_alloc_frame(). - - - - QuickFilterLine - - Dictionary search/filter (Ctrl+F) - Hledání-filtrování slovníků (Ctrl+F) - - - Quick Search - Rychlé hledání - - - Clear Search - Vymazat hledání - - - - ResourceToSaveHandler - - ERROR: %1 - CHYBA: %1 - - - Resource saving error: - Chyba při upkládání zdroje: - - - The referenced resource failed to download. - Odkázaný zdroj se nepovedlo stáhnout. - - - - Romaji - - Hepburn Romaji for Hiragana - Hepburn Romaji pro Hiraganu - - - Hepburn Romaji for Katakana - Hepburn Romaji pro Katakanu - - - - RussianTranslit - - Russian Transliteration - Ruský přepis - - - - ScanPopup - - %1 results differing in diacritic marks - %1 результатов отличаются диакритическими знаками - - - %1 result(s) beginning with the search word - %1 результатов начинаются с указанного слова - - - Dialog - Dialog - - - word - slovo - - - List Matches (Alt+M) - Vypsat shody (Alt+M) - - - Alt+M - Alt+M - - - Pronounce Word (Alt+S) - Vyslovit slovo (Alt+S) - - - Alt+S - Alt+S - - - List matches - Список совпадений - - - ... - ... - - - Pronounce word - Произнести слово - - - Shows or hides the dictionary bar - Zobrazí nebo zkryje pruh slovníků - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Toto použijte pro připíchnutí okna, aby zůstalo na obrazovce. -Lze měnit jeho velikost a může s ním být i jinak manipulováno. - - - Send word to main window (Alt+W) - Poslat slovo do hlavního okna (Alt+W) - - - Alt+W - Alt+W - - - Back - Zpět - - - Forward - Vpřed - - - GoldenDict - GoldenDict - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - Path - Cesta - - - Name - Jméno - - - Icon - Ikona - - - - Sources - - Choose a directory - Vyberte adresář - - - Confirm removal - Potvrdit odebrání - - - Remove directory <b>%1</b> from the list? - Odstranit adresář <b>%1</b> ze seznamu? - - - Remove site <b>%1</b> from the list? - Odstranit stránky <b>%1</b> ze seznamu? - - - Sources - Источники - - - Files - Soubory - - - Paths to search for the dictionary files: - Cesty k vyhledávání souborů slovníků: - - - &Add... - Přid&at... - - - &Remove - Odeb&rat - - - Re&scan now - Znovu &projít - - - Sound Dirs - Adresáře se zvukem - - - Make dictionaries from bunches of audiofiles by adding paths here: - Vytvořit ze skupin audio souborů slovníky tak, že zde vložíte jejich cesty: - - - Morphology - Morfologie - - - Path to a directory with Hunspell/Myspell dictionaries: - Cesta k adresáři se slovníky Hunspell/Myspell: - - - &Change... - Z&měnit... - - - Available morphology dictionaries: - Dostupné slovníky morfologie: - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Každý morfologický slovník se zobrazí jako -oddělený pomocný slovník, který -poskytuje klíčová slova pro hledání a -návrhy hláskování pro slova s překlepy. -Přidejte si pro jejich použitií vhodné adresáře -na spodek vhodných skupin. - - - Websites - Webové stránky - - - Any websites. A string %GDWORD% will be replaced with the query word: - Kteroukoliv stránku. Řetězec %GDWORD% bude nahrazen hledaným slovem: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Případně použijte %GD1251% pro CP1251, %GDISO1% pro ISO 8859-1. - - - Transliteration - Přepis - - - Russian transliteration - Ruský přepis - - - German transliteration - Německý přepis - - - Enables to use the Latin alphabet to write the Japanese language - Zapne psaní japonského jazyka Latinkou - - - Japanese Romaji - Japonština (Romaji) - - - Systems: - Systémy: - - - The most widely used method of transcription of Japanese, -based on English phonology - Nejčastěji používaná metoda přepisu Japonštiny, -založená na Anglické fonologii - - - Hepburn - Hepburn - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Nejobvyklejší systém mající vztah jedna ku jedné se zapisovacím -systémem kana. Standardizován jako ISO 3602. - -V GoldenDictu ještě není implementován. - - - Nihon-shiki - Nihon-shiki - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Založen na systému Nihon-shiki, ale upraven pro moderní standardní Japonštinu -standardizovanou jako ISO 3602. - -V GoldenDictu ještě není implementován. - - - Kunrei-shiki - Kunrei-shiki - - - Syllabaries: - Slabikáře: - - - Hiragana Japanese syllabary - Japonský slabokář Hiragana - - - Hiragana - Hiragana - - - Katakana Japanese syllabary - Japonský slabikář Katakana - - - Katakana - Katakana - - - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - Каждый морфологический словарь представляется в виде отдельного вспомогательного словаря, предоставляющего корни слов при поиске, а также варианты написания неправильно написанных слов. Для использования словарей добавляйте соответствующие словари в конец соответствующих групп. - - - Wikipedia - Wikipedia - - - Wikipedia (MediaWiki) sites: - Stránky Wikipedia (MediaWiki): - - - Forvo - Forvo - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Živá výslovnost z <a href="http://www.forvo.com/">forvo.com</a>. Stránky umožňují lidem nahrávat a sdílet výslovnosti slov. V GoldenDictu si je můžete poslechnout. - - - Enable pronunciations from Forvo - Povolit výslovnost z Forvo - - - API Key: - Klíč API: - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Použití Forvo vyžaduje API klíč. Ponechte toto pole prázdné -pro použití výchozího klíče, který se časem může stát nedostupný, -nebo se na stránkách zaregistrujte a získejte vlastní klíč. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Získejte vlastní klíč <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">zde</span></a>, nebo ponechte prázdné pro použití výchozího.</p></td></tr></table></body></html> - - - Language codes (comma-separated): - Kódy jazyků (oddělené čárkou): - - - List of language codes you would like to have. Example: "en, ru". - Seznam kódů jazyků, které byste chtěli. Např.: "en, ru". - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Plný seznam jazyků je dostupný <a href="http://www.forvo.com/languages-codes/">zde</a>. - - - Greek transliteration - Řecký přepis - - - (not available in portable version) - (nedostupné v portabilní verzi) - - - Programs - Programy - - - Remove program <b>%1</b> from the list? - Odstranit program <b>%1</b> ze seznamu? - - - Belarusian transliteration - Běloruský přepis - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Získejte <a href="http://api.forvo.com/key/">vlastní klíč</a>, nebo ponechte prázdné a použijte výchozí. - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Případně použijte %GD1251% pro CP1251, %GDISO1%...%GDISO16% pro ISO 8859-1...ISO 8859-16, nebo -%GDBIG5% pro Big-5, %GDBIG5HKSCS% pro Big5-HKSCS, %GDGBK% pro GBK a GB18030, %GDSHIFTJIS% pro Shift-JIS. - - - Text to Speech - Zvuková syntéza - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Všechny externí programy. Řetězec %GDWORD% bude nahrazen hledaným slovem. Pokud takový řetězec nebude předán, slovo bude posláno na standardní vstup. - - - DICT servers - - - - DICT servers: - - - - - StylesComboBox - - None - Žádná - - - - TextToSpeechSource - - Selected voice engines: - Zvolené syntetizátory hlasu: - - - &Add - Přid&at - - - &Remove - Odeb&rat - - - Preview - Náhled - - - Available voice engines: - Nedostupné syntetizátory hlasu: - - - Text to be previewed: - Text pro náhled: - - - Type text to be previewed here. - Zde napište text, jenž poslouží jako náhled. - - - &Preview - Náhle&d - - - No TTS voice available - Není dostupný hlas TTS - - - Confirm removal - Potvrdit odebrání - - - Remove voice engine <b>%1</b> from the list? - Odstranit syntetizátor vlasu <b>%1</b> ze seznamu? - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Nelze najít dostupný hlas TTS.<br>Prosím, ujistěte se, že aspoň jeden hlas TTS je již na vašem počítači nainstalován. - - - Preferences - Předvolby - - - Volume: - Hlasitost: - - - Rate: - Vzorkovací frekvence: - - - - TranslateBox - - Type a word or phrase to search dictionaries - Napište slovo nebo frázi pro hledání ve slovnících - - - Drop-down - Rozbalovací - - - - VoiceEnginesModel - - Enabled - Povoleno - - - Name - Název - - - Id - Id - - - Icon - Ikona - - - - WebSitesModel - - Enabled - Povoleno - - - Name - Jméno - - - Address - Adresa - - - Icon - Ikona - - - - WordFinder - - Failed to query some dictionaries. - Některé slovníky se nepovedlo zpracovat. - - - - WordList - - WARNING: %1 - VAROVÁNÍ: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/de_DE.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/de_DE.ts deleted file mode 100644 index c887a172b9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/de_DE.ts +++ /dev/null @@ -1,4821 +0,0 @@ - - - - - About - - - About - Über - - - - GoldenDict dictionary lookup program, version - GoldenDict, ein Programm zum Nachschlagen in Wörterbüchern, Version - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Danksagungen: - - - - Licensed under GNU GPLv3 or later - Lizensiert unter der GNU GPLv3 oder neuer - - - - [Unknown] - [Unbekannt] - - - - Based on Qt %1 (%2, %3 bit) - Basiert auf Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Artikel aufklappen - - - - Collapse article - Artikel einklappen - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - In <b>%2</b> wurde kein Eintrag für <b>%1</b> gefunden. - - - - No translation was found in group <b>%1</b>. - Kein Eintrag in Gruppe <b>%1</b> gefunden. - - - - Welcome! - Willkommen! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Willkommen bei <b>GoldenDict</b>!</h3><p>Damit Sie mit dem Programm beginnen können, besuchen Sie zunächst <b>Bearbeiten » Wörterbücher</b>, um Pfade zu gespeicherten Wörterbüchern hinzuzufügen, Wikipedia oder andere Seiten einzurichten, oder um die Wörterbücher zu ordnen bzw. um Sie in Gruppen zu unterteilen.</p> -<p>Dann sind Sie bereit, um das erste Wort nachzuschlagen! Dies können Sie im Fenster auf der linken Seite, oder <a href="Mit Popups arbeiten">mittels der Popup-Funktion in anderen Applikationen.</a></p> -<p>Um das Programm anzupassen, öffnen Sie <b>Bearbeiten » Einstellungen</b>. Alle Einstellungen haben Tooltips, die Ihnen helfen, die letzten Zweifel zu nehmen.</p> -<p>Sollten Sie trotzdem noch Hilfe brauchen, oder wenn Sie sonstige Fragen und Verbesserungsvorschlage haben, oder wenn Sie nur wissen wollen, was andere denken, dann finden Sie uns im <a href="hhttp://goldendict.org/forum/">Forum</a>. <p>Programmupdates sind auf der <a href="http://goldendict.org/">Website</a> zu finden.<p>(c) 2008-2013 Konstantin Isakov. Lizensiert unter der GPLv3 oder neuer. - - - - Working with popup - Mit Popups arbeiten - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Mit Popups arbeiten</h3>Um Wörter von anderen aktiven Applikationen nachzuschlagen, muss zunächst die <i>"Scan Popup Funktionalität"</i> in den <b>Einstellungen</b> aktiviert, und dann freigeschalten werden. Dies kann zu jeder Zeit über das 'Popup'-Symbol in der Werkzeugleiste, oder mittels Kontextmenü des Icons in der Symbolleiste geschehen. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Dann einfach mit der Mauszeiger über das Wort in der Applikation fahren, welches nachgeschlagen werden soll, und ein Fenster wird sichtbar wo es erklärt wird. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Dann einfach ein Wort mit der Maus (Doppelklicken oder bei gedrückten Tasten darüberfahren) markieren, welches nachgeschlagen werden soll. Dann öffnet sich ein Popup, welches das Wort beschreibt. - - - - (untitled) - (unbenannt) - - - - (picture) - (Bild) - - - - ArticleRequest - - - Expand article - Artikel aufklappen - - - - From - Von - - - - Collapse article - Artikel einklappen - - - - Query error: %1 - Abfragefehler: %1 - - - - Close words: - Ähnliche Wörter: - - - - Compound expressions: - Zusammengesetzte Treffer: - - - - Individual words: - Einzelne Wörter: - - - - ArticleView - - - Select Current Article - Aktuellen Artikel auswählen - - - - Copy as text - Als Text kopieren - - - - Inspect - Betrachten - - - - Resource - Ressource - - - - Audio - Audio - - - - TTS Voice - TTS Stimme - - - - Picture - Bild - - - - Definition from dictionary "%1": %2 - Definition vom Wörterbuch "%1": %2 - - - - Definition: %1 - Definition: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - Die angegebene Ressource existiert nicht. - - - - The referenced audio program doesn't exist. - Die angegebene Audioprogramm existiert nicht. - - - - - ERROR: %1 - FEHLER: %1 - - - - Save sound - Klang speichern - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Audiodateien (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Alle Dateien (*.*) - - - - Save image - Bild speichern - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Bilder (*.bmp *.jpg *.png *.tif);;Alle Dateien (*.*) - - - - &Open Link - &Link öffnen - - - - Video - Video - - - - Video: %1 - Video: %1 - - - - Open Link in New &Tab - Link in neuem Rei&ter öffnen - - - - Open Link in &External Browser - Link in &externen Browser öffnen - - - - &Look up "%1" - &Schlage "%1" nach - - - - Look up "%1" in &New Tab - Schlage "%1" in &neuem Reiter nach - - - - Send "%1" to input line - Sende "%1" an die Eingabezeile - - - - - &Add "%1" to history - Füge "%1" zum Verlauf &hinzu - - - - Look up "%1" in %2 - Schlage "%1" in %2 nach - - - - Look up "%1" in %2 in &New Tab - Schlage "%1" in %2 in &neuem Reiter nach - - - - WARNING: FFmpeg Audio Player: %1 - WARNUNG: FFmpeg Audio Player: %1 - - - Playing a non-WAV file - Abspielen einer Nicht-WAV-Datei - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Um das Abspielen von Dateien anders als WAV zu akivieren, müssen Sie in Bearbeiten » Einstellungen, im Reiter Audio die Option "Mit DirectShow abspielen" auswählen. - - - - Failed to run a player to play sound file: %1 - Konnte folgende Audiodatei nicht mit dem Player abspielen: %1 - - - - Failed to create temporary file. - Konnte keine temporäre Datei anlegen. - - - - Failed to auto-open resource file, try opening manually: %1. - Konnte die Ressource nicht automatisch öffnen; versuchen Sie es manuell: %1. - - - - The referenced resource failed to download. - Die angegebene Ressource konnte nicht heruntergeladen werden. - - - - Save &image... - Bild &speichern... - - - - Save s&ound... - &Klang speichern... - - - - WARNING: %1 - WARNUNG: %1 - - - - Form - Formular - - - - about:blank - about:blank - - - - x - x - - - - Find: - Suche: - - - - - &Previous - &Vorheriger - - - - - &Next - &Nächster - - - - Ctrl+G - Strg+G - - - - &Case Sensitive - &Groß und Kleinschreibung beachten - - - - Highlight &all - &Alles hervorheben - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Weißrussische Transliteration von latein nach kyrillisch (klassische Rechtschreibung) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Weißrussische Transliteration von latein nach kyrillisch (Schulrechtschreibung) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Weißrussische Transliteration (glättet die Unterschiede zwischen klassicher und Schulrechtschreibung im kyrillischen) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Passwort: - - - - DictGroupWidget - - - Form - Formular - - - - Group icon: - Gruppensymbol: - - - - Shortcut: - Tastenkürzel: - - - - None - Keines - - - - From file... - Aus Datei... - - - - Choose a file to use as group icon - - - - - Images - Bilder - - - - All files - Alle Dateien - - - - Error - Fehler - - - - Can't read the specified image file. - Konnte die angegebene Bilddatei nicht lesen. - - - - DictGroupsWidget - - - - - - Dictionaries: - Wörterbücher: - - - - Confirmation - Bestätigung - - - - Are you sure you want to generate a set of groups based on language pairs? - Möchten Sie wirklich eine Reihe von Gruppen basierend auf den Sprachpaaren erstellen? - - - - Unassigned - Nicht zugeordnet - - - - Combine groups by source language to "%1->" - Kombiniere Gruppen nach Quellsprache nach "%1->" - - - - Combine groups by target language to "->%1" - Kombiniere Gruppen nach Zielsprache nach "%1->" - - - - Make two-side translate group "%1-%2-%1" - Doppelseitige Übersetzungsgruppen erstellen: "%1-%2-%1" - - - - - Combine groups with "%1" - Gruppen kombinieren mit "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Textdateien(*.txt);;All Dateien(*.*) - - - - Export headwords... - - - - - Cancel - Abbrechen - - - - DictInfo - - - Total articles: - Artikel gesamt: - - - - Translates from: - Übersetzt von: - - - - Total words: - Wörter gesamt: - - - - Translates to: - Übersetzt nach: - - - - Open folder - Ordner öffnen - - - - Edit dictionary - Wörterbuch bearbeiten - - - - Files comprising this dictionary: - Wörterbuch zusammengesetzt aus diesen Dateien: - - - - Description: - Beschreibung: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Das Wörterbuch mit folgendem Kommando bearbeiten: -%1 - - - - DictListModel - - - %1 entries - %1 Einträge - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - - - - - Name - Name - - - - Address - Adresse - - - - Databases - - - - - Strategies - - - - - Icon - Icon - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Wörterbuchleiste - - - - &Dictionary Bar - &Wörterbuchleiste - - - - Extended menu with all dictionaries... - Erweitertes Menü mit allen Wörterbüchern... - - - - Edit this group - Diese Gruppe bearbeiten - - - - Dictionary info - Wörterbuchinfo - - - - Dictionary headwords - - - - - Open dictionary folder - Wörterbuch-Ordner öffnen - - - - Edit dictionary - Wörterbuch bearbeiten - - - - EditDictionaries - - - &Sources - &Quellen - - - - - &Dictionaries - &Wörterbücher - - - - - &Groups - &Gruppen - - - - Sources changed - Quellen geändert - - - - Some sources were changed. Would you like to accept the changes? - Einige Quellen haben sich geändert. Möchten Sie die Änderungen akzeptieren? - - - - Accept - Übernehmen - - - - Cancel - Abbrechen - - - - Dictionaries - Wörterbücher - - - - ExternalViewer - - - the viewer program name is empty - Der Name des Betrachtungsprogrammes is leer - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Fehler beim XML parsen: %1 bei %2,%3 - - - - Added %1 - Hinzugefügt %1 - - - - by - von - - - - Male - Mann - - - - Female - Frau - - - - from - aus - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Damit dieser Fehler verschwindet sollten Sie Bearbeiten » Wörterbücher » Forvo auswählen und ihren eigenen API-Schlüssel eintragen. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Abbrechen - - - - Help - - - - - GermanTranslit - - - German Transliteration - Deutsche Transliteration - - - - GreekTranslit - - - Greek Transliteration - Griechische Transliteration - - - - GroupComboBox - - - Choose a Group (Alt+G) - Gruppe auswählen (Alt+G) - - - - GroupSelectorWidget - - - Form - Formular - - - - Look in - Suche in - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Gruppe hinzufügen - - - - Give a name for the new group: - Geben Sie den Namen der neuen Gruppe ein: - - - - Rename group - Gruppe umbenennen - - - - Give a new name for the group: - Geben Sie den neuen Namen der Gruppe ein: - - - - Remove group - Gruppe entfernen - - - - Are you sure you want to remove the group <b>%1</b>? - Möchten Sie wirklich die Gruppe <b>%1</b> entfernen? - - - - - Remove all groups - Alle Gruppen entfernen - - - - Are you sure you want to remove all the groups? - Wollen Sie wirklich alle Gruppen entfernen? - - - - Dictionaries available: - Vorhandene Wörterbücher: - - - - Add selected dictionaries to group (Ins) - Ausgewählte Wörterbücher zur Gruppe hinzufügen (Einf) - - - - > - > - - - - Ins - Einf - - - - Remove selected dictionaries from group (Del) - Ausgewählte Wörterbücher von der Gruppe entfernen (Entf) - - - - < - < - - - - Del - Entf - - - - Groups: - Gruppen: - - - - Tab 2 - Reiter 2 - - - - Create new dictionary group - Eine neue Gruppe von Wörterbüchern erzeugen - - - - &Add group - Gruppe &hinzufügen - - - - Create language-based groups - Erzeugt sprachenbasierte Gruppen - - - - Auto groups - Automatische Gruppen - - - - Rename current dictionary group - Die ausgewählte Wörterbüchgruppe umbenennen - - - - Re&name group - Gruppe &umbenennen - - - - Remove current dictionary group - Die ausgewählte Wörterbuchgruppe entfernen - - - - &Remove group - Gruppe &entfernen - - - - Remove all dictionary groups - Alle Gruppen von Wörterbüchern entfernen - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Benutzen Sie &Drag & Drop um Wörterbücher zwischen oder innerhalb von Gruppen zu verschieben, oder um die Reihenfolge zu verändern. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Zurück - - - - Forward - - - - - Zoom In - Vergrößern - - - - Zoom Out - Verkleinern - - - - Normal Size - Normale Größe - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - Ausgewählte &löschen - - - - Copy Selected - Ausgewählte kopieren - - - - History: - Verlauf: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Verlaufsgröße: %1 von maximal %2 Einträgen - - - - Hunspell - - - Spelling suggestions: - Rechtschreibvorschläge: - - - - %1 Morphology - %1 Morphologie - - - - HunspellDictsModel - - - Enabled - Aktiv - - - - Name - Name - - - - Initializing - - - Please wait... - Bitte warten... - - - - - Please wait while indexing dictionary - Bitte warten Sie während die Wörterbücher initialisiert werden - - - - GoldenDict - Initializing - GoldenDict - Initialisierung - - - - Dictionary Name - Name des Wörterbuchs - - - - Language - - - Afar - Afar - - - - Abkhazian - Abkhazisch - - - - Avestan - Avestan - - - - Afrikaans - Afrikaans - - - - Akan - Akan - - - - Amharic - Amharisch - - - - Aragonese - Aragonesisch - - - - Arabic - Arabisch - - - - Assamese - Assamesisch - - - - Avaric - Avarisch - - - - Aymara - Aymara - - - - Azerbaijani - Aserbaijanisch - - - - Bashkir - Baschkir - - - - Belarusian - Weißrussisch - - - - Bulgarian - Bulgarisch - - - - Bihari - Magahi - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengali - - - - Tibetan - Tibetanisch - - - - Breton - Bretonisch - - - - Bosnian - Bosnisch - - - - Catalan - Katalanisch - - - - Chechen - Tschetschenisch - - - - Chamorro - Chamorro - - - - Corsican - Korsisch - - - - Cree - Cree - - - - Czech - Tschechisch - - - - Church Slavic - Kirchenslawisch - - - - Chuvash - Tschuwasch - - - - Welsh - Walisisch - - - - Danish - Dänisch - - - - German - Deutsch - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Griechisch - - - - English - Englisch - - - - Esperanto - Esperanto - - - - Spanish - Spanisch - - - - Estonian - Estnisch - - - - Basque - Baskisch - - - - Persian - Persisch - - - - Fulah - Fulfulde - - - - Finnish - Finnisch - - - - Fijian - Fijianisch - - - - Faroese - Färöisch - - - - French - Französisch - - - - Western Frisian - Westfriesisch - - - - Irish - Irisch - - - - Scottish Gaelic - Schottisch-Gälisch - - - - Galician - Galizisch - - - - Guarani - Guaraní - - - - Gujarati - Gujarati - - - - Manx - Manx - - - - Hausa - Hausa - - - - Hebrew - Hebräisch - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Kroatisch - - - - Haitian - Haitianisch - - - - Hungarian - Ungarisch - - - - Armenian - Armenisch - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonesisch - - - - Interlingue - Interlingue - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Inupiaq - - - - Ido - Ido - - - - Icelandic - Isländisch - - - - Italian - Italienisch - - - - Inuktitut - Inuktitut - - - - Japanese - Japanisch - - - - Javanese - Javanisch - - - - Georgian - Georgisch - - - - Kongo - Kongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Oshivambo - - - - Kazakh - Kasachisch - - - - Kalaallisut - Kalaallisut - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Koreanisch - - - - Kanuri - Kanuri - - - - Kashmiri - Kashmiri - - - - Kurdish - Kurdisch - - - - Komi - Komi - - - - Cornish - Cornisch - - - - Kirghiz - Kirghizstan - - - - Latin - Latein - - - - Luxembourgish - Luxemburgisch - - - - Ganda - Ganda - - - - Limburgish - Limburgisch - - - - Lingala - Lingala - - - - Lao - Laotisch - - - - Lithuanian - Litauisch - - - - Luba-Katanga - Kiluba - - - - Latvian - Litauisch - - - - Malagasy - Madagassisch - - - - Marshallese - Marshallesisch - - - - Maori - Maori - - - - Macedonian - Mazedonisch - - - - Malayalam - Malajalam - - - - Mongolian - Mongolisch - - - - Marathi - Marathi - - - - Malay - Malaysisch - - - - Maltese - Maltesisch - - - - Burmese - Burmesisch - - - - Nauru - Nauru - - - - Norwegian Bokmal - Bokmål - - - - North Ndebele - Nord-Ndebele - - - - Nepali - Nepali - - - - Ndonga - Ndonga - - - - Dutch - Holländisch - - - - Norwegian Nynorsk - Nynorsk - - - - Norwegian - Norwegisch - - - - South Ndebele - Süd-Ndebele - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Okzitanisch - - - - Ojibwa - Ojibwe - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Ossetisch - - - - Panjabi - Punjabi - - - - Pali - Pali - - - - Polish - Polnisch - - - - Pashto - Paschto - - - - Portuguese - Portugiesisch - - - - Quechua - Quechua - - - - Raeto-Romance - Rätoromanisch - - - - Kirundi - Kirundi - - - - Romanian - Rumänisch - - - - Russian - Russisch - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sanskrit - - - - Sardinian - Sardinisch - - - - Sindhi - Sindhi - - - - Northern Sami - Nordsamisch - - - - Sango - Sango - - - - Serbo-Croatian - Serbokroatisch - - - - Sinhala - Singhalesisch - - - - Slovak - Slowakisch - - - - Slovenian - Slovenisch - - - - Samoan - Samoanisch - - - - Shona - Shona - - - - Somali - Somali - - - - Albanian - Albanisch - - - - Serbian - Serbisch - - - - Swati - Swati - - - - Southern Sotho - Süd-Sotho - - - - Sundanese - Sundanesisch - - - - Swedish - Schwedisch - - - - Swahili - Swahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tadschikisch - - - - Thai - Thailändisch - - - - Tigrinya - Tigrinya - - - - Turkmen - Turkmenisch - - - - Tagalog - Tagalog - - - - Tswana - Setswana - - - - Tonga - Tongaisch - - - - Turkish - Türkisch - - - - Tsonga - Xitsonga - - - - Tatar - Tatar - - - - Twi - Twi - - - - Tahitian - Tahitianisch - - - - Uighur - Uigurisch - - - - Ukrainian - Ukrainisch - - - - Urdu - Urdu - - - - Uzbek - Usbekisch - - - - Venda - Tshivenda - - - - Vietnamese - Vietnamesisch - - - - Volapuk - Volapük - - - - Walloon - Wallonisch - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Jiddisch - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Chinesisch - - - - Zulu - Zulu - - - - Lojban - Lojban - - - - Traditional Chinese - Chinesisch traditionell - - - - Simplified Chinese - Chinesisch vereinfacht - - - - Other - Andere - - - - Other Simplified Chinese dialects - Andere vereinfacht Chinesische Dialekte - - - - Other Traditional Chinese dialects - Andere traditionell Chinesische Dialekte - - - - Other Eastern-European languages - Andere osteuropäische Sprachen - - - - Other Western-European languages - Andere westeuropäische Sprachen - - - - Other Russian languages - Andere russische Sprachen - - - - Other Japanese languages - Andere japanische Sprachen - - - - Other Baltic languages - Andere baltische Sprachen - - - - Other Greek languages - Andere griechische Sprachen - - - - Other Korean dialects - Andere koreanische Sprachen - - - - Other Turkish dialects - Andere türkische Sprachen - - - - Other Thai dialects - Andere thai Sprachen - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Fehler beim Laden der Wörterbücher - - - - Main - - - Error in configuration file. Continue with default settings? - Fehler in der Konfigurationsdatei. Mit Standardeinstellungen fortfahren? - - - - MainWindow - - Show Names in Dictionary Bar - Zeige Namen in Wörterbuchleiste - - - - &Menubar - &Menüleiste - - - - - Look up in: - Suche in: - - - - Found in Dictionaries: - In Wörterbüchern gefunden: - - - Navigation - Navigation - - - - Back - Zurück - - - - Forward - Vorwärts - - - - Scan Popup - Scan Popup - - - - Pronounce Word (Alt+S) - Wort aussprechen (Alt+S) - - - - Zoom In - Vergrößern - - - - Zoom Out - Verkleinern - - - - Normal Size - Normale Größe - - - - Words Zoom In - Suchwörter vergrößern - - - - Words Zoom Out - Suchwörter verkleinern - - - - Words Normal Size - Suchwörter in normaler Größe - - - - Show &Main Window - Im &Hauptfenster zeigen - - - - Close current tab - Aktuellen Reiter schließen - - - - Close all tabs - Alle Reiter schließen - - - - Close all tabs except current - Alle anderen Reiter schließen - - - - - Accessibility API is not enabled - Barrierefreiheit-API ist nicht aktiviert - - - - Article, Complete (*.html) - Artikel, komplett (*.html) - - - - Article, HTML Only (*.html) - Artikel, nur HTML (*.html) - - - - Saving article... - Artikel wird gespeichert... - - - - The main window is set to be always on top. - Das Hauptfenster ist eingestellt als immer im Vordergrund. - - - - &Hide - &Verbergen - - - - Export history to file - Verlauf in eine Datei exportieren - - - - - Text files (*.txt);;All files (*.*) - Textdateien(*.txt);;All Dateien(*.*) - - - - History export complete - Export des Verlaufes abgeschlossen - - - - Export error: - Exportfehler: - - - - Import history from file - Verlauf von Datei importieren - - - - Import error: invalid data in file - Importfehler: ungültige Daten in Datei - - - - History import complete - Import des Verlaufes abgeschlossen - - - - Import error: - Importfehler: - - - - Dictionary info - Wörterbuchinfo - - - - Dictionary headwords - - - - - Open dictionary folder - Wörterbuch-Ordner öffnen - - - - Edit dictionary - Wörterbuch bearbeiten - - - - Now indexing for full-text search: - - - - - - &Quit - B&eenden - - - - Loading... - Lade... - - - - - Welcome! - Willkommen! - - - - %1 dictionaries, %2 articles, %3 words - %1 Wörterbücher, %2 Artikel, %3 Wörter - - - - Look up: - Nachschlagen: - - - - All - Alle - - - - Opened tabs - Offene Reiter - - - - Show Names in Dictionary &Bar - Namen in &Wörterbuchleiste anzeigen - - - - Show Small Icons in &Toolbars - Kleine Icons in der &Toolbar anzeigen - - - - &Navigation - &Navigation - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Open Tabs List - Liste der Reiter öffnen - - - - (untitled) - (unbenannt) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - WARNUNG: %1 - - - GoldenDict - GoldenDict - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Der Mechanismus für die Tastenkürzel konnte nicht initialisiert werden.<br>Vergewissern Sie sich, dass der XServer die RECORD Erweiterung aktiviert hat. - - - - New Release Available - Neue Version verfügbar - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Version <b>%1</b> von GoldenDict ist nun zum Herunterladen verfügbar.<br>Klicken Sie auf <b>Herunterladen</b>, um zur Seite fürs Herunterladen zu gelangen. - - - - Download - Herunterladen - - - - Skip This Release - Diese Version überspringen - - - - You have chosen to hide a menubar. Use %1 to show it back. - Es wurde eingestellt die Menüleiste zu verstecken. Mit %1 kann sie wieder angezeigt werden. - - - - Ctrl+M - Strg+M - - - - Page Setup - Seite einrichten - - - - No printer is available. Please install one first. - Es ist kein Drucker vorhanden. Bitte zuerst einen installieren. - - - - Print Article - Drucke Artikel - - - - Save Article As - Artikel speichern als - - - Html files (*.html *.htm) - Html Dateien (*.html *.htm) - - - - Error - Fehler - - - - Can't save article: %1 - Kann Artikel nicht speichern: %1 - - - - &File - &Datei - - - - &Edit - &Bearbeiten - - - - &Help - &Hilfe - - - - &View - &Ansicht - - - - &Zoom - &Zoom - - - - H&istory - &Verlauf - - - Search Pane - Suchformular - - - - &Dictionaries... - &Wörterbücher... - - - - F3 - F3 - - - &Groups... - &Gruppen... - - - - Search - - - - - &Search Pane - &Suchformular - - - - &Results Navigation Pane - &Ergebnisliste - - - - &History Pane - &Verlaufsformular - - - - &Preferences... - &Einstellungen... - - - - F4 - F4 - - - - &Homepage - &Webseite - - - - &About - &Über - - - - About GoldenDict - Über GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Applikation beenden - - - - Ctrl+Q - Strg+Q - - - - &Forum - &Forum - - - - &Close To Tray - In die &Symbolleiste schließen - - - - Minimizes the window to tray - In the Symbolleiste minimieren - - - - Ctrl+F4 - Strg+F4 - - - - &Save Article - Artikel &speichern - - - - Save Article - Artikel speichern - - - - F2 - F2 - - - - &Print - &Drucken - - - - Ctrl+P - Strg+P - - - - Page Set&up - &Seite einrichten - - - - Print Pre&view - Druck&vorschau - - - - &Rescan Files - Dateien neu ein&lesen - - - - &New Tab - Neuer Rei&ter - - - - &Always on Top - &Immer im Vordergrund - - - - Always on Top - Immer im Vordergrund - - - - Ctrl+O - Strg+O - - - - - - Menu Button - Menüschaltfläche - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Druckvorschau - - - Rescan Files - Dateien neu einlesen - - - - Ctrl+F5 - Strg+F5 - - - - &Clear - &Zurücksetzen - - - - New Tab - Neuer Reiter - - - - Ctrl+T - Strg+T - - - - &Configuration Folder - &Konfigurationsordner - - - - - &Show - &Anzeigen - - - - Ctrl+H - Strg+H - - - - &Export - &Exportieren - - - - &Import - &Importieren - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Die Wörterbuchdatei war manipuliert oder korrupt - - - - Failed loading article from %1, reason: %2 - Konnte den Artikel von %1 nicht laden, Grund: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Fehler beim XML-parsen: %1 bei %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Fehler beim XML-parsen: %1 bei %2,%3 - - - - MediaWikisModel - - - Enabled - Aktiv - - - - Name - Name - - - - Address - Adresse - - - - Icon - Icon - - - - OrderAndProps - - - Form - Formular - - - - Dictionary order: - Reihenfolge der Wörterbücher: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Inaktive (deaktivierte) Wörterbücher: - - - - Dictionary information - Informationen über das Wörterbuch - - - - Name: - Name: - - - - Total articles: - Artikel insgesamt: - - - - Total words: - Wörter insgesamt: - - - - Translates from: - Übersetzt von: - - - - Translates to: - Übersetzt nach: - - - - Description: - Beschreibung: - - - - Files comprising this dictionary: - Wörterbuch zusammengesetzt aus diesen Dateien: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Verändern Sie die Reihenfolge mit Drag und Drop. Lassen sie ein Wörterbuch mittels Drag und Drop in der inaktiven Gruppe fallen, um es zu deaktivieren. - - - - Sort by name - Sortieren nach Name - - - - Sort by languages - Sortieren nach Sprachen - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Pfad - - - - Recursive - Rekursiv - - - - Preferences - - - System default - Systemvorgabe - - - - - Default - Standard - - - - Modern - Modern - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blau - - - Play via DirectShow - Mit DirectShow abspielen - - - - Changing Language - Sprache ändern - - - - Restart the program to apply the language change. - Starten Sie das Programm neu, um den Sprachwechsel abzuschließen. - - - - Preferences - Einstellungen - - - - &Interface - &Oberfläche - - - - Tabbed browsing - Reiter - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalerweise werden neue Reiter geöffnet und sofort selektioniert. -Mit dieser Option werden neue Reiter im Hintergrund geöffnet ohne -sie zu selektionieren. - - - - Open new tabs in background - Neue Reiter im Hintergrund öffnen - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Mit dieser Option werden neue Reiter nach dem aktuellen, sprich aktiven Reiter, geöffnet. -Andernfalls werden sie ans Ende hinzugefügt. - - - - Open new tabs after the current one - Neue Reiter nach dem aktuellen öffnen - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Falls aktiviert, erscheint ein Symbol in der Symbolleiste, mit welchem das -Hauptfenster geöffnet und andere Aufgaben getätigt werden können. - - - - Enable system tray icon - Aktiviert das Symbol in der Symbolleiste - - - - With this on, the application starts directly to system tray without showing -its main window. - Hiermit startet die Applikation direkt in die Symbolleiste ohne das Hauptfenster zu zeigen. - - - - Start to system tray - In die Symbolleiste starten - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Hiermit wird das Hauptfenster verborgen, falls die Applikation geschlossen wird. - - - - Close to system tray - In die Symbolleiste schließen - - - - Startup - Start - - - - Start with system - Mit Betriebssystem starten - - - - Interface language: - Sprache der Oberfläche: - - - - Display style: - Darstellung: - - - - &Scan Popup - &Scan Popup - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Falls aktiviert, wird jedes Mal, wenn die Maus über ein Wort am -Bildschirm fährt (Windows) oder ein Wort mit der Maus markiert wird (Linux), -das Popup-Fenster angezeigt. Falls aktiviert, kann dies im Hauptfenster -und in der Symbolleiste an- und abgeschaltet werden. - - - - Enable scan popup functionality - Aktiviert die Scan Popup Funktionalität - - - - Automatically starts GoldenDict after operation system bootup. - Startet GoldenDict automatisch nach jedem Systemstart. - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Wählen Sie diese Option, falls sie die Reiterleiste bei einem offenem Reiter nicht sehen möchten. - - - - Hide single tab - Einzelnen Tab ausblenden - - - - Ctrl-Tab navigates tabs in MRU order - Strg+Tab wechselt zwischen den zuletzt verwendeten Reitern - - - - Double-click translates the word clicked - Doppelklick übersetzt das angeklickte Wort - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Beim Betätigen der ESC-Taste wird normalerweise der Fokus an die Übersetzungszeile -übertragen. Mit dieser Option wird jedoch das Hauptfenster verborgen. - - - - ESC key hides main window - ESC-Taste verbirgt das Hauptfenster - - - - Turn this option on if you want to select words by single mouse click - Aktivieren Sie diese Option, falls Sie Wörter mit einem einfachem Mausklick auswählen möchten - - - - Select word by single click - Wort mit einfachem Klick auswählen - - - - Add-on style: - Add-on style: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Mit der Anpassung dieses Wertes können rießige Kontextmenüs vermieden werden. - - - - Context menu dictionaries limit: - Wörterbuchlimit im Kontextmenü: - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Gibt an, ob der Scan Popup Modus standardmäßig aktiviert ist oder nicht. Falls aktiviert, -wird das Programm immer mit aktiviertem Modus gestartet. - - - - Start with scan popup turned on - Mit aktiviertem Scan Popup starten - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Fallt aktiviert, wird das Scan Popup bei Änderung der Wortauswahl nur angezeigt, wenn alle ausgewählten Tasten gedrückt sind. - - - - Only show popup when all selected keys are kept pressed: - Nur Popup anzeigen, wenn alle ausgewählten Tasten gedrückt werden: - - - - Left Ctrl only - Nur Strg links - - - - Left Ctrl - Strg links - - - - Right Shift only - Nur Umschalttaste rechts - - - - Right Shift - Umschalttaste rechts - - - - Alt key - Alt-Taste - - - - Alt - Alt - - - - Ctrl key - Strg-Taste - - - - Ctrl - Strg - - - - Left Alt only - Nur Alt links - - - - Left Alt - Alt links - - - - Shift key - Umschalttaste - - - - Shift - Umschalttaste - - - - Right Alt only - Nur Alt rechts - - - - Right Alt - Alt rechts - - - - Right Ctrl only - Nur Strg rechts - - - - Right Ctrl - Strg rechts - - - - Left Shift only - Nur Umschalttaste links - - - - Left Shift - Umschalttaste links - - - - Windows key or Meta key - Windows/Meta-Taste - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalerweise müssen die entsprechenden Tasten, während -ein Wort markiert wird, gedrückt bleiben, -um das Scan Popup zu aktivieren. Mit dieser Option können die -Tasten auch kurz nach der Markierung gedrückt werden. - - - - Send translated word to main window instead of to show it in popup window - Übersetzte Wörter ans Hauptfenster senden, anstatt sie im Popup-Fenster anzuzeigen - - - - Send translated word to main window - Übersetzte Wörter ans Hauptfenster senden - - - - Playback - Abspielen - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Wählen Sie diese Option, falls Sie automatisch große Artikel einklappen möchten - - - - Collapse articles more than - Artikel einklappen mit mehr als - - - - Articles longer than this size will be collapsed - Artikel länger als diese Größe werden eingeklappt - - - - symbols - Symbolen - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Native Windowswiedergabe benutzen. Diese ist zwar auf .wav Dateien -beschränkt, funktioniert allerdings sehr gut. - - - Play via Windows native API - Nativ mit Windows abspielen - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Audiodateien mit den Phonon-Framework abspielen. Dies unterstützt die -meisten Audioformate, kann allerdings instabil sein. - - - Play via Phonon - Mit Phonon abspielen - - - - Use any external program to play audio files - Ein externes Program zum Abspielen der Audiodaten benutzen - - - - Use external program: - Externes Programm benutzen: - - - - Ad&vanced - &Erweitert - - - - ScanPopup extra technologies - ScanPopup-Extra-Technologie - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Es wird versucht die IAccessibleEx-Technologie zu benutzen, um das Wort unter dem Mauszeiger zu erkennen. -Dies funktioniert nur mit jenen Programmen, welche es unterstützen (zum Beispiel -Internet Explorer 9). -Sollte solche Programme nicht verwendet werden, wird diese Option nicht gebraucht. - - - - Use &IAccessibleEx - &IAccessibleEx verwenden - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Es wird versucht die UI-Automation-Technologie zu benutzen, um das Wort unter dem Mauszeiger zu erkennen. -Dies funktioniert nur mit jenen Programmen, welche es unterstützen. -Sollte solche Programme nicht verwendet werden, wird diese Option nicht gebraucht. - - - - Use &UIAutomation - &UIAutomation verwenden - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Es wird versucht GoldenDict-Mitteilung zu benutzen, um das Wort unter dem Mauszeiger zu erkennen. -Dies funktioniert nur mit jenen Programmen, welche es unterstützen. -Sollte solche Programme nicht verwendet werden, wird diese Option nicht gebraucht. - - - - Use &GoldenDict message - &GoldenDict Mitteilung verwenden - - - - History - Verlauf - - - - Turn this option on to store history of the translated words - Aktivieren Sie diese Option, um den Verlauf der übersetzten Wörter zu speichern. - - - - Store &history - &Verlauf speichern - - - - Specify the maximum number of entries to keep in history. - Geben Sie die maximale Anzahl von Einträgen im Verlauf an. - - - - Maximum history size: - Maximale Verlaufgröße: - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervall zum speichern des Verlaufs. Falls 0, wird der Verlauf beim Programmende gespeichert. - - - - Save every - Speichern alle - - - - minutes - Minuten - - - - Articles - Artikel - - - - Turn this option on to always expand optional parts of articles - Aktivieren Sie diese Option, um optionale Abschnitte von Artikeln immer zu erweitern. - - - - Expand optional &parts - Optionale &Abschnitte erweitern - - - - Keys may also be pressed afterwards, within - Die Tasten können auch im nachhinein innerhalb von - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Um Falschmeldungen zu vermeiden, werden -die Tasten nur für eine begrenzte Anzahl -Sekunden überwacht, wie hier angegeben. - - - - secs - Sekunde(n) gedrückt werden - - - - Hotkeys - Tastenkürzel - - - - Use the following hotkey to show or hide the main window: - Das folgende Tastenkürzel benutzen, um das Hauptfenster zu zeigen oder zu verbergen: - - - - Use the following hotkey to translate a word from clipboard: - Das folgende Tastenkürzel benutzen, um ein Wort von der Zwischenablage zu übersetzen: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Die Tastenkürzel sind global und funktionieren in jedem Programm und Kontext, sofern GoldenDict im Hintergrund läuft. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Achtung: Es scheicht, dass sie eine X.Org-XServer-Version benutzen, welche die RECORD-Erweiterung nicht richtig funktioniert. Deshalb werden Tastenkürzel höchstwahrscheinlich nicht funktionieren. Dies muss am Server selbst korrigiert werden. Dies bezieht sich auf folgenden </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">Fehlereintrag</span></a><span style=" color:#ff0000;">, welchen Sie, falls gewünscht, kommentieren können.</span></p></body></html> - - - - &Audio - &Audio - - - - Pronunciation - Aussprache - - - - Auto-pronounce words in main window - Wörter im Hauptfenster automatisch aussprechen - - - - Auto-pronounce words in scan popup - Wörter im Scan Popup automatisch aussprechen - - - - Play audio files via FFmpeg(libav) and libao - Audiodateien mit FFmpeg(libav) und libao abspielen - - - - Use internal player - Internen Abspieler verwenden - - - - &Network - &Netzwerk - - - - Enable if you wish to use a proxy server -for all program's network requests. - Aktivieren, falls ein Proxy-Server für alle Netzverbindungen des Programms verwendet werden soll. - - - - Use proxy server - Proxyserver verwenden - - - - Type: - Typ: - - - - Host: - Host: - - - - Port: - Port: - - - - User: - Benutzer: - - - - Password: - Passwort: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Dies zu aktivieren lässt GoldenDict die meiste Werbung blockieren, in dem Inhalte (Bilder, Frames) -aus Seiten blockiert werden, die nicht der jeweils angezeigten entsprechen. Sollten einige Seiten -nicht mehr funktionieren, kann das Deaktivieren dieser Option helfen. - - - - Disallow loading content from other sites (hides most advertisements) - Inhalte nicht von fremden Seiten laden (unterbindet meist Werbung) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Das Aktivieren erlaubt Audioaussprachen von Onlinewörterbüchern anzuhören, -welche auf Flash oder Webplugins basieren. -Ein Plugin muss für diese Option installiert sein. - - - - Enable web plugins - Webplugins aktivieren - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Einige Seiten erkennen GoldenDict mittels HTTP-Kopfzeilen und blockieren die Anfrage. -Diese Option kann dieses Problem beheben. - - - - Do not identify GoldenDict in HTTP headers - GoldenDict nicht in HTTP-Kopfzeilen identifizieren - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Falls aktiviert, prüft das Programm periodisch auf -neue Versionen. Sollte eine neuere Version verfügbar sein -informiert GoldenDict den Benutzer und öffnet eventuell die -Download-Seite. - - - - Check for new program releases periodically - Periodisch auf neue Programmversionen prüfen - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Klartext - - - - Html - Html - - - - Prefix Match - Präfixtreffer - - - - Unknown - Unbekannt - - - - Programs::RunInstance - - - No program name was given. - Kein Programmname wurde eingegeben. - - - - The program has crashed. - Das Programm ist abgestürzt. - - - - The program has returned exit code %1. - Das Program hat mit %1 beendet. - - - - ProgramsModel - - - Enabled - Aktiviert - - - - Type - Typ - - - - Name - Name - - - - Command Line - Kommandozeile - - - - Icon - Icon - - - - QObject - - - - Article loading error - Fehler beim Laden des Artikels - - - - - Article decoding error - Fehler beim Dekodieren des Artikels - - - - avformat_alloc_context() failed. - avformat_alloc_context() fehlgeschlagen. - - - - av_malloc() failed. - av_malloc() fehlgeschlagen. - - - - avio_alloc_context() failed. - avio_alloc_context() fehlgeschlagen. - - - - avformat_open_input() failed: %1. - avformat_open_input() fehlgeschlagen: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() fehlgeschlagen: %1. - - - - Could not find audio stream. - Konnte den Audiostream nicht finden. - - - - Codec [id: %1] not found. - Codec [id: %1] nicht gefunden. - - - - avcodec_open2() failed: %1. - avcodec_open2() fehlgeschlagen: %1. - - - - Cannot find usable audio output device. - Konnte kein verwendbares Audioausgabegerät finden. - - - - Unsupported sample format. - Nicht unterstütztes Abtastformat. - - - - ao_open_live() failed: - ao_open_live() fehlgeschlagen: - - - - No driver. - Kein Treiber. - - - - This driver is not a live output device. - Dieser Treiber ist kein aktives Ausgabegerät. - - - - A valid option key has an invalid value. - Ein gültiger Optionsschlüssel hat einen ungültigen Wert. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Konnte folgendes Gerät nicht öffnen: %1, Kanale: %2, Rate: %3, Bits: %4. - - - - Unknown error. - Fehler unbekannt. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() fehlgeschlagen. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Wörterbuch suchen/filtern (Strg+F) - - - - Quick Search - Schnellsuche - - - - Clear Search - Suche zurücksetzen - - - - ResourceToSaveHandler - - - - ERROR: %1 - FEHLER: %1 - - - - Resource saving error: - Fehler beim speichern der Ressource: - - - - The referenced resource failed to download. - Die Ressource konnte nicht heruntergeladen werden. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji für Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji für Katakana - - - - RussianTranslit - - - Russian Transliteration - Russische Transliteration - - - - ScanPopup - - - Dialog - Dialog - - - word - Wort - - - List Matches (Alt+M) - Treffer anzeigen (Alt+M) - - - - - - - - ... - ... - - - - Back - Zurück - - - - Forward - Weiter - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Wort aussprechen (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Wort an das Hauptfenster senden (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Zeigt oder versteckt die Wörterbuchleiste - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Hiermit kann das Fenster fixiert werden, damit es am Bildschirm bleibt, -es in der Größe verändert, oder andersweitig verwaltet werden kann. - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Pfad - - - - Name - Name - - - - Icon - Icon - - - - Sources - - - Text to Speech - Sprachausgabe - - - - (not available in portable version) - (nicht in der portablen Version) - - - - - - Choose a directory - Verzeichnis auswählen - - - - - - - - - Confirm removal - Löschung bestätigen - - - - - Remove directory <b>%1</b> from the list? - Soll das Verzeichnis <b>%1</b> von der Liste entfernt werden? - - - - - - Remove site <b>%1</b> from the list? - Soll die Seite <b>%1</b> von der Liste entfernt werden? - - - - Remove program <b>%1</b> from the list? - Soll das Programm <b>%1</b> von der Liste entfernt werden? - - - - Files - Dateien - - - - Paths to search for the dictionary files: - Pfad, um nach Wörterbuchdateien zu suchen: - - - - - - - - - &Add... - &Hinzufügen... - - - - - - - - - &Remove - &Entfernen - - - - Re&scan now - Neu ein&lesen - - - - Sound Dirs - Audioverzeichnis - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Wörterbücher von Audiodateien erstellen, in dem hier Verzeichnis eingefügt werden: - - - - Morphology - Morphologie - - - - Path to a directory with Hunspell/Myspell dictionaries: - Ordnerpfad mit Hunspell/Myspell Wörterbüchern: - - - - &Change... - Än&dern... - - - - Available morphology dictionaries: - Verfügbare Morphologie Wörterbücher: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Jedes Morphologie Wörterbuch scheint als -zusätzliches Hilfswörterbuch auf, welches -Stammwörter für Suchen und ähnliche - Schreibweisen für falsch geschriebene -Wörter bereitstellt. -Fügen Sie passende Wörterbücher am Ende -der passende Gruppe ein, um sie zu benutzen. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikipedia (MediaWiki) Seiten: - - - - Websites - Webseiten - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Jede Webseite. Der Text %GDWORD% wird mit dem Suchwort ersetzt: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Alternativ kann %GD1251% für CP1251 und %GDISO1% für ISO 8859-1 benutzt werden. - - - - Programs - Programme - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Aussprachen live von <a href="http://www.forvo.com/">forvo.com</a>. Diese Seite erlaubt es Menschen Aussprachen von Wörter aufzunehmen und zu teilen. Diese können in GoldenDict angehört werden. - - - - Enable pronunciations from Forvo - Aussprachen von Forvo aktivieren - - - - API Key: - API Schlüssel: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Die Benutzung von Forvo erfordert einen API-Schlüssel. Bei einem leeren -Wert, wird ein Standardschlüssel verwendet, welcher vielleicht in Zukunft ungültig -wird. Sie können sich auch auf der Seite registrieren, um ihren eigenen Schlüssel zu erhalten. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Holen Sie sich <a href="http://api.forvo.com/key/">hier</a> den eigenen Schlüssel, oder lassen Sie das Feld leer um den Standardschlüssel zu verwenden. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Erhalten Sie ihren eigenen Schlüssel <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">hier</span></a>, oder lassen Sie das Feld leer, um den Standardschlüssel zu verwenden.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Alternativ verwenden kann man, %GD1251% für CP1251, %GDISO1%...%GDISO16% für ISO 8859-1...ISO 8859-16 respektive, -%GDBIG5% für Big-5, %GDBIG5HKSCS% für Big5-HKSCS, %GDGBK% für GBK und GB18030, %GDSHIFTJIS% für Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Irgendwelche externe Programme. Der String %GDWORD% wird mit dem Suchwort ersetzt. Falls eine solche Zeichenkette nicht vorhanden ist, wird das Wort an die Standardeingabe geschickt. - - - - Language codes (comma-separated): - Sprachkodes (mit Beistrich getrennt): - - - - List of language codes you would like to have. Example: "en, ru". - Die Liste der Sprachkodes, welche Sie benutzen möchten. Zum Beispiel "de, en". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Die vollständige Liste der Sprachkodes ist <a href="http://www.forvo.com/languages-codes/">hier</a>. - - - - Transliteration - Transliteration - - - - Russian transliteration - Russische Transliteration - - - - Greek transliteration - Griechische Transliteration - - - - German transliteration - Deutsche Transliteration - - - - Belarusian transliteration - Weißrussische Transliteration - - - - Enables to use the Latin alphabet to write the Japanese language - Aktiviert das Verwenden des Lateinischen Alphabetes zum Schreiben der Japanischen Sprache - - - - Japanese Romaji - Japanisch Rōmaji - - - - Systems: - Systeme: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Die weitverbreiteste Methode zur Transkription vom Japanischen, -basierend auf der Englischen Aussprache - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Die regulärste System, mit eine 1 zu 1 Beziehung zum -Kana-Schrift-System. Standardisiert als ISO 3602 - -Noch nicht in GoldenDict implementiert. - - - - Nihon-shiki - Nippon - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Basierend auf dem Nippon-System, modifiziert fürs moderne Japanisch. -Standardisiert als ISO 3602 - -Noch nicht in GoldenDict implementiert. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Silbenschriften: - - - - Hiragana Japanese syllabary - Japanische Hiragana Silbenschrift - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Japanische Katakana Silbenschrift - - - - Katakana - Katakana - - - - StylesComboBox - - - None - Ohne - - - - TextToSpeechSource - - - Selected voice engines: - Ausgewählte Sprachmaschinen: - - - - &Add - &Hinzufügen - - - - &Remove - &Entfernen - - - - Preferences - Einstellungen - - - - Volume: - Lautstärke: - - - - Rate: - Rate: - - - - Preview - Vorschau - - - - Available voice engines: - Verfügbare Sprachmaschinen: - - - - Text to be previewed: - Text zur Vorschau: - - - - Type text to be previewed here. - Text für die Vorschau hier eingeben. - - - - &Preview - &Vorschau - - - - No TTS voice available - Keine TTS-Stimme verfügbar - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Konnte keine verfügbare TTS-Stimme finden.<br>Vergewissern Sie sich, dass bereits mindestens eine TTS-Maschine auf dem Computer installiert ist. - - - - Confirm removal - Löschung bestätigen - - - - Remove voice engine <b>%1</b> from the list? - Soll die Sprachmaschine <b>%1</b> von der Liste entfernt werden? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Ein Wort oder einen Satz eingeben um Wörterbücher zu durchsuchen - - - - Drop-down - Dropdown - - - - VoiceEnginesModel - - - Enabled - Aktiv - - - - Name - Name - - - - Id - Id - - - - Icon - Icon - - - - WebSitesModel - - - Enabled - Aktiv - - - - Name - Name - - - - Address - Adresse - - - - Icon - Icon - - - - WordFinder - - - Failed to query some dictionaries. - Einige Wörterbücher konnten nicht befragt werden. - - - - WordList - - - WARNING: %1 - WARNUNG: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/el_GR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/el_GR.ts deleted file mode 100644 index a81fb86b5d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/el_GR.ts +++ /dev/null @@ -1,4912 +0,0 @@ - - - - - - - XML parse error: %1 at %2,%3 - Σφάλμα ανάλυσης XML: %1 στο %2,%3 - - - - About - - - About - Περί - - - - GoldenDict dictionary lookup program, version - GoldenDict, πρόγραμμα αναζήτησης σε λεξικά, έκδοση - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Μνεία: - - - #.# - #.# - - - - Licensed under GNU GPLv3 or later - Διανέμεται υπό τους όρους της GNU GPLv3 ή νεότερης - - - - [Unknown] - [Άγνωστο] - - - - Based on Qt %1 (%2, %3 bit) - Βασίζεται στην Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Εμφάνιση άρθρου - - - - Collapse article - Απόκρυψη άρθρου - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Δε βρέθηκε μετάφραση του <b>%1</b> στην ομάδα <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Δε βρέθηκαν μεταφράσεις στην ομάδα <b>%1</b>. - - - - Welcome! - Καλώς ήλθατε! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Καλώς ήλθατε στο <b>GoldenDict</b>!</h3><p>Για να ξεκινήσετε, επιλέξτε <b>Επεξεργασία|Λεξικά</b>. Από εδώ μπορείτε να προσθέσετε φακέλους που περιέχουν λεξικά, να ενεργοποιήσετε την αναζήτηση στη Βικιπαίδεια ή άλλες πηγές, να αλλάξετε τη σειρά των λεξικών ή να δημιουργήσετε ομάδες λεξικών.<p>Μετά θα είστε έτοιμοι να ξεκινήσετε την αναζήτηση! Μπορείτε να αναζητάτε λέξεις από την αριστερή στήλη αυτού του παραθύρου, ή από <a href="Χρήση αναδυόμενου παραθύρου">οποιαδήποτε άλλη ανοιχτή εφαρμογή</a>.<p>Για να προσαρμόσετε το πρόγραμμα στις απαιτήσεις σας, δείτε τις διαθέσιμες ρυθμίσεις στο μενού <b>Επεξεργασία|Προτιμήσεις</b>. Όλες οι προτιμήσεις διαθέτουν χρήσιμες συμβουλές οθόνης, που μπορείτε να διαβάσετε τοποθετώντας το ποντίκι σας πάνω στην αντίστοιχη προτίμηση.<p>Για περαιτέρω βοήθεια, ερωτήματα, υποδείξεις, ή απλά για να διαβάσετε τις γνώμες άλλων χρηστών, μπορείτε να εγγραφείτε στο <a href="http://goldendict.org/forum/">φόρουμ</a> του προγράμματος. <p>Ενημερώσεις μπορείτε να βρείτε στον <a href="http://goldendict.org/">ιστότοπο</a> του προγράμματος.<p>(c) 2008-2013 Konstantin Isakov. Διανέμεται υπό τους όρους της GNU GPLv3 ή νεότερης έκδοσής της. - - - - Working with popup - Χρήση αναδυόμενου παραθύρου - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Χρήση αναδυόμενου παραθύρου</h3> Για να μπορείτε να αναζητάτε λέξεις που συναντήσατε σε άλλες ενεργές εφαρμογές, πρέπει πρώτα να ενεργοποιήσετε τη <i>"Λειτουργία αναδυόμενου παραθύρου"</i> από τις <b>Προτιμήσεις</b>. Μετά, θα μπορείτε να την ενεργοποιείτε όποτε θέλετε, είτε πατώντας το εικονίδιο "Αναδυόμενο παράθυρο" της εργαλειοθήκης, είτε κάνοντας δεξί κλικ στο εικονίδιο της περιοχής ειδοποιήσεων και επιλέγοντας την από το μενού. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Στη συνέχεια, θα μπορείτε να τοποθετείτε το δρομέα πάνω στις λέξεις που σας ενδιαφέρουν για να εμφανίζετε ένα παράθυρο με την επεξήγησή τους. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Στη συνέχεια, απλά επιλέξτε με το ποντίκι μια λέξη σε άλλη εφαρμογή (π.χ. με δεξί κλικ πάνω στη λέξη), και θα εμφανιστεί ένα παράθυρο με την επεξήγησή της. - - - - (untitled) - (ανώνυμο) - - - - (picture) - (εικόνα) - - - - ArticleRequest - - - Expand article - Εμφάνιση άρθρου - - - - From - Από - - - - Collapse article - Απόκρυψη άρθρου - - - - Query error: %1 - Σφάλμα αναζήτησης: %1 - - - - Close words: - Παρόμοια λήμματα: - - - - Compound expressions: - Σύνθετες εκφράσεις: - - - - Individual words: - Μεμονωμένες λέξεις: - - - - ArticleView - - - Select Current Article - Επιλογή τρέχοντος άρθρου - - - - Copy as text - Αντιγραφή ως κείμενο - - - - Inspect - Επιθεωρητής - - - - Resource - Πόρος - - - - Audio - Ήχος - - - - TTS Voice - Φωνή TTS - - - - Picture - Εικόνα - - - - Video - Βίντεο - - - - Video: %1 - Βίντεο: %1 - - - - Definition from dictionary "%1": %2 - Ορισμός στο λεξικό "%1": %2 - - - - Definition: %1 - Ορισμός: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - Δεν υπάρχει ο ζητούμενος πόρος. - - - - The referenced audio program doesn't exist. - Δεν υπάρχει το ζητούμενο πρόγραμμα ήχου. - - - - - ERROR: %1 - ΣΦΑΛΜΑ: %1 - - - - Save sound - Αποθήκευση ήχου - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Αρχείο ήχου (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Όλα τα αρχεία (*.*) - - - - Save image - Αποθήκευση εικόνας - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Αρχείο εικόνας (*.bmp *.jpg *.png *.tif);;Όλα τα αρχεία (*.*) - - - Resource saving error: - Σφάλμα αποθήκευσης: - - - - &Open Link - Άνοι&γμα συνδέσμου - - - - Open Link in New &Tab - Άνοιγμα συνδέσμου σε νέα &καρτέλα - - - - Open Link in &External Browser - Άνοιγμα συνδέσμου σε &εξωτερικό περιηγητή - - - - &Look up "%1" - Ανα&ζήτηση του "%1" - - - - Look up "%1" in &New Tab - Αναζήτηση του "%1" σε &νέα καρτέλα - - - - Send "%1" to input line - Αποστολή του "%1" στη γραμμή εισόδου - - - - - &Add "%1" to history - &Προσθήκη του "%1" στο ιστορικό - - - - Look up "%1" in %2 - Αναζήτηση του "%1" στο %2 - - - - Look up "%1" in %2 in &New Tab - Αναζήτηση του "%1" στο %2 σε &νέα καρτέλα - - - - WARNING: FFmpeg Audio Player: %1 - ΠΡΟΣΟΧΗ: Αναπαραγωγή ήχου FFmpeg: %1 - - - Playing a non-WAV file - Αναπαραγωγή μη WAV αρχείου - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Για αναπαραγωγή αρχείων που δεν είναι της μορφής WAV, παρακαλώ επιλέξτε Επεξεργασία|Προτιμήσεις, καρτέλα Ήχος, και σημειώστε την επιλογή "Αναπαραγωγή μέσω DirectShow". - - - Bass library not found. - Δε βρέθηκε η βιβλιοθήκη Bass. - - - Bass library can't play this sound. - Η βιβλιοθήκη Bass δεν μπορεί να αναπαράγει αυτόν τον ήχο. - - - - Failed to run a player to play sound file: %1 - Δεν ήταν δυνατή η αναπαραγωγή του αρχείου ήχου: %1 - - - - Failed to create temporary file. - Απέτυχε η δημιουργία προσωρινού αρχείου. - - - - Failed to auto-open resource file, try opening manually: %1. - Απέτυχε το αυτόματο άνοιγμα του αρχείου· δοκιμάστε να το ανοίξετε χειροκίνητα: %1. - - - - The referenced resource failed to download. - Απέτυχε η λήψη του ζητούμενου πόρου. - - - - Save &image... - Αποθήκευση &Εικόνας... - - - - Save s&ound... - Αποθήκευση ή&χου... - - - - WARNING: %1 - ΠΡΟΣΟΧΗ: %1 - - - - Form - Μορφή - - - - about:blank - about:blank - - - - x - x - - - - Find: - Εύρεση: - - - - - &Previous - &Προηγούμενο - - - - - &Next - &Επόμενο - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Διάκριση πεζών/κεφαλαίων - - - - Highlight &all - Επι&σήμανση Όλων - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Μεταγραφή λευκορωσικών (λατινικό προς κυριλλικό αλφάβητο, -κλασική ορθογραφία) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Μεταγραφή λευκορωσικών (λατινικό προς κυριλλικό αλφάβητο, -σχολική ορθογραφία) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Μεταγραφή λευκορωσικών (απαλείφει τις διαφορές μεταξύ -κλασικής και σχολικής ορθογραφίας στο κυριλλικό αλφάβητο) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Κωδικός: - - - - DictGroupWidget - - - Form - Μορφή - - - - Group icon: - Εικονίδιο ομάδας: - - - - Shortcut: - Συντόμευση: - - - - None - Κανένα - - - - From file... - Από αρχείο... - - - - Choose a file to use as group icon - Επιλέξτε ένα αρχείο για να το χρησιμοποιήσετε ως εικονίδιο της ομάδας - - - - Images - Εικόνες - - - - All files - Όλα τα αρχεία - - - - Error - Σφάλμα - - - - Can't read the specified image file. - Αδυναμία ανάγνωσης του επιλεγμένου αρχείου. - - - - DictGroupsWidget - - - - - - Dictionaries: - Λεξικά: - - - - Confirmation - Επιβεβαίωση - - - - Are you sure you want to generate a set of groups based on language pairs? - Σίγουρα θέλετε να δημιουργήσετε ομάδες για όλα τα διαθέσιμα ζεύγη γλωσσών; - - - - Unassigned - Αταξινόμητα - - - - Combine groups by source language to "%1->" - Συνδυασμός ομάδων ανά γλώσσα πηγή ως "%1->" - - - - Combine groups by target language to "->%1" - Συνδυασμός ομάδων ανά γλώσσα στόχο ως "->%1" - - - - Make two-side translate group "%1-%2-%1" - Δημιουργία ομάδας αμφίδρομης μετάφρασης "%1-%2-%1" - - - - - Combine groups with "%1" - Συνδυασμός των ομάδων με "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Αρχεία κειμένου (*.txt);;Όλα τα αρχεία (*.*) - - - - Export headwords... - - - - - Cancel - Ακύρωση - - - - DictInfo - - - Total articles: - Σύνολο άρθρων: - - - - Translates from: - Μεταφράζει από: - - - - Total words: - Σύνολο λημμάτων: - - - - Translates to: - Μεταφράζει σε: - - - - Open folder - Άνοιγμα φακέλου - - - - Edit dictionary - Επεξεργασία λεξικού - - - - Files comprising this dictionary: - Αρχεία λεξικού: - - - - Description: - Περιγραφή: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Επεξεργασία του λεξικού με χρήση της εντολής: %1 - - - - DictListModel - - - %1 entries - %1 λήμματα - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - - - - - Name - Όνομα - - - - Address - Διεύθυνση - - - - Databases - - - - - Strategies - - - - - Icon - Εικονίδιο - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Γραμμή λεξικών - - - - &Dictionary Bar - Γραμμή &λεξικών - - - - Extended menu with all dictionaries... - Πλήρες μενού με όλα τα λεξικά... - - - - Edit this group - Επεξεργασία αυτής της ομάδας - - - - Dictionary info - Πληροφορίες λεξικού - - - - Dictionary headwords - - - - - Open dictionary folder - Άνοιγμα φακέλου λεξικού - - - - Edit dictionary - Επεξεργασία λεξικού - - - - EditDictionaries - - - &Sources - &Πηγές - - - - - &Dictionaries - &Λεξικά - - - - - &Groups - &Ομάδες - - - - Sources changed - Οι πηγές άλλαξαν - - - - Some sources were changed. Would you like to accept the changes? - Ορισμένες πηγές άλλαξαν. Αποδέχεστε τις αλλαγές; - - - - Accept - Αποδοχή - - - - Cancel - Ακύρωση - - - - Dictionaries - Λεξικά - - - - ExternalViewer - - - the viewer program name is empty - δεν έχει οριστεί πρόγραμμα προβολής - - - - FTS::FtsIndexing - - None - Κανένα - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Κανένα - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Κανένα - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Σφάλμα ανάλυσης XML: %1 στο %2,%3 - - - - Added %1 - Προστέθηκε στις %1 - - - - by - από - - - - Male - Ανδρική φωνή - - - - Female - Γυναικεία φωνή - - - - from - από - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Πηγαίνετε στο Επεξεργασία|Λεξικά|Πηγές|Forvo και εισάγετε το δικό σας κλειδί API για πάψει να εμφανίζεται το σφάλμα. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Ακύρωση - - - - Help - - - - - GermanTranslit - - - German Transliteration - Μεταγραφή Γερμανικών - - - - GreekTranslit - - - Greek Transliteration - Μεταγραφή Ελληνικών - - - - GroupComboBox - - - Choose a Group (Alt+G) - Επιλογή ομάδας (Alt+G) - - - - GroupSelectorWidget - - - Form - Μορφή - - - - Look in - Αναζήτηση σε - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Προσθήκη ομάδας - - - - Give a name for the new group: - Εισάγετε το όνομα της νέας ομάδας: - - - - Rename group - Μετονομασία ομάδας - - - - Give a new name for the group: - Εισάγετε το νέο όνομα της ομάδας: - - - - Remove group - Αφαίρεση ομάδας - - - - Are you sure you want to remove the group <b>%1</b>? - Σίγουρα θέλετε να αφαιρέσετε την ομάδα <b>%1</b>; - - - - - Remove all groups - Αφαίρεση όλων των ομάδων - - - - Are you sure you want to remove all the groups? - Σίγουρα θέλετε να αφαιρέσετε όλες τις ομάδες; - - - - Dictionaries available: - Διαθέσιμα λεξικά: - - - - Add selected dictionaries to group (Ins) - Προσθήκη των επιλεγμένων λεξικών στην ομάδα (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Αφαίρεση επιλεγμένων λεξικών από την ομάδα (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Ομάδες: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Δημιουργία νέας ομάδας λεξικών - - - - &Add group - Προσ&θήκη ομάδας - - - - Create language-based groups - Δημιουργία ομάδων με βάση τις διαθέσιμες γλώσσες - - - - Auto groups - Αυτόματη ομαδοποίηση - - - - Rename current dictionary group - Μετονομασία τρέχουσας ομάδας λεξικών - - - - Re&name group - &Μετονομασία ομάδας - - - - Remove current dictionary group - Αφαίρεση τρέχουσας ομάδας λεξικών - - - - &Remove group - Α&φαίρεση ομάδας - - - - Remove all dictionary groups - Αφαίρεση όλων των ομάδων λεξικών - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Χρησιμοποιήστε το ποντίκι σας για να σύρετε λεξικά από και προς τις ομάδες, καθώς και για να αλλάξετε τη σειρά των λεξικών ή των ομάδων. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Πίσω - - - - Forward - Μπροστά - - - - Zoom In - Μεγέθυνση - - - - Zoom Out - Σμίκρυνση - - - - Normal Size - Κανονικό μέγεθος - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Διαγραφή επιλεγμένων - - - - Copy Selected - Αντιγραφή επιλεγμένων - - - - History: - Ιστορικό: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Μέγεθος ιστορικού: %1 λήμματα από μέγιστο αριθμό %2 - - - - Hunspell - - - Spelling suggestions: - Προτάσεις ορθογραφίας: - - - - %1 Morphology - Μορφολογία για %1 - - - - HunspellDictsModel - - - Enabled - Ενεργή - - - - Name - Όνομα - - - - Initializing - - - Please wait... - Παρακαλώ περιμένετε... - - - - - Please wait while indexing dictionary - Παρακαλώ περιμένετε να ολοκληρωθεί η δημιουργία ευρετηρίου - - - - GoldenDict - Initializing - GoldenDict - Έναρξη - - - - Dictionary Name - Όνομα λεξικού - - - - Language - - - Afar - Afar - - - - Abkhazian - Αμπκχαζικά - - - - Avestan - Avesta - - - - Afrikaans - Afrikaans - - - - Akan - Akanα - - - - Amharic - Αμχαρικά - - - - Aragonese - Αραγόνας - - - - Arabic - Αραβικά - - - - Assamese - Assam - - - - Avaric - Αβαρικά - - - - Aymara - Aymar - - - - Azerbaijani - Αζέρικα - - - - Bashkir - Bašqort - - - - Belarusian - Λευκορωσικά - - - - Bulgarian - Βουλγαρικά - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bamanankan - - - - Bengali - Bengali - - - - Tibetan - Θιβετιανά - - - - Breton - Βρετάννης - - - - Bosnian - Βοσνιακά - - - - Catalan - Καταλανικά - - - - Chechen - Τσετσενικά - - - - Chamorro - Chamoru - - - - Corsican - Κορσικανικά - - - - Cree - Nehiyaw - - - - Czech - Τσεχικά - - - - Church Slavic - Εκκλησιαστικά Σλαβικά - - - - Chuvash - Čăvašla - - - - Welsh - Ουαλλικά - - - - Danish - Δανέζικα - - - - German - Γερμανικά - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Eʋegbe - - - - Greek - Ελληνικά - - - - English - Αγγλικά - - - - Esperanto - Εσπεράντο - - - - Spanish - Ισπανικά - - - - Estonian - Εσθονικά - - - - Basque - Βασκικά - - - - Persian - Περσικά - - - - Fulah - Fulfulde - - - - Finnish - Φιλανδικά - - - - Fijian - Φίτζι - - - - Faroese - Føroyskt - - - - French - Γαλλικά - - - - Western Frisian - Frysk - - - - Irish - Ιρλανδικά - - - - Scottish Gaelic - Σκωτσέζικα - - - - Galician - Γαλικιανά - - - - Guarani - Guaraní - - - - Gujarati - Gujarati - - - - Manx - Gaelg - - - - Hausa - Hausa - - - - Hebrew - Εβραϊκά - - - - Hindi - Ινδικά - - - - Hiri Motu - Hiri Motu - - - - Croatian - Κροατικά - - - - Haitian - Αϊτιανά - - - - Hungarian - Ουγγρικά - - - - Armenian - Αρμενικά - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Ινδονησιακά - - - - Interlingue - Interlingue - - - - Igbo - Igbo - - - - Sichuan Yi - Nuosu - - - - Inupiaq - Iñupiak - - - - Ido - Ido - - - - Icelandic - Ισλανδικά - - - - Italian - Ιταλικά - - - - Inuktitut - Inuktitut - - - - Japanese - Ιαπωνικά - - - - Javanese - Ιάβας - - - - Georgian - Γεωργιανά - - - - Kongo - Κονγκολέζικα - - - - Kikuyu - Κικούγιου - - - - Kwanyama - Kwanyama - - - - Kazakh - Καζακικά - - - - Kalaallisut - Γροιλανδικά - - - - Khmer - Χμερ - - - - Kannada - Kannada - - - - Korean - Κορεατικά - - - - Kanuri - Kanuri - - - - Kashmiri - Κασμίρ - - - - Kurdish - Κουρδικά - - - - Komi - Komi - - - - Cornish - Κορνουάλης - - - - Kirghiz - Κιργιζικά - - - - Latin - Λατινικά - - - - Luxembourgish - Λουξεμβούργου - - - - Ganda - Luganda - - - - Limburgish - Λιμβούργου - - - - Lingala - Lingala - - - - Lao - Λαοτιανά - - - - Lithuanian - Λιθουανικά - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Λετονικά - - - - Malagasy - Μαλγασικά - - - - Marshallese - Νήσων Μάρσαλ - - - - Maori - Μαορί - - - - Macedonian - Σλαβομακεδονικά - - - - Malayalam - Malayalam - - - - Mongolian - Μογγολικά - - - - Marathi - Marathi - - - - Malay - Μαλαισιανά - - - - Maltese - Μαλτέζικα - - - - Burmese - Βιρμανίας - - - - Nauru - Ναουρού - - - - Norwegian Bokmal - Νορβηγικά, Bokmal - - - - North Ndebele - Βόρεια Ndebele - - - - Nepali - Νεπαλέζικα - - - - Ndonga - Ndonga - - - - Dutch - Ολλανδικά - - - - Norwegian Nynorsk - Νορβηγικά, Nynorsk - - - - Norwegian - Νορβηγικά - - - - South Ndebele - Νότια Ndebele - - - - Navajo - Νάβαχο - - - - Chichewa - Chichewa - - - - Occitan - Οξιτανικά - - - - Ojibwa - Ojibwa - - - - Oromo - Oromoo - - - - Oriya - Oriya - - - - Ossetian - Οσετικά - - - - Panjabi - Panjabi - - - - Pali - Pali - - - - Polish - Πολωνικά - - - - Pashto - Αφγανικά - - - - Portuguese - Πορτογαλικά - - - - Quechua - Quechua - - - - Raeto-Romance - Ρετο-ρωμανικά - - - - Kirundi - Kirundi - - - - Romanian - Ρουμανικά - - - - Russian - Ρωσικά - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Σανσκριτικά - - - - Sardinian - Σαρδηνίας - - - - Sindhi - Sindhi - - - - Northern Sami - Βόρεια Σάμι - - - - Sango - Sango - - - - Serbo-Croatian - Σερβοκροατικά - - - - Sinhala - Sinhala - - - - Slovak - Σλοβακικά - - - - Slovenian - Σλοβενικά - - - - Samoan - Σαμόας - - - - Shona - Shona - - - - Somali - Σομαλέζικα - - - - Albanian - Αλβανικά - - - - Serbian - Σερβικά - - - - Swati - Swati - - - - Southern Sotho - Νότια Sotho - - - - Sundanese - Sunda - - - - Swedish - Σουηδικά - - - - Swahili - Σουαχίλι - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Τατζικικά - - - - Thai - Ταϋλανδέζικα - - - - Tigrinya - Tigrinya - - - - Turkmen - Τουρκμενικά - - - - Tagalog - Tagalog - - - - Tswana - Setswana - - - - Tonga - Tonga - - - - Turkish - Τουρκικά - - - - Tsonga - Xitsonga - - - - Tatar - Ταταρικά - - - - Twi - Twi - - - - Tahitian - Ταϊτής - - - - Uighur - Ουιγουρικά - - - - Ukrainian - Ουκρανικά - - - - Urdu - Urdu - - - - Uzbek - Ουζμπεκικά - - - - Venda - Tshivenda - - - - Vietnamese - Βιετναμέζικα - - - - Volapuk - Volapük - - - - Walloon - Βαλονικά - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Γίντις - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Κινέζικα - - - - Zulu - Ζουλού - - - - Lojban - Lojban - - - - Traditional Chinese - Κινέζικα (παραδοσιακά) - - - - Simplified Chinese - Κινέζικα (απλοποιημένα) - - - - Other - Άλλη - - - - Other Simplified Chinese dialects - Άλλες διάλεκτοι απλοποιημένων Κινέζικων - - - - Other Traditional Chinese dialects - Άλλες διάλεκτοι παραδοσιακών Κινέζικών - - - - Other Eastern-European languages - Άλλες γλώσσες Ανατολική Ευρώπης - - - - Other Western-European languages - Άλλες γλώσσες Δυτικής Ευρώπης - - - - Other Russian languages - Άλλες Ρωσικές γλώσσες - - - - Other Japanese languages - Άλλες Ιαπωνικές γλώσσες - - - - Other Baltic languages - Άλλες Βαλτικές γλώσσες - - - - Other Greek languages - Άλλες Ελληνικές γλώσσες - - - - Other Korean dialects - Άλλες Κορεατικές διάλεκτοι - - - - Other Turkish dialects - Άλλες Τουρκικές διάλεκτοι - - - - Other Thai dialects - Άλλες Ταϊλανδικές διάλεκτοι - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Σφάλμα κατά τη φόρτωση των λεξικών - - - - Main - - - Error in configuration file. Continue with default settings? - Σφάλμα στο αρχείο ρυθμίσεων. Συνέχεια με χρήση των προεπιλεγμένων ρυθμίσεων; - - - - MainWindow - - Show Names in Dictionary Bar - Εμφάνιση ονομάτων στη γραμμή λεξικών - - - - &Menubar - Γραμμή &μενού - - - - - Look up in: - Αναζήτηση σε: - - - - Found in Dictionaries: - Λεξικά: - - - Navigation - Πλοήγηση - - - - Back - Πίσω - - - - Forward - Μπροστά - - - - Scan Popup - Αναδυόμενο παράθυρο - - - - Pronounce Word (Alt+S) - Εκφώνηση λήμματος (Alt+S) - - - - Zoom In - Μεγέθυνση - - - - Zoom Out - Σμίκρυνση - - - - Normal Size - Κανονικό μέγεθος - - - - Words Zoom In - Μεγέθυνση λημμάτων - - - - Words Zoom Out - Σμίκρυνση λημμάτων - - - - Words Normal Size - Κανονικό μέγεθος λημμάτων - - - - Show &Main Window - Εμφάνιση &κύριου παραθύρου - - - - Close current tab - Κλείσιμο τρέχουσας καρτέλας - - - - Close all tabs - Κλείσιμο όλων των καρτελών - - - - Close all tabs except current - Κλείσιμο όλων των άλλων καρτελών - - - - - Accessibility API is not enabled - Δεν είναι ενεργοποιημένο το API προσβασιμότητας - - - - Article, Complete (*.html) - Άρθρο, πλήρες (*.html) - - - - Article, HTML Only (*.html) - Άρθρο, μόνο HTML (*.html) - - - - Saving article... - Αποθήκευση άρθρου... - - - - The main window is set to be always on top. - Το κύριο παράθυρο βρίσκεται πάντα στο προσκήνιο. - - - - &Hide - &Απόκρυψη - - - - Export history to file - Εξαγωγή ιστορικού σε αρχείο - - - - - Text files (*.txt);;All files (*.*) - Αρχεία κειμένου (*.txt);;Όλα τα αρχεία (*.*) - - - - History export complete - Ολοκληρώθηκε η εξαγωγή του ιστορικού - - - - Export error: - Σφάλμα εξαγωγής: - - - - Import history from file - Εισαγωγή ιστορικού από αρχείο - - - - Import error: invalid data in file - Σφάλμα εισαγωγής: μη έγκυρα δεδομένα - - - - History import complete - Ολοκληρώθηκε η εισαγωγή του ιστορικού - - - - Import error: - Σφάλμα εισαγωγής: - - - - Dictionary info - Πληροφορίες λεξικού - - - - Dictionary headwords - - - - - Open dictionary folder - Άνοιγμα φακέλου λεξικού - - - - Edit dictionary - Επεξεργασία λεξικού - - - - Now indexing for full-text search: - - - - - - &Quit - Έ&ξοδος - - - - Loading... - Φόρτωση... - - - - - Welcome! - Καλώς ήλθατε! - - - - %1 dictionaries, %2 articles, %3 words - %1 λεξικά, %2 άρθρα, %3 λήμματα - - - - Look up: - Αναζήτηση: - - - - All - Όλα - - - - Opened tabs - Ανοιχτές καρτέλες - - - - Show Names in Dictionary &Bar - Εμφάνιση &ονομάτων λεξικών - - - - Show Small Icons in &Toolbars - Μι&κρά εικονίδια - - - - &Navigation - Γραμμή &αναζήτησης - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Open Tabs List - Λίστα ανοιχτών καρτελών - - - - (untitled) - (ανώνυμο) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - ΠΡΟΣΟΧΗ: %1 - - - GoldenDict - GoldenDict - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Απέτυχε η φόρτωση του μηχανισμού παρακολούθησης πλήκτρων συντομεύσεων.<br>Βεβαιωθείτε ότι η επέκταση RECORD του XServer είναι ενεργοποιημένη. - - - - New Release Available - Νέα έκδοση διαθέσιμη - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Η έκδοση <b>%1</b> του GoldenDict είναι διαθέσιμη.<br>Κάντε κλικ στο <b>Λήψη</b> για να επισκεφτείτε την ιστοσελίδα λήψης. - - - - Download - Λήψη - - - - Skip This Release - Παράβλεψη αυτής της έκδοσης - - - - You have chosen to hide a menubar. Use %1 to show it back. - Επιλέξατε απόκρυψη μιας γραμμής εργαλείων. Πατήστε %1 για να την επαναφέρετε. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Διάταξη σελίδας - - - - No printer is available. Please install one first. - Δε βρέθηκε εκτυπωτής. Παρακαλώ εγκαταστήστε έναν εκτυπωτή. - - - - Print Article - Εκτύπωση αποτελέσματος - - - - Save Article As - Αποθήκευση αποτελέσματος ως - - - Html files (*.html *.htm) - Αρχείο html (*.html *.htm) - - - - Error - Σφάλμα - - - - Can't save article: %1 - Αδύνατη η αποθήκευση του άρθρου: %1 - - - - &File - &Αρχείο - - - - &Edit - &Επεξεργασία - - - - &Help - &Βοήθεια - - - - &View - &Προβολή - - - - &Zoom - Με&γέθυνση - - - - H&istory - &Ιστορικό - - - Search Pane - Στήλη αναζήτησης - - - - &Dictionaries... - &Λεξικά... - - - - F3 - F3 - - - &Groups... - &Ομάδες... - - - - Search - - - - - &Search Pane - Στήλη ανα&ζήτησης - - - - &Results Navigation Pane - Στήλη περιήγησης αποτελε&σμάτων - - - - &History Pane - Στήλη &ιστορικού - - - - &Preferences... - &Προτιμήσεις... - - - - F4 - F4 - - - - &Homepage - &Ιστοσελίδα - - - - &About - &Περί - - - - About GoldenDict - Περί GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Έξοδος εφαρμογής - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Φόρουμ - - - - &Close To Tray - &Ελαχιστοποίηση στην περιοχή ειδοποιήσεων - - - - Minimizes the window to tray - Ελαχιστοποιεί το παράθυρο ως εικονίδιο στην περιοχή ειδοποιήσεων - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Αποθήκευση άρθρου - - - - Save Article - Αποθήκευση άρθρου - - - - F2 - F2 - - - - &Print - Εκ&τύπωση - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - &Διάταξη σελίδας - - - - Print Pre&view - &Προεπισκόπηση εκτύπωσης - - - - &Rescan Files - Νέα &σάρωση αρχείων - - - - &New Tab - &Νέα καρτέλα - - - - &Always on Top - Πάντα στο &προσκήνιο - - - - Always on Top - Πάντα στο προσκήνιο - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Κουμπί μενού - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Προεπισκόπηση εκτύπωσης - - - Rescan Files - Νέα σάρωση αρχείων - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - Εκκα&θάριση - - - - New Tab - Νέα καρτέλα - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Φάκελος &ρυθμίσεων - - - - - &Show - Εμ&φάνιση - - - - Ctrl+H - Ctrl+H - - - - &Export - Ε&ξαγωγή - - - - &Import - &Εισαγωγή - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Το αρχείο λεξικού είναι αλλοιωμένο ή κατεστραμμένο - - - - Failed loading article from %1, reason: %2 - Απέτυχε η φόρτωση του άρθρου από το %1. Αιτία: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Σφάλμα ανάλυσης XML: %1 στο %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Σφάλμα ανάλυσης XML: %1 στο %2,%3 - - - - MediaWikisModel - - - Enabled - Ενεργή - - - - Name - Όνομα - - - - Address - Διεύθυνση - - - - Icon - Εικονίδιο - - - - OrderAndProps - - - Form - Μορφή - - - - Dictionary order: - Λίστα λεξικών: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Ανενεργά (απενεργοποιημένα) λεξικά: - - - - Dictionary information - Πληροφορίες λεξικού - - - - Name: - Όνομα: - - - - Total articles: - Σύνολο άρθρων: - - - - Total words: - Σύνολο λημμάτων: - - - - Translates from: - Μεταφράζει από: - - - - Translates to: - Μεταφράζει σε: - - - - Description: - Περιγραφή: - - - - Files comprising this dictionary: - Αρχεία λεξικού: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Μπορείτε να αλλάξετε τη σειρά εμφάνισης των λεξικών, σέρνοντάς τα με το ποντίκι. Σύρετε λεξικά στην ομάδα των ανενεργών για να τα απενεργοποιήσετε. - - - - Sort by name - Ταξινόμηση κατά όνομα - - - - Sort by languages - Ταξινόμηση κατά γλώσσα - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Διαδρομή - - - - Recursive - Υποφάκελοι - - - - Preferences - - - System default - Συστήματος - - - English - Αγγλικά - - - Russian - Ρωσικά - - - - - Default - Κλασική - - - - Modern - Μοντέρνα - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Αναπαραγωγή μέσω DirectShow - - - - Changing Language - Αλλαγή γλώσσας - - - - Restart the program to apply the language change. - Απαιτείται επανεκκίνηση του προγράμματος για να εφαρμοστεί η αλλαγή γλώσσας. - - - - Preferences - Προτιμήσεις - - - - &Interface - &Εφαρμογή - - - - Tabbed browsing - Καρτέλες - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Κανονικά, όταν ανοίγει νέα καρτέλα, η εφαρμογή εστιάζει σε αυτή. -Αν όμως σημειώσετε αυτή την επιλογή, δε θα εστιάζονται οι νέες καρτέλες. - - - - Open new tabs in background - Άνοιγμα νέων καρτελών στο παρασκήνιο - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Αν σημειώσετε αυτή την επιλογή, οι νέες καρτέλες -θα ανοίγουν ακριβώς δίπλα στην τρέχουσα ενεργή καρτέλα. -Στην αντίθετη περίπτωση θα ανοίγουν στο τέλος. - - - - Open new tabs after the current one - Άνοιγμα νέων καρτελών δίπλα στην τρέχουσα - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Αν ενεργοποιηθεί, η γραμμή καρτελών δεν θα εμφανίζεται όταν είναι ανοιχτή μόνο μία καρτέλα. - - - - Hide single tab - Απόκρυψη μοναδικής καρτέλας - - - - Ctrl-Tab navigates tabs in MRU order - Το Ctrl-Tab εμφανίζει τις πιο πρόσφατες καρτέλες - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Αν ενεργοποιηθεί, θα εμφανίζεται ένα εικονίδιο στην περιοχή ειδοποιήσεων -που θα σας παρέχει διάφορες δυνατότητες, π.χ. άνοιγμα κύριου παραθύρου. - - - - Enable system tray icon - Ενεργοποίηση εικονιδίου περιοχής ειδοποιήσεων - - - - With this on, the application starts directly to system tray without showing -its main window. - Αν ενεργοποιηθεί, η εφαρμογή θα εκκινείται απευθείας στην περιοχή ειδοποιήσεων, -και δε θα εμφανίζεται το κύριο παράθυρο. - - - - Start to system tray - Εκκίνηση στην περιοχή ειδοποιήσεων - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Αν ενεργοποιηθεί, δε θα τερματίζεται η εφαρμογή -όποτε κλείνει το κύριο παράθυρο. - - - - Close to system tray - Κλείσιμο στην περιοχή ειδοποιήσεων - - - - Startup - Εκκίνηση - - - Automatically starts GoldenDict after operation system bootup - Εκκινεί αυτόματα το GoldenDict κατά την εκκίνηση του συστήματος - - - - Start with system - Εκκίνηση μαζί με το σύστημα - - - - Interface language: - Γλώσσα εφαρμογής: - - - - Display style: - Μορφή εμφάνισης: - - - - &Scan Popup - Ανα&δυόμενο παράθυρο - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Αν ενεργοποιηθεί, κάθε φορά που δείχνετε μια λέξη με το ποντίκι (Windows), -ή επιλέγετε μια λέξη με το ποντίκι (Linux), θα εμφανίζεται ένα αναδυόμενο -παράθυρο. Αφού ενεργοποιήσετε το αναδυόμενο παράθυρο στις προτιμήσεις, -θα μπορείτε να το ενεργοποιείτε ή να το απενεργοποιείτε και από το κύριο -παράθυρο ή από το εικονίδιο της περιοχής ειδοποιήσεων. - - - - Enable scan popup functionality - Ενεργοποίηση λειτουργίας αναδυόμενου παραθύρου - - - Chooses whether the scan popup mode is on by default nor not. If checked, -the program would always start with the scan popup active. - Ρυθμίζει αν θα είναι προεπιλεγμένη η λειτουργία αναδυόμενου παραθύρου. -Αν σημειώσετε την επιλογή, η εφαρμογή θα εκκινείται πάντα με το αναδυόμενο -παράθυρο ενεργοποιημένο. - - - - Automatically starts GoldenDict after operation system bootup. - Εκκινεί αυτόματα το GoldenDict κατά την εκκίνηση του συστήματος. - - - - Double-click translates the word clicked - Μετάφραση λέξεων με διπλό κλικ - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Κανονικά, όταν πατάτε ESC, ενεργοποιείται το πεδίο αναζήτησης. -Αντιθέτως, με αυτή την επιλογή το ESC κρύβει το κύριο παράθυρο. - - - - ESC key hides main window - Απόκρυψη κύριου παραθύρου με ESC - - - - Turn this option on if you want to select words by single mouse click - Αν ενεργοποιηθεί, θα επιλέγετε λέξεις με μονό κλικ πάνω τους - - - - Select word by single click - Επιλογή λέξεων με μονό κλικ - - - - Add-on style: - Στιλ πρόσθετων: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Προσαρμόστε αυτήν την τιμή για να μειώσετε το μέγεθος του μενού περιεχομένου. - - - - Context menu dictionaries limit: - Αριθμός λεξικών μενού περιεχομένου: - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Καθορίζει αν θα είναι προεπιλεγμένη η λειτουργία αναδυόμενου παραθύρου. -Αν σημειώσετε την επιλογή, η εφαρμογή θα εκκινείται πάντα με το αναδυόμενο -παράθυρο ενεργοποιημένο. - - - - Start with scan popup turned on - Εκκίνηση με το αναδυόμενο παράθυρο ενεργοποιημένο - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Αν ενεργοποιηθεί, το αναδυόμενο παράθυρο θα εμφανίζεται μόνο αν είναι -πατημένα όλα τα παρακάτω πλήκτρα όταν γίνεται η επιλογή της λέξης. - - - - Only show popup when all selected keys are kept pressed: - Αναδυόμενο παράθυρο μόνο αν είναι πατημένα όλα τα επιλεγμένα πλήκτρα: - - - - Left Ctrl only - Μόνο το αριστερό Ctrl - - - - Left Ctrl - Aριστερό Ctrl - - - - Right Shift only - Μόνο το δεξί Shift - - - - Right Shift - Δεξί Shift - - - - Alt key - Πλήκτρο Alt - - - - Alt - Alt - - - - Ctrl key - Πλήκτρο Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Μόνο το αριστερό Alt - - - - Left Alt - Αριστερό Alt - - - - Shift key - Πλήκτρο Shift - - - - Shift - Shift - - - - Right Alt only - Μόνο το δεξί Alt - - - - Right Alt - Δεξί Alt - - - - Right Ctrl only - Μόνο το δεξί Ctrl - - - - Right Ctrl - Δεξί Ctrl - - - - Left Shift only - Μόνο το αριστερό Shift - - - - Left Shift - Αριστερό Shift - - - - Windows key or Meta key - Πλήκτρο Windows ή Meta (Μενού) - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Κανονικά, για να εμφανιστεί το αναδυόμενο παράθυρο, -πρέπει να κρατάτε τα επιλεγμένα πλήκτρα πατημένα κατά -την επιλογή λέξης. Χάρη σε αυτή την επιλογή, μπορείτε -να πατάτε τα πλήκτρα αμέσως μετά την επιλογή της λέξης. - - - - Send translated word to main window instead of to show it in popup window - Εμφάνιση της μετάφρασης στο κύριο παράθυρο αντί για το αναδυόμενο - - - - Send translated word to main window - Εμφάνιση μετάφρασης στο κύριο παράθυρο - - - - Playback - Αναπαραγωγή - - - - Play audio files via FFmpeg(libav) and libao - Αναπαραγωγή αρχείων ήχου μέσω FFmpeg(libav) και libao - - - - Use internal player - Χρήση εσωτερικού προγράμματος - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Αν σημειώσετε αυτήν την επιλογή, τα μεγάλα άρθρα θα αποκρύπτονται αυτόματα - - - - Collapse articles more than - Απόκρυψη άρθρων με περισσότερα από - - - - Articles longer than this size will be collapsed - Αποκρύψη των άρθρων που υπερβαίνουν αυτό το μέγεθος - - - - symbols - σύμβολα - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Χρήση μόνο του εγγενούς API των Windows. -Αναπαράγει μόνο αρχεία wav, αλλά λειτουργεί άψογα. - - - Play via Windows native API - Αναπαραγωγή μέσω του εγγενούς API των Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Αναπαραγωγή ήχου μέσω του πλαισίου Phonon. Υποστηρίζει -τις περισσότερες μορφές αρχείων, αλλά δεν είναι απόλυτα αξιόπιστη. - - - Play via Phonon - Αναπαραγωγή μέσω Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Αναπαραγωγή ήχου μέσω βιβλιοθήκης Bass. Η καλύτερη επιλογή. -Θα πρέπει να τοποθετήσετε το bass.dll (http://www.un4seen.com) στο φάκελο του GoldenDict. - - - Play via Bass library - Αναπαραγωγή μέσω βιβλιοθήκης Bass - - - - Use any external program to play audio files - Χρήση οποιουδήποτε εξωτερικού προγράμματος για την αναπαραγωγή αρχείων ήχου - - - - Use external program: - Χρήση εξωτερικού προγράμματος: - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Ορισμένες ιστοσελίδες εντοπίζουν το GoldenDict μέσω των κεφαλίδων HTTP και μπλοκάρουν τα αιτήματά του. -Ενεργοποιήστε αυτή την επιλογή για να παρακάμψετε το πρόβλημα. - - - - Do not identify GoldenDict in HTTP headers - Μη ταυτοποίηση του GoldenDict στις κεφαλίδες HTTP - - - - Ad&vanced - Για &προχωρημένους - - - - ScanPopup extra technologies - Προχωρημένες τεχνολογίες αναδυόμενου παραθύρου - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Προσπαθεί να χρησιμοποιήσει την τεχνολογία IAccessibleEx για να εντοπίσει -τη λέξη κάτω από τον δείκτη. Λειτουργεί μόνο με προγράμματα που υποστηρίζουν -αυτή την τεχνολογία (π.χ. Internet Explorer 9). Αν δεν χρησιμοποιείτε κάποιο από -αυτά τα προγράμματα, δεν χρειάζεται να ενεργοποιήσετε την επιλογή. - - - - Use &IAccessibleEx - &Χρήση IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Προσπαθεί να χρησιμοποιήσει την τεχνολογία UI Automation για να εντοπίσει -τη λέξη κάτω από τον δείκτη. Λειτουργεί μόνο με προγράμματα που υποστηρίζουν -αυτή την τεχνολογία. Αν δεν χρησιμοποιείτε κάποιο από αυτά τα προγράμματα, -δεν χρειάζεται να ενεργοποιήσετε την επιλογή. - - - - Use &UIAutomation - Χ&ρήση UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Προσπαθεί να χρησιμοποιήσει ειδικά μηνύματα του Goldendict για να εντοπίσει -τη λέξη κάτω από τον δείκτη. Λειτουργεί μόνο με προγράμματα που υποστηρίζουν -αυτή την τεχνολογία. Αν δεν χρησιμοποιείτε κάποιο από αυτά τα προγράμματα, -δεν χρειάζεται να ενεργοποιήσετε την επιλογή. - - - - Use &GoldenDict message - Χρήση &μηνυμάτων Goldendict - - - - History - Ιστορικό - - - - Turn this option on to store history of the translated words - Αν ενεργοποιηθεί, θα αποθηκεύεται το ιστορικό των μεταφρασμένων λέξεων - - - - Store &history - Αποθήκευση &ιστορικού - - - - Specify the maximum number of entries to keep in history. - Ορίστε το μέγιστο αριθμό λημμάτων που θα αποθηκεύονται στο ιστορικό. - - - - Maximum history size: - Μέγιστο μέγεθος ιστορικού: - - - - History saving interval. If set to 0 history will be saved only during exit. - Συχνότητα αποθήκευσης ιστορικού. Αν χρησιμοποιήσετε 0, -το ιστορικό θα αποθηκεύεται μόνο κατά την έξοδο. - - - - Save every - Αποθήκευση κάθε - - - - minutes - λεπτά - - - - Articles - Άρθρα - - - - Turn this option on to always expand optional parts of articles - Αν ενεργοποιηθεί, θα εμφανίζονται πάντα τα προαιρετικά τμήματα των άρθρων - - - - Expand optional &parts - Εμφάνιση &προαιρετικών τμημάτων - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shorty after the selection is done. - Κανονικά, για να εμφανιστεί το αναδυόμενο παράθυρο, -πρέπει να κρατάτε τα επιλεγμένα πλήκτρα πατημένα κατά -την επιλογή λέξης. Χάρη σε αυτή την επιλογή, μπορείτε -να πατάτε τα πλήκτρα αμέσως μετά την επιλογή της λέξης. - - - - Keys may also be pressed afterwards, within - Εκ των υστέρων πάτημα πλήκτρων, εντός - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Για να αποφευχθεί η ανεπιθύμητη εμφάνιση του παραθύρου, -τα πλήκτρα μπορούν να πατηθούν μόνο λίγα δευτερόλεπτα -μετά την επιλογή της λέξης. - - - - secs - δευτ. - - - - Hotkeys - Συντομεύσεις - - - - Use the following hotkey to show or hide the main window: - Συντόμευση για εμφάνιση/απόκρυψη κύριου παραθύρου: - - - - Use the following hotkey to translate a word from clipboard: - Συντόμευση για αναζήτηση λέξης που βρίσκεται στο πρόχειρο: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Οι συντομεύσεις λειτουργούν παντού και από οποιαδήποτε εφαρμογή, αρκεί να εκτελείται το GoldenDict. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Σημείωση: Μάλλον χρησιμοποιείτε έκδοση του X.Org XServer στην οποία δε λειτουργεί η επέκταση RECORD. Κατά πάσα πιθανότητα, οι συντομεύσεις του GoldenDict δε θα λειτουργήσουν. Το σφάλμα θα πρέπει να διορθωθεί σε επίπεδο X.Org XServer. Παρακαλώ, ανατρέξτε σε αυτήν την </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">αναφορά σφάλματος</span></a><span style=" color:#ff0000;"> και προσθέστε σχόλιο, αν το επιθυμείτε.</span></p></body></html> - - - - &Audio - Ή&χος - - - - Pronunciation - Προφορά - - - - Auto-pronounce words in main window - Αυτόματη εκφώνηση λημμάτων στο κύριο παράθυρο - - - - Auto-pronounce words in scan popup - Αυτόματη εκφώνηση λημμάτων στο αναδυόμενο παράθυρο - - - Program to play audio files: - Πρόγραμμα αναπαραγωγής αρχείων ήχου: - - - - &Network - &Δίκτυο - - - - Enable if you wish to use a proxy server -for all program's network requests. - Επιλέξτε το αν θέλετε να χρησιμοποιείτε -διαμεσολαβητή για όλες τις ανάγκες της εφαρμογής. - - - - Use proxy server - Χρήση διαμεσολαβητή - - - - Type: - Τύπος: - - - - Host: - Διεύθυνση: - - - - Port: - Θύρα: - - - - User: - Χρήστης: - - - - Password: - Κωδικός: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Αν το επιλέξετε, το GoldenDict θα εμποδίζει τις περισσότερες διαφημίσεις, -μη επιτρέποντας την εμφάνιση περιεχομένου (εικόνων, πλαισίων) που δεν -προέρχονται από τον ιστότοπο στον οποίο βρίσκεστε. Αν προκύψουν -προβλήματα με κάποιους ιστοτόπους, δοκιμάστε να το αποεπιλέξετε. - - - - Disallow loading content from other sites (hides most advertisements) - Φραγή περιεχομένου από άλλους ιστοτόπους (εξαφανίζει τις περισσότερες διαφημίσεις) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Αν ενεργοποιηθεί, θα μπορείτε να ακούτε την προφορά από online λεξικά -που χρησιμοποιούν Flash ή άλλα πρόσθετα. Πρέπει πρώτα να έχετε εγκαταστήσει -το κατάλληλο πρόσθετο για να χρησιμοποιήσετε αυτή την επιλογή. - - - - Enable web plugins - Ενεργοποίηση διαδικτυακών προσθέτων - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Αν ενεργοποιηθεί, το πρόγραμμα θα ελέγχει τακτικά -αν έχει κυκλοφορήσει νέα, ενημερωμένη έκδοση του -GoldenDict. Αν ναι, το πρόγραμμα θα ειδοποιεί το -χρήστη και θα παραπέμπει στην ιστοσελίδα λήψης. - - - - Check for new program releases periodically - Περιοδικός έλεγχος για νέες εκδόσεις/ενημερώσεις - - - - ProgramTypeEditor - - - Audio - Ήχος - - - - Plain Text - Απλό κείμενο - - - - Html - Html - - - - Prefix Match - Ανάλογα με την επέκταση - - - - Unknown - Άγνωστο - - - - Programs::RunInstance - - - No program name was given. - Δεν ορίστηκε όνομα προγράμματος. - - - - The program has crashed. - Το πρόγραμμα κατέρρευσε. - - - - The program has returned exit code %1. - Το πρόγραμμα επέστρεψε κωδικό εξόδου %1. - - - - ProgramsModel - - - Enabled - Ενεργό - - - - Type - Τύπος - - - - Name - Όνομα - - - - Command Line - Γραμμή εντολών - - - - Icon - Εικονίδιο - - - - QObject - - - - Article loading error - Σφάλμα φόρτωσης άρθρου - - - - - Article decoding error - Σφάλμα αποκωδικοποίησης άρθρου - - - - avformat_alloc_context() failed. - Απέτυχε το avformat_alloc_context(). - - - - av_malloc() failed. - Απέτυχε το av_malloc(). - - - - avio_alloc_context() failed. - Απέτυχε το avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Απέτυχε το avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - Απέτυχε το avformat_find_stream_info(): %1. - - - - Could not find audio stream. - Δε βρέθηκε η ροή ήχου. - - - - Codec [id: %1] not found. - Δε βρέθηκε ο codec [id: %1]. - - - - avcodec_open2() failed: %1. - Απέτυχε το avcodec_open2(): %1. - - - - Cannot find usable audio output device. - Δε βρέθηκε λειτουργική συσκευή εξόδου ήχου. - - - - Unsupported sample format. - Μη υποστηριζόμενη μορφή. - - - - ao_open_live() failed: - Απέτυχε το ao_open_live(): - - - - No driver. - Δε βρέθηκε ο οδηγός. - - - - This driver is not a live output device. - Αυτός ο οδηγός δεν είναι συσκευή ζωντανής εξόδου ήχου. - - - - A valid option key has an invalid value. - Μία έγκυρη επιλογή δεν διαθέτει έγκυρη τιμή. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Δεν είναι δυνατή η ενεργοποίηση της συσκευής: %1, κανάλια: %2, ταχύτητα: %3, bit: %4. - - - - Unknown error. - Άγνωστο σφάλμα. - - - - avcodec_alloc_frame() failed. - Απέτυχε το avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Εύρεση λεξικού/φίλτρο (Ctrl+F) - - - - Quick Search - Γρήγορη αναζήτηση - - - - Clear Search - Εκκαθάριση αναζήτησης - - - - ResourceToSaveHandler - - - - ERROR: %1 - ΣΦΑΛΜΑ: %1 - - - - Resource saving error: - Σφάλμα αποθήκευσης: - - - - The referenced resource failed to download. - Απέτυχε η λήψη του ζητούμενου πόρου. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji για Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji για Katakana - - - - RussianTranslit - - - Russian Transliteration - Μεταγραφή Ρωσικών - - - - ScanPopup - - - Dialog - Διάλογος - - - word - λήμμα - - - List Matches (Alt+M) - Εμφάνιση αποτελεσμάτων (Alt+M) - - - - - - - - ... - ... - - - - Back - Πίσω - - - - Forward - Μπροστά - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Εκφώνηση λήμματος (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Εμφάνιση στο κύριο παράθυρο (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Εμφάνιση ή απόκρυψη της γραμμής λεξικών - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Χρησιμοποιήστε το για να μετατρέψετε το αναδυόμενο σε κανονικό παράθυρο, που δεν εξαφανίζεται από την οθόνη και μπορεί π.χ. να αλλάξει μέγεθος. - - - GoldenDict - GoldenDict - - - - - %1 - %2 - - - - - SoundDirsModel - - - Path - Διαδρομή - - - - Name - Όνομα - - - - Icon - Εικονίδιο - - - - Sources - - - Text to Speech - Εκφώνηση κειμένου - - - - (not available in portable version) - (μη διαθέσιμο στη φορητή έκδοση) - - - - - - Choose a directory - Επιλογή φακέλου - - - - - - - - - Confirm removal - Επιβεβαίωση αφαίρεσης - - - - - Remove directory <b>%1</b> from the list? - Να αφαιρεθεί ο φάκελος <b>%1</b> από τη λίστα; - - - - - - Remove site <b>%1</b> from the list? - Να αφαιρεθεί η ιστοσελίδα <b>%1</b> από τη λίστα; - - - - Remove program <b>%1</b> from the list? - Να αφαιρεθεί το πρόγραμμα <b>%1</b> από τη λίστα; - - - - Files - Αρχεία - - - - Paths to search for the dictionary files: - Διαδρομές αναζήτησης αρχείων λεξικών: - - - - - - - - - &Add... - Προσ&θήκη... - - - - - - - - - &Remove - Α&φαίρεση - - - - Re&scan now - Νέα &σάρωση - - - - Sound Dirs - Φάκελοι ήχων - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Δημιουργήστε λεξικά χρησιμοποιώντας ομάδες αρχείων ήχου, προσθέτοντας τις διαδρομές τους εδώ: - - - - Morphology - Μορφολογία - - - - Path to a directory with Hunspell/Myspell dictionaries: - Φάκελος με λεξικά Hunspell/Myspell: - - - - &Change... - Αλλα&γή... - - - - Available morphology dictionaries: - Διαθέσιμες μορφολογίες: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Τα λεξικά μορφολογίας εμφανίζονται ως -ξεχωριστά βοηθητικά λεξικά και περιέχουν -ρίζες λέξεων και προτάσεις ορθογραφίας. -Μπορείτε να προσθέτετε τα κατάλληλα λεξικά -μορφολογίας στο τέλος κάθε ομάδας λεξικών. - - - - Wikipedia - Βικιπαίδεια - - - - Wikipedia (MediaWiki) sites: - Ιστοσελίδες τύπου Βικιπαίδειας (MediaWiki): - - - - Websites - Ιστοσελίδες - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Προσθέστε οποιαδήποτε ιστοσελίδα. Οι χαρακτήρες %GDWORD% αντικαθίστανται από τη ζητούμενη λέξη: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Εναλλακτικά, χρησιμοποιήστε %GD1253% για κωδικοποίηση CP1253, %GDISO7% για ISO 8859-7. - - - - Programs - Προγράμματα - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Προσθέστε οποιοδήποτε εξωτερικό πρόγραμμα. Οι χαρακτήρες %GDWORD% αντικαθίστανται από τη ζητούμενη λέξη. Η λέξη στέλνεται και στη συνήθη είσοδο. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Ζωντανή προφορά από το <a href="http://www.forvo.com/">forvo.com</a>. Ο ιστότοπος σας επιτρέπει να ηχογραφείτε και να μοιράζεστε προφορές λέξεων. Μπορείτε να ακούτε τις προφορές του Forvo στο GoldenDict. - - - - Enable pronunciations from Forvo - Ενεργοποίηση προφορών από το Forvo - - - - API Key: - Κλειδί API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Η χρήση του Forvo απαιτεί κλεδί API. Αφήστε το πεδίο κενό -για να χρησιμοποιήσετε το προεπιλεγμένο κλειδί, που όμως -μπορεί να απενεργοποιηθεί στο μέλλον, ή εγγραφείτε στον -ιστότοπο, για να αποκτήσετε δικό σας κλειδί. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Αποκτήστε το προσωπικό σας κλειδί από <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">εδώ</span></a>, ή αφήστε κενό για να χρησιμοποιήσετε το προεπιλεγμένο.</p></td></tr></table></body></html> - - - - Language codes (comma-separated): - Κωδικοί γλωσσών (χωρισμένοι με κόμματα): - - - - List of language codes you would like to have. Example: "en, ru". - Λίστα με τους κωδικούς γλωσσών που επιθυμείτε να χρησιμοποιήσετε. Π.χ.: "en, el". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Ο πλήρης κατάλογος των κωδικών γλωσσών είναι διαθέσιμος <a href="http://www.forvo.com/languages-codes/">εδώ</a>. - - - - Transliteration - Μεταγραφή - - - - Russian transliteration - Ρωσικά - - - - German transliteration - Γερμανικά - - - - Greek transliteration - Ελληνικά - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Εναλλακτικά, χρησιμοποιήστε %GD1253% για κωδικοποίηση CP1253, %GDISO1%...%GDISO16% για ISO 8859-1...ISO 8859-16 αντιστοίχως, -%GDBIG5% για Big-5, %GDBIG5HKSCS% για Big5-HKSCS, %GDGBK% για GBK και GB18030, %GDSHIFTJIS% για Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Προσθέστε οποιοδήποτε εξωτερικό πρόγραμμα. Οι χαρακτήρες %GDWORD% αντικαθίστανται από τη ζητούμενη λέξη. Αν το %GDWORD% λείπει, η λέξη θα σταλεί στη συνήθη είσοδο. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Αποκτήστε το προσωπικό σας κλειδί από <a href="http://api.forvo.com/key/">εδώ</a>, ή αφήστε κενό για να χρησιμοποιήσετε το προεπιλεγμένο. - - - - Belarusian transliteration - Λευκορωσικά - - - - Enables to use the Latin alphabet to write the Japanese language - Επιτρέπει τη χρήση του Λατινικού αλφαβήτου για τη μεταγραφή Ιαπωνικών - - - - Japanese Romaji - Ιαπωνικά Romaji - - - - Systems: - Μέθοδοι: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Η πιο διαδεδομένη μέθοδος μεταγραφής Ιαπωνικών, -βασισμένη στην αγγλική φωνολογία - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Το πιο κανονικό σύστημα, με αντιστοιχία ένα προς ένα των kana. -Πρότυπο ISO 3602 - -Δεν υποστηρίζεται ακόμη από το GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Βασίζεται στο Nihon-shiki, αλλά έχει προσαρμοστεί στα σύγχρονα Ιαπωνικά. -Πρότυπο ISO 3602 - -Δεν υποστηρίζεται ακόμη από το GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Χαρακτήρες: - - - - Hiragana Japanese syllabary - Ιαπωνικοί χαρακτήρες Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Ιαπωνικοί χαρακτήρες Katakana - - - - Katakana - Katakana - - - - StylesComboBox - - - None - Κανένα - - - - TextToSpeechSource - - - Selected voice engines: - Επιλεγμένες μηχανές εκφώνησης: - - - - &Add - Προσ&θήκη - - - - &Remove - Α&φαίρεση - - - - Preferences - Προτιμήσεις - - - - Volume: - Ένταση: - - - - Rate: - Ταχύτητα: - - - - Preview - Προεπισκόπηση - - - - Available voice engines: - Διαθέσιμες μηχανές εκφώνησης: - - - - Text to be previewed: - Κείμενο προεπισκόπησης: - - - - Type text to be previewed here. - Εδώ προσθέτετε το κείμενο που θα εκφωνηθεί στην προεπισκόπηση. - - - - &Preview - &Προεπισκόπηση - - - - No TTS voice available - Δεν υπάρχει διαθέσιμη φωνή TTS - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Δε βρέθηκαν διαθέσιμες φωνές TTS.<br>Βεβαιωθείτε ότι έχετε εγκαταστήσει μία τουλάχιστον μηχανή TTS. - - - - Confirm removal - Επιβεβαίωση αφαίρεσης - - - - Remove voice engine <b>%1</b> from the list? - Να αφαιρεθεί η μηχανή εκφώνησης <b>%1</b> από τη λίστα; - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Εισάγετε λέξη ή φράση για να ξεκινήσετε την αναζήτηση - - - - Drop-down - Λίστα - - - - VoiceEnginesModel - - - Enabled - Ενεργή - - - - Name - Όνομα - - - - Id - Id - - - - Icon - Εικονίδιο - - - - WebSitesModel - - - Enabled - Ενεργή - - - - Name - Όνομα - - - - Address - Διεύθυνση - - - - Icon - Εικονίδιο - - - - WordFinder - - - Failed to query some dictionaries. - Απέτυχε η αναζήτηση σε ορισμένα λεξικά. - - - - WordList - - - WARNING: %1 - ΠΡΟΣΟΧΗ: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_AR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_AR.ts deleted file mode 100644 index 0d47fb88c6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_AR.ts +++ /dev/null @@ -1,5722 +0,0 @@ - - - - - - - XML parse error: %1 at %2,%3 - XML parse error: %1 at %2,%3 - - - - About - - - About - Acerca de GoldenDict - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Créditos: - - - GoldenDict dictionary lookup program, version 0.7 - GoldenDict dictionary lookup program, version 0.7 - - - - GoldenDict dictionary lookup program, version - Diccionario Electrónico GoldenDict, versión - - - #.# - #.# - - - - Licensed under GNU GPLv3 or later - Licencia de GNU GPLv3 o posterior - - - - [Unknown] - [Desconocido] - - - - Based on Qt %1 (%2, %3 bit) - Basado en Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Expandir artículo - - - - Collapse article - Plegar artículo - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - No se ha encontrado ninguna palabra para <b>%1</b> en el grupo <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - No se ha encontrado ninguna palabra en el grupo <b>%1</b>. - - - - Welcome! - ¡Bienvenido! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">¡Bienvenido a <b>GoldenDict</b>!</h3><p>Para comenzar a utilizar el programa, primero ingrese al menú <b>Editar|Diccionarios</b> para agregar los directorios donde ubicar los diccionarios locales, configurar varios sitios de Wikipedia y definir otras fuentes de traducción online. Podrá también agrupar los diccionarios y ajustar el orden en el que aparecen los resultados de búsqueda.<p> ¡Y ahora, está listo para buscar las palabras que usted desee! La manera tradicional de utilizar un diccionario es introducir el término en el campo de búsqueda ubicado en el panel izquierdo de esta misma ventana. No obstante, a diferencia de la mayoría de los diccionarios electrónicos, no necesita ingresar la palabra específica (lo cual requiere un conocimiento básico de gramática de la lengua a ser traducida). Con GoldenDict, usted puede escribir la forma flexionada de una palabra determinada, que el programa es capaz de reconocer sus raíces, y así efectuar su corrección morfológica. Otra característica fundamental de GoldenDict es que el campo de búsqueda no es la única forma de efectuar búsquedas de palabras: también se puede traducir palabras mientras se encuentra en otros programas por medio del uso de la función de ventana emergente del GoldenDict. Consulte <a href="Trabajar con la función de ventana emergente">como buscar palabras desde otros programas</a> para saber como funciona este método de búsqueda.<p>Para personalizar el programa, ingrese al menú <b>Editar|Preferencias</b>. Cada opción tiene su propia ayuda que aparece cuando el cursor del mouse está posicionado encima de la misma por unos segundos.<p>Si necesita más ayuda, tiene dudas, sugerencias o cualquier otro pedido, su participación en el <a href="http://goldendict.org/forum/">foro</a> del programa es bienvenida.<p>Consulte el <a href="http://goldendict.org/">sitio web</a> del programa para ver si existen nuevas actualizaciones del mismo.<p>(c) 2008-2013 Konstantin Isakov. Licencia de GNU GPLv3 o posterior. - - - - Working with popup - Trabajar con la función de ventana emergente - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Trabajar con la función de ventana emergente</h3>Para realizar búsquedas de palabras mientras se encuentra en otro programa, primeramente es preciso activar la función de ventana emergente siguiendo los siguientes pasos en la ventana principal del GoldenDict:<p><OL><LI>Ingrese en el menú <b>Editar|Preferencias</b>;<LI>Haga click en la pestaña <i>Ventana emergente de lectura</i>;<LI>Marque la casilla de selección <i>Activar función de ventana emergente de lectura</i>;<LI>Luego presione en <em>Aceptar</em> para guardar la configuración.</OL><p>Con esta opción activada, puede marcar o desmarcar la exhibición de ventana emergente cuando así lo desee. Para ésto, existen dos formas:<UL><LI>En la ventana principal, haga click en el botón <em>ventana emergente de lectura</em>, cuya imagen se asemeja a una varita;<LI>En el ícono del programa que aparece en la bandeja del sistema, haga click con el botón derecho del mouse y marque la opción <em>ventana emergente de lectura</em>.</UL><p> - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Una vez que esta opción sea activada, para cualquier palabra, frase o texto situado debajo del cursor del mouse, se mostrará una ventana emergente, exhibiendo inmediatamente los resultados de búsqueda. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Una vez que esta opción sea activada, para cualquier palabra, frase o texto selecciónelo con el mouse o haga doble click sobre el mismo y se mostrará una ventana emergente, exhibiendo inmediatamente los resultados de búsqueda. - - - - (untitled) - (sin título) - - - - (picture) - (imagen) - - - - ArticleRequest - - - From - Resultados de - - - From %1 - From %1 - - - - Expand article - Expandir artículo - - - - Collapse article - Plegar artículo - - - - Query error: %1 - Error de consulta: %1 - - - - Close words: - Palabras aproximadas: - - - - Compound expressions: - Expresiones compuestas: - - - - Individual words: - Palabras individuales: - - - - ArticleView - - - Select Current Article - Seleccionar artículo actual - - - - Copy as text - Copiar como texto - - - - Inspect - Inspeccionar - - - - Resource - Recurso - - - - Audio - Audio - - - - TTS Voice - Texto a Voz - - - - Picture - Imagen - - - - Video - Video - - - - Video: %1 - Video: %1 - - - - Definition from dictionary "%1": %2 - Definición de diccionario "%1": %2 - - - - Definition: %1 - Definición: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - El recurso referenciado no existe. - - - - The referenced audio program doesn't exist. - El programa de audio referenciado no existe. - - - - - ERROR: %1 - ERROR: %1 - - - - Save sound - Guardar audio - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Archivos de audio (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Todos los archivos (*.*) - - - - Save image - Guardar imagen - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Archivos de imagen (*.bmp *.jpg *.png *.tif);;Todos los archivos (*.*) - - - Resource saving error: - Error al guardar recurso: - - - - &Open Link - Abrir &vínculo - - - - Open Link in New &Tab - Abrir vínculo en nueva &pestaña - - - - Open Link in &External Browser - Abrir vínculo en Navegador &Web externo - - - - WARNING: FFmpeg Audio Player: %1 - ATENCIÓN: Reproductor de audio FFmpeg: %1 - - - Save &image - Guardar &imagen - - - Save s&ound - Guardar &audio - - - - &Look up "%1" - &Buscar "%1" - - - - Look up "%1" in &New Tab - Buscar "%1" en una &nueva pestaña - - - - Send "%1" to input line - Enviar "%1" a búsqueda - - - - - &Add "%1" to history - &Agregar "%1" a historial - - - - Look up "%1" in %2 - Buscar "%1" en %2 - - - - Look up "%1" in %2 in &New Tab - Buscar "%1" en %2 en una nueva p&estaña - - - Playing a non-WAV file - Reproducir un archivo que no es WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Para activar la reproducción de archivos que no estén en formato WAV, ingrese a Editar|Preferencias, haga click en la pestaña Audio y marque la opción "Reproducit vía DirectShow". - - - Bass library not found. - Biblioteca Bass no encontrada. - - - Bass library can't play this sound. - La biblioteca Bass no puede reproducir este audio. - - - - Failed to run a player to play sound file: %1 - No fue posible ejecutar un programa reproductor de audio: %1 - - - - Failed to create temporary file. - No fue posible crear archivo temporal. - - - - Failed to auto-open resource file, try opening manually: %1. - No fue posible abrir el archivo automáticamente, Intente abrirlo manualmente: %1. - - - - The referenced resource failed to download. - No fue posible descargar el recurso referenciado. - - - - Save &image... - Guardar &imagen... - - - - Save s&ound... - Guardar &audio... - - - - WARNING: %1 - ATENCIÓN: %1 - - - - Form - Formulario - - - - about:blank - sobre:blanco - - - - x - x - - - - Find: - Buscar: - - - - - &Previous - A&nterior - - - - - &Next - &Siguiente - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Coincidencia de mayúsculas/minúsculas - - - - Highlight &all - &Resaltar todo - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Transliteración de bielorruso de caracteres latinos a cirílicos (ortografía clásica) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Transliteración de bielorruso de caracteres latinos a cirílicos (ortografía académica) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Transliteración de bielorruso (resolver diferencias entre ortografía clásica y académica) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Contraseña: - - - - DictGroupWidget - - - Form - Formulario - - - - Group icon: - Ícono de grupo: - - - - Shortcut: - Tecla de acceso directo: - - - - None - Ninguno - - - - From file... - De archivo... - - - - Choose a file to use as group icon - Elija un archivo para usar como ícono de grupo - - - - Images - Imágenes - - - - All files - Todos los archivos - - - - Error - Error - - - - Can't read the specified image file. - No es posible leer el archivo de imagen especificado. - - - - DictGroupsWidget - - - - - - Dictionaries: - Diccionarios: - - - - Confirmation - Confirmación - - - - Are you sure you want to generate a set of groups based on language pairs? - ¿Está seguro que desea generar un conjunto de grupos basado en pares de idiomas? - - - - Unassigned - No asignados - - - - Combine groups by source language to "%1->" - Combinar grupos por idioma origen a "%1->" - - - - Combine groups by target language to "->%1" - Combinar grupos por idioma destino a "->%1" - - - - Make two-side translate group "%1-%2-%1" - Crear un grupo para traducir "%1-%2-%1" - - - - - Combine groups with "%1" - Combinar grupos con "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Documentos de texto (*.txt);;Todos los archivos (*.*) - - - - Export headwords... - - - - - Cancel - Cancelar - - - - DictInfo - - - Total articles: - Total de artículos: - - - - Translates from: - Traduce de: - - - - Total words: - Total de palabras: - - - - Translates to: - Traduce a: - - - - Open folder - Abrir carpeta - - - - Edit dictionary - Editar diccionario - - - - Files comprising this dictionary: - Archivos que componen este diccionario: - - - - Description: - Descripción: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Editar el diccionario vía comando: -%1 - - - - DictListModel - - - %1 entries - %1 entradas - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Activado - - - - Name - Nombre - - - - Address - Dirección - - - - Databases - - - - - Strategies - - - - - Icon - Ícono - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Barra de diccionarios - - - - &Dictionary Bar - Barra de &diccionarios - - - - Extended menu with all dictionaries... - Menú extendido con todos los diccionarios... - - - - Edit this group - Editar este grupo - - - - Dictionary info - Información del diccionario - - - - Dictionary headwords - - - - - Open dictionary folder - Abrir carpeta del diccionario - - - - Edit dictionary - Editar diccionario - - - - EditDictionaries - - - &Sources - &Fuentes - - - - - &Dictionaries - &Diccionarios - - - - - &Groups - &Grupos - - - - Sources changed - Fuentes modificadas - - - - Some sources were changed. Would you like to accept the changes? - Algunas fuentes fueron modificadas. Desea aceptar las modificaciones? - - - - Accept - Aceptar - - - - Cancel - Cancelar - - - - Dictionaries - Diccionarios - - - - ExternalViewer - - - the viewer program name is empty - el nombre del programa visualizador se encuentra vacío - - - - FTS::FtsIndexing - - None - Ninguno - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Ninguno - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Ninguno - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Error de parsing XML: %1 en %2,%3 - - - - Added %1 - Agregado %1 - - - - by - por - - - - Male - Masculino - - - - Female - Femenino - - - - from - de - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Ingrese a Editar|Diccionarios|Fuentes|Forvo y solicite su propia clave de API para que este error desaparezca. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Cancelar - - - - Help - - - - - GermanTranslit - - - German Transliteration - Transliteración de alemán - - - - GreekTranslit - - - Greek Transliteration - Transliteración de griego - - - - GroupComboBox - - - Choose a Group (Alt+G) - Elija un grupo (Alt+G) - - - - GroupSelectorWidget - - - Form - Formulario - - - - Look in - Ver en - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Agregar grupo - - - - Give a name for the new group: - Ingrese un nombre para el nuevo grupo: - - - - Rename group - Renombrar grupo - - - - Give a new name for the group: - Ingrese un nuevo nombre para el grupo: - - - - Remove group - Eliminar grupo - - - - Are you sure you want to remove the group <b>%1</b>? - ¿Está seguro que desea eliminar el grupo <b>%1</b>? - - - - - Remove all groups - Eliminar todos - - - - Are you sure you want to remove all the groups? - ¿Está seguro que desea eliminar todos los grupos? - - - Groups - Groups - - - - Dictionaries available: - Diccionarios disponibles: - - - - Add selected dictionaries to group (Ins) - Agregar los diccionarios seleccionados al grupo (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Eliminar los diccionarios seleccionados del grupo (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Grupos: - - - - Tab 2 - Pestaña 2 - - - - Create new dictionary group - Crear un nuevo grupo de diccionarios - - - - &Add group - &Agregar grupo - - - - Create language-based groups - Crear grupos de diccionarios automáticamente, basados en el idioma de cada diccionario en particular - - - - Auto groups - Auto-agrupar - - - - Rename current dictionary group - Renombrar el grupo de diccionarios seleccionado - - - - Re&name group - Re&nombrar grupo - - - - Remove current dictionary group - Eliminar el grupo de diccionarios seleccionado - - - - &Remove group - &Eliminar grupo - - - - Remove all dictionary groups - Eliminar todos los grupos de diccionarios - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Arrastre & suelte los diccionarios dentro de un grupo para agregarlos y muévalos dentro del mismo para ordenarlos -Reordene los grupos usando el mouse sobre las pestañas con los nombres de los mismos. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Atrás - - - - Forward - Adelante - - - - Zoom In - Acercar - - - - Zoom Out - Alejar - - - - Normal Size - Tamaño normal - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Eliminar seleccionados - - - - Copy Selected - &Copiar seleccionados - - - - History: - Historial: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Tamaño del historial: %1 entradas de un máximo de %2 - - - - Hunspell - - - Spelling suggestions: - Sugerencias ortográficas: - - - Afar - Afar - - - Abkhazian - Abkhazian - - - Avestan - Avestan - - - Afrikaans - Afrikaans - - - Akan - Akan - - - Amharic - Amharic - - - Aragonese - Aragonese - - - Arabic - Arabic - - - Assamese - Assamese - - - Avaric - Avaric - - - Aymara - Aymara - - - Azerbaijani - Azerbaijani - - - Bashkir - Bashkir - - - Belarusian - Belarusian - - - Bulgarian - Bulgarian - - - Bihari - Bihari - - - Bislama - Bislama - - - Bambara - Bambara - - - Bengali - Bengali - - - Tibetan - Tibetan - - - Breton - Breton - - - Bosnian - Bosnian - - - Catalan - Catalan - - - Chechen - Chechen - - - Chamorro - Chamorro - - - Corsican - Corsican - - - Cree - Cree - - - Czech - Czech - - - Church Slavic - Church Slavic - - - Chuvash - Chuvash - - - Welsh - Welsh - - - Danish - Danish - - - German - German - - - Divehi - Divehi - - - Dzongkha - Dzongkha - - - Ewe - Ewe - - - Greek - Greek - - - English - English - - - Esperanto - Esperanto - - - Spanish - Spanish - - - Estonian - Estonian - - - Basque - Basque - - - Persian - Persian - - - Fulah - Fulah - - - Finnish - Finnish - - - Fijian - Fijian - - - Faroese - Faroese - - - French - French - - - Western Frisian - Western Frisian - - - Irish - Irish - - - Scottish Gaelic - Scottish Gaelic - - - Galician - Galician - - - Guarani - Guarani - - - Gujarati - Gujarati - - - Manx - Manx - - - Hausa - Hausa - - - Hebrew - Hebrew - - - Hindi - Hindi - - - Hiri Motu - Hiri Motu - - - Croatian - Croatian - - - Haitian - Haitian - - - Hungarian - Hungarian - - - Armenian - Armenian - - - Herero - Herero - - - Interlingua - Interlingua - - - Indonesian - Indonesian - - - Interlingue - Interlingue - - - Igbo - Igbo - - - Sichuan Yi - Sichuan Yi - - - Inupiaq - Inupiaq - - - Ido - Ido - - - Icelandic - Icelandic - - - Italian - Italiano - - - Inuktitut - Inuktitut - - - Japanese - Japanese - - - Javanese - Javanese - - - Georgian - Georgian - - - Kongo - Kongo - - - Kikuyu - Kikuyu - - - Kwanyama - Kwanyama - - - Kazakh - Kazakh - - - Kalaallisut - Kalaallisut - - - Khmer - Khmer - - - Kannada - Kannada - - - Korean - Korean - - - Kanuri - Kanuri - - - Kashmiri - Kashmiri - - - Kurdish - Kurdish - - - Komi - Komi - - - Cornish - Cornish - - - Kirghiz - Kirghiz - - - Latin - Latin - - - Luxembourgish - Luxembourgish - - - Ganda - Ganda - - - Limburgish - Limburgish - - - Lingala - Lingala - - - Lao - Lao - - - Lithuanian - Lithuanian - - - Luba-Katanga - Luba-Katanga - - - Latvian - Latvian - - - Malagasy - Malagasy - - - Marshallese - Marshallese - - - Maori - Maori - - - Macedonian - Macedonian - - - Malayalam - Malayalam - - - Mongolian - Mongolian - - - Marathi - Marathi - - - Malay - Malay - - - Maltese - Maltese - - - Burmese - Burmese - - - Nauru - Nauru - - - Norwegian Bokmal - Norwegian Bokmal - - - North Ndebele - North Ndebele - - - Nepali - Nepali - - - Ndonga - Ndonga - - - Dutch - Dutch - - - Norwegian Nynorsk - Norwegian Nynorsk - - - Norwegian - Norwegian - - - South Ndebele - South Ndebele - - - Navajo - Navajo - - - Chichewa - Chichewa - - - Occitan - Occitan - - - Ojibwa - Ojibwa - - - Oromo - Oromo - - - Oriya - Oriya - - - Ossetian - Ossetian - - - Panjabi - Panjabi - - - Pali - Pali - - - Polish - Polish - - - Pashto - Pashto - - - Portuguese - Portuguese - - - Quechua - Quechua - - - Raeto-Romance - Raeto-Romance - - - Kirundi - Kirundi - - - Romanian - Romanian - - - Russian - Russian - - - Kinyarwanda - Kinyarwanda - - - Sanskrit - Sanskrit - - - Sardinian - Sardinian - - - Sindhi - Sindhi - - - Northern Sami - Northern Sami - - - Sango - Sango - - - Serbo-Croatian - Serbo-Croatian - - - Sinhala - Sinhala - - - Slovak - Slovak - - - Slovenian - Slovenian - - - Samoan - Samoan - - - Shona - Shona - - - Somali - Somali - - - Albanian - Albanian - - - Serbian - Serbian - - - Swati - Swati - - - Southern Sotho - Southern Sotho - - - Sundanese - Sundanese - - - Swedish - Swedish - - - Swahili - Swahili - - - Tamil - Tamil - - - Telugu - Telugu - - - Tajik - Tajik - - - Thai - Thai - - - Tigrinya - Tigrinya - - - Turkmen - Turkmen - - - Tagalog - Tagalog - - - Tswana - Tswana - - - Tonga - Tonga - - - Turkish - Turkish - - - Tsonga - Tsonga - - - Tatar - Tatar - - - Twi - Twi - - - Tahitian - Tahitian - - - Uighur - Uighur - - - Ukrainian - Ukrainian - - - Urdu - Urdu - - - Uzbek - Uzbek - - - Venda - Venda - - - Vietnamese - Vietnamese - - - Volapuk - Volapuk - - - Walloon - Walloon - - - Wolof - Wolof - - - Xhosa - Xhosa - - - Yiddish - Yiddish - - - Yoruba - Yoruba - - - Zhuang - Zhuang - - - Chinese - Chinese - - - Zulu - Zulu - - - - %1 Morphology - Morfología de %1 - - - - HunspellDictsModel - - - Enabled - Activado - - - - Name - Nombre - - - - Initializing - - - Please wait... - Por favor espere... - - - - - Please wait while indexing dictionary - Por favor espere mientras los diccionarios son indexados - - - - GoldenDict - Initializing - GoldenDict - Inicializando - - - - Dictionary Name - Nombre de diccionario - - - - Language - - - Afar - Afar - - - - Abkhazian - Abjasiano - - - - Avestan - Avestán - - - - Afrikaans - Afrikaans - - - - Akan - Acano - - - - Amharic - Amárico - - - - Aragonese - Aragonés - - - - Arabic - Árabe - - - - Assamese - Asamés - - - - Avaric - Ávaro - - - - Aymara - Aimará - - - - Azerbaijani - Azerí - - - - Bashkir - Bashkir - - - - Belarusian - Bielorruso - - - - Bulgarian - Búlgaro - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengalí - - - - Tibetan - Tibetano - - - - Breton - Bretón - - - - Bosnian - Bosnio - - - - Catalan - Catalán - - - - Chechen - Checheno - - - - Chamorro - Chamorro - - - - Corsican - Corso - - - - Cree - Cree - - - - Czech - Checo - - - - Church Slavic - Eslavo eclesiástico - - - - Chuvash - Chuvash - - - - Welsh - Galés - - - - Danish - Danés - - - - German - Alemán - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewé - - - - Greek - Griego - - - - English - Inglés - - - - Esperanto - Esperanto - - - - Spanish - Español (Castellano) - - - - Estonian - Estonio - - - - Basque - Vasco (Eusquera) - - - - Persian - Farsí - - - - Fulah - Fula - - - - Finnish - Finlandés - - - - Fijian - Fiyiano - - - - Faroese - Feroés - - - - French - Francés - - - - Western Frisian - Frisio occidental - - - - Irish - Irlandés - - - - Scottish Gaelic - Gaélico escocés - - - - Galician - Gallego - - - - Guarani - Guaraní - - - - Gujarati - Gujarati - - - - Manx - Manés - - - - Hausa - Hausa - - - - Hebrew - Hebreo - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Croata - - - - Haitian - Haitiano - - - - Hungarian - Húngaro - - - - Armenian - Armenio - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonesio - - - - Interlingue - Interlingua - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Iñupiaq - - - - Ido - Ido - - - - Icelandic - Islandés - - - - Italian - Italiano - - - - Inuktitut - Inuktitut - - - - Japanese - Japonés - - - - Javanese - Javanés - - - - Georgian - Georgiano - - - - Kongo - Kongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kuanyama - - - - Kazakh - kazajio - - - - Kalaallisut - Groenlandés - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Coreano - - - - Kanuri - Kanuri - - - - Kashmiri - Cachemir - - - - Kurdish - Kurdo - - - - Komi - Komi - - - - Cornish - Córnico - - - - Kirghiz - Kirguís - - - - Latin - Latín - - - - Luxembourgish - Luxemburgués - - - - Ganda - Luganda - - - - Limburgish - Limburgués - - - - Lingala - Lingala - - - - Lao - Laosiano - - - - Lithuanian - Lituano - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Letón - - - - Malagasy - Malgache - - - - Marshallese - Marshalés - - - - Maori - Maorí - - - - Macedonian - Macedonio - - - - Malayalam - Malayalam - - - - Mongolian - Mongol - - - - Marathi - Marathi - - - - Malay - Malayo - - - - Maltese - Maltés - - - - Burmese - Birmano - - - - Nauru - Nauru - - - - Norwegian Bokmal - Bokmål noruego - - - - North Ndebele - Sindebele - - - - Nepali - Nepalés - - - - Ndonga - Ndonga - - - - Dutch - Holandés - - - - Norwegian Nynorsk - Nynorsk noruego - - - - Norwegian - Noruego - - - - South Ndebele - Nrebele - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitano - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Osetio - - - - Panjabi - Punjabi - - - - Pali - Pali - - - - Polish - Polaco - - - - Pashto - Pashto - - - - Portuguese - Portugués - - - - Quechua - Quechua - - - - Raeto-Romance - Retorrománica - - - - Kirundi - Kirundi - - - - Romanian - Rumano - - - - Russian - Ruso - - - - Kinyarwanda - Quiñaruanda - - - - Sanskrit - Sánscrito - - - - Sardinian - Sardo - - - - Sindhi - Sindhi - - - - Northern Sami - Sami septentrional - - - - Sango - Sango - - - - Serbo-Croatian - Serbocroata - - - - Sinhala - Cingalés - - - - Slovak - Eslovaco - - - - Slovenian - Esloveno - - - - Samoan - Samoano - - - - Shona - Shona - - - - Somali - Somalí - - - - Albanian - Albanés - - - - Serbian - Serbio - - - - Swati - Suazi - - - - Southern Sotho - Sesotho - - - - Sundanese - Sondanés - - - - Swedish - Sueco - - - - Swahili - Suahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tayiko - - - - Thai - Tailandés - - - - Tigrinya - Tigriña - - - - Turkmen - Turcomano - - - - Tagalog - Tagalo - - - - Tswana - Setsuana - - - - Tonga - Tonga - - - - Turkish - Turco - - - - Tsonga - Tsonga - - - - Tatar - Tártaro - - - - Twi - Twi - - - - Tahitian - Tahitiano - - - - Uighur - Uigur - - - - Ukrainian - Ucraniano - - - - Urdu - Urdú - - - - Uzbek - Uzbeco - - - - Venda - Venda - - - - Vietnamese - Vietnamita - - - - Volapuk - Volapük - - - - Walloon - Valón - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Yiddish - - - - Yoruba - Yoruba - - - - Zhuang - Chuan - - - - Chinese - Chino - - - - Zulu - Zulú - - - - Lojban - Lojban - - - - Traditional Chinese - Chino tradicional - - - - Simplified Chinese - Chino simplificado - - - - Other - Otro - - - - Other Simplified Chinese dialects - Otros dialectos de chino simplificado - - - - Other Traditional Chinese dialects - Otros dialectos de chino tradicional - - - - Other Eastern-European languages - Otras lenguas de Europa del Este - - - - Other Western-European languages - Otras lenguas de Europa Occidental - - - - Other Russian languages - Otras lenguas de Rusia - - - - Other Japanese languages - Otras lenguas de Japón - - - - Other Baltic languages - Otras lenguas bálticas - - - - Other Greek languages - Otras lenguas griegas - - - - Other Korean dialects - Otros dialectos de Corea - - - - Other Turkish dialects - Otros dialectos de Turquía - - - - Other Thai dialects - Otros dialectos de Tailandia - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Error al cargar diccionarios - - - - Main - - - Error in configuration file. Continue with default settings? - Error en archivo de configuración. ¿Desea continuar con los valores por defecto? - - - - MainWindow - - Navigation - Barra de navegación - - - - Back - Atrás - - - - Forward - Adelante - - - - Scan Popup - Ventana emergente de lectura - - - Pronounce word - Pronounce word - - - - Show &Main Window - &Mostrar ventana principal - - - - - &Quit - &Salir - - - - Loading... - Cargando... - - - - Skip This Release - Saltarse esta versión - - - [Unknown] - [Unknown] - - - - Page Setup - Configurar página - - - - No printer is available. Please install one first. - Impresora no disponible. Por favor instale una primero. - - - - Print Article - Imprimir artículo - - - - Article, Complete (*.html) - Artículo, Completo (*.html) - - - - Article, HTML Only (*.html) - Artículo, sólo HTML (*.html) - - - - Save Article As - Guardar artículo como - - - Html files (*.html *.htm) - Archivos HTML (*.html *.htm) - - - - Error - Error - - - - Can't save article: %1 - No es posible guardar el artículo: %1 - - - Error loading dictionaries - Error loading dictionaries - - - - %1 dictionaries, %2 articles, %3 words - %1 diccionarios, %2 artículos, %3 palabras - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - No fue posible inicializar el mecanismo de monitoreo de las teclas de acceso rápido. Verifique que su XServer posea la extensión RECORD activada. - - - - New Release Available - Nueva versión disponible - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - La versión <b>%1</b> de GoldenDict está disponible ahora para descargar.<br>Haga click en <b>Descargar</b> para ir a la página web de descarga. - - - - Download - Descargar - - - - - Look up in: - Buscar en: - - - Show Names in Dictionary Bar - Mostrar nombres en la barra de diccionarios - - - Show Small Icons in Toolbars - Mostrar íconos pequeños en las barras - - - - &Menubar - Barra de &menú - - - - Found in Dictionaries: - Resultados en diccionarios: - - - - Pronounce Word (Alt+S) - Pronunciar palabra (Alt+S) - - - - Show Names in Dictionary &Bar - Mostrar n&ombres en la barra de diccionarios - - - - Show Small Icons in &Toolbars - Mostrar íconos &pequeños en las barras - - - - &Navigation - Barra de &navegación - - - - Zoom In - Acercar - - - - Zoom Out - Alejar - - - - Normal Size - Tamaño normal - - - - Words Zoom In - Aumentar tamaño palabras - - - - Words Zoom Out - Reducir tamaño palabras - - - - Words Normal Size - Tamaño normal de palabras - - - - Close current tab - Cerrar pestaña actual - - - - Close all tabs - Cerrar todas las pestañas - - - - Close all tabs except current - Cerrar todas las pestañas excepto la actual - - - - Look up: - Buscar: - - - - All - Todos - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - La función de accesibilidad no esta activada - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Saving article... - Guardando artículo... - - - - The main window is set to be always on top. - La ventana principal del programa se ha configurado para aparecer siempre visible. - - - - Import history from file - Importar historial desde archivo - - - Imported from file: - Importado desde archivo: - - - - Import error: invalid data in file - Error de importación: datos inválidos en el archivo - - - - History import complete - Importación de historial finalizada - - - - Import error: - Error de importación: - - - - Dictionary info - Información del diccionario - - - - Dictionary headwords - - - - - Open dictionary folder - Abrir carpeta del diccionario - - - - Edit dictionary - Editar diccionario - - - - Opened tabs - Pestañas abiertas - - - - Open Tabs List - Abrir lista de pestañas - - - - (untitled) - (sin título) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - ATENCIÓN: %1 - - - - You have chosen to hide a menubar. Use %1 to show it back. - Ha elegido ocultar la barra de menú. Utilice %1 para mostrarla nuevamente. - - - - Ctrl+M - Ctrl+M - - - - &Hide - &Ocultar - - - History view mode - Modo vista historial - - - - Export history to file - Exportar historial a archivo - - - - - Text files (*.txt);;All files (*.*) - Documentos de texto (*.txt);;Todos los archivos (*.*) - - - - History export complete - Exportación de historial finalizada - - - - Export error: - Error de exportación: - - - GoldenDict - GoldenDict - - - Tab 1 - Tab 1 - - - Tab 2 - Tab 2 - - - - - Welcome! - ¡Bienvenido! - - - - &File - &Archivo - - - - &Edit - &Editar - - - - &Help - A&yuda - - - Results Navigation Pane - Cuadro de navegación de resultados - - - &Dictionaries... F3 - &Diccionarios... F3 - - - - &Preferences... - &Preferencias... - - - &Sources... - &Sources... - - - - F2 - F2 - - - &Groups... - &Grupos... - - - - &View - &Ver - - - - &Zoom - &Zoom - - - - H&istory - &Historial - - - - &Dictionaries... - &Diccionarios... - - - - F3 - F3 - - - - &Search Pane - Cuadro de &búsqueda - - - - Search - - - - - &Results Navigation Pane - Cuadro de navegación de &resultados - - - - &History Pane - Cuadro de &historial - - - - F4 - F4 - - - - &Homepage - &Sitio web - - - - &About - &Acerca de GoldenDict - - - - About GoldenDict - Acerca de GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Salir del programa - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Foro - - - - &Close To Tray - &Cerrar a bandeja - - - - Minimizes the window to tray - Minimiza la ventana a la bandeja - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Guardar artículo - - - - Save Article - Guardar artículo - - - - &Print - &Imprimir - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Configurar &página - - - - Print Pre&view - &Vista preliminar - - - - &Rescan Files - &Reescanear archivos - - - - &New Tab - &Nueva pestaña - - - - &Always on Top - Siempre &visible - - - - Always on Top - Siempre visible - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Menú principal - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Vista preliminar - - - Rescan Files - Reescanear archivos - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Limpiar - - - - New Tab - Nueva pestaña - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Carpeta de &configuración - - - - - &Show - &Mostrar - - - - Ctrl+H - Ctrl+H - - - - &Export - &Exportar - - - - &Import - &Importar - - - Search Pane - Cuadro de búsqueda - - - Ctrl+F11 - Ctrl+F11 - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - El archivo del diccionario ha sido manipulado o corrompido - - - - Failed loading article from %1, reason: %2 - Error al cargar artículo de %1, motivo: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Error de parsing XML: %1 en %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Error de parsing XML: %1 en %2,%3 - - - - MediaWikisModel - - - Enabled - Activado - - - - Name - Nombre - - - - Address - Dirección - - - - Icon - Ícono - - - - OrderAndProps - - - Form - Formulario - - - - Dictionary order: - Orden de diccionarios: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Diccionarios inactivos (desactivados): - - - - Dictionary information - Información del diccionario - - - - Name: - Nombre: - - - - Total articles: - Total de artículos: - - - - Total words: - Total de palabras: - - - - Translates from: - Traduce de: - - - - Translates to: - Traduce a: - - - - Description: - Descripción: - - - - Files comprising this dictionary: - Archivos que componen este diccionario: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Ajuste el orden de los diccionarios arrastrando y soltando los mismos en donde desee ubicarlos.Arrastre diccionarios al grupo de inactivos para desactivarlos. - - - - Sort by name - Ordenar por nombre - - - - Sort by languages - Ordenar por idiomas - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Ruta de directorio - - - - Recursive - Búsqueda recursiva - - - - Preferences - - - Preferences - Preferencias - - - - &Interface - &Interfaz - - - - Tabbed browsing - Navegación por pestañas - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalmente, al abrir una nueva pestaña, el programa cambia a ésta de manera inmediata. -Sin embargo, si esta opción se activa las nuevas pestañas se abrirán sin que el programa cambie el foco a ellas. - - - - Open new tabs in background - Abrir nuevas pestañas en segundo plano - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Con esta opción activada, las nuevas pestañas se posicionarán -a continuación de la pestaña activa actual. Caso contrario, -se agregarán al final de la lista de pestañas. - - - - Open new tabs after the current one - Abrir nuevas pestañas a continuación de la actual - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Seleccione esta opción para no mostrar la barra de pestañas cuando existe una única pestaña. - - - - Hide single tab - Ocultar única pestaña - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab cambia a última pestaña vista - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Con esta opción activada, un ícono aparecerá -en la bandeja del sistema, el cual puede usarse -para abrir la ventana principal del programa y -ejecutar otras operaciones. - - - - Enable system tray icon - Activar ícono en bandeja del sistema - - - - With this on, the application starts directly to system tray without showing -its main window. - Con esta opción activada, el programa aparece directamente -en la bandeja del sistema, sin mostrar la ventana principal. - - - - - Start to system tray - Iniciar a bandeja del sistema - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Con esta opción activada, al intentar cerrar la ventana principal del programa, -éste se ocultará en vez de cerrarse. - - - - Close to system tray - Cerrar a bandeja del sistema - - - - Startup - Inicio - - - - Start with system - Auto-ejecutar el programa al iniciar el sistema - - - - Interface language: - Idioma de la interfaz: - - - - Display style: - Estilo de visualización: - - - - Double-click translates the word clicked - Traducir la palabra con un doble click sobre la misma - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normalmente, al presionar la tecla ESC el programa hace foco en el cuadro de búsqueda. -Sin embargo, si esta opción se activa se cerrará la ventana principal. - - - - ESC key hides main window - La tecla ESC oculta la ventana principal - - - - Turn this option on if you want to select words by single mouse click - Activar esta opción si desea seleccionar palabras por medio de un click simple - - - - Select word by single click - Seleccionar palabra con un click simple - - - - Add-on style: - Estilo complementario: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Ajuste este valor para evitar menús contextuales enormes. - - - - Context menu dictionaries limit: - Límite de diccionarios en menú contextual: - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Elige si la ventana emergente de lectura se activará por defecto o no. Si estuviera tildada, -el programa siempre se iniciará con la ventana emergente de lectura activa. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalmente, para activar una ventana emergente, deberá -mantener presionada las teclas elegidas mientras selecciona -una palabra. Con esta opción activada, las teclas elegidas -también podrán presionarse luego de que la selección fuera realizada. - - - - Hotkeys - Teclas de acceso rápido - - - - Use the following hotkey to show or hide the main window: - Utilizar la siguiente tecla de acceso rápido para mostrar/ocultar la ventana principal: - - - - Use the following hotkey to translate a word from clipboard: - Utilizar la siguiente tecla de acceso rápido para traducir una palabra del portapeles: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Las teclas de acceso rápido son globales y funcionan desde cualquier programa y dentro de cualquier contexto, siempre y cuando el GoldenDict esté siendo ejecutado en segundo plano. - - - - &Scan Popup - &Ventana emergente de lectura - - - - Automatically starts GoldenDict after operation system bootup. - Iniciar automáticamente el GoldenDict al terminar de iniciarse el sistema. - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Con esta opción activada, se mostrará una ventana emergente de traducción cada vez que apunte (Windows) o seleccione (Linux) cualquier palabra en la pantalla con el mouse. -También podrá activar/desactivar esta opción desde la ventana principal o el ícono de la bandeja del sistema. - - - Scan popup functionality - Scan popup functionality - - - - Enable scan popup functionality - Activar función de ventana emergente de lectura - - - - Start with scan popup turned on - Iniciar con la ventana emergente de lectura activada - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Con esta opción activada, la ventana emergente aparecerá sólo si todas las teclas seleccionadas estuvieran siendo presionadas cuando la selección de la palabra cambia. - - - - Only show popup when all selected keys are kept pressed: - Mostrar la ventana emergente sólo cuando se presionan todas las teclas seleccionadas abajo: - - - - Left Ctrl only - Sólo Ctrl izquierdo - - - - Left Ctrl - Ctrl izquierdo - - - - Right Shift only - Sólo Shift derecho - - - - Right Shift - Shift derecho - - - - Alt key - Tecla Alt - - - - Alt - Alt - - - - Ctrl key - Tecla Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Sólo Alt izquierdo - - - - Left Alt - Alt izquierdo - - - - Shift key - Tecla Shift - - - - Shift - Shift - - - - Right Alt only - Sólo Alt derecho - - - - Right Alt - Alt derecho - - - - Right Ctrl only - Sólo Ctrl derecho - - - - Right Ctrl - Ctrl derecho - - - - Left Shift only - Sólo Shift izquierdo - - - - Left Shift - Shift izquierdo - - - - Windows key or Meta key - Tecla Windows o tecla Meta - - - - Win/Meta - Win/Meta - - - - Keys may also be pressed afterwards, within - Las teclas pueden también presionarse posteriormente, dentro de los - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Para evitar falsos positivos, las teclas son controladas solamente -después de realizada la seleción dentro del límite de tiempo especificado aquí. - - - - secs - segundos - - - - Send translated word to main window instead of to show it in popup window - Enviar palabra traducida a la ventana principal en lugar de mostrarla en la ventana emergente de lectura - - - - Send translated word to main window - Enviar palabra traducida a la ventana principal - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Nota: Parece que está ejecutando una versión de X.Org XServer con la extensión RECORD defectuosa. Las teclas de acceso rápido en GoldenDict probablemente no funcionen. Esto debe corregirse en el mismo server. Por favor diríjase al siguiente </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">reporte de error</span></a><span style=" color:#ff0000;"> y deje un comentario ahí si lo desea.</span></p> -</body></html> - - - - &Audio - &Audio - - - - Pronunciation - Pronunciación - - - - Auto-pronounce words in main window - Auto-pronunciar palabras en la ventana principal - - - - Auto-pronounce words in scan popup - Auto-pronunciar palabras en la ventana emergente de lectura - - - - Playback - Reproducción - - - - Play audio files via FFmpeg(libav) and libao - Reproducir archivos de audio vía FFmpeg(libav) y libao - - - - Use internal player - Utilizar reproductor de audio interno - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Seleccionar esta opción para automáticamente plegar artículos grandes - - - - Collapse articles more than - Plegar artículos con más de - - - - Articles longer than this size will be collapsed - Los artículos que superen este tamaño aparecerán automáticamente plegados - - - - symbols - símbolos - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Utilice la API de reproducción de audio nativa de Windows. Limitado sólo a archivos .WAV, pero funciona muy bien. - - - Play via Windows native API - Reproducir vía API nativa de Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Reproducir audio vía el framework Phonon. Esta opción puede ser un poco inestable -pero debería funcionar con la mayoría de los formatos de audio. - - - Play via Phonon - Reproducir vía Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Reproducir audio vía la biblioteca Bass. Opción óptima. Para utilizar este modo debe copiar bass.dll (http://www.un4seen.com) en la carpeta de GoldenDict. - - - Play via Bass library - Reproducir vía biblioteca Bass - - - - Use any external program to play audio files - Utilice un programa externo para reproducir archivos de audio - - - - Use external program: - Utilizar un programa externo: - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Algunos sitios web detectan GoldenDict vía encabezados HTTP y de esta manera lo bloquean. Active esta opción para eludir este problema. - - - - Do not identify GoldenDict in HTTP headers - No identificar GoldenDict en encabezados HTTP - - - - Ad&vanced - A&vanzado - - - - ScanPopup extra technologies - Opciones avanzadas de ventana emergente de lectura - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Intenta utilizar la tecnología IAccessibleEx para obtener la palabra debajo del cursor del mouse. -Esta tecnología funciona sólo con los programas que la soportan (Por ejemplo Internet Explorer 9). -No necesita seleccionar esta opción si no utiliza tales programas. - - - - Use &IAccessibleEx - Utilizar &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Intenta utilizar la tecnología UI Automation para obtener la palabra debajo del cursor del mouse. -Esta tecnología funciona sólo con los programas que la soportan. -No necesita seleccionar esta opción si no utiliza tales programas. - - - - Use &UIAutomation - Utilizar &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Intenta utilizar la tecnología GoldenDict message para obtener la palabra debajo del cursor del mouse. -Esta tecnología funciona sólo con los programas que la soportan. -No necesita seleccionar esta opción si no utiliza tales programas. - - - - Use &GoldenDict message - Utilizar &GoldenDict message - - - - History - Historial - - - - Turn this option on to store history of the translated words - Activar esta opción para guardar el historial de las palabras traducidas - - - - Store &history - Guardar &historial - - - - Specify the maximum number of entries to keep in history. - Indicar el máximo número de entradas para el historial. - - - - Maximum history size: - Tamaño máximo del historial: - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervalo para grabar historial. Si se configura en 0, el historial sólo se grabará al cerrar el programa. - - - - Save every - Guardar cada - - - - minutes - minutos - - - - Articles - Artículos - - - - Turn this option on to always expand optional parts of articles - Activar esta opción para expandir siempre las partes opcionales de artículos - - - - Expand optional &parts - Expandir &partes opcionales - - - Program to play audio files: - Program to play audio files: - - - - &Network - &Red - - - - Enable if you wish to use a proxy server -for all program's network requests. - Active esta opción para utilizar un servidor proxy -para todos los accesos a la red del programa. - - - - Use proxy server - Utilizar servidor proxy - - - - Type: - Tipo: - - - - Host: - Servidor: - - - - Port: - Puerto: - - - - User: - Usuario: - - - - Password: - Contraseña: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Con esta opción activada, GoldenDict bloqueará la mayoría de los anuncios de publicidad -al desactivar el contenido (imágenes, frames, etc.) que no sea originario del sitio web -que está accediendo. Si algunos sitios web dejan de funcionar, intente desactivar esta opción. - - - - Disallow loading content from other sites (hides most advertisements) - No permitir la carga de contenido de otros sitios web (oculta la mayoría de los anuncios de publicidad) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Con esta opción activada, podrá escuchar pronunciaciones de palabras -en diccionarios online que necesiten para esto de Flash u otros plugins web. -El plugin debe estar instalado en el sistema para que esta opción funcione. - - - - Enable web plugins - Activar plugins web - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Con esta opción activada, el programa verifica periódicamente -si está disponible para descargar una versión actualizada del GoldenDict. -Si fuera así, el programa informa al usuario sobre la misma y abre una -página web de descarga utilizando el navegador de internet. - - - - Check for new program releases periodically - Verificar periódicamente si hay nuevas versiones del programa - - - - System default - Por defecto - - - English - English - - - Russian - Russian - - - - - Default - Por defecto - - - - Modern - Modern - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blu - - - Play via DirectShow - Reproducir vía DirectShow - - - - Changing Language - Modificar idioma - - - - Restart the program to apply the language change. - Reinicie el programa para aplicar el cambio de idioma. - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Texto simple - - - - Html - Html - - - - Prefix Match - Coincidencia prefijo - - - - Unknown - Desconocido - - - - Programs::RunInstance - - - No program name was given. - No se ha ingresado el nombre del programa. - - - - The program has crashed. - Ha ocurrido un error en el programa. - - - - The program has returned exit code %1. - El programa ha retornado un error %1. - - - - ProgramsModel - - - Enabled - Activado - - - - Type - Tipo - - - - Name - Nombre - - - - Command Line - Línea de comando - - - - Icon - Ícono - - - - QObject - - - - Article loading error - Error al cargar artículo - - - - - Article decoding error - Error al decodificar artículo - - - - avformat_alloc_context() failed. - Fallo en avformat_alloc_context(). - - - - av_malloc() failed. - Fallo en av_malloc(). - - - - avio_alloc_context() failed. - Fallo en avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Fallo en avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - Fallo en avformat_find_stream_info(): %1. - - - - Could not find audio stream. - No pudo encontrarse un stream de audio. - - - - Codec [id: %1] not found. - Códec [id: %1] no encontrado. - - - - avcodec_open2() failed: %1. - Fallo en avcodec_open2(): %1. - - - - Cannot find usable audio output device. - No se encuentra disponible un dispositivo de salida de audio. - - - - Unsupported sample format. - Formato de muestreo no soportado. - - - - ao_open_live() failed: - Fallo en ao_open_live(): - - - - No driver. - No existe controlador de dispositivo disponible. - - - - This driver is not a live output device. - Este controlador no es un dispositivo de salida activo. - - - - A valid option key has an invalid value. - Una opción de clave válida contiene un valor inválido. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - No se puede abrir el dispositivo: %1, channels: %2, rate: %3, bits: %4. - - - - Unknown error. - Error desconocido. - - - - avcodec_alloc_frame() failed. - Fallo en avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Búsqueda/filtro de diccionarios (Ctrl+F) - - - - Quick Search - Búsqueda rápida - - - - Clear Search - Limpiar búsqueda - - - - ResourceToSaveHandler - - - - ERROR: %1 - ERROR: %1 - - - - Resource saving error: - Error al guardar recurso: - - - - The referenced resource failed to download. - No fue posible descargar el recurso referenciado. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji para Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji para Katakana - - - - RussianTranslit - - - Russian Transliteration - Transliteración de ruso - - - - ScanPopup - - %1 results differing in diacritic marks - %1 results differing in diacritic marks - - - %1 result(s) beginning with the search word - %1 result(s) beginning with the search word - - - - Dialog - Diálogo - - - word - palabra - - - - Back - Atrás - - - - Forward - Adelante - - - List Matches (Alt+M) - Listar coincidencias (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Pronunciar palabra (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Enviar palabra a la ventana principal (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Muestra u oculta la barra de diccionarios - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Utilice esta opción para fijar la ventana de modo que -quede en la pantalla, pueda ser redimensionada -o pueda ser manipulada de otras formas. - - - List matches - List matches - - - - - - - - ... - ... - - - Pronounce word - Pronounce word - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Ruta de directorio - - - - Name - Nombre - - - - Icon - Ícono - - - - Sources - - - Text to Speech - Texto a Voz - - - - (not available in portable version) - (no disponible en versión portátil) - - - - - - Choose a directory - Elija un directorio - - - - - - - - - Confirm removal - Confirmar eliminación - - - - - Remove directory <b>%1</b> from the list? - ¿Eliminar el directorio <b>%1</b> de la lista? - - - - - - Remove site <b>%1</b> from the list? - ¿Eliminar el sitio <b>%1</b> de la lista? - - - - Remove program <b>%1</b> from the list? - ¿Eliminar el programa <b>%1</b> de la lista? - - - Sources - Sources - - - - Files - Archivos - - - - Paths to search for the dictionary files: - Rutas de directorios donde buscar los archivos de los diccionarios: - - - - - - - - - &Add... - &Agregar... - - - - - - - - - &Remove - &Eliminar - - - - Re&scan now - Ree&scanear ahora - - - - Sound Dirs - Pronunciación - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Cree diccionarios de un conjunto de archivos de audio al agregar rutas de directorios aquí: - - - - Morphology - Morfología - - - - Path to a directory with Hunspell/Myspell dictionaries: - Ruta de directorio con diccionarios Hunspell/Myspell: - - - - &Change... - &Modificar... - - - - Available morphology dictionaries: - Diccionarios morfológicos disponibles: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Cada diccionario morfológico aparece comoun diccionario auxiliar separado -que brinda raíces de palabras para búsquedas y sugerencias de ortografía -para palabras escritas de manera incorrecta. - -Agregue los diccionarios al final de los grupos pertinentes para utilizarlos. - - - - Websites - Sitios web - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Ingrese todos los sitios web que quiera. La ocurrencia %GDWORD% se reemplazará por el término de búsqueda especificado: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Como alternativa, puede utilizar %GD1251% para codificación CP1251 y %GDISO1% para codificación ISO-8859-1. - - - - Programs - Programas - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Ingrese todos los programas externos que quiera. La ocurrencia %GDWORD% se reemplazará por el término de búsqueda especificado. La misma también será enviada a la entrada estándar. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Pronunciación de palabras de <a href="http://www.forvo.com/">forvo.com</a>. Este sitio web permite grabar y compartir la pronunciación de palabras. Es posible escucharlas en GoldenDict. - - - - Enable pronunciations from Forvo - Activar la función para escuchar la pronunciación del sitio Forvo - - - - API Key: - Clave API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - El uso del sitio web Forvo actualmente requiere una clave API. Deje este -campo en blanco para utilizar la clave por defecto, que podría -caducar en el futuro, o regístrese en el sitio para -obtener su propia clave. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Obtenga su propia clave <a href="http://api.forvo.com/key/">aquí</a>, o deje este campo en blanco para utilizar la clave por defecto. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Obtenga su propia clave <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">aquí</span></a>, o deje este campo en blanco para utilizar la clave por defecto.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Como alternativa, puede utilizar %GD1251% para codificación CP1251 y %GDISO1%...%GDISO16% para codificación ISO-8859-1...ISO 8859-16 -respectivamente, %GDBIG5% para Big-5, %GDBIG5HKSCS% para Big5-HKSCS, %GDGBK% para GBK y GB18030, %GDSHIFTJIS% para Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Ingrese todos los programas externos que quiera. La ocurrencia %GDWORD% se reemplazará por el término de búsqueda especificado. Si la ocurrencia no esta presente, el término será enviado a la entrada estándar. - - - - Language codes (comma-separated): - Códigos de idiomas (separados por coma): - - - - List of language codes you would like to have. Example: "en, ru". - Lista de códigos de idioma que a Ud. le gustaría tener. Por ejemplo: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Una lista completa de códigos de idioma está disponible <a href="http://www.forvo.com/languages-codes/">aquí</a>. - - - - Transliteration - Transliteración - - - - Russian transliteration - Transliteración de ruso - - - - Greek transliteration - Transliteración de griego - - - - German transliteration - Transliteración de alemán - - - - Belarusian transliteration - Transliteración de bielorruso - - - - Enables to use the Latin alphabet to write the Japanese language - Permite utilizar el alfabeto latino para escribir el idioma japonés - - - - Japanese Romaji - Japonés romanizado - - - - Systems: - Sistemas: - - - - The most widely used method of transcription of Japanese, -based on English phonology - El método de transcripción del japonés más utilizado, -basado en la fonología inglesa - - - - Hepburn - Romanización Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - El sistema más regular, el cual posee una relación de uno a uno con - el sistema de escritura kana. Estandarizado como ISO 3602 - -Todavía no está implementado en GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Basado en el sistema Nihon-shiki, pero modificado para un nivel de japonés moderno. -Estandarizado como ISO 3602 - -Todavía no está implementado en GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Silabarios: - - - - Hiragana Japanese syllabary - Silabario japonés Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Silabario japonés Katakana - - - - Katakana - Katakana - - - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Sitios de Wikipedia (MediaWiki): - - - - StylesComboBox - - - None - Ninguno - - - - TextToSpeechSource - - - Selected voice engines: - Motores de voz seleccionados: - - - - &Add - &Agregar - - - - &Remove - &Eliminar - - - - Preferences - Preferencias - - - - Volume: - Volumen: - - - - Rate: - Velocidad: - - - - Preview - Muestra de voz - - - - Available voice engines: - Motores de voz disponibles: - - - - Text to be previewed: - Texto de muestra: - - - - Type text to be previewed here. - Escriba aquí el texto que desea escuchar. - - - - &Preview - &Escuchar muestra - - - - No TTS voice available - Texto a Voz no disponible - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - No se encuentra disponible ninguna opción de Texto a Voz. Por favor asegúrese de instalar al menos un motor de voz en su computadora. - - - - Confirm removal - Confirmar eliminación - - - - Remove voice engine <b>%1</b> from the list? - ¿Eliminar el motor de voz <b>%1</b> de la lista? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Escriba la palabra o frase a buscar - - - Options - Opciones - - - - Drop-down - Desplegar resultados - - - - VoiceEnginesModel - - - Enabled - Activado - - - - Name - Nombre - - - - Id - Identificador - - - - Icon - Ícono - - - - WebSitesModel - - - Enabled - Activado - - - - Name - Nombre - - - - Address - Dirección - - - - Icon - Ícono - - - - WordFinder - - - Failed to query some dictionaries. - No fue posible consultar algunos diccionarios. - - - - WordList - - - WARNING: %1 - ATENCIÓN: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_BO.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_BO.ts deleted file mode 100644 index 3107c2b637..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_BO.ts +++ /dev/null @@ -1,5650 +0,0 @@ - - - - - - - XML parse error: %1 at %2,%3 - Error leyendo XML: %1 en %2,%3 - - - - About - - - About - Acerca de - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Créditos: - - - GoldenDict dictionary lookup program, version 0.7 - GoldenDict diccionario electrónico, versión 0.7 - - - - GoldenDict dictionary lookup program, version - GoldenDict, diccionario electrónico, versión - - - #.# - #.# - - - - Licensed under GNU GPLv3 or later - Licencia GNU GPLv3 o después - - - - [Unknown] - [Desconocido] - - - - Based on Qt %1 (%2, %3 bit) - - - - - ArticleMaker - - - Expand article - - - - - Collapse article - - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - No traducción de <b>%1</b> fue encontrado en grupo <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - No traducción fue encontrado en grupo <b>%1</b>. - - - - Welcome! - ¡Bienvenido! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">¡Bienvenido a <b>GoldenDict</b>!</h3><p>Para empezar utilizando el programa, primero vaya al menú <b>Editar|Diccionarios</b> para añadir algunas rutas de directorios para buscar archivos de diccionarios, establecer sitios de Wikipedia o otros fuentes, ajustar el orden de diccionarios o crear grupos de diccionarios. <p>¡Entonces, Ud. puede empezar buscando palabras! Puede buscar en esta ventana utilizando el panel a la izquierda, o puede <a href="Working with popup">buscar palabras desde otras aplicaciones activas</a>. <p>Para personalizar este programa, vaya a <b>Editar&gt;Preferencias</b>. Todas las opciones allí tienen concejos emergentes. Léalos si Ud. tiene dudas acerca de las opciones. <p>Si Ud. necesita más ayuda, tiene preguntas, sugerencias o quiere saber las opiniones de otros, Ud está bienvenido al <a href="http://goldendict.org/forum/">foro</a> de GoldenDict. <p>Visite el <a href="http://goldendict.org/">sitio web</a> para conseguir actualizaciones del programa. <p>(c) 2008-2013 Konstantin Isakov. Licenciado bajo los términos de la GPLv3 o después. - - - - Working with popup - Utilizando la ventana emergente - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Cómo Utilizar la ventana emergente</h3>Para buscar palabras desde otras aplicaciones activas, primero hay que habilitar la opción <i>"Escaneo en una ventana emergente"</i> en <b>Editar|Preferencias</b>. Luego puede utilizarla en cualquier momento, activando el icono arriba de la 'Ventana Emergente'. Alternativamente, haga clic a derecha abajo en la bandeja del sistema y seleccione la opción <b>Escanear con Ventana Emergente</b> en el menú. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Luego detenga el cursor sobre la palabra que Ud. quiere buscar en otra aplicación y una ventana emergente aparecerá para hacer la consulta. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Luego, seleccione una palabra deseada con su ratón para buscarla desde otra aplicación. Para seleccionar una palabra haga doble clic o arrastra sobre la palabra mientras oprimiendo el botón del ratón, y una ventana emergente aparecerá con la definición de la palabra. - - - - (untitled) - (sin título) - - - - (picture) - - - - - ArticleRequest - - - From - De - - - From %1 - From %1 - - - - Expand article - - - - - Collapse article - - - - - Query error: %1 - Error de búsqueda: %1 - - - - Close words: - Cerrar palabras: - - - - Compound expressions: - Expresiones compuestas: - - - - Individual words: - Palabras individuales: - - - - ArticleView - - - Select Current Article - - - - - Copy as text - - - - - Inspect - - - - - Resource - - - - - Audio - - - - - TTS Voice - - - - - Picture - - - - - Definition from dictionary "%1": %2 - - - - - Definition: %1 - - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - El recurso referido no existe. - - - - The referenced audio program doesn't exist. - - - - - - ERROR: %1 - - - - - Save sound - - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - - - - - Save image - - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - - - - - &Open Link - &Abrir enlace - - - - Video - - - - - Video: %1 - - - - - Open Link in New &Tab - Abrir enlace en una nueva &pestaña - - - - Open Link in &External Browser - Abrir enlace en un &navegador web externo - - - - &Look up "%1" - &Buscar "%1" - - - - Look up "%1" in &New Tab - Buscar "%1" en una &nueva pestaña - - - - Send "%1" to input line - - - - - - &Add "%1" to history - - - - - Look up "%1" in %2 - Buscar "%1" en %2 - - - - Look up "%1" in %2 in &New Tab - Buscar "%1" en %2 en una &nueva pestaña - - - - WARNING: FFmpeg Audio Player: %1 - - - - Playing a non-WAV file - Reproduciendo un archivo no WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Para activar reproducción de archivos no WAV, por favor vaya a Editar|Preferencias, escoja la pestaña Audio y seleccione "Reproducir con DirectShow". - - - - Failed to run a player to play sound file: %1 - Fallo ejecutando un reproductor para reproducir el archivo de audio: %1 - - - - Failed to create temporary file. - Fallo creando archivo temporal. - - - - Failed to auto-open resource file, try opening manually: %1. - Fallo abriendo automáticamente el archivo de recursos. Intente abrirlo manualmente: %1. - - - - The referenced resource failed to download. - El recurso ha fallado de descargar. - - - - Save &image... - - - - - Save s&ound... - - - - - WARNING: %1 - ADVERTENCIA: %1 - - - - Form - Formulario - - - - about:blank - Acerca de: espacio en blanco - - - - x - x - - - - Find: - Buscar: - - - - - &Previous - &Anterior - - - - - &Next - &Siguiente - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &MAYÚSCULAS/minúsculas - - - - Highlight &all - - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - - - - - Belarusian transliteration from latin to cyrillic (school orthography) - - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Contraseña: - - - - DictGroupWidget - - - Form - Formulario - - - - Group icon: - Icono del grupo: - - - - Shortcut: - Tecla de acceso rápido: - - - - None - Ningún - - - - From file... - De archivo... - - - - Choose a file to use as group icon - Seleccione un archivo para usarlo como el icono de un grupo - - - - Images - Imágenes - - - - All files - Todos los archivos - - - - Error - Error - - - - Can't read the specified image file. - No puede leer el archivo especificado de imagen - - - - DictGroupsWidget - - - - - - Dictionaries: - - - - - Confirmation - Confirmación - - - - Are you sure you want to generate a set of groups based on language pairs? - ¿Estás seguro que quiere generar un conjunto de grupos basado en pares de lengua? - - - - Unassigned - - - - - Combine groups by source language to "%1->" - - - - - Combine groups by target language to "->%1" - - - - - Make two-side translate group "%1-%2-%1" - - - - - - Combine groups with "%1" - - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - - - - - Export headwords... - - - - - Cancel - Cancelar - - - - DictInfo - - - Total articles: - Artículos en total: - - - - Translates from: - Traduce de: - - - - Total words: - Palabras en total: - - - - Translates to: - Traduce a: - - - - Open folder - - - - - Edit dictionary - - - - - Files comprising this dictionary: - Este diccionario consiste de los archivos: - - - - Description: - - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - - - - - DictListModel - - - %1 entries - %1 entradas - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Habilitado - - - - Name - Nombre - - - - Address - Dirección - - - - Databases - - - - - Strategies - - - - - Icon - - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Barra de diccionario - - - - &Dictionary Bar - - - - - Extended menu with all dictionaries... - - - - - Edit this group - Modificar este grupo - - - - Dictionary info - - - - - Dictionary headwords - - - - - Open dictionary folder - - - - - Edit dictionary - - - - - EditDictionaries - - - &Sources - &Fuentes - - - - - &Dictionaries - &Diccionarios - - - - - &Groups - &Grupos - - - - Sources changed - Fuentes modificados - - - - Some sources were changed. Would you like to accept the changes? - Algunos fuentes fueron cambiados. ¿Quieres aceptar los cambios? - - - - Accept - Aceptar - - - - Cancel - Cancelar - - - - Dictionaries - Diccionarios - - - - ExternalViewer - - - the viewer program name is empty - - - - - FTS::FtsIndexing - - None - Ningún - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Ningún - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Ningún - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Error de lectura XML: %1 al %2,%3 - - - - Added %1 - %1 Añadido - - - - by - por - - - - Male - Masculino - - - - Female - Femenino - - - - from - de - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Vaya a Editar|Diccionarios|Fuentes|Forvo y solicitar su propia clave de API para hacer desaparecer este error. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Cancelar - - - - Help - - - - - GermanTranslit - - - German Transliteration - Transliteración alemana - - - - GreekTranslit - - - Greek Transliteration - Transliteración griega - - - - GroupComboBox - - - Choose a Group (Alt+G) - Escoger un grupo (Alt+G) - - - - GroupSelectorWidget - - - Form - Formulario - - - - Look in - Buscar: - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Añadir grupo - - - - Give a name for the new group: - Asignar un nombre al grupo nuevo: - - - - Rename group - Renombrar grupo - - - - Give a new name for the group: - Asignar un nombre nuevo al grupo: - - - - Remove group - Eliminar grupo - - - - Are you sure you want to remove the group <b>%1</b>? - ¿Está seguro que quiera eliminar el grupo <b>%1</b>? - - - - - Remove all groups - Eliminar todos los grupos - - - - Are you sure you want to remove all the groups? - ¿Está seguro que quiera eliminar todos los grupos? - - - Groups - Groups - - - - Dictionaries available: - Diccionarios disponibles: - - - - Add selected dictionaries to group (Ins) - Añadir diccionarios seleccionados al grupo (INS) - - - - > - > - - - - Ins - INS - - - - Remove selected dictionaries from group (Del) - Quitar diccionarios seleccionados del grupo (SUPR) - - - - < - < - - - - Del - SUPR - - - - Groups: - Grupos: - - - - Tab 2 - Pestaña 2 - - - - Create new dictionary group - Crear un nuevo grupo de diccionarios - - - - &Add group - &Añadir grupo - - - - Create language-based groups - Crear grupos basados en lengua - - - - Auto groups - Grupos automáticos - - - - Rename current dictionary group - Renombrar el grupo actual de diccionarios - - - - Re&name group - &Renombrar grupo - - - - Remove current dictionary group - Eliminar el grupo actual de diccionarios - - - - &Remove group - &Eliminar grupo - - - - Remove all dictionary groups - Eliminar todos los grupos de diccionarios - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Para añadir diccionarios a grupos, utilice el ratón para arrastrar y soltar los diccionarios a los grupos. Además cambie el orden de los grupos arrastrándolos con el ratón. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Anterior - - - - Forward - Siguiente - - - - Zoom In - Agrandar - - - - Zoom Out - Achicar - - - - Normal Size - Tamaño normal - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - - - - - Copy Selected - - - - - History: - - - - - %1/%2 - - - - - History size: %1 entries out of maximum %2 - - - - - Hunspell - - - Spelling suggestions: - Sugerencias ortográficas: - - - Afar - Afar - - - Abkhazian - Abkhazian - - - Avestan - Avestan - - - Afrikaans - Afrikaans - - - Akan - Akan - - - Amharic - Amharic - - - Aragonese - Aragonese - - - Arabic - Arabic - - - Assamese - Assamese - - - Avaric - Avaric - - - Aymara - Aymara - - - Azerbaijani - Azerbaijani - - - Bashkir - Bashkir - - - Belarusian - Belarusian - - - Bulgarian - Bulgarian - - - Bihari - Bihari - - - Bislama - Bislama - - - Bambara - Bambara - - - Bengali - Bengali - - - Tibetan - Tibetan - - - Breton - Breton - - - Bosnian - Bosnian - - - Catalan - Catalan - - - Chechen - Chechen - - - Chamorro - Chamorro - - - Corsican - Corsican - - - Cree - Cree - - - Czech - Czech - - - Church Slavic - Church Slavic - - - Chuvash - Chuvash - - - Welsh - Welsh - - - Danish - Danish - - - German - German - - - Divehi - Divehi - - - Dzongkha - Dzongkha - - - Ewe - Ewe - - - Greek - Greek - - - English - English - - - Esperanto - Esperanto - - - Spanish - Spanish - - - Estonian - Estonian - - - Basque - Basque - - - Persian - Persian - - - Fulah - Fulah - - - Finnish - Finnish - - - Fijian - Fijian - - - Faroese - Faroese - - - French - French - - - Western Frisian - Western Frisian - - - Irish - Irish - - - Scottish Gaelic - Scottish Gaelic - - - Galician - Galician - - - Guarani - Guarani - - - Gujarati - Gujarati - - - Manx - Manx - - - Hausa - Hausa - - - Hebrew - Hebrew - - - Hindi - Hindi - - - Hiri Motu - Hiri Motu - - - Croatian - Croatian - - - Haitian - Haitian - - - Hungarian - Hungarian - - - Armenian - Armenian - - - Herero - Herero - - - Interlingua - Interlingua - - - Indonesian - Indonesian - - - Interlingue - Interlingue - - - Igbo - Igbo - - - Sichuan Yi - Sichuan Yi - - - Inupiaq - Inupiaq - - - Ido - Ido - - - Icelandic - Icelandic - - - Italian - Italiano - - - Inuktitut - Inuktitut - - - Japanese - Japanese - - - Javanese - Javanese - - - Georgian - Georgian - - - Kongo - Kongo - - - Kikuyu - Kikuyu - - - Kwanyama - Kwanyama - - - Kazakh - Kazakh - - - Kalaallisut - Kalaallisut - - - Khmer - Khmer - - - Kannada - Kannada - - - Korean - Korean - - - Kanuri - Kanuri - - - Kashmiri - Kashmiri - - - Kurdish - Kurdish - - - Komi - Komi - - - Cornish - Cornish - - - Kirghiz - Kirghiz - - - Latin - Latin - - - Luxembourgish - Luxembourgish - - - Ganda - Ganda - - - Limburgish - Limburgish - - - Lingala - Lingala - - - Lao - Lao - - - Lithuanian - Lithuanian - - - Luba-Katanga - Luba-Katanga - - - Latvian - Latvian - - - Malagasy - Malagasy - - - Marshallese - Marshallese - - - Maori - Maori - - - Macedonian - Macedonian - - - Malayalam - Malayalam - - - Mongolian - Mongolian - - - Marathi - Marathi - - - Malay - Malay - - - Maltese - Maltese - - - Burmese - Burmese - - - Nauru - Nauru - - - Norwegian Bokmal - Norwegian Bokmal - - - North Ndebele - North Ndebele - - - Nepali - Nepali - - - Ndonga - Ndonga - - - Dutch - Dutch - - - Norwegian Nynorsk - Norwegian Nynorsk - - - Norwegian - Norwegian - - - South Ndebele - South Ndebele - - - Navajo - Navajo - - - Chichewa - Chichewa - - - Occitan - Occitan - - - Ojibwa - Ojibwa - - - Oromo - Oromo - - - Oriya - Oriya - - - Ossetian - Ossetian - - - Panjabi - Panjabi - - - Pali - Pali - - - Polish - Polish - - - Pashto - Pashto - - - Portuguese - Portuguese - - - Quechua - Quechua - - - Raeto-Romance - Raeto-Romance - - - Kirundi - Kirundi - - - Romanian - Romanian - - - Russian - Russian - - - Kinyarwanda - Kinyarwanda - - - Sanskrit - Sanskrit - - - Sardinian - Sardinian - - - Sindhi - Sindhi - - - Northern Sami - Northern Sami - - - Sango - Sango - - - Serbo-Croatian - Serbo-Croatian - - - Sinhala - Sinhala - - - Slovak - Slovak - - - Slovenian - Slovenian - - - Samoan - Samoan - - - Shona - Shona - - - Somali - Somali - - - Albanian - Albanian - - - Serbian - Serbian - - - Swati - Swati - - - Southern Sotho - Southern Sotho - - - Sundanese - Sundanese - - - Swedish - Swedish - - - Swahili - Swahili - - - Tamil - Tamil - - - Telugu - Telugu - - - Tajik - Tajik - - - Thai - Thai - - - Tigrinya - Tigrinya - - - Turkmen - Turkmen - - - Tagalog - Tagalog - - - Tswana - Tswana - - - Tonga - Tonga - - - Turkish - Turkish - - - Tsonga - Tsonga - - - Tatar - Tatar - - - Twi - Twi - - - Tahitian - Tahitian - - - Uighur - Uighur - - - Ukrainian - Ukrainian - - - Urdu - Urdu - - - Uzbek - Uzbek - - - Venda - Venda - - - Vietnamese - Vietnamese - - - Volapuk - Volapuk - - - Walloon - Walloon - - - Wolof - Wolof - - - Xhosa - Xhosa - - - Yiddish - Yiddish - - - Yoruba - Yoruba - - - Zhuang - Zhuang - - - Chinese - Chinese - - - Zulu - Zulu - - - - %1 Morphology - Morfología %1 - - - - HunspellDictsModel - - - Enabled - Habilitado - - - - Name - Nombre - - - - Initializing - - - Please wait... - Por favor espere... - - - - - Please wait while indexing dictionary - Por favor espere mientras construyendo el índice de los diccionarios - - - - GoldenDict - Initializing - GoldenDict - Iniciando - - - - Dictionary Name - Nombre del diccionario - - - - Language - - - Afar - Afar - - - - Abkhazian - Abjasio - - - - Avestan - Avéstico - - - - Afrikaans - Afrikáans - - - - Akan - Acano - - - - Amharic - Amárico - - - - Aragonese - Aragonés - - - - Arabic - Arabé - - - - Assamese - Asamés - - - - Avaric - Ávaro - - - - Aymara - Aymara - - - - Azerbaijani - Azerí - - - - Bashkir - Bashkir - - - - Belarusian - Bielorruso - - - - Bulgarian - Búlgaro - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengalí - - - - Tibetan - Tibetano - - - - Breton - Bretón - - - - Bosnian - Bosnio - - - - Catalan - Catalán - - - - Chechen - Chechén - - - - Chamorro - Chamorro - - - - Corsican - Corso - - - - Cree - Cree - - - - Czech - Checo - - - - Church Slavic - Eslavo eclesiástico - - - - Chuvash - Chuvasio - - - - Welsh - Galés - - - - Danish - Danés - - - - German - Alemán - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Griego - - - - English - Inglés - - - - Esperanto - Esperanto - - - - Spanish - Español - - - - Estonian - Estonio - - - - Basque - Vasco (Euskara) - - - - Persian - Farsì - - - - Fulah - Fula - - - - Finnish - Finlandés - - - - Fijian - Fiyiano - - - - Faroese - Feroés - - - - French - Francés - - - - Western Frisian - Frisón occidental - - - - Irish - Irlandés - - - - Scottish Gaelic - Gaélico escocés - - - - Galician - Gallego - - - - Guarani - Guaraní - - - - Gujarati - Guyaratí - - - - Manx - Manés - - - - Hausa - Hausa - - - - Hebrew - Hebreo - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Croato - - - - Haitian - Criollo haitiano - - - - Hungarian - Húngaro - - - - Armenian - Armenio - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonés - - - - Interlingue - Interlingua - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Inupiaq - - - - Ido - Ido - - - - Icelandic - Islandés - - - - Italian - Italiano - - - - Inuktitut - Inuktitut - - - - Japanese - Japonés - - - - Javanese - Javanés - - - - Georgian - Georgiano - - - - Kongo - Kikongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kwanyama - - - - Kazakh - Cazaco - - - - Kalaallisut - Groenlandés - - - - Khmer - Camboyano - - - - Kannada - Kannada - - - - Korean - Coreano - - - - Kanuri - Kanuri - - - - Kashmiri - Cachemir - - - - Kurdish - Kurdo - - - - Komi - Komi - - - - Cornish - Córnico - - - - Kirghiz - Kirguís - - - - Latin - Latín - - - - Luxembourgish - Luxemburgués - - - - Ganda - Ganda - - - - Limburgish - Limburgés - - - - Lingala - Lingala - - - - Lao - Laosiano - - - - Lithuanian - Lituano - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Letón - - - - Malagasy - Malgache - - - - Marshallese - Marshalés - - - - Maori - Maori - - - - Macedonian - Macedonio - - - - Malayalam - Malayalam - - - - Mongolian - Mongol - - - - Marathi - Marathi - - - - Malay - Malayo - - - - Maltese - Maltés - - - - Burmese - Birmano - - - - Nauru - Nauruano - - - - Norwegian Bokmal - Noruego bokmål - - - - North Ndebele - Ndebele norteño - - - - Nepali - Nepalés - - - - Ndonga - Ndonga - - - - Dutch - Danés - - - - Norwegian Nynorsk - Noruego Nynorsk - - - - Norwegian - Noruego - - - - South Ndebele - Ndebele sureño - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitano - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Osseto - - - - Panjabi - Panjabi - - - - Pali - Pali - - - - Polish - Polaco - - - - Pashto - Pastún - - - - Portuguese - Portugués - - - - Quechua - Quechua - - - - Raeto-Romance - Retorrománico - - - - Kirundi - Kirundi - - - - Romanian - Rumano - - - - Russian - Ruso - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sanscrito - - - - Sardinian - Sardo - - - - Sindhi - Sindhi - - - - Northern Sami - Sami norteño - - - - Sango - Sango - - - - Serbo-Croatian - Serbo-Croato - - - - Sinhala - Cingalés - - - - Slovak - Slovaco - - - - Slovenian - Sloveno - - - - Samoan - Samoano - - - - Shona - Shona - - - - Somali - Somalí - - - - Albanian - Albanés - - - - Serbian - Serbio - - - - Swati - Swati - - - - Southern Sotho - Sesotho - - - - Sundanese - Sudanés - - - - Swedish - Sueco - - - - Swahili - Suajili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tayiko - - - - Thai - Tailandés - - - - Tigrinya - Tigriña - - - - Turkmen - Turcomano - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Turco - - - - Tsonga - Tsonga - - - - Tatar - Tártaro - - - - Twi - Twi - - - - Tahitian - Tahitiano - - - - Uighur - Uigur - - - - Ukrainian - Ucranio - - - - Urdu - Urdu - - - - Uzbek - Uzbeco - - - - Venda - Venda - - - - Vietnamese - Vietnamita - - - - Volapuk - Volapuk - - - - Walloon - Valón - - - - Wolof - Wólof - - - - Xhosa - Xhosa - - - - Yiddish - Yidis - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Chino - - - - Zulu - Zulu - - - - Lojban - - - - - Traditional Chinese - - - - - Simplified Chinese - - - - - Other - - - - - Other Simplified Chinese dialects - - - - - Other Traditional Chinese dialects - - - - - Other Eastern-European languages - - - - - Other Western-European languages - - - - - Other Russian languages - - - - - Other Japanese languages - - - - - Other Baltic languages - - - - - Other Greek languages - - - - - Other Korean dialects - - - - - Other Turkish dialects - - - - - Other Thai dialects - - - - - Tamazight - - - - - LoadDictionaries - - - Error loading dictionaries - Error cargando los diccionarios - - - - Main - - - Error in configuration file. Continue with default settings? - - - - - MainWindow - - Navigation - Navegación - - - - Back - Anterior - - - - Forward - Siguiente - - - - Scan Popup - Escanear en ventana &emergente - - - Pronounce word - Pronounce word - - - - Show &Main Window - Mostrar Ventana &Principal - - - - - &Quit - &Salir - - - - Loading... - Cargando... - - - - Skip This Release - Saltar esta versión - - - [Unknown] - [Sconosciuto] - - - - Page Setup - Configuración de página - - - - No printer is available. Please install one first. - No hay una impresora disponible. Por favor instale una. - - - - Print Article - Imprimir articulo - - - - Save Article As - Guardar articulo como - - - Html files (*.html *.htm) - Archivos HTML (*.html *.htm) - - - - Error - Error - - - - Can't save article: %1 - No puede guardar articulo: %1 - - - Error loading dictionaries - Error loading dictionaries - - - - %1 dictionaries, %2 articles, %3 words - %1 diccionarios, %2 artículos, %3 palabras - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Fallo de inicializar monitoreo de teclas de acceso rápido.<br>Asegúrese que su XServer tiene activada la extensión RECORD. - - - - New Release Available - Una nueva versión está disponible - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Ahora versión <b>%1</b> de GoldenDict está disponible para descargar.<br>Haga clic en <b>Descargar</b> para ir a página de descargas. - - - - Download - Descargar - - - - - Look up in: - Buscar en: - - - Show Names in Dictionary Bar - Mostrar Nombres en la barra de diccionarios - - - - &Menubar - - - - - Found in Dictionaries: - - - - - Pronounce Word (Alt+S) - Pronunciar la Palabra (Alt+S) - - - - Show Names in Dictionary &Bar - - - - - Show Small Icons in &Toolbars - - - - - &Navigation - - - - - Zoom In - Agrandar - - - - Zoom Out - Achicar - - - - Normal Size - Tamaño normal - - - - Words Zoom In - Agrandar Palabras - - - - Words Zoom Out - Achicar Palabras - - - - Words Normal Size - Tamaño Normal de Palabras - - - - Close current tab - Cerrar la pestaña actual - - - - Close all tabs - Cerrar todas las pestañas - - - - Close all tabs except current - Cerrar todas las pestañas excepto la actual - - - - Look up: - Buscar en: - - - - All - Todo - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Article, Complete (*.html) - - - - - Article, HTML Only (*.html) - - - - - Saving article... - - - - - The main window is set to be always on top. - - - - - Import history from file - - - - - Import error: invalid data in file - - - - - History import complete - - - - - Import error: - - - - - Dictionary info - - - - - Dictionary headwords - - - - - Open dictionary folder - - - - - Edit dictionary - - - - - Opened tabs - Pestañas abiertas - - - - Open Tabs List - - - - - (untitled) - (sin titulo) - - - - %1 - %2 - - - - WARNING: %1 - ADVERTENCIA: %1 - - - - You have chosen to hide a menubar. Use %1 to show it back. - - - - - Ctrl+M - - - - - &Hide - - - - - Export history to file - - - - - - Text files (*.txt);;All files (*.*) - - - - - History export complete - - - - - Export error: - - - - GoldenDict - GoldenDict - - - Tab 1 - Tab 1 - - - Tab 2 - Tab 2 - - - - - Welcome! - ¡Bienvenido! - - - - &File - &Archivo - - - - &Edit - &Editar - - - - &Help - &Ayuda - - - - &Preferences... - &Preferencias... - - - &Sources... - &Sources... - - - - F2 - F2 - - - &Groups... - &Grupos... - - - - &View - &Ver - - - - &Zoom - &Zoom - - - - H&istory - &Historial - - - - &Dictionaries... - &Diccionarios... - - - - F3 - F3 - - - - &Search Pane - - - - - Search - - - - - &Results Navigation Pane - - - - - &History Pane - - - - - F4 - F4 - - - - &Homepage - &Página de inicio - - - - &About - &Acerca de - - - - About GoldenDict - Acerca de GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Salir de la aplicación - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Foro - - - - &Close To Tray - &Cerrar a la bandeja del sistema - - - - Minimizes the window to tray - Minimiza el programa a la bandeja del sistema - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Guardar Artículo - - - - Save Article - Guardar Artículo - - - - &Print - &Imprimir - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Configuración de &Pagina - - - - Print Pre&view - - - - - &Rescan Files - - - - - &New Tab - - - - - &Always on Top - - - - - Always on Top - - - - - Ctrl+O - - - - - - - Menu Button - - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Vista previa de impresión - - - Rescan Files - Reescanear Archivos - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Despejar - - - - New Tab - - - - - Ctrl+T - - - - - &Configuration Folder - - - - - - &Show - - - - - Ctrl+H - - - - - &Export - - - - - &Import - - - - Search Pane - Panel de búsquedas - - - Ctrl+F11 - Ctrl+F11 - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - - - - - Failed loading article from %1, reason: %2 - - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Error leyendo XML: %1 en %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Error leyendo XML: %1 en %2,%3 - - - - MediaWikisModel - - - Enabled - Habilitado - - - - Name - Nombre - - - - Address - Dirección - - - - Icon - - - - - OrderAndProps - - - Form - Formulario - - - - Dictionary order: - Orden de diccionarios: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Diccionarios deshabilitados: - - - - Dictionary information - Información del diccionario - - - - Name: - Nombre: - - - - Total articles: - Artículos en total: - - - - Total words: - Palabras en total: - - - - Translates from: - Traduce de: - - - - Translates to: - Traduce a: - - - - Description: - - - - - Files comprising this dictionary: - Este diccionario consiste de los archivos: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Ajuste el orden, arrastrando y soltando los diccionarios con el ratón. Mueva diccionarios al grupo deshabilitado para desactivar su uso - - - - Sort by name - - - - - Sort by languages - - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Ruta - - - - Recursive - Recursivo - - - - Preferences - - - Preferences - Preferencias - - - - &Interface - &Interfaz - - - - Tabbed browsing - Navegación por pestañas - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalmente, abriendo una pestaña nueva traslada allí -inmediatamente. Con esta opción pestañas nuevas serán -abiertas sin trasladar a ellas. - - - - Open new tabs in background - Abre pestañas nuevas en el fondo - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Por defecto, nuevas pestañas son agregadas al final -de la lista. Con está opción pestañas nuevas son -abiertas al lado de la pestaña actual. - - - - Open new tabs after the current one - Abre pestañas nuevas después de la actual - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - - - - - Hide single tab - - - - - Ctrl-Tab navigates tabs in MRU order - - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Cuando activado un icono aparece en la bandeja del sistema que puede ser utilizado para abrir la ventana principal y realizar otras tareas. - - - - Enable system tray icon - Habilitar el icono en la bandeja del sistema - - - - With this on, the application starts directly to system tray without showing -its main window. - Con esta opción, la aplicación inicia directamente en la bandeja del sistema sin mostrar su ventana principal. - - - - Start to system tray - Inicia en la bandeja del sistema - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Con esta opción un intento de cerrar la ventana principal la ocultaría sin cerrar la aplicación. - - - - Close to system tray - Cerrar a la bandeja del sistema - - - - Startup - Inicio - - - - Start with system - Inicia cuando el sistema arranca - - - - Interface language: - Lengua de la interfaz: - - - - Display style: - Estilo de visualización: - - - - Double-click translates the word clicked - Un doble clic traduce la palabra cliqueada - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - - - - - ESC key hides main window - - - - - Turn this option on if you want to select words by single mouse click - - - - - Select word by single click - - - - - Add-on style: - - - - - Help language - - - - - Adjust this value to avoid huge context menus. - - - - - Context menu dictionaries limit: - - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Selecciona si el modo de escaneo está activado por defecto o no. Si está -marcado, el programa siempre iniciará con el modo de escaneo habilitado. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalmente, para activar la ventana emergente, tiene -que mantener las teclas escogidas oprimidas mientras -Ud. selecciona una palabra. Con esta opción habilitada, -las teclas escogidas puede ser oprimidas un poco -despues la seleccion esté hecha. - - - - Hotkeys - Teclas de acceso rápido - - - - Use the following hotkey to show or hide the main window: - Usar la siguiente combinación de teclas para mostrar u ocultar la ventana principal: - - - - Use the following hotkey to translate a word from clipboard: - Usar la tecla siguiente para traducir una palabra en la porta-papeles: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Las teclas de acceso rápido están globales y funcionan desde cualquier programa o contexto mientras que GoldenDict estén ejecutando en el fondo. - - - - &Scan Popup - &Escanear con ventana emergente - - - - Automatically starts GoldenDict after operation system bootup. - GoldenDict inicia automáticamente cuando el sistema arranca. - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Con esta opción habilitada, la ventana emergente aparecerá -cada vez que el ratón apunta a una palabra en la pantalla (Windows) o -una palabra está seleccionada con el ratón (Linux). Cuando habilitada, -se puede prenderla o -apagarla desde la ventana principal o el icono en la bandeja del sistema. - - - Scan popup functionality - Scan popup functionality - - - - Enable scan popup functionality - Habilitar escaneo en una ventana emergente - - - - Start with scan popup turned on - Habilitar escaneo en una ventana emergente cuando inicia - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Con esto habilitado, la ventana emergente sólo aparece si todas las teclas -seleccionadas estén oprimidas cuando la selección de la palabra cambie. - - - - Only show popup when all selected keys are kept pressed: - Sólo muestra la ventana emergente cuando todas estas teclas seleccionadas sigan oprimidas: - - - - Left Ctrl only - Solo CTRL de izquierda - - - - Left Ctrl - CTRL de izquierda - - - - Right Shift only - Sola MAYÚSCULA de derecha - - - - Right Shift - MAYÚSCULA de derecha - - - - Alt key - Tecla ALT - - - - Alt - ALT - - - - Ctrl key - Tecla CTRL - - - - Ctrl - CTRL - - - - Left Alt only - Sola ALT de izquierda - - - - Left Alt - ALT de izquierda - - - - Shift key - Tecla MAYÚSCULA - - - - Shift - MAYÚSCULA - - - - Right Alt only - Sola ALT de derecho - - - - Right Alt - ALT de derecho - - - - Right Ctrl only - Solo CTRL de derecho - - - - Right Ctrl - CTRL de derecho - - - - Left Shift only - Sola MAYÚSCULA de izquierda - - - - Left Shift - MAYÚSCULA de izquierda - - - - Windows key or Meta key - Tecla de Windows o Meta - - - - Win/Meta - Windows o Meta - - - - Keys may also be pressed afterwards, within - Teclas pueden ser oprimidas después, adentro - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Para evitar positivos falsos, las teclas sólo son monitoreadas después de la terminación de la selección adentro un tiempo limitado, que está especificado aquí. - - - - secs - segundos - - - - Send translated word to main window instead of to show it in popup window - - - - - Send translated word to main window - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Nota: Aparece que la extensión RECORD está rota en tu instalación de X.Org XServer. Las teclas de acceso rápido de GoldenDict probablemente no funcionan. Este problema puede ser arreglado en el servidor mismo. Por favor consulte al </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">reportaje de bug</span></a><span style=" color:#ff0000;"> y se puede entregar comentarios allí.</span></p></body></html> - - - - &Audio - &Audio - - - - Pronunciation - Pronunciación - - - - Auto-pronounce words in main window - Pronuncia palabras automáticamente en la ventana principal - - - - Auto-pronounce words in scan popup - Pronunciar palabras automáticamente a escanear con la ventana emergente - - - - Playback - Reproducción - - - - Play audio files via FFmpeg(libav) and libao - - - - - Use internal player - - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - - - - - Collapse articles more than - - - - - Articles longer than this size will be collapsed - - - - - symbols - - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Usar la API nativa de Windows para reproducir que está limitada -a archivos .wav, pero funciona muy bien. - - - Play via Windows native API - Reproducir con la API nativa de Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Reproduce audio con Phonon. Puede ser un poco inestable, -pero debe soportar a mayoría de formatos de audio. - - - Play via Phonon - Reproducir con Phonon - - - - Use any external program to play audio files - Usar cualquier programa para reproducir archivos de audio - - - - Use external program: - Usar el programa externo: - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - - - - - Do not identify GoldenDict in HTTP headers - - - - - Ad&vanced - - - - - ScanPopup extra technologies - - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - - - - - Use &IAccessibleEx - - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - - Use &UIAutomation - - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - - Use &GoldenDict message - - - - - History - - - - - Turn this option on to store history of the translated words - - - - - Store &history - - - - - Specify the maximum number of entries to keep in history. - - - - - Maximum history size: - - - - - History saving interval. If set to 0 history will be saved only during exit. - - - - - Save every - - - - - minutes - - - - - Articles - - - - - Turn this option on to always expand optional parts of articles - - - - - Expand optional &parts - - - - Program to play audio files: - Program to play audio files: - - - - &Network - &Red - - - - Enable if you wish to use a proxy server -for all program's network requests. - Habilite está opción si Ud. quiere utilizar un -servidor proxy por todas las solicitudes de red del programa. - - - - Use proxy server - Utilizar servidor proxy - - - - Type: - Tipo: - - - - Host: - Host: - - - - Port: - Puerto: - - - - User: - Usuario: - - - - Password: - Contraseña: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Habilitando esta opción bloqueará la mayoría de propagando comercial, porque no permite contenido (imágenes y marcos) que no vienen directamente del sitio utilizado. Si causa problemas con algunos sitios, deshabilite esta opción. - - - - Disallow loading content from other sites (hides most advertisements) - No permite la carga de contenido de otros sitios (oculta la mayoría de propaganda) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - - - - - Enable web plugins - - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Cuando habilitado, el programa periódicamente -verifica si una versión nueva de GoldenDict está -disponible para descargarla. Si está disponible, -el programa le informa al usuario y le apunta a -la página web para descargarla. - - - - Check for new program releases periodically - Verificar periódicamente si haya una nueva versión del programa - - - - System default - Por defecto del sistema - - - English - English - - - Russian - Russian - - - - - Default - Por defecto - - - - Modern - - - - - Lingvo - Lingvo - - - - Babylon - - - - - Lingoes - - - - - Lingoes-Blue - - - - Play via DirectShow - Reproducir con DirectShow - - - - Changing Language - Cambiando la lengua - - - - Restart the program to apply the language change. - Reinicie el programa para utilizar la lengua nueva del programa. - - - - ProgramTypeEditor - - - Audio - - - - - Plain Text - - - - - Html - - - - - Prefix Match - - - - - Unknown - - - - - Programs::RunInstance - - - No program name was given. - - - - - The program has crashed. - - - - - The program has returned exit code %1. - - - - - ProgramsModel - - - Enabled - Habilitado - - - - Type - - - - - Name - Nombre - - - - Command Line - - - - - Icon - - - - - QObject - - - - Article loading error - - - - - - Article decoding error - - - - - avformat_alloc_context() failed. - - - - - av_malloc() failed. - - - - - avio_alloc_context() failed. - - - - - avformat_open_input() failed: %1. - - - - - avformat_find_stream_info() failed: %1. - - - - - Could not find audio stream. - - - - - Codec [id: %1] not found. - - - - - avcodec_open2() failed: %1. - - - - - Cannot find usable audio output device. - - - - - Unsupported sample format. - - - - - ao_open_live() failed: - - - - - No driver. - - - - - This driver is not a live output device. - - - - - A valid option key has an invalid value. - - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - - - - - Unknown error. - - - - - avcodec_alloc_frame() failed. - - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - - - - - Quick Search - - - - - Clear Search - - - - - ResourceToSaveHandler - - - - ERROR: %1 - - - - - Resource saving error: - - - - - The referenced resource failed to download. - El recurso ha fallado de descargar. - - - - Romaji - - - Hepburn Romaji for Hiragana - Romanización hepburn de Hiragana - - - - Hepburn Romaji for Katakana - Romanización hepburn de Katakana - - - - RussianTranslit - - - Russian Transliteration - Transliteración de ruso - - - - ScanPopup - - %1 results differing in diacritic marks - %1 results differing in diacritic marks - - - %1 result(s) beginning with the search word - %1 result(s) beginning with the search word - - - - Dialog - Diálogo - - - word - palabra - - - - Back - Anterior - - - - Forward - Siguiente - - - List Matches (Alt+M) - Lista de coincidencias (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Pronunciar la palabra (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - - - - - Alt+W - - - - - Shows or hides the dictionary bar - Muestra u oculta la barra de diccionario - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Utilice esto para fijar la ventana en la pantalla, redimensionarla o gerenciarla en otra manera. - - - List matches - List matches - - - - - - - - ... - ... - - - Pronounce word - Pronounce word - - - GoldenDict - GoldenDict - - - - - %1 - %2 - - - - - SoundDirsModel - - - Path - Ruta - - - - Name - Nombre - - - - Icon - - - - - Sources - - - Text to Speech - - - - - (not available in portable version) - (no disponible en versión portátil) - - - - - - Choose a directory - Escoger un directorio - - - - - - - - - Confirm removal - Confirma la eliminación - - - - - Remove directory <b>%1</b> from the list? - ¿Elimina el directorio <b>%1</b> de la lista? - - - - - - Remove site <b>%1</b> from the list? - ¿Eliminar el sitio <b>%1</b> de la lista? - - - - Remove program <b>%1</b> from the list? - - - - Sources - Sources - - - - Files - File - - - - Paths to search for the dictionary files: - Rutas para buscar archivos de diccionarios: - - - - - - - - - &Add... - &Añadir... - - - - - - - - - &Remove - &Eliminar - - - - Re&scan now - &Reescanear ahora - - - - Sound Dirs - Directorios de audio - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Crear diccionarios de grupos de archivos de audio, encontrados en rutas aquí: - - - - Morphology - Morfología - - - - Path to a directory with Hunspell/Myspell dictionaries: - Ruta de un directorio con diccionarios Hunspell o Myspell: - - - - &Change... - &Cambiar... - - - - Available morphology dictionaries: - Diccionarios morfológicos disponibles: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Cada diccionario morfológico aparece como -un diccionario auxiliar separado que -provee palabras raíces para búsquedas -y sugerencias ortográficas de palabras -mal escritas. Agregar diccionarios a los -fondos de grupos apropriados para utilizarlos. - - - - Websites - Sitios web - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Cualquier sitio web. Una cadena %GDWORD% será reemplazada por la palabra buscada: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Alternativamente, use %GD1251% en lugar de CP1251, %GDISO1% en lugar de ISO 8859-1. - - - - Programs - - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Pronuncia directamente de <a href="http://www.forvo.com/">forvo.com</a>. Este sito permite que la gente grabe y comparta pronunciaciones de palabras que pueden ser escuchadas desde GoldenDict. - - - - Enable pronunciations from Forvo - Habilitar la pronuncia da Forvo - - - - API Key: - Clave API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Actualmente el uso de Forvo requiere una clave de API. Deje este campo -en blanco para utilizar la clave por defecto, que tal vez no será -disponible en el futuro, o registre en el sitio para obtener tu -propia clave personalizada. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Obtenga tu propria clave <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">aquí</span></a>, o deje en blanco para utilizar la clave por defecto.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - - - - - Language codes (comma-separated): - Códigos de lengua (separados por comas): - - - - List of language codes you would like to have. Example: "en, ru". - Lista de códigos de lenguas que Ud. quiere utilizar. Por Ejemplo: "en, ru, es". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Una lista completa de los códigos de lenguas está disponible <a href="http://www.forvo.com/languages-codes/">aquí</a>. - - - - Transliteration - Transliteración - - - - Russian transliteration - Transliteración rusa - - - - Greek transliteration - Transliteración griega - - - - German transliteration - Transliteración alemana - - - - Belarusian transliteration - - - - - Enables to use the Latin alphabet to write the Japanese language - Habilita el alfabeto romano para escribir la lengua japonesa - - - - Japanese Romaji - Japonés romanizado - - - - Systems: - Sistemas: - - - - The most widely used method of transcription of Japanese, -based on English phonology - El sistema más utilizado para transcribir japonés, -basado en la fonología inglesa - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - El sistema más utilizado, con una relación uno-a-uno con sistemas de escritura kana. -Su estándar es ISO-3602. - -Todavia no implementado en GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Basado en el sistema Nihon-shiki, pero modificado para el japonés moderno estándar. -Estandarizado como ISO 3602 - -Todavía no implementado en GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Silabario: - - - - Hiragana Japanese syllabary - Silabario de Japonés Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Silabario de Japonés Katakana - - - - Katakana - Katakana - - - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Sitios de Wikipedia (MediaWiki): - - - - StylesComboBox - - - None - Ningún - - - - TextToSpeechSource - - - Selected voice engines: - - - - - &Add - - - - - &Remove - &Eliminar - - - - Preferences - Preferencias - - - - Volume: - - - - - Rate: - - - - - Preview - - - - - Available voice engines: - - - - - Text to be previewed: - - - - - Type text to be previewed here. - - - - - &Preview - - - - - No TTS voice available - - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - - - - - Confirm removal - Confirma la eliminación - - - - Remove voice engine <b>%1</b> from the list? - - - - - TranslateBox - - - Type a word or phrase to search dictionaries - - - - - Drop-down - - - - - VoiceEnginesModel - - - Enabled - Habilitado - - - - Name - Nombre - - - - Id - - - - - Icon - - - - - WebSitesModel - - - Enabled - Habilitado - - - - Name - Nombre - - - - Address - Dirección - - - - Icon - - - - - WordFinder - - - Failed to query some dictionaries. - Fallo buscando en algunos diccionarios. - - - - WordList - - - WARNING: %1 - ADVERTENCIA: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_ES.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_ES.ts deleted file mode 100644 index 6541275ced..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/es_ES.ts +++ /dev/null @@ -1,4848 +0,0 @@ - - - - - About - - - About - Acerca de - - - - GoldenDict dictionary lookup program, version - GoldenDict, programa para consulta de diccionarios, versión - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Créditos: - - - - Licensed under GNU GPLv3 or later - Licencia GNU GPLv3 o posterior - - - - [Unknown] - [Desconocido] - - - - Based on Qt %1 (%2, %3 bit) - Basado en Qt %1 (%2, %3 bits) - - - - ArticleMaker - - - Expand article - Desplegar artículo - - - - Collapse article - Plegar artículo - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - No se ha encontrado ninguna traducción para <b>%1</b> en el grupo <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - No se ha encontrado ninguna traducción en el grupo <b>%1</b>. - - - - Welcome! - ¡Bienvenido! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">¡Bienvenido a <b>GoldenDict</b>!</h3><p>Para empezar a trabajar con este programa, vaya primero a <b>Editar|Diccionarios</b> para especificar los directorios para los ficheros de diccionarios, configurar varios sitios de Wikipedia o de otras fuentes, definir el orden de búsqueda en los diccionarios o crear grupos de diccionarios.<p>Y con eso, ¡ya está listo para buscar! Puede hacerlo en esta ventana en el panel a la izquierda o puede <a href="Utilización de la ventana emergente">buscar palabras desde otros programas</a>. <p>Para personalizar el programa, eche un vistazo a las opciones disponibles en <b>Editar|Preferencias</b>. Cada opción tiene su propia descripción, léalas si tiene cualquier duda.<p>Si necesita más ayuda, tiene cualquier duda o sugerencia, o simplemente le interesa la opinión de los demás, es bienvenido al <a href="http://goldendict.berlios.de/forum/">foro</a> del programa.<p>Consulte el <a href="http://goldendict.org/">sitio web</a> del programa para estar al corriente de las actualizaciones.<p>© 2008-2013 Konstantin Isakov. Licencia GNU GPLv3 o posterior. - - - - Working with popup - Utilización de la ventana emergente - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Utilización de la ventana emergente</h3>Para buscar palabras desde otras aplicaciones, tiene que activar antes la <i>"función de ventana emergente de búsqueda"</i> en <b>Preferencias</b>, y entonces activar la ventana en cualquier momento con el icono 'Ventana emergente' mostrado arriba, o pulsando el icono de la bandeja mostrado abajo con el botón derecho del ratón y eligiendo la opción en el menú que aparece. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Entonces puede situar el cursor sobre la palabra que quiere buscar en otra aplicación, y aparecerá una ventana mostrando los resultados de la búsqueda. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Entonces puede seleccionar cualquier palabra que quiera buscar en otra aplicación con el ratón (haga doble clic o selecciónela con el ratón mientras mantiene pulsado el botón derecho), y aparecerá una ventana que mostrará los resultados de la búsqueda.. - - - - (untitled) - (sin título) - - - - (picture) - (imagen) - - - - ArticleRequest - - - Expand article - Desplegar artículo - - - - From - De - - - - Collapse article - Plegar artículo - - - - Query error: %1 - Error de consulta: %1 - - - - Close words: - Palabras parecidas: - - - - Compound expressions: - Expresiones compuestas: - - - - Individual words: - Palabras sueltas: - - - - ArticleView - - - Select Current Article - Seleccionar artículo actual - - - - Copy as text - Copiar como texto - - - - Inspect - Inspeccionar - - - - Resource - Recurso - - - - Audio - Audio - - - - TTS Voice - Voz de síntesis (TTS) - - - - Picture - Foto - - - - Definition from dictionary "%1": %2 - Definición de diccionario "%1": %2 - - - - Definition: %1 - Definición: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - El recurso indicado no existe. - - - - The referenced audio program doesn't exist. - El reproductor de audio indicado no existe. - - - - - ERROR: %1 - ERROR: %1 - - - - Save sound - Guardar sonido - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Ficheros de sonido (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Todos los ficheros (*.*) - - - - Save image - Guardar imagen - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Ficheros de imagen (*.bmp *.jpg *.png *.tif);;Todos los ficheros (*.*) - - - - &Open Link - &Abrir Enlace - - - - Video - Vídeo - - - - Video: %1 - Vídeo: %1 - - - - Open Link in New &Tab - Abrir Enlace en Nueva &Pestaña - - - - Open Link in &External Browser - Abrir Enlace en Navegador Web &Externo - - - - &Look up "%1" - &Buscar "%1" - - - - Look up "%1" in &New Tab - Buscar "%1" en &Nueva Pestaña - - - - Send "%1" to input line - Enviar "%1" a la línea de entrada - - - - - &Add "%1" to history - Aña&dir "%1" al historial - - - - Look up "%1" in %2 - Buscar "%1" en "%2" - - - - Look up "%1" in %2 in &New Tab - Buscar "%1" en "%2" en Nue&va Pestaña - - - - WARNING: FFmpeg Audio Player: %1 - AVISO: Reproductor de Audio FFmpeg: %1 - - - Playing a non-WAV file - Reproduciendo un fichero que no es de tipo WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Para habilitar la reproducción de ficheros en formatos distintos de WAV, vaya a Editar|Preferencias, y en la pestaña Audio seleccione "Reproducir con DirectShow". - - - - Failed to run a player to play sound file: %1 - No se ha podido ejecutar un reproductor para reproducir el fichero de audio: %1 - - - - Failed to create temporary file. - No se ha podido crear un fichero temporal. - - - - Failed to auto-open resource file, try opening manually: %1. - No se ha podido abrir automáticamente el fichero de recursos, intente abrirlo manualmente: %1. - - - - The referenced resource failed to download. - No se ha podido descargar el fichero de recursos indicado. - - - - Save &image... - Guardar &imagen... - - - - Save s&ound... - Guardar s&onido... - - - - WARNING: %1 - ATENCIÓN: %1 - - - - Form - Formulario - - - - about:blank - about:blank - - - - x - x - - - - Find: - Buscar: - - - - - &Previous - A&nterior - - - - - &Next - &Siguiente - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Diferenciar entre mayúsculas y minúsculas - - - - Highlight &all - &Resaltar todo - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Transliteración del bielorruso de latino a cirílico (ortografía clásica) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Transliteración del bielorruso de latino a cirílico (ortografía escolar) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Transliteración bielorrusa (atenúa la diferencia -entre ortografía clásica y escolar en cirílico) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Contraseña: - - - - DictGroupWidget - - - Form - Formulario - - - - Group icon: - Icono de grupo: - - - - Shortcut: - Atajo: - - - - None - Ninguno - - - - From file... - De fichero... - - - - Choose a file to use as group icon - Elija un fichero para utilizar como icono de grupo - - - - Images - Imágenes - - - - All files - Todos los ficheros - - - - Error - Error - - - - Can't read the specified image file. - No se puede leer el fichero de imagen especificado. - - - - DictGroupsWidget - - - - - - Dictionaries: - Diccionarios: - - - - Confirmation - Confirmación - - - - Are you sure you want to generate a set of groups based on language pairs? - ¿Está seguro que quiere generar un conjunto de grupos basado en pares de idiomas? - - - - Unassigned - Sin asignar - - - - Combine groups by source language to "%1->" - Combinar grupos por lengua de origen a "%1->" - - - - Combine groups by target language to "->%1" - Combinar grupos por lengua destino a "->%1" - - - - Make two-side translate group "%1-%2-%1" - Crear grupo de traducción bidireccional "%1-%2-%1" - - - - - Combine groups with "%1" - Combinar grupos con "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Ficheros de texto (*.txt);;Todos los ficheros (*.*) - - - - Export headwords... - - - - - Cancel - Cancelar - - - - DictInfo - - - Total articles: - Número de artículos: - - - - Translates from: - Idioma origen: - - - - Total words: - Número de palabras: - - - - Translates to: - Idioma destino: - - - - Open folder - Abrir directorio - - - - Edit dictionary - Editar diccionario - - - - Files comprising this dictionary: - Ficheros que componen este diccionario: - - - - Description: - Descripción: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Editar el diccionario mediante comando: -%1 - - - - DictListModel - - - %1 entries - %1 entradas - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Activado - - - - Name - Nombre - - - - Address - Dirección - - - - Databases - - - - - Strategies - - - - - Icon - Icono - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Barra de diccionarios - - - - &Dictionary Bar - Barra de &Diccionarios - - - - Extended menu with all dictionaries... - Menú ampliado con todos los diccionarios... - - - - Edit this group - Editar este grupo - - - - Dictionary info - Información del diccionario - - - - Dictionary headwords - - - - - Open dictionary folder - Abrir directorio de diccionario - - - - Edit dictionary - Editar diccionario - - - - EditDictionaries - - - &Sources - &Fuentes - - - - - &Dictionaries - &Diccionarios - - - - - &Groups - &Grupos - - - - Sources changed - Fuentes modificadas - - - - Some sources were changed. Would you like to accept the changes? - Se han modificado algunas fuentes. ¿Quiere aceptar las modificaciones? - - - - Accept - Aceptar - - - - Cancel - Cancelar - - - - Dictionaries - Diccionarios - - - - ExternalViewer - - - the viewer program name is empty - no se ha proporcionado el nombre del programa visualizador - - - - FTS::FtsIndexing - - None - Ninguno - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Ninguno - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Ninguno - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Error de sintaxis XML: %1 en %2,%3 - - - - Added %1 - %1 Añadido - - - - by - por - - - - Male - Masculino - - - - Female - Femenino - - - - from - de - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Vaya a Editar|Diccionarios|Fuentes|Forvo y solicite su propia clave de la API para que este error desaparezca. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Cancelar - - - - Help - - - - - GermanTranslit - - - German Transliteration - Transliteración del alemán - - - - GreekTranslit - - - Greek Transliteration - Transliteración del griego - - - - GroupComboBox - - - Choose a Group (Alt+G) - Elegir un grupo (Alt+G) - - - - GroupSelectorWidget - - - Form - Formulario - - - - Look in - Buscar en - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Añadir grupo - - - - Give a name for the new group: - Introduzca un nombre para el nuevo grupo: - - - - Rename group - Renombrar grupo - - - - Give a new name for the group: - Introduzca un nuevo nombre para el grupo: - - - - Remove group - Eliminar grupo - - - - Are you sure you want to remove the group <b>%1</b>? - ¿Esta seguro de que quiere eliminar el grupo <b>%1</b>? - - - - - Remove all groups - Eliminar todos los grupos - - - - Are you sure you want to remove all the groups? - ¿Esta seguro que quiere eliminar todos los grupos? - - - - Dictionaries available: - Diccionarios disponibles: - - - - Add selected dictionaries to group (Ins) - Añadir los diccionarios seleccionados al grupo (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Eliminar los diccionarios seleccionados del grupo (Supr) - - - - < - < - - - - Del - Supr - - - - Groups: - Grupos: - - - - Tab 2 - Pestaña 2 - - - - Create new dictionary group - Crear un nuevo grupo de diccionarios - - - - &Add group - Añad&ir grupo - - - - Create language-based groups - Crear grupos de diccionarios según los idiomas - - - - Auto groups - Agrupación automática - - - - Rename current dictionary group - Renombrar el grupo de diccionarios actual - - - - Re&name group - Re&nombrar grupo - - - - Remove current dictionary group - Eliminar el grupo de diccionarios actual - - - - &Remove group - &Eliminar grupo - - - - Remove all dictionary groups - Eliminar todos los grupos de diccionarios - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Arrastre y suelte con el ratón para pasar diccionarios de un grupo a otro, para moverlos dentro de un grupo o para ordenar los grupos. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Atrás - - - - Forward - Adelante - - - - Zoom In - Acercar - - - - Zoom Out - Alejar - - - - Normal Size - Tamaño normal - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Borrar Seleccionado - - - - Copy Selected - Copiar Seleccionado - - - - History: - Historial: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Tamaño del historial: %1 entradas de un máximo de %2 - - - - Hunspell - - - Spelling suggestions: - Sugerencias ortográficas: - - - - %1 Morphology - Morfología del %1 - - - - HunspellDictsModel - - - Enabled - Activado - - - - Name - Nombre - - - - Initializing - - - Please wait... - Espere por favor... - - - - - Please wait while indexing dictionary - Espere mientras se indexa el diccionario, por favor - - - - GoldenDict - Initializing - GoldenDict - Inicializando - - - - Dictionary Name - Nombre del diccionario - - - - Language - - - Afar - Afar - - - - Abkhazian - Abjasio - - - - Avestan - Avestán - - - - Afrikaans - Afrikaans - - - - Akan - Acano - - - - Amharic - Amárico - - - - Aragonese - Aragonés - - - - Arabic - Árabe - - - - Assamese - Asamés - - - - Avaric - Ávaro - - - - Aymara - Aimará - - - - Azerbaijani - Azerí - - - - Bashkir - Bashkir - - - - Belarusian - Bielorruso - - - - Bulgarian - Búlgaro - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengalí - - - - Tibetan - Tibetano - - - - Breton - Bretón - - - - Bosnian - Bosnio - - - - Catalan - Catalán - - - - Chechen - Checheno - - - - Chamorro - Chamorro - - - - Corsican - Corso - - - - Cree - Cree - - - - Czech - Checo - - - - Church Slavic - Eslavo eclesiástico - - - - Chuvash - Chuvash - - - - Welsh - Galés - - - - Danish - Danés - - - - German - Alemán - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewé - - - - Greek - Griego - - - - English - Inglés - - - - Esperanto - Esperanto - - - - Spanish - Español - - - - Estonian - Estonio - - - - Basque - Vasco - - - - Persian - Farsí - - - - Fulah - Fula - - - - Finnish - Finlandés - - - - Fijian - Fiyiano - - - - Faroese - Feroés - - - - French - Francés - - - - Western Frisian - Frisio occidental - - - - Irish - Irlandés - - - - Scottish Gaelic - Gaélico escocés - - - - Galician - Gallego - - - - Guarani - Guaraní - - - - Gujarati - Gujarati - - - - Manx - Manés - - - - Hausa - Hausa - - - - Hebrew - Hebreo - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Croata - - - - Haitian - Haitiano - - - - Hungarian - Húngaro - - - - Armenian - Armenio - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonesio - - - - Interlingue - Interlingua - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Iñupiaq - - - - Ido - Ido - - - - Icelandic - Islandés - - - - Italian - Italiano - - - - Inuktitut - Inuktitut - - - - Japanese - Japonés - - - - Javanese - Javanés - - - - Georgian - Georgiano - - - - Kongo - Kongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kuanyama - - - - Kazakh - kazajo - - - - Kalaallisut - Groenlandés - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Coreano - - - - Kanuri - Kanuri - - - - Kashmiri - Cachemir - - - - Kurdish - Kurdo - - - - Komi - Komi - - - - Cornish - Córnico - - - - Kirghiz - Kirguís - - - - Latin - Latín - - - - Luxembourgish - Luxemburgués - - - - Ganda - Luganda - - - - Limburgish - Limburgués - - - - Lingala - Lingala - - - - Lao - Laosiano - - - - Lithuanian - Lituano - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Letón - - - - Malagasy - Malgache - - - - Marshallese - Marshalés - - - - Maori - Maorí - - - - Macedonian - Macedonio - - - - Malayalam - Malayalam - - - - Mongolian - Mongol - - - - Marathi - Marathi - - - - Malay - Malayo - - - - Maltese - Maltés - - - - Burmese - Birmano - - - - Nauru - Nauru - - - - Norwegian Bokmal - Bokmål noruego - - - - North Ndebele - Sindebele - - - - Nepali - Nepalí - - - - Ndonga - Ndonga - - - - Dutch - Holandés - - - - Norwegian Nynorsk - Nynorsk noruego - - - - Norwegian - Noruego - - - - South Ndebele - Nrebele - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitano - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Osetio - - - - Panjabi - Punjabí - - - - Pali - Pali - - - - Polish - Polaco - - - - Pashto - Pashto - - - - Portuguese - Portugués - - - - Quechua - Quechua - - - - Raeto-Romance - Retorrománica - - - - Kirundi - Kirundi - - - - Romanian - Rumano - - - - Russian - Ruso - - - - Kinyarwanda - Quiñaruanda - - - - Sanskrit - Sánscrito - - - - Sardinian - Sardo - - - - Sindhi - Sindhi - - - - Northern Sami - Sami septentrional - - - - Sango - Sango - - - - Serbo-Croatian - Serbocroata - - - - Sinhala - Cingalés - - - - Slovak - Eslovaco - - - - Slovenian - Esloveno - - - - Samoan - Samoano - - - - Shona - Shona - - - - Somali - Somalí - - - - Albanian - Albanés - - - - Serbian - Serbio - - - - Swati - Suazi - - - - Southern Sotho - Sesotho - - - - Sundanese - Sudanés - - - - Swedish - Sueco - - - - Swahili - Suahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tayiko - - - - Thai - Tailandés - - - - Tigrinya - Tigriña - - - - Turkmen - Turcomano - - - - Tagalog - Tagalo - - - - Tswana - Setsuana - - - - Tonga - Tonga - - - - Turkish - Turco - - - - Tsonga - Tsonga - - - - Tatar - Tártaro - - - - Twi - Twi - - - - Tahitian - Tahitiano - - - - Uighur - Uigur - - - - Ukrainian - Ucraniano - - - - Urdu - Urdú - - - - Uzbek - Uzbeco - - - - Venda - Venda - - - - Vietnamese - Vietnamita - - - - Volapuk - Volapük - - - - Walloon - Valón - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Yiddish - - - - Yoruba - Yoruba - - - - Zhuang - Chuan - - - - Chinese - Chino - - - - Zulu - Zulú - - - - Lojban - Lojban - - - - Traditional Chinese - Chino Tradicional - - - - Simplified Chinese - Chino Simplificado - - - - Other - Otro - - - - Other Simplified Chinese dialects - Otros dialectos del Chino Simplificado - - - - Other Traditional Chinese dialects - Otros dialectos del Chino Tradicional - - - - Other Eastern-European languages - Otras lenguas del Este de Europa - - - - Other Western-European languages - Otras lenguas del Oeste de Europa - - - - Other Russian languages - Otras lenguas rusas - - - - Other Japanese languages - Otras lenguas japonesas - - - - Other Baltic languages - Otras lenguas bálticas - - - - Other Greek languages - Otras lenguas griegas - - - - Other Korean dialects - Otros dialectos coreanos - - - - Other Turkish dialects - Otros dialectos turcos - - - - Other Thai dialects - Otros dialectos tailandeses - - - - Tamazight - Bereber - - - - LoadDictionaries - - - Error loading dictionaries - Error al cargar diccionarios - - - - Main - - - Error in configuration file. Continue with default settings? - Error en el fichero de configuración. ¿Continuar con la configuración por defecto? - - - - MainWindow - - Navigation - Navegación - - - - Back - Atrás - - - - Forward - Adelante - - - - Scan Popup - Ventana emergente de búsqueda - - - - Show &Main Window - &Mostrar Ventana Principal - - - - - &Quit - &Salir - - - - Loading... - Cargando... - - - - Skip This Release - Saltarse esta versión - - - - You have chosen to hide a menubar. Use %1 to show it back. - Ha elegido ocultar una barra de menú. Utilice %1 para volver a mostrarla. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Configuración de Página - - - - No printer is available. Please install one first. - No hay ninguna impresora disponible. Por favor instale una primero. - - - - Print Article - Imprimir Artículo - - - - Article, Complete (*.html) - Artículo, Completo (*.html) - - - - Article, HTML Only (*.html) - Artículo, sólo HTML (*.html) - - - - Save Article As - Guardar Artículo Como - - - Html files (*.html *.htm) - Ficheros Html (*.html *.htm) - - - - Error - Error - - - - Can't save article: %1 - No se puede guardar el artículo: %1 - - - - %1 dictionaries, %2 articles, %3 words - %1 diccionarios, %2 artículos, %3 palabras - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Se se ha podido iniciar la monitorización de teclas de acceso rápido.<br>Asegúrese de que su servidor X tiene activada la extensión RECORD. - - - - New Release Available - Nueva Versión Disponible - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - La versión <b>%1</b> de GoldenDict está disponible para su descarga.<br>Pulse en <b>Descargar</b> para ir a la página de descarga. - - - - Download - Descargar - - - - - Look up in: - Buscar en: - - - Show Names in Dictionary Bar - Mostrar nombres en la barra de diccionarios - - - Show Small Icons in Toolbars - Mostrar Iconos Pequeños en las Barras de Herramientas - - - - &Menubar - Barra de &menús - - - - Found in Dictionaries: - Encontrado en los Diccionarios: - - - - Pronounce Word (Alt+S) - Pronunciar palabra (Alt+S) - - - - Show Names in Dictionary &Bar - Mostrar N&ombres en Barra de Diccionarios - - - - Show Small Icons in &Toolbars - Mostrar &Iconos Pequeños en Barras de Herramientas - - - - &Navigation - &Navegación - - - - Zoom In - Acercar - - - - Zoom Out - Alejar - - - - Normal Size - Tamaño normal - - - - Words Zoom In - Aumentar tamaño de palabras - - - - Words Zoom Out - Reducir tamaño de palabras - - - - Words Normal Size - Tamaño normal de palabras - - - - Close current tab - Cerrrar la pestaña actual - - - - Close all tabs - Cerrar todas las pestañas - - - - Close all tabs except current - Cerrar todas las pestañas excepto la actual - - - - Look up: - Buscar: - - - - All - Todo - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - La API de accesibilidad no está activada - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Saving article... - Guardando articulo... - - - - The main window is set to be always on top. - La ventana principal está configurada para estar siempre en primer plano. - - - - Import history from file - Importar historial de fichero - - - - Import error: invalid data in file - Error de importación: datos incorrectos en el fichero - - - - History import complete - Importación del historial completa - - - - Import error: - Import error: - - - - Dictionary info - Información de diccionarios - - - - Dictionary headwords - - - - - Open dictionary folder - Abrir directorio de diccionarios - - - - Edit dictionary - Editar diccionario - - - - Opened tabs - Pestañas abiertas - - - - Open Tabs List - Abrir lista de pestañas - - - - (untitled) - (sin título) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - AVISO: %1 - - - - &Hide - &Ocultar - - - - Export history to file - Exportar historial a fichero - - - - - Text files (*.txt);;All files (*.*) - Ficheros de texto (*.txt);;Todos los ficheros (*.*) - - - - History export complete - Exportación del historial completa - - - - Export error: - Error de exportación: - - - GoldenDict - GoldenDict - - - - - Welcome! - ¡Bienvenido! - - - - &File - &Fichero - - - - &Edit - &Editar - - - - &Help - &Ayuda - - - - Search - - - - - &Search Pane - Panel de &búsqueda - - - - &Results Navigation Pane - Panel de &resultados de navegación - - - - &History Pane - Panel de &historial - - - &Dictionaries... F3 - &Diccionarios... F3 - - - - &Preferences... - &Preferencias... - - - - F2 - F2 - - - - &View - &Ver - - - - &Zoom - &Ampliación - - - - H&istory - &Historial - - - Results Navigation Pane - Panel de navegación de resultados - - - - &Dictionaries... - &Diccionarios... - - - - F3 - F3 - - - - F4 - F4 - - - - &Homepage - &Sitio web - - - - &About - &Acerca de - - - - About GoldenDict - Acerca de Goldendict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Salir del programa - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Foro - - - - &Close To Tray - &Сerrar en la Bandeja del Sistema - - - - Minimizes the window to tray - Minimiza la ventana en la bandeja del sistema - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Guardar artículo - - - - Save Article - Guardar artículo - - - - &Print - &Imprimir - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Config&uración de Página - - - - Print Pre&view - Vista Pre&via - - - - &Rescan Files - Ree&scanear ahora - - - - &New Tab - &Nueva Pestaña - - - - &Always on Top - &Siempre en primer plano - - - - Always on Top - Siempre en primer plano - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Botón de Menú - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Vista preliminar - - - Rescan Files - Reescanear ficheros - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Borrar - - - - New Tab - Nueva Pestaña - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Carpeta de configuración - - - - - &Show - Mo&strar - - - - Ctrl+H - Ctrl+H - - - - &Export - &Exportar - - - - &Import - &Importar - - - Search Pane - Panel de Búsqueda - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Fichero de diccionario alterado o corrupto - - - - Failed loading article from %1, reason: %2 - Fallo al cargar artículo de %1, motivo: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Error de sintaxis XML: %1 en %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Error de sintaxis XML: %1 en %2,%3 - - - - MediaWikisModel - - - Enabled - Activado - - - - Name - Nombre - - - - Address - Dirección - - - - Icon - Icono - - - - OrderAndProps - - - Form - Formulario - - - - Dictionary order: - Orden de los diccionarios: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Diccionarios no activos (deshabilitados): - - - - Dictionary information - Información de diccionarios - - - - Name: - Nombre: - - - - Total articles: - Número de artículos: - - - - Total words: - Número de palabras: - - - - Translates from: - Idioma origen: - - - - Translates to: - Idioma destino: - - - - Description: - Descripción: - - - - Files comprising this dictionary: - Ficheros que componen este diccionario: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Ajuste el orden arrastrando y soltando diccionarios. Arrastre diccionarios al grupo de no activos para deshabilitar su uso. - - - - Sort by name - Ordenar por nombre - - - - Sort by languages - Ordenar por lenguas - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Ruta - - - - Recursive - Recursiva - - - - Preferences - - - Preferences - Preferencias - - - - &Interface - &Interfaz - - - - Tabbed browsing - Navegación con pestañas - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalmente, al abrir una nueva pestaña se pasa a ella inmediatamente. -Con esta opción activada, en cambio, las nuevas pestañas se abrirán sin que se pase a ellas. - - - - Open new tabs in background - Abrir nuevas pestañas en segundo plano - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Con esta opción activada, las nuevas pestañas se abrirán -justo después de la actual. Si no, se situarán las últimas. - - - - Open new tabs after the current one - Abrir nuevas pestañas después de la actual - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Al activar esta opción, aparece un icono en el área de la bandeja del sistema que se puede usar -para abrir la ventana actual y realizar otras tareas. - - - - Enable system tray icon - Activar icono de bandeja del sistema - - - - With this on, the application starts directly to system tray without showing -its main window. - Al activar esta opción, el programa aparecerá directamente -en la bandeja del sistema, sin mostrar la ventana principal. - - - - Start to system tray - Iniciar en bandeja del sistema - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Si se habilita esta opción, al intentar cerrar la ventana principal ésta se oculta -en lugar de cerrrarse. - - - - Close to system tray - Cerrar en la bandeja del sistema - - - - Startup - Inicio - - - - Start with system - Ejecutar automáticamente al arrancar el sistema - - - - Interface language: - Idioma de la interfaz de usuario: - - - - Display style: - Estilo de visualización: - - - - Double-click translates the word clicked - Al hacer doble clic sobre una palabra ésta se traduce - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Elige si la ventana emergente de búsqueda está habilitada por defecto o no. Si se marca, -el programa empezará siempre con la ventana emergente de búsqueda activada. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalmente, para activar una ventana emergente, tiene que -mantener pulsadas las teclas elegidas mientras selecciona -una palabra. Con esta opción activada, las teclas elegidas pueden también -pulsarse un poco después de realizar la selección. - - - - Hotkeys - Teclas de acceso rápido - - - - Use the following hotkey to show or hide the main window: - Use la siguiente tecla de acceso rápido para mostrar u ocultar la ventana principal: - - - - Use the following hotkey to translate a word from clipboard: - Use la siguiente tecla de acceso rápido para traducir una palabra desde el portapapeles: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Las teclas de acceso rápido son globales y funcionan desde cualquier programa y en cualquier situación, siempre que GoldenDict se esté ejecutando en segundo plano. - - - - &Scan Popup - &Ventana emergente de búsqueda - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Seleccione esta opción si no quiere que se muestre la barra de pestañas cuando sólo hay abierta una pestaña. - - - - Hide single tab - Ocultar una pesaña - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab cambia a las pestañas usadas más recientemente - - - - Automatically starts GoldenDict after operation system bootup. - Inicia automáticamente GoldenDict al arrancar el sistema operativo. - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normalmente, al pulsar la tecla ESC se pasa a la línea de traducción. -Pero con esta opción seleccionada, se esconderá la ventana principal. - - - - ESC key hides main window - La tecla ESC oculta la ventana principal - - - - Turn this option on if you want to select words by single mouse click - Active esta opción para seleccionar palabras con una sola pulsación del ratón - - - - Select word by single click - Seleccionar palabra con un solo clic - - - - Add-on style: - Estilo suplementario add-on): - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Ajuste este valor para evitar menús contextuales demasiado grandes. - - - - Context menu dictionaries limit: - Límite de diccionarios para el menú contextual: - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Con esta opción, se mostrará una ventana emergente de traducción -al apuntar con el ratón a cualquier palabra en la pantalla (en Windows) -o al seleccionar cualquier palabra con el ratón (en Linux). -Una vez activada, se puede activar o desactivar desde la ventana principal -o desde el icono de la bandeja. - - - - Enable scan popup functionality - Activa la funcionalidad de ventana emergente de búsqueda - - - - Start with scan popup turned on - Empezar con la ventana emergente de búsqueda activada - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Al activar esta opción, la ventana emergente aparecerá si se pulsan todas -las teclas elegidas cuando cambia la palabra seleccionada. - - - - Only show popup when all selected keys are kept pressed: - Mostrar la ventana emergente sólo si todas las teclas seleccionadas se mantienen pulsadas: - - - - Left Ctrl only - Sólo Ctrl izquierda - - - - Left Ctrl - Ctrl Izquierda - - - - Right Shift only - Sólo Mayúsculas derecha - - - - Right Shift - Mayúsculas derecha - - - - Alt key - Tecla Alt - - - - Alt - Alt - - - - Ctrl key - Tecla Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Sólo Alt izquierda - - - - Left Alt - Alt izquierda - - - - Shift key - Tecla mayúsculas - - - - Shift - Mayúsculas - - - - Right Alt only - Sólo Alt derecha - - - - Right Alt - Alt derecha - - - - Right Ctrl only - Sólo Ctrl derecha - - - - Right Ctrl - Ctrl derecha - - - - Left Shift only - Sólo Shift izquierda - - - - Left Shift - Shift izquierda - - - - Windows key or Meta key - Tecla Windows o tecla Meta - - - - Win/Meta - Win/Meta - - - - Keys may also be pressed afterwards, within - También se pueden pulsar las teclas despues, dentro de - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Para evitar falsos positivos, las teclas sólo se monitorizan, -una vez hecha la selección, durante un número determinado -de segundos, que se especifica aquí. - - - - secs - segundos - - - - Send translated word to main window instead of to show it in popup window - Enviar palabra traducida a la ventana principal en lugar de mostrarla en la ventana emergente - - - - Send translated word to main window - Enviar palabra traducida a la ventana principal - - - - Play audio files via FFmpeg(libav) and libao - Reproducir ficheros de audio con FFmpeg(libav) y libao - - - - Use internal player - Utilizar reproductor interno - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Algunos sitios web detectan GoldenDict mediante las cabeceras HTTP y bloquean las peticiones. -Active esta opción para evitar el problema. - - - - Do not identify GoldenDict in HTTP headers - Impedir la identificación de GoldenDict a partir de las cabeceras HTTP - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Ad&vanced - A&vanzado - - - - ScanPopup extra technologies - Opciones avanzadas de ventana emergente de búsqueda - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Intenta utilizar la tecnología IAccessibleEx para obtener la palabra bajo el cursor. -Esta tecnología funciona sólo con algunos programas que la soportan -(Por ejemplo Internet Explorer 9). -No hace falta seleccionar esta opción si no utiliza estos programas. - - - - Use &IAccessibleEx - Utilizar &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Intenta utilizar la tecnología de automatización IAccessibleEx para obtener la palabra bajo el cursor. -Esta tecnología funciona sólo con algunos programas que la soportan. -No hace falta seleccionar esta opción si no utiliza estos programas. - - - - Use &UIAutomation - Utilizar &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Intenta utilizar la tecnología GoldenDict message para obtener la palabra bajo el cursor. -Esta tecnología funciona sólo con los programas que la soportan. -No necesita seleccionar esta opción si no utiliza tales programas. - - - - Use &GoldenDict message - Utilizar &GoldenDict message - - - - History - Historial - - - - Turn this option on to store history of the translated words - Activar esta opción para almacenar el historial de palabras traducidas - - - - Store &history - Almacenar &historial - - - - Specify the maximum number of entries to keep in history. - Especificar el máximo número de entradas a guardar en el historial. - - - - Maximum history size: - Tamaño máximo del historial: - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervalo de tiempo para guardar el historial. Si se pone a 0, el historial se guardará sólo al terminar. - - - - Save every - Guardar cada - - - - minutes - minutos - - - - Articles - Artículos - - - - Turn this option on to always expand optional parts of articles - Activar esta opción para desplegar siempre las partes opcionales de los artículos - - - - Expand optional &parts - Desplegar &partes opcionales - - - - Select this option to automatic collapse big articles - Seleccionar esta opción para mostrar plegados los artículos muy grandes - - - - Collapse articles more than - Mostrar plegados los artículos con más de - - - - Articles longer than this size will be collapsed - Los artículos con una longitud mayor que esta se mostrarán plegados - - - - symbols - símbolos - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Nota: parece que está utilizando una versión del servidor X de X.Org para la que no funciona la extensión RECORD. Las teclas de acceso rápido en GoldenDict seguramente no funcionarán. Esto debe arreglarse en el propio servidor. Por favor, diríjase al siguiente </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">informe de error</span></a><span style=" color:#ff0000;"> y deje un comentario si así lo desea.</span></p></body></html> - - - - &Audio - &Аudio - - - - Pronunciation - Pronunciación - - - - Auto-pronounce words in main window - Pronunciar palabras automáticamente en la ventana principal - - - - Auto-pronounce words in scan popup - Pronunciar palabras automáticamente en la ventana emergente de búsqueda - - - - Playback - Reproducción - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Utilice la API de reproducción de audio nativa de Windows. -Sólo para ficheros .wav, pero funciona muy bien. - - - Play via Windows native API - Reproducir con la API nativa de Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Reproducir audio con el framework Phonon. Puede ser un poco inestable, -pero seguramente funcionará con la mayoría de los formatos de audio. - - - Play via Phonon - Reproducir con Phonon - - - - Use any external program to play audio files - Utilizar cualquier programa externo para reproducir ficheros de audio - - - - Use external program: - Utilizar un programa externo: - - - - &Network - &Red - - - - Enable if you wish to use a proxy server -for all program's network requests. - Activar si desea utilizar un servidor proxy -para todos los accesos a la red del programa. - - - - Use proxy server - Utilizar un servidor proxy - - - - Type: - Tipo: - - - - Host: - Host: - - - - Port: - Puerto: - - - - User: - Usuario: - - - - Password: - Contraseña: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Con esta opción activada, GoldenDict bloqueará la mayoría de los anuncios de publicidad -al desactivar el contenido (imágenes, marcos, etc.) que no procedan del sitio web al -que está accediendo. Si algunos sitios web dejan de funcionar, intente desactivar esta opción. - - - - Disallow loading content from other sites (hides most advertisements) - No permitir la descarga de contenido desde otros sitios (oculta la mayoría de los anuncios) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Esta opción permite escuchar las pronunciaciones de -diccionarios online que utilizan Flash u otros plugins para la web. -El plugin debe estar instalado para que funcione esta opción. - - - - Enable web plugins - Activar plugins para la web - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Al activar esta opción, el programa comprueba periódicamente -si existe una versión más reciente de GoldenDict disponible para su descarga. -Si es así, el programa informará acerca de ello y permitirá abrir una página -para su descarga. - - - - Check for new program releases periodically - Comprobar periódicamente la existencia de nuevas versiones del programa - - - - System default - Idioma por defecto del sistema - - - - - Default - Por defecto - - - - Modern - Moderno - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Reproducir con DirectShow - - - - Changing Language - Cambiando Idioma - - - - Restart the program to apply the language change. - Vuelva a ejecutar el programa para hacer efectivo el cambio de idioma. - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Texto simple - - - - Html - Html - - - - Prefix Match - Coincidencia con prefijo - - - - Unknown - Desconocido - - - - Programs::RunInstance - - - No program name was given. - No se proporcionó el nombre del programa. - - - - The program has crashed. - El programa ha fallado. - - - - The program has returned exit code %1. - El programa ha devuelto el código de error %1. - - - - ProgramsModel - - - Enabled - Activado - - - - Type - Tipo - - - - Name - Nombre - - - - Command Line - Línea de comandos - - - - Icon - Icono - - - - QObject - - - - Article loading error - Error al cargar artículo - - - - - Article decoding error - Error al decodificar artículo - - - - avformat_alloc_context() failed. - Fallo en avformat_alloc_context(). - - - - av_malloc() failed. - Fallo en av_malloc(). - - - - avio_alloc_context() failed. - Fallo en avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Fallo en avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - Fallo en avformat_find_stream_info(): %1. - - - - Could not find audio stream. - No se encontró el flujo de audio. - - - - Codec [id: %1] not found. - No se encontró codec [id: %1]. - - - - avcodec_open2() failed: %1. - Fallo en avcodec_open2(): %1. - - - - Cannot find usable audio output device. - No se encontró dispositivo de audio utilizable. - - - - Unsupported sample format. - Formato de muestreo no soportado. - - - - ao_open_live() failed: - Fallo en ao_open_live(): - - - - No driver. - No hay controlador. - - - - This driver is not a live output device. - Este controlador no corresponde a un dispositivo de salida activo. - - - - A valid option key has an invalid value. - Una clave de opción válida tiene un valor no válido. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - No se puede abrir el dispositivo: %1, canales: %2, velocidad: %3, bits: %4. - - - - Unknown error. - Error desconocido. - - - - avcodec_alloc_frame() failed. - Fallo en avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Búsqueda/filtro en diccionario (Ctrl+F) - - - - Quick Search - Búsqueda Rápida - - - - Clear Search - Eliminar Búsqueda - - - - ResourceToSaveHandler - - - - ERROR: %1 - ERROR: %1 - - - - Resource saving error: - Error al guardar recurso: - - - - The referenced resource failed to download. - No se ha podido descargar recurso referenciado. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji para Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji para Katakana - - - - RussianTranslit - - - Russian Transliteration - Transliteración del ruso - - - - ScanPopup - - - Dialog - Diálogo - - - word - palabra - - - - Back - Atrás - - - - Forward - Adelante - - - List Matches (Alt+M) - Listar Coincidencias (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Pronunciar palabra (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Enviar palabra a la ventana principal (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Muestra u oculta la barra de diccionarios - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Utilice esta opción para fijar la ventana de manera que permanezca inmóvil en la pantalla, -se pueda redimensionar o se pueda manipular de otras maneras. - - - - - - - - ... - ... - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Ruta - - - - Name - Nombre - - - - Icon - Icono - - - - Sources - - - Text to Speech - Síntesis de Voz - - - - (not available in portable version) - (no disponible en la versión portátil) - - - - - - Choose a directory - Elija un directorio - - - - - - - - - Confirm removal - Confirmar la eliminación - - - - - Remove directory <b>%1</b> from the list? - Eliminar el directorio <b>%1</b> de la lista? - - - - - - Remove site <b>%1</b> from the list? - Eliminar el sitio <b>%1</b> de la lista? - - - - Remove program <b>%1</b> from the list? - Eliminar el programa <b>%1</b> de la lista? - - - - Files - Ficheros - - - - Paths to search for the dictionary files: - Rutas para buscar los ficheros de diccionarios: - - - - - - - - - &Add... - Añad&ir... - - - - - - - - - &Remove - &Eliminar - - - - Re&scan now - Ree&scanear ahora - - - - Sound Dirs - Directorios de Sonido - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Añada rutas aquí para crear diccionarios a partir de un conjunto de ficheros de sonido: - - - - Morphology - Morfología - - - - Path to a directory with Hunspell/Myspell dictionaries: - Ruta a un directorio con diccionarios de Hunspell/Myspell: - - - - &Change... - Ca&mbiar... - - - - Available morphology dictionaries: - Diccionarios de morfología disponibles: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Cada diccionario de morfología aparece como -un diccionario auxiliar independiente que -proporciona raíces para búsquedas y posibles -correcciones para palabras mal escritas. -Añada diccionarios apropiados al final -de los grupos apropiados para utilizarlos. - - - - Websites - Sitios Web - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Cualquier sitio web. Se reemplazará la cadena %GDWORD% con la palabra buscada: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - También puede utilizar %GD1251% para CP1251, %GDISO1% para ISO 8859-1. - - - - Programs - Programas - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Cualquier programa externo. La cadena %GDWORD% se reemplazará por la palabra buscada. La palabra se enviará también a la entrada estándar. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Pronunciación de palabras de <a href="http://www.forvo.com/">forvo.com</a>. Este sitio permite a la gente grabar y compartir pronunciaciones de palabras. Puede escucharlas desde GoldenDict. - - - - Enable pronunciations from Forvo - Activar pronunciaciones desde Forvo - - - - API Key: - clave de la API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Para utilizar Forvo se necesita una clave de la API. Deje vacío este campo -para usar la clave por defecto, que puede no estar disponible en el futuro, -o regístrese en el sitio para obtener su propia clave. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Obtenga su propia clave <a href="http://api.forvo.com/key/">aquí</a>, or déjela en blanco para usar la clave por defecto. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">(new line) -<html><head><meta name="qrichtext" content="1" /><style type="text/css">(new line) -p, li { white-space: pre-wrap; }(new line) -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;">(new line) -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">(new line) -<tr>(new line) -<td style="border: none;">(new line) -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Obtenga su propia clave <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">aquí</span></a>, o deje vacío para usar la clave por defecto.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - También puede usar %GD1251% para CP1251, %GDISO1%...%GDISO16% para ISO 8859-1...ISO 8859-16, -%GDBIG5% para Big-5, %GDBIG5HKSCS% para Big5-HKSCS, %GDGBK% para GBK y GB18030, y %GDSHIFTJIS% para Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Se puede especificar cualquier programa externo. Se sustituirá el texto %GDWORD% por la palabra a buscar. Si este texto no está presente, se enviará la palabra a la entrada estándar. - - - - Language codes (comma-separated): - Códigos de idioma (separados por comas): - - - - List of language codes you would like to have. Example: "en, ru". - Lista de códigos de lenguaje que desea. Ejemplo: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - La lista completa de códigos de lenguaje está disponible <a href="http://www.forvo.com/languages-codes/">aquí</a>. - - - - Transliteration - Transliteración - - - - Russian transliteration - Transliteración del ruso - - - - Greek transliteration - Transliteración del griego - - - - German transliteration - Transliteración del alemán - - - - Belarusian transliteration - Transliteración del bielorruso - - - - Enables to use the Latin alphabet to write the Japanese language - Permite utilizar el alfabeto latino para escribir en el idioma japonés - - - - Japanese Romaji - Romaji Japonés - - - - Systems: - Sistemas: - - - - The most widely used method of transcription of Japanese, -based on English phonology - El método más utilizado para la transcripción del japonés, -basado en la fonología del inglés - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - El sistema más regular, con una relación de uno a uno con el -sistema de escritura kana. Estandarizado como ISO 3602 - -Todavía no implementado en GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Basado en el sistema Nihon-shiki, pero modificado para el japonés estándar moderno. -Estandarizado como ISO 3602 - -Todavía no implementado en GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Silabarios: - - - - Hiragana Japanese syllabary - Silabario japonés Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Silabario japonés Katakana - - - - Katakana - Katakana - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Sitios de Wikipedia (MediaWiki): - - - - StylesComboBox - - - None - Ninguno - - - - TextToSpeechSource - - - Selected voice engines: - Motores de voz seleccionados: - - - - &Add - &Añadir - - - - &Remove - &Eliminar - - - - Preferences - Preferencias - - - - Volume: - Volumen: - - - - Rate: - Velocidad: - - - - Preview - Previsualización - - - - Available voice engines: - Motores de voz disponibles: - - - - Text to be previewed: - Texto a previsualizar: - - - - Type text to be previewed here. - Introduzca aquí el texto a previsualizar. - - - - &Preview - &Previsualización - - - - No TTS voice available - No hay ninguna voz de síntesis (TTS) disponible - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - No se ha encontrado ninguna voz de síntesis (TTS).<br>Por favor, verifique que hay al menos un motor de síntesis de voz (TTS) instalado en su ordenador. - - - - Confirm removal - Confirmar la eliminación - - - - Remove voice engine <b>%1</b> from the list? - Eliminar el motor de síntesis de voz <b>%1</b> de la lista? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Introduzca una palabra o un texto para buscar en los diccionarios - - - - Drop-down - Mostrar coincidencias - - - - VoiceEnginesModel - - - Enabled - Activado - - - - Name - Nombre - - - - Id - Id - - - - Icon - Icono - - - - WebSitesModel - - - Enabled - Activado - - - - Name - Nombre - - - - Address - Dirección - - - - Icon - Icono - - - - WordFinder - - - Failed to query some dictionaries. - No se ha podido consultar algunos diccionarios. - - - - WordList - - - WARNING: %1 - AVISO: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/fa_IR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/fa_IR.ts deleted file mode 100644 index 04ca746895..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/fa_IR.ts +++ /dev/null @@ -1,4707 +0,0 @@ - - - - - About - - - About - درباره - - - - GoldenDict dictionary lookup program, version - برنامه جست‌وجوگر واژه‌نامه گلدن‌دیکت، نسخه - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © ۲۰۰۸-۲۰۱۳ کنستانتین ایساکوف (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - تحت مجوز گنو GPLv3 یا بالاتر - - - - Credits: - دست اندرکاران: - - - - [Unknown] - [ناشناخته] - - - - Based on Qt %1 (%2, %3 bit) - برپایه‌ی کیوتی %1 (%2، %3 بیت) - - - - ArticleMaker - - - Expand article - گستراندن بند - - - - Collapse article - جمع‌کردن بند - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - هیچ ترجمه‌ای برای <b>%1</b> در گروه <b>%2</b> یافت نشد. - - - - No translation was found in group <b>%1</b>. - هیچ ترجمه‌ای در گروه <b>%1</b> یافت نشد. - - - - Welcome! - خوش آمدید! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 dir="RTL" align="center">به گلدن‌دیکت <b>خوش آمدید</b>!</h3><p dir="RTL">برای آغاز به کار با برنامه، نخست<b> ویرایش|واژه‌نامه‌ها</b> را ببینید. برای افزودن مسیرهای شاخه برای یافتن پرونده‌های واژه‌نامه، راه‌اندازی پایگاه‌های گوناگون ویکی‌پدیا یا دیگر منابع، ترتیب واژه‌نامه را تنظیم کنید یا گروه‌های واژه‌نامه بسازید<p dir="RTL">اکنون شما آماده‌اید تا واژه‌هایتان را بیابید! شما می‌توانید در قاب سمت چپ در این پنجره یا <a href="Working with popup">واژه‌هایتان را از دیگر پنجره‌های فعال بیابید</a>. <p dir="RTL">برای شخصی‌سازی برنامه، ترجیحات موجود در <b>ویرایش|ترجیحات</b> را بررسی کنید. همه تنظیمات راهنمای ابزار دارند، اگر از چیزی مطمئن نیستید آن‌ها را بخوانید.<p dir="RTL">اگر به راهنمایی بیش‌تری نیاز دارید یا به نظرهای دیگران علاقه‌مند هستید، بفرمایید به <a href="http://goldendict.org/forum/">انجمن برنامه</a>.<p dir="RTL"> برای به‌روزرسانی‌ها <a href="http://goldendict.org/">وب‌سایت برنامه</a> را بررسی کنید.<p dir="RTL">© ۲۰۰۸-۲۰۱۳ کنستانتین ایساکوف. تحت لیسانس GPLv3 یا بالاتر. - - - - Working with popup - کار با پنجره واشو - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 dir="RTL" align="center">کار کردن با واشو</h3><p dir="RTL">برای یافتن واژه‌ها از دیگر پنجره‌های فعال، شما نخست باید به‌کار اندازید <i>«قابلیت پویش واشو»</i> در <b>ترجیحات</b>، و سپس آن را در هر زمان با کلیک نماد بالای «واشو»، یا کلیک نماد سینی سیستم با کلیک راست موش و برگزیدن در منویی که بالا آمده است به‌کار اندازید. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - <p dir="RTL">سپس تنها نشان‌گر را روی واژه در برنامه دیگری که می‌خواهید بیابید نگه‌دارید، و یک پنجره واشو واژه را برای شما شرح می‌دهد. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - <p dir="RTL">سپس تنها هر واژه در برنامه دیگری را که می‌خواهید بیابید با موش برگزینید (دوبار کلیک یا جاروب کردن با موش با کلید فشرده شده)، و یک پنجره واشو واژه را برای شما شرح می‌دهد. - - - - (untitled) - (بی‌عنوان) - - - - (picture) - (عکس) - - - - ArticleRequest - - - Expand article - گستراندن بند - - - - From - از - - - - Collapse article - جمع‌کردن بند - - - - Query error: %1 - خطای جست‌وجو: %1 - - - - Close words: - واژه‌های نزدیک: - - - - Compound expressions: - عبارت‌های ترکیبی: - - - - Individual words: - واژه‌های جداگانه: - - - - ArticleView - - - Form - فرم - - - - about:blank - درباره:تهی - - - - Find: - یافتن: - - - - x - x - - - - - &Previous - پ&یشین - - - - - &Next - &پسین - - - - Ctrl+G - Ctrl+G - - - - Highlight &all - پررنگ گردن &همه - - - - &Case Sensitive - &حساس به کوچکی و بزرگی - - - - Select Current Article - برگزیدن بند جاری - - - - Copy as text - رونوشت مانند متن - - - - Inspect - بازرسی کردن - - - - Resource - منبع - - - - Audio - شنیداری - - - - TTS Voice - گفتار TTS - - - - Picture - عکس - - - - Video - ویدیو - - - - Video: %1 - ویدیوی: %1 - - - - Definition from dictionary "%1": %2 - تعریف از واژه‌نامه "%1": %2 - - - - Definition: %1 - تعریف: %1 - - - - - The referenced resource doesn't exist. - منبع ارجاع شده وجود ندارد. - - - - The referenced audio program doesn't exist. - برنامه شنیداری ارجاع شده وجود ندارد. - - - - - ERROR: %1 - خطای: %1 - - - - &Open Link - &باز کردن پیوند - - - - Open Link in New &Tab - باز کردن پیوند در &زیانه تازه - - - - Open Link in &External Browser - باز کردن پیوند در &مرورگر بیرونی - - - - Save &image... - ذخیره &تصویر... - - - - Save s&ound... - ذخیره آ&وا... - - - - &Look up "%1" - &یافتن "%1" - - - - Look up "%1" in &New Tab - یافتن "%1" در &زبانه تازه - - - - Send "%1" to input line - فرستادن "%1" به خط ورودی - - - - - &Add "%1" to history - &افزودن "%1" به پیشینه - - - - Look up "%1" in %2 - یافتن "%1" در %2 - - - - Look up "%1" in %2 in &New Tab - یافتن "%1" در %2 در &زبانه تازه - - - - Save sound - ذخیره کردن آوا - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - پرونده‌های آوا (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;همه پرونده‌ها (*.*) - - - - Save image - ذخیره کردن تصویر - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - پرونده‌های تصویر (*.bmp *.jpg *.png *.tif);;همه پرونده‌ها (*.*) - - - - Failed to run a player to play sound file: %1 - خطا در اجرای یک پخش‌کننده برای پخش پرونده آوا: %1 - - - - Failed to create temporary file. - ساخت پرونده موقت شکست خورد. - - - - Failed to auto-open resource file, try opening manually: %1. - باز کردن خودکار پرونده منبع شکست خورد، تلاش کنید به‌صورت دستی بازکنید: %1. - - - - WARNING: %1 - هشدار: %1 - - - - The referenced resource failed to download. - بارگیری منبع ارجاع شده شکست خورد. - - - - WARNING: FFmpeg Audio Player: %1 - هشدار: پخش‌کننده شنیداری FFmpeg : %1 - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - نویسه‌گردانی بلاروسی از لاتین به سیریلیک (درست‌نویسی سنتی) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - نویسه‌گردانی بلاروسی از لاتین به سیریلیک (درست‌نویسی آموزشی) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - نویسه‌گردانی بلاروسی (ملایم کردن تفاوت بین -درست‌نویسی سنتی و آموزشی در سیریلیک) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - گذرواژه: - - - - DictGroupWidget - - - Form - فرم - - - - Group icon: - نشانه گروه: - - - - Shortcut: - میان‌بر: - - - - None - هیج کدام - - - - From file... - از پرونده... - - - - Choose a file to use as group icon - یک پرونده را برای نشانه گروه برگزینید - - - - Images - تصویرها - - - - All files - همه پرونده‌ها - - - - Error - خطا - - - - Can't read the specified image file. - پرونده تصویری مشخص شده را نمی‌تواند بخواند. - - - - DictGroupsWidget - - - - - - Dictionaries: - واژه‌نامه‌ها: - - - - Confirmation - تایید - - - - Are you sure you want to generate a set of groups based on language pairs? - آیا شما از درخواست ایجاد یک مجموعه از گروه‌ها برپایه جفت‌های زبان اطمینان دارید؟ - - - - Unassigned - واگذار نشده - - - - Combine groups by source language to "%1->" - گروه‌ها را با زبان منبع ترکیب کنید به "%1->" - - - - Combine groups by target language to "->%1" - گروه‌ها را با زبان هدف ترکیب کنید به "%1->" - - - - Make two-side translate group "%1-%2-%1" - گروه ترجمه دوطرفه بسازید "%1-%2-%1" - - - - - Combine groups with "%1" - گروه‌ها را ترکیب کنید با "%1" - - - - DictHeadwords - - - Search mode - شیوه جست‌وجو - - - - This element determines how filter string will be interpreted - این رکن تعیین می‌کند که رشته پالایه چگونه تفسیر شود - - - - If checked on the symbols case will be take in account when filtering - اگر به‌کار افتاده باشد برای نمادها در هنگام پالایش پذیرفته می‌شود - - - - Match case - همتا بودن مورد - - - - Exports headwords to file - صادر کردن سرواژه‌ها به پرونده - - - - Export - صادر کردن - - - - Help - - - - - OK - خوب - - - - Press this button to apply filter to headwords list - برای اعمال پالایه لیست سرواژه‌ها این کلید را فشار دهید - - - - Apply - اعمال کردن - - - - If checked any filter changes will we immediately applied to headwords list - اگر به‌کار افتاده باشد هر تغییر پالایه بی‌درنگ بر روی لیست سرواژه‌ها اعمال می‌گردد - - - - Auto apply - اعمال خودکار - - - - Filter: - پالایه: - - - - Filter string (fixed string, wildcards or regular expression) - رشته پالایه (رشته ثابت، نویسه‌های عام یا عبارت منظم) - - - - Text - متن - - - - Wildcards - نویسه‌های عام - - - - RegExp - RegExp - - - - Unique headwords total: %1, filtered: %2 - جمع سرواژه‌های یکتا: %1، پالایش شده: %2 - - - - Save headwords to file - ذخیره سرواژه‌ها در پرونده - - - - Text files (*.txt);;All files (*.*) - پرونده‌های متنی (*.txt);;همه پرونده‌ها (*.*) - - - - Export headwords... - صادر کردن سرواژه‌ها... - - - - Cancel - لغو - - - - DictInfo - - - Total articles: - مجموع بندها: - - - - Translates from: - ترجمه از: - - - - Total words: - مجموع واژه‌ها: - - - - Translates to: - ترجمه به: - - - - Open folder - بازکردن پوشه - - - - Edit dictionary - ویرایش واژه‌نامه - - - - Files comprising this dictionary: - پرونده‌های دربرگیرنده این واژه‌نامه: - - - - Description: - شرح: - - - - Show all unique dictionary headwords - همه سرواژه‌های واژه‌نامه یکتا را نشان بده - - - - Headwords - سرواژه‌ها - - - - Edit the dictionary via command: -%1 - ویرایش واژه‌نامه با دستور: %1 - - - - DictListModel - - - %1 entries - %1 ورودی - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - به‌کار افتاده - - - - Name - نام - - - - Address - آدرس - - - - Databases - - - - - Strategies - - - - - Icon - نشانه - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - - &Dictionary Bar - نوار &واژه‌نامه - - - - Extended menu with all dictionaries... - منوی گسترش یافته با همه واژه‌نامه‌ها... - - - - Edit this group - ویرایش این گروه - - - - Dictionary info - اطلاعات واژه‌نامه - - - - Dictionary headwords - سرواژه‌های واژه‌نامه - - - - Open dictionary folder - بازکردن پوشه واژه‌نامه - - - - Edit dictionary - ویرایش واژه‌نامه - - - - EditDictionaries - - - Dictionaries - واژه‌نامه‌ها - - - - &Sources - &منابع - - - - - &Dictionaries - &واژه‌نامه‌ها - - - - - &Groups - &گروه‌ها - - - - Sources changed - منابع تغییر کردند - - - - Some sources were changed. Would you like to accept the changes? - برخی منابع تغییر کرده‌اند. شما می‌خواهید تغییرات را بپذیرید؟ - - - - Accept - پذیرش - - - - Cancel - لغو - - - - ExternalViewer - - - the viewer program name is empty - نام برنامه نمایش‌گر تهی است - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - نویسه‌های عام - - - - RegExp - RegExp - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - خطای تجزیه XML: %1 در %2،%3 - - - - Added %1 - افزوده شد %1 - - - - by - به‌وسیله - - - - Male - مرد - - - - Female - زن - - - - from - از - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - به ویرایش|واژه‌نامه‌ها|منابع|فوروُ بروید و کلید API مربوط به ما را بپذیرید تا این خطا ناپدید شود. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - همتا بودن مورد - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - لغو - - - - Help - - - - - GermanTranslit - - - German Transliteration - نویسه‌گردانی آلمانی - - - - GreekTranslit - - - Greek Transliteration - نویسه‌گردانی یونانی - - - - GroupComboBox - - - Choose a Group (Alt+G) - یک گروه برگزینید (Alt+G) - - - - GroupSelectorWidget - - - Form - فرم - - - - Look in - جست‌وجو در - - - - Groups - - - Dictionaries available: - واژه‌نامه‌های در دست‌رس: - - - - Add selected dictionaries to group (Ins) - افزودن واژه‌نامه‌های برگزیده شده به گروه (درج) - - - - > - > - - - - Ins - درج - - - - Remove selected dictionaries from group (Del) - حذف واژه‌نامه‌های برگزیده شده از گروه (حذف) - - - - < - < - - - - Del - حذف - - - - Groups: - گروه‌ها: - - - - Tab 2 - زبانه ۲ - - - - Create new dictionary group - ساخت گروه واژه‌نامه تازه - - - - &Add group - &افزودن گروه - - - - Create language-based groups - ساخت گروه‌های زبان-پایه - - - - Auto groups - گروه‌های خودکار - - - - Rename current dictionary group - تغییرنام گروه واژه‌نامه جاری - - - - Re&name group - &تغییرنام گروه - - - - Remove current dictionary group - حذف گروه واژه‌نامه جاری - - - - &Remove group - &حذف گروه - - - - Remove all dictionary groups - حذف همه گروه‌های واژه‌نامه - - - - - Remove all groups - حذف همه گروه‌ها - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - کشیدن و &رهاکردن واژه‌نامه‌ها به و از گروه‌ها، جابه‌جایی آن‌ها درون گروه‌ها، مرتب‌سازی دوباره گروه‌ها به‌وسیله موش. - - - - Group tabs - زبانه‌های گروه - - - - Open groups list - لیست گروه‌ها را باز کن - - - - Add group - افزودن گروه - - - - Give a name for the new group: - یک نام برای گروه تازه بدهید: - - - - Rename group - تغییرنام گروه - - - - Give a new name for the group: - یک نام تازه برای گروه بدهید: - - - - Remove group - حذف گروه - - - - Are you sure you want to remove the group <b>%1</b>? - آیا شما از حذف گروه <b>%1</b> اطمینان دارید؟ - - - - Are you sure you want to remove all the groups? - آیا شما از حذف همه گروه‌ها اطمینان دارید؟ - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - پس - - - - Forward - پیش - - - - Zoom In - بزرگ‌نمایی به درون - - - - Zoom Out - بزرگ‌نمایی به بیرون - - - - Normal Size - اندازه عادی - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &حذف برگزیده‌ها - - - - Copy Selected - رونوشت برگزیده‌ها - - - - History: - پیشینه: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - اندازه پیشینه: %1 ورودی فراتر از بیشینه %2 - - - - Hunspell - - - Spelling suggestions: - پیش‌نهادهای درست‌نویسی: - - - - %1 Morphology - %1 ریخت‌شناسی - - - - HunspellDictsModel - - - Enabled - به‌کار افتاده - - - - Name - نام - - - - Initializing - - - GoldenDict - Initializing - گلدن‌دیکت - برپاسازی - - - - - Please wait while indexing dictionary - لطفا تا فهرست‌سازی واژه‌نامه صبر کنید - - - - Dictionary Name - نام واژه‌نامه - - - - Please wait... - لطفا منتظر بمانید... - - - - Language - - - Afar - عفری - - - - Abkhazian - آبخازی - - - - Avestan - اوستایی - - - - Afrikaans - آفریقایی - - - - Akan - آکانی - - - - Amharic - آمهاری - - - - Aragonese - اراگونی - - - - Arabic - عربی - - - - Assamese - اسامی - - - - Avaric - آواری - - - - Aymara - آیماری - - - - Azerbaijani - آذری - - - - Bashkir - باشکیری - - - - Belarusian - بلاروسی - - - - Bulgarian - بلغاری - - - - Bihari - بیهاری - - - - Bislama - بیسلامی - - - - Bambara - بامباری - - - - Bengali - بنگالی - - - - Tibetan - تبتی - - - - Breton - بریتونی - - - - Bosnian - بوسنی - - - - Catalan - کاتالانی - - - - Chechen - چچنی - - - - Chamorro - چامورو - - - - Corsican - کورسیکی - - - - Cree - کری - - - - Czech - چکی - - - - Church Slavic - کلیسا اسلاوی - - - - Chuvash - چوواشی - - - - Welsh - ولزی - - - - Danish - دانمارکی - - - - German - آلمانی - - - - Divehi - دایوهایی - - - - Dzongkha - زونخایی - - - - Ewe - ایوی - - - - Greek - یونانی - - - - English - انگلیسی - - - - Esperanto - اسپرانتور - - - - Spanish - اسپانیایی - - - - Estonian - استونیایی - - - - Basque - باسکی - - - - Persian - فارسی - - - - Fulah - فولاهی - - - - Finnish - فنلاندی - - - - Fijian - فیجی - - - - Faroese - فارویی - - - - French - فرانسوی - - - - Western Frisian - فریزلندی غربی - - - - Irish - ایرلندی - - - - Scottish Gaelic - اسکاتلندی بومی - - - - Galician - گالیشی - - - - Guarani - گورانی - - - - Gujarati - گوجراتی - - - - Manx - مانکسی - - - - Hausa - هوساوی - - - - Hebrew - عبری - - - - Hindi - هندی - - - - Hiri Motu - هیری موتو - - - - Croatian - کرواتی - - - - Haitian - هایتی - - - - Hungarian - مجارستانی - - - - Armenian - ارمنی - - - - Herero - هریرو - - - - Interlingua - اینترلینگوا - - - - Indonesian - اندونزیایی - - - - Interlingue - اینترلینگو - - - - Igbo - ایگبویی - - - - Sichuan Yi - سیچوانی یی - - - - Inupiaq - اینوپیاک - - - - Ido - ایدو - - - - Icelandic - آیسلندی - - - - Italian - ایتالیایی - - - - Inuktitut - اینوکتیتوتی - - - - Japanese - ژاپنی - - - - Javanese - جاوایی - - - - Georgian - گرجستانی - - - - Kongo - کنگو - - - - Kikuyu - کیکویو - - - - Kwanyama - کاوانیامی - - - - Kazakh - قزاقی - - - - Kalaallisut - گرینلندی - - - - Khmer - خمیری - - - - Kannada - کانادایی - - - - Korean - کره‌ای - - - - Kanuri - کانیوری - - - - Kashmiri - کشمیری - - - - Kurdish - کردی - - - - Komi - کومی - - - - Cornish - کرنیش - - - - Kirghiz - قرقیزی - - - - Latin - لاتینی - - - - Luxembourgish - لوگزامبورگی - - - - Ganda - گاندا - - - - Limburgish - لیمبورگی - - - - Lingala - لینگالی - - - - Lao - لائوسی - - - - Lithuanian - لیتوانی - - - - Luba-Katanga - لوبا کاتانگا - - - - Latvian - لاتویانی - - - - Malagasy - مالاگاسی - - - - Marshallese - مارشالی - - - - Maori - مائوری - - - - Macedonian - مقدونی - - - - Malayalam - مالایایی - - - - Mongolian - مغولستانی - - - - Marathi - مهاراتی - - - - Malay - مالایا - - - - Maltese - مالتی - - - - Burmese - برمه‌ای - - - - Nauru - نائورو - - - - Norwegian Bokmal - بوکمال نروژی - - - - North Ndebele - ندیبیلی شمال - - - - Nepali - نپالی - - - - Ndonga - اندونگا - - - - Dutch - هلندی - - - - Norwegian Nynorsk - نینورسک نروژی - - - - Norwegian - نروژی - - - - South Ndebele - ندیبیلی جنوب - - - - Navajo - ناواهو - - - - Chichewa - چیچوا - - - - Occitan - اکیتانی - - - - Ojibwa - اجیبوا - - - - Oromo - اورومی - - - - Oriya - اوریا - - - - Ossetian - قفقازی - - - - Panjabi - پنجابی - - - - Pali - پالی - - - - Polish - لهستانی - - - - Pashto - پشتو - - - - Portuguese - پرتغالی - - - - Quechua - کچوا - - - - Raeto-Romance - ریتو-رومنس - - - - Kirundi - کیروندی - - - - Romanian - رومانی - - - - Russian - روسی - - - - Kinyarwanda - کینیارواندی - - - - Sanskrit - سانسکریتی - - - - Sardinian - ساردینی - - - - Sindhi - سندی - - - - Northern Sami - سامی شمال - - - - Sango - سانگو - - - - Serbo-Croatian - صربستانی- کرواتی - - - - Sinhala - سنهالی - - - - Slovak - اسلواکی - - - - Slovenian - اسلونی - - - - Samoan - ساموی - - - - Shona - شونا - - - - Somali - سومالی - - - - Albanian - آلبانی - - - - Serbian - صربستانی - - - - Swati - سواتی - - - - Southern Sotho - سوتو جنوب - - - - Sundanese - سوندانی - - - - Swedish - سوئدی - - - - Swahili - سواحیلی - - - - Tamil - تامیلی - - - - Telugu - تیلگو - - - - Tajik - تاجیک - - - - Thai - تایلندی - - - - Tigrinya - تگرینی - - - - Turkmen - ترکمن - - - - Tagalog - تاگالوگی - - - - Tswana - تسوانی - - - - Tonga - تونگا - - - - Turkish - ترکی - - - - Tsonga - تسونگا - - - - Tatar - تاتاری - - - - Twi - توی - - - - Tahitian - تاهیتی - - - - Uighur - اویغوری - - - - Ukrainian - اوکراینی - - - - Urdu - اردو - - - - Uzbek - ازبکی - - - - Venda - ویندا - - - - Vietnamese - ویتنامی - - - - Volapuk - ولاپوک - - - - Walloon - والونی - - - - Wolof - ولوف - - - - Xhosa - زوسا - - - - Yiddish - یدیشی - - - - Yoruba - یوروبی - - - - Zhuang - ژوانکی - - - - Chinese - چینی - - - - Zulu - زولو - - - - Lojban - لوجبانی - - - - Traditional Chinese - چینی سنتی - - - - Simplified Chinese - چینی ساده - - - - Other - سایر - - - - Other Simplified Chinese dialects - چینی سایر گویش‌های ساده - - - - Other Traditional Chinese dialects - چینی سایر گویش‌های سنتی - - - - Other Eastern-European languages - سایر زبان‌های اروپای شرقی - - - - Other Western-European languages - سایر زبان‌های اروپای غربی - - - - Other Russian languages - روسی سایر زبان‌ها - - - - Other Japanese languages - ژاپنی سایر زبان‌ها - - - - Other Baltic languages - بالتیک سایر زبان‌ها - - - - Other Greek languages - یونانی سایر زبان‌ها - - - - Other Korean dialects - کره‌ای سایر گویش‌ها - - - - Other Turkish dialects - ترکی سایر گویش‌ها - - - - Other Thai dialects - تایلندی سایر گویش‌ها - - - - Tamazight - آمازیغی - - - - LoadDictionaries - - - Error loading dictionaries - خطا در بارگیری واژه‌نامه‌ها - - - - Main - - - Error in configuration file. Continue with default settings? - خطا در پرونده پیکربندی. با تنظیمات پیش‌فرض ادامه می‌دهید؟ - - - - MainWindow - - - - Welcome! - خوش آمدید! - - - - &File - &پرونده - - - - &Edit - &ویرایش - - - - &Help - &راهنما - - - - &View - &نما - - - - &Zoom - &بزرگ‌نمایی - - - - H&istory - پی&شینه - - - - Search - - - - - &Search Pane - قاب &جست‌وجو - - - - &Results Navigation Pane - قاب &ناوبری نتایج - - - - &History Pane - قاب &پیشینه - - - - &Dictionaries... - &واژه‌نامه‌ها... - - - - F3 - F3 - - - - &Preferences... - &ترجیحات... - - - - F4 - F4 - - - - &Homepage - &برگه آغازین - - - - &About - &درباره - - - - About GoldenDict - درباره گلدن‌دیکت - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &ترک کردن - - - - Quit from application - ترک کردن برنامه - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &انجمن - - - - &Close To Tray - بستن به &سینی - - - - Minimizes the window to tray - کمینه کردن پنجره به سینی - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &ذخیره بند - - - - Save Article - ذخیره بند - - - - F2 - F2 - - - - &Print - &چاپ - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - &برپایی برگه - - - - Print Pre&view - &پیش‌نمایش چاپ - - - - &Rescan Files - پویش &دوباره پرونده‌ها - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &پاک کردن - - - - &New Tab - &زبانه تازه - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &پوشه پیکربندی - - - - - &Show - &نمایش - - - - Ctrl+H - Ctrl+H - - - - &Export - &صادر کردن - - - - &Import - &وارد کردن - - - - &Always on Top - &همیشه در بالا - - - - Always on Top - همیشه در بالا - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - کلید منو - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - - Show Names in Dictionary &Bar - نمایش نا&م‌ها در نوار واژه‌نامه - - - - Show Small Icons in &Toolbars - نمایش نشانه‌های &کوچک در نوار ابزار - - - - &Menubar - نوار &منو - - - - &Navigation - نا&وبری - - - - Back - پس - - - - Forward - پیش - - - - Scan Popup - پویش واشو - - - - Pronounce Word (Alt+S) - بیان واژه (Alt+S) - - - - Zoom In - بزرگ‌نمایی به درون - - - - Zoom Out - بزرگ‌نمایی به بیرون - - - - Normal Size - اندازه عادی - - - - - Look up in: - یافتن در: - - - - Found in Dictionaries: - در این واژه‌نامه‌ها یافت شد: - - - - Words Zoom In - بزرگ‌نمایی به درون واژه‌ها - - - - Words Zoom Out - بزرگ‌نمایی به بیرون واژه‌ها - - - - Words Normal Size - اندازه عادی واژه‌ها - - - - Show &Main Window - &نمایش پنجره اصلی - - - - Opened tabs - زبانه‌های باز شده - - - - Close current tab - بستن زبانه جاری - - - - Close all tabs - بستن همه زبانه‌ها - - - - Close all tabs except current - بستن همه زبانه‌ها مگر زبانه جاری - - - - Loading... - بارگیری... - - - - New Tab - زبانه تازه - - - - - Accessibility API is not enabled - API دست‌رسی به‌کار نیفتاده است - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - رشته‌ای که باید در واژه‌نامه‌ها جست‌وجو شود. نویسه‌های عام '*'، '?' و گروه‌هایی از نمادهای '[...]' مجاز هستند. -برای یافتن نمادهای '*'، '?'، '['، ']' به ترتیب '\*'، '\?'، '\['، '\]' را به‌کار ببرید - - - - %1 dictionaries, %2 articles, %3 words - %1 واژه‌نامه، %2 بند، %3 واژه - - - - Look up: - یافتن: - - - - All - همه - - - - Open Tabs List - باز کردن لیست زبانه‌ها - - - - (untitled) - (بی‌عنوان) - - - - %1 - %2 - %1 - %2 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - برپاسازی سازوکار بازبینی کلیدهای میان‌بر شکست خورد.<br>مطمئن شوید که افزونه RECORD مربوط به XServer روشن شده است. - - - - New Release Available - نسخه تازه موجود است - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - نسخه <b>%1</b> گلدن‌دیکت برای بارگیری آماده است <br> برای به‌دست آوردن برگه بارگیری <b>بارگیری</b> را کلیک کنید. - - - - Download - بارگیری - - - - Skip This Release - پرش از این نسخه - - - - You have chosen to hide a menubar. Use %1 to show it back. - شما پنهان کردن نوار منو را برگزیده‌اید. %1 را به‌کار ببرید تا دوباره نمایش داده شود. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - برپایی برگه - - - - No printer is available. Please install one first. - چاپ‌گری موجود نیست. لطفاً نخست یکی نصب کنید. - - - - Print Article - چاپ بند - - - - Article, Complete (*.html) - بند، کامل (*.html) - - - - Article, HTML Only (*.html) - بند HTML تنها (*.html) - - - - Save Article As - ذخیره بند به‌عنوان - - - - Error - خطا - - - - Can't save article: %1 - نمی‌تواند بند: %1 را ذخیره کند - - - - Saving article... - درحال ذخیره بند... - - - - The main window is set to be always on top. - پنجره اصلی تنظیم می‌شود تا همیشه در بالا باشد. - - - - &Hide - پنهان&سازی - - - - Export history to file - صادر کردن پیشینه به پرونده - - - - - Text files (*.txt);;All files (*.*) - پرونده‌های متنی (*.txt);;همه پرونده‌ها (*.*) - - - - History export complete - صادر کردن پیشینه کامل شد - - - - Export error: - خطا در صادر کردن: - - - - Import history from file - وارد کردن پیشینه از پرونده - - - - Import error: invalid data in file - خطا در وارد کردن: داده نامعتبر در پرونده - - - - History import complete - وارد کردن پیشینه کامل شد - - - - Import error: - خطا در وارد کردن: - - - - Dictionary info - اطلاعات واژه‌نامه - - - - Dictionary headwords - سرواژه‌های واژه‌نامه - - - - Open dictionary folder - باز کردن پوشه واژه‌نامه - - - - Edit dictionary - ویرایش واژه‌نامه - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - پرونده واژه‌نامه دست‌کاری یا خراب شده است - - - - Failed loading article from %1, reason: %2 - بارگیری بند از %1 شکست خورد، دلیل: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - خطای تجزیه XML: %1 در %2،%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - خطای تجزیه XML: %1 در %2،%3 - - - - MediaWikisModel - - - Enabled - به‌کار افتاده - - - - Name - نام - - - - Address - آدرس - - - - Icon - نشانه - - - - OrderAndProps - - - Form - فرم - - - ... - ... - - - - Dictionary order: - ترتیب واژه‌نامه‌ها: - - - - Inactive (disabled) dictionaries: - واژه‌نامه‌های غیرفعال (از کار افتاده): - - - - Dictionary information - اطلاعات واژه‌نامه - - - - Name: - نام: - - - - Total articles: - جمع بندها: - - - - Total words: - جمع واژه‌ها: - - - - Translates from: - ترجمه از: - - - - Translates to: - ترجمه به: - - - - Description: - شرح: - - - - Files comprising this dictionary: - پرونده‌های دربرگیرنده این واژه‌نامه: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - با کشیدن و رها کردن آیتم‌ها ترتیب آن‌ها را تنظیم کنید. برای از کار انداختن واژه‌نامه‌ها آن‌ها را در گروه غیرفعال بیندازید. - - - - Sort by name - مرتب کردن با نام - - - - Sort by languages - مرتب کردن با زبان - - - - Dictionary headwords - سرواژه‌های واژه‌نامه - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - مسیر - - - - Recursive - بازگشتی - - - - Preferences - - - Preferences - ترجیحات - - - - &Interface - &رابط - - - - Startup - آغازگر - - - - Automatically starts GoldenDict after operation system bootup. - پس از بالا آمدن سیستم‌عامل گلدن‌دیکت به‌طور خودکار اجرا شود. - - - - Start with system - آغاز هم‌راه با سیستم - - - - Add-on style: - سبک افزونه: - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - هنگامی‌که به‌کار افتاده، یک نشانه در سینی سیستم نمایش داده می‌شود -که می‌تواند برای باز کردن پنجره اصلی و انجام دیگر کارها به‌کار برده شود. - - - - Enable system tray icon - به‌کار انداختن نشانه سینی سیستم - - - - With this on, the application starts directly to system tray without showing -its main window. - با به‌کار انداختن این، برنامه هنگام آغاز بدون -نمایش پنجره اصلی به سینی سیستم می‌رود. - - - - Start to system tray - آغاز برنامه در سینی سیستم - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - با به‌کار انداختن این،هر تلاشی برای بستن پنجره -اصلی به جای بستن برنامه آن‌را پنهان می‌کند. - - - - Close to system tray - بستن به سینی سیستم - - - - Double-click translates the word clicked - دوبار کلیک واژه کلیک شده را ترجمه کند - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - در حالت عادی، فشردن کلید ESC تمرکز را به خط ترجمه انتقال -می‌دهد. با به‌کار انداختن این، باعث پنهان شدن پنجره اصلی می‌شود. - - - - ESC key hides main window - کلید ESC پنجره اصلی را پنهان کند - - - - Turn this option on if you want to select words by single mouse click - اگر می‌خواهید واژه‌ها را با تک کلیک موش برگزینید این گزینه را به‌کار اندازید - - - - Select word by single click - برگزیدن واژه با تک کلیک - - - - Tabbed browsing - مرور زبانه‌ای - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - در حالت عادی، با باز کردن یک زبانه‌ی تازه فوری به آن می‌روید. -با فعال بودن این، زیانه‌ی تازه باز می‌شود ولی به آن نمی‌روید. - - - - Open new tabs in background - باز کردن زبانه‌های تازه در پس‌زمینه - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - با فعال کردن ابن، زبانه‌های تازه پس از -زبانه فعلی فعال باز می‌شوند، وگرنه -به‌عنوان آخرین زیانه افزوده می‌شوند. - - - - Open new tabs after the current one - باز کردن زبانه تازه پس از زبانه جاری - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - اگر نمی‌خواهید نوار زبانه اصلی را هنگامی‌که تنها یک زبانه باز شده دارید ببینید این را برگزینید. - - - - Hide single tab - پنهان کردن تک زبانه - - - - Ctrl-Tab navigates tabs in MRU order - با مهار+Tab بین زبانه‌ها به ترتیب MRU جابه‌جا شوید - - - - Interface language: - زبان رابط کاربری: - - - - Display style: - سبک نمایش: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - برای دوری از فهرست زمینه خیلی بزرگ این مقدار را تنظیم کنید. - - - - Context menu dictionaries limit: - شمار واژه‌نامه‌های فهرست زمینه: - - - - &Scan Popup - پویش &واشو - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - وقتی به‌کار افتاده، یک پنجره ترجمه واشو زمانی‌که شما با موش روی -واژه‌ای روی نمایش‌گر اشاره کنید (ویندوز) یا واژه‌ای را با موش -برگزینید (لینوکس) نمایش داده می‌شود. زمانی‌که به‌کار افتاده است، شما -می‌توانید آن‌را از پنجره اصلی یا نشانه سینی سیستم خاموش یا روشن کنید. - - - - Enable scan popup functionality - به‌کار انداختن قابلیت پویش واشو - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - برگزینید که آیا حالت پویش واشو به‌طور پیش‌فرض روشن باشد یا نه. اگر -به‌کار افتاده باشد، برنامه همیشه با فعال بودن پویش واشو آغاز می‌شود. - - - - Start with scan popup turned on - آغاز با روشن بودن پویش واشو - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - با به‌کار انداختن این، واشو تنها زمانی نمایش داده می‌شود که -هنگام تغییر گزینش واژه همه کلیدهای برگزیده فشار داده شوند. - - - - Only show popup when all selected keys are kept pressed: - تنها زمانی که همه کلیدهای انتخاب شده فشار داده شده‌اند واشو را نمایش بده: - - - - Left Ctrl only - تنها مهار چپ - - - - Left Ctrl - مهار چپ - - - - Right Shift only - تنها تبدیل چپ - - - - Right Shift - تبدیل راست - - - - Alt key - کلید دگرساز - - - - Alt - دگرساز - - - - Ctrl key - کلید مهار - - - - Ctrl - مهار - - - - Left Alt only - تنها دگرساز چپ - - - - Left Alt - دگرساز چپ - - - - Shift key - کلید تبدیل - - - - Shift - تبدیل - - - - Right Alt only - تنها دگرساز راست - - - - Right Alt - دگرساز راست - - - - Right Ctrl only - تنها مهار راست - - - - Right Ctrl - مهار راست - - - - Left Shift only - تنها تبدیل چپ - - - - Left Shift - تبدیل چپ - - - - Windows key or Meta key - کلید ویندوز یا کلید متا - - - - Win/Meta - ویندوز/متا - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - به‌طور عادی، به منظور فعال کردن واشو شما باید هنگامی‌که یک واژه -را برگزیده‌اید کلیدهای برگزیده شده را فشار داده شده نگه دارید. -با به‌کار انداختن این، کلیدهای برگزیده، هم‌چنین می‌توانند -با فاصه کوتاهی پس از انجام گزینش واژه فشار داده شوند. - - - - Keys may also be pressed afterwards, within - هم‌چنین کلیدها ممکن است فشار داده شوند پس از آن، در مدت - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - برای پیش‌گیری از رخ‌داد اشتباه، کلیدها پس از -اتمام گزینش تنها برای چند ثانیه محدود که -در این‌جا مشخص شده است بازبینی می‌شوند. - - - - secs - ثانیه - - - - Send translated word to main window instead of to show it in popup window - واژه ترجمه شده را به‌جای نمایش در پنجره واشو به پنجره اصلی بفرست - - - - Send translated word to main window - واژه ترجمه شده را به پنجره اصلی بفرست - - - - Hotkeys - کلیدهای میان‌برها - - - - Use the following hotkey to show or hide the main window: - برای نمایش یا پنهان کردن پنجره اصلی میان‌برهای زیر را به‌کار ببر: - - - - Use the following hotkey to translate a word from clipboard: - برای ترجمه یک واژه از حافظه میان‌برهای زیر را به‌کار ببر: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - کلیدهای میان‌بر سراسری هستند و تا زمانی که گلدن‌دیکت در پس‌زمینه در حال اجراست در هر برنامه و هر متنی کار می‌کنند. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p dir="RTL" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">توجه: به نظر می‌رسد شما نسخه‌ای از X.Org XServer که افزونه RECORD آن خراب شده است را در حال اجرا دارید. کلیدهای میان‌بر در گلدن‌دیکت به‌خوبی کار نخواهند کرد. این بایستی در خود server درست شود. لطفاً مراجعه کنید به </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">ثبت باگ</span></a><span style=" color:#ff0000;"> و اگر دوست دارید یک یادداشت آن‌جا بگذارید.</span></p></body></html> - - - - &Audio - &شنیداری - - - - Pronunciation - بیان کردن - - - - Auto-pronounce words in main window - بیان خودکار واژه‌ها در پنجره اصلی - - - - Auto-pronounce words in scan popup - بیان خودکار واژه‌ها در پویش واشو - - - - Playback - بازپخش - - - - Play audio files via FFmpeg(libav) and libao - پخش پرونده‌های شنیداری با FFmpeg(libav) و libao - - - - Use internal player - به‌کار بردن پخش‌کننده درونی - - - - Use any external program to play audio files - به‌کار بردن هر برنامه بیرونی برای پخش پرونده‌های شنیداری - - - - Use external program: - به‌کار بردن برنامه بیرونی: - - - - &Network - ش&بکه - - - - Enable if you wish to use a proxy server -for all program's network requests. - اگر می‌خواهید کارگزار پروکسی را برای همه درخواست‌های -شبکه برنامه به‌کار ببرید این را به‌کار اندازید. - - - - Use proxy server - به‌کار بردن کارگزار پروکسی - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Type: - نوع: - - - - Host: - میزبان: - - - - Port: - درگاه: - - - - User: - کاربر: - - - - Password: - گذرواژه: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - با به‌کار انداختن این گلدن‌دیکت بیش‌تر آگهی‌ها را با اجازه ندادن -به محتوای (تصویرها، قاب‌ها) که از پایگاه مروری شما نیست می‌بندد. -اگر برخی پایگاه‌ها به خاطر این خراب شدند، این را از کار بیندازید. - - - - Disallow loading content from other sites (hides most advertisements) - بارگیری محتوا از دیگر پایگاه‌ها را می‌بندد (بیش‌تر آگهی‌ها را پنهان می‌کند) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - با به‌کار انداختن این می‌توانید به بیان آواها از شاخه‌های -برخط که بر روی فلش یا دیگر افزونه‌های وب تکیه کرده‌اند -گوش کنید. برای کار کردن این گزینه افزونه باید نصب شده باشد. - - - - Enable web plugins - به‌کار انداختن افزونه‌های وب - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - برخی پایگاه‌ها گلدن‌دیگت را از سرآیند HTTP می‌شناسند و درخواست‌ها -را می‌بندند. این گزینه را به‌کار اندازید تا مشکل از بین برود. - - - - Do not identify GoldenDict in HTTP headers - گلدن‌دیکت را در سرآیند HTTP نمایان نکن - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - وقتی به‌کار افتاده است، برنامه به‌طور دوره‌ای برای -نسخه‌های تازه گلدن‌دیکت برای بارگیری بررسی می‌کند. -اگر در دست‌رس بود برنامه کاربر را آگاه می‌کند -و پیام می‌دهد تا یک برگه بارگیری باز کند. - - - - Check for new program releases periodically - بررسی دوره‌ای برای نسخه‌های تازه برنامه - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Ad&vanced - &پیش‌رفته - - - - ScanPopup extra technologies - فن‌آوری‌های فراتر پویش واشو - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - تلاش می‌کند تا برای به‌دست آوردن واژه زیر نشان‌گر موش فن‌آوری IAccessibleEx را به‌کار ببرد. -این فن‌آوری تنها با برخی برنامه‌ها که از آن پشتیبانی می‌کنند کار می‌کند (همانند IE9). -اگر شما از این‌چنین برنامه‌هایی استفاده نمی‌کنید نیازی به برگزیدن این گزینه ندارید. - - - - Use &IAccessibleEx - به‌کار بردن &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - تلاش می‌کند تا برای به‌دست آوردن واژه زیر نشان‌گر موش فن‌آوری UIAutomation را به‌کار ببرد. -این فن‌آوری تنها با برخی برنامه‌ها که از آن پشتیبانی می‌کنند کار می‌کند. -اگر شما از این‌چنین برنامه‌هایی استفاده نمی‌کنید نیازی به برگزیدن این گزینه ندارید. - - - - Use &UIAutomation - به‌کار بردن &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - تلاش می‌کند تا برای به‌دست آوردن واژه زیر نشان‌گر موش پیام‌ ویژه گلدن‌دیکت را به‌کار ببرد. -این فن‌آوری تنها با برخی برنامه‌ها که از آن پشتیبانی می‌کنند کار می‌کند. -اگر شما از این‌چنین برنامه‌هایی استفاده نمی‌کنید نیازی به برگزیدن این گزینه ندارید. - - - - Use &GoldenDict message - به‌کار بردن پیام &گلدن‌دیکت - - - - History - پیشینه - - - - Turn this option on to store history of the translated words - برای نگه‌داری پیشینه واژه‌های ترجمه شده این گزینه را روشن کنید - - - - Store &history - نگه‌داری &پیشینه - - - - Specify the maximum number of entries to keep in history. - بیشینه شمار ورودی برای نگه‌داری در پیشینه را تعیین می‌کند. - - - - Maximum history size: - بیشینه اندازه پیشینه: - - - - History saving interval. If set to 0 history will be saved only during exit. - وقفه ذخیره پیشینه. اگر ۰ قرار داده شود پیشینه تنها هنگام ترک برنامه ذخیره خواهد شد. - - - - Save every - ذخیره کن هر - - - - minutes - دقیقه - - - - Articles - بندها - - - - Turn this option on to always expand optional parts of articles - برای گستراندن همیشگی بخش‌های اختیاری بندها این گزینه را روشن کنید - - - - Expand optional &parts - &بخش‌های اختیاری را بگستران - - - - Select this option to automatic collapse big articles - برای جمع کردن خودکار بندهای بزرگ این گزینه را برگزینید - - - - Collapse articles more than - بندهای بیش از این را جمع کن - - - - Articles longer than this size will be collapsed - بندهای کشیده‌تر از این اندازه جمع می‌شوند - - - - symbols - نماد - - - - System default - پیش‌فرض سیستم - - - - - Default - پیش‌فرض - - - - Modern - نوین - - - - Lingvo - لینگوُ - - - - Babylon - بابیلون - - - - Lingoes - لینگوز - - - - Lingoes-Blue - لینگوز-آبی - - - - Changing Language - تغییر دادن زبان - - - - Restart the program to apply the language change. - برای به‌کار برده شدن تغییر زبان برنامه را دوباره راه‌اندازی کنید. - - - - ProgramTypeEditor - - - Audio - شنیداری - - - - Plain Text - متن ساده - - - - Html - Html - - - - Prefix Match - همتا بودن پیش‌وند - - - - Unknown - ناشناخته - - - - Programs::RunInstance - - - No program name was given. - نام برنامه‌ای داده نشده است. - - - - The program has crashed. - برنامه خراب شده است. - - - - The program has returned exit code %1. - برنامه این کد خروج را برگردانده است %1. - - - - ProgramsModel - - - Enabled - به‌کار افتاده - - - - Type - نوع - - - - Name - نام - - - - Command Line - خط فرمان - - - - Icon - نشانه - - - - QObject - - - - Article loading error - خطا در بارگیری بند - - - - - Article decoding error - خطا در رمزگشایی بند - - - - avformat_alloc_context() failed. - avformat_alloc_context() شکست خورد. - - - - av_malloc() failed. - av_malloc() شکست خورد. - - - - avio_alloc_context() failed. - avio_alloc_context() شکست خورد. - - - - avformat_open_input() failed: %1. - avformat_open_input() شکست خورد: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() شکست خورد.: %1. - - - - Could not find audio stream. - نمی‌تواند جریان شنیداری را بیابد. - - - - Codec [id: %1] not found. - کدک [شناسه: %1] یافت نشد. - - - - avcodec_open2() failed: %1. - avcodec_open2() شکست خورد: %1. - - - - Cannot find usable audio output device. - نمی‌تواند دستگاه خروجی شنیداری به‌کار بردنی بیابد. - - - - Unsupported sample format. - قالب نمونه‌برداری پشتیبانی نشده. - - - - ao_open_live() failed: - ao_open_live() شکست خورد: - - - - No driver. - راه‌اندازی نیست. - - - - This driver is not a live output device. - این راه‌انداز یک دستگاه خروجی زنده نیست. - - - - A valid option key has an invalid value. - یک کلید گزینه معتبر مقدار نامعتبر دارد. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - نمی‌تواند دستگاه: %1 را بازکند، کانال: %2، نرخ: %3، بیت: %4. - - - - Unknown error. - خطای ناشناخته. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() شکست خورد. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - جست‌وجو/پالایه واژه‌نامه (Ctrl+F) - - - - Quick Search - جست‌وجوی تند - - - - Clear Search - پاک کردن جست‌وجو - - - - ResourceToSaveHandler - - - - ERROR: %1 - خطای: %1 - - - - Resource saving error: - خطا در ذخیره منبع: - - - - The referenced resource failed to download. - بارگیری منبع ارجاع شده شکست خورد. - - - - Romaji - - - Hepburn Romaji for Hiragana - روماجی هپ‌برن برای هیراگانا - - - - Hepburn Romaji for Katakana - روماجی هپ‌برن برای کاتاکانا - - - - RussianTranslit - - - Russian Transliteration - نویسه‌گردانی روسی - - - - ScanPopup - - - Dialog - دیالوگ - - - - Back - پس - - - - - - - - ... - ... - - - - Forward - پیش - - - - Pronounce Word (Alt+S) - بیان واژه (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - فرستادن واژه به پنجره اصلی (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - نمایش یا پنهان کردن نوار واژه‌نامه - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - این سنجاق را فشار دهید تا پنجره روی صفحه بماند، -می‌توان تغییر اندازه داد یا طور دیگری مدیریت کرد. - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - مسیر - - - - Name - نام - - - - Icon - نشانه - - - - Sources - - - Files - پرونده‌ها - - - - Paths to search for the dictionary files: - مسیرهای جست‌وجوی پرونده‌های واژه‌نامه: - - - - - - - - - &Add... - &افزودن... - - - - - - - - - &Remove - &حذف کردن - - - - Re&scan now - اکنون &پویش دوباره کن - - - - Sound Dirs - شاخه‌های آوا - - - - Make dictionaries from bunches of audiofiles by adding paths here: - ساخت واژه‌نامه‌ها از دسته‌های پرونده‌های شنیداری با افزودن مسیرها در این‌جا: - - - - Morphology - ریخت‌شناسی - - - - Path to a directory with Hunspell/Myspell dictionaries: - مسیر شاخه با واژه‌نامه‌های Hunspell/Myspell: - - - - &Change... - &تغییر دادن... - - - - Available morphology dictionaries: - واژه‌نامه‌های ریخت‌شناسی موجود: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - هر واژه‌نامه ریخت‌شناسی همانند واژه‌نامه -کمکی جداگانه پدیدار می‌شود که ریشه -واژه‌ها را برای جست‌وجو و پیش‌نهادهای -درست‌نویسی برای واژه‌های نادرست آماده می‌کند. -واژه‌نامه‌های مناسب را به انتهای گروه‌های -مناسب برای به‌کار بردن آن‌ها می‌افزاید. - - - - Wikipedia - ویکی‌پدیا - - - - Wikipedia (MediaWiki) sites: - پایگاه‌های ویکی‌پدیا (ویکی‌مدیا): - - - - Websites - پایگاه‌های وب - - - - Any websites. A string %GDWORD% will be replaced with the query word: - هر پایگاه وبی. یک رشته %GDWORD% با واژه درخواستی جای‌گزین می‌شود: - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - به‌نوبت، به‌کار می‌برد %GD1251% برای CP1251،و %GDISO1%...%GDISO16% برای ISO 8859-1...ISO 8859-16 را به‌ترتیب برای، -%GDBIG5% برای Big-5، و %GDBIG5HKSCS% برای Big5-HKSCS، و %GDGBK% برای GBK و GB18030، و %GDSHIFTJIS% برای Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Programs - برنامه‌ها - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - هر برنامه بیرونی. یک رشته %GDWORD% با واژه درخواستی جای‌گزین می‌شود. اگر چنین رشته‌ای آماده نبود، واژه به ورودی استاندارد فرستاده می‌شود. - - - - Forvo - فوروُ - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - بیان زنده از <a href="http://www.forvo.com/">forvo.com</a>. این پایگاه به مردم اجازه ضبط و اشتراک بیان‌ها را می‌دهد. شما از گلدن‌دیکت می‌توانید به آن‌ها گوش کنید. - - - - Enable pronunciations from Forvo - به‌کار انداختن بیان کردن با فوروُ - - - - API Key: - کلید API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - به‌کار بردن فوروُ هم‌اکنون به یک کلید API نیاز دارد. برای به‌کار بردن -کلید پیش‌فرض بگذارید این فیلد تهی باشد، چرا که ممکن است در آینده -در دست‌رس نباشد، یا در پایگاه نام‌نویسی کنید تا کلید خودتان را به‌دست آورید. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - کلید خودتان را <a href="http://api.forvo.com/key/">از این‌جا</a> به‌دست آورید، یا برای به‌کار بردن کلید پیش‌فرض بگذارید تهی باشد. - - - - Language codes (comma-separated): - کدهای زبان (جدا شده با کاما): - - - - List of language codes you would like to have. Example: "en, ru". - لیست کدهای زبان که می‌خواهید داشته باشید. همانند: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - لیست همه کدهای زبان <a href="http://www.forvo.com/languages-codes/">این‌جا</a> در دست‌رس است. - - - - Transliteration - نویسه‌گردانی - - - - Russian transliteration - نویسه‌گردانی روسی - - - - Greek transliteration - نویسه‌گردانی یونانی - - - - German transliteration - نویسه‌گردانی آلمانی - - - - Belarusian transliteration - نویسه‌گردانی بلاروسی - - - - Enables to use the Latin alphabet to write the Japanese language - برای به‌کار بردن الفبای لاتین برای نوشتن زبان ژاپنی به‌کار اندازید - - - - Japanese Romaji - روماجی ژاپنی - - - - Systems: - سامانه‌ها: - - - - The most widely used method of transcription of Japanese, -based on English phonology - پر کاربردترین روش آوانویسی ژاپنی، -بر پایه واج‌شناسی انگلیسی - - - - Hepburn - هپ‌برن - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - منظم‌ترین سامانه، یک رابطه یک-به-یک با سامانه‌های -نوشتاری کانا. استاندارد شده در ISO 3602 - -هنوز در گلدن‌دیکت پیاده‌سازی نشده است. - - - - Nihon-shiki - نیهون-شیکی - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - برپایه سامانه نیهون-شیکی، ولی برای استاندارد نوین ژاپنی پیراسته شده است. -استاندارد شده در ISO 3602 - -هنوز در گلدن‌دیکت پیاده‌سازی نشده است. - - - - Kunrei-shiki - کنری-شیکی - - - - Syllabaries: - هجابندی‌ها: - - - - Hiragana Japanese syllabary - هجابندی هیراگانای ژاپنی - - - - Hiragana - هیراگانا - - - - Katakana Japanese syllabary - هجابندی کاتاکانای ژاپنی - - - - Katakana - کاتاکانا - - - - Text to Speech - متن به گفتار - - - - (not available in portable version) - (در نسخه قابل حمل در دست‌رس نیست) - - - - - - Choose a directory - یک شاخه برگزینید - - - - - - - - - Confirm removal - تایید حذف کردن - - - - - Remove directory <b>%1</b> from the list? - شاخه <b>%1</b> را از لیست حذف کند؟ - - - - - - Remove site <b>%1</b> from the list? - پایگاه <b>%1</b> را از لیست حذف کند؟ - - - - Remove program <b>%1</b> from the list? - برنامه <b>%1</b> را از لیست حذف کند؟ - - - - StylesComboBox - - - None - هیچ کدام - - - - TextToSpeechSource - - - Selected voice engines: - موتورهای گفتار برگزیده: - - - - &Add - &افزودن - - - - &Remove - &حذف - - - - Preferences - ترجیحات - - - - Volume: - حجم: - - - - Rate: - نرخ: - - - - Preview - پیش‌نمایش - - - - Available voice engines: - موتورهای گفتار موجود: - - - - Text to be previewed: - متن پیش‌نمایش: - - - - Type text to be previewed here. - متن را تایپ کنید تا این‌جا پیش‌نمایش شود. - - - - &Preview - &پیش‌نمایش - - - - No TTS voice available - گفتار TTS در دست‌رس نیست - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - نمی‌تواند گفتار TTS در دست‌رسی بیابد. <br> مطمئن شوید که دست‌کم یک موتور TTS روی رایانه شما نصب شده است. - - - - Confirm removal - تایید حذف - - - - Remove voice engine <b>%1</b> from the list? - حذف موتور گفتار <b>%1</b> از لیست؟ - - - - TranslateBox - - - Type a word or phrase to search dictionaries - یک واژه یا عبارت برای جست‌وجو در واژه‌نامه‌ها تایپ کنید - - - - Drop-down - پایین رفتن - - - - VoiceEnginesModel - - - Enabled - به‌کار افتاده - - - - Name - نام - - - - Id - شناسه - - - - Icon - نشانه - - - - WebSitesModel - - - Enabled - به‌کار افتاده - - - - Name - نام - - - - Address - آدرس - - - - Icon - نشانه - - - - WordFinder - - - Failed to query some dictionaries. - پرس و جوی برخی واژه‌نامه‌ها شکست خورد. - - - - WordList - - - WARNING: %1 - هشدار: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/fr_FR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/fr_FR.ts deleted file mode 100644 index 431237892c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/fr_FR.ts +++ /dev/null @@ -1,4889 +0,0 @@ - - - - - About - - - About - À propos - - - - GoldenDict dictionary lookup program, version - Logiciel de recherche de dictionnaires GoldenDict, version - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - (c) 2008-2012 Konstantin Isakov (ikm@goldendict.org) - © 2008-2012 Konstantin Isakov (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - Sous licence GPLv3 ou ultérieure - - - - Credits: - Crédits : - - - - [Unknown] - [Inconnu] - - - - Based on Qt %1 (%2, %3 bit) - Basé sur Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Aucune traduction pour <b>%1</b> n'a été trouvée dans le groupe <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Aucune traduction trouvée dans le groupe <b>%1</b>. - - - - Welcome! - Bienvenue ! - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2012 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Bienvenue dans <b>GoldenDict</b> !</h3><p>Pour commencer à utiliser le logiciel, visitez d'abord <b>Édition|Dictionnaires</b> pour ajouter des emplacements où trouver les fichiers de dictionnaires, configurer divers sites Wikipédia ou d'autres sources, ajuster l'ordre des dictionnaires ou créer des groupes de dictionnaires.<p>Vous êtes paré pour lancer de nouvelles recherches ! Vous pouvez faire cela en utilisant le panneau à gauche de cette fenêtre, ou vous pouvez <a href="Working with popup">chercher les mots d'autres applications actives</a>. <p>Pour personnaliser le logiciel, vérifiez les options disponibles dans <b>Édition|Préférences</b>. Tous les paramètres y disposent d'une aide, lisez-les bien en cas de doute !<p>Si vous avez besoin d'aide, avez des questions, des suggestions ou désirez vous enquérir de l'avis d'autrui, vous serez les bienvenus sur le's <a href="http://goldendict.org/forum/">forum</a>.<p>Visitez le 's <a href="http://goldendict.org/">site</a> du logiciel pour les mises à jour. <p>(c) 2008-2012 Konstantin Isakov. Sous licence GPLv3 ou plus récente. - - - - Expand article - Agrandir l'article - - - - Collapse article - Diminuer l'article - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Bienvenue dans <b>GoldenDict</b> !</h3> -<p>Pour commencer à utiliser GoldenDict, visitez d'abord <b>Édition|Dictionnaires</b> pour ajouter des emplacements où trouver les fichiers de dictionnaires, configurer des sites Wikipédia ou d'autres sources, ajuster l'ordre des dictionnaires ou créer des groupes de dictionnaires.<p>Vous êtes paré pour lancer de nouvelles recherches ! Vous pouvez faire cela en utilisant le panneau à gauche de cette fenêtre, ou vous pouvez <a href="Working with popup">chercher les mots à partir d'autres applications actives</a>. -<p>Pour personnaliser GoldenDict, vérifiez les options disponibles dans <b>Édition|Préférences</b>. Tous les paramètres y disposent d'une aide, lisez-la bien en cas de doute ! -<p>Si vous avez besoin d'aide, avez des questions ou des suggestions, vous serez les bienvenus sur le <a href="http://goldendict.org/forum/">forum</a>. -<p>Consultez le <a href="http://goldendict.org/">site</a> du logiciel pour les mises à jour. -<p>(c) 2008-2013 Konstantin Isakov. Sous licence GPLv3 ou ultérieure. - - - - Working with popup - Utilisation avec pop-up - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Utilisation avec fenêtre de scan</h3>Pour rechercher des mots à partir d'autres applications actives, vous devez d'abord activer la fonctionnalité <i>"Fonction de scan avec fenêtre pop-up"</i> dans les <b>Préférences</b>, et ensuite l'activer à tout moment en cliquant sur l'icône 'Fenêtre de scan', ou par clic droit sur l'icône de la barre des tâches, puis sélection de la fonctionnalité dans le menu déroulant. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Ensuite, positionnez le curseur au-dessus du mot que vous souhaitez rechercher dans l'application, et une fenêtre le décrivant apparaîtra. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Ensuite, sélectionnez avec la souris (ou double-cliquez) le mot que vous souhaitez rechercher dans l'application, et une fenêtre le décrivant apparaîtra. - - - - (untitled) - (sans titre) - - - - (picture) - (image) - - - - ArticleRequest - - - Expand article - Agrandir l'article - - - - From - De - - - - Collapse article - Diminuer l'article - - - - Query error: %1 - Erreur dans la requête : %1 - - - - Close words: - Mots se rapprochant : - - - - Compound expressions: - Expressions composées : - - - - Individual words: - Mots seuls : - - - - ArticleView - - - Form - Formulaire - - - - about:blank - about:blank - - - - x - x - - - - Find: - Trouver : - - - - - &Previous - &Précédent - - - - - &Next - &Suivant - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - Sensible à la &casse - - - - Highlight &all - &Tout surligner - - - - Select Current Article - Sélectionner l'article courant - - - - Copy as text - Copier le texte - - - - Inspect - Inspecter - - - - Resource - Ressource - - - - Audio - Audio - - - - TTS Voice - Synthèse vocale TTS - - - - Picture - Image - - - - Video - Vidéo - - - - Video: %1 - Vidéo : %1 - - - - Definition from dictionary "%1": %2 - Définition à partir du dictionnaire "%1" : %2 - - - - Definition: %1 - Définition : %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - La ressource référencée n'existe pas. - - - - The referenced audio program doesn't exist. - Le programme référencé n'existe pas. - - - - - ERROR: %1 - ERREUR : %1 - - - - Save sound - Enregistrer le fichier audio - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Fichiers audio (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - - - - Save image - Enregistrer l'image - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Fichiers image (*.bmp *.jpg *.png *.tif);;Tous les fichiers (*.*) - - - Resource saving error: - Erreur lors de l'enregistrement de la ressource : - - - - &Open Link - &Ouvrir un lien - - - - Open Link in New &Tab - Ouvrir un lien dans un nouvel on&glet - - - - Open Link in &External Browser - Ouvrir un lien dans un navigateur &externe - - - - Save &image... - Enregistrer l'&image... - - - - Save s&ound... - Enregistrer le fichier audi&o... - - - - &Look up "%1" - Re&chercher "%1" - - - - Look up "%1" in &New Tab - Rechercher "%1" dans un &nouvel onglet - - - - Send "%1" to input line - Envoyer "%1" dans la zone de saisie - - - - - &Add "%1" to history - &Ajouter "%1" à l'historique - - - - Look up "%1" in %2 - Rechercher "%1" dans %2 - - - - Look up "%1" in %2 in &New Tab - Rechercher "%1" dans "%2" dans un &nouvel onglet - - - - WARNING: FFmpeg Audio Player: %1 - ATTENTION : lecteur audio FFmpeg : %1 - - - Playing a non-WAV file - Lecture d'un fichier non-WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Pour activer la lecture de fichiers de type autre que WAV, allez dans Édition|Préférences, choisissez l'onglet Audio et sélectionnez "Lire avec DirectShow". - - - - WARNING: %1 - ATTENTION : %1 - - - Bass library not found. - Bibliothèque Bass non trouvée. - - - Bass library can't play this sound. - La bibliothèque Bass ne peut lire ce son. - - - - Failed to run a player to play sound file: %1 - Échec de lancement d'un lecteur pour lire le fichier audio %1 - - - - Failed to create temporary file. - Échec de création d'un fichier temporaire. - - - - Failed to auto-open resource file, try opening manually: %1. - Échec lors de l'ouverture automatique du fichier de ressources, essayez d'ouvrir manuellement : %1. - - - - The referenced resource failed to download. - La ressource référencée n'a pas pu être téléchargée. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Translittération biélorusse du latin au cyrillique (orthographe classique) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Translittération biélorusse du latin au cyrillique (orthographe scolaire) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Translittération biélorusse du latin au cyrillique (atténue la différence entre les orthographes classique et scolaire en cyrillique) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - Authentification requise pour le proxy - - - - You need to supply a Username and a Password to access via proxy - Un nom d'utilisateur et un mot de passe sont requis pour utiliser un proxy - - - - Username: - Utilisateur : - - - - Password: - Mot de passe : - - - - DictGroupWidget - - - Form - Formulaire - - - - Group icon: - Icône de groupe : - - - - Shortcut: - Raccourci : - - - - None - Aucun - - - - From file... - À partir d'un fichier... - - - - Choose a file to use as group icon - Choisir un fichier à utiliser comme icône de groupe - - - - Images - Images - - - - All files - Tous les fichiers - - - - Error - Erreur - - - - Can't read the specified image file. - Impossible de lire le fichier d'image spécifié. - - - - DictGroupsWidget - - - - - - Dictionaries: - Dictionnaires : - - - - Confirmation - Confirmation - - - - Are you sure you want to generate a set of groups based on language pairs? - Êtes-vous sûr de vouloir générer un ensemble de groupes basés sur des paires de langues ? - - - - Unassigned - Non assigné - - - - Combine groups by source language to "%1->" - Combiner les groupes selon la langue source pour "%1->" - - - - Combine groups by target language to "->%1" - Combiner les groupes selon la langue cible pour "%1->" - - - - Make two-side translate group "%1-%2-%1" - Faire des groupes de traduction dans les deux sens "%1-%2-%1" - - - - - Combine groups with "%1" - Combiner les groupes avec "%1" - - - - DictHeadwords - - - Search mode - Mode de recherche - - - - This element determines how filter string will be interpreted - Détermine la façon dont le filtre sera interprété - - - - If checked on the symbols case will be take in account when filtering - La casse des caractères sera considérée lors du filtrage - - - - Match case - Respecter la casse - - - - Exports headwords to file - Enregistre les vedettes dans un fichier - - - - Export - Exporter - - - - Help - Aide - - - - OK - Appliquer - - - - Press this button to apply filter to headwords list - Applique le filtre à la liste de vedettes - - - - Apply - Appliquer - - - - If checked any filter changes will we immediately applied to headwords list - Tous les changements de filtre seront automatiquement appliqués à la liste de vedettes - - - - Auto apply - Appliquer automatiquement - - - - Filter: - Filtre : - - - - Filter string (fixed string, wildcards or regular expression) - Filtre (chaîne de caractères, opérateurs de cardinalité ou expression régulière) - - - - Text - Texte - - - - Wildcards - Opérateurs de cardinalité - - - - RegExp - Expression régulière - - - - Unique headwords total: %1, filtered: %2 - Total de vedettes uniques : %1, %2 filtrées - - - - Save headwords to file - Enregistrer les vedettes dans un fichier - - - - Text files (*.txt);;All files (*.*) - Fichiers texte (*.txt);;Tous les fichiers (*.*) - - - - Export headwords... - Exporter les vedettes ... - - - - Cancel - Annuler - - - - DictInfo - - - Total articles: - Articles : - - - - Translates from: - Traduit de : - - - - Total words: - Mots : - - - - Translates to: - Traduit vers : - - - - Open folder - Ouvrir le dossier - - - - Edit dictionary - Éditer le dictionnaire - - - - Files comprising this dictionary: - Fichiers incluant ce dictionnaire : - - - - Description: - Description : - - - - Show all unique dictionary headwords - Montrer toutes les vedettes uniques du dictionnaire - - - - Headwords - Vedettes - - - - Edit the dictionary via command: -%1 - Éditer le dictionnaire avec la commande : -%1 - - - - DictListModel - - - %1 entries - %1 entrées - - - - DictServer - - - Url: - Adresse : - - - - Databases: - Bases de données : - - - - Search strategies: - Stratégies de recherche : - - - - Server databases - Bases de données serveur - - - - DictServersModel - - - Enabled - Activé - - - - Name - Nom - - - - Address - Adresse - - - - Databases - Bases de données - - - - Strategies - Stratégies - - - - Icon - Icône - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - Liste de bases de données, séparées par des virgules -(une chaîne vide ou "*" sélectionne toutes les bases) - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - Liste de stratégies, séparées par des virgules -(une chaîne vide impliquera une stratégie par "préfixe") - - - - DictionaryBar - - Dictionary Bar - Barre de dictionnaire - - - - &Dictionary Bar - Barre de &dictionnaire - - - - Extended menu with all dictionaries... - Menu étendu avec tous les dictionnaires... - - - - Edit this group - Éditer ce groupe - - - - Dictionary info - Informations sur le dictionnaire - - - - Dictionary headwords - Vedettes du dictionnaire - - - - Open dictionary folder - Ouvrir le dossier des dictionnaires - - - - Edit dictionary - Éditer le dictionnaire - - - - EditDictionaries - - - Dictionaries - Dictionnaires - - - - &Sources - &Sources - - - - - &Dictionaries - &Dictionnaires - - - - - &Groups - &Groupes - - - - Sources changed - Sources modifiées - - - - Some sources were changed. Would you like to accept the changes? - Certaines sources ont été modifiées. Acceptez-vous ces changements ? - - - - Accept - Accepter - - - - Cancel - Annuler - - - - ExternalViewer - - - the viewer program name is empty - le nom du programme n'est pas renseigné - - - - FTS::FtsIndexing - - None - Aucun - - - - FTS::FullTextSearchDialog - - - Full-text search - Recherche en texte intégral - - - - Whole words - Mots entiers - - - - Plain text - Texte intégral - - - - Wildcards - Opérateurs de cardinalité - - - - RegExp - Expression régulière - - - - Max distance between words (%1-%2): - Distance max entre les mots (%1-%2) : - - - - Max articles per dictionary (%1-%2): - Articles max par dictionnaire (%1-%2) : - - - - - - Articles found: - Articles trouvés : - - - - Now indexing: - En cours d'indexation : - - - - None - Aucun - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - Les symboles CJK dans la chaîne de recherche ne sont pas compatibles avec les modes "Mots entiers" et "Texte intégral" - - - - The search line must contains at least one word containing - the source sentence is a bit weird... - La ligne de recherche doit contenir au moins un mot de - - - - or more symbols - symboles ou plus - - - - No dictionaries for full-text search - Pas de dictionnaires pour la recherche en texte intégral - - - - FTS::Indexing - - None - Aucun - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Erreur de lecture XML : %1 à la position %2,%3 - - - - Added %1 - Ajouté %1 - - - - by - par - - - - Male - Homme - - - - Female - Femme - - - - from - de - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Allez dans Édition|Dictionnaires|Sources|Forvo puis faites une requête pour obtenir votre clé API afin de faire disparâitre ce message d'erreur. - - - - FullTextSearchDialog - - - - Search - Recherche - - - - Match case - Respecter la casse - - - - Mode: - Mode : - - - - Articles found: - Articles trouvés : - - - - Available dictionaries in group: - Dictionnaires disponibles dans le groupe : - - - - Wait for indexing: - Indexation en cours : - - - - Total: - Total : - - - - Indexed: - Indexés : - - - - Now indexing: None - En cours d'indexation : Aucun - - - - Cancel - Annuler - - - - Help - Aide - - - - GermanTranslit - - - German Transliteration - Translitération allemande - - - - GreekTranslit - - - Greek Transliteration - Translitération grecque - - - - GroupComboBox - - - Choose a Group (Alt+G) - Choisissez un groupe (Alt+G) - - - - GroupSelectorWidget - - - Form - Formulaire - - - - Look in - Chercher dans - - - - Groups - - - Dictionaries available: - Dictionnaires disponibles : - - - - Add selected dictionaries to group (Ins) - Ajouter les dictionnaires sélectionnés au groupe (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Retirer les dictionnaires sélectionnés du groupe (Suppr) - - - - < - < - - - - Del - Suppr - - - - Groups: - Groupes : - - - - Tab 2 - Onglet 2 - - - - Create new dictionary group - Créer un nouveau groupe de dictionnaires - - - - &Add group - &Ajouter groupe - - - - Create language-based groups - Créer des groupes selon la langue - - - - Auto groups - Groupes automatiques - - - - Rename current dictionary group - Renommer le groupe de dictionnaires courant - - - - Re&name group - Re&nommerle groupe - - - - Remove current dictionary group - Retirer le groupe de dictionnaires courant - - - - &Remove group - &Retirer le groupe - - - - Remove all dictionary groups - Retirer tous les groupes de dictionnaires - - - - - Remove all groups - Retirer tous les groupes - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - "&" is not an accelerator here, should be replaced by &amp; in the source file - Glissez-déposez les dictionnaires entre les groupes, déplacez-les à l'intérieur des groupes, réorganisez les groupes en utilisant votre souris. - - - - Group tabs - Grouper les onglets - - - - Open groups list - Ouvrir la liste de groupes - - - - Add group - Ajouter groupe - - - - Give a name for the new group: - Nommer le nouveau groupe : - - - - Rename group - Renommer le groupe - - - - Give a new name for the group: - Renommer le groupe : - - - - Remove group - Retirer le groupe - - - - Are you sure you want to remove the group <b>%1</b>? - Êtes-vous sûr de vouloir enlever le groupe <b>%1</b> ? - - - - Are you sure you want to remove all the groups? - Êtes-vous sûr de vouloir enlever tous les groupes ? - - - - Help::HelpWindow - - - GoldenDict help - Aide de GoldenDict - - - - Home - Accueil - - - - Back - Précédent - - - - Forward - Suivant - - - - Zoom In - Zoomer - - - - Zoom Out - Dézoomer - - - - Normal Size - Taille normale - - - - Content - Contenu - - - - Index - Index - - - - HistoryPaneWidget - - - &Delete Selected - &Supprimer les éléments sélectionnés - - - - Copy Selected - Copier les éléments sélectionnés - - - - History: - Historique : - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Taille de l'historique : %1 entrées sur un maximum de %2 - - - - Hunspell - - - Spelling suggestions: - Orthographes suggérées : - - - - %1 Morphology - %1 Morphologie - - - - HunspellDictsModel - - - Enabled - Activé - - - - Name - Nom - - - - Initializing - - - GoldenDict - Initializing - GoldenDict - Initialisation - - - - - Please wait while indexing dictionary - Veuillez patienter pendant l'indexation du dictionnaire - - - - Dictionary Name - Nom du dictionnaire - - - - Please wait... - Veuillez patienter... - - - - Language - - - Afar - Afar - - - - Abkhazian - Abkhaze - - - - Avestan - Avestique - - - - Afrikaans - Afrikaans - - - - Akan - Akan - - - - Amharic - Amharique - - - - Aragonese - Aragonais - - - - Arabic - Arabe - - - - Assamese - Assamais - - - - Avaric - Avarin - - - - Aymara - Aymara - - - - Azerbaijani - Azéri - - - - Bashkir - Bachkir - - - - Belarusian - Biélorusse - - - - Bulgarian - Bulgare - - - - Bihari - Bihari - - - - Bislama - Bichelamar - - - - Bambara - Bambara - - - - Bengali - Bengali - - - - Tibetan - Tibétain - - - - Breton - Breton - - - - Bosnian - Bosniaque - - - - Catalan - Catalan - - - - Chechen - Tchétchène - - - - Chamorro - Chamorro - - - - Corsican - Corse - - - - Cree - Cri - - - - Czech - Tchèque - - - - Church Slavic - Liturgique slave - - - - Chuvash - Tchouvache - - - - Welsh - Gallois - - - - Danish - Danois - - - - German - Allemand - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Grec - - - - English - Anglais - - - - Esperanto - Esperanto - - - - Spanish - Espagnol - - - - Estonian - Estonien - - - - Basque - Basque - - - - Persian - Perse - - - - Fulah - Peul - - - - Finnish - Finnois - - - - Fijian - Fidjien - - - - Faroese - Féroïen - - - - French - Français - - - - Western Frisian - Frison occidental - - - - Irish - Irlandais - - - - Scottish Gaelic - Gaélique écossais - - - - Galician - Galicien - - - - Guarani - Guarani - - - - Gujarati - Gujarati - - - - Manx - Mannois - - - - Hausa - Haoussa - - - - Hebrew - Hébreu - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Croate - - - - Haitian - Haïtien - - - - Hungarian - Hongrois - - - - Armenian - Arménien - - - - Herero - Héréro - - - - Interlingua - Interlingua - - - - Indonesian - Indonésien - - - - Interlingue - Interlingue - - - - Igbo - Igbo - - - - Sichuan Yi - Nuosu (Yi) - - - - Inupiaq - Inupiak - - - - Ido - Ido - - - - Icelandic - Islandais - - - - Italian - Italien - - - - Inuktitut - Inuktitut - - - - Japanese - Japonais - - - - Javanese - Javanais - - - - Georgian - Géorgien - - - - Kongo - Kikongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kwanyama - - - - Kazakh - Kazakh - - - - Kalaallisut - Groenlandais - - - - Khmer - khmer - - - - Kannada - Kannada - - - - Korean - Coréen - - - - Kanuri - Kanuri - - - - Kashmiri - Cachemiri - - - - Kurdish - Kurde - - - - Komi - Komi - - - - Cornish - Cornique - - - - Kirghiz - Kirghize - - - - Latin - Latin - - - - Luxembourgish - Luxembourgeois - - - - Ganda - Luganda - - - - Limburgish - Limbourgeois - - - - Lingala - Lingala - - - - Lao - Lao - - - - Lithuanian - Lituanien - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Letton - - - - Malagasy - Malgache - - - - Marshallese - Marshallais - - - - Maori - Māori (Nouvelle-Zélande) - - - - Macedonian - Macédonien - - - - Malayalam - Malayalam - - - - Mongolian - Mongol - - - - Marathi - Marathi - - - - Malay - Malais - - - - Maltese - Maltais - - - - Burmese - Birman - - - - Nauru - Nauruan - - - - Norwegian Bokmal - Norvégien (bokmål) - - - - North Ndebele - Ndébélé (nord) - - - - Nepali - Népalais - - - - Ndonga - Ndonga - - - - Dutch - Néerlandais - - - - Norwegian Nynorsk - Norvégien (nynorsk) - - - - Norwegian - Norvégien - - - - South Ndebele - Ndébélé (sud) - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitan - - - - Ojibwa - Ojibwé - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Ossète - - - - Panjabi - Panjābī - - - - Pali - Pāli - - - - Polish - Polonais - - - - Pashto - Pachto - - - - Portuguese - Portugais - - - - Quechua - Quechua - - - - Raeto-Romance - Romanche - - - - Kirundi - Kirundi - - - - Romanian - Roumain - - - - Russian - Russe - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sanscrit - - - - Sardinian - Sarde - - - - Sindhi - Sindhî - - - - Northern Sami - Sami (Nord) - - - - Sango - Sango - - - - Serbo-Croatian - Serbo-Croate - - - - Sinhala - Cingalais - - - - Slovak - Slovaque - - - - Slovenian - Slovénien - - - - Samoan - - - - - Shona - Shona - - - - Somali - Somalien - - - - Albanian - Albanien - - - - Serbian - Serbe - - - - Swati - Swati - - - - Southern Sotho - Sotho du Sud - - - - Sundanese - Soundanais - - - - Swedish - Suédois - - - - Swahili - Swahili - - - - Tamil - Tamoul - - - - Telugu - Télougou - - - - Tajik - Tadjik - - - - Thai - Thaï - - - - Tigrinya - Tigrigna - - - - Turkmen - Turkmène - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonguien - - - - Turkish - Turc - - - - Tsonga - Tsonga - - - - Tatar - Tatar - - - - Twi - Twi (Akan) - - - - Tahitian - Tahitien - - - - Uighur - Ouïghour - - - - Ukrainian - Ukrainien - - - - Urdu - Ourdou - - - - Uzbek - Ouzbek - - - - Venda - Venda - - - - Vietnamese - Vietnamien - - - - Volapuk - Volapük - - - - Walloon - Wallon - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Yiddish - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Chinois - - - - Zulu - Zoulou - - - - Lojban - Lojban - - - - Traditional Chinese - Chinois traditionel - - - - Simplified Chinese - Chinois simplifié - - - - Other - Autre - - - - Other Simplified Chinese dialects - Autres dialectes chinois simplifiés - - - - Other Traditional Chinese dialects - Autres dialectes chinois traditionels - - - - Other Eastern-European languages - Autres langues d'Europe de l'Est - - - - Other Western-European languages - Autres langues d'Europe de l'Ouest - - - - Other Russian languages - Autres langues russes - - - - Other Japanese languages - Autres langues japonaises - - - - Other Baltic languages - Autres langues baltiques - - - - Other Greek languages - Autres langues grecques - - - - Other Korean dialects - Autres dialectes coréens - - - - Other Turkish dialects - Autres dialectes turcs - - - - Other Thai dialects - Autres ldialectes thaï - - - - Tamazight - Tamazight (Berbère) - - - - LoadDictionaries - - - Error loading dictionaries - Erreur lors du chargement des dictionnaires - - - - Main - - - Error in configuration file. Continue with default settings? - Erreur dans le fichier de configuration. Continuer avec les paramètres par défaut ? - - - - MainWindow - - GoldenDict - GoldenDict - - - - - Welcome! - Bienvenue ! - - - - &File - &Fichier - - - - &Edit - Éditio&n - - - - &Help - &Aide - - - - &View - &Vue - - - - &Zoom - &Zoom - - - - H&istory - &Historique - - - Search Pane - Recherche - - - Results Navigation Pane - Résultats - - - - &Search Pane - Re&chercher - - - - &Results Navigation Pane - &Résultats de la recherche - - - &Dictionaries... F3 - &Dictionnaires... F3 - - - - Search - Recherche - - - - &History Pane - &Historique - - - - &Dictionaries... - &Dictionnaires... - - - - F3 - F3 - - - - &Preferences... - &Préférences... - - - - F4 - f4 - - - - &Homepage - &Accueil - - - - &About - &À propos - - - - About GoldenDict - À propos de GoldenDict - - - - GoldenDict reference - Référence de GoldenDict - - - - F1 - F1 - - - - - &Quit - &Quitter - - - - Quit from application - Quitter à partir de l'application - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forum - - - - &Close To Tray - &Fermer - - - - Minimizes the window to tray - Réduit la fenêtre dans la barre des tâches - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Sauver l'article - - - - Save Article - Sauver l'article - - - - F2 - F2 - - - - &Print - Im&primer - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Paramètres d'&impression - - - - Print Pre&view - &Aperçu avant impression - - - - &Rescan Files - &Rescanner les fichiers - - - - &New Tab - &Nouvel onglet - - - - &Always on Top - Toujours au-&dessus - - - - Always on Top - Toujours au-dessus - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Bouton du menu - - - - Search in page - Rechercher dans la page - - - - Ctrl+F - Ctrl+F - - - - Full-text search - Recherche en texte intégral - - - - Ctrl+Shift+F - Ctrl+Shift+F - - - Print Preview - Aperçu avant impression - - - Rescan Files - Rescanner les fichiers - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - E&ffacer - - - - New Tab - Nouvel onglet - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Dossier de &configuration - - - - - &Show - Affi&cher - - - - Ctrl+H - Ctrl+H - - - - &Export - &Exporter - - - - &Import - &Importer - - - Show Names in Dictionary Bar - Afficher les noms dans la barre du dictionnaire - - - Show Small Icons in Toolbars - Afficher des petites icônes dans les barres d'outils - - - - &Menubar - Barre du &menu - - - Navigation - Navigation - - - - Show Names in Dictionary &Bar - Afficher les noms dans la &barre de dictionnaire - - - - Show Small Icons in &Toolbars - Afficher de petites icônes dans les barres d'ou&tils - - - - &Navigation - &Navigation - - - - Back - Précédent - - - - Forward - Suivant - - - - Scan Popup - Fenêtre de scan - - - - Pronounce Word (Alt+S) - Prononcer le mot (Alt+S) - - - - Zoom In - Zoomer - - - - Zoom Out - Dézoomer - - - - Normal Size - Taille normale - - - - - Look up in: - Chercher dans : - - - - Found in Dictionaries: - Trouvé dans les dictionnaires : - - - - Words Zoom In - Zoomer - - - - Words Zoom Out - Dézoomer - - - - Words Normal Size - Taille normale - - - - Show &Main Window - Afficher la fenêtre &principale - - - - Opened tabs - Onglets ouverts - - - - Close current tab - Fermer l'onglet courant - - - - Close all tabs - Fermer tous les onglets - - - - Close all tabs except current - Fermer tous les onglets sauf l'onglet courant - - - - Loading... - Chargement... - - - - %1 dictionaries, %2 articles, %3 words - %1 dictionnaires, %2 articles, %3 mots - - - - Look up: - Chercher : - - - - All - Tout - - - - Open Tabs List - Liste des onglets ouverts - - - - (untitled) - (sans titre) - - - - %1 - %2 - %1 - %2 - - - - Now indexing for full-text search: - - - - WARNING: %1 - ATTENTION : %1 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Échec lors de l'initialisation du mécanisme d'écoute des raccourcis.<br>Vérifiez que l'extension ENREGISTREMENT du serveur X est activée. - - - - New Release Available - Nouvelle version disponible - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - La version <b>%1</b> de GoldenDict est disponible au téléchargement.<br>Cliquez sur <b>Télécharger</b> pour accéder à la page de téléchargement. - - - - Download - Téléchargement - - - - Skip This Release - Ignorer la version - - - - - Accessibility API is not enabled - L'API d'accessibilité n'est pas activée - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - Chaîne à rechercher dans les dictionnaires. Les opérateurs de cardinalité '*', '?' et les groupes de symboles '[...]' sont autorisés. -Pour rechercher les symboles '*', '?', '[', ']', utiliser respectivement '\*', '\?', '\[', '\]' - - - - You have chosen to hide a menubar. Use %1 to show it back. - Vous avez choisi de masquer une barre de menus. Utilisez %1 pour l'afficher à nouveau. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Paramètres d'impression - - - - No printer is available. Please install one first. - Aucune imprimante n'est disponible. Veuillez en installer une afin de continuer. - - - - Print Article - Imprimer l'article - - - - Article, Complete (*.html) - Article, Complet (*.html) - - - - Article, HTML Only (*.html) - Article, HTML uniquement (*.html) - - - - Save Article As - Enregister l'article sous - - - Html files (*.html *.htm) - Fichiers HTML (*.html *.htm) - - - - Error - Erreur - - - - Can't save article: %1 - Impossible d'enregistrer l'article : %1 - - - - Saving article... - Sauvegarde de l'article... - - - - The main window is set to be always on top. - La fenêtre pricipale est configurée pour être toujours au premier plan. - - - - &Hide - &Masquer - - - History view mode - Mode d'affichage de l'historique - - - - Export history to file - Exporter l'historique dans un fichier - - - - - Text files (*.txt);;All files (*.*) - Fichiers texte (*.txt);;Tous les fichiers (*.*) - - - - History export complete - Export de l'historique terminé - - - - Export error: - Erreur d'export : - - - - Import history from file - Importer l'historique à partir d'un fichier - - - Imported from file: - Importé à partir du fichier : - - - - Import error: invalid data in file - Erreur d'import : données invalides dans le fichier - - - - History import complete - Import d'historique terminé - - - - Import error: - Erreur d'import : - - - - Dictionary info - Informations sur le dictionnaire - - - - Dictionary headwords - Vedettes du dictionnaire - - - - Open dictionary folder - Ouvrir le dossier des dictionnaires - - - - Edit dictionary - Éditer le dictionnaire - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Le fichier de dictionnaire a été modifié ou corrompu - - - - Failed loading article from %1, reason: %2 - Échec du chargement de l'article à partir de %1, cause : %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Erreur de lecture XML : %1 à la position %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Erreur de lecture XML : %1 à la position %2,%3 - - - - MediaWikisModel - - - Enabled - Activé - - - - Name - Nom - - - - Address - Adresse - - - - Icon - Icône - - - - OrderAndProps - - - Form - Formulaire - - - - Dictionary order: - Ordre des dictionnaires : - - - ... - ... - - - - Inactive (disabled) dictionaries: - Dictionnaires inactifs : - - - - Dictionary information - Informations sur le dictionnaire - - - - Name: - Nom : - - - - Total articles: - Articles : - - - - Total words: - Mots : - - - - Translates from: - Traduit de : - - - - Translates to: - Traduit vers : - - - - Description: - Description : - - - - Files comprising this dictionary: - Fichiers incluant ce dictionnaire : - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Définissez l'ordre des éléments en les déplaçant (glisser-déposer). Déposez les dictionnaires dans le groupe 'inactif' pour désactiver leur utilisation. - - - - Sort by name - Trier par nom - - - - Sort by languages - Trier par langue - - - - Dictionary headwords - Vedettes du dictionnaire - - - - Dictionaries active: %1, inactive: %2 - Dictionnaires actifs : %1, inactifs : %2 - - - - PathsModel - - - Path - Chemin - - - - Recursive - Récursif - - - - Preferences - - - Preferences - Préférences - - - - &Interface - &Interface - - - - Tabbed browsing - Navigation par onglets - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalement, ouvrir un nouvel onglet bascule vers celui-ci. -Si cette option est activée, les nouveaux onglets seront ouverts -sans basculer vers ceux-ci. - - - - Open new tabs in background - Nouveaux onglets en arrière-plan - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Si cette option est activée, les nouveaux onglets seront -ouverts à côté de l'onglet courant. Sinon, ils seront ajoutés -en fin de liste. - - - - Open new tabs after the current one - Nouveaux onglets après l'onglet courant - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Sélectionnez cette option si vous ne voulez pas voir la barre principale lorsqu'un seul onglet est ouvert. - - - - Hide single tab - Cacher l'onglet - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab parcourt les onglets dans l'ordre des éléments les plus récents - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Lorsque cette option est active, une icône apparaît dans la barre des tâches, pouvant être utilisée -pour ouvrir la fenâtre principale et accomplir d'autres tâches. - - - - Enable system tray icon - Activer l'icône système - - - - With this on, the application starts directly to system tray without showing -its main window. - L'application démarre directement dans la barre des tâches, sans que -la fenêtre principale n'apparaisse. - - - - Start to system tray - Démarrer dans la barre des tâches - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Cacher la fenêtre principale au lieu de fermer l'application. - - - - Close to system tray - Réduire dans la barre des tâches - - - - Turn this option on if you want to select words by single mouse click - Sélection des mots avec un clic unique - - - - Select word by single click - Sélection par clic unique - - - - Startup - Démarrage - - - - Automatically starts GoldenDict after operation system bootup. - Démarrer automatiquement GoldenDict avec l'ordinateur. - - - - Start with system - Lancer au démarrage du système - - - - Interface language: - Langue de l'interface : - - - - Display style: - Style d'affichage : - - - - Double-click translates the word clicked - Double-clic traduit le mot cliqué - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normalement, presser Echap donne le focus à la ligne de traduction. -Avec cette otion activée, Echap cachera la fenêtre principale. - - - - ESC key hides main window - Echap cache la fenêtre principale - - - - Add-on style: - Style d'add-on : - - - - Help language - Langue de l'aide - - - - Adjust this value to avoid huge context menus. - Ajustez cette valeur pour éviter de surcharger les menus contextuels. - - - - Context menu dictionaries limit: - Limite de dictionnaires dans les menus contextuels : - - - - &Scan Popup - Fenêtre de &scan - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Une pop-up de traduction apparaît lorsque : -- la souris survole un mot à l'écran (Windows) ; -- un mot est sélescionné à la souris (Linux). -Lorsque cette option est active, il est possible d'activer/désactiver la fenêtre de scan à partir de la fenêtre principale ou de l'icône de la barre des tâches. - - - - Enable scan popup functionality - Activer le scan par fenêtre pop-up - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Définit si la fonctionnalité de scan par fenêtre pop-up est activée par défaut ou non. -Si cette option est active, GoldenDict démarrera toujours avec la fenêtre de scan activée. - - - - Start with scan popup turned on - Démarrer avec la fenêtre de scan activée - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - La pop-up n'apparâit que si toutes les touches sélectionnées sont enfoncées lorsque la sélection de mot change. - - - - Only show popup when all selected keys are kept pressed: - Ne montrer la pop-up que lorsque les touches sélectionnées sont maintenues enfoncées : - - - - Left Ctrl only - Ctrl gauche uniquement - - - - Left Ctrl - Ctrl gauche - - - - Right Shift only - Maj droite uniquement - - - - Right Shift - Maj droite - - - - Alt key - Touche Alt - - - - Alt - Alt - - - - Ctrl key - Touche Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Alt gauche uniquement - - - - Left Alt - Alt gauche - - - - Shift key - Touche Maj - - - - Shift - Maj - - - - Right Alt only - Alt droite uniquement - - - - Right Alt - Alt droite - - - - Right Ctrl only - Ctrl droite uniquement - - - - Right Ctrl - Ctrl droite - - - - Left Shift only - Maj gauche uniquement - - - - Left Shift - Maj gauche - - - - Windows key or Meta key - Touche Windows ou Meta - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalement, il faut maintenir appuyées les touches sélectionnées pour activer la pop-up -lors de la sélection d'un mot. Si cette option est activée, il est aussi possible de presser les -touches après avoir effectué la sélection. - - - - Keys may also be pressed afterwards, within - Les touches peuvent être pressées dans un délai de - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Pour éviter les faux positifs, les touches sont uniquement -contrôlées après que la sélection a été faite pendant un laps -de temps limité, ici spécifié en secondes. - - - - secs - secondes - - - - Send translated word to main window instead of to show it in popup window - Envoyer la traduction du mot vers la fenêtre principale de GoldenDict au lieu de la montrer dans une pop-up - - - - Send translated word to main window - Envoyer la traduction du mot vers la fenêtre principale - - - - Hotkeys - Raccourcis - - - - Use the following hotkey to show or hide the main window: - Utiliser ce raccourci pour afficher ou cacher la fenêtre principale : - - - - Use the following hotkey to translate a word from clipboard: - Utiliser ce raccourci pour traduire un mot à partir du presse-papiers : - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Les raccourcis sont globaux et utilisables à partir de n'importe quel programme, quel que soit le contexte, tant que GoldenDict est actif en arrière-plan. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note : Il semble que vous utilisez une version de Xorg XServer dont la fonction RECORD est défaillante. Les raccourcis peuvent ne pas fonctionner dans GoldenDict. Cela doit être corrigé dans le serveur. Veuillez vous référer au </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">report de bug</span></a><span style=" color:#ff0000;"> et laissez un commentaire si vous le souhaitez.</span></p></body></html> - - - - &Audio - &Audio - - - - Pronunciation - Prononciation - - - - Auto-pronounce words in main window - Prononciation automatique dans la fenêtre principale - - - - Auto-pronounce words in scan popup - Prononciation automatique dans la fenêtre de scan - - - - Playback - Lecture - - - - Play audio files via FFmpeg(libav) and libao - Lire les fichiers audio via FFmpeg (libav) et libao - - - - Use internal player - Utiliser le lecteur interne - - - - System proxy - Proxy du système - - - - Custom proxy - Proxy personnalisé - - - - Custom settings - Paramètres personnalisés - - - - Full-text search - Recherche en texte intégral - - - - Allow full-text search for: - Autoriser la recherche en texte intégral pour : - - - - Don't search in dictionaries containing more than - typo in source sentence? *containing* more than - Ne pas rechercher dans les dictionnaires contenant plus de - - - - articles (0 - unlimited) - article(s) (0 - pas de limite) - - - - Select this option to automatic collapse big articles - Sélectionnez cette option pour réduire automatiquement les longs articles - - - - Collapse articles more than - Réduire les articles de plus de - - - - Articles longer than this size will be collapsed - Les articles dépassant cette longueur seront réduits - - - - symbols - symboles - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Utiliser l'API de playback WIndows native. Limitée exclusivement aux fichiers WAV, -mais parfaitement fonctionnelle. - - - Play via Windows native API - Lire avec l'API Windows native - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Jouer via le framework Phonon. Peut être quelque peu instable, -mais devrait supporter la plupart des formats de fichier audio. - - - Play via Phonon - Lire avec Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Lire l'audio avec la bibliothèque Bass. Choix optimal. Pour utiliser ce mode, -placez bass.dll (http://www.un4seen.com) dans le dossier d'installation de GoldenDict. - - - Play via Bass library - Lire avec la bibliothèque Bass - - - - Use any external program to play audio files - Utiliser un programme externe pour lire les fichiers audio - - - - Use external program: - Utiliser un programme externe : - - - - &Network - &Réseau - - - - Enable if you wish to use a proxy server -for all program's network requests. - Activez cette option pour utiliser un serveur proxy -pour toutes les requêtes passant par le réseau. - - - - Use proxy server - Utiliser un proxy - - - - Type: - Type : - - - - Host: - Hôte : - - - - Port: - Port : - - - - User: - Utilisateur : - - - - Password: - Mot de passe : - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - GoldenDict bloquera la plupart des publicités en désactivant le contenu -(images, frames) ne provenant pas du site visité. Si vous remarquez -que du contenu est manquant, essayez de désactiver cette option. - - - - Disallow loading content from other sites (hides most advertisements) - Empêcher le chargement de contenu en provenance d'autres sites (cache la plupart des publicités) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Autorise les prononciations en provenance de dictionnaires en ligne -se basant sur Flash ou d'autres greffons web. -Le greffon approprié doit être installé pour que cette option fonctionne. - - - - Enable web plugins - Activer les greffons web - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Certains sites détectent GoldenDict à travers les en-tête HTTP et bloquent les requêtes. -Activer cette option permet de contourner ce problème. - - - - Do not identify GoldenDict in HTTP headers - Ne pas s'identifier en tant que GoldenDict dans les en-têtes HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Le programme vérifiera régulièrement si une nouvelle -version de GoldenDict est disponible, auquel cas l'utilisateur -en sera informé, et invité à se rendre sur la page de -téléchargement. - - - - Check for new program releases periodically - Vérifier régulièrement les mises à jour - - - - Ad&vanced - A&vancé - - - - ScanPopup extra technologies - Fenêtre de scan - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Utiliser la fonction IAccessibleEx pour retrouver le mot sous le curseur. -Cette fonction marche uniquement avec certains programmes la supportant -(par exemple, Internet Explorer 9). -Il n'est pas nécessaire d'activer cette option si vous n'utilisez pas de tels programmes. - - - - Use &IAccessibleEx - Utiliser &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Utiliser l'automatisation IHM pour retrouver le mot sous le curseur. -Cette fonction marche uniquement avec les programmes qui la supportent. - - - - Use &UIAutomation - Utiliser l'a&utomatisation de l'interface - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - wtf is a "special GoldenDict message"? some kind of software illumination? anyway, i lol'd - Utiliser le message spécial GoldenDict pour retrouver le mot sous le curseur. -Ne fonctionne qu'avec les programmes qui le supportent. - - - - Use &GoldenDict message - Utiliser les messages de &GoldenDict - - - - History - Historique - - - - Turn this option on to store history of the translated words - Conserver l'historique des mots traduits - - - - Store &history - Conserver l'&historique - - - - Specify the maximum number of entries to keep in history. - Nombre maximal d'entrées à conserver dans l'historique. - - - - Maximum history size: - Taille maximale de l'historique : - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervalle de sauvegarde de l'historique. Si cette valeur vaut 0, l'historique sera sauvegardé uniquement lors de la sortie du programme. - - - - Save every - Sauver toutes les - - - - minutes - minutes - - - - Articles - Articles - - - - Turn this option on to always expand optional parts of articles - Toujours afficher les parties optionnelles des articles - - - - Expand optional &parts - Afficher les &parties optionnelles - - - - System default - Défaut (système) - - - - - Default - Défaut - - - - Modern - Moderne - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Bleu - - - Play via DirectShow - Jouer via DirectShow - - - - Changing Language - Changement de langue - - - - Restart the program to apply the language change. - Redémarrez le programme pour appliquer le changement de langue. - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Texte - - - - Html - Html - - - - Prefix Match - Préfixe - - - - Unknown - Inconnu - - - - Programs::RunInstance - - - No program name was given. - Aucun nom d'application n'a été renseigné. - - - - The program has crashed. - L'application a planté. - - - - The program has returned exit code %1. - L'application a renvoyé le code de sortie %1. - - - - ProgramsModel - - - Enabled - Activé - - - - Type - Type - - - - Name - Nom - - - - Command Line - Ligne de commande - - - - Icon - Icône - - - - QObject - - - - Article loading error - Erreur de chargement de l'article - - - - - Article decoding error - Erreur de décodage de l'article - - - - avformat_alloc_context() failed. - avformat_alloc_context() a échoué. - - - - av_malloc() failed. - av_malloc() a échoué. - - - - avio_alloc_context() failed. - avio_alloc_context() a échoué. - - - - avformat_open_input() failed: %1. - avformat_open_input a échoué : %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() a échoué : %1. - - - - Could not find audio stream. - Impossible de trouver le flux audio. - - - - Codec [id: %1] not found. - Codec [id : %1] non trouvé. - - - - avcodec_open2() failed: %1. - avcodec_open2() a échoué : %1. - - - - Cannot find usable audio output device. - Impossible de trouver un périphérique audio utilisable. - - - - Unsupported sample format. - Format d'échantillon non supporté. - - - - ao_open_live() failed: - ao_open_live() a échoué : - - - - No driver. - Pas de pilote. - - - - This driver is not a live output device. - Ce pilote ne correspond pas à un périphérique de lecture. - - - - A valid option key has an invalid value. - Une clé d'option valide a une valeur incorrecte. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Impossible d'ouvrir le périphérique : %1, canaux : %2, débit : %3, bits : %4. - - - - Unknown error. - Erreur inconnue. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() a échoué. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Rechercher dans les dictionnaires/filtrer (Ctrl+F) - - - - Quick Search - Recherche rapide - - - - Clear Search - Effacer la recherche - - - - ResourceToSaveHandler - - - - ERROR: %1 - ERREUR : %1 - - - - Resource saving error: - -Erreur lors de l'enregistrement de la ressource : - - - - The referenced resource failed to download. - La ressource référencée n'a pas pu être téléchargée. - - - - Romaji - - - Hepburn Romaji for Hiragana - Rōmaji Hepburn pour l'Hiragana - - - - Hepburn Romaji for Katakana - Rōmaji Hepburn pour le Katakana - - - - RussianTranslit - - - Russian Transliteration - Translitération russe - - - - ScanPopup - - - Dialog - Message - - - word - mot - - - - Back - Précédent - - - - - - - - ... - ... - - - - Forward - Suivant - - - List Matches (Alt+M) - Lister les correspondances (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Prononcer le mot (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Envoyer le mot vers la fenêtre principale (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Affiche ou masque la barre de dictionnaire - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Utiliser pour épingler la fenêtre de manière à ce qu'elle reste à l'écran, puisse être redimensionnée ou gérée par d'autres moyens. - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Chemin - - - - Name - Nom - - - - Icon - Icône - - - - Sources - - - Files - Fichiers - - - - Paths to search for the dictionary files: - Chemins à parcourir pour trouver des fichiers de dictionnaires : - - - - - - - - - &Add... - &Ajouter... - - - - - - - - - &Remove - &Retirer - - - - Re&scan now - &Scanner à nouveau - - - - Sound Dirs - Dossiers audio - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Créer des dictionnaires à partir de fichiers audio en ajoutant les chemins ici : - - - - Morphology - Morphologie - - - - Path to a directory with Hunspell/Myspell dictionaries: - Chemin vers un répertoire contenant des dictionnaires Hunspell/Myspell : - - - - &Change... - &Changer... - - - - Available morphology dictionaries: - Dictionnaires de morphologie disponibles : - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Chaque dictionnaire de morphologie apparaît comme un -dictionnaire auxiliaire distinct fournissant les racines pour les recherches -et les suggestions orthographiques pour les mots mal orthographiés. -Ajoutez les dictionnaires appropriés à la fin des groupes concernés pour les utiliser. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Sites Wikipedia (MediaWiki) : - - - - Websites - Sites web - - - - Any websites. A string %GDWORD% will be replaced with the query word: - N'importe quel site. Une chaîne %GDWORD% sera remplacée par le mot recherché : - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Alternativement, utilisez %GD1251% pour le CP1251, %GDISO1% pour l'ISO 8859-1. - - - - Programs - Programmes - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - N'importe quel programme externe. Une chaîne %GDWORD% sera remplacée par le mot recherché. Le mot sera aussi utilisé dans l'entrée standard. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Prononciations par <a href="http://www.forvo.com/">forvo.com</a>. Le site permet aux utilisateurs d'enregistrer et partager des prononciations de mots. Vous pouvez les écouter à partir de GoldenDict. - - - - Enable pronunciations from Forvo - Activer les prononciations à partir de Forvo - - - - API Key: - Clé API : - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - L'utilisation de Forvo requiert une clé API. Laissez ce champ vide pour utiliser la clé par défaut, qui est susceptible de ne plus être disponible à l'avenir, ou inscrivez-vous sur le site pour obtenir votre propre clé. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Obtenez une nouvelle clé <a href="http://api.forvo.com/key/">ici</a>, ou laissez le champ vide pour utiliser la clé par défaut. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Obtenez votre propre clé <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">ici</span></a>, ou laissez vide pour utiliser la clé par défaut.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Utilisez %GD1251% pour CP1251, %GDISO1%...%GDISO16% pour ISO 8859-1...ISO 8859-16 respectivement, -%GDBIG5% pour Big-5, %GDBIG5HKSCS% pour Big5-HKSCS, %GDGBK% pour GBK et GB18030, %GDSHIFTJIS% pour Shift-JIS. - - - - DICT servers - Serveurs DICT - - - - DICT servers: - Serveurs DICT : - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - N'importe quel programme externe. Une chaîne %GDWORD% sera remplacée par le mot recherché. Si aucune chaîne n'est détectée, le mot sera soumis sur l'entrée standard. - - - - Language codes (comma-separated): - Codes des langues (séparés par des virgules) : - - - - List of language codes you would like to have. Example: "en, ru". - Liste des codes de langues dont vous souhaitez disposer. Par exemple : "fr, en". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - La liste complète des codes de langues est disponible <a href="http://www.forvo.com/languages-codes/">ici</a>. - - - - Transliteration - Tanslitération - - - - Russian transliteration - Translitération russe - - - - Greek transliteration - Translitération grecque - - - - German transliteration - Translitération allemande - - - - Belarusian transliteration - Translitération biélorusse - - - - Enables to use the Latin alphabet to write the Japanese language - Activer l'utilisation de l'alphabet latin pour écrire le japonais - - - - Japanese Romaji - Japonais (Rōmaji) - - - - Systems: - Systèmes : - - - - The most widely used method of transcription of Japanese, -based on English phonology - La méthode la plus largement utilisée pour transcrire le japonais, -basée sur la phonologie anglaise - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Le système le plus répandu, lié au systèmes d'écriture kana. -Standardisé comme ISO 3602 - -Pas encore implémenté dans GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Basé sur le système Nihon-shiki, mais modifié pour le japonais moderne standard. -Standardisé comme ISO 3602 - -Pas encore implémenté dans GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Syllabaires : - - - - Hiragana Japanese syllabary - Syllabaire japonais (Hiragana) - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Syllabaire japonais (Katakana) - - - - Katakana - Katakana - - - - Text to Speech - Synthèse vocale TTS - - - - (not available in portable version) - (non disponible dans la version portable) - - - - - - Choose a directory - Sélectionner un répertoire - - - - - - - - - Confirm removal - Confirmer la suppression - - - - - Remove directory <b>%1</b> from the list? - Retirer le dossier <b>%1</b> de la liste ? - - - - - - Remove site <b>%1</b> from the list? - Retirer le site <b>%1</b> de la liste ? - - - - Remove program <b>%1</b> from the list? - Retirer le programme <b>%1</b> de la liste ? - - - - StylesComboBox - - - None - Aucun - - - - TextToSpeechSource - - - Selected voice engines: - Moteurs de synthèse vocale sélectionnés : - - - - &Add - &Ajouter - - - - &Remove - &Supprimer - - - - Preferences - Préférences - - - - Volume: - Volume : - - - - Rate: - Vitesse : - - - - Preview - Aperçu - - - - Available voice engines: - Moteurs disponibles : - - - - Text to be previewed: - Texte de l'aperçu : - - - - Type text to be previewed here. - Saisissez le texte à synthétiser ici. - - - - &Preview - A&perçu - - - - No TTS voice available - Aucune voix de synthèse disponible - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Synthèse vocale non disponible.<br>Vérifiez qu'au moins un logiciel de synthèse vocale est installé sur votre ordinateur. - - - - Confirm removal - Confirmer la suppression - - - - Remove voice engine <b>%1</b> from the list? - Retirer le moteur <b>%1</b> de la liste ? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Saisissez un mot ou une phrase pour chercher dans les dictionnaires - - - - Drop-down - Descendre - - - - VoiceEnginesModel - - - Enabled - Activé - - - - Name - Nom - - - - Id - ID - - - - Icon - Icône - - - - WebSitesModel - - - Enabled - Activé - - - - Name - Nom - - - - Address - Adresse - - - - Icon - Icône - - - - WordFinder - - - Failed to query some dictionaries. - Échec d'interrogation de certains dictionnaires. - - - - WordList - - - WARNING: %1 - ATTENTION : %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/it_IT.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/it_IT.ts deleted file mode 100644 index 35c7a64d5f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/it_IT.ts +++ /dev/null @@ -1,4881 +0,0 @@ - - - - - About - - - About - Info - - - - GoldenDict dictionary lookup program, version - GoldenDict, dizionario elettronico, versione - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Riconoscimenti: - - - - Licensed under GNU GPLv3 or later - Licenza GNU GPLv3 o successiva - - - - [Unknown] - [Sconosciuto] - - - - Based on Qt %1 (%2, %3 bit) - Basato su Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Espandi traduzione - - - - Collapse article - Compatta traduzione - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Per <b>%1</b> non è stata trovata alcuna traduzione nel gruppo <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Non è stata trovata alcuna traduzione nel gruppo <b>%1</b>. - - - - Welcome! - Benvenuto! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Benvenuto in <b>GoldenDict</b>!</h3><p>Prima di iniziare ad usare il programma, apri il menu <b><i>Modifica|Dizionari</b></i> in modo da inserire il percorso della cartella che contiene i dizionari, impostare gli indirizzi di Wikipedia e delle altre risorse internet di traduzione, stabilire, raggruppare o modificare l'ordine di visualizzazione dei dizionari.<p><p><b>Personalizzazioni</b><br>Personalizza il programma, regolando le impostazioni di puntamento previste dal menu <b><i>Modifica|Impostazioni</b></i>.<p><b>Uso del programma</b><br>Un modo tradizionale per usare un dizionario consiste nel digitare il termine da ricercare nella casellina di ricerca (in alto a sinistra in questa stessa finestra).<p><b>Scansiona e traduci le parole puntate</b><br>Altra caratteristica fondamentale di 'GoldenDict' è che non serve neppure digitare la parola da cercare nella casellina di ricerca: basta puntarla col mouse in qualunque applicazione essa si trovi. Clicca <a href="Scansione e traduzione delle parole puntate">scansiona e traduci le parole puntate</a> per scoprire come usarla.<p>In alternativa alla traduzione automatica della parola puntata, è sempre e comunque possibile, <u>selezionarne</u> la parola e <u>premendo</u> la combinazione di tasti <b><i>CTRL+C+C</b></i> vederne comparire la traduzione desiderata.<p><p>Se hai bisogno di ulteriore aiuto, hai domande o suggerimenti o per qualsiasi altra richiesta, il tuo intervento nel <a href="http://goldendict.org/forum/">forum</a> del programma è benvenuto. <p>Controlla nel <a href="http://goldendict.org/">sito web</a> se ci sono nuovi aggiornamenti del programma. <p>(c) 2008-2013 Konstantin Isakov. Licenza GPLv3 o superiori. - - - - Working with popup - Scansione e traduzione delle parole puntate - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Scansione e traduzione delle parole puntate</h3>Per tradurre le parole puntate nelle applicazioni attive, è necessario attivarne la funzione nel modo seguente. Dalla finestra principale, apri il menu <b>Modifica|Impostazioni</b>, quindi la scheda <b><i>"Puntamento"</b></i>. <p>In questa finestra spunta la casella "Abilita l'attività di scansione e traduzione delle parole puntate", imposta a piacimento la scansione e traduzione delle parole puntate e conferma il tutto premendo "OK".<p>Indipendentemente dalle opzioni scelte, potrai attivare o disattivare in qualsiasi momento la scansione di ricerca tipica di questa modalità, cliccando il tasto destro del mouse sull'iconcina del programma che appare nella barra di notifica di Windows. Nel menu che compare puoi cliccare l'iconcina <b><i>Scansiona e traduci le parole puntate sì/no</b></i>, sia per attivarla che per disattivarla. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Appoggia il puntatore del mouse sulla parola sconosciuta e comparirà una finestra con la traduzione (o spiegazione) richiesta. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Seleziona una qualsiasi parola sconosciuta, (doppiocliccala o selezionala con il mouse premuto) e comparirà una finestra con la traduzione (o spiegazione) richiesta. - - - - (untitled) - (senza titolo) - - - - (picture) - (immagine) - - - - ArticleRequest - - - Expand article - Espandi traduzione - - - - From - Da - - - - Collapse article - Compatta traduzione - - - - Query error: %1 - Errore d'interrogazione: %1 - - - - Close words: - Chiudi parole: - - - - Compound expressions: - Espressioni composte: - - - - Individual words: - Parole individuali: - - - - ArticleView - - - Select Current Article - Seleziona traduzione corrente - - - - Copy as text - Copia come testo - - - - Inspect - Ispeziona - - - - Resource - Risorsa - - - - Audio - Audio - - - - TTS Voice - Voce sintetizzata (TTS) - - - - Picture - Immagine - - - - Definition from dictionary "%1": %2 - Definizione dal dizionario "%1": %2 - - - - Definition: %1 - Definizione: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - La risorsa di riferimento non esiste. - - - - The referenced audio program doesn't exist. - Il programma audio di riferimento non esiste. - - - - - ERROR: %1 - Errore: %1 - - - - Save sound - Salva suono - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - File sonori (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Tutti i file (*.*) - - - - Save image - Salva immagine - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - File d'immagine (*.bmp *.jpg *.png *.tif);;Tutti i file (*.*) - - - - &Open Link - &Apri collegamento - - - - Video - Video - - - - Video: %1 - Video: %1 - - - - Open Link in New &Tab - Apri collegamento in una nuova &scheda - - - - Open Link in &External Browser - Apri collegamento in un programma di &navigazione web esterno - - - - &Look up "%1" - &Cerca «%1» - - - - Look up "%1" in &New Tab - Cerca "%1" in una &nuova scheda - - - - Send "%1" to input line - Invia "%1" alla linea di comando - - - - - &Add "%1" to history - &Aggiungi "%1" alla cronologia - - - - Look up "%1" in %2 - Cerca "%1" in %2 - - - - Look up "%1" in %2 in &New Tab - Cerca "%1" in %2 in una &nuova scheda - - - - WARNING: FFmpeg Audio Player: %1 - ATTENZIONE: Lettore audio FFmpeg: %1 - - - Playing a non-WAV file - Riproduzione di file audio diverso dal WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Per abilitare la riproduzione di file diversi dal WAV, dal menu Modifica|Impostazioni, clicca la scheda Audio e scegli l'opzione "Riproduci utilizzando le DirectShow". - - - Bass library not found. - La libreria Bass non è stata trovata. - - - Bass library can't play this sound. - La libreria Bass non è in grado di riprodurre questo suono. - - - - Failed to run a player to play sound file: %1 - L'esecuzione del file sonoro è fallita: %1 - - - - Failed to create temporary file. - La creazione del file temporaneo è fallita. - - - - Failed to auto-open resource file, try opening manually: %1. - L'apertura automatica del file di risorsa è fallita. Provare ad aprire il file manualmente: %1. - - - - The referenced resource failed to download. - Lo scaricamento della risorsa di riferimento è fallita. - - - - Save &image... - Salva &immagine... - - - - Save s&ound... - Salva s&uono... - - - - WARNING: %1 - ATTENZIONE: %1 - - - - Form - Modulo - - - - about:blank - scheda:vuota - - - - x - x - - - - Find: - Cerca: - - - - - &Previous - &Precedente - - - - - &Next - &Successivo - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &MAIUSCOLE/minuscole - - - - Highlight &all - Evidenzia &ogni risultato - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Traslitterazione del biellorusso da caratteri latini a cirillici (ortografia classica) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Traslitterazione del biellorusso da caratteri latini a cirillici (ortografia scolastica) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Traslitterazione del biellorusso (lievemente diversa -tra l'ortografia classica e scolastica in cirillico) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Password: - - - - DictGroupWidget - - - Form - Modulo - - - - Group icon: - Icona del gruppo: - - - - Shortcut: - Tasto scorciatoia: - - - - None - Nessuno - - - - From file... - Da file... - - - - Choose a file to use as group icon - Scegli un file da usare come icona del gruppo - - - - Images - Immagini - - - - All files - Tutti i file - - - - Error - Errore - - - - Can't read the specified image file. - Impossibile leggere il file d'immagine specificato - - - - DictGroupsWidget - - - - - - Dictionaries: - Dizionari: - - - - Confirmation - Conferma - - - - Are you sure you want to generate a set of groups based on language pairs? - Sei sicuro di volere generare una serie di gruppi basati sulle coppie di lingue? - - - - Unassigned - Non assegnato - - - - Combine groups by source language to "%1->" - Combina i gruppi in base alla lingua sorgente in "%1->" - - - - Combine groups by target language to "->%1" - Combina i gruppi in base alla lingua di destinazione in "->%1" - - - - Make two-side translate group "%1-%2-%1" - Crea gruppo di traduzione bidirezionale "%1-%2-%1" - - - - - Combine groups with "%1" - Combina i gruppi con "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - File di testo (*.txt);;Tutti i file (*.*) - - - - Export headwords... - - - - - Cancel - Annulla - - - - DictInfo - - - Total articles: - Totale voci: - - - - Translates from: - Traduzione da: - - - - Total words: - Parole totali: - - - - Translates to: - Traduzione in: - - - - Open folder - Apri cartella - - - - Edit dictionary - Modifica dizionario - - - - Files comprising this dictionary: - File relativi a questo dizionario: - - - - Description: - Descrizione: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Modificia il dizionario via comando: -%1 - - - - DictListModel - - - %1 entries - %1 voci - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Abilitato - - - - Name - Nome - - - - Address - Indirizzo - - - - Databases - - - - - Strategies - - - - - Icon - Icona - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Barra dei dizionari - - - - &Dictionary Bar - Barra dei &dizionari - - - - Extended menu with all dictionaries... - Estendi menu con tutti i dizionari... - - - - Edit this group - Modifica questo gruppo - - - - Dictionary info - Info sul dizionario - - - - Dictionary headwords - - - - - Open dictionary folder - Apri cartella dizionario - - - - Edit dictionary - Modifica dizionario - - - - EditDictionaries - - - &Sources - &Risorse - - - - - &Dictionaries - &Dizionari - - - - - &Groups - &Gruppi - - - - Sources changed - Risorse modificate - - - - Some sources were changed. Would you like to accept the changes? - Alcune risorse sono state modificate. Accettare le modifiche? - - - - Accept - Accetto - - - - Cancel - Annulla - - - - Dictionaries - Dizionari - - - - ExternalViewer - - - the viewer program name is empty - il nome del programma del visualizzatore è vuoto - - - - FTS::FtsIndexing - - None - Nessuno - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Nessuno - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Nessuno - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Errore di analisi XML: %1 al %2,%3 - - - - Added %1 - Aggiunto %1 - - - - by - da - - - - Male - Maschile - - - - Female - Femminile - - - - from - da - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Clicca il menu Modifica|Dizionari|Risorse|Forvo e applica la propria chiave API per fare scomparire questo errore. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Annulla - - - - Help - - - - - GermanTranslit - - - German Transliteration - Traslitterazione del tedesco - - - - GreekTranslit - - - Greek Transliteration - Traslitterazione del greco - - - - GroupComboBox - - - Choose a Group (Alt+G) - Scegli un gruppo (Alt+G) - - - - GroupSelectorWidget - - - Form - Modulo - - - - Look in - Cerca in - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Aggiungi gruppo - - - - Give a name for the new group: - Assegna un nome al nuovo gruppo: - - - - Rename group - Rinomina gruppo - - - - Give a new name for the group: - Assegna un nuovo nome al gruppo: - - - - Remove group - Rimuovi gruppo - - - - Are you sure you want to remove the group <b>%1</b>? - Sei sicuro di volere rimuovere il gruppo <b>%1</b>? - - - - - Remove all groups - Rimuovi ogni gruppo - - - - Are you sure you want to remove all the groups? - Sei sicuro di volere rimuovere ogni gruppo? - - - - Dictionaries available: - Dizionari disponibili: - - - - Add selected dictionaries to group (Ins) - Aggiungi al gruppo i dizionari selezionati (Ins) - - - - > - > - - - - Ins - INS - - - - Remove selected dictionaries from group (Del) - Rimuovi i dizionari selezionati dal gruppo (Canc) - - - - < - < - - - - Del - CANC - - - - Groups: - Gruppi: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Crea un nuovo gruppo di dizionari - - - - &Add group - &Aggiungi gruppo - - - - Create language-based groups - Crea gruppi basati sulla lingua - - - - Auto groups - Gruppi automatici - - - - Rename current dictionary group - Rinomina il gruppo di dizionari corrente - - - - Re&name group - &Rinomina gruppo - - - - Remove current dictionary group - Rimuovi il gruppo di dizionari corrente - - - - &Remove group - &Rimuovi gruppo - - - - Remove all dictionary groups - Rimuovi ogni gruppo di dizionari - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Trascina i dizionari da o nei gruppi, spostali al loro interno, riordinali usando il mouse. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Traduzione precedente - - - - Forward - Traduzione successiva - - - - Zoom In - Ingrandisci - - - - Zoom Out - Riduci - - - - Normal Size - Ripristina zoom - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Elimina voce selezionata - - - - Copy Selected - Copia voce selezionata - - - - History: - Cronologia: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Dimensioni cronologia: %1 voci per un massimo di %2 - - - - Hunspell - - - Spelling suggestions: - Suggerimenti ortografici: - - - - %1 Morphology - Morfologia %1 - - - - HunspellDictsModel - - - Enabled - Abilitato - - - - Name - Nome - - - - Initializing - - - Please wait... - Attendere... - - - - - Please wait while indexing dictionary - Attendere l'indicizzazione dei dizionari - - - - GoldenDict - Initializing - GoldenDict - Inizializzazione - - - - Dictionary Name - Nome dizionario - - - - Language - - - Afar - Afar - - - - Abkhazian - Abcaso - - - - Avestan - Avestico - - - - Afrikaans - Afrikaans - - - - Akan - Akan - - - - Amharic - Amarico - - - - Aragonese - Aragonese - - - - Arabic - Arabo - - - - Assamese - Assamese - - - - Avaric - Avaro - - - - Aymara - Aymara - - - - Azerbaijani - Azero - - - - Bashkir - Bashkir - - - - Belarusian - Bielorusso - - - - Bulgarian - Bulgaro - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengalese - - - - Tibetan - Tibetano - - - - Breton - Bretone - - - - Bosnian - Bosniaco - - - - Catalan - Catalano - - - - Chechen - Ceceno - - - - Chamorro - Chamorro - - - - Corsican - Corso - - - - Cree - Cree - - - - Czech - Ceco - - - - Church Slavic - Slavonico - - - - Chuvash - Ciuvascio - - - - Welsh - Gallese - - - - Danish - Danese - - - - German - Tedesco - - - - Divehi - Maldiviano - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Greco - - - - English - Inglese - - - - Esperanto - Esperanto - - - - Spanish - Spagnolo - - - - Estonian - Estone - - - - Basque - Basco - - - - Persian - Farsì - - - - Fulah - Fula - - - - Finnish - Finlandese - - - - Fijian - Fijiano - - - - Faroese - Faroese - - - - French - Francese - - - - Western Frisian - Frisone occidentale - - - - Irish - Irlandese - - - - Scottish Gaelic - Scozzese gaelico - - - - Galician - Galizio - - - - Guarani - Guaraní - - - - Gujarati - Gujarati - - - - Manx - Mannese - - - - Hausa - Hausa - - - - Hebrew - Ebraico - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Croato - - - - Haitian - Creolo haitiano - - - - Hungarian - Ungherese - - - - Armenian - Armeno - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonesiano - - - - Interlingue - Interlingua - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Inupiaq - - - - Ido - Ido - - - - Icelandic - Islandese - - - - Italian - Italiano - - - - Inuktitut - Inuktitut - - - - Japanese - Giapponese - - - - Javanese - Javanese - - - - Georgian - Georgiano - - - - Kongo - Monokutuba - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kwanyama - - - - Kazakh - Cazaco - - - - Kalaallisut - Groenlandese - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Coreano - - - - Kanuri - Kanuri - - - - Kashmiri - Kashmiri - - - - Kurdish - Curdo - - - - Komi - Komi - - - - Cornish - Cornico - - - - Kirghiz - Chirghiso - - - - Latin - Latino - - - - Luxembourgish - Lussemburghese - - - - Ganda - Ganda - - - - Limburgish - Limburghese - - - - Lingala - Lingala - - - - Lao - Laotiano - - - - Lithuanian - Lituano - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Lettone - - - - Malagasy - Malgascio - - - - Marshallese - Marshallese - - - - Maori - Maori - - - - Macedonian - Macedone - - - - Malayalam - Malayalam - - - - Mongolian - Mongolo - - - - Marathi - Marathi - - - - Malay - Malese - - - - Maltese - Maltese - - - - Burmese - Birmano - - - - Nauru - Nauruano - - - - Norwegian Bokmal - Norvegese Bokmål - - - - North Ndebele - Ndebele del nord - - - - Nepali - Nepalese - - - - Ndonga - Ndonga - - - - Dutch - Danese - - - - Norwegian Nynorsk - Norvegese Nynorsk - - - - Norwegian - Norvegese - - - - South Ndebele - Ndebele del sud - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitano - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Osseto - - - - Panjabi - Panjabi - - - - Pali - Pali - - - - Polish - Polacco - - - - Pashto - Pashtu - - - - Portuguese - Portoghese - - - - Quechua - Quechua - - - - Raeto-Romance - Reto-Romancio - - - - Kirundi - Kirundi - - - - Romanian - Rumeno - - - - Russian - Russo - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sanscrito - - - - Sardinian - Sardo - - - - Sindhi - Sindhi - - - - Northern Sami - Sami del nord - - - - Sango - Sango - - - - Serbo-Croatian - Serbo-Croato - - - - Sinhala - Singalese - - - - Slovak - Slovacco - - - - Slovenian - Sloveno - - - - Samoan - Samoano - - - - Shona - Shona - - - - Somali - Somalo - - - - Albanian - Albanese - - - - Serbian - Serbo - - - - Swati - Swati - - - - Southern Sotho - Sesotho - - - - Sundanese - Sudanese - - - - Swedish - Swedese - - - - Swahili - Swahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tagico - - - - Thai - Thailandese - - - - Tigrinya - Tigrino - - - - Turkmen - Turkmeno - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Turco - - - - Tsonga - Tsonga - - - - Tatar - Tataro - - - - Twi - Twi - - - - Tahitian - Tahitiano - - - - Uighur - Uigura - - - - Ukrainian - Ucraino - - - - Urdu - Urdu - - - - Uzbek - Uzbeco - - - - Venda - Venda - - - - Vietnamese - Vietnamita - - - - Volapuk - Volapuk - - - - Walloon - Vallone - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Yiddish - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Cinese - - - - Zulu - Zulu - - - - Lojban - Lojban - - - - Traditional Chinese - Cinese tradizionale - - - - Simplified Chinese - Cinese semplificato - - - - Other - Altro - - - - Other Simplified Chinese dialects - Altro dialetto cinese semplificato - - - - Other Traditional Chinese dialects - Altro dialetto cinese tradizionale - - - - Other Eastern-European languages - Altra lingua dell'est europeo - - - - Other Western-European languages - Altra lingua dell'ovest europeo - - - - Other Russian languages - Altra lingua russa - - - - Other Japanese languages - Altra lingua giapponese - - - - Other Baltic languages - Altra lingua baltica - - - - Other Greek languages - Altra lingua greca - - - - Other Korean dialects - Altro dialetto coreano - - - - Other Turkish dialects - Altro dialetto turco - - - - Other Thai dialects - Altro dialetto thailandese - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Errore di caricamento dei dizionari - - - - Main - - - Error in configuration file. Continue with default settings? - Errore nel file di configurazione. Continuare con le impostazioni preimpostate? - - - - MainWindow - - Navigation - Barra degli strumenti - - - - Back - Traduzione precedente - - - - Forward - Traduzione successiva - - - - Scan Popup - Scansiona e traduci le parole puntate sì/no - - - - Show &Main Window - Mostra finestra &principale - - - - - &Quit - &Esci - - - - Loading... - Caricamento... - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Skip This Release - Tralascia questa versione - - - - You have chosen to hide a menubar. Use %1 to show it back. - Hai scelto di nascondere la barra dei menu. Utilizza %1 per mostrarla nuovamente. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Imposta pagina - - - - No printer is available. Please install one first. - Non è disponibile alcuna stampante. Per proseguire installarne una. - - - - Print Article - Stampa traduzione - - - - Article, Complete (*.html) - Traduzione come pagina completa (*.html) - - - - Article, HTML Only (*.html) - Traduzione come pagina solo HTML (*.html) - - - - Save Article As - Salva traduzione come - - - Html files (*.html *.htm) - File HTML (*.html *.htm) - - - - Error - Errore - - - - Can't save article: %1 - Impossibile salvare la traduzione: %1 - - - - Saving article... - Salvataggio traduzioni... - - - - The main window is set to be always on top. - La finestra principale è impostata per essere mostrata sempre in primo piano. - - - - %1 dictionaries, %2 articles, %3 words - %1 dizionari, %2 voci, %3 parole - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - L'inizializzazione del meccanismo di monitoraggio dei tasti scorciatoia è fallito.<br>Assicurarsi che nel proprio XServer c'è l'estensione RECORD attiva. - - - - New Release Available - E' disponibile una nuova versione - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - E' disponibile la nuova versione <b>%1</b> di GoldenDict.<br> -Clicca <b>Scarica</b> per accedere alla pagina di scaricamento. - - - - Download - Scarica - - - - - Look up in: - Cerca in: - - - Show Names in Dictionary Bar - Mostra i nomi dei dizionari nella barra - - - Show Small Icons in Toolbars - Mostra icone piccole nelle barre - - - - &Menubar - Barra dei &menu - - - - Found in Dictionaries: - Trovato nei dizionari: - - - - Pronounce Word (Alt+S) - Ascolta la pronuncia (Alt+S) - - - - Show Names in Dictionary &Bar - Mostra i n&omi dei dizionari nella barra - - - - Show Small Icons in &Toolbars - Mostra icone &piccole nelle barre - - - - &Navigation - Barra degli &strumenti - - - - Zoom In - Ingrandisci - - - - Zoom Out - Riduci - - - - Normal Size - Ripristina zoom - - - - Words Zoom In - Ingrandisci parole da cercare - - - - Words Zoom Out - Riduci parole da cercare - - - - Words Normal Size - Ripristina zoom delle parole da cercare - - - - Close current tab - Chiudi scheda corrente - - - - Close all tabs - Chiudi ogni scheda - - - - Close all tabs except current - Chiudi ogni scheda eccetto la corrente - - - - Look up: - Cerca: - - - - All - Tutto - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - L'accessibilità alle API non è abilitita - - - - Import history from file - Importa cronologia da file - - - Imported from file: - Importata dal file: - - - - Import error: invalid data in file - Errore d'importazione: i dati nel file sono invalidi - - - - History import complete - Importazione della cronologia completata - - - - Import error: - Errore d'importazione: - - - - Dictionary info - Info sul dizionario - - - - Dictionary headwords - - - - - Open dictionary folder - - - - - Edit dictionary - Modifica dizionario - - - - Opened tabs - Schede aperte - - - - Open Tabs List - Apri l'elenco delle schede - - - - (untitled) - (senza titolo) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - ATTENZIONE: %1 - - - - &Hide - &Nascondi - - - History view mode - Modalità visualizza cronologia - - - - Export history to file - Esporta cronologia come file - - - - - Text files (*.txt);;All files (*.*) - File di testo (*.txt);;Tutti i file (*.*) - - - - History export complete - Esportazione cronologia completata - - - - Export error: - Errore di esportazione: - - - GoldenDict - GoldenDict - - - - - Welcome! - Benvenuto! - - - - &File - &File - - - - &Edit - M&odifica - - - - &Help - G&uida - - - - Search - - - - - &Search Pane - Pannello di &ricerca - - - - &Results Navigation Pane - Pannello dei risultati di &ricerca - - - - &History Pane - Pannello della &cronologica - - - &Dictionaries... F3 - &Dizionari... F3 - - - - &Preferences... - &Impostazioni... - - - - F2 - F2 - - - - &View - &Visualizza - - - - &Zoom - &Zoom - - - - H&istory - &Cronologia - - - Results Navigation Pane - Pannello dei risultati di ricerca - - - - &Dictionaries... - &Dizionari... - - - - F3 - F3 - - - - F4 - F4 - - - - &Homepage - &Visita il sito web - - - - &About - &Info - - - - About GoldenDict - Info... - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Esce dal programma - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forum - - - - &Close To Tray - &Iconizza nella barra di notifica - - - - Minimizes the window to tray - Iconizza il programma nella barra di notifica - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Salva traduzione - - - - Save Article - Salva la traduzione corrente - - - - &Print - &Stampa - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Imposta &pagina - - - - Print Pre&view - &Anteprima di stampa - - - - &Rescan Files - &Rianalizza file - - - - &New Tab - &Nuova scheda - - - - &Always on Top - Mostra sempre in primo piano - - - - Always on Top - Mostra sempre in primo piano - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Pulsante menu - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Anteprima di stampa - - - Rescan Files - Rianalizza file - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Elimina - - - - New Tab - Nuova scheda - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Cartella di configurazione - - - - - &Show - &Mostra - - - - Ctrl+H - Ctrl+H - - - - &Export - &Esporta - - - - &Import - &Importa - - - Search Pane - Pannello di ricerca - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Il file del dizionario risulta alterato o corrotto - - - - Failed loading article from %1, reason: %2 - Impossibile caricare la traduzione da %1, per il motivo seguente: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Errore di analisi XML: %1 al %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Errore di analisi XML: %1 al %2,%3 - - - - MediaWikisModel - - - Enabled - Abilitato - - - - Name - Nome - - - - Address - Indirizzo - - - - Icon - Icona - - - - OrderAndProps - - - Form - Modulo - - - - Dictionary order: - Ordine dei dizionari: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Dizionari inattivi (disabilitati): - - - - Dictionary information - Informazioni sul dizionario - - - - Name: - Nome: - - - - Total articles: - Totale voci: - - - - Total words: - Parole totali: - - - - Translates from: - Traduzione da: - - - - Translates to: - Traduzione in: - - - - Description: - Descrizione: - - - - Files comprising this dictionary: - File relativi a questo dizionario: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Modifica l'ordine trascinando col mouse i nomi dei vari dizionari. Sposta quelli non utilizzati nel gruppo dei dizionari inattivi, per bloccarne la consultazione. - - - - Sort by name - Ordina per nome - - - - Sort by languages - Ordina per lingua - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Percorso - - - - Recursive - Ricorsivo - - - - Preferences - - - Preferences - Impostazioni - - - - &Interface - &Interfaccia - - - - Tabbed browsing - Esplorazione delle schede - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalmente, aprendo una nuova scheda si passa immediatamente ad essa. -Spuntando questa casella, le nuove schede vengono aperte senza che si passi ad esse. - - - - Open new tabs in background - apri le schede sullo sfondo - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Spuntando questa casella, le nuove schede vengono aperte accanto -a quella corrente altrimenti vengono accodate all'ultima. - - - - Open new tabs after the current one - apri le nuove schede accanto a quella corrente - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Spuntando questa casella, appare un'icona sulla barra di notifica per aprire -la finestra principale ed effettuare altre operazioni. - - - - Enable system tray icon - Abilita come applicazione di notifica - - - - With this on, the application starts directly to system tray without showing -its main window. - Spuntando questa casella, il programma si avvia iconizzato nella barra di notifica -senza aprire la finestra principale. - - - - Start to system tray - iconizza nella barra di notifica all'avvio - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Spuntando questa casella, il tentativo di chiudere la finestra principale -ne causerà soltanto l'iconizzazione nella barra di notifica. - - - - Close to system tray - iconizza nella barra di notifica alla chiusura - - - - Startup - Avvio - - - - Start with system - esegui all'avvio di Windows - - - - Interface language: - Lingua interfaccia: - - - - Display style: - Stile di visualizzazione: - - - - Double-click translates the word clicked - il doppio clic del mouse, traduce la parola cliccata - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Spuntando questa casella, si attiva sin dall'inizio l'attività di scansione e traduzione delle parole puntate. -Al contrario se si deseleziona questa casella, scansione e traduzione vengono disabilitate. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Может быть, лучше так: -Обычно, всплывающее окно активируется, только если выбранные -клавиши были зажаты в процессе выделения. Если включён данный режим, -выбранные клавиши можно нажать после того, как текст выделен. - Normalmente, per avviare la ricerca di una parola da tradurre, -è necessario puntarla tenendo premuti i tasti precedentemente impostati. -Questa funzione consente di premere tali tasti anche qualche secondo più tardi. - - - - Hotkeys - Tasti scorciatoia - - - - Use the following hotkey to show or hide the main window: - utilizza la seguente combinazione di tasti per visualizzare o nascondere la finestra principale: - - - - Use the following hotkey to translate a word from clipboard: - utilizza la seguente combinazione di tasti per tradurre una parola memorizzata negli Appunti di Windows: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Queste combinazioni di tasti sono globali e questo significa che funzionano in qualsiasi programma e contesto a condizione che il programma sia attivo in sottofondo. - - - - &Scan Popup - &Puntamento - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Spuntando questa casella, quando c'è aperta una sola scheda la barra delle schede principale viene automaticamente nascosta. - - - - Hide single tab - nascondi scheda singola - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl+Tab naviga in ordine cronologico tra le schede aperte - - - - Automatically starts GoldenDict after operation system bootup. - Esegue automaticamente il programma all'avvio di Windows. - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normalmente, premendo il tasto Esc si sposta il controllo d'immissione da tastiera nella casella di traduzione. Spuntando questa casella la finestra principale viene nascosta. - - - - ESC key hides main window - il tasto Esc nasconde la finestra principale - - - - Turn this option on if you want to select words by single mouse click - Spuntando questa casella, è possibile selezionare una parola con un singolo clic del mouse - - - - Select word by single click - seleziona le parole con un singolo clic del mouse - - - - Add-on style: - Stile dei moduli aggiuntivi (add-on): - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Modificare questo valore in modo da evitare menu contestuali troppo estesi. - - - - Context menu dictionaries limit: - Limite sul numero di dizionari per il menu contestuale: - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Spuntando questa casella, si abilita l'attività di scansione e traduzione delle parole puntate. -Al contrario se si deseleziona questa casella, scansione e traduzione vengono disabilitate. -In altre parole, attivando questa modalità, per tradurre una parola sarà sufficiente puntarla col mouse. -Opzionalmente, è anche possibile avviare scansione e traduzione, soltanto se contemporaneamente -si premono i tasti prescelti. - - - - Enable scan popup functionality - Abilita l'attività di scansione e traduzione delle parole puntate - - - - Start with scan popup turned on - abilita l'attività di scansione e traduzione delle parole puntate fin dall'avvio del programma - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Spuntando questa casella, si attiva l'attività di scansione e traduzione -delle parole puntate quando i tasti scelti vengono effettivamente premuti. - - - - Only show popup when all selected keys are kept pressed: - abilita l'attività di scansione e traduzione delle parole puntate solo se tutti i tasti selezionati sono premuti: - - - - Left Ctrl only - Solo tasto Ctrl sinistro - - - - Left Ctrl - Ctrl sinistro - - - - Right Shift only - Solo tasto MAIUSCOLE destro - - - - Right Shift - MAIUSCOLE destro - - - - Alt key - Tasto Alt - - - - Alt - Alt - - - - Ctrl key - Tasto Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Solo tasto Alt sinistro - - - - Left Alt - Alt sinistro - - - - Shift key - Tasto MAIUSCOLE - - - - Shift - MAIUSCOLE - - - - Right Alt only - Solo tasto Alt destro - - - - Right Alt - Alt destro - - - - Right Ctrl only - Solo tasto Ctrl destro - - - - Right Ctrl - Ctrl destro - - - - Left Shift only - Solo tasto MAIUSCOLE sinistro - - - - Left Shift - MAIUSCOLE sinistro - - - - Windows key or Meta key - Tasto di Windows o Meta - - - - Win/Meta - Windows o Meta - - - - Keys may also be pressed afterwards, within - i tasti possono essere premuti nell'arco di tempo di - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Per evitare inutili controlli, i tasti qui specificati -vengono monitorati soltanto successivamente al puntamento -entro il limite di secondi qui specificato. - - - - secs - secondi - - - - Send translated word to main window instead of to show it in popup window - Mostra le traduzioni nella finestra principale del programma invece che nella classica finestra a comparsa - - - - Send translated word to main window - mostra le traduzioni nella finestra principale del programma - - - - Play audio files via FFmpeg(libav) and libao - Riproduce l'audio utilizzando le librerie FFmpeg(libav) e libao - - - - Use internal player - Utilizza lettore interno - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Spuntando questa casella vengono automaticamente compattate le traduzioni troppo estese - - - - Collapse articles more than - compatta le traduzioni più estese di - - - - Articles longer than this size will be collapsed - Le traduzioni più estese di queste dimensioni verranno compattate - - - - symbols - caratteri - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Riproduce l'audio utilizzando le librerie Bass. Questa è un'opzione raccomandata. -Per utilizzare questa modalità è necessario aggiungere il file bass.dll (http://www.un4seen.com) nella cartella di GoldenDict. - - - Play via Bass library - Riproduci utilizzando le librerie Bass - - - - Ad&vanced - &Avanzate - - - - ScanPopup extra technologies - Tecnologie di scansione delle parole puntate da tradurre - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Prova ad utilizzare la tecnologia IAccessibleEx per acquisire la parola sotto al cursore. -Questa tecnologia funziona solo con alcuni programmi che la supportano -(come ad esempio Internet Explorer 9). -Non è necessario attivare questa opzione se non si usano tali programmi. - - - - Use &IAccessibleEx - utilizza &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Prova ad utilizzare la tecnologia UI Automation per acquisire la parola sotto al cursore. -Questa tecnologia funziona solo con alcuni programmi che la supportano. -Non è necessario attivare questa opzione se non si usano tali programmi. - - - - Use &UIAutomation - utilizza &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Prova ad utilizzare la speciale messaggistica di GoldenDict per acquisire la parola sotto al cursore. -Questa tecnologia funziona solo con alcuni programmi che la supportano -Non è necessario attivare questa opzione se non si usano tali programmi. - - - - Use &GoldenDict message - utilizza messaggistica di &GoldenDict - - - - History - Cronologia - - - - Turn this option on to store history of the translated words - Spuntando questa casella, viene memorizzata la cronologia delle parole tradotte - - - - Store &history - memorizza la &cronologia - - - - Specify the maximum number of entries to keep in history. - Specificare il numero massimo di inserimenti da mantenere nella cronologia. - - - - Maximum history size: - Dimensione massima della cronologia: - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervallo di salvattaggio della cronologia. Impostando il valore 0 la cronologia verrà salvata soltanto alla chiusura del programma. - - - - Save every - Salva ogni - - - - minutes - minuti - - - - Articles - Traduzioni - - - - Turn this option on to always expand optional parts of articles - Spuntando questa casella, vengono espansi i contesti opzionali delle voci tradotte - - - - Expand optional &parts - espandi i &contesti opzionali delle voci tradotte - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Nota: Sembra che tu stia eseguendo una versione di X.Org XServer che ha l'estensione di registrazione RECORD danneggiata. I tasti scorciatoia di GoldenDict probabilmente non funzioneranno. Questo problema va' risolto nel server stesso. Consulta la documentazione seguente </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">sugli errori </span></a><span style=" color:#ff0000;"> e se lo ritieni opportuno lascia un messaggio.</span></p></body></html> - - - - &Audio - &Pronuncia - - - - Pronunciation - Pronuncia - - - - Auto-pronounce words in main window - pronuncia automaticamente le parole dalla finestra principale - - - - Auto-pronounce words in scan popup - pronuncia automaticamente le parole puntate - - - - Playback - Riproduzione - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Utilizza l'API di riproduzione audio nativa di Windows. -Funzione perfettamente funzionante ma limitata solo ai file wav. - - - Play via Windows native API - Riproduci utilizzando le API native di Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Riproduce l'audio via Phonon framework. Questa opzione potrebbe -essere instabile, ma dovrebbe supportare una maggiore scelta di formati audio. - - - Play via Phonon - Riproduci con Phonon - - - - Use any external program to play audio files - Usa un qualsiasi programma esterno per riprodurre i file audio - - - - Use external program: - Usa un programma esterno: - - - - &Network - &Rete - - - - Enable if you wish to use a proxy server -for all program's network requests. - Abilitare questa casella per utilizzare un server proxy -per ogni programma della rete che lo richieda. - - - - Use proxy server - Utilizza server proxy - - - - Type: - Tipo: - - - - Host: - Host: - - - - Port: - Porta: - - - - User: - Utente: - - - - Password: - Password: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Spuntando questa casella GoldenDict bloccherà la maggioranza delle pubblicità -disabilitando i contenuti (immagini, frame) non originati dai siti visitati. -Se alcuni siti dovessero bloccarsi, provare a disabilitare questa casella. - - - - Disallow loading content from other sites (hides most advertisements) - non permettere il caricamento dei contenuti da altri siti (nasconde la maggioranza dei messaggi pubblicitari) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Spuntando questa casella viene abilitato l'ascolto della pronuncia -dai dizionari online basati su Flash o altri plugin web. -Affinché questa opzione possa funzionare, è necessario che i plugin richiesti siano installati. - - - - Enable web plugins - abilita i plugin web - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Alcuni siti web rilevano GoldenDict via intestazione HTTP e ne bloccano le richieste. -Spuntare questa casella per raggirare il problema. - - - - Do not identify GoldenDict in HTTP headers - non consentire che GoldenDict venga identificato nelle intestazioni HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Spuntando questa casella, periodicamente il programma controlla -se sono disponibili aggiornamenti, nuove versioni di GoldenDict -e si collega al sito del programma. - - - - Check for new program releases periodically - controlla periodicamente la presenza di aggiornamenti e novità - - - - System default - Preimpostata nel sistema - - - - - Default - Preimpostato - - - - Modern - Moderna - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Riproduci utilizzando le DirectShow - - - - Changing Language - Modifica della lingua - - - - Restart the program to apply the language change. - La modifica della lingua avrà effetto al riavvio del programma. - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Testo semplice - - - - Html - HTML - - - - Prefix Match - Compita prefisso - - - - Unknown - Sconosciuto - - - - Programs::RunInstance - - - No program name was given. - Non è stato assegnato alcun nome al programma. - - - - The program has crashed. - Il programma si è bloccato. - - - - The program has returned exit code %1. - Il programma ha restituito il codice di uscita %1. - - - - ProgramsModel - - - Enabled - Abilitato - - - - Type - Tipo - - - - Name - Nome - - - - Command Line - Linea di comando - - - - Icon - Icona - - - - QObject - - - - Article loading error - Errore di caricamento della traduzione - - - - - Article decoding error - Errore di decodifica del file di traduzione - - - - avformat_alloc_context() failed. - avformat_alloc_context() fallito. - - - - av_malloc() failed. - av_malloc() fallito. - - - - avio_alloc_context() failed. - avio_alloc_context() fallito. - - - - avformat_open_input() failed: %1. - avformat_open_input() fallito: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() fallito: %1. - - - - Could not find audio stream. - Impossibile rilevare il flusso audio. - - - - Codec [id: %1] not found. - Codificatore [id: %1] non trovato. - - - - avcodec_open2() failed: %1. - avcodec_open2() fallito: %1. - - - - Cannot find usable audio output device. - Impossibile rilevare un dispositivo audio di uscita utilizzabile per file audio. - - - - Unsupported sample format. - Formato campione non supportato. - - - - ao_open_live() failed: - ao_open_live() fallito: - - - - No driver. - Nessun driver. - - - - This driver is not a live output device. - Questo driver non è un dispositivo di uscita valido. - - - - A valid option key has an invalid value. - Una valida chiave di opzione presenta un valore non valido. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Impossibile aprire il dispositivo: %1, canali: %2, velocità: %3, bit: %4. - - - - Unknown error. - Errore sconosciuto. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() fallito. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Cerca/Filtra nel dizionario (Ctrl+F) - - - - Quick Search - Ricerca veloce - - - - Clear Search - Elimina cronologia - - - - ResourceToSaveHandler - - - - ERROR: %1 - Errore: %1 - - - - Resource saving error: - Errore di salvataggio risorsa: - - - - The referenced resource failed to download. - Lo scaricamento della risorsa di riferimento è fallita. - - - - Romaji - - - Hepburn Romaji for Hiragana - Romanizzazione hepburn per Hiragana - - - - Hepburn Romaji for Katakana - Romanizzazione hepburn per Katakana - - - - RussianTranslit - - - Russian Transliteration - Russo traslitterato - - - - ScanPopup - - - Dialog - Dizionario - - - word - parola - - - - Back - Traduzione precedente - - - - Forward - Traduzione successiva - - - List Matches (Alt+M) - Elenca corrispondenze (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Ascolta la pronuncia (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Mostra la traduzione nella finestra principale del programma (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Mostra o nasconde la barra dei dizionari - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Fissa sullo schermo la finestra dei risultati tradotti, -in modo che possa essere ridimensionata o gestita liberamente. - - - - - - - - ... - ... - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Percorso - - - - Name - Nome - - - - Icon - Icona - - - - Sources - - - Text to Speech - Testo a sintesi vocale (Text to Speech) - - - - (not available in portable version) - (funzione non disponibile nella versione portatile) - - - - - - Choose a directory - Scegli una cartella - - - - - - - - - Confirm removal - Conferma eliminazione - - - - - Remove directory <b>%1</b> from the list? - Rimuovere la cartella <b>%1</b> dall'elenco? - - - - - - Remove site <b>%1</b> from the list? - Rimuovere il sito <b>%1</b> dall'elenco? - - - - Remove program <b>%1</b> from the list? - Rimuovere il programma <b>%1</b> dall'elenco? - - - - Files - File - - - - Paths to search for the dictionary files: - Percorsi dei file dei dizionari: - - - - - - - - - &Add... - &Aggiungi... - - - - - - - - - &Remove - &Elimina - - - - Re&scan now - &Rianalizza - - - - Sound Dirs - Pronuncia - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Per creare dei dizionari con le tue raccolte di file audio aggiungi qui il relativo percorso: - - - - Morphology - Morfologia - - - - Path to a directory with Hunspell/Myspell dictionaries: - Percorso della cartella con i dizionari morfologici Hunspell e/o Myspell: - - - - &Change... - &Modifica... - - - - Available morphology dictionaries: - Dizionari morfologici disponibili: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - I dizionari morfologi si presentano come -dizionari ausiliari autonomi. Essi -forniscono le radici delle parole per ulteriori -ricerche o per suggerimenti ortografici. -Per poterli utilizzare inserire tali dizionari -in fondo al gruppo linguistico appropriato. - - - - Websites - Siti web - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Inserire un qualsiasi sito. La stringa %GDWORD% aggiunta all'indirizzo rappresenta la parola cercata: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - In alternativa usare %GD1251% al posto di CP1251 e/o %GDISO1% invece di ISO 8859-1. - - - - Programs - Programmi - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Qualsiasi programma esterno. La stringa %GDWORD% verrà sostituita con la parola ricercata. La parola verrà inoltre riportata nella casella d'immissione come se fosse stata digitata. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Pronuncia direttamente da <a href="http://www.forvo.com/">forvo.com</a>. Questo sito permette alle persone di registrare e condividere la pronuncia delle parole ed è possibile ascoltarle direttamente da GoldenDict. - - - - Enable pronunciations from Forvo - Abilita la pronuncia da Forvo - - - - API Key: - Chiave API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - L'utilizzo di Forvo attualmente richiede una chiave API. Lasciare questo campo vuoto -per usare la chiave preimpostata, la quale in futuro potrebbe divenire anche inutilizzabile. -In alternativa è possibile registrarsi al sito ed ottenere una chiave personale. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Ottieni <a href="http://api.forvo.com/key/">qui</a> la tua chiave personale oppure lascia il campo vuoto per utilizzare quella preimpostata. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ottieni <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">qui</span></a> la tua chiave, oppure lascia il campo vuoto per usarne una preimpostata.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - In alternativa usare %GD1251% per CP1251, %GDISO1%...%GDISO16% per ISO 8859-1...ISO 8859-16 rispettivamente, -%GDBIG5% per Big-5, %GDBIG5HKSCS% per Big5-HKSCS, %GDGBK% per GBK e GB18030, %GDSHIFTJIS% per Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Per qualsiasi programma esterno. La stringa %GDWORD% va' posta in fondo alla linea di comando ed essa verrà sostituita dalla parola che si desidera tradurre. Se però nella riga di comando non fosse presente alcuna stringa, la parola da tradurre verrebbe passata all'applicazione esterna come un inserimento standard. - - - - Language codes (comma-separated): - Codici della lingua (separarli con una virgola e uno spazio): - - - - List of language codes you would like to have. Example: "en, ru". - Elenco dei codici delle lingue desiderate. Ad esempio: "en, ru, it". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - L'elenco completo dei codici delle lingue è disponibile <a href="http://www.forvo.com/languages-codes/">qui</a>. - - - - Transliteration - Traslitterazione - - - - Russian transliteration - russo traslitterato - - - - Greek transliteration - greco traslitterato - - - - German transliteration - tedesco traslitterato - - - - Belarusian transliteration - traslitterazione bielorusso - - - - Enables to use the Latin alphabet to write the Japanese language - Attiva la romanizzazione del giapponese - - - - Japanese Romaji - giapponese romanizzato (convertito in caratteri latini) - - - - Systems: - Sistemi: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Diffuso sistema di romanizzazione del giapponese, -basato sui fonemi inglesi - - - - Hepburn - romanizzazione hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Il migliore sistema con relazione uno ad uno per -la romanizzazione del giapponese kana. Standard ISO 3602 - -Non ancora implementato. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Basato sul sistema Nihon-shiki adattato al giapponese moderno. -Standard ISO 3602 - -Non ancora implementato. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Sillabari: - - - - Hiragana Japanese syllabary - Sillabario giapponese Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Sillabario giapponese Katakana - - - - Katakana - Katakana - - - - Wikipedia - Пишется по-русски, источник: ru.wikipedia.org - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Siti Wikipedia (MediaWiki): - - - - StylesComboBox - - - None - Nessuno - - - - TextToSpeechSource - - - Selected voice engines: - Motori di sintesi vocali selezionati: - - - - &Add - &Aggiungi - - - - &Remove - &Elimina - - - - Preferences - Impostazioni - - - - Volume: - Volume: - - - - Rate: - Velocità: - - - - Preview - Anteprima - - - - Available voice engines: - Motori di sintesi disponibili: - - - - Text to be previewed: - Testo di anteprima da pronunciare: - - - - Type text to be previewed here. - Digita qui del testo d'esempio da pronunciare per provare la voce di sintesi TTS. - - - - &Preview - &Anteprima - - - - No TTS voice available - Nessuna voce di sintesi TTS disponibile - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Impossibile rilevare una voce di sintesi TTS disponibile.<br>Assicurarsi che sul proprio computer sia stato già installato almeno un motore di sintesi TTS. - - - - Confirm removal - Conferma eliminazione - - - - Remove voice engine <b>%1</b> from the list? - Eliminare il motore di sintesi vocale <b>%1</b> dall'elenco? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Digita una parola o una frase da cercare nei dizionari - - - Options - Opzioni - - - - Drop-down - Elenco a discesa - - - - VoiceEnginesModel - - - Enabled - Abilitato - - - - Name - Nome - - - - Id - Id - - - - Icon - Icona - - - - WebSitesModel - - - Enabled - Abilitato - - - - Name - Nome - - - - Address - Indirizzo - - - - Icon - Icona - - - - WordFinder - - - Failed to query some dictionaries. - Impossibile consultare alcuni dizionari. - - - - WordList - - - WARNING: %1 - ATTENZIONE: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ja_JP.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ja_JP.ts deleted file mode 100644 index e4fc253b33..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ja_JP.ts +++ /dev/null @@ -1,4817 +0,0 @@ - - - - - About - - - About - バージョン情報 - - - - GoldenDict dictionary lookup program, version - GoldenDict 辞書検索プログラム version - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - クレジット: - - - - Licensed under GNU GPLv3 or later - GNU GPLv3 以降の下でライセンスされています - - - - [Unknown] - [不明] - - - - Based on Qt %1 (%2, %3 bit) - - - - - ArticleMaker - - - Expand article - - - - - Collapse article - - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - グループ <b>%2</b> に <b>%1</b> の翻訳が見つかりません。 - - - - No translation was found in group <b>%1</b>. - グループ <b>%1</b> に翻訳が見つかりません。 - - - - Welcome! - ようこそ! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center"><b>GoldenDict</b> へようこそ!</h3><p>このプログラムでの作業を開始するには、まず <b>[編集|辞書]</b> を開いて辞書ファイルを検索するディレクトリのパスを追加したり、さまざまな Wikipedia のサイトやその他のソースを設定したり、辞書の順序を調整したり辞書グループを作成したりします。<p>次にはもう単語を検索する準備ができています! このウィンドウの左のペインを使用するか、<a href="Working with popup">他のアクティブなアプリケーションから単語を検索します</a>。<p>プログラムをカスタマイズするには、<b>[編集|環境設定]</b> で利用可能なオプションをチェックしてください。そこにある設定にはすべてツールチップがあります、何か疑問に思った場合はそれらを読むようにしてください。<p>さらなるヘルプを必要とする場合、質問、提案やその他気になることがある場合は、プログラムの<a href="http://goldendict.org/forum/">フォーラム</a>で歓迎されます。<p>更新はプログラムの<a href="http://goldendict.org/">Web サイト</a>をチェックしてください。<p>(c) 2008-2013 Konstantin Isakov. GPLv3 以降の下でライセンスされています。 - - - - Working with popup - ポップアップ作業 - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">ポップアップ作業</h3>他のアクティブなアプリケーションから単語を検索するには、まず <b>[環境設定]</b> で <i>"スキャン ポップアップ機能"</i> を有効にする必要があり、次からは上の 'ポップアップ アイコンを切り替えるか、または右マウス ボタンで下のトレイ アイコンをクリックしてポップしているメニューで選択することによっていつでも有効にできます。 - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - 次に他のアプリケーションで検索したい単語の上でカーソルを止めると、説明のウィンドウがポップアップします。 - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - 次に他のアプリケーションで検索したい単語をマウスで選択 (ダブルクリックまたは長押し) すると、単語を説明するウィンドウがポップアップします。 - - - - (untitled) - (無題) - - - - (picture) - - - - - ArticleRequest - - - Expand article - - - - - From - From - - - - Collapse article - - - - - Query error: %1 - クエリ エラー: %1 - - - - Close words: - 類似語: - - - - Compound expressions: - 複合表現: - - - - Individual words: - 単語ごと: - - - - ArticleView - - - Select Current Article - - - - - Copy as text - - - - - Inspect - - - - - Resource - - - - - Audio - - - - - TTS Voice - - - - - Picture - - - - - Definition from dictionary "%1": %2 - - - - - Definition: %1 - - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - 参照されたりソースが存在しません。 - - - - The referenced audio program doesn't exist. - - - - - - ERROR: %1 - - - - - Save sound - - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - - - - - Save image - - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - - - - - &Open Link - リンクを開く(&O) - - - - Video - - - - - Video: %1 - - - - - Open Link in New &Tab - 新しいタブでリンクを開く(&T) - - - - Open Link in &External Browser - 外部ブラウザーでリンクを開く(&E) - - - - &Look up "%1" - "%1" を検索(&L) - - - - Look up "%1" in &New Tab - 新しいタブで "%1" を検索(&N) - - - - Send "%1" to input line - - - - - - &Add "%1" to history - - - - - Look up "%1" in %2 - %2 から "%1" を検索 - - - - Look up "%1" in %2 in &New Tab - 新しいタブで %2 から "%1" を検索(&N) - - - - WARNING: FFmpeg Audio Player: %1 - - - - Playing a non-WAV file - 非 WAV ファイルの再生 - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - WAV 以外のファイルの再生を有効にするには、[オーディオ] タブの "DirectShow を通じて再生する" を選択します。 - - - - Failed to run a player to play sound file: %1 - サウンド ファイルを再生するプレーヤーの実行に失敗しました: %1 - - - - Failed to create temporary file. - 一時ファイルの作成に失敗しました。 - - - - Failed to auto-open resource file, try opening manually: %1. - リソース ファイルの自動オープンに失敗しました、手動で開いています: %1。 - - - - The referenced resource failed to download. - 参照されたリソースのダウンロードに失敗しました。 - - - - Save &image... - - - - - Save s&ound... - - - - - WARNING: %1 - 警告: %1 - - - - Form - フォーム - - - - about:blank - about:blank - - - - x - x - - - - Find: - 検索: - - - - - &Previous - 前へ(&P0 - - - - - &Next - 次へ(&P) - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - 大文字と小文字を区別する(&C) - - - - Highlight &all - - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - - - - - Belarusian transliteration from latin to cyrillic (school orthography) - - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - パスワード: - - - - DictGroupWidget - - - Form - フォーム - - - - Group icon: - グループ アイコン: - - - - Shortcut: - ショートカット: - - - - None - なし - - - - From file... - ファイルから... - - - - Choose a file to use as group icon - グループ アイコンとして使用するファイルを選択します - - - - Images - イメージ - - - - All files - すべてのファイル - - - - Error - エラー - - - - Can't read the specified image file. - 指定されたイメージ ファイルを読み取ることができません。 - - - - DictGroupsWidget - - - - - - Dictionaries: - - - - - Confirmation - 確認 - - - - Are you sure you want to generate a set of groups based on language pairs? - 言語の組み合わせに基づいたグループのセットを生成しますか? - - - - Unassigned - - - - - Combine groups by source language to "%1->" - - - - - Combine groups by target language to "->%1" - - - - - Make two-side translate group "%1-%2-%1" - - - - - - Combine groups with "%1" - - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - - - - - Export headwords... - - - - - Cancel - キャンセル - - - - DictInfo - - - Total articles: - 辞書の合計: - - - - Translates from: - 翻訳元: - - - - Total words: - 単語の合計: - - - - Translates to: - 翻訳先: - - - - Open folder - - - - - Edit dictionary - - - - - Files comprising this dictionary: - この辞書を含むファイル: - - - - Description: - - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - - - - - DictListModel - - - %1 entries - %1 個のエントリ - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - 有効 - - - - Name - 名前 - - - - Address - アドレス - - - - Databases - - - - - Strategies - - - - - Icon - - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - 辞書バー - - - - &Dictionary Bar - - - - - Extended menu with all dictionaries... - - - - - Edit this group - このグループを編集 - - - - Dictionary info - - - - - Dictionary headwords - - - - - Open dictionary folder - - - - - Edit dictionary - - - - - EditDictionaries - - - &Sources - ソース(&S) - - - - - &Dictionaries - 辞書(&D) - - - - - &Groups - グループ(&G) - - - - Sources changed - ソースが変更されました - - - - Some sources were changed. Would you like to accept the changes? - いくつかのソースが変更されました。変更を承認しますか? - - - - Accept - 承認 - - - - Cancel - キャンセル - - - - Dictionaries - 辞書 - - - - ExternalViewer - - - the viewer program name is empty - - - - - FTS::FtsIndexing - - None - なし - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - なし - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - なし - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XML 分析エラー: %1 at %2,%3 - - - - Added %1 - %1 を追加しました - - - - by - - - - - Male - 男性 - - - - Female - 女性 - - - - from - - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - このエラーを解消するには [編集|辞書|ソース|Forvo] で私たちの API キーを適用してください。 - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - キャンセル - - - - Help - - - - - GermanTranslit - - - German Transliteration - ドイツ語音訳 - - - - GreekTranslit - - - Greek Transliteration - ギリシャ語音訳 - - - - GroupComboBox - - - Choose a Group (Alt+G) - グループの選択 (Alt+G) - - - - GroupSelectorWidget - - - Form - フォーム - - - - Look in - 検索 - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - グループの追加 - - - - Give a name for the new group: - 新しいグループの名前: - - - - Rename group - グループ名の変更 - - - - Give a new name for the group: - グループの新しい名前: - - - - Remove group - グループの削除 - - - - Are you sure you want to remove the group <b>%1</b>? - グループ <b>%1</b> を削除してもよろしいですか? - - - - - Remove all groups - すべてのグループを削除 - - - - Are you sure you want to remove all the groups? - すべてのグループを削除してもよろしいですか? - - - - Dictionaries available: - 利用可能な辞書: - - - - Add selected dictionaries to group (Ins) - 選択された辞書をグループに追加します (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - 選択された辞書をグループから削除します (Del) - - - - < - < - - - - Del - Del - - - - Groups: - グループ: - - - - Tab 2 - タブ 2 - - - - Create new dictionary group - 新しい辞書グループを作成します - - - - &Add group - グループの追加(&A) - - - - Create language-based groups - 言語ごとのグループを作成します - - - - Auto groups - 自動グループ - - - - Rename current dictionary group - 現在の辞書グループの名前を変更します - - - - Re&name group - グループ名の変更(&N) - - - - Remove current dictionary group - 現在の辞書グループを削除します - - - - &Remove group - グループの削除(&R) - - - - Remove all dictionary groups - すべての辞書グループを削除します - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - マウスを使ってグループ間で辞書をドラッグ アンド ドロップ、グループ内で移動、グループの順序を変更します。 - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - 戻る - - - - Forward - 進む - - - - Zoom In - 拡大 - - - - Zoom Out - 縮小 - - - - Normal Size - 通常のサイズ - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - - - - - Copy Selected - - - - - History: - - - - - %1/%2 - - - - - History size: %1 entries out of maximum %2 - - - - - Hunspell - - - Spelling suggestions: - もしかして: - - - - %1 Morphology - %1 形態 - - - - HunspellDictsModel - - - Enabled - 有効 - - - - Name - 名前 - - - - Initializing - - - Please wait... - お待ちください... - - - - - Please wait while indexing dictionary - 辞書の索引を構築している間お待ちください - - - - GoldenDict - Initializing - GoldenDict - 初期化中 - - - - Dictionary Name - 辞書名 - - - - Language - - - Afar - アファール語 - - - - Abkhazian - アブハズ語 - - - - Avestan - アベスター語 - - - - Afrikaans - アフリカーンス語 - - - - Akan - アカン語 - - - - Amharic - アムハラ語 - - - - Aragonese - アラゴン語 - - - - Arabic - アラビア語 - - - - Assamese - アッサム語 - - - - Avaric - アバル語 - - - - Aymara - アイマラ語 - - - - Azerbaijani - アゼルバイジャン語 - - - - Bashkir - バシキール語 - - - - Belarusian - ベラルーシ語 - - - - Bulgarian - ブルガリア語 - - - - Bihari - ビハール語 - - - - Bislama - ビスラマ語 - - - - Bambara - バンバラ語 - - - - Bengali - ベンガル語 - - - - Tibetan - チベット語 - - - - Breton - ブリュターニュ語 - - - - Bosnian - ボスニア語 - - - - Catalan - カタロニア語 - - - - Chechen - チェチェン語 - - - - Chamorro - チャモロ語 - - - - Corsican - コルシカ語 - - - - Cree - クリー語 - - - - Czech - チェコ語 - - - - Church Slavic - 教会スラブ語 - - - - Chuvash - チュバシュ語 - - - - Welsh - ウェールズ語 - - - - Danish - デンマーク語 - - - - German - ドイツ語 - - - - Divehi - ディベヒ語 - - - - Dzongkha - ゾンカ語 - - - - Ewe - エウェ語 - - - - Greek - ギリシャ語 - - - - English - 英語 - - - - Esperanto - エスペラント語 - - - - Spanish - スペイン語 - - - - Estonian - エストニア語 - - - - Basque - バスク語 - - - - Persian - ペルシャ語 - - - - Fulah - ラフニ語 - - - - Finnish - フィンランド語 - - - - Fijian - フィジー語 - - - - Faroese - フェロー語 - - - - French - フランス語 - - - - Western Frisian - 西フリジア語 - - - - Irish - アイルランド語 - - - - Scottish Gaelic - スコットランドゲール語 - - - - Galician - ガリシア語 - - - - Guarani - グアラニ語 - - - - Gujarati - グジャラート語 - - - - Manx - マン島語 - - - - Hausa - ハウサ語 - - - - Hebrew - ヘブライ語 - - - - Hindi - ヒンディー語 - - - - Hiri Motu - ヒリモツ語 - - - - Croatian - クロアチア語 - - - - Haitian - ハイチ語 - - - - Hungarian - ハンガリー語 - - - - Armenian - アルメニア語 - - - - Herero - ヘレロ語 - - - - Interlingua - インターリングア - - - - Indonesian - インドネシア語 - - - - Interlingue - インターリング - - - - Igbo - イボ語 - - - - Sichuan Yi - 四川イ語 - - - - Inupiaq - イヌピアク語 - - - - Ido - イド語 - - - - Icelandic - アイスランド語 - - - - Italian - イタリア語 - - - - Inuktitut - イヌクティトゥト語 - - - - Japanese - 日本語 - - - - Javanese - ジャワ語 - - - - Georgian - グルジア語 - - - - Kongo - コンゴ語 - - - - Kikuyu - キクユ語 - - - - Kwanyama - クワニャマ語 - - - - Kazakh - カザフ語 - - - - Kalaallisut - カラーリット語 - - - - Khmer - クメール語 - - - - Kannada - カンナダ語 - - - - Korean - 韓国語 - - - - Kanuri - カヌリ語 - - - - Kashmiri - カシミール語 - - - - Kurdish - クルド語 - - - - Komi - コミ語 - - - - Cornish - コーンウォール語 - - - - Kirghiz - キルギス語 - - - - Latin - ラテン語 - - - - Luxembourgish - ルクセンブルク語 - - - - Ganda - ガンダ語 - - - - Limburgish - リンブルフ語 - - - - Lingala - リンガラ語 - - - - Lao - ラオ語 - - - - Lithuanian - リトアニア語 - - - - Luba-Katanga - ルバカタンガ語 - - - - Latvian - ラトビア語 - - - - Malagasy - マラガシ語 - - - - Marshallese - マーシャル語 - - - - Maori - マオリ語 - - - - Macedonian - マケドニア語 - - - - Malayalam - マラヤーラム語 - - - - Mongolian - モンゴル語 - - - - Marathi - マラーティー語 - - - - Malay - マレー語 - - - - Maltese - マルタ語 - - - - Burmese - ビルマ語 - - - - Nauru - ナウル語 - - - - Norwegian Bokmal - ノルウェー語ブークモール - - - - North Ndebele - 北ンデベレ語 - - - - Nepali - ネパール語 - - - - Ndonga - ンドンガ語 - - - - Dutch - オランダ語 - - - - Norwegian Nynorsk - ノルウェー語ニーノシュク - - - - Norwegian - ノルウェー語 - - - - South Ndebele - 南ンデベレ語 - - - - Navajo - ナバホ語 - - - - Chichewa - チェワ語 - - - - Occitan - オック語 - - - - Ojibwa - オジブワ語 - - - - Oromo - オロモ語 - - - - Oriya - オリヤー語 - - - - Ossetian - オセット語 - - - - Panjabi - パンジャブ語 - - - - Pali - パリ語 - - - - Polish - ポーランド語 - - - - Pashto - パシュトー語 - - - - Portuguese - ポルトガル語 - - - - Quechua - ケチュア語 - - - - Raeto-Romance - レトロマン語 - - - - Kirundi - キルンディ語 - - - - Romanian - ルーマニア語 - - - - Russian - ロシア語 - - - - Kinyarwanda - キニヤルワンダ語 - - - - Sanskrit - サンスクリット語 - - - - Sardinian - サルデーニャ語 - - - - Sindhi - シンド語 - - - - Northern Sami - 北部サーミ語 - - - - Sango - サンゴ語 - - - - Serbo-Croatian - セルボ・クロアチア語 - - - - Sinhala - シンハラ語 - - - - Slovak - スロバキア語 - - - - Slovenian - スロベニア語 - - - - Samoan - サモア語 - - - - Shona - ショナ語 - - - - Somali - ソマリ語 - - - - Albanian - アルバニア語 - - - - Serbian - セルビア語 - - - - Swati - スワジ語 - - - - Southern Sotho - 北ソト語 - - - - Sundanese - スーダン語 - - - - Swedish - スウェーデン語 - - - - Swahili - スワヒリ語 - - - - Tamil - タミル語 - - - - Telugu - テルグ語 - - - - Tajik - タジク語 - - - - Thai - タイ語 - - - - Tigrinya - ティグリニア語 - - - - Turkmen - トルクメン語 - - - - Tagalog - タガログ語 - - - - Tswana - ツワナ語 - - - - Tonga - トンガ語 - - - - Turkish - トルコ語 - - - - Tsonga - ツォンガ語 - - - - Tatar - タタール語 - - - - Twi - トウィ語 - - - - Tahitian - タヒチ語 - - - - Uighur - ウイグル語 - - - - Ukrainian - ウクライナ語 - - - - Urdu - ウルドゥー語 - - - - Uzbek - ウズベク語 - - - - Venda - ベンダ語 - - - - Vietnamese - ベトナム語 - - - - Volapuk - ヴォラピュク語 - - - - Walloon - ワロン語 - - - - Wolof - ウォロフ語 - - - - Xhosa - ホサ語 - - - - Yiddish - イディッシュ語 - - - - Yoruba - ヨルバ語 - - - - Zhuang - チワン語 - - - - Chinese - 中国語 - - - - Zulu - ズールー語 - - - - Lojban - - - - - Traditional Chinese - - - - - Simplified Chinese - - - - - Other - - - - - Other Simplified Chinese dialects - - - - - Other Traditional Chinese dialects - - - - - Other Eastern-European languages - - - - - Other Western-European languages - - - - - Other Russian languages - - - - - Other Japanese languages - - - - - Other Baltic languages - - - - - Other Greek languages - - - - - Other Korean dialects - - - - - Other Turkish dialects - - - - - Other Thai dialects - - - - - Tamazight - - - - - LoadDictionaries - - - Error loading dictionaries - 辞書の読み込みエラー - - - - Main - - - Error in configuration file. Continue with default settings? - - - - - MainWindow - - Navigation - 操作 - - - - Back - 戻る - - - - Forward - 進む - - - - Scan Popup - スキャン ポップアップ - - - - Show &Main Window - メイン ウィンドウの表示(&M) - - - - - &Quit - 終了(&Q) - - - - Loading... - 読み込んでいます... - - - - Skip This Release - このリリースをスキップ - - - - You have chosen to hide a menubar. Use %1 to show it back. - - - - - Ctrl+M - - - - - Page Setup - ページ設定 - - - - No printer is available. Please install one first. - 利用可能なプリンターがありません。まずインストールしてください。 - - - - Print Article - 記事の印刷 - - - - Article, Complete (*.html) - - - - - Article, HTML Only (*.html) - - - - - Save Article As - 名前を付けて記事を保存 - - - Html files (*.html *.htm) - HTML ファイル (*.html *.htm) - - - - Error - エラー - - - - Can't save article: %1 - 記事を保存できません: %1 - - - - %1 dictionaries, %2 articles, %3 words - %1 個の辞書、%2 個の記事、 %3 個の単語 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - ホットキー監視機構の初期化に失敗しました。<br>XServer の RECORD 拡張がオンになっていることを確認してください。 - - - - New Release Available - 新しいリリースが利用可能です - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - GoldenDict のバージョン <b>%1</b> のダウンロードが利用可能です。<br>ダウンロード ページへ移動するには<b>ダウンロード</b>をクリックします。 - - - - Download - ダウンロード - - - - - Look up in: - 検索する場所: - - - Show Names in Dictionary Bar - 辞書バーに名前を表示する - - - - &Menubar - - - - - Found in Dictionaries: - - - - - Pronounce Word (Alt+S) - 単語の発音 (Alt+S) - - - - Show Names in Dictionary &Bar - - - - - Show Small Icons in &Toolbars - - - - - &Navigation - - - - - Zoom In - 拡大 - - - - Zoom Out - 縮小 - - - - Normal Size - 通常のサイズ - - - - Words Zoom In - 単語の拡大 - - - - Words Zoom Out - 単語の縮小 - - - - Words Normal Size - 通常の単語のサイズ - - - - Close current tab - 現在のタブを閉じる - - - - Close all tabs - すべてのタブを閉じる - - - - Close all tabs except current - 現在以外のすべてのタブを閉じる - - - - Look up: - 検索: - - - - All - すべて - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Saving article... - - - - - The main window is set to be always on top. - - - - - Import history from file - - - - - Import error: invalid data in file - - - - - History import complete - - - - - Import error: - - - - - Dictionary info - - - - - Dictionary headwords - - - - - Open dictionary folder - - - - - Edit dictionary - - - - - Opened tabs - 開いているタブ - - - - Open Tabs List - - - - - (untitled) - (無題) - - - - %1 - %2 - - - - WARNING: %1 - 警告: %1 - - - - &Hide - - - - - Export history to file - - - - - - Text files (*.txt);;All files (*.*) - - - - - History export complete - - - - - Export error: - - - - GoldenDict - GoldenDict - - - - - Welcome! - ようこそ! - - - - &File - ファイル(&F) - - - - &Edit - 編集(&E) - - - - &Help - ヘルプ(&H) - - - - &Preferences... - 環境設定(&P)... - - - - F2 - F2 - - - &Groups... - グループ(&G)... - - - - &View - 表示(&V) - - - - &Zoom - ズーム&Z) - - - - H&istory - 履歴(&I) - - - - &Dictionaries... - 辞書(&D)... - - - - F3 - F3 - - - - &Search Pane - - - - - Search - - - - - &Results Navigation Pane - - - - - &History Pane - - - - - F4 - F4 - - - - &Homepage - ホーム ページ(&H) - - - - &About - バージョン情報(&A) - - - - About GoldenDict - GoldenDict のバージョン情報 - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - アプリケーションを終了します - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - フォーラム(&F) - - - - &Close To Tray - トレイへ閉じる(&C) - - - - Minimizes the window to tray - トレイへウィンドウを最小化します - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - 記事の保存(&S) - - - - Save Article - 記事の保存 - - - - &Print - 印刷(&P) - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - ページ設定(&U) - - - - Print Pre&view - - - - - &Rescan Files - - - - - &New Tab - - - - - &Always on Top - - - - - Always on Top - - - - - Ctrl+O - - - - - - - Menu Button - - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - 印刷プレビュー - - - Rescan Files - ファイルの再スキャン - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - クリア(&C) - - - - New Tab - - - - - Ctrl+T - - - - - &Configuration Folder - - - - - - &Show - - - - - Ctrl+H - - - - - &Export - - - - - &Import - - - - Search Pane - 検索ペイン - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - - - - - Failed loading article from %1, reason: %2 - - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XML 分析エラー: %1 at %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XML 分析エラー: %1 at %2,%3 - - - - MediaWikisModel - - - Enabled - 有効 - - - - Name - 名前 - - - - Address - アドレス - - - - Icon - - - - - OrderAndProps - - - Form - フォーム - - - - Dictionary order: - 辞書の順序: - - - ... - ... - - - - Inactive (disabled) dictionaries: - 非アクティブ (無効) な辞書: - - - - Dictionary information - 辞書の情報 - - - - Name: - 名前: - - - - Total articles: - 辞書の合計: - - - - Total words: - 単語の合計: - - - - Translates from: - 翻訳元: - - - - Translates to: - 翻訳先: - - - - Description: - - - - - Files comprising this dictionary: - この辞書を含むファイル: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - アイテムをドラッグ アンド ドロップして順序を調整します。使用を無効にするには非アクティブなグループへ辞書をドロップします。 - - - - Sort by name - - - - - Sort by languages - - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - パス - - - - Recursive - 再帰 - - - - Preferences - - - Preferences - 環境設定 - - - - &Interface - インターフェイス(&I) - - - - Tabbed browsing - タブ ブラウズ - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - 通常、新しいタブを開くとすぐに切り替わります。 -しかしこれがオンだと、新しいタブに切り替えずに -開きます。 - - - - Open new tabs in background - 背景で新しいタブを開く - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - これがオンだと、新しいタブは現在の -アクティブなものの後に開かれます。 -そうでなければ最後に追加されます。 - - - - Open new tabs after the current one - 現在の後に新しいタブを開く - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - 有効だと、メイン ウィンドウを開いたりするのに使われる -アイコンがシステム トレイ領域に表示されます。 - - - - Enable system tray icon - システム トレイ アイコンを有効にする - - - - With this on, the application starts directly to system tray without showing -its main window. - これがオンだと、アプリケーションはメイン ウィンドウを表示することなく -直接システム トレイに入って起動します。 - - - - Start to system tray - システム トレイに入れて起動する - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - これがオンだと、メイン ウィンドウを閉じるとアプリケーションを閉じる代わりに -非表示になります。 - - - - Close to system tray - システム トレイへ閉じる - - - - Startup - スタートアップ - - - - Start with system - システムと起動する - - - - Interface language: - インターフェイス言語: - - - - Display style: - 表示スタイル: - - - - Double-click translates the word clicked - ダブルクリックでクリックされた単語を翻訳する - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - スキャン ポップアップ モードを既定でオンにするかを選択します。チェックされている場合、 -プログラムは常にスキャン ポップアップがアクティブで起動します。 - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - 通常、ポップアップをアクティブにするには単語を -選択している間中選択されたキーを押している -必要があります。これが有効だと、選択されたキーは -選択が完了した直後にも押すことができます。 - - - - Hotkeys - ホットキー - - - - Use the following hotkey to show or hide the main window: - メイン ウィンドウを表示または非表示にするのに次のホットキーを使用します: - - - - Use the following hotkey to translate a word from clipboard: - クリップボードからの単語を翻訳するのに次のホットキーを使用します: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - ホットキーはグローバルであり、GoldenDict が背景で起動中であればすべてのプログラムで脈絡なく実行します。 - - - - &Scan Popup - スキャン ポップアップ(&S) - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - - - - - Hide single tab - - - - - Ctrl-Tab navigates tabs in MRU order - - - - - Automatically starts GoldenDict after operation system bootup. - オペレーション システムのブートアップの後に GoldenDict が自動的に起動します。 - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - - - - - ESC key hides main window - - - - - Turn this option on if you want to select words by single mouse click - - - - - Select word by single click - - - - - Add-on style: - - - - - Help language - - - - - Adjust this value to avoid huge context menus. - - - - - Context menu dictionaries limit: - - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - 有効だと、翻訳ポップアップ ウィンドウは画面上のある単語の上で -マウスをポイントする (Windows) か、またはマウスである単語を -選択する (Linux) たびに表示されます。有効だと、メイン ウィンドウ -またはトレイ アイコンからオンとオフを切り替えることができます。 - - - - Enable scan popup functionality - スキャン ポップアップ機能を有効にする - - - - Start with scan popup turned on - スキャン ポップアップをオンにして起動する - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - これが有効だと、ポップアップは単語の選択範囲が変更したときに -すべての選択されたキーが押されている状態でのみ表示されます。 - - - - Only show popup when all selected keys are kept pressed: - すべての選択されたキーが押されているときのみポップアップを表示する: - - - - Left Ctrl only - 左 Ctrl のみ - - - - Left Ctrl - 左 Ctrl - - - - Right Shift only - 右 Shift のみ - - - - Right Shift - 右 Shift - - - - Alt key - Alt キー - - - - Alt - Alt - - - - Ctrl key - Ctrl キー - - - - Ctrl - Ctrl - - - - Left Alt only - 左 Alt のみ - - - - Left Alt - 左 Al - - - - Shift key - Shift キー - - - - Shift - Shift - - - - Right Alt only - 右 Alt のみ - - - - Right Alt - 右 Alt - - - - Right Ctrl only - 右 Ctrl のみ - - - - Right Ctrl - 右 Ctrl - - - - Left Shift only - 左 Shift のみ - - - - Left Shift - 左 Shift - - - - Windows key or Meta key - Windows キーまたは Meta キー - - - - Win/Meta - Win/Meta - - - - Keys may also be pressed afterwards, within - キーはその後 - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - 誤判定を避けるため、ここで指定される -一定の秒数の間選択が完了した -後にのみ監視されます。 - - - - secs - 秒まで押せる - - - - Send translated word to main window instead of to show it in popup window - - - - - Send translated word to main window - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">注意: RECORD 拡張が破損した X.Org XServer リリースを実行しているようです。GoldenDict のホットキーが動作しない可能性があります。これはサーバー自体で修正される必要があります。次の</span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">バグ エントリ</span></a>を参照して<span style=" color:#ff0000;">できればそこにコメントを残してください。</span></p></body></html> - - - - &Audio - オーディオ(&A) - - - - Pronunciation - 発音 - - - - Auto-pronounce words in main window - メイン ウィンドウで単語を自動的に発音する - - - - Auto-pronounce words in scan popup - スキャン ポップアップで単語を自動的に発音する - - - - Playback - 再生 - - - - Play audio files via FFmpeg(libav) and libao - - - - - Use internal player - - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - - - - - Collapse articles more than - - - - - Articles longer than this size will be collapsed - - - - - symbols - - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Использовать внутренние средства Windows для проигрывания. Поддерживаются -только файлы типа .wav, однако воспроизведение всегда работает хорошо. - - - Play via Windows native API - Windows 標準の API を通じて再生する - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Phonon フレームワークを通じてオーディオを再生します。やや不安定かもしれませんが、 -ほとんどのオーディオ ファイル フォーマットをサポートします。 - - - Play via Phonon - Phonon を通じて再生する - - - - Use any external program to play audio files - オーディオ ファイルの再生に外部プログラムを使用します - - - - Use external program: - 外部プログラムを使用する: - - - - &Network - ネットワーク(&N) - - - - Enable if you wish to use a proxy server -for all program's network requests. - すべてのプログラムのネットワーク要求にプロキシ -サーバーを使用したい場合は有効にします。 - - - - Use proxy server - プロキシ サーバーを使用する - - - - Type: - 種類: - - - - Host: - ホスト: - - - - Port: - ポート: - - - - User: - ユーザー: - - - - Password: - パスワード: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - これを有効にすると GoldenDict はブラウズ中のサイト以外の場所にある -コンテンツ (イメージ、フレーム) を無効にすることによってほとんどの広告を -ブロックします。特定のサイトが破損する場合は、これを無効にしてみてください。 - - - - Disallow loading content from other sites (hides most advertisements) - 他のサイトからのコンテンツの読み込みを無効にする (ほとんどの広告を非表示にします) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - - - - - Enable web plugins - - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - - - - - Do not identify GoldenDict in HTTP headers - - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - これが有効だと、プログラムは GoldenDict の新しく更新された -バージョンのダウンロードが利用可能かを定期的にチェックします。 -利用可能であれば、プログラムはそれをユーザーにお知らせし、 -ダウンロード ページを開くか確認します。 - - - - Check for new program releases periodically - 定期的に新しいプログラム リリースをチェックする - - - - Ad&vanced - - - - - ScanPopup extra technologies - - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - - - - - Use &IAccessibleEx - - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - - Use &UIAutomation - - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - - Use &GoldenDict message - - - - - History - - - - - Turn this option on to store history of the translated words - - - - - Store &history - - - - - Specify the maximum number of entries to keep in history. - - - - - Maximum history size: - - - - - History saving interval. If set to 0 history will be saved only during exit. - - - - - Save every - - - - - minutes - - - - - Articles - - - - - Turn this option on to always expand optional parts of articles - - - - - Expand optional &parts - - - - - System default - システム既定 - - - - - Default - 既定 - - - - Modern - - - - - Lingvo - Lingvo - - - - Babylon - - - - - Lingoes - - - - - Lingoes-Blue - - - - Play via DirectShow - DirectShow を通じて再生する - - - - Changing Language - 言語の変更 - - - - Restart the program to apply the language change. - 言語の変更を適用するにはプログラムを再起動します。 - - - - ProgramTypeEditor - - - Audio - - - - - Plain Text - - - - - Html - - - - - Prefix Match - - - - - Unknown - - - - - Programs::RunInstance - - - No program name was given. - - - - - The program has crashed. - - - - - The program has returned exit code %1. - - - - - ProgramsModel - - - Enabled - 有効 - - - - Type - - - - - Name - 名前 - - - - Command Line - - - - - Icon - - - - - QObject - - - - Article loading error - - - - - - Article decoding error - - - - - avformat_alloc_context() failed. - - - - - av_malloc() failed. - - - - - avio_alloc_context() failed. - - - - - avformat_open_input() failed: %1. - - - - - avformat_find_stream_info() failed: %1. - - - - - Could not find audio stream. - - - - - Codec [id: %1] not found. - - - - - avcodec_open2() failed: %1. - - - - - Cannot find usable audio output device. - - - - - Unsupported sample format. - - - - - ao_open_live() failed: - - - - - No driver. - - - - - This driver is not a live output device. - - - - - A valid option key has an invalid value. - - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - - - - - Unknown error. - - - - - avcodec_alloc_frame() failed. - - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - - - - - Quick Search - - - - - Clear Search - - - - - ResourceToSaveHandler - - - - ERROR: %1 - - - - - Resource saving error: - - - - - The referenced resource failed to download. - 参照されたリソースのダウンロードに失敗しました。 - - - - Romaji - - - Hepburn Romaji for Hiragana - ヘボン式ローマ字のひらがな - - - - Hepburn Romaji for Katakana - ヘボン式ローマ字のカタカナ - - - - RussianTranslit - - - Russian Transliteration - ロシア語音訳 - - - - ScanPopup - - - Dialog - ダイアログ - - - word - 単語 - - - - Back - 戻る - - - - Forward - 進む - - - List Matches (Alt+M) - 一覧の一致 (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - 単語の発音 (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - - - - - Alt+W - - - - - Shows or hides the dictionary bar - 辞書バーの表示または非表示を切り替えます - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - ウィンドウを画面に固定してサイズの変更ができる -ようにするにはこのピンを使用します。 - - - - - - - - ... - ... - - - GoldenDict - GoldenDict - - - - - %1 - %2 - - - - - SoundDirsModel - - - Path - パス - - - - Name - 名前 - - - - Icon - - - - - Sources - - - Text to Speech - - - - - (not available in portable version) - (ポータブル バージョンでは利用できません) - - - - - - Choose a directory - ディレクトリを選択します - - - - - - - - - Confirm removal - 削除の確認 - - - - - Remove directory <b>%1</b> from the list? - 一覧からディレクトリ <b>%1</b> を削除しますか? - - - - - - Remove site <b>%1</b> from the list? - 一覧からサイト <b>%1</b> を削除しますか? - - - - Remove program <b>%1</b> from the list? - - - - - Files - ファイル - - - - Paths to search for the dictionary files: - 辞書ファイルを検索するパス: - - - - - - - - - &Add... - 追加(&A)... - - - - - - - - - &Remove - 削除(&R) - - - - Re&scan now - 今すぐ再スキャン(&S) - - - - Sound Dirs - サウンド ディレクトリ - - - - Make dictionaries from bunches of audiofiles by adding paths here: - ここにパスを追加してオーディオ ファイルのディレクトリを作成します: - - - - Morphology - 形態 - - - - Path to a directory with Hunspell/Myspell dictionaries: - Hunspell/Myspell 辞書のあるディレクトリへのパス: - - - - &Change... - 変更(&C)... - - - - Available morphology dictionaries: - 利用可能な形態辞書: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - それぞれの形態辞書は検索の語幹と誤入力された単語のスペルの提案を提供する個別の補助辞書として表示されます。適切な辞書を使用するには適切なグループの末尾へそれらを追加します。 - - - - Websites - Web サイト - - - - Any websites. A string %GDWORD% will be replaced with the query word: - どんな Web サイトでも。文字列 %GDWORD% がクエリの単語に置換されます: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - また、CP1251 には %GD1251%、ISO 8859-1 には %GDISO1% を使用します。 - - - - Programs - - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - <a href="http://www.forvo.com/">Forvo.com</a> からの生の発音です。このサイトで人々は単語の発音を録音および共有します。GoldenDict からそれらを聴くことができます。 - - - - Enable pronunciations from Forvo - Forvo からの発音を有効にする - - - - API Key: - API キー: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - 現在 Forvo の利用には API が必要です。この欄を空にして -将来利用できなくなる可能性のある既定のキーを使用するか、 -またはサイトで登録して自分のキーを取得します。 - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">こちら</span></a>で自分のキーを取得するか、または空にして無効のものを使用します。</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - - - - - Language codes (comma-separated): - 言語コード (コンマ区切り): - - - - List of language codes you would like to have. Example: "en, ru". - 使用したい言語コードの一覧です。例: "en, ja"。 - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - 言語コードの完全な一覧は<a href="http://www.forvo.com/languages-codes/">こちら</a>です。 - - - - Transliteration - 音訳 - - - - Russian transliteration - ロシア語音訳 - - - - Greek transliteration - ギリシャ語音訳 - - - - German transliteration - ドイツ語音訳 - - - - Belarusian transliteration - - - - - Enables to use the Latin alphabet to write the Japanese language - 日本語の記述のラテン文字の使用を有効にします - - - - Japanese Romaji - 日本語ローマ字 - - - - Systems: - システム: - - - - The most widely used method of transcription of Japanese, -based on English phonology - 英語の音韻に基づいた、最も広く使われている日本語の音写法です - - - - Hepburn - ヘボン式 - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 仮名の表記法に 1 対 1 の関係を持つ、最も規則的な表記法です。 -ISO 3602 として標準化されています - -GoldenDict にはまだ実装されていません。 - - - - Nihon-shiki - 日本式 - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 日本式に基づいていますが、現代の標準的な日本語に合わせて変更されています。 -ISO 3602 として標準化されています - -GoldenDict にはまだ実装されていません。 - - - - Kunrei-shiki - 訓令式 - - - - Syllabaries: - 仮名: - - - - Hiragana Japanese syllabary - ひらがな - - - - Hiragana - ひらがな - - - - Katakana Japanese syllabary - カタカナ - - - - Katakana - カタカナ - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikipedia (MediaWiki) サイト: - - - - StylesComboBox - - - None - なし - - - - TextToSpeechSource - - - Selected voice engines: - - - - - &Add - - - - - &Remove - 削除(&R) - - - - Preferences - 環境設定 - - - - Volume: - - - - - Rate: - - - - - Preview - - - - - Available voice engines: - - - - - Text to be previewed: - - - - - Type text to be previewed here. - - - - - &Preview - - - - - No TTS voice available - - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - - - - - Confirm removal - 削除の確認 - - - - Remove voice engine <b>%1</b> from the list? - - - - - TranslateBox - - - Type a word or phrase to search dictionaries - - - - - Drop-down - - - - - VoiceEnginesModel - - - Enabled - 有効 - - - - Name - 名前 - - - - Id - - - - - Icon - - - - - WebSitesModel - - - Enabled - 有効 - - - - Name - 名前 - - - - Address - アドレス - - - - Icon - - - - - WordFinder - - - Failed to query some dictionaries. - いくつかの辞書のクエリに失敗しました。 - - - - WordList - - - WARNING: %1 - 警告: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ko_KR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ko_KR.ts deleted file mode 100644 index 54dd4bd818..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ko_KR.ts +++ /dev/null @@ -1,4813 +0,0 @@ - - - - - About - - - About - 정보 - - - - GoldenDict dictionary lookup program, version - 골든딕 사전검색 프로그램,버전 - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - 개발진: - - - - Licensed under GNU GPLv3 or later - Licensed under GNU GPLv3 or later - - - - [Unknown] - [모름] - - - - Based on Qt %1 (%2, %3 bit) - Based on Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - 사전 펼치기 - - - - Collapse article - 사전 감추기 - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - <b>%2</b>그룹에서 <b>%1</b>에 대한 번역을 찾을 수 없습니다. - - - - No translation was found in group <b>%1</b>. - <b>%1</b>그룹에서 번역을 찾을 수 없습니다. - - - - Welcome! - 환영합니다! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center"><b>GoldenDict</b>사용을 환영합니다!</h3><p>프로그램 사용을 위해서 먼저 <b>편집|사전</b> 에서 사용할 사전의 경로, Wikipedia와 다른 온라인 검색사이트 등록를 등록하고 사전의 표시순서와 그룹을 지정하십시오. <p>그러면 사용을 위한 준비가 끝났습니다! 지금 창의 왼쪽에서 검색어를 입력하거나 실행중인 <a href="팝업창 사용">다른 프로그램에서 단어검색</a>을 할 수 있습니다. <p>프로그램을 자신에 맞게 설정하려면 <b>편집|설정</b>메뉴를 사용하십시오. 모든 설정항목은 말풍선 도움말이 있으니 기능을 잘 모르는 경우 꼭 확인하시기 바랍니다. <p>더 많은 도움이 필요하거나 질문, 제안사항이 있는 경우 또는 다른 사용자들의 생각이 궁금하면 프로그램의 <a href="http://goldendict.org/forum/">포럼</a>을 방문하십시오.<p>프로그램 업데이트는 <a href="http://goldendict.org/">웹사이트</a>를 방문하십시오.<p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - - - - Working with popup - 팝업창 사용 - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">팝업창 사용</h3><p style="text-indent:1em">실행중인 프로그램에서 단어를 검색하려면 먼저 <b>설정</b>에서 <b>스캔팝업기능</b>을 활성화해야 합니다. 다음 아무때나 위의 팝업아이콘을 누르거나 혹은 작업표시줄의 아이콘을 우클릭한 뒤 선택하면 활성화할 수 있습니다. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - 이제 실행중인 다른 프로그램에서 검색할 단어 위에 커서를 옮기면 팝업창으로 사전이 나타납니다. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - 이제 다른 프로그램에서 검색할 단어를 선택하면(더블클릭 또는 마우스로 선택) 팝업창으로 사전이 나타납니다. - - - - (untitled) - (제목없음) - - - - (picture) - (그림) - - - - ArticleRequest - - - Expand article - 사전 펼치기 - - - - From - From - - - - Collapse article - 사전 감추기 - - - - Query error: %1 - 검색오류: %1 - - - - Close words: - 인접 어휘: - - - - Compound expressions: - 복합 어구: - - - - Individual words: - 개별 어휘: - - - - ArticleView - - - Select Current Article - 현재 항목 선택 - - - - Copy as text - 텍스트로 복사 - - - - Inspect - 요소검사 - - - - Resource - 리소스 - - - - Audio - 오디오 - - - - TTS Voice - TTS 음성 - - - - Picture - 그림 - - - - Video - 비디오 - - - - Video: %1 - 비디오: %1 - - - - Definition from dictionary "%1": %2 - 사전의 정의 "%1": %2 - - - - Definition: %1 - 정의: %1 - - - - - The referenced resource doesn't exist. - 참조할 리소스가 존재하지 않습니다. - - - - The referenced audio program doesn't exist. - 참조할 오디오 프로그램이 존재하지 않습니다. - - - - - ERROR: %1 - 오류: %1 - - - - Save sound - 사운드 저장 - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - 사운드 파일 (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;모든 파일 (*.*) - - - - Save image - 이미지 저장 - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - 이미지 파일 (*.bmp *.jpg *.png *.tif);;모든 파일 (*.*) - - - Resource saving error: - 리소스 저장 오류: - - - - &Open Link - 링크 열기(&O) - - - - Open Link in New &Tab - 새 탭에서 링크 열기(&T) - - - - Open Link in &External Browser - 외부 브라우저에서 링크 열기(&E) - - - - &Look up "%1" - "%1" 검색(&L) - - - - Look up "%1" in &New Tab - 새 탭에서 "%1" 검색(&N) - - - - Send "%1" to input line - "%1"을 입력줄로 보냄 - - - - - &Add "%1" to history - 검색기록에 "%1" 추가(&A) - - - - Look up "%1" in %2 - %2에서 "%1" 검색 - - - - Look up "%1" in %2 in &New Tab - 새 탭을 열고 %2에서 "%1" 검색(&N) - - - - WARNING: FFmpeg Audio Player: %1 - 경고: FFmpeg 오디오 플레이어: %1 - - - Playing a non-WAV file - WAV 아닌 파일 재생 - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - WAV 아닌 파일을 재생할 수 있게 하려면 편집|설정 메뉴의 오디오탭에서 "DirectShow로 재생"을 선택하십시오. - - - Bass library not found. - Bass library를 찾을 수 없습니다. - - - Bass library can't play this sound. - Bass library가 이 사운드를 재생할 수 없습니다. - - - - Failed to run a player to play sound file: %1 - 사운드를 재생할 플레이어를 실행할 수 없습니다: %1 - - - - Failed to create temporary file. - 임시파일을 만들 수 없습니다. - - - - Failed to auto-open resource file, try opening manually: %1. - 리소스파일을 여는데 실패했습니다. 수동으로 열어 보십시오: %1. - - - - The referenced resource failed to download. - 참조할 리소스를 다운로드하지 못했습니다. - - - - Save &image... - 이미지 저장(&i)... - - - - Save s&ound... - 사운드 저장(&o)... - - - - WARNING: %1 - 경고: %1 - - - - Form - 형태 - - - - about:blank - about:blank - - - - x - x - - - - Find: - 찾기: - - - - - &Previous - 이전(&P) - - - - - &Next - 다음(&N) - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - 대소문자 구분(&C) - - - - Highlight &all - 검색어 강조(&a) - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - 벨로루시어 문자변환 (라틴-> 키릴) (고전 철자법) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - 벨로루시어 문자변환 (라틴-> 키릴) (학교 철자법) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - 벨로루시어 문자변환 (키릴문자에서 고전 철자법과 학교 철자법의 차이를 -순화) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - 프록시 인증이 필요함 - - - - You need to supply a Username and a Password to access via proxy - 프록시를 통해 접근하기 위해서는 사용자명과 암호를 입력해야 합니다 - - - - Username: - 사용자 이름: - - - - Password: - 암호: - - - - DictGroupWidget - - - Form - 형태 - - - - Group icon: - 그룹 아이콘: - - - - Shortcut: - 단축키: - - - - None - 없음 - - - - From file... - 파일 지정... - - - - Choose a file to use as group icon - 그룹아이콘으로 사용할 파일을 선택하십시오 - - - - Images - 이미지 - - - - All files - 모든 파일 - - - - Error - 오류 - - - - Can't read the specified image file. - 지정된 이미지파일을 읽을 수 없습니다. - - - - DictGroupsWidget - - - - - - Dictionaries: - 사전: - - - - Confirmation - 확인 - - - - Are you sure you want to generate a set of groups based on language pairs? - 사전의 언어에 따라 그룹을 만들겠습니까? - - - - Unassigned - 미지정 - - - - Combine groups by source language to "%1->" - 소스언어에 따라 그룹을 합칩니다 "%1->" - - - - Combine groups by target language to "->%1" - 번역언어에 따라 그룹을 합칩니다 "->%1" - - - - Make two-side translate group "%1-%2-%1" - 양방향 번역그룹을 만듭니다 "%1-%2-%1" - - - - - Combine groups with "%1" - "%1"와 그룹을 합칩니다 - - - - DictHeadwords - - - Search mode - 검색 모드 - - - - This element determines how filter string will be interpreted - 이 요소는 필터가 어떻게 해석될 것인지 결정합니다 - - - - If checked on the symbols case will be take in account when filtering - 체크하면 필터링시에 대소문자가 고려될 것입니다 - - - - Match case - 대소문자 구분 - - - - Exports headwords to file - 표제어들을 파일로 저장합니다 - - - - Export - 내보내기 - - - - Help - 도움말 - - - - OK - OK - - - - Press this button to apply filter to headwords list - 표제어목록에 필터를 적용하려면 이 버튼을 누르시오 - - - - Apply - 적용 - - - - If checked any filter changes will we immediately applied to headwords list - 체크하면 필터 변경이 즉시 표제어목록에 적용될 것입니다 - - - - Auto apply - 자동 적용 - - - - Filter: - 필터: - - - - Filter string (fixed string, wildcards or regular expression) - 필터 (고정문자열, 와일드카드 또는 정규식) - - - - Text - 텍스트 - - - - Wildcards - 와일드카드 - - - - RegExp - 정규식 - - - - Unique headwords total: %1, filtered: %2 - 전체 표제어 수: %1, 필터링 후: %2 - - - - Save headwords to file - 표제어들을 파일로 저장합니다 - - - - Text files (*.txt);;All files (*.*) - 텍스트파일(*.txt);;모든 파일(*.*) - - - - Export headwords... - 표제어 내보내기... - - - - Cancel - 취소 - - - - DictInfo - - - Total articles: - 총항목: - - - - Translates from: - 검색언어: - - - - Total words: - 총어휘: - - - - Translates to: - 번역언어: - - - - Open folder - 폴더 열기 - - - - Edit dictionary - 사전 편집 - - - - Files comprising this dictionary: - 사전의 구성파일: - - - - Description: - 설명: - - - - Show all unique dictionary headwords - 사전의 모든 표제어들을 표시합니다 - - - - Headwords - 표제어 - - - - Edit the dictionary via command: -%1 - 명령행으로 사전 편집: -%1 - - - - DictListModel - - - %1 entries - %1 항목 - - - - DictServer - - - Url: - Url: - - - - Databases: - 데이터베이스: - - - - Search strategies: - 검색 조건: - - - - Server databases - - - - - DictServersModel - - - Enabled - 활성 - - - - Name - 이름 - - - - Address - 주소 - - - - Databases - 데이터베이스 - - - - Strategies - 조건 - - - - Icon - 아이콘 - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - 콤마로 구분된 데이터베이스 목록 -(공백 또는 "*" 는 데이터베이스 전체) - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - 콤마로 구분된 검색조건 목록 -(공백은 "prefix" 조건) - - - - DictionaryBar - - - &Dictionary Bar - 사전모음(&D) - - - - Extended menu with all dictionaries... - 모든 사전 메뉴 확장... - - - - Edit this group - 그룹 편집 - - - - Dictionary info - 사전 정보 - - - - Dictionary headwords - 사전 표제어 - - - - Open dictionary folder - 사전 폴더 열기 - - - - Edit dictionary - 사전 편집 - - - - EditDictionaries - - - &Sources - 사전소스(&S) - - - - - &Dictionaries - 사전(&D) - - - - - &Groups - 그룹(&G) - - - - Sources changed - 소스가 변경되었습니다 - - - - Some sources were changed. Would you like to accept the changes? - 일부 소스가 변경되었습니다. 변경을 수락하시겠습니까? - - - - Accept - 수락 - - - - Cancel - 취소 - - - - Dictionaries - 사전 - - - - ExternalViewer - - - the viewer program name is empty - 외부 프로그램이 지정되지 않았습니다 - - - - FTS::FtsIndexing - - None - 없음 - - - - FTS::FullTextSearchDialog - - - Full-text search - 전문검색 - - - - Whole words - 단어 단위로 찾기 - - - - Plain text - 텍스트 - - - - Wildcards - 와일드카드 - - - - RegExp - 정규식 - - - - Max distance between words (%1-%2): - 단어사이의 최대 거리 (%1-%2): - - - - Max articles per dictionary (%1-%2): - 사전당 최대 항목 (%1-%2): - - - - - - Articles found: - 검색된 항목: - - - - Now indexing: - 목록작성중: - - - - None - 없음 - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - 검색어에 있는 CJK 기호들이 "단어 단위로 찾기" "텍스트" 검색모드에 사용될 수 없습니다. - - - - The search line must contains at least one word containing - 검색 줄은 적어도 한 개 단어를 포함해야 합니다 - - - - or more symbols - 자 이상 - - - - No dictionaries for full-text search - 전문검색을 위한 사전이 없음 - - - - FTS::Indexing - - None - 없음 - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XML 문법오류: %2행 %3열에서 %1 - - - - Added %1 - %1 추가됨 - - - - by - by - - - - Male - 남 - - - - Female - 여 - - - - from - from - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - 이 오류를 없애기 위해서는 편집|사전|소스|Forvo 메뉴로 가서, 자신의 API-key를 신청하십시오. - - - - FullTextSearchDialog - - - - Search - 검색 - - - - Match case - 대소문자 구분 - - - - Mode: - 모드: - - - - Articles found: - 검색된 항목: - - - - Available dictionaries in group: - 그룹에서 이용가능한 사전: - - - - Wait for indexing: - 목록작성을 위해 대기중: - - - - Total: - 전체: - - - - Indexed: - 목록작성완료: - - - - Now indexing: None - 목록작성중: 없음 - - - - Cancel - 취소 - - - - Help - 도움말 - - - - GermanTranslit - - - German Transliteration - 독일어 문자변환 - - - - GreekTranslit - - - Greek Transliteration - 그리스어 문자변환 - - - - GroupComboBox - - - Choose a Group (Alt+G) - 그룹을 선택합니다(Alt+G) - - - - GroupSelectorWidget - - - Form - Form - - - - Look in - Look in - - - - Groups - - - Group tabs - 그룹 탭 - - - - Open groups list - 그룹 목록을 엽니다 - - - - Add group - 그룹 추가 - - - - Give a name for the new group: - 새 그룹의 이름을 지정합니다: - - - - Rename group - 그룹 이름 변경 - - - - Give a new name for the group: - 새로운 그룹 이름을 지정합니다: - - - - Remove group - 그룹 삭제 - - - - Are you sure you want to remove the group <b>%1</b>? - <b>%1</b>그룹을 삭제하시겠습니까? - - - - - Remove all groups - 모든 그룹 삭제 - - - - Are you sure you want to remove all the groups? - 모든 그룹을 삭제하시겠습니까? - - - - Dictionaries available: - 사용 가능한 사전: - - - - Add selected dictionaries to group (Ins) - 선택한 사전들을 그룹에 추가합니다(Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - 선택한 사전들을 그룹에서 삭제합니다(Del) - - - - < - < - - - - Del - Del - - - - Groups: - 그룹: - - - - Tab 2 - 탭 2 - - - - Create new dictionary group - 새 사전 그룹을 만듭니다 - - - - &Add group - 그룹 추가(&A) - - - - Create language-based groups - 언어별로 그룹을 만듭니다 - - - - Auto groups - 자동 그룹 - - - - Rename current dictionary group - 현재 사전 그룹의 이름을 바꿉니다 - - - - Re&name group - 그룹 이름 바꾸기(&N) - - - - Remove current dictionary group - 현재 사전 그룹을 삭제합니다 - - - - &Remove group - 그룹 삭제(&R) - - - - Remove all dictionary groups - 모든 사전 그룹을 삭제합니다 - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - 사전을 마우스로 끌어 그룹으로 지정/삭제, 그룹내 순서 변경을 할 수 있습니다(&D). - - - - Help::HelpWindow - - - GoldenDict help - 골든딕 도움말 - - - - Home - 홈 - - - - Back - 뒤로 - - - - Forward - 앞으로 - - - - Zoom In - 확대 - - - - Zoom Out - 축소 - - - - Normal Size - 보통 - - - - Content - 내용 - - - - Index - 목록 - - - - HistoryPaneWidget - - - &Delete Selected - 선택 삭제(&D) - - - - Copy Selected - 선택 복사 - - - - History: - 검색기록: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - 총 검색기록: 최대 %2 중 %1 - - - - Hunspell - - - Spelling suggestions: - 철자법 제안: - - - - %1 Morphology - %1 철자법사전 - - - - HunspellDictsModel - - - Enabled - 활성 - - - - Name - 이름 - - - - Initializing - - - Please wait... - 기다려 주십시오... - - - - - Please wait while indexing dictionary - 사전색인을 만드는 동안 기다리십시오 - - - - GoldenDict - Initializing - 골든딕 - 시작 중 - - - - Dictionary Name - 사전 이름 - - - - Language - - - Afar - 아파르어 - - - - Abkhazian - 압하스어 - - - - Avestan - 아베스타어 - - - - Afrikaans - 아프리칸스어 - - - - Akan - 아칸어 - - - - Amharic - 암하라어 - - - - Aragonese - 아라곤어 - - - - Arabic - 아랍어 - - - - Assamese - 아샘어 - - - - Avaric - 아바르어 - - - - Aymara - 아이마라어 - - - - Azerbaijani - 아제리어 - - - - Bashkir - 바슈키르어 - - - - Belarusian - 벨로루시어 - - - - Bulgarian - 불가리아어 - - - - Bihari - 비하르어 - - - - Bislama - 비슐라마어 - - - - Bambara - 밤바라어 - - - - Bengali - 벵골어 - - - - Tibetan - 티벳어 - - - - Breton - 브르타뉴어 - - - - Bosnian - 보스니아어 - - - - Catalan - 카탈로니아어 - - - - Chechen - 체첸어 - - - - Chamorro - 차모로어 - - - - Corsican - 코르시칸어 - - - - Cree - 크리어 - - - - Czech - 체코어 - - - - Church Slavic - 슬라브어 - - - - Chuvash - 추바슈어 - - - - Welsh - 웨일스어 - - - - Danish - 덴마크어 - - - - German - 독일어 - - - - Divehi - 디베히어 - - - - Dzongkha - 종카어 - - - - Ewe - 에웨어 - - - - Greek - 그리스어 - - - - English - 영어 - - - - Esperanto - 에스페란토어 - - - - Spanish - 스페인어 - - - - Estonian - 에스토니아어 - - - - Basque - 바스크어 - - - - Persian - 페르시아어 - - - - Fulah - 풀라어 - - - - Finnish - 핀란드어 - - - - Fijian - 피지어 - - - - Faroese - 페로어 - - - - French - 프랑스어 - - - - Western Frisian - 프리지아어 - - - - Irish - 아일랜드어 - - - - Scottish Gaelic - 게일어 - - - - Galician - 갈리시아어 - - - - Guarani - 과라니어 - - - - Gujarati - 구자라트어 - - - - Manx - 맨 섬어 - - - - Hausa - 하우사어 - - - - Hebrew - 히브리어 - - - - Hindi - 힌두어 - - - - Hiri Motu - 히리 모투어 - - - - Croatian - 크로아티아어 - - - - Haitian - 아이티어 - - - - Hungarian - 헝가리어 - - - - Armenian - рмянский - - - - Herero - 헤레로어 - - - - Interlingua - 국제어(Interlingua) - - - - Indonesian - 인도네시아어 - - - - Interlingue - 국제어(Interlingue) - - - - Igbo - 이그보어 - - - - Sichuan Yi - 쓰촨 이어 - - - - Inupiaq - 이누피아크어 - - - - Ido - 이도어 - - - - Icelandic - 아이슬란드어 - - - - Italian - 이탈리아어 - - - - Inuktitut - 이누크티투트어 - - - - Japanese - 일본어 - - - - Javanese - 자바어 - - - - Georgian - 그루지야어 - - - - Kongo - 콩고어 - - - - Kikuyu - 키쿠유어 - - - - Kwanyama - 콰냐마어 - - - - Kazakh - 카자흐어 - - - - Kalaallisut - 그린란드어 - - - - Khmer - 크메르어 - - - - Kannada - 칸나다어 - - - - Korean - 한국어 - - - - Kanuri - 카누리어 - - - - Kashmiri - 카시미르어 - - - - Kurdish - 쿠르드어 - - - - Komi - 코미어 - - - - Cornish - 콘월어 - - - - Kirghiz - 키르기스어 - - - - Latin - 라틴어 - - - - Luxembourgish - 룩셈부르크어 - - - - Ganda - 간다어 - - - - Limburgish - 림뷔르흐어 - - - - Lingala - 링갈라어 - - - - Lao - 라오어 - - - - Lithuanian - 리투아니아어 - - - - Luba-Katanga - 루바카탕가어 - - - - Latvian - 라트비아어 - - - - Malagasy - 마다가스카르어 - - - - Marshallese - 마셜어 - - - - Maori - 마오리어 - - - - Macedonian - 마케도니아어 - - - - Malayalam - 말라얄람어 - - - - Mongolian - 몽골어 - - - - Marathi - 마라티어 - - - - Malay - 말레이어 - - - - Maltese - 몰타어 - - - - Burmese - 버마어 - - - - Nauru - 나우루어 - - - - Norwegian Bokmal - 노르웨이어, 복말 - - - - North Ndebele - 북부 은데벨레어 - - - - Nepali - 네팔어 - - - - Ndonga - 은동가어 - - - - Dutch - 네덜란드어 - - - - Norwegian Nynorsk - 노르웨이어, 니노르스크 - - - - Norwegian - 노르웨이어 - - - - South Ndebele - 남부 은데벨레어 - - - - Navajo - 나바호어 - - - - Chichewa - 니안자어 - - - - Occitan - 오크어 - - - - Ojibwa - 오지브와어 - - - - Oromo - 오로모어 - - - - Oriya - 오리야어 - - - - Ossetian - 오세트어 - - - - Panjabi - 펀잡어 - - - - Pali - 팔리어 - - - - Polish - 폴란드어 - - - - Pashto - 파슈토어 - - - - Portuguese - 포르투갈어 - - - - Quechua - 케추아어 - - - - Raeto-Romance - 로망슈어 - - - - Kirundi - 룬디어 - - - - Romanian - 루마니아어 - - - - Russian - 러시아어 - - - - Kinyarwanda - 키냐르완다어 - - - - Sanskrit - 산스크리트어 - - - - Sardinian - 사르데냐어 - - - - Sindhi - 신드어 - - - - Northern Sami - 북부 사미어 - - - - Sango - 상고어 - - - - Serbo-Croatian - 세르보크로아티아어 - - - - Sinhala - 싱할라어 - - - - Slovak - 슬로바키아어 - - - - Slovenian - 슬로베니아어 - - - - Samoan - 사모아어 - - - - Shona - 쇼나어 - - - - Somali - 소말리어 - - - - Albanian - 알바니아어 - - - - Serbian - 세르비아어 - - - - Swati - 스와티어 - - - - Southern Sotho - 남부 소토어 - - - - Sundanese - 순다어 - - - - Swedish - 스웨덴어 - - - - Swahili - 스와힐리어 - - - - Tamil - 타밀어 - - - - Telugu - 텔루구어 - - - - Tajik - 타지키스탄어 - - - - Thai - 태국어 - - - - Tigrinya - 티그리냐어 - - - - Turkmen - 투르크멘어 - - - - Tagalog - 타갈로그어 - - - - Tswana - 츠와나어 - - - - Tonga - 통가어 - - - - Turkish - 터키어 - - - - Tsonga - 총가어 - - - - Tatar - 타타르어 - - - - Twi - 트위어 - - - - Tahitian - 타히티어 - - - - Uighur - 위구르어 - - - - Ukrainian - 우크라이나어 - - - - Urdu - 우르두어 - - - - Uzbek - 우즈베크어 - - - - Venda - 벤다어 - - - - Vietnamese - 베트남어 - - - - Volapuk - 볼라퓌크어 - - - - Walloon - 왈론어 - - - - Wolof - 월로프어 - - - - Xhosa - 코사어 - - - - Yiddish - 이디시어 - - - - Yoruba - 요루바어 - - - - Zhuang - 좡어 - - - - Chinese - 중국어 - - - - Zulu - 줄루어 - - - - Lojban - 로지반어 - - - - Traditional Chinese - 중국어(번체) - - - - Simplified Chinese - 중국어(간체) - - - - Other - 기타 언어 - - - - Other Simplified Chinese dialects - 기타 중국어(간체) 방언 - - - - Other Traditional Chinese dialects - 기타 중국어(번체) 방언 - - - - Other Eastern-European languages - 기타 동유럽 언어 - - - - Other Western-European languages - 기타 서유럽 언어 - - - - Other Russian languages - 기타 러시아 언어 - - - - Other Japanese languages - 기타 일본 언어 - - - - Other Baltic languages - 기타 발트 언어 - - - - Other Greek languages - 기타 그리스 언어 - - - - Other Korean dialects - 기타 한국어 방언 - - - - Other Turkish dialects - 기타 터키어 방언 - - - - Other Thai dialects - 기타 태국어 방언 - - - - Tamazight - 타마지트어 - - - - LoadDictionaries - - - Error loading dictionaries - 사전 호출 실패 - - - - Main - - - Error in configuration file. Continue with default settings? - 설정파일 오류. 기본설정으로 계속하시겠습니까? - - - - MainWindow - - - Back - 뒤로 - - - - Forward - 앞으로 - - - - Scan Popup - 스캔팝업 - - - - Show &Main Window - 메인창 보이기(&M) - - - - - &Quit - 종료(&Q) - - - - Loading... - 불러오는 중... - - - - Skip This Release - 이 버전을 무시합니다 - - - - You have chosen to hide a menubar. Use %1 to show it back. - 메뉴 모음 숨기기를 선택하셨습니다. 다시 보이게 하려면 %1을 사용하십시오. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - 페이지 설정 - - - - No printer is available. Please install one first. - 프린터가 없습니다. 먼저 프린터를 설치하십시오. - - - - Print Article - 항목 인쇄 - - - - Save Article As - 다른 이름으로 항목 저장 - - - Html files (*.html *.htm) - Html 파일(*.html *.htm) - - - - Error - 오류 - - - - Can't save article: %1 - 항목을 저장할 수 없습니다: %1 - - - - %1 dictionaries, %2 articles, %3 words - 사전수: %1,항목수: %2,어휘수: %3 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - 단축키 감시메커니즘을 시작할 수없습니다..<br>XServer에서 RECORD extension이 활성화 되어 있는지 확인하십시오. - - - - New Release Available - 새 버전이 있습니다 - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - 골든딕 <b>%1</b>버전을 다운로드할 수 있습니다.<br><b>다운로드</b>를 누르면 다운로드 페이지로 연결됩니다. - - - - Download - 다운로드 - - - - - Look up in: - 검색그룹: - - - - &Menubar - 메뉴 모음(&M) - - - - Found in Dictionaries: - 검색된 사전: - - - - Pronounce Word (Alt+S) - 발음 듣기(Alt+S) - - - - Show Names in Dictionary &Bar - 사전모음에 이름 보이기(&B) - - - - Show Small Icons in &Toolbars - 도구모음에 작은 아이콘(&T) - - - - &Navigation - 탐색 도구모음(&N) - - - - Zoom In - 확대 - - - - Zoom Out - 축소 - - - - Normal Size - 보통 - - - - Words Zoom In - 검색어 확대 - - - - Words Zoom Out - 검색어 축소 - - - - Words Normal Size - 검색어 보통 - - - - Close current tab - 현재 탭 닫기 - - - - Close all tabs - 모든 탭 닫기 - - - - Close all tabs except current - 다른 탭 닫기 - - - - Look up: - 검색: - - - - All - All - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - Accessibility API가 활성화 되지 않았습니다 - - - - The main window is set to be always on top. - 메인창이 항상 위에 보이도록 설정합니다. - - - - Import history from file - 검색기록을 파일에서 불러옵니다 - - - - Import error: invalid data in file - 불러오기 오류: 파일의 데이타가 유효하지 않습니다 - - - - History import complete - 검색기록 불러오기를 완료했습니다 - - - - Import error: - 불러오기 오류: - - - - Dictionary info - 사전 정보 - - - - Dictionary headwords - 사전 표제어 - - - - Open dictionary folder - 사전 폴더 열기 - - - - Edit dictionary - 사전 편집 - - - - Opened tabs - 열린 탭 - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - 사전에서 찾을 문자열. 와일드카드 '*', '?' 괄호문자 '[...]'가 허용됩니다. -'*', '?', '[', ']' 기호를 찾으려면 각각 '\*', '\?', '\[', '\]'를 사용하십시오 - - - - Open Tabs List - 탭 목록을 엽니다 - - - - (untitled) - (제목없음) - - - - %1 - %2 - %1 - %2 - - - - Article, Complete (*.html) - 항목, 전부 (*.html) - - - - Article, HTML Only (*.html) - 항목, HTML 만 (*.html) - - - - Saving article... - 항목 저장... - - - - &Hide - 숨기기(&H) - - - - Export history to file - 검색기록을 파일로 저장합니다 - - - - - Text files (*.txt);;All files (*.*) - 텍스트파일(*.txt);;모든 파일(*.*) - - - - History export complete - 검색기록 저장을 완료했습니다 - - - - Export error: - 저장 오류: - - - - - Welcome! - 환영합니다! - - - - &File - 파일(&F) - - - - &Edit - 편집(&E) - - - - &Help - 도움말(&H) - - - - &Search Pane - 검색창(&S) - - - - &Results Navigation Pane - 검색결과 탐색창(&R) - - - - &Preferences... - 설정...(&P) - - - - F2 - F2 - - - - &View - 보기(&V) - - - - &Zoom - 글자크기(&Z) - - - - H&istory - 검색기록(&I) - - - - Search - 검색 - - - - &History Pane - 검색기록창(&H) - - - - &Dictionaries... - 사전...(&D) - - - - F3 - F3 - - - - F4 - F4 - - - - &Homepage - 홈페이지(&H) - - - - &About - 정보(&A) - - - - About GoldenDict - 골든딕 정보 - - - - GoldenDict reference - 골든딕 도움말 - - - - F1 - F1 - - - - Quit from application - 프로그램 종료 - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - 포럼(&F) - - - - &Close To Tray - 트레이로 닫기(&C) - - - - Minimizes the window to tray - 창을 트레이로 최소화합니다 - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - 검색항목 저장(&S) - - - - Save Article - 검색항목을 저장합니다 - - - - &Print - 인쇄(&P) - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - 페이지 설정(&U) - - - - Print Pre&view - 인쇄 미리보기(&V) - - - - &Rescan Files - 파일 다시 읽기(&R) - - - - &New Tab - 새 탭(&N) - - - - &Always on Top - 항상 위에(&A) - - - - Always on Top - 항상 위에 - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - 메뉴 단추 - - - - Search in page - 페이지 내 검색 - - - - Ctrl+F - Ctrl+F - - - - Full-text search - 전문검색 - - - - Ctrl+Shift+F - Ctrl+Shift+F - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - 기록 비우기(&C) - - - - New Tab - 새 탭 - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - 설정폴더 열기(&C) - - - - - &Show - 보이기(&S) - - - - Ctrl+H - Ctrl+H - - - - &Export - 내보내기(&E) - - - - &Import - 불러오기(&I) - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - 사전파일이 훼손되었습니다 - - - - Failed loading article from %1, reason: %2 - %1에서 항목을 표시하지 못함, 이유: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XML 문법오류: %2행 %3열에서 %1 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XML 문법오류: %2행 %3열에서 %1 - - - - MediaWikisModel - - - Enabled - 활성 - - - - Name - 이름 - - - - Address - 주소 - - - - Icon - 아이콘 - - - - OrderAndProps - - - Form - Form - - - - Dictionary order: - 사전 순서: - - - ... - ... - - - - Inactive (disabled) dictionaries: - 비활성(사용중지) 사전: - - - - Dictionary information - 사전 정보 - - - - Name: - 이름: - - - - Total articles: - 총항목: - - - - Total words: - 총어휘: - - - - Translates from: - 검색언어: - - - - Translates to: - 번역언어: - - - - Description: - 설명: - - - - Files comprising this dictionary: - 사전의 구성파일: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - 마우스끌기로 순서를 조정하십시오. 사전을 사용하지 않으려면 비활성 그룹으로 옮기십시오. - - - - Sort by name - 이름순 정렬 - - - - Sort by languages - 언어순 정렬 - - - - Dictionary headwords - 사전 표제어 - - - - Dictionaries active: %1, inactive: %2 - 사용중: %1, 사용중지: %2 - - - - PathsModel - - - Path - 경로 - - - - Recursive - 하위 폴더 검색 - - - - Preferences - - - Preferences - 설정 - - - - &Interface - 화면(&I) - - - - Tabbed browsing - 탭 설정 - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - 새로운 탭을 열면 기본값으로 새 탭이 활성화되지만 -이 항목을 선택하면 새 탭을 열 때 활성화되지 않고 -배경으로 열립니다. - - - - Open new tabs in background - 새 탭을 배경으로 열기 - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - 이 항목을 선택하면 새 탭이 현재의 활성탭 다음에 열립니다. -기본값은 제일 마지막 위치에 새 탭이 열립니다. - - - - Open new tabs after the current one - 새 탭을 현재 탭 다음에 열기 - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - 이 항목을 선택하면 시스템트레이에 아이콘을 만들어 -메인창을 열거나 다른 작업을 할 수 있습니다. - - - - Enable system tray icon - 트레이 아이콘 사용 - - - - With this on, the application starts directly to system tray without showing -its main window. - 이 항목을 선택하면 프로그램이 실행할 때 메인창을 보이지 않고 -시스템트레이에서 시작합니다. - - - - Start to system tray - 시스템 트레이에서 시작 - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - 이 항목을 선택하면 메인창을 닫을 때 프로그램을 종료하지 않고 시스템 트레이로 보냅니다. - - - - Close to system tray - 시스템 트레이로 닫기 - - - - Startup - 시작프로그램 - - - - Start with system - 시스템 시작시 실행 - - - - Interface language: - 언어: - - - - Display style: - 사전 스타일: - - - - Double-click translates the word clicked - 더블클릭으로 단어 검색 - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - 기본값으로 스캔팝업모드를 켤 것인지 설정합니다. 이 항목을 선택하면, -프로그램이 시작할 때 항상 스캔팝업기능이 활성화됩니다. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Perhaps a better way: -Normally, the popup is active only if the selected -keys have been caught in the process of separation. If you are in this mode, -selected key can be pressed after the text is highlighted. - 팝업사전을 실행할 때 기본값은 설정된 키를 누른 상태에서 -원하는 단어를 선택해야 합니다. 이 항목을 선택하면 선택된 키를 -단어를 선택한 직후에 눌러도 동일한 기능을 합니다. - - - - Hotkeys - 단축키 - - - - Use the following hotkey to show or hide the main window: - 메인창 보이기/감추기를 위해 다음 단축키를 사용합니다: - - - - Use the following hotkey to translate a word from clipboard: - 단어를 클립보드에 복사하여 검색할 때 다음 단축키를 사용합니다: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - 단축키는 전역(Global) 키이므로 골든딕이 배경에서 실행중이면 모든 프로그램, 상황에서 작동합니다. - - - - &Scan Popup - 스캔팝업(&S) - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - 탭이 하나만 열려 있을 때 탭 도구상자를 보이지 않게 하려면 선택하십시오. - - - - Hide single tab - 탭이 하나뿐이면 숨김 - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab키로 탭 이동(최근사용기록순) - - - - Automatically starts GoldenDict after operation system bootup. - 시스템 시작시 GoldenDict을 자동으로 실행합니다. - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - ESC 키를 누르면 기본값으로 검색어 입력상자로 포커스가 바뀝니다. -이 항목을 선택하면 메인창을 최소화여 화면에서 숨깁니다. - - - - ESC key hides main window - ESC 키로 메인창을 숨김 - - - - Turn this option on if you want to select words by single mouse click - 사전 내용 중에서 마우스를 클릭하여 단어를 선택하려면 선택하십시오 - - - - Select word by single click - 클릭으로 단어 선택 - - - - Add-on style: - Add-on 스타일: - - - - Help language - 도움말 언어 - - - - Adjust this value to avoid huge context menus. - 컨텍스트메뉴가 너무 커지지 않게 이 값을 조정합니다. - - - - Context menu dictionaries limit: - 컨텍스트메뉴 사전 한도: - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - 이 항목을 선택하면 스크린 위의 단어에 마우스포인터를 가져가거나(윈도우) -마우스로 단어를 선택(리눅스)할 때마다 팝업사전 창이 나타납니다. 항목을 선택하면 -메인창이나 트레이 아이콘에서 기능을 시작/중지할 수 있습니다. - - - - Enable scan popup functionality - 스캔팝업 기능을 활성화합니다 - - - - Start with scan popup turned on - 프로그램 시작시 스캔팝업 활성화 - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - 이 항목을 선택하면 마우스가 다른 단어 위로 이동할 때 설정된 모든 키가 -눌려진 상태에서만 팝업이 나타납니다. - - - - Only show popup when all selected keys are kept pressed: - 선택한 모든 키가 눌러진 상태일 때만 팝업창을 보입니다: - - - - Left Ctrl only - 왼쪽 Ctrl 키만 - - - - Left Ctrl - 왼쪽 Ctrl - - - - Right Shift only - 오른쪽 Shift 키만 - - - - Right Shift - 오른쪽 Shift - - - - Alt key - Alt 키 - - - - Alt - Alt - - - - Ctrl key - Ctrl 키 - - - - Ctrl - Ctrl - - - - Left Alt only - 왼쪽 Alt 키만 - - - - Left Alt - 왼쪽 Alt - - - - Shift key - Shift 키 - - - - Shift - Shift - - - - Right Alt only - 오른쪽 Alt 키만 - - - - Right Alt - 오른쪽 Alt - - - - Right Ctrl only - 오른쪽 Ctrl 키만 - - - - Right Ctrl - 오른쪽 Ctrl - - - - Left Shift only - 왼쪽 Shift 키만 - - - - Left Shift - 왼쪽 Shift - - - - Windows key or Meta key - 윈도우 단축키 또는 메타 키 - - - - Win/Meta - Win/Meta - - - - Keys may also be pressed afterwards, within - 키를 나중에 입력하는 것을 허용합니다: 이내 - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - 오작동을 막기 위해서 키입력은 영역선택 후 -다음에 지정된 시간 동안에만 감시됩니다. - - - - secs - 초 이내 - - - - Send translated word to main window instead of to show it in popup window - 검색내용을 팝업창에 표시하지 않고 메인창으로 보냅니다 - - - - Send translated word to main window - 검색내용을 메인창에 표시 - - - - Play audio files via FFmpeg(libav) and libao - 오디오 파일 재생시 FFmpeg(libav)와 libao 사용 - - - - Use internal player - 내장 플레이어 사용 - - - - System proxy - 시스템 Proxy - - - - Custom proxy - 사용자 Proxy - - - - Custom settings - 사용자 설정 - - - - Full-text search - 전문검색 - - - - Allow full-text search for: - 전문검색을 허용: - - - - Don't search in dictionaries containing more than - 항목수가 다음을 초과시 검색하지 않음 : - - - - articles (0 - unlimited) - 항목 (0 - 무제한) - - - - Select this option to automatic collapse big articles - 이 옵션을 선택하면 표시내용이 많은 항목을 자동으로 접히게 하여 숨깁니다 - - - - Collapse articles more than - 자동으로 숨길 항목의 크기: - - - - Articles longer than this size will be collapsed - 항목의 크기가 이 값을 초과 하면 내용을 접어 표시합니다 - - - - symbols - 자 이상 - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Bass library를 통해 음성을 재생합니다. 이 모드를 사용하려면 -골든딕 폴더에 bass.dll 파일이 있어야 합니다(http://www.un4seen.com). - - - Play via Bass library - Bass library를 통해 재생 - - - - Ad&vanced - 고급(&V) - - - - ScanPopup extra technologies - 스캔팝업 추가기능 - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - 커서 아래 단어를 호출하기 위해 IAccessibleEx 기술을 사용해 보십시오. -이 기술을 지원하는 일부 프로그램에서만 작동합니다 -(예: 인터넷익스플로러 9). -그런 프로그램을 사용하지 않는다면 이 옵션을 선택할 필요가 없습니다. - - - - Use &IAccessibleEx - IAccessibleEx 사용(&I) - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - 커서 아래 단어를 호출하기 위해 IAccessibleEx 기술을 사용해 보십시오. -이 기술을 지원하는 일부 프로그램에서만 작동합니다. -그런 프로그램을 사용하지 않는다면 이 옵션을 선택할 필요가 없습니다. - - - - Use &UIAutomation - UIAutomation 사용(&U) - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - 커서 아래 단어를 호출하기 위해 GoldenDict message를 사용해 보십시오. -이 기술을 지원하는 일부 프로그램에서만 작동합니다. -그런 프로그램을 사용하지 않는다면 이 옵션을 선택할 필요가 없습니다. - - - - Use &GoldenDict message - GoldenDict message 사용(&G) - - - - History - 검색기록 - - - - Turn this option on to store history of the translated words - 이 항목을 선택하면 사전의 검색기록을 저장합니다 - - - - Store &history - 기록 저장(&H) - - - - Specify the maximum number of entries to keep in history. - 검색기록에 저장할 최대 항목수를 지정하십시오. - - - - Maximum history size: - 검색기록 최대크기: - - - - History saving interval. If set to 0 history will be saved only during exit. - 검색기록을 자동으로 저장하는 간격. 0으로 지정하면 종료시에만 저장됩니다. - - - - Save every - 저장 간격: - - - - minutes - 분 마다 - - - - Articles - 검색내용 - - - - Turn this option on to always expand optional parts of articles - 이 항목을 선택하면 사전의 옵션항목을 항상 확장하여 보여줍니다 - - - - Expand optional &parts - 옵셕항목 확장(&P) - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: RECORD extension이 작동하지 않는 X.Org XServer를 구동하고 있는 것 같습니다. 골든딕의 단축키가 아마 작동하지 않을 것입니다. 다음의 </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">버그 항목</span></a>을 참고하고 <span style=" color:#ff0000;" 원한다면 댓글을 남겨 주십시오.</span></p></body></html> - - - - &Audio - 음성(&А) - - - - Pronunciation - 발음 - - - - Auto-pronounce words in main window - 메인창에서 발음 자동 재생 - - - - Auto-pronounce words in scan popup - 스캔팝업창에서 발음 자동 재생 - - - - Playback - 재생 - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - 윈도우에 내장된 재생 API를 사용합니다. .wav 파일만 재생할 수 있으나 -안정적으로 작동합니다. - - - Play via Windows native API - 윈도우 내장 API를 통해 재생 - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Phonon 프레임워크를 통해 오디오를 재생합니다. 약간 불안정할 수 있지만 -대부분의 오디오파일 포멧을 지원합니다. - - - Play via Phonon - Phonon을 통해 재생 - - - - Use any external program to play audio files - 외부 프로그램을 통하여 음성을 재생합니다 - - - - Use external program: - 외부 프로그램 사용: - - - - &Network - 네트워크(&N) - - - - Enable if you wish to use a proxy server -for all program's network requests. - 프로그램의 모든 네트워크 요청에 대해 proxy 서버를 -사용하기 원하면 이 항목을 선택하십시오. - - - - Use proxy server - Proxy 서버 사용 - - - - Type: - 종류: - - - - Host: - 호스트: - - - - Port: - 포트: - - - - User: - 사용자: - - - - Password: - 암호: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - 이 항목을 선택하면 골든딕이 탐색중인 사이트 외부에서 전달되는 내용(이미지, 프레임)을 -허용하지 않음으로써 대부분의 광고를 차단할 것입니다. 이것 때문에 만약 사이트가 깨져 -보인다면 이 항목을 해제해 보십시오. - - - - Disallow loading content from other sites (hides most advertisements) - 사이트 외부 자료 허용 안함(대부분의 광고를 차단함) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - 이 항목을 선택하면 온라인 사전에서 플래시나 다른 플러그인을 통해 -제공하는 음성발음을 들을 수 있습니다. -플러그인이 작동하기 위해서는 미리 설치되어 있어야 합니다. - - - - Enable web plugins - 웹 플러그인 허용 - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - 일부 사이트는 HTTP 헤더를 통해서 GoldenDict을 탐지하여 요청을 블록합니다. -이런 문제를 우회하려면 옵션을 선택하십시오. - - - - Do not identify GoldenDict in HTTP headers - HTTP 헤더에 GoldenDict을 표시하지 않음 - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - 이 항목을 선택하면 골든딕이 정기적으로 다운로드할 새로운 업데이트가 있는지 -검색합니다. 새로운 업데이트가 있으면 사용자에게 알려주고 다운로드 페이지를 -안내합니다. - - - - Check for new program releases periodically - 정기적으로 업데이트 검사 - - - - System default - 시스템 기본값 - - - - - Default - 기본값 - - - - Modern - Modern - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - DirectShow를 통해 재생 - - - - Changing Language - 언어 변경 - - - - Restart the program to apply the language change. - 언어변경을 적용하려면 프로그램을 다시 시작하십시오. - - - - ProgramTypeEditor - - - Audio - 오디오 - - - - Plain Text - 텍스트 - - - - Html - Html - - - - Prefix Match - 접두사 검색 - - - - Unknown - 모름 - - - - Programs::RunInstance - - - No program name was given. - 프로그램 이름이 없습니다. - - - - The program has crashed. - 프로그램이 다운되었습니다. - - - - The program has returned exit code %1. - 프로그램이 종료코드 %1를 전송했습니다. - - - - ProgramsModel - - - Enabled - 활성 - - - - Type - 종류 - - - - Name - 이름 - - - - Command Line - 명령행 - - - - Icon - 아이콘 - - - - QObject - - - - Article loading error - 사전항목 로딩 오류 - - - - - Article decoding error - 사전항목 디코딩 오류 - - - - avformat_alloc_context() failed. - avformat_alloc_context() failed. - - - - av_malloc() failed. - av_malloc() failed. - - - - avio_alloc_context() failed. - avio_alloc_context() failed. - - - - avformat_open_input() failed: %1. - avformat_open_input() failed: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() failed: %1. - - - - Could not find audio stream. - 오디오 스트림을 찾을 수 없습니다. - - - - Codec [id: %1] not found. - [id: %1] 코덱을 찾을 수 없습니다. - - - - avcodec_open2() failed: %1. - avcodec_open2() failed: %1. - - - - Cannot find usable audio output device. - 사용할 수 있는 오디오 장치를 찾을 수 없습니다. - - - - Unsupported sample format. - 지원되지 않는 샘플 포멧 - - - - ao_open_live() failed: - ao_open_live() failed: - - - - No driver. - 드라이버 없음. - - - - This driver is not a live output device. - 이 드라이버는 라이브 출력장치가 아닙니다. - - - - A valid option key has an invalid value. - 유효한 옵션키가 유효하지 않은 값을 가지고 있습니다. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - 장치를 열수 없습니다: %1, 채널: %2, 샘플레이트: %3, 비트: %4. - - - - Unknown error. - 알 수 없는 오류. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() failed. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - 사전 검색/필터 (Ctrl+F) - - - - Quick Search - 빠른 검색 - - - - Clear Search - 검색어 지우기 - - - - ResourceToSaveHandler - - - - ERROR: %1 - 오류: %1 - - - - Resource saving error: - 리소스 저장 오류: - - - - The referenced resource failed to download. - 참조할 리소스를 다운로드하지 못했습니다. - - - - Romaji - - - Hepburn Romaji for Hiragana - 히가라나의 햅번식 로마자 표기법 - - - - Hepburn Romaji for Katakana - 가타가나 햅번식 로마자 표기법 - - - - RussianTranslit - - - Russian Transliteration - 러시아어 문자변환 - - - - ScanPopup - - - Dialog - - - - - Back - 뒤로 - - - - Forward - 앞으로 - - - - Pronounce Word (Alt+S) - 발음 듣기(Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - 단어를 메인창으로 보냅니다(Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - 사전도구상자를 보이거나 숨깁니다 - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - 핀 아이콘을 선택하면 창을 항상 화면 맨 위에 표시하고, -팝업창 크기, 사전모음의 위치 등을 조절할 수 있습니다. - - - - - - - - ... - ... - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - 경로 - - - - Name - 이름 - - - - Icon - 아이콘 - - - - Sources - - - Text to Speech - 음성 합성 - - - - (not available in portable version) - (포터블 버전에서는 설정할 수 없습니다) - - - - - - Choose a directory - 폴더 선택 - - - - - - - - - Confirm removal - 삭제 확인 - - - - - Remove directory <b>%1</b> from the list? - <b>%1</b>폴더를 목록에서 삭제하시겠습니까? - - - - - - Remove site <b>%1</b> from the list? - <b>%1</b>사이트를 목록에서 삭제하시겠습니까? - - - - Remove program <b>%1</b> from the list? - 프로그램 <b>%1</b>을 목록에서 삭제하시겠습니까? - - - - Files - 파일 - - - - Paths to search for the dictionary files: - 사전파일을 찾을 경로: - - - - - - - - - &Add... - 추가...(&A) - - - - - - - - - &Remove - 제거(&R) - - - - Re&scan now - 파일 재검색(&S) - - - - Sound Dirs - 음성 - - - - Make dictionaries from bunches of audiofiles by adding paths here: - 오디오 파일이 있는 경로를 지정해서 음성사전을 만듭니다: - - - - Morphology - 철자법사전 - - - - Path to a directory with Hunspell/Myspell dictionaries: - 사전 경로: - - - - &Change... - 변경...(&C) - - - - Available morphology dictionaries: - 사용가능한 철자법사전: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - 각 철자법사전은 별도의 분리된 -보조사전 역할을 하며 검색을 위 -한 어간과 오타에 대해서 수정된 -철자를 제안합니다. -철자교정기능을 이용하기 위해서 -각 사전그룹에 해당하는 사전을 -추가하십시오. - - - - Websites - 웹사이트 - - - - Any websites. A string %GDWORD% will be replaced with the query word: - 검색어가 위치할 자리에 문자열 %GDWORD%를 입력합니다: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - 또 다른 방법으로 CP1251코드에는 %GD1251%, ISO 8859-1코드에는 %GDISO1%를 대신 쓸 수 있습니다. - - - - Programs - 프로그램 - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - 외부 프로그램. 문자열 %GDWORD%는 검색어로 대체되어 표준 입력으로 전달됩니다. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - <a href="http://www.forvo.com/">forvo.com</a>에서 라이브 음성 듣기. 이 사이트에서는 누구나 자기 목소리로 세계 각 언어의 단어들을 녹음하고 공유할 수 있는 기능을 제공하고 -있으며. 그것들을 골든딕에서 연결하여 들을 수 있습니다. - - - - - - Enable pronunciations from Forvo - Forvo에서 발음 듣기 사용 - - - - API Key: - API 키: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - 현재 Forvo 사용을 위해서는 API 키가 필요합니다. 기본키를 사용하려면 -여기를 비워두면 됩니다.기본키는 앞으로 사용할 수 없게 될 수 있습니다. -개인키를 얻으려면 사이트에 등록하십시오. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - 별도의 개인키를 <a href="http://api.forvo.com/key/">여기</a>서 얻거나, 비워두고 기본키를 사용하십시오. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://api.forvo.com/key/">여기</a>서 개인키를 얻거나, 아니면 비워두고 기본키를 사용하십시오..</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - ≪언어코드형식에 따라 개별지정하는 방법≫ -CP1251 → %GD1251%, ISO 8859-1 → %GDISO1%, ISO 8859-16 → %GDISO16%, Big-5 → %GDBIG5, Big5-HKSCS → %GDBIG5HKSCS%, -GBK와 GB18030 → %GDGBK%, Shift-JIS → %GDSHIFTJIS% - - - - DICT servers - DICT 서버 - - - - DICT servers: - DICT 서버: - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - 외부 프로그램. 문자열 %GDWORD%는 검색어로 대체됩니다. 그런 문자열이 제시되지 않으면 단어는 표준 입력으로 전달됩니다. - - - - Language codes (comma-separated): - 언어코드 (콤마로 구분): - - - - List of language codes you would like to have. Example: "en, ru". - 사용할 언어코드 목록. 예: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - 언어코드의 전체목록은 <a href="http://www.forvo.com/languages-codes/">여기</a>서 얻을 수 있습니다. - - - - Transliteration - 문자변환 - - - - Russian transliteration - 러시아어 문자변환 - - - - Greek transliteration - 그리스어 문자변환 - - - - German transliteration - 독일어 문자변환 - - - - Belarusian transliteration - 벨라루스어 문자변환 - - - - Enables to use the Latin alphabet to write the Japanese language - 알파벳으로 일본어를 입력할 수 있게 합니다 - - - - Japanese Romaji - 일본어 로마자 입력 - - - - Systems: - 로마자 표기법: - - - - The most widely used method of transcription of Japanese, -based on English phonology - 가장 널리 사용되는 일본어 로마자 표기방법으로서, -영어 음성학을 기초로 하고 있습니다 - - - - Hepburn - 헵번식 - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 가잠 표준적인 표기법으로 가나의 철자법과 일대일 대응관계를 가지고 -ISO 3602에서 표준으로 승인되었습니다. - -골든딕에는 아직 도입되어 있지 않습니다. - - - - Nihon-shiki - 일본식 - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 일본식 표기법을 기본으로 하지만 현대표준어를 위해 수정된 표기법으로서, - ISO 3602로 표준으로 승인되었습니다. - -골든딕에는 아직 도입되어 있지 않습니다. - - - - Kunrei-shiki - 훈령식 - - - - Syllabaries: - 문자표: - - - - Hiragana Japanese syllabary - 히라가나 일본어 문자표 - - - - Hiragana - 히라가나 - - - - Katakana Japanese syllabary - 가타가나 일본어 문자표 - - - - Katakana - 가타가나 - - - - Wikipedia - 위키백과 - - - - Wikipedia (MediaWiki) sites: - 위키백과(MediaWiki) 사이트: - - - - StylesComboBox - - - None - 없음 - - - - TextToSpeechSource - - - Selected voice engines: - 선택된 음성엔진: - - - - &Add - 추가(&A) - - - - &Remove - 제거(&R) - - - - Preferences - 설정 - - - - Volume: - Volume: - - - - Rate: - Rate: - - - - Preview - 미리듣기 - - - - Available voice engines: - 설치된 음성엔진: - - - - Text to be previewed: - 미리듣기 할 텍스트: - - - - Type text to be previewed here. - 여기에 미리듣기 할 텍스트를 언어에 맞게 입력하십시오. - - - - &Preview - 미리듣기(&P) - - - - No TTS voice available - 설치된 TTS 음성이 없습니다 - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - 설치된 TTS 음성을 찾을 수 없습니다.<br>컴퓨터에 적어도 하나의 TTS 엔진이 설치되어 있는지 확인하십시오. - - - - Confirm removal - 삭제 확인 - - - - Remove voice engine <b>%1</b> from the list? - 목록에서 <b>%1</b> 음성엔진을 삭제할까요? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - 사전에서 검색할 단어나 어구를 입력하십시오 - - - - Drop-down - 드롭다운 - - - - VoiceEnginesModel - - - Enabled - 활성 - - - - Name - 이름 - - - - Id - ID - - - - Icon - 아이콘 - - - - WebSitesModel - - - Enabled - 활성 - - - - Name - 이름 - - - - Address - 주소 - - - - Icon - 아이콘 - - - - WordFinder - - - Failed to query some dictionaries. - 일부 사전의 검색에 실패했습니다. - - - - WordList - - - WARNING: %1 - 경고: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/lt_LT.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/lt_LT.ts deleted file mode 100644 index ca03bf320c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/lt_LT.ts +++ /dev/null @@ -1,4931 +0,0 @@ - - - - - About - - - About - Apie - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Padėkos: - - - GoldenDict dictionary lookup program, version 0.7 - GoldenDict paieškos žodyne programa, 0.7 versija - - - - GoldenDict dictionary lookup program, version - GoldenDict paieškos žodyne programa, versija - - - #.# - #.# - - - - Licensed under GNU GPLv3 or later - Licencija: GNU GPLv3 arba vėlesnė - - - - [Unknown] - [Nežinoma] - - - - Based on Qt %1 (%2, %3 bit) - Naudoja Qt %1 (%2, %3 bitų) - - - - ArticleMaker - - - Expand article - Išplėsti - - - - Collapse article - Suskleisti - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - <b>%1</b> vertimas nerastas grupėje <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Gupėje <b>%1</b> vertimų nerasta. - - - - Welcome! - Jus sveikina GoldenDict! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Jus sveikina <b>GoldenDict</b>!</h3><p>Dirbti žodynu pradėkite spausdami <b>Taisa > Žodynai</b> – nurodysite kelius, kur ieškoti žodynų failų, nurodysite įvairias Vikipedijos svetaines ar kitus šaltinius, pasirinksite žodynų tvarką arba kursite žodynų grupes.<p>Po to jau galėsite ieškoti žodžių! Versti žodžius galite tiek GoldenDict programos pagrindiniame lange, tiek <a href="Iškylantys langai">kitose veikiančiose programose</a>. <p>Programą galite derinti per meniu <b>Taisa > Nuostatos</b>. Visos nuostatos turi paaiškinimus - jie pravers, jei abejosite, ar nežinosite.<p>Jei reikia daugiau pagalbos, turite klausimų, pasiūlymų ar tiesiog norite sužinoti kitų nuomonę, apsilankykite programos <a href="http://goldendict.org/forum/">diskusijų puslapyje</a>.<p>Programos atnaujinimų ieškokite <a href="http://goldendict.org/">GoldenDict svetainėje</a>. <p>(c) 2008-2013 Konstantin Isakov. GPLv3 arba vėlesnė licencija. - - - - Working with popup - Iškylantys langai - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Iškylantys langai</h3>Norėdami žodžių ieškoti kitose veikiančiose programose, pirmiausia turite <b>Nuostatose</b> įgalinti <i>„iškylančius langus“</i>, o po to bet kada spragtelėti „iškylančių langų“ ženkliuką viršuje arba spustelėti sistemos dėklo ženkliuką dešiniu pelės klavišu ir pasirinkti atitinkamą meniu įrašą. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Tuomet kokioje nors programoje užveskite žymeklį ties norimu ieškoti žodžiu – netrukus pasirodys iškylantis langas su pasirinkto žodžio apibūdinimu. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Tuomet kokioje nors programoje tiesiog pele pažymėkite bet kokį norimą žodį (dukart jį spragtelėkite arba braukite jį nuspaudę pelės klavišą) – netrukus pasirodys iškylantis langas su pasirinkto žodžio apibūdinimu. - - - - (untitled) - (bevardis) - - - - (picture) - (paveikslėlis) - - - - ArticleRequest - - - Expand article - Išplėsti - - - - From - - - - - Collapse article - Suskleisti - - - - Query error: %1 - Užklausos klaida: %1 - - - - Close words: - Panašūs žodžiai: - - - - Compound expressions: - Žodžių junginiai: - - - - Individual words: - Pavieniai žodžiai: - - - - ArticleView - - - Select Current Article - Dabartinio straipsnio pasirinkimas - - - - Copy as text - Kopijuoti kaip tekstą - - - - Inspect - Tyrinėti - - - - Resource - Šaltinis - - - - Audio - Garsas - - - - TTS Voice - TTS balsas - - - - Picture - Paveikslėlis - - - - Definition from dictionary "%1": %2 - „%1“ žodyne esantis apibrėžimas: %2 - - - - Definition: %1 - Apibrėžimas: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - Nurodyto šaltinio nėra. - - - - The referenced audio program doesn't exist. - Nėra nurodytos garso programos. - - - - - ERROR: %1 - Klaida: %1 - - - - Save sound - Įrašyti garsą - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Garsai (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Visos rinkmenos (*.*) - - - - Save image - Įrašyti paveikslą - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Paveikslai (*.bmp *.jpg *.png *.tif);;Visi failai (*.*) - - - - &Open Link - &Atverti nuorodą - - - - Video - Vaizdo klipas - - - - Video: %1 - Vaizdo klipas: %1 - - - - Open Link in New &Tab - Atverti nuorodą naujoje &kortelėje - - - - Open Link in &External Browser - Atv&erti nuorodą naršyklėje - - - - &Look up "%1" - &Ieškoti „%1“ - - - - Look up "%1" in &New Tab - Ieškoti „%1“ &naujoje kortelėje - - - - Send "%1" to input line - „%1“ siųsti į įvedimo eilutę - - - - - &Add "%1" to history - žodį „%1“ į&traukti į žurnalą - - - - Look up "%1" in %2 - Ieškoti „%1“ grupėje %2 - - - - Look up "%1" in %2 in &New Tab - Ieškoti „%1“ grupėje %2 &naujoje kortelėje - - - - WARNING: FFmpeg Audio Player: %1 - Įspėjimas: FFmpeg garso grutuvė: %1 - - - Playing a non-WAV file - Groti ne-WAV failą - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Norėdami įgalinti kitokių nei WAV failų grojimą, eikite į meniu Taisa > Nuostatos, pasirinkite Garso kortelę ir pažymėkite „Groti per DirectShow“. - - - Bass library not found. - Nepavyko rasti „Bass“ bibliotekos. - - - Bass library can't play this sound. - „Bass“ biblioteka negali groti šio garso. - - - - Failed to run a player to play sound file: %1 - Nepavyko paleisti grotuvo garso failui atkurti: %1 - - - - Failed to create temporary file. - Nepavyko sukurti laikinojo failo. - - - - Failed to auto-open resource file, try opening manually: %1. - Nepavyko automatiškai atverti šaltinio failo, mėginkite rankiniu būdu: %1. - - - - The referenced resource failed to download. - Nepavyko parsiųsti nurodytų šaltinių. - - - - Save &image... - Įrašti pa&veikslą... - - - - Save s&ound... - Įrašyti g&arsą... - - - - WARNING: %1 - ĮSPĖJIMAS: %1 - - - - Form - Forma - - - - about:blank - tuščias - - - - x - x - - - - Find: - Ieškoti: - - - - - &Previous - &Ankstesnis - - - - - &Next - &Tolesnis - - - - Ctrl+G - Vald+G - - - - &Case Sensitive - &Skirti raidžių dydį - - - - Highlight &all - &Viską pažymėti - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Baltarusių transliteracija iš lotynų į kirilicą (klasikinė orthografija) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Baltarusių transliteracija iš lotynų į kirilicą (mokyklinė orthografija) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Baltarusių transliteracija iš lotynų į kirilicą (kirilicoje pašalina skirtumą tarp klasikinės ir mokyklinės orthografijos) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - Reikia prisijungti per įgaliotąjį serverį - - - - You need to supply a Username and a Password to access via proxy - Norėdami naudotis įgaliotuoju serveriu, įveskite naudotojo vardą ir slaptažodį - - - - Username: - Naudotojo vardas: - - - - Password: - Slaptažodis: - - - - DictGroupWidget - - - Form - - - - - Group icon: - Grupės ženkliukas: - - - - Shortcut: - Nuoroda: - - - - None - Nieko - - - - From file... - Iš failo... - - - - Choose a file to use as group icon - Pasirinkite failą, naudosimą kaip grupės ženkliuką - - - - Images - Paveiksliukai - - - - All files - Visi failai - - - - Error - Klaida - - - - Can't read the specified image file. - Nepavyksta nuskaityti pasirinkto paveiksliuko failo. - - - - DictGroupsWidget - - - - - - Dictionaries: - Žodynai: - - - - Confirmation - Patvirtinimas - - - - Are you sure you want to generate a set of groups based on language pairs? - Tikrai norite sukurti grupes pagal kalbų poras? - - - - Unassigned - Nepriskirta - - - - Combine groups by source language to "%1->" - Apjungti grupes pagal kalbą, iš kurios verčiama („%1->“) - - - - Combine groups by target language to "->%1" - Apjungti grupes pagal kalbą, į kurią verčiama („->%1“) - - - - Make two-side translate group "%1-%2-%1" - Sukurti dvikrypčio vertimo grupę „%1-%2-%1“ - - - - - Combine groups with "%1" - Apjungti grupes pagal „%1“ - - - - DictHeadwords - - - Search mode - Paieškos veiksena - - - - This element determines how filter string will be interpreted - Šis elementas nurodo, kaip bus interpretuojama atrankos užklausa - - - - If checked on the symbols case will be take in account when filtering - Jei pažymėta, atrenkant bus atsižvelgiama į raidžių lygį - - - - Match case - Skirti raidžių registrą - - - - Exports headwords to file - Antraštinius žodžius eksportuoti į failą - - - - Export - Eksportuoti - - - - Help - - - - - OK - Gerai - - - - Press this button to apply filter to headwords list - Norėdami atrinkti antraštinius žodžius pagal atrankos filtrą, paspauskite šį mygtuką - - - - Apply - Pritaikyti - - - - If checked any filter changes will we immediately applied to headwords list - Jei pažymėta, pakeitus atrankos tekstą iš karto atrinkti antraštinius žodžius - - - - Auto apply - Atrinkti rašant - - - - Filter: - Atranka: - - - - Filter string (fixed string, wildcards or regular expression) - Tekstas, pagal kurį norite atrinkti antraštinius žodžius (tikslus tekstas, pakaitos simboliai, reguliarusis reiškinys) - - - - Text - Tekstas - - - - Wildcards - Pakaitos simboliai - - - - RegExp - Reguliarusis reiškinys - - - - Unique headwords total: %1, filtered: %2 - Iš viso nesikartojančių antraštinių žodžių: %1; atrinkta: %2 - - - - Save headwords to file - Antraštinių žodžių įrašymas į failą - - - - Text files (*.txt);;All files (*.*) - Tekstiniai failai (*.txt);;Visi failai (*.*) - - - - Export headwords... - Antraštinių žodžių eksportavimas... - - - - Cancel - Atšaukti - - - - DictInfo - - - Total articles: - Iš viso straipsnių: - - - - Translates from: - Verčia iš: - - - - Total words: - Iš viso žodžių: - - - - Translates to: - Verčia į: - - - - Open folder - Atverti aplanką - - - - Edit dictionary - Keisti žodyną - - - - Files comprising this dictionary: - Žodyną sudarantys failai: - - - - Description: - Aprašas: - - - - Show all unique dictionary headwords - Rodyti visus nesikartojančius žodyno antraštinius žodžius - - - - Headwords - Antraštiniai žodžiai - - - - Edit the dictionary via command: -%1 - Žodyną keisti naudojant komandą: -%1 - - - - DictListModel - - - %1 entries - Įrašų: %1 - - - - DictServer - - - Url: - Url: - - - - Databases: - Duombazės: - - - - Search strategies: - Paieškos strategijos: - - - - Server databases - - - - - DictServersModel - - - Enabled - Įgalinta - - - - Name - Vardas - - - - Address - Adresas - - - - Databases - Duombazės - - - - Strategies - Strategijos - - - - Icon - Ženkliukas - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - Duombazes atskirkite kableliais -(tuščias įrašas ir * atitinka visas duomenų bazes) - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - Paieškos strategijas atskirkite kableliais -(tuščias įrašas atitinka priešdėlio („prefix“) strategiją) - - - - DictionaryBar - - Dictionary Bar - Žodynų juosta - - - - &Dictionary Bar - Žo&dynų juosta - - - - Extended menu with all dictionaries... - Išplėstinis meniu su visais žodynais... - - - - Edit this group - Keisti šią grupę - - - - Dictionary info - Informacija apie žodyną - - - - Dictionary headwords - Žodyno antraštiniai žodžiai - - - - Open dictionary folder - Atverti žodyno aplanką - - - - Edit dictionary - Keisti žodyną - - - - EditDictionaries - - - &Sources - &Šaltiniai - - - - - &Dictionaries - &Žodynai - - - - - &Groups - &Grupės - - - - Sources changed - Šaltiniai pasikeitė - - - - Some sources were changed. Would you like to accept the changes? - Kai kurie šaltiniai pasikeitė. Priimti pakeitimus? - - - - Accept - Priimti - - - - Cancel - Atšaukti - - - - Dictionaries - Žodynai - - - - ExternalViewer - - - the viewer program name is empty - nėra peržiūros programos vardo - - - - FTS::FtsIndexing - - None - Nieko - - - - FTS::FullTextSearchDialog - - - Full-text search - Visatekstė paieška - - - - Whole words - Ištisi žodžiai - - - - Plain text - Grynasis tekstas - - - - Wildcards - Pakaitos simboliai - - - - RegExp - Reguliar. reiškinys - - - - Max distance between words (%1-%2): - Didžiausias atstumas tarp žodžių (%1-%2): - - - - Max articles per dictionary (%1-%2): - Straipsnelių riba vienam žodynui (%1-%2): - - - - - - Articles found: - Surasta straipsnelių: - - - - Now indexing: - Darbar indeksuojama: - - - - None - Nieko - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - Kinų, japonų ir korėjiečių rašto ženklų paieška nėra suderinama su paieškos veiksenomis „Ištisi žodžiai“ ir „Grynasis tekstas“ - - - - The search line must contains at least one word containing - Paieškos užklausoje įveskite bent vieną žodį, kurį sudarytų bent - - - - or more symbols - simboliai(-ių,-is) - - - - No dictionaries for full-text search - Nėra žodynų, palaikančių paiešką jų straipsnelių turinyje - - - - FTS::Indexing - - None - Nieko - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XML analizavimo klaida: %1 ties %2,%3 - - - - Added %1 - Pridėjo %1 - - - - by - pagal - - - - Male - vyras - - - - Female - moteris - - - - from - iš - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Jei nenorite matyti šios klaidos, eikite į meniu Taisa > Žodynai > Ištekliai > Forvo ir nurodykite nuosavą API raktą. - - - - FullTextSearchDialog - - - - Search - Paieška - - - - Match case - Skirti raidžių registrą - - - - Mode: - Veiksena: - - - - Articles found: - Surasta straipsneliuose: - - - - Available dictionaries in group: - Prieinamos žodynų grupės: - - - - Wait for indexing: - Indeksavimo eilėje: - - - - Help - - - - Non-indexable: - Neindeksuojami: - - - - Total: - Iš viso: - - - - Indexed: - Suindeksuoti: - - - - Now indexing: None - Dabar indeksuojama: nieko - - - - Cancel - Atšaukti - - - - GermanTranslit - - - German Transliteration - Transliteracija (vokiečių) - - - - GreekTranslit - - - Greek Transliteration - Transliteracija (graikų) - - - - GroupComboBox - - - Choose a Group (Alt+G) - Pasirinkti grupę (Alt+G) - - - - GroupSelectorWidget - - - Form - Forma - - - - Look in - Ieškojimo vieta - - - - Groups - - - Group tabs - Grupės kortelės - - - - Open groups list - Atverti grupių sąrašą - - - - Add group - Pridėti grupę - - - - Give a name for the new group: - Pavadinkite naująją grupę: - - - - Rename group - Pervadinti grupę - - - - Give a new name for the group: - Naujas grupės pavadinimas: - - - - Remove group - Pašalinti grupę - - - - Are you sure you want to remove the group <b>%1</b>? - Tikrai norite pašalinti <b>%1</b> grupę? - - - - - Remove all groups - Pašalinti visas grupes - - - - Are you sure you want to remove all the groups? - Tikrai norite pašalinti visas grupes? - - - - Dictionaries available: - Galimi žodynai: - - - - Add selected dictionaries to group (Ins) - Į grupę įtraukti pasirinktus žodynus (Įterpti/Ins) - - - - > - > - - - - Ins - Įterpti - - - - Remove selected dictionaries from group (Del) - Iš grupės pašalinti pasirinktus žodynus (Šalinti/Del) - - - - < - < - - - - Del - Šalinti - - - - Groups: - Grupės: - - - - Tab 2 - Kortelė - - - - Create new dictionary group - Sukurti naują žodynų grupę - - - - &Add group - Pri&dėti grupę - - - - Create language-based groups - Kurti grupes pagal kalbas - - - - Auto groups - Automatinės grupės - - - - Rename current dictionary group - Pervadinti esamą žodynų grupę - - - - Re&name group - Per&vadinti grupę - - - - Remove current dictionary group - Pašalinti esamą žodynų grupę - - - - &Remove group - Pašali&nti grupę - - - - Remove all dictionary groups - Pašalinti visas žodynų grupes - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Nutempkite žodynus prie (arba iš) grupių, kilnokite juos grupės viduje, pele keiskite grupių tvarką. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Atgal - - - - Forward - Pirmyn - - - - Zoom In - Padidinti - - - - Zoom Out - Sumažinti - - - - Normal Size - Įprastas dydis - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - Ša&linti pasirinktus - - - - Copy Selected - Kopijuoti pasirinktus - - - - History: - Žurnalas: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Žurnalo dydis įrašais: %1 iš %2 galimų - - - - Hunspell - - - Spelling suggestions: - Rašybos spėjimas: - - - - %1 Morphology - %1 (morfologija) - - - - HunspellDictsModel - - - Enabled - Įgalinta - - - - Name - Pavadinimas - - - - Initializing - - - Please wait... - Palaukite... - - - - - Please wait while indexing dictionary - Indeksuojamas žodynas - - - - GoldenDict - Initializing - Ruošiamas GoldenDict - - - - Dictionary Name - Žodyno pavadinimas - - - - Language - - - Afar - afarų - - - - Abkhazian - abchazų - - - - Avestan - avestianų - - - - Afrikaans - afrikanų - - - - Akan - akanų - - - - Amharic - amharų - - - - Aragonese - aragosų - - - - Arabic - arabų - - - - Assamese - asamų - - - - Avaric - avarų - - - - Aymara - aimarų - - - - Azerbaijani - azerbadžaniečių - - - - Bashkir - baškirų - - - - Belarusian - gudų - - - - Bulgarian - bulgarų - - - - Bihari - biharų - - - - Bislama - bislama - - - - Bambara - bambarų - - - - Bengali - bengalų - - - - Tibetan - tibetiečių - - - - Breton - bretonų - - - - Bosnian - bosnių - - - - Catalan - katalonų - - - - Chechen - čečėnų - - - - Chamorro - čemorų - - - - Corsican - korsikiečių - - - - Cree - krijų - - - - Czech - čekų - - - - Church Slavic - senoji slavų bažnytinė - - - - Chuvash - čiuvašų - - - - Welsh - valų - - - - Danish - danų - - - - German - vokiečių - - - - Divehi - maldyvų - - - - Dzongkha - botijų - - - - Ewe - evų - - - - Greek - graikų - - - - English - anglų - - - - Esperanto - esperanto - - - - Spanish - ispanų - - - - Estonian - estų - - - - Basque - baskų - - - - Persian - persų - - - - Fulah - fulų - - - - Finnish - suomių - - - - Fijian - fidžių - - - - Faroese - farerų - - - - French - prancūzų - - - - Western Frisian - fryzų - - - - Irish - airių - - - - Scottish Gaelic - škotų gėlų - - - - Galician - galisų - - - - Guarani - gvaranių - - - - Gujarati - gudžaratų - - - - Manx - menksiečių - - - - Hausa - hausų - - - - Hebrew - hebrajų - - - - Hindi - hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - kroatų - - - - Haitian - Haičio kreolų - - - - Hungarian - vengrų - - - - Armenian - armėnų - - - - Herero - Herero - - - - Interlingua - interlingua - - - - Indonesian - indoneziečių - - - - Interlingue - interlingue - - - - Igbo - igbų - - - - Sichuan Yi - Sičuan Ji - - - - Inupiaq - inupiakų - - - - Ido - ido - - - - Icelandic - islandų - - - - Italian - italų - - - - Inuktitut - inuktikuto - - - - Japanese - japonų - - - - Javanese - javiečių - - - - Georgian - gruzinų - - - - Kongo - kongiečių - - - - Kikuyu - kikuju - - - - Kwanyama - kvanjama - - - - Kazakh - kazachų - - - - Kalaallisut - grenlandų - - - - Khmer - chmerų - - - - Kannada - kanadų - - - - Korean - korėjiečių - - - - Kanuri - karuni - - - - Kashmiri - kašmyrų - - - - Kurdish - kurdų - - - - Komi - komių - - - - Cornish - kornų - - - - Kirghiz - kirgizų - - - - Latin - lotynų - - - - Luxembourgish - liuksemburgiečių - - - - Ganda - ganda - - - - Limburgish - limburgiečių - - - - Lingala - lingala - - - - Lao - laosiečių - - - - Lithuanian - lietuvių - - - - Luba-Katanga - luba-katanga - - - - Latvian - latvių - - - - Malagasy - malagasių - - - - Marshallese - maršaliečių - - - - Maori - maorių - - - - Macedonian - makedonų - - - - Malayalam - malajalių - - - - Mongolian - mongolų - - - - Marathi - marathų - - - - Malay - malajų - - - - Maltese - maltiečių - - - - Burmese - birmiečių - - - - Nauru - nauriečių - - - - Norwegian Bokmal - Norvegijos Bokmal - - - - North Ndebele - šiaurės ndebele - - - - Nepali - nepalų - - - - Ndonga - ndonga - - - - Dutch - olandų - - - - Norwegian Nynorsk - norvegų naujoji - - - - Norwegian - norvegų - - - - South Ndebele - pietų ndebele - - - - Navajo - navahų - - - - Chichewa - čičevų - - - - Occitan - oksitanų - - - - Ojibwa - odžibvės kalba - - - - Oromo - omorų - - - - Oriya - orijų - - - - Ossetian - osetinų - - - - Panjabi - pendžabų - - - - Pali - pali - - - - Polish - lenkų - - - - Pashto - puštūnų - - - - Portuguese - portugalų - - - - Quechua - kečujų - - - - Raeto-Romance - retoromanų - - - - Kirundi - kirundi - - - - Romanian - rumunų - - - - Russian - rusų - - - - Kinyarwanda - kinjaruanda kalba - - - - Sanskrit - sanskritas - - - - Sardinian - sardiniečių - - - - Sindhi - sindhų - - - - Northern Sami - šiaurės samių - - - - Sango - songo - - - - Serbo-Croatian - serbų-kroatų - - - - Sinhala - sinhalų - - - - Slovak - slovakų - - - - Slovenian - slovėnų - - - - Samoan - samojiečių - - - - Shona - šanų - - - - Somali - somalių - - - - Albanian - albanų - - - - Serbian - serbų - - - - Swati - svazių - - - - Southern Sotho - pietų sotų - - - - Sundanese - sudaniečių - - - - Swedish - švedų - - - - Swahili - suahelių - - - - Tamil - tamilų - - - - Telugu - telugų - - - - Tajik - tadžikų - - - - Thai - tajų - - - - Tigrinya - tigrinų - - - - Turkmen - turkmėnų - - - - Tagalog - tagalų - - - - Tswana - tsvanų - - - - Tonga - tongų - - - - Turkish - turkų - - - - Tsonga - tsongų - - - - Tatar - totorių - - - - Twi - tvi kalba - - - - Tahitian - taitiečių - - - - Uighur - uigurų - - - - Ukrainian - ukrainiečių - - - - Urdu - urdu - - - - Uzbek - uzbekų - - - - Venda - venda - - - - Vietnamese - vietnamiečių - - - - Volapuk - volapiukas - - - - Walloon - valonų - - - - Wolof - volofų - - - - Xhosa - kosų - - - - Yiddish - jidiš - - - - Yoruba - jorubų - - - - Zhuang - Zhuang - - - - Chinese - kinų - - - - Zulu - zulų - - - - Lojban - Lojban - - - - Traditional Chinese - kinų (tradicinė) - - - - Simplified Chinese - kinų (supaprastinta) - - - - Other - kita - - - - Other Simplified Chinese dialects - kinų (kitas supaprastintas dialektas) - - - - Other Traditional Chinese dialects - kinų (kitas tradicinis dialektas) - - - - Other Eastern-European languages - kita Rytų Europos kalba - - - - Other Western-European languages - kita Vakarų Europos kalba - - - - Other Russian languages - kita Rusijos kalba - - - - Other Japanese languages - kita Japonijos kalba - - - - Other Baltic languages - kita baltų kalba - - - - Other Greek languages - kita graikų kalba - - - - Other Korean dialects - kita korėjiečių tarmė - - - - Other Turkish dialects - kita turkų tarmė - - - - Other Thai dialects - kita tajų tarmė - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Žodynų įkelti nepavyko - - - - Main - - - Error in configuration file. Continue with default settings? - Klaida konfgūracijoje. Tęsti naudojant numatytąsias nuostatas? - - - - MainWindow - - Navigation - Navigacija - - - - Back - Atgal - - - - Forward - Pirmyn - - - - Scan Popup - Iškylantis langas - - - - Show &Main Window - Rodyti &pagrindinį langą - - - - - &Quit - &Baigti - - - - Loading... - Įkeliama... - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - Žodynuose ieškomas tekstas. Galite naudoti pakaitos simbolius „*“, „?“ ir simbolių rinkinį „[...]“. -Norėdami rasti „*“, „?“, „[“, „]“ simbolius, atitinkamai įveskite „\*“, „\?“, „\[“, „\]“ - - - - Skip This Release - Praleisti šią versiją - - - - You have chosen to hide a menubar. Use %1 to show it back. - Jūs paslepiate meniu juostą. Norėdami ją vėl matyti, spauskite %1. - - - - Ctrl+M - Vald+M - - - - Page Setup - Puslapio parinktys - - - - No printer is available. Please install one first. - Nera jokio spausdintuvo. Įdiekite kokį nors. - - - - Print Article - Spausdinti straipsnį - - - - Article, Complete (*.html) - Visas straipsnis (*.html) - - - - Article, HTML Only (*.html) - Straipsnis, tik HTML (*.html) - - - - Save Article As - Įrašyti straipsnį kaip - - - Html files (*.html *.htm) - Html rikmenos (*.html *.htm) - - - - Error - Klaida - - - - Can't save article: %1 - Nepavyksta įrašyti straipsnio: %1 - - - - %1 dictionaries, %2 articles, %3 words - Žodynų: %1, straipsnių: %2, žodžių: %3 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Nepavyko paruošti sparčiųjų klavišų stebėjimo mechanizmo<br>Įsitikinkite, kad XServer turi įjungtą RECORD plėtinį. - - - - New Release Available - Yra nauja versija - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Galite parsisųstiGoldenDict <b>%1</b> versiją.<br> -Norėdami atverti parsisiuntimo puslapį, spauskite <b>Parsisiųsti</b>. - - - - Download - Parsisiųsti - - - - - Look up in: - Ieškoti grupėje: - - - Show Names in Dictionary Bar - Žodynų juostelėje rodyti pavadinimus - - - Show Small Icons in Toolbars - Įrankių juostoje rodyti mažus ženkliukus - - - - &Menubar - &Meniu juosta - - - - Found in Dictionaries: - Rasta žodynuose: - - - - Pronounce Word (Alt+S) - Ištarti žodį (Alt+S) - - - - Show Names in Dictionary &Bar - &Pavadinimai žodynų juostoje - - - - Show Small Icons in &Toolbars - Įran&kių juostoje maži ženkliukai - - - - &Navigation - Pagri&ndiniai mygtukai - - - - Zoom In - Padidinti - - - - Zoom Out - Sumažinti - - - - Normal Size - Įprastas dydis - - - - Words Zoom In - Padidinti žodžius - - - - Words Zoom Out - Sumažinti žodžius - - - - Words Normal Size - Įprastas žodžių dydis - - - - Close current tab - Užverti veikiamąją kortelę - - - - Close all tabs - Užverti visas korteles - - - - Close all tabs except current - Užverti visas korteles, iškyrus veikiamąją - - - - Look up: - Ieškoti: - - - - All - Visi - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - API prieinamumui nėra įgalinta - - - - Saving article... - Įrašomas straipsnis... - - - - The main window is set to be always on top. - Pagrindinis langas visada rodomas virš kitų programų langų. - - - - Import history from file - Įkelti žurnalą iš failo - - - Imported from file: - Įkelti iš failo: - - - - Import error: invalid data in file - Klaida įkeliant: failo duomenys netinkami - - - - History import complete - Įkėlimas į žurnalą baigtas - - - - Import error: - Klaida įkeliant: - - - - Dictionary info - Informacija apie žodyną - - - - Dictionary headwords - Žodyno antraštiniai žodžiai - - - - Open dictionary folder - Atverti žodyno aplanką - - - - Edit dictionary - Keisti žodyną - - - - Opened tabs - Atvertos kortelės - - - - Open Tabs List - Atverti kortelių sąrašą - - - - (untitled) - (nepavadinta) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - Įspėjimas: %1 - - - - &Hide - &Slėpti - - - History view mode - Žurnalo rodymas - - - - Export history to file - Žurnalą įrašyti į failą - - - - - Text files (*.txt);;All files (*.*) - Tekstiniai failai (*.txt);;Visi failai (*.*) - - - - History export complete - Žurnalas įrašytas - - - - Export error: - Eksporto klaida: - - - GoldenDict - GoldenDict - - - - - Welcome! - Jus sveikina GoldenDict! - - - - &File - &Failas - - - - &Edit - &Taisa - - - - &Help - &Pagalba - - - Results Navigation Pane - Navigacijos tarp rezultatų skydelis - - - &Dictionaries... F3 - Žo&dynai... F3 - - - - &Preferences... - &Nuostatos... - - - - F2 - F2 - - - &Groups... - &Grupės... - - - - &View - Ro&dymas - - - - &Zoom - M&astelis - - - - H&istory - Ž&urnalas - - - - &Dictionaries... - Žo&dynai... - - - - F3 - F3 - - - - &Search Pane - &Paieškos polangis - - - - Search - Paieška - - - - &Results Navigation Pane - Ž&odynų polangis - - - - &History Pane - &Žurnalo polangis - - - - F4 - F4 - - - - &Homepage - &Svetainė - - - - &About - &Apie - - - - About GoldenDict - Apie GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Užverti programą - - - - Ctrl+Q - Vald+Q - - - - &Forum - &Diskusijos internete - - - - &Close To Tray - Nuleisti &langą - - - - Minimizes the window to tray - Nuleisti į sistemos dėklą - - - - Ctrl+F4 - Vald+F4 - - - - &Save Article - Į&rašyti straipsnį - - - - Save Article - Įrašyti straipsnį - - - - &Print - &Spausdinti - - - - Ctrl+P - Vald+P - - - - Page Set&up - &Puslapio parinktys - - - - Print Pre&view - Spaudinio p&eržiūra - - - - &Rescan Files - Perž&velgti failus - - - - &New Tab - &Nauja kortelė - - - - &Always on Top - &Visada viršuje - - - - Always on Top - Visada viršuje - - - - Ctrl+O - Vald+O - - - - - - Menu Button - Meniu mygtukas - - - - Search in page - Ieškoti puslapyje - - - - Ctrl+F - Vald+F - - - - Full-text search - Visatekstė paieška - - - - Ctrl+Shift+F - Vald+Lyg2+F - - - Print Preview - Spaudinio peržiūra - - - Rescan Files - Peržvelgti failus - - - - Ctrl+F5 - Vald+F5 - - - - &Clear - Iš&valyti - - - - New Tab - Nauja kortelė - - - - Ctrl+T - Vald+T - - - - &Configuration Folder - &Nuostatų aplankas - - - - - &Show - Ro&dyti - - - - Ctrl+H - Vald+H - - - - &Export - Į&rašyti - - - - &Import - Į&kelti - - - Search Pane - Paieškos polangis - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Žodyno failas sugadintas - - - - Failed loading article from %1, reason: %2 - Nepavyko įkelti straipsnio iš %1 dėl to, kad %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XML nagrinėjimo klaida: %1 ties %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XML nagrinėjimo klaida: %1 ties %2,%3 - - - - MediaWikisModel - - - Enabled - Įgalinta - - - - Name - Pavadinimas - - - - Address - Adresas - - - - Icon - Ženkliukas - - - - OrderAndProps - - - Form - Forma - - - - Dictionary order: - Žodynų tvarka: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Nenaudojami (uždrausti) žodynai: - - - - Dictionary information - Žodyno informacija - - - - Name: - Pavadinimas: - - - - Total articles: - Iš viso straipsnių: - - - - Total words: - Iš viso žodžių: - - - - Translates from: - Verčia iš: - - - - Translates to: - Verčia į: - - - - Description: - Aprašas: - - - - Files comprising this dictionary: - Žodyną sudarantys failai: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Žodynų tvarką pakeisite tiesiog juos tempdami. Norėdami uždrausti žodyną, tiesiog nutempkite jį į neaktyviųjų grupę. - - - - Sort by name - Rikiuoti pagal pavadinimą - - - - Sort by languages - Rikiuoti pagal kalbą - - - - Dictionary headwords - Žodyno antraštiniai žodžiai - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Kelias - - - - Recursive - Rekursinis - - - - Preferences - - - Preferences - Nuostatos - - - - &Interface - &Sąsaja - - - - Tabbed browsing - Naršymas kortelėse - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Paprastai atvėrus kortelę, ji aktyvuojama ir rodomas jos turinys. -Pažymėjus šią parinktį, naujos kortelės nebus aktyvuojamos. - - - - - Open new tabs in background - Naujas korteles atverti fone - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Pažymėjus šią parinktį, naujos kortelės atveriamos -greta aktyviosios. Priešingu atveju, jos pridedamos -prie paskutiniųjų. - - - - Open new tabs after the current one - Naujas korteles atverti už dabartinės - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Rinkitės, jei nenorite matyti kortelių juostos tuomet, kai atverta tik viena kortelė. - - - - Hide single tab - Slėpti vienintelę kortelę - - - - Ctrl-Tab navigates tabs in MRU order - Vald-Tab naršymui kortelėse pagal MRU - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Jei pasirinkta, sistemos dėkle rodomas ženkliukas, kuriuo galite -atverti pagrindinį langą ir atlikti kitas užduotis. - - - - Enable system tray icon - Įgalinti sistemos dėklo ženkliuką - - - - With this on, the application starts directly to system tray without showing -its main window. - Programa paleidžiama, tačiau nerodomas pagrindinis langas; -rodomas tik ženkliukas sistemos dėkle. - - - - Start to system tray - Paleisti sistemos dėkle - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Uždarant programos pagrindinį langą, programa neišjungiama, – -tiesiog paslepiama. - - - - Close to system tray - Užveriant nuleisti į sistemos dėklą - - - - Startup - Paleistis - - - Automatically starts GoldenDict after operation system bootup - GoldenDict paleisti kartu su vartotojo darbalaukiu - - - - Start with system - Paleisti kartu su sistema - - - - Interface language: - Sąsajos kalba: - - - - Display style: - Lango stilius: - - - - Double-click translates the word clicked - Versti žodį, jį spragtelėjus du kartus - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Paprastai, nuspaudus Gr(įžties) klavišą, fokusas perkeliamas į verčiamą eilutę. -Tačiau įgalinus šią parinktį, būtų paslepiamas pagrindinis langas. - - - - ESC key hides main window - Gr (Esc) klavišas paslepia pagrindinį langą - - - - Turn this option on if you want to select words by single mouse click - Įgalinkite šią parinktį, jei žodį norite pasirinkti vieną kartą spustelėdami ties juo - - - - Select word by single click - Žodį pasirinkti jį spragtelint - - - - Add-on style: - Papildomas stilius: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Šią reikšmę keiskite tam, kad išvengtumėte didelių kontekstinių meniu. - - - - Context menu dictionaries limit: - Žodynų kiekio riba kontekstiniame meniu: - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Nurodykite, ar ši iškylančių langų funkcija yra numatytoji. -Jei pažymėta, iškylančių langų funkcija bus įjungta vos paleistoje programoje. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Paprastai langas su vertimu iškyla nuspaudus -pasirinktus klavišus žymėjimo metu. -Jei įgalinta ši parinktis, klavišai suveiks ir -praėjus trupučiui laiko po to, kai baigėte žymėti. - - - - Hotkeys - Spartieji klavišai - - - - Use the following hotkey to show or hide the main window: - Nuspaudus spartųjį klavišą parodyti ar paslėpti pagrindinį langą: - - - - Use the following hotkey to translate a word from clipboard: - Nuspaudus spartųjį klavišą išversti iškarpinės turinį: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Spartieji klavišai yra bendri sitemai ir veikia dirbant bet kuria programa, bet kokioje aplinkoje, kol fone paleistas GoldenDict žodynas. - - - - &Scan Popup - &Iškylantis langas - - - - Automatically starts GoldenDict after operation system bootup. - GoldenDict paleisti kartu su naudotojo darbalaukiu sistemos paleidimo metu. - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Jei įgalinta, vertimo iškylantis langas pasirodys kaskart, kai užvesite -pelę ties žodžiu (Windows) arba pažymėsite jį pele (Linux). -Jei įgalinta, galite vėliau tiek šią funkciją įjungti, tiek išjungti -pagrindiniame lange arba nuspaudę ženkliuką sistemos dėkle. - - - - Enable scan popup functionality - Įgalinti iškylančius langus - - - Chooses whether the scan popup mode is on by default nor not. If checked, -the program would always start with the scan popup active. - Nurodykite, ar iškylančių langų funkcija bus įjungta vos paleistoje programoje. - - - - Start with scan popup turned on - Paleisti su įjungta iškylančių langų funkcija - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Jei įgalinta, langas su vertimu iškils tik nuspaudus visus nurodytus klavišus -po to, kai pasikeis pažymėtas žodis. - - - - Only show popup when all selected keys are kept pressed: - Iškylantis langas pasirodys tik nuspaudus visus šiuos klavišus: - - - - Left Ctrl only - Tik kairysis Vald - - - - Left Ctrl - Kairysis Vald - - - - Right Shift only - Tik dešinysis Lyg2 - - - - Right Shift - Dešinysis Lyg2 - - - - Alt key - Alt klavišas - - - - Alt - Alt - - - - Ctrl key - Vald klavišas - - - - Ctrl - Vald - - - - Left Alt only - Tik kairysis Alt - - - - Left Alt - Kairysis Alt - - - - Shift key - Lyg2 klavišas - - - - Shift - Lyg2 - - - - Right Alt only - Tik dešinysis Alt - - - - Right Alt - Dešinysis Alt - - - - Right Ctrl only - Tik dešinysis Vald - - - - Right Ctrl - Dešin. Vald - - - - Left Shift only - Tik kairysis Lyg2 - - - - Left Shift - Kairysis Lyg2 - - - - Windows key or Meta key - Windows arba Meta klavišas - - - - Win/Meta - Win arba Meta - - - - Send translated word to main window instead of to show it in popup window - Žodžio vertimas pagrindiniame lange, o ne iškylančiame lange - - - - Send translated word to main window - Perduoti į pagrindinį langą - - - - Playback - Grojimas - - - - Play audio files via FFmpeg(libav) and libao - Garsus leisti per FFmpeg(libav) ir libao - - - - Use internal player - Naudoti vidinę grotuvę - - - - System proxy - Sistemos įgaliotasis serveris - - - - Custom proxy - Savitas įgaliotasis serveris - - - - Custom settings - Savitos nuostatos - - - - Full-text search - Visatekstė paieška - - - - Allow full-text search for: - Leisti ieškoti šių žodynų straipsneliuose: - - - - Don't search in dictionaries containing more than - Neieškoti, jei žodyne yra virš - - - - articles (0 - unlimited) - straipsnelių(-io) (0 = neriboti) - - - - Select this option to automatic collapse big articles - Automatiškai suskleisti didelius straipsnius - - - - Collapse articles more than - Suskleisti straipsnis didesnius nei - - - - Articles longer than this size will be collapsed - Suskleisti straipsnis, kurių dydis viršija - - - Artiles longer than this size will be collapsed - Suskleisti straipsnis, kurių dydis viršija - - - - symbols - simboliai - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Naudoti Windows sistemos grojimo sąsają. Palaikomi -tik .wav failai, tačiau groja labai gerai. - - - Play via Windows native API - Garsą leisti naudojant Windows sąsają - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Garsą leisti naudojant Phonon sistemą. Ji gali būti nestabili, -tačiau palaiko daugelį garso failų formatų. - - - Play via Phonon - Garsą leisti per Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Garsą leisti per „Bass“ biblioteką. Optimalus pasirinkimas. Šia funkcija galėsite naudotis -bass.dll (http://www.un4seen.com) nukopijavę į GoldenDict aplanką. - - - Play via Bass library - Garsą leisti per „Bass“ biblioteką - - - - Use any external program to play audio files - Naudoti bet kokią išorinę programą garso failų grojimui - - - - Use external program: - Naudoti išorinę programą: - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Kai kurios svetainės aptinka GoldenDict pagal HTTP antraštę ir dėl to blokuoja užklausas. -Ši parinktis leidžia apeiti problemą. - - - - Do not identify GoldenDict in HTTP headers - HTTP antraštėse neidentifikuoti GoldenDict - - - - Ad&vanced - Su&dėtingesni - - - - ScanPopup extra technologies - Ypatingos iškylančių langų technologijos - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Žodžio, esančio po pelės žymekliu, nuskaitymui bandyti naudoti „IAccessibleEx“ -technologiją. Ši technoogija veikia tik su kai kuriomis ją palaikančiomis programomis - (pavyzdžiui, Internet Explorer 9). -Nereikia šios parinkties rinktis, jei tokių programų nenaudojate. - - - - Use &IAccessibleEx - Naudoti „&IAccessibleEx“ - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Žodžio, esančio po pelės žymekliu, nuskaitymui bandyti naudoti „UI Automation“ -technologiją. Ši technoogija veikia tik su kai kuriomis ją palaikančiomis programomis. -Nereikia šios parinkties rinktis, jei tokių programų nenaudojate. - - - - Use &UIAutomation - Naudoti „&UIAutomation“ - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Žodžio, esančio po pelės žymekliu, nuskaitymui bandyti naudoti „GoldenDict message“ -technologiją. Ši technoogija veikia tik su kai kuriomis ją palaikančiomis programomis. -Nereikia šios parinkties rinktis, jei tokių programų nenaudojate. - - - - Use &GoldenDict message - Naudoti „&GoldenDict message“ - - - - History - Žurnalas - - - - Turn this option on to store history of the translated words - Įgalinkite, jei norite įsiminti verčiamus žodžius - - - - Store &history - Įsi&minti verstus žodžius - - - - Specify the maximum number of entries to keep in history. - Nurodykite didžiausią leistiną žurnalo įrašų kiekį. - - - - Maximum history size: - Žurnalo įrašų didžiausias kiekis: - - - - History saving interval. If set to 0 history will be saved only during exit. - Žurnalo įrašymo dažnumas. 0 reiškia įrašymą tik užveriant programą. - - - - Save every - Įrašyti kas - - - - minutes - min - - - - Articles - Straipsneliai - - - - Turn this option on to always expand optional parts of articles - Įgalinkite, jei norite visada matyti visas straipsnelio dalis - - - - Expand optional &parts - Išplėsti papildomas &dalis - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shorty after the selection is done. - Paprastai langas su vertimu iškyla nuspaudus pasirinktus klavišus -žymėjimo metu. Jei įgalinta ši parinktis, klavišai suveiks ir -praėjus trupučiui laiko po to, kai baigėte žymėti. - - - - Keys may also be pressed afterwards, within - Klavišai gali būti paspausti per - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Kad iškylantis langas nepasirodytų kai to nereikia, -į klavišus reaguojama tik tam tikrą laiką po -baigimo žymėti. Laiką nurodykie čia. - - - - secs - s - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Pastaba: regis naudojate X.Org XServerio versiją, kurios RECORD plėtinys yra sugadintas. Spartieji klavišai GoldenDict programai greičiausiai neveiks. Tai pirmiausia turėų būti ištaisyta pačiame Xserveryje. Žiūrėkite pranešimą apie </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">ydą</span></a><span style=" color:#ff0000;"> bei, jei norite, palikite savo komentarą .</span></p></body></html> - - - - &Audio - &Garsas - - - - Pronunciation - Tarimas - - - - Auto-pronounce words in main window - Automatiškai ištarti pagrindinio lango žodžius - - - - Auto-pronounce words in scan popup - Automatiškai ištarti iškylančio lango žodžius - - - Program to play audio files: - Garso rinkmenas groti su programa: - - - - &Network - &Tinklas - - - - Enable if you wish to use a proxy server -for all program's network requests. - Įgalinkite, jei norite programos visoms tinklo -užklausoms naudoti įgaliotąjį serverį. - - - - Use proxy server - Naudoti įgaliotąjį serverį - - - - Type: - Tipas: - - - - Host: - Serveris: - - - - Port: - Prievadas: - - - - User: - Naudotojo vardas: - - - - Password: - Slaptažodis: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Įgalinus šią parinktį, GoldenDict blokuos didžiąją dalį reklamos, neleisdama turinio (paveikslėlių, kadrų) esančio iš kito šaltinio, nei jūsų naršomas puslapis. Jei kuri svetainė neveiks su šia parinktimi, ją išjunkite. - - - - Disallow loading content from other sites (hides most advertisements) - Neleisti įkelti turinio iš kitų svetainių (dažniausiai reklamos) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Įgalinus šią parinktį, bus leidžiama klausyti žodžių tarimo -internetiniuose žodynuose, veikiančiuose naudojant Flash ar kitokį -saityno papildinį. Norint, kad parinktis veiktų, turi būti įdiegtas papildinys. - - - - Enable web plugins - Įgalinti saityno papildinius - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Jei įgalinta, programa karts nuo karto patikrins, -ar galima parsisiųsti naują, patobulintą GoldenDict -versiją. Jei taip, programas praneš jums apie tai -ir pasiūlys atverti parsisiuntimo puslapį. - - - - - Check for new program releases periodically - Periodiškai tikrinti, ar yra naujų programos versijų - - - - System default - Sistemoje numatyta - - - English - Anglų - - - Russian - Rusų - - - - - Default - Numatytasis - - - - Modern - Šiuolaikinis - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes mėlynas - - - Play via DirectShow - Groti per DirectShow - - - - Changing Language - Kalbos keitimas - - - - Restart the program to apply the language change. - Naująją kalbą programa naudos po to, kai ją atversite iš naujo. - - - - ProgramTypeEditor - - - Audio - Garsas - - - - Plain Text - Paprastas tekstas - - - - Html - Html - - - - Prefix Match - Priešdėlio atitikimas - - - - Unknown - Nežinoma - - - - Programs::RunInstance - - - No program name was given. - Neduotas joks programos vardas. - - - - The program has crashed. - Programa užstrigo. - - - - The program has returned exit code %1. - Programa baigė darbą ir grąžino kodą %1. - - - - ProgramsModel - - - Enabled - Įgalinta - - - - Type - Tipas - - - - Name - Pavadinimas - - - - Command Line - Komandinė eilutė - - - - Icon - Ženkliukas - - - - QObject - - - - Article loading error - Straipsnio įkėlimo klaida - - - - - Article decoding error - Straipsnio dekodavimo klaida - - - - avformat_alloc_context() failed. - avformat_alloc_context() klaida. - - - - av_malloc() failed. - av_malloc() klaida. - - - - avio_alloc_context() failed. - avio_alloc_context() klaida. - - - - avformat_open_input() failed: %1. - avformat_open_input() klaida: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() klaida: %1. - - - - Could not find audio stream. - Nepavyksta rasti garso srauto. - - - - Codec [id: %1] not found. - Kodeko [id: %1] neradome. - - - - avcodec_open2() failed: %1. - avcodec_open2() klaida: %1. - - - - Cannot find usable audio output device. - Nepavyksta rasti garso išvedimo įrenginio. - - - - Unsupported sample format. - Nepalaikomas formatas. - - - - ao_open_live() failed: - ao_open_live() klaida: - - - - No driver. - Nėra tvarkyklės. - - - - This driver is not a live output device. - Ši tvarkyklė nėra „live“ išvedimo įrenginys. - - - - A valid option key has an invalid value. - Parinkties raktas tinkamas, bet netinkama jo reikšmė. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Nepavyksta atverti įrenginio: %1, kanalų: %2, dažnio: %3, bitų: %4. - - - - Unknown error. - Nežinoma klaida. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() klaida. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Žodynų paieška (Vald+F) - - - - Quick Search - Greitoji pieška - - - - Clear Search - Išvalyti paiešką - - - - ResourceToSaveHandler - - - - ERROR: %1 - Klaida: %1 - - - - Resource saving error: - Šaltinių įrašymo klaida: - - - - The referenced resource failed to download. - Nepavyko parsiųsti nurodytų šaltinių. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji (Hiragana) - - - - Hepburn Romaji for Katakana - Hepburn Romaji (Katakana) - - - - RussianTranslit - - - Russian Transliteration - Transliteracija (rusų) - - - - ScanPopup - - - Dialog - Langas - - - word - žodis - - - - Back - Atgal - - - - Forward - Pirmyn - - - List Matches (Alt+M) - Atitikmenų sąrašas (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Ištarti žodį (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Perduoti į pagrindinį langą (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Parodo arba paslepia žodynų juostelę - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Naudokite, jei norite pritvirtinti šį langą. Tuomet jis nepradigs patrukus pelę, -galėsite keisti lango dydį ar atlikti kitus įprastus langų tvarkymo veiksmus. - - - - - - - - ... - ... - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Kelias - - - - Name - Pavadinimas - - - - Icon - Ženkliukas - - - - Sources - - - Text to Speech - Balso sintezavimas - - - - (not available in portable version) - (neprieinama perkeliamoje versijoje) - - - - - - Choose a directory - Pasirinkite aplanką - - - - - - - - - Confirm removal - Šalinimo patvirtinimas - - - - - Remove directory <b>%1</b> from the list? - Aplanką <b>%1</b> pašalinti iš sąrašo? - - - - - - Remove site <b>%1</b> from the list? - Svetainę <b>%1</b> pašalinti iš sąrašo? - - - - Remove program <b>%1</b> from the list? - Programą <b>%1</b> pašalinti iš sąrašo? - - - - Files - Failai - - - - Paths to search for the dictionary files: - Keliai, kuriuose ieškoma žodynų failų: - - - - - - - - - &Add... - Pri&dėti... - - - - - - - - - &Remove - &Pašalinti - - - - Re&scan now - Pe&ržvelgti dabar - - - - Sound Dirs - Garsų aplankai - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Nurodydami kelius, sukurkite žodynus iš garsų failų rinkinių: - - - - Morphology - Morfologija - - - - Path to a directory with Hunspell/Myspell dictionaries: - Kelias iki aplanko su Hunspell/Myspell žodynais: - - - - &Change... - &Taisa... - - - - Available morphology dictionaries: - Rasti morfologijos žodynai: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Kiekvienas morfologijos žodynas rodomas kaip -atskiras pagalbinis žodynas, kuris paieškai -pateikia žodžių kamienus ir klaidingai įvestų žodžių -rašybos spėjimus. -Žodynus pridėkite atitinkamų grupių apačioje. - - - - Websites - Svetainės - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Bet kokios svetainės. %GDWORD% rašykite vietoj užklausos žodžio: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Taip pat galite naudoti %GD1251% (CP1251koduotei) arba %GDISO1% (ISO 8859-1 koduotei). - - - - Programs - Programos - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Bet kokia išorinė programa. Norėdami perduoti užklausos žodį, rašykite %GDWORD%. Žodis taip pat perduodamas į standartinę įvedimą. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Gyvų žmonių tarimas iš <a href="http://www.forvo.com/">forvo.com</a>. Šioje svetainėje asmenims siūloma įrašyti žodžių tarimą ir pasidalinti juo. GoldenDict leidžia pasinaudoti šiais ištekliais. - - - - Enable pronunciations from Forvo - Įgalinti tarimą pagal Forvo - - - - API Key: - API raktas - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Šiuo metu norint naudotis Forvo paslauga, reikia turėti API raktą. -Jei norite naudoti numatytąjį raktą, palikite tuščią laukelį. -Deja, ateityje numatytasis raktas gali nebegalioti, tad siūlome užsiregistruoti ir įrašyti nuosavą raktą. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Savo asmeninį raktą gausite <a href="http://api.forvo.com/key/">čia</a>. Norėdami naudoti numatytąjį, palikite laukelį tuščią. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Nuosavą raktą gausite <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">čia</span></a>. Palikus tuščią laukelį – bus naudojamas numatytasis.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Arba naudokite %GD1251% – CP1251, %GDISO1%...%GDISO16% – ISO 8859-1...ISO 8859-16 atitinkamai koduotei, -%GDBIG5% – Big-5, %GDBIG5HKSCS% – Big5-HKSCS, %GDGBK% – GBK ir GB18030, %GDSHIFTJIS% – Shift-JIS. - - - - DICT servers - DICT serveriai - - - - DICT servers: - DICT serveriai: - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Bet kokia išoriinė programa. „%GDWORD%“ eilutė (be kabučių) bus pakeista į užklausos žodį. Jei šios eilutės nebus, žodis bus perduotas į standartinį įvedimą. - - - - Language codes (comma-separated): - Kalbų kodai (atskirti kableliais): - - - - List of language codes you would like to have. Example: "en, ru". - Norimų kalbų kodai. Pavyzdžiui: „en, ru, lt“. - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Visas kalbų kodų sąrašas pateiktas <a href="http://www.forvo.com/languages-codes/">čia</a>. - - - - Transliteration - Transliteracija - - - - Russian transliteration - Transliteracija (rusų) - - - - Greek transliteration - Transliteracija (graikų) - - - - German transliteration - Transliteracija (vokiečių) - - - - Belarusian transliteration - Transliteracija (baltarusių) - - - - Enables to use the Latin alphabet to write the Japanese language - Įgalinti rašymą japonų kalba naudojant lotynišką abėcėlę - - - - Japanese Romaji - Romaji (japonų) - - - - Systems: - Sistemos: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Dažniausiai naudojamas būdas japonų kalbai transkribuoti -anglų kalbos fonologijos pagrindu - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Taisyklingiausia sistema, turinti tiesioginį ryšį su -kana rašto sistemomis. Standartizuota kaip ISO 3602 - -Dar neįtraukta į GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Sukurta Nihon-shiki sistemos pagrindu, bet pritaikyta šiuolaikinei japponų kalbai. -Standartizuota kaip ISO 3602 - -Dar įtraukta į GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Skiemenų abėcėlė: - - - - Hiragana Japanese syllabary - Japonų skiemenenų abėcėlė Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Japonų skiemenenų abėcėlė Katakana - - - - Katakana - Katakana - - - - Wikipedia - Пишется по-русски, источник: ru.wikipedia.org - Vikipedija - - - - Wikipedia (MediaWiki) sites: - Vikipedijos (Vikitekos) svetainės: - - - - StylesComboBox - - - None - Nieko - - - - TextToSpeechSource - - - Selected voice engines: - Pasirinkite balso modulį: - - - - &Add - &Pridėti - - - - &Remove - &Pašalinti - - - - Preferences - Nuostatos - - - - Volume: - Garsumas: - - - - Rate: - Dažnis: - - - - Preview - Išbandyti - - - - Available voice engines: - Galimi moduliai - - - - Text to be previewed: - Perskaitytinas tekstas - - - - Type text to be previewed here. - Parašykite tekstą, kurį norėsite išmėginti. - - - - &Preview - &Skaityti - - - - No TTS voice available - Nėra prieinamų TTS balsų - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Nepavyksta rasti TTS balsų.<br>Įsitikinkite, kad savo kompiuteryje įdiegėte kokį nors TTS variklį. - - - - Confirm removal - Šalinimo patvirtinimas - - - - Remove voice engine <b>%1</b> from the list? - Iš meniu sąrašo pašalinti balso variklį <b>%1</b>? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Įveskite norimą rasti žodį ar frazę - - - Options - Parinktys - - - - Drop-down - Išskleisti - - - - VoiceEnginesModel - - - Enabled - Įgalinta - - - - Name - Pavadinimas - - - - Id - Id - - - - Icon - Ženkliukas - - - - WebSitesModel - - - Enabled - Įgalinta - - - - Name - Pavadinimas - - - - Address - Adresas - - - - Icon - Ženkliukas - - - - WordFinder - - - Failed to query some dictionaries. - Kai kurių žodynų nepavyko užklausti. - - - - WordList - - - WARNING: %1 - ĮSPĖJIMAS: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/mk_MK.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/mk_MK.ts deleted file mode 100644 index f689518a34..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/mk_MK.ts +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - About - - - About - За програмот - - - - GoldenDict dictionary lookup program, version - Речник GoldenDict, издание - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © Константин Исаков (ikm@goldendict.org), 2008-2011 {2008-2013 ?} - - - - Credits: - Заслуги: - - - - Licensed under GNU GPLv3 or later - Лиценца: GNU GPLv3 или понова - - - - [Unknown] - [Непознато] - - - - Based on Qt %1 (%2, %3 bit) - На база на Qt %1 (%2, %3 бита) - - - - ArticleMaker - - - Expand article - Откриј ја статијата - - - - Collapse article - Соберија статијата - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Нема превод <b>%1</b> пронајден во групата <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Нема превод пронајден во групата <b>%1</b> - - - - Welcome! - Добро дојдовте! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Добро дојдовте во <b>GoldenDict</b>!</h3><p>Ако за прв пат го стартирате овој програм, одредете ја патеката до речникот во <b>Уреди|Речник</b>. Тука можете да наведете разни сајтови на Википедија или други извори на податоци, наместите го редоследот на речниците или направете речник.<p>по тоа, можете да почнете да барате зборови. Зборовите можат да се најдат во левото окно на прозорецот. Кога работите во други апликации, можете да барате зборови, користејќи <a href="Работа со скокачки прозорец">скокачкиот прозор</a>. <p>во изборникот <b>Уреди|Поставки</b>.Можете да ја наместите апликацијата по свој вкус. Сите параметри се наговестувања кои се прикажуваат кога преминувате преку нив. Обратете внимание на нив, кога имате проблеми со конфигурацијата.<p>Ако ви е потребна помош,било какви прашања, барања, итн, погледајте<a href="http://goldendict.org/forum/"> Форум на програмот</a>.<p>Ажурирање софтвер достапно на <a href="http://goldendict.org/">веб сајту</a>.<p>© Константин Исаков (ikm@goldendict.org), 2008-2011. Лиценца: GNU GPLv3 или понова. - - - - Working with popup - Работа со скан попап - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Скокачки прозорец</h3>За да пројдете зборови од друга апликација, потребно е да вклучите <i>«Овозможи скокачки прозор»</i> у <b>Поставке</b> и након тога омогућити искачуће дугме «Прегледај» у главном прозору или у пливајућем изборнику на икони у системској палети. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Користећи сајт Forvo захтева кључ API. Оставите -ово поље празно, да бисте користили подразумевани кључ, који -не може да ради у будућности, или се пријавите на -сајт, да бисте добили свој кључ. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Користите интерфејс IAccessibleEx да тражи речи под курсором. -Ова технологија ради само са програмима који га подржавају -(например Internet Explorer 9). -Ако не користите такве програме не треба да укључи ову опцију. - - - - (untitled) - (без име) - - - - (picture) - (слика) - - - - ArticleRequest - - - Expand article - &Меморирај ја оваа статија - - - - From - Од: - - - - Collapse article - Соберија ја статијата - - - - Query error: %1 - грешка во Прашање : %1 - - - - Close words: - Затвори зборови: - - - - Compound expressions: - Сложени изрази: - - - - Individual words: - Поединечни зборови: - - - - ArticleView - - - Resource - Извори на промени - - - - Audio - Аудио - - - - Definition: %1 - Дефиниција: %1 - - - GoldenDict - GoldenDict - - - - Select Current Article - Одберете тековна статија - - - - Copy as text - Копирај како текст - - - - Inspect - Прегледај - - - - TTS Voice - TTS глас - - - - Picture - Слика - - - - Video - Видео - - - - Video: %1 - Видео: %1 - - - - Definition from dictionary "%1": %2 - Дефиниција од речник "%1": %2 - - - - - The referenced resource doesn't exist. - Бараниот ресурс не е пронајден. - - - - The referenced audio program doesn't exist. - Бараниот аудио програм не е пронајден. - - - - - ERROR: %1 - ГРЕШКА: %1 - - - - &Open Link - &Отвори врска(линк) - - - - Open Link in New &Tab - Отворете ја оваа врска во нова &картичка - - - - Open Link in &External Browser - Отвори ја врската во надворешен &прегледувач - - - - Save &image... - Сочувај &слику... - - - - Save s&ound... - Сочувај з&вук... - - - - &Look up "%1" - &Побарај "%1" - - - - Look up "%1" in &New Tab - Побарај «%1» во &нова картичка - - - - Send "%1" to input line - Испрати "%1" во ред за внос - - - - - &Add "%1" to history - &Додади "%1" во историја - - - - Look up "%1" in %2 - Побарај «%1» во %2 - - - - Look up "%1" in %2 in &New Tab - Побарај «%1» во %2 во &нова картичка - - - - Save sound - Сочувај звук - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Звучни датотеки (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Сите датотеки (*.*) - - - - Save image - Сочувај слика - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Слики датотеки (*.bmp *.jpg *.png *.tif);;Сите датотеке (*.*) - - - - WARNING: FFmpeg Audio Player: %1 - ВНИМАНИЕ: FFmpeg Audio Player: %1 - - - Playing a non-WAV file - Репродукуј не WAV датотеку - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Да бисте омогућили могућност да репродукујете датотеке типа, различитих од WAV, посетите Уреди|Поставке, изаберите картицу Аудио, а затим изаберите "излаз звука преко DirectShow". - - - - Failed to run a player to play sound file: %1 - Не е можно да се пушти аудио датотека: %1 - - - - Failed to create temporary file. - Неуспешно креирање привремена датотека. - - - - Failed to auto-open resource file, try opening manually: %1. - Грешка при отворање датотека ресурс , пробајте рачно да отворите: %1. - - - - The referenced resource failed to download. - Не е можно вчитување на поврзани ресурси. - - - - WARNING: %1 - ПРЕДУПРЕДУВАЊЕ: %1 - - - - Form - Form - - - - about:blank - about:blank - - - - x - x - - - - Find: - Побарај: - - - - - &Previous - &Претходен - - - - - &Next - &Следен - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Мали и големи букви - - - - Highlight &all - Нагласи &се - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Белоруска транслитерација од латиница на кирилица (класичен правопис) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Белоруска транслитерација са латинице на ћирилицу (школски правопис) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Белоруска транслитерација (изједначава разлике -између класичних и школског правописа на ћирилици) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Лозинка: - - - - DictGroupWidget - - - Form - Form - - - - Group icon: - Икона на група: - - - - Shortcut: - Брз пристап: - - - - None - Ништо - - - - From file... - Од датотека... - - - - Choose a file to use as group icon - Одберете датотека за користење како икона на група - - - - Images - Слики - - - - All files - Сите датотеки - - - - Error - Грешка - - - - Can't read the specified image file. - Не може да се чита одабраната слика - - - - DictGroupsWidget - - - - - - Dictionaries: - Речници: - - - - Confirmation - Потврда - - - - Are you sure you want to generate a set of groups based on language pairs? - Да ли сте сигурни дека сакате да креирате сет на групи на основа на јазични парови? - - - - Unassigned - Недоделено - - - - Combine groups by source language to "%1->" - Комбинирајте групи од изворниот јазик во "%1->" - - - - Combine groups by target language to "->%1" - Комбинирајте групи од целниот јазик во "->%1" - - - - Make two-side translate group "%1-%2-%1" - Направете двострана група за преведување "%1-%2-%1" - - - - - Combine groups with "%1" - Комбинирајте група со "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Текстуални датотеки (*.txt);;Сите датотеки (*.*) - - - - Export headwords... - - - - - Cancel - Откажи - - - - DictInfo - - - Total articles: - Вкупно статии: - - - - Translates from: - Изворен јазик: - - - - Total words: - Вкупно зборови: - - - - Translates to: - Преведи на: - - - - Open folder - Отвори папка - - - - Edit dictionary - Уреди речник - - - - Files comprising this dictionary: - Датотеки кои го сочинуваат речникот: - - - - Description: - Опис: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Уредиго речникот преку команда: -%1 - - - - DictListModel - - - %1 entries - %1 влезови - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - - - - - Name - - - - - Address - - - - - Databases - - - - - Strategies - - - - - Icon - Икона - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Картица речника - - - - &Dictionary Bar - &Лента на речникот - - - - Extended menu with all dictionaries... - Проширено мени со сите речници... - - - - Edit this group - Уреди ја оваа група - - - - Dictionary info - Податоци за речникот - - - - Dictionary headwords - - - - - Open dictionary folder - Отвори папка на речникот - - - - Edit dictionary - Уреди речник - - - - EditDictionaries - - - &Sources - &Извори - - - - - &Dictionaries - &Речници - - - - - &Groups - &Групи - - - - Sources changed - Извори сменети - - - - Some sources were changed. Would you like to accept the changes? - Некои извори се изменети. Прифаќаш измени? - - - - Accept - Прифати - - - - Cancel - Откажи - - - - Dictionaries - Речници - - - - ExternalViewer - - - the viewer program name is empty - Надворешен прикажувач - непознат - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Анализа грешке XML: %1 на линији %2, колона %3 - - - - Added %1 - Додато %1 - - - - by - из - - - - Male - Човек - - - - Female - Жена - - - - from - из - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Иди на Уреди|Речници|Извори|Forvo и примени на ваш кључ API, да бисте решили овај проблем. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Откажи - - - - Help - - - - - GermanTranslit - - - German Transliteration - Транскрипција (Германски) - - - - GreekTranslit - - - Greek Transliteration - Транскрипција (Грчки) - - - - GroupComboBox - - - Choose a Group (Alt+G) - Одберете група (Alt+G) - - - - GroupSelectorWidget - - - Form - Форма - - - - Look in - Побарај - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Додади група - - - - Give a name for the new group: - Внеси име на нова група: - - - - Rename group - Промени име на група - - - - Give a new name for the group: - Внесете ново име на група: - - - - Remove group - Отстрани група - - - - Are you sure you want to remove the group <b>%1</b>? - Сигурно сакате да отстраните група <b>%1</b>? - - - - - Remove all groups - Отрстраните ги сите групи - - - - Are you sure you want to remove all the groups? - Сигурни сте да се отстранат сите групи? - - - - Dictionaries available: - Достапни речници: - - - - Add selected dictionaries to group (Ins) - Додај го одбраните речници во група (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Отстраните ги одбраните речници од група (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Групи: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Направи нова групу - - - - &Add group - &Додади група - - - - Create language-based groups - Направи групи на основа на јазични парови - - - - Auto groups - Ауто групи - - - - Rename current dictionary group - Преименувај ја тековната група на речникот - - - - Re&name group - &Преименувај група - - - - Remove current dictionary group - Отстрани тековна група речници - - - - &Remove group - &Отстраните група - - - - Remove all dictionary groups - Отстраните го сите групи речници - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Повлечи па Спушти од/во групите , премести ги внатре во групите, промените го редоследот на групите, со помош на глушецот. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Назад - - - - Forward - Напред - - - - Zoom In - Зумирај - - - - Zoom Out - Одзумирај - - - - Normal Size - Вообичаена големина - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - Избриши го одбраното - - - - Copy Selected - Копирај ги одбраните - - - - History: - Историја: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Големина на историјата: %1 внос од максимални %2 - - - - Hunspell - - - Spelling suggestions: - Предлози за правопис: - - - - %1 Morphology - %1 (морфологија) - - - - HunspellDictsModel - - - Enabled - Вклучено - - - - Name - Име - - - - Initializing - - - Please wait... - Почекајте... - - - - - Please wait while indexing dictionary - Почекајте додека речникот се индексира - - - - GoldenDict - Initializing - Стартувај го GoldenDict - - - - Dictionary Name - Име на речникот - - - - Language - - - Afar - Афарски - - - - Abkhazian - Абхазија - - - - Avestan - Авестан - - - - Afrikaans - Афрички - - - - Akan - Акански - - - - Amharic - Амхарски - - - - Aragonese - Арагонски - - - - Arabic - Арапски - - - - Assamese - Асамски - - - - Avaric - Аварски - - - - Aymara - Аимаран - - - - Azerbaijani - Азербејџански - - - - Bashkir - Башкирски - - - - Belarusian - Белоруски - - - - Bulgarian - Бугарски - - - - Bihari - Бихарски - - - - Bislama - Бислама - - - - Bambara - Бамана - - - - Bengali - Бенгалски - - - - Tibetan - Тибетански - - - - Breton - Бретонски - - - - Bosnian - Босански - - - - Catalan - Каталонски - - - - Chechen - Чеченски - - - - Chamorro - Чаморо - - - - Corsican - Корсикански - - - - Cree - Кри - - - - Czech - Чешки - - - - Church Slavic - Црквено-словенски - - - - Chuvash - Чувашски - - - - Welsh - Велшки - - - - Danish - Дански - - - - German - Германски - - - - Divehi - Малдиви - - - - Dzongkha - Џонга (Бутан) - - - - Ewe - Еве - - - - Greek - Грчки - - - - English - Англиски - - - - Esperanto - Есперанто - - - - Spanish - Шпански - - - - Estonian - Естонски - - - - Basque - Баскијски - - - - Persian - Персијски - - - - Fulah - Фула - - - - Finnish - Фински - - - - Fijian - Фиџи - - - - Faroese - Фарски - - - - French - Француски - - - - Western Frisian - Фризииски - - - - Irish - Галски (Ирска) - - - - Scottish Gaelic - Галски (Шкотска) - - - - Galician - Галицијски - - - - Guarani - Гварани - - - - Gujarati - Гуџарати - - - - Manx - Манкс - - - - Hausa - Хауса - - - - Hebrew - Јеврејски - - - - Hindi - Хинди - - - - Hiri Motu - Хири-моту - - - - Croatian - Хрватски - - - - Haitian - Хаићански - - - - Hungarian - Мађарски - - - - Armenian - Јерменски - - - - Herero - Ереро - - - - Interlingua - Интерлингва - - - - Indonesian - Индонезијски - - - - Interlingue - Интерлингве - - - - Igbo - Ибо - - - - Sichuan Yi - Сечуан И - - - - Inupiaq - Инупиак - - - - Ido - Идо - - - - Icelandic - Исландски - - - - Italian - Италијански - - - - Inuktitut - Инуктитут - - - - Japanese - Јапански - - - - Javanese - Јаванац - - - - Georgian - Грузијски - - - - Kongo - Конго - - - - Kikuyu - Кикују - - - - Kwanyama - Кваниама - - - - Kazakh - Казак - - - - Kalaallisut - Калаалисут - - - - Khmer - Кмерски - - - - Kannada - Канада - - - - Korean - Корејски - - - - Kanuri - Канури - - - - Kashmiri - Кашмирски - - - - Kurdish - Курдски - - - - Komi - Коми - - - - Cornish - Корнвалски - - - - Kirghiz - Киргизски - - - - Latin - Латински - - - - Luxembourgish - Луксембургшки - - - - Ganda - Ганда - - - - Limburgish - Лимбурзхски - - - - Lingala - Лингала - - - - Lao - Лао - - - - Lithuanian - Литвански - - - - Luba-Katanga - Луба-Катанга - - - - Latvian - Летонски - - - - Malagasy - Мадагаскарац - - - - Marshallese - Маршалски - - - - Maori - Маори - - - - Macedonian - Македонски - - - - Malayalam - Малаиалам - - - - Mongolian - Монголски - - - - Marathi - Марати - - - - Malay - Малајски - - - - Maltese - Малтешки - - - - Burmese - Бурмански - - - - Nauru - Науру - - - - Norwegian Bokmal - Норвешки букмол - - - - North Ndebele - Сев. Ндебеле - - - - Nepali - Непалски - - - - Ndonga - Ндонга - - - - Dutch - Холандски - - - - Norwegian Nynorsk - Норвешки (нинорск) - - - - Norwegian - Норвешки - - - - South Ndebele - Јуж. Ндебеле - - - - Navajo - Навахо - - - - Chichewa - Чичева - - - - Occitan - Французски (диалект Occitan) - - - - Ojibwa - Оджибва - - - - Oromo - Оромо - - - - Oriya - Орија - - - - Ossetian - Осетински - - - - Panjabi - Панџаби - - - - Pali - Пали - - - - Polish - Пољски - - - - Pashto - Пуштунски - - - - Portuguese - Португалски - - - - Quechua - Кечуа - - - - Raeto-Romance - Романшски - - - - Kirundi - Кирунди - - - - Romanian - Румынски - - - - Russian - Руски - - - - Kinyarwanda - Кињаруанда - - - - Sanskrit - Санскрит - - - - Sardinian - Сардинијски - - - - Sindhi - Синдхи - - - - Northern Sami - Северна Сами - - - - Sango - Санго - - - - Serbo-Croatian - Српско-Хрватски - - - - Sinhala - Синхала - - - - Slovak - Словачки - - - - Slovenian - Словеначки - - - - Samoan - Самоа - - - - Shona - Схона - - - - Somali - Сомалиски - - - - Albanian - Албански - - - - Serbian - Српски - - - - Swati - Свати - - - - Southern Sotho - Јуж. Сото - - - - Sundanese - Судански - - - - Swedish - Шведски - - - - Swahili - Суахили - - - - Tamil - Тамилски - - - - Telugu - Телугу - - - - Tajik - Таџикски - - - - Thai - Тајландски - - - - Tigrinya - Тигриња - - - - Turkmen - Туркменски - - - - Tagalog - Тагалог - - - - Tswana - Тсвана - - - - Tonga - Тонга - - - - Turkish - Турски - - - - Tsonga - Тсонга - - - - Tatar - Татарски - - - - Twi - Тви - - - - Tahitian - Тахитиан - - - - Uighur - Ујгурски - - - - Ukrainian - Украјински - - - - Urdu - Урду - - - - Uzbek - Узбекски - - - - Venda - Венда - - - - Vietnamese - Вијетнамски - - - - Volapuk - Волапук - - - - Walloon - Валонски - - - - Wolof - Волоф - - - - Xhosa - Кхоса - - - - Yiddish - Јидиш - - - - Yoruba - Јоруба - - - - Zhuang - Чжуанг - - - - Chinese - Кинески - - - - Zulu - Зулу - - - - Lojban - Lojban - - - - Traditional Chinese - Традиционални кинески - - - - Simplified Chinese - Поједностављени кинески - - - - Other - Остали - - - - Other Simplified Chinese dialects - Остали поједностављеном кинеском дијалекти - - - - Other Traditional Chinese dialects - Остали традиционални кинески дијалекти - - - - Other Eastern-European languages - Остали источно-европски језици - - - - Other Western-European languages - Остали западно-европски језици - - - - Other Russian languages - Остали руски језици - - - - Other Japanese languages - Остали јапански језици - - - - Other Baltic languages - Остали балтички језици - - - - Other Greek languages - Остали грчки језици - - - - Other Korean dialects - Остали корејски дијалекти - - - - Other Turkish dialects - Остали турски дијалекти - - - - Other Thai dialects - Остали тајландски дијалекти - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Грешка при вчитување на статијата - - - - Main - - - Error in configuration file. Continue with default settings? - Грешка во поставката на датотеката. Да продолжиме со претпоставени нагодувања? - - - - MainWindow - - Navigation - Навигација - - - - Back - Назад - - - - Forward - Напред - - - - Scan Popup - Скан Попап - - - - Show &Main Window - Прикажи &главен прозорец - - - - - &Quit - И&злез - - - - Loading... - Вчитување... - - - - Skip This Release - Прескокни ја оваа верзија - - - - You have chosen to hide a menubar. Use %1 to show it back. - Го сокривте главното мени. За да го вратите, користете %1. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Дотерување/Нагодување на страна - - - - No printer is available. Please install one first. - Нема достапен печатач. Ве молиме, прво инсталирајте го. - - - - Print Article - Печати статија - - - - Article, Complete (*.html) - Статија, целосна (*.html) - - - - Article, HTML Only (*.html) - Статија, само HTML (*.html) - - - - Save Article As - Сочувај ја оваа статија како - - - Html files (*.html *.htm) - Датотека Html (*.html *.htm) - - - - Error - Грешка - - - - Can't save article: %1 - Не е возможно да се сочува статијата: %1 - - - - %1 dictionaries, %2 articles, %3 words - Речник: %1, статии: %2, зборови: %3 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Неуспешна иницијализација на механизмот за надгледување на кратенките(на таст.).<br>Проверете дали вашиот XServer подржува RECORD EXtension. - - - - New Release Available - Достапна е нова верзија - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Издание <b>%1</b> на програмот GoldenDict е достапно за преземање.<br> -Притисни <b>Преземи</b>, за премин на страна за преземање. - - - - Download - Преземање - - - - - Look up in: - Побарај во: - - - Show Names in Dictionary Bar - Прикажи име у картици речника - - - Show Small Icons in Toolbars - Прикажи мале иконе на траци са алаткама - - - - &Menubar - - - - - Found in Dictionaries: - Најдено во речниците: - - - - Pronounce Word (Alt+S) - Изговори збор (Alt+S) - - - - Show Names in Dictionary &Bar - Прикажи називи во картичките &Лентата на речникот - - - - Show Small Icons in &Toolbars - Прикажи мала икона во &алатникот - - - - &Navigation - &Навигација - - - - Zoom In - Зумирај - - - - Zoom Out - Одзумирај - - - - Normal Size - Вообичаена големина - - - - Words Zoom In - Зборови Зумирај - - - - Words Zoom Out - Зборови Одзумирај - - - - Words Normal Size - Вообичаена големина на букви - - - - Close current tab - Затвори ја тековната картичка - - - - Close all tabs - Затвори ги сите картички - - - - Close all tabs except current - Затворите ги сите картички освен тековната - - - - - Accessibility API is not enabled - Достапност API не е овозможен - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Look up: - Побарај: - - - - All - Се - - - - Saving article... - Меморирање статија... - - - - The main window is set to be always on top. - Главнен прозорев е поставен секогаш да е најгоре. - - - - &Hide - &Сокри - - - - Export history to file - Извоз на историја во датотека - - - - - Text files (*.txt);;All files (*.*) - Текстуални датотеки (*.txt);;Сите датотеки (*.*) - - - - History export complete - Извоз на историјата е завршен - - - - Export error: - Извоз грешка: - - - - Import history from file - Увоз на историја од датотека - - - - Import error: invalid data in file - Увоз грешка: неважечки податоци во датотека - - - - History import complete - Увоз на историјата е завршен - - - - Import error: - Грешка при увоз: - - - - Dictionary info - Податоци за речникот - - - - Dictionary headwords - - - - - Open dictionary folder - Отвори папка на речник - - - - Edit dictionary - Уреди речник - - - - Now indexing for full-text search: - - - - - Opened tabs - Отворени картички - - - - Open Tabs List - Отвори листа на картички - - - - (untitled) - (неименуван) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - Пажња: %1 - - - GoldenDict - GoldenDict - - - - - Welcome! - Добро дојдовте! - - - - &File - &Датотека - - - - &Edit - &Уреди - - - - &Help - &Помош - - - &Dictionaries... F3 - &Речници... F3 - - - - &Preferences... - &Поставки... - - - - F2 - F2 - - - - &View - &Приказ - - - - &Zoom - &Зголеми - - - - H&istory - &Историја - - - Results Navigation Pane - Окно навигације за резуктате - - - - Search - - - - - &Search Pane - &Пребарај окно - - - - &Results Navigation Pane - &Резултати окно за навигација - - - - &History Pane - &Окно историја - - - - &Dictionaries... - &Речници... - - - - F3 - F3 - - - - F4 - F4 - - - - &Homepage - &Почетна страна - - - - &About - &За програмот - - - - About GoldenDict - За GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Затвори апликација - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Форум - - - - &Close To Tray - &Затвори во палета(треј) - - - - Minimizes the window to tray - Смали прозорец во палета - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Сочувај статија - - - - Save Article - Сочувајте статија - - - - &Print - &Печати - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - П&оставки на страна - - - - Print Pre&view - Преглед пред п&ечатење - - - - &Rescan Files - &Повторно сканирај датотеки - - - - &New Tab - &Нова картичка(таб) - - - - - &Show - &Прикажи - - - - Ctrl+H - Ctrl+H - - - - &Export - &Извоз - - - - &Import - &Увоз - - - - &Always on Top - &Секога најгоре - - - - Always on Top - Секогаш најгоре - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Копче на менито - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Преглед пре штампања - - - Rescan Files - Поново прегледа датотеке - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - О&чисти - - - - New Tab - Нова картичка - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Папка за нагодувања - - - Search Pane - Окно претраге - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Речник датотека је покварен или оштећен - - - - Failed loading article from %1, reason: %2 - Неуспешно учитавање чланка из %1, разлог: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Анализа грешке XML: %1 у %2, колони %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Анализа грешке XML: %1 у %2, колони %3 - - - - MediaWikisModel - - - Enabled - Укључено - - - - Name - Назив - - - - Address - Адреса - - - - Icon - Икона - - - - OrderAndProps - - - Form - збор - - - - Dictionary order: - Редослед речника: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Неактиван (онемогућени) речници: - - - - Dictionary information - Информације о речнику - - - - Name: - Назив: - - - - Total articles: - Укупно чланака: - - - - Total words: - Укупно речи: - - - - Translates from: - Изворни језик: - - - - Translates to: - Циљни језик: - - - - Description: - Опис: - - - - Files comprising this dictionary: - Датотеке које чине речник: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Промена редоследа речника, превлачењем миша. Да бисте онемогућили речник превуците га на дно неактивне групе. - - - - Sort by name - Разврстај по имену - - - - Sort by languages - Разврстај по језицима - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Патека - - - - Recursive - Рекурзивно - - - - Preferences - - - Preferences - Поставки - - - - &Interface - &Интерфејс - - - - Tabbed browsing - Прегледување со помош на картички - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Обично када отворате нова картичка, преминете на неа -веднаш. Меѓутоа, кога оваа опција е овозможена, новата картичка ќе се -отвори, без нивно преминување. - - - - Open new tabs in background - Отворање нова картичка во позадина - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Ако оваа опција е омоможена, новата картичка ќе биде -отворена веднаш по тековната, во спротивно -се додава на крај. - - - - Open new tabs after the current one - Отворање нова картичка по тековната - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Кога е овозможено, икона се појавува во сист.палета која можеда се користи, -да се отвори главен прозорец и да се извршат други задачи. - - - - Enable system tray icon - Прикажи икона во системската палета - - - - With this on, the application starts directly to system tray without showing -its main window. - Када е омозможена оваа опцију, апликацијата ќе работи во систем. палета -без приказ на главниот прозорец. - - - - Start to system tray - Стартувај во системската палета - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Кога оваа опција е вклучена, обид за затварање на главниот прозорец само ќе го скрие -во системската палета. - - - - Close to system tray - Затвори во системска палета - - - - Startup - Стартување - - - - Start with system - Стартувај со системот - - - - Interface language: - Јазик на интерфејсот: - - - - Display style: - Стил на Приказ: - - - - Double-click translates the word clicked - Преведи го одбраниот збор со двоен клик - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Вклучи или не вклучи попап прозорец кога програмот стартува. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Можда је боље овако: -Обично искакање прозора активира се само ако су изабрани -тастери притиснути док бирате реч. Ако је ова опција укључена, -одабрани тастери могу да се притисну и текст је истакнут. - Во нормална состојба, за да активирате 'попап' -прозорец, мора да го држите одбраниот тастер во процесот -на истакнувањето на зборот. Међутоа, ако го користите овој режим, тастерот -може да се притисне одредено време после -тоа, како зборот би се издвоил. - - - - Hotkeys - Макро команди - - - - Use the following hotkey to show or hide the main window: - Користете следен макро за прикажување/криење на главниот прозорец: - - - - Use the following hotkey to translate a word from clipboard: - Користете следно макро за преведување зборови од остава: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Макро Командите се глобални и работат за секој програм и сите контексти, се додека GoldenDict работи во позадина. - - - - &Scan Popup - &Скан попап - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Овозможите ја оваа опција ако не сакате да гледате лента со картички -а само една картичка е отворена. - - - - Hide single tab - Сокри сингл(една) картичка - - - - Automatically starts GoldenDict after operation system bootup. - Автоматски стартувај го GoldenDict при стартување на оперативниот систем. - - - - Add-on style: - Додаток на стилот: - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Во нормален режим на работа, копчето ESC го поместува фокусот на линијта на преводот. -Ако ја овозможите оваа опција, таа ќе го сокрие главниот прозорец. - - - - ESC key hides main window - Сокриј го главниот прозорец со прит. ESC - - - - Turn this option on if you want to select words by single mouse click - Вклучете ја оваа можност ако сакате да одбирете зборови со еден клик на глушецот - - - - Select word by single click - Одберете збор со еден клик - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab навигација на картичка во MRU редослед - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Дотерајте ја оваа вредност за да одбегнете огромни контекстни менија - - - - Context menu dictionaries limit: - Ограничи контекст мени на речници: - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Кога е овозможено, попап прозорец на преводот ће се прикаже секогаш -кога покажувате со глушецот на било кој збор на екранот(во Windows) или одберете -било кој збор со глушецот (во Linux). Кога е овозможено, можете да го вклучите и -исклучите од главниот прозорец или иконичката. - - - - Enable scan popup functionality - Овозможи попап функционалност - - - - Start with scan popup turned on - Овозможи попап прозорец при стартување - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Ос ова овозможено, попап би се појавил само ако сите избрани тастери се -во притисната сосојба, кога избраните зборови не менуваат. - - - - Only show popup when all selected keys are kept pressed: - Само покажи попап кога сите одабрани тастери непрекинато се притиснати: - - - - Left Ctrl only - Само лев Ctrl - - - - Left Ctrl - Лев Ctrl - - - - Right Shift only - Само десен Shift - - - - Right Shift - Десен Shift - - - - Alt key - Тастер Alt - - - - Alt - Alt - - - - Ctrl key - Тастер Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Само лев Alt - - - - Left Alt - Лев Alt - - - - Shift key - Тастер Shift - - - - Shift - Shift - - - - Right Alt only - Само десен Alt - - - - Right Alt - Десен Alt - - - - Right Ctrl only - Само десен Ctrl - - - - Right Ctrl - Десен Ctrl - - - - Left Shift only - Само лев Shift - - - - Left Shift - Лев Shift - - - - Windows key or Meta key - Тастер Windows или Meta - - - - Win/Meta - Win или Meta - - - - Keys may also be pressed afterwards, within - Копчињата исто така можат да бидат накнадно притиснати, во рамки на - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - За да се избегнат лажни резултати, копчињата се следат -по селекцијата направена во ограничен број -секунди, кој овде е определен. - - - - secs - секунди - - - - Send translated word to main window instead of to show it in popup window - Пратете го преведениот збор во главниот прозорец наместо да се прикаже во попап прозорецот - - - - Send translated word to main window - Испратите го преведениот збор во главниот прозорец - - - - Play audio files via FFmpeg(libav) and libao - Пушти звучни датотеке преку FFmpeg(libav) и libao - - - - Use internal player - Користи вграден пуштач - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Неки сајтови откривају GoldenDict преко HTTP заглавља и блок захтева. -Омогућите ову могућност да бисте решили тај проблем. - - - - Do not identify GoldenDict in HTTP headers - Немојте да го идентификувате GoldenDict у HTTP заглавја - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Ad&vanced - Напредно - - - - ScanPopup extra technologies - Додатни методи за одредување на зборот под курсорот - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Користите интерфејс IAccessibleEx да тражи речи под курсором. -Ова технологија ради само са програмима који га подржавају -(например Internet Explorer 9). -Ако не користите такве програме не треба да укључи ову опцију. - - - - Use &IAccessibleEx - Користи &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Користи технологија UI Automation за барање зборови под курсорот. -Оваа технологи работи само со програми кои го подржјуваат. -Ако не користите такви програми не треба да ја вклучувате оваа опција. - - - - Use &UIAutomation - Користи &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Користи специјални GoldenDict пораки за пребарување зборови под покажувачот. -Оваа технологија работи само со програмите, кои ја подржуваат. -Ако не користите такви програми не треба да ја вклучите оваа опциј. - - - - Use &GoldenDict message - Користи барање &GoldenDict - - - - History - Историјат - - - - Turn this option on to store history of the translated words - Вклучете ја оваа могжност за чување историја на преведените зборови - - - - Store &history - Склад на &историјата - - - - Specify the maximum number of entries to keep in history. - Одреди најголем број ставки кои ќе се чуваат во историјата - - - - Maximum history size: - Максимална големина на историјата: - - - - History saving interval. If set to 0 history will be saved only during exit. - Период на чување на историјата. Ако се постави на 0 историјата ќесе чува само додека не излеземе. - - - - Save every - Меморирај на секои - - - - minutes - минути - - - - Articles - Статии - - - - Turn this option on to always expand optional parts of articles - Вклуч. ја оваа можност за секогаш да ги рашири незадолж. делови на стат. - - - - Expand optional &parts - Можност за ширење на &деловите - - - - Select this option to automatic collapse big articles - Одберете ја оваа можност за авт. да се собираат големите статии - - - - Collapse articles more than - Вруши статии поголеми од - - - - Articles longer than this size will be collapsed - Статии подолги од оваа величина ќе бидат срушени - - - - symbols - симболи - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Напомена: Чини се да користите верзију X.Org XServer, у којој не постоји подршка за проширење RECORD. Вероватно пречице GoldenDict не раде. Овај проблем би требало да буде исправљен на страни XServer. За више информација погледајте </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> а ако желите, поставите своје коментаре.</span></p></body></html> - - - - &Audio - &Аудио - - - - Pronunciation - Изговор - - - - Auto-pronounce words in main window - Автоматски изговари зборови во главниот прозорец - - - - Auto-pronounce words in scan popup - Автоматски изговори зборови во скокачки прозорец - - - - Playback - Репродукција - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Коришћење интерних фондова Windows за репродукцију. Подржава -само датотеке типа .wav, али репродукција увек ради добро. - - - Play via Windows native API - Репродукуј унутрашњим ресурсима Windows-а - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Репродукуј кроз систем Phonon. Понекад ради нестабилно, -али подржава већину аудио формате. - - - Play via Phonon - Репродукуј преко Phonon - - - - Use any external program to play audio files - Користи некоја надворешна апликација за репродукција на аудио датотеки - - - - Use external program: - Користи надворешен програм: - - - - &Network - &Мрежа - - - - Enable if you wish to use a proxy server -for all program's network requests. - Омозможи ако користите прокси сервер -за сите мрежни побарувања на програмот. - - - - Use proxy server - Користи прокси-сервер - - - - Type: - Тип: - - - - Host: - Сервер: - - - - Port: - Порт: - - - - User: - Корисничко име: - - - - Password: - Лозинка: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Оваа опција овозможува GoldenDictда ги блокира повеќето -реклами со оневозможување на одредени садржини (слики, рамки, и т.н.), -кои не произлегуваат од ориг. сајт. Ако некои сајтови се рушат -поради оваа функција, обидете се да ја оневозможите оваа опција. - - - - Disallow loading content from other sites (hides most advertisements) - Оневозможи вчитување садржини од други сајтови (отстранува поголем дел од огласите) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Оваа опција ви омозможува слушање изговор од надвор. -сајтови, кои се потпираат на Flash или други додатоци. -За ова да функционира, додатоците треба да се инсталираат. - - - - Enable web plugins - Омозможи веб додатаци - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Ако е оваа опција е омозможена, програмот, од време на -време ќе провери за најнова верзија -GoldenDict. Ако се појави нова верзија, програмот -ќе извести за тоа и понуди да го преземе -од сајтот. - - - - Check for new program releases periodically - Провери нова верзија - - - - System default - Систем - подразбирано - - - - - Default - Подразбирано - - - - Modern - Модерен - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Репродукуј преко DirectShow - - - - Changing Language - Промена на јазик - - - - Restart the program to apply the language change. - Поново покрените програм за промену језика. - - - - ProgramTypeEditor - - - Audio - Аудио - - - - Plain Text - Текст - - - - Html - Html - - - - Prefix Match - По префикси - - - - Unknown - Непознато - - - - Programs::RunInstance - - - No program name was given. - Програм није наведен. - - - - The program has crashed. - Програм је завршио са грешком - - - - The program has returned exit code %1. - Програм је вратио излазни код %1. - - - - ProgramsModel - - - Enabled - Вклучено - - - - Type - Тип - - - - Name - Назив - - - - Command Line - Командна линија - - - - Icon - Икона - - - - QObject - - - - Article loading error - Грешка при вчитување статија - - - - - Article decoding error - Грешка декодирања чланка - - - - avformat_alloc_context() failed. - avformat_alloc_context() није успело. - - - - av_malloc() failed. - av_malloc() није успело. - - - - avio_alloc_context() failed. - avio_alloc_context() није успело. - - - - avformat_open_input() failed: %1. - avformat_open_input() није успело: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() није успело: %1. - - - - Could not find audio stream. - Није могуће пронаћи аудио ток. - - - - Codec [id: %1] not found. - Кодек [id: %1] није пронађен. - - - - avcodec_open2() failed: %1. - avcodec_open2() није успело: %1. - - - - Cannot find usable audio output device. - Не можете да пронађете употребљив уређај за звучни излаз. - - - - Unsupported sample format. - Неподржан је пробни формат. - - - - ao_open_live() failed: - ao_open_live() није успело: - - - - No driver. - Нема управљача. - - - - This driver is not a live output device. - Овај управљач нема активан излазни уређај. - - - - A valid option key has an invalid value. - Важећи избор тастера има неважећу вредност. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Не могу да отворим уређај: %1, канали: %2, мера: %3, бита: %4. - - - - Unknown error. - Непозната грешка. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() није успело. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Речник - претрага/филтер (Ctrl+F) - - - - Quick Search - Брза претрага - - - - Clear Search - Очисти претрагу - - - - ResourceToSaveHandler - - - - ERROR: %1 - ГРЕШКА: %1 - - - - Resource saving error: - Грешка чувања ресурса: - - - - The referenced resource failed to download. - Није могуће учитати повезане ресурсе. - - - - Romaji - - - Hepburn Romaji for Hiragana - Хепберн Ромаји (Хирагана) - - - - Hepburn Romaji for Katakana - Хепберн Ромаји (Катакана) - - - - RussianTranslit - - - Russian Transliteration - Транслитерација (Руски) - - - - ScanPopup - - - Dialog - Дијалог - - - word - реч - - - List Matches (Alt+M) - Списак подударности (Alt+M) - - - Alt+M - Alt+M - - - - Back - Назад - - - - Forward - Напред - - - - Pronounce Word (Alt+S) - Изговори збор (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Испрати збор во главен прозорец (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Прикажување или скривање лента на речници - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Кликните за да го усидрите прозорецот на екранот, промените големината -или било која друга особина. - - - - - - - - ... - ... - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Патека - - - - Name - Назив - - - - Icon - Икона - - - - Sources - - - Text to Speech - Текст во говор - - - - (not available in portable version) - (не е достапно во преносна верзија) - - - - - - Choose a directory - Одбери папка - - - - - - - - - Confirm removal - Потврди отстранување - - - - - Remove directory <b>%1</b> from the list? - Отстрани папка <b>%1</b> од список? - - - - - - Remove site <b>%1</b> from the list? - Отстрани веб локација <b>%1</b> од список? - - - - Remove program <b>%1</b> from the list? - Отстрани програм <b>%1</b> ид список? - - - - Files - Датотеки - - - - Paths to search for the dictionary files: - Патека за пребарување датотеки на речникот: - - - - - - - - - &Add... - &Додади... - - - - - - - - - &Remove - &Отстрани - - - - Re&scan now - Пов&торно прегледај - - - - Sound Dirs - Папка со звуци - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Направи речници од куп звучни датотеи со додавање на патека овде: - - - - Morphology - Морфологија - - - - Path to a directory with Hunspell/Myspell dictionaries: - Патека до речник со Hunspell/Myspell речници: - - - - &Change... - &Промени... - - - - Available morphology dictionaries: - Достапни морфолошки речници: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Секој морфолошки речник -е посебен помошен речник кој -обезбедува матични зборови за пребар. и -дава предлози за правопис -за грешни зборови. -За користење на речникот -додадите соодветни речници -на крајот на одредени групи. - - - - Websites - Веб-сајтови - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Било кој веб-сајт. Низот %GDWORD% ќе биде заменет со зборот од прашалникот: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Такође је могуће користити %GD1251% за кодирање CP1251, %GDISO1% за ISO 8859-1. - - - - Programs - Програми - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Сваки екстерни програм. Низ %GDWORD% ће бити замењена траженом речју. Иста реч ће бити послата у стандардни улазни ток. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Уживо изговор са сајта <a href="http://www.forvo.com/">forvo.com</a>. Овај сајт омогућава корисницима да снимају и деле изговорене речи. Можете да их слушам из GoldenDict. - - - - Enable pronunciations from Forvo - Укључи изговор из Forvo - - - - API Key: - Кључ API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Користећи сајт Forvo захтева кључ API. Оставите -ово поље празно, да бисте користили подразумевани кључ, који -не може да ради у будућности, или се пријавите на -сајт, да бисте добили свој кључ. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - Узмите ваш кључ <a href="http://api.forvo.com/key/">овде</a>, или оставите празно да бисте користили подразумевани кључ. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Алтернативно, користите %GD1251% за CP1251, %GDISO1%...%GDISO16% за ISO 8859-1...ISO 8859-16 односно, -%GDBIG5% за Big-5, %GDBIG5HKSCS% за Big5-HKSCS, %GDGBK% за GBK и GB18030, %GDSHIFTJIS% за Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Неки спољни програми. Низ %GDWORD% биће замењен речју упита. Ако такав низ није представљен, реч ће се учитати у стандардни улаз. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Снабдете се со свој клуч <a href="http://api.forvo.com/key/">here</a>, или оставете празно за да користите подразбиран. - - - - Language codes (comma-separated): - Листа на јазични кодова (разделени со запирки): - - - - List of language codes you would like to have. Example: "en, ru". - Листа на кодови за јазици кои сакате да ги користите. Пример: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Комплетен список на језичните кодови е достапен <a href="http://www.forvo.com/languages-codes/">овде</a>. - - - - Transliteration - Транслитерација - - - - Russian transliteration - Транслитерација (Руски) - - - - Greek transliteration - Транслитерација (Грчки) - - - - German transliteration - Транслитерација (Немачки) - - - - Belarusian transliteration - Белоруска транслитерација - - - - Enables to use the Latin alphabet to write the Japanese language - Омозможува користење латиница за пишување јапонски - - - - Japanese Romaji - Ромаји (Јапонски) - - - - Systems: - Системи: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Најпопуларен метод за транскрипција на Јапонски е, -заснован на англиска фонологија - - - - Hepburn - Хепберн - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Систем, пренос приказа знакова кана је најтачније. -Стандардизовани у ISO 3602. - -В GoldenDict пока не реализована. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - На основу система Nihon-shiki, али модификован за модерне стандарде -савременог јапанског. Стандардизован у ISO 3602. - -В GoldenDict пока не реализована. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Слоговна азбука: - - - - Hiragana Japanese syllabary - Слоговна азбука "Хирагана" - - - - Hiragana - Хирагана - - - - Katakana Japanese syllabary - Слоговна азбука "Катакана" - - - - Katakana - Катакана - - - - Wikipedia - Написан на руском, извор: ru.wikipedia.org - Википедија - - - - Wikipedia (MediaWiki) sites: - Веб-сајт Википедија (MediaWiki): - - - - StylesComboBox - - - None - Ништа - - - - TextToSpeechSource - - - Selected voice engines: - Изабраи погон на гласот: - - - - &Add - &Додај - - - - &Remove - &Уклони - - - - Preferences - Поставке - - - - Volume: - Величина: - - - - Rate: - Мера: - - - - Preview - Преглед - - - - Available voice engines: - Доступни гласовни погони: - - - - Text to be previewed: - Текст се може погледати: - - - - Type text to be previewed here. - Укуцајте текст да буде прегледан овде. - - - - &Preview - &Преглед - - - - No TTS voice available - Нема доступног TTS гласа - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Не можете да пронађете доступне TTS гласове.<br>Уверите се да је најмање један TTS погон већ инсталиран на рачунару. - - - - Confirm removal - Потврди уклањање - - - - Remove voice engine <b>%1</b> from the list? - Уклоните гласовну погон <b>%1</b> са списка? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Напишете збор или фраза за пребарување на речникот - - - - Drop-down - Паѓачки - - - - VoiceEnginesModel - - - Enabled - Вклучено - - - - Name - Ништо - - - - Id - Id - - - - Icon - Икона - - - - WebSitesModel - - - Enabled - Вклучено - - - - Name - Назив - - - - Address - Додадено %1 - - - - Icon - Икона - - - - WordFinder - - - Failed to query some dictionaries. - Прикажи име во картичката на речникот - - - - WordList - - - WARNING: %1 - ПРЕДУПРЕДУВАЊЕ: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/nl_NL.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/nl_NL.ts deleted file mode 100644 index 8d0a6b6fe1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/nl_NL.ts +++ /dev/null @@ -1,4867 +0,0 @@ - - - - - About - - - About - Over - - - - GoldenDict dictionary lookup program, version - GoldenDict woordenboek zoekprogramma, versie - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Dankbetuigingen: - - - - Licensed under GNU GPLv3 or later - Gebruiksrecht verleend onder GNU GPLv3 of nieuwer - - - - [Unknown] - [Onbekend] - - - - Based on Qt %1 (%2, %3 bit) - Gebaseerd op Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Artikel uitvouwen - - - - Collapse article - Artikel samenvouwen - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Geen vertaling voor <b>%2</b> gevonden in de groep <b>%1</b>. - - - - No translation was found in group <b>%1</b>. - Geen vertaling gevonden in de groep <b>%1</b>. - - - - Welcome! - Welkom! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Welkom bij <b>GoldenDict</b>!</h3><p>Om met het programma te kunnen werken kiest u eerst <b>Bewerken > Woordenboeken</b>. U kunt vervolgens enkele mappen toevoegen waarin naar woordenboekbestanden wordt gezocht, Wikipedia sites of andere bronnen opgeven, of de woordenboekvolgorde aanpassen en woordenboekgroepen aanmaken.</p> -<p>Hierna bent u klaar om woorden op te zoeken met behulp van het deelvenster aan de linkerkant. Bovendien kunt u <a href="Met popups werken">woorden opzoeken vanuit andere programma's</a>. </p> -<p>Om het programma aan te passen kiest u <b>Bewerken > Instellingen</b>. Bij alle instellingen worden tooltips weergegeven die u kunt raadplegen als u ergens niet zeker van bent.</p> -<p>Hebt u meer hulp nodig, wilt u iets vragen, hebt u suggesties of bent u benieuwd naar de mening van andere gebruikers, bezoek dan het <a href="http://goldendict.org/forum/">forum</a>. Programma updates kunt u vinden op de <a href="http://goldendict.org/">website</a>.<p>(c) 2008-2013 Konstantin Isakov. Gebruiksrecht verleend onder GPLv3 of nieuwer. - - - - Working with popup - Met popups werken - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Met popups werken</h3>Om woorden op te zoeken vanuit andere actieve programma's moet u eerst de <i>'Scan Popup modus'</i> inschakelen onder <b>Instellingen</b>. Daarna kunt u deze functionaliteit op elk moment activeren door middel van het popup pictogram in de werkbalk hierboven of door rechts te klikken op het systeemvakpictogram en in het menu de betreffende optie te kiezen. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Als u vervolgens in een ander programma met de muisaanwijzer stopt boven een woord dat u wilt opzoeken, dan verschijnt er een venster met een beschrijving van het betreffende woord. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Daarna kunt elk woord dat u wilt opzoeken in een ander programma met de muis selecteren (dubbelklikken of slepend selecteren), waarna een venster verschijnt met de beschrijving van het betreffende woord. - - - - (untitled) - (naamloos) - - - - (picture) - (afbeelding) - - - - ArticleRequest - - - Expand article - Artikel uitvouwen - - - - From - Uit - - - - Collapse article - Artikel samenvouwen - - - - Query error: %1 - Fout in zoekopdracht: %1 - - - - Close words: - Soortgelijke woorden: - - - - Compound expressions: - Samengestelde treffers: - - - - Individual words: - Individuele woorden: - - - - ArticleView - - - Select Current Article - Huidig artikel selecteren - - - - Copy as text - Kopiëren als tekst - - - - Inspect - Inspecteren - - - - Resource - Bron - - - - Audio - Geluid - - - - TTS Voice - TTS Stem - - - - Picture - Afbeelding - - - - Video - Video - - - - Video: %1 - Video: %1 - - - - Definition from dictionary "%1": %2 - Definitie uit woordenboek "%1": %2 - - - - Definition: %1 - Definitie: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - De bron waarnaar wordt verwezen bestaat niet. - - - - The referenced audio program doesn't exist. - Dit programma voor afspelen van geluiden bestaat niet. - - - - - ERROR: %1 - FOUT: %1 - - - - Save sound - Geluid opslaan - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Geluidsbestanden (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Alle bestanden (*.*) - - - - Save image - Afbeelding opslaan - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Afbeeldingsbestanden (*.bmp *.jpg *.png *.tif);;Alle bestanden (*.*) - - - Resource saving error: - Fout bij opslaan bron: - - - - &Open Link - Koppeling &openen - - - - Open Link in New &Tab - Koppeling openen in nieuw&tabblad - - - - Open Link in &External Browser - Koppeling openen in &externe browser - - - - &Look up "%1" - &Zoeken naar "%1" - - - - Look up "%1" in &New Tab - Zoeken naar "%1" in een &nieuw tabblad - - - - Send "%1" to input line - Verzend "%1" naar zoekveld - - - - - &Add "%1" to history - Voeg "%1" &toe aan geschiedenis - - - - Look up "%1" in %2 - Zoeken naar "%1" in %2 - - - - Look up "%1" in %2 in &New Tab - Zoeken naar "%1" in %2 in een &nieuw tabblad - - - - WARNING: FFmpeg Audio Player: %1 - WAARSCHUWING:FFmpeg audiospeler: %1 - - - Playing a non-WAV file - Niet-WAV bestand afspelen - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Om andere dan WAV bestanden af te kunnen spelen kiest u Bewerken > Instellingen > tabblad Geluid en selecteert u "Afspelen met DirectShow". - - - Bass library not found. - Bass bibliotheek niet gevonden. - - - Bass library can't play this sound. - Bass bibliotheek kan dit geluid niet afspelen. - - - - Failed to run a player to play sound file: %1 - Kan geen mediaspeler starten om het geluidsbestand af te spelen: %1 - - - - Failed to create temporary file. - Tijdelijk bestand kan niet worden aangemaakt. - - - - Failed to auto-open resource file, try opening manually: %1. - Kan bronbestand niet automatisch openen, probeer het handmatig te openen: %1. - - - - The referenced resource failed to download. - Kan de bron waarnaar wordt verwezen niet downloaden. - - - - Save &image... - &Afbeelding opslaan... - - - - Save s&ound... - &Geluid opslaan... - - - - WARNING: %1 - WAARSCHUWING: %1 - - - - Form - Formulier - - - - about:blank - about:blank - - - - x - x - - - - Find: - Zoeken: - - - - - &Previous - &Vorige - - - - - &Next - &Volgende - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Hoofdlettergevoelig - - - - Highlight &all - Alles &markeren - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Wit-Russische transliteratie van Latijn naar cyrillisch (traditionele spelling) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Wit-Russische transliteratie van Latijn naar cyrillisch (hedendaagse spelling) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Wit-Russische transliteratie (vereffent het verschil tussen -traditionele en hedendaagse spelling in het cyrillisch) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Wachtwoord: - - - - DictGroupWidget - - - Form - Formulier - - - - Group icon: - Groeppictogram: - - - - Shortcut: - Snelkoppeling: - - - - None - Geen - - - - From file... - Uit bestand... - - - - Choose a file to use as group icon - Kies een bestand om als groeppictogram te gebruiken - - - - Images - Afbeeldingen - - - - All files - Alle bestanden - - - - Error - Fout - - - - Can't read the specified image file. - Kan opgegeven afbeeldingsbestand niet lezen. - - - - DictGroupsWidget - - - - - - Dictionaries: - Woordenboeken: - - - - Confirmation - Bevestiging - - - - Are you sure you want to generate a set of groups based on language pairs? - Willt u werkelijk een set van groepen aanmaken gebaseerd op talenkoppels? - - - - Unassigned - Niet toegewezen - - - - Combine groups by source language to "%1->" - Groepen met dezelfde brontaal combineren tot "%1->" - - - - Combine groups by target language to "->%1" - Groepen met dezelfde doeltaal combineren tot "->%1" - - - - Make two-side translate group "%1-%2-%1" - Groep voor tweezijdig vertalen maken als "%1-%2-%1" - - - - - Combine groups with "%1" - Groepen met "%1" combineren - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Tekst bestanden (*.txt);;Alle bestanden (*.*) - - - - Export headwords... - - - - - Cancel - Annuleren - - - - DictInfo - - - Total articles: - Totaal aantal artikelen: - - - - Translates from: - Vertaalt van: - - - - Total words: - Totaal aantal woorden: - - - - Translates to: - Vertaalt naar: - - - - Open folder - Map openen - - - - Edit dictionary - Woordenboek bewerken - - - - Files comprising this dictionary: - Woordenboek bestaat uit de volgende bestanden: - - - - Description: - Beschrijving: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Woordenboek bewerken via opdracht: -%1 - - - - DictListModel - - - %1 entries - %1 Vermeldingen - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Ingeschakeld - - - - Name - Naam - - - - Address - Adres - - - - Databases - - - - - Strategies - - - - - Icon - Pictogram - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Wörterbuchleiste - - - - &Dictionary Bar - &Woordenboekwerkbalk - - - - Extended menu with all dictionaries... - Menu uitbreiden met alle woordenboeken... - - - - Edit this group - Deze groep bewerken - - - - Dictionary info - Woordenboek informatie - - - - Dictionary headwords - - - - - Open dictionary folder - Woordenboekmap openen - - - - Edit dictionary - Woordenboek bewerken - - - - EditDictionaries - - - &Sources - &Bronnen - - - - - &Dictionaries - &Woordenboeken - - - - - &Groups - &Groepen - - - - Sources changed - Bronnen gewijzigd - - - - Some sources were changed. Would you like to accept the changes? - Enkele bronnen zijn gewijzigd. Wilt u de wijzigingen accepteren? - - - - Accept - Accepteren - - - - Cancel - Annuleren - - - - Dictionaries - Woordenboeken - - - - ExternalViewer - - - the viewer program name is empty - Naam afbeeldingsviewer is leeg - - - - FTS::FtsIndexing - - None - Geen - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Geen - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Geen - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XML-parseerfout: %1 op %2,%3 - - - - Added %1 - Toegevoegd %1 - - - - by - door - - - - Male - Man - - - - Female - Vrouw - - - - from - uit - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Om deze fout te herstellen kiest u Bewerken > Woordenboeken > Forvo en geeft u de standaard API-sleutel op. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Annuleren - - - - Help - - - - - GermanTranslit - - - German Transliteration - Duitse transliteratie - - - - GreekTranslit - - - Greek Transliteration - Griekse transliteratie - - - - GroupComboBox - - - Choose a Group (Alt+G) - Kies een groep (Alt+G) - - - - GroupSelectorWidget - - - Form - Formulier - - - - Look in - Zoeken in - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Groep toevoegen - - - - Give a name for the new group: - Voer een naam in voor de nieuwe groep: - - - - Rename group - Groep hernoemen - - - - Give a new name for the group: - Nieuwe naam voor de groep: - - - - Remove group - Groep verwijderen - - - - Are you sure you want to remove the group <b>%1</b>? - Weet u zeker dat u de groep <b>%1</b> wilt verwijderen? - - - - - Remove all groups - Alle groepen verwijderen - - - - Are you sure you want to remove all the groups? - Weet u zeker dat u alle groepen wilt verwijderen? - - - - Dictionaries available: - Beschikbare woordenboeken: - - - - Add selected dictionaries to group (Ins) - Geselecteerde woordenboeken aan groep toevoegen (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Geselecteerde woordenboeken uit groep verwijderen (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Groepen: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Nieuwe woordenboekgroep maken - - - - &Add group - Groep &toevoegen - - - - Create language-based groups - Op taal gesorteerde groepen maken - - - - Auto groups - Automatische groepen - - - - Rename current dictionary group - Huidige groep hernoemen - - - - Re&name group - Groep &hernoemen - - - - Remove current dictionary group - Huidige groep verwijderen - - - - &Remove group - Groep &verwijderen - - - - Remove all dictionary groups - Alle woordenboekgroepen verwijderen - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Gebruik slepen en neerzetten om woordenboeken te verplaatsen of om groepen te reorganiseren met uw muis. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Terug - - - - Forward - Vooruit - - - - Zoom In - Vergroten - - - - Zoom Out - Verkleinen - - - - Normal Size - Normale grootte - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - Selectie &verwijderen - - - - Copy Selected - Selectie kopiëren - - - - History: - Geschiedenis: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Geschiedenisgrootte: %1 items uit maximum van %2 - - - - Hunspell - - - Spelling suggestions: - Spellingsuggesties: - - - - %1 Morphology - Morfologie %1 - - - - HunspellDictsModel - - - Enabled - Ingeschakeld - - - - Name - Naam - - - - Initializing - - - Please wait... - Een ogenblik geduld... - - - - - Please wait while indexing dictionary - Woordenboek indexeren - een ogenblik geduld - - - - GoldenDict - Initializing - GoldenDict - Initialiseren - - - - Dictionary Name - Naam woordenboek - - - - Language - - - Afar - Afar - - - - Abkhazian - Abchazisch - - - - Avestan - Avestisch - - - - Afrikaans - Afrikaans - - - - Akan - Akan - - - - Amharic - Amhaars - - - - Aragonese - Aragonees - - - - Arabic - Arabisch - - - - Assamese - Assamees - - - - Avaric - Avaars - - - - Aymara - Aymara - - - - Azerbaijani - Azerbeidzjaans - - - - Bashkir - Basjkiers - - - - Belarusian - Wit-Russisch - - - - Bulgarian - Bulgaars - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengaals - - - - Tibetan - Tibetaans - - - - Breton - Bretons - - - - Bosnian - Bosnisch - - - - Catalan - Catalaans - - - - Chechen - Tsjetsjeens - - - - Chamorro - Chamorro - - - - Corsican - Corsicaans - - - - Cree - Cree - - - - Czech - Tsjechisch - - - - Church Slavic - Kerkslavisch - - - - Chuvash - Tsjoevasjisch - - - - Welsh - Welsh - - - - Danish - Deens - - - - German - Duits - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Grieks - - - - English - Engels - - - - Esperanto - Esperanto - - - - Spanish - Spaans - - - - Estonian - Estisch - - - - Basque - Baskisch - - - - Persian - Persisch - - - - Fulah - Fula - - - - Finnish - Fins - - - - Fijian - Fijisch - - - - Faroese - Faeröers - - - - French - Frans - - - - Western Frisian - Westlauwers Fries - - - - Irish - Iers - - - - Scottish Gaelic - Schots-Gaelisch - - - - Galician - Galicisch - - - - Guarani - Guarani - - - - Gujarati - Gujarati - - - - Manx - Manx-Gaelisch - - - - Hausa - Hausa - - - - Hebrew - Hebreeuws - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Kroatisch - - - - Haitian - Haitiaans - - - - Hungarian - Hongaars - - - - Armenian - Armeens - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonesisch - - - - Interlingue - Interlingue - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Inupiak - - - - Ido - Ido - - - - Icelandic - IJslands - - - - Italian - Italiaans - - - - Inuktitut - Inuktitut - - - - Japanese - Japans - - - - Javanese - Javaans - - - - Georgian - Georgisch - - - - Kongo - Kongo - - - - Kikuyu - Gikuyu - - - - Kwanyama - Oshikwanyama - - - - Kazakh - Kazachs - - - - Kalaallisut - Groenlands - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Koreaans - - - - Kanuri - Kanuri - - - - Kashmiri - Kasjmiri - - - - Kurdish - Koerdisch - - - - Komi - Zurjeens - - - - Cornish - Cornisch - - - - Kirghiz - Kirgizisch - - - - Latin - Latijn - - - - Luxembourgish - Luxemburgs - - - - Ganda - Luganda - - - - Limburgish - Limburgs - - - - Lingala - Lingala - - - - Lao - Laotiaans - - - - Lithuanian - Litouws - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Litouws - - - - Malagasy - Plateaumalagasi - - - - Marshallese - Marshallees - - - - Maori - Maori - - - - Macedonian - Macedonisch - - - - Malayalam - Malajalam - - - - Mongolian - Mongools - - - - Marathi - Marathi - - - - Malay - Maleis - - - - Maltese - Malthees - - - - Burmese - Birmees - - - - Nauru - Nauruaans - - - - Norwegian Bokmal - Bokmål - - - - North Ndebele - Noord-Ndebele - - - - Nepali - Nepalees - - - - Ndonga - Ndonga - - - - Dutch - Nederlands - - - - Norwegian Nynorsk - Nieuwnoors - - - - Norwegian - Noors - - - - South Ndebele - Zuid-Ndebele - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitaans - - - - Ojibwa - Ojibwe - - - - Oromo - Afaan Oromo - - - - Oriya - Odia - - - - Ossetian - Ossetisch - - - - Panjabi - Punjabi - - - - Pali - Pali - - - - Polish - Pools - - - - Pashto - Pasjtoe - - - - Portuguese - Portugees - - - - Quechua - Quechua - - - - Raeto-Romance - Retro-Romaans - - - - Kirundi - Kirundi - - - - Romanian - Roemeens - - - - Russian - Russisch - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sanskriet - - - - Sardinian - Sardijns - - - - Sindhi - Sindhi - - - - Northern Sami - Noord-Samisch - - - - Sango - Sango - - - - Serbo-Croatian - Servo-Kroatisch - - - - Sinhala - Singalees - - - - Slovak - Slowaaks - - - - Slovenian - Sloveens - - - - Samoan - Samoaans - - - - Shona - Shona - - - - Somali - Somalisch - - - - Albanian - Albanees - - - - Serbian - Servisch - - - - Swati - Swazi - - - - Southern Sotho - Zuid-Sotho - - - - Sundanese - Sudanees - - - - Swedish - Zweeds - - - - Swahili - Swahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tadzjieks - - - - Thai - Thai - - - - Tigrinya - Tigrinya - - - - Turkmen - Turkmeens - - - - Tagalog - Tagalog - - - - Tswana - Setswana - - - - Tonga - Tongaans - - - - Turkish - Turks - - - - Tsonga - Tsonga - - - - Tatar - Tataars - - - - Twi - Twi - - - - Tahitian - Tahitiaans - - - - Uighur - Oeigoers - - - - Ukrainian - Oekraiens - - - - Urdu - Urdu - - - - Uzbek - Oezbeeks - - - - Venda - Venda - - - - Vietnamese - Vietnamees - - - - Volapuk - Volapük - - - - Walloon - Waals - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Jiddisch - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Chinees - - - - Zulu - Zoeloe - - - - Lojban - Lojban - - - - Traditional Chinese - Traditioneel Chinees - - - - Simplified Chinese - Vereenvoudigd Chinees - - - - Other - Andere - - - - Other Simplified Chinese dialects - Andere vereenvoudigd Chinese dialecten - - - - Other Traditional Chinese dialects - Andere traditioneel Chinese dialecten - - - - Other Eastern-European languages - Andere Oost-Europese talen - - - - Other Western-European languages - Andere West-Europese talen - - - - Other Russian languages - Andere Russische talen - - - - Other Japanese languages - Andere Japanse talen - - - - Other Baltic languages - Andere Baltische talen - - - - Other Greek languages - Andere Griekse talen - - - - Other Korean dialects - Andere Koreaanse dialecten - - - - Other Turkish dialects - Andere Turkse dialecten - - - - Other Thai dialects - Andere Thaise dialecten - - - - Tamazight - Berbers - - - - LoadDictionaries - - - Error loading dictionaries - Fout bij laden woordenboeken - - - - Main - - - Error in configuration file. Continue with default settings? - Fout in configuratiebestand. Doorgaan met standaardinstellingen? - - - - MainWindow - - Show Names in Dictionary Bar - Zeige Namen in Wörterbuchleiste - - - - &Menubar - &Menubalk - - - - - Look up in: - Opzoeken in: - - - - Found in Dictionaries: - Gevonden in woordenboeken: - - - Navigation - Navigation - - - - Back - Terug - - - - Forward - Vooruit - - - - Scan Popup - Scan Popup - - - - Pronounce Word (Alt+S) - Woord uitspreken (Alt+S) - - - - Zoom In - Vergroten - - - - Zoom Out - Verkleinen - - - - Normal Size - Normale grootte - - - - Words Zoom In - Zoekwoorden vergroten - - - - Words Zoom Out - Zoekwoorden verkleinen - - - - Words Normal Size - Zoekwoorden normale grootte - - - - Show &Main Window - &Hoofdvenster weergeven - - - - Close current tab - Huidig tabblad sluiten - - - - Close all tabs - Alle tabbladen sluiten - - - - Close all tabs except current - Alle andere tabbladen sluiten - - - - - Accessibility API is not enabled - Toegankelijkheid API is niet ingeschakeld - - - - Article, Complete (*.html) - Artikel, compleet (*.html) - - - - Article, HTML Only (*.html) - Artikel, alleen HTML (*.html) - - - - Saving article... - Artikel opslaan... - - - - The main window is set to be always on top. - Het hoofdvenster wordt nu altijd op de voorgrond weergegeven. - - - - &Hide - &Verbergen - - - - Export history to file - Geschiedenis opslaan als bestand - - - - - Text files (*.txt);;All files (*.*) - Tekst bestanden (*.txt);;Alle bestanden (*.*) - - - - History export complete - Geschiedenis exporteren voltooid - - - - Export error: - Fout bij exporteren: - - - - Import history from file - Geschiedenis importeren uit bestand - - - - Import error: invalid data in file - Fout bij importeren: bestand bevat onjuiste gegevens - - - - History import complete - Geschiedenis importeren voltooid - - - - Import error: - Fout bij importeren: - - - - Dictionary info - Woordenboekinformatie - - - - Dictionary headwords - - - - - Open dictionary folder - Woordenboekmap openen - - - - Edit dictionary - Woordenboek bewerken - - - - Now indexing for full-text search: - - - - - - &Quit - &Afsluiten - - - - Loading... - Laden... - - - - - Welcome! - Welkom! - - - - %1 dictionaries, %2 articles, %3 words - %1 Woordenboeken, %2 Artikelen, %3 Woorden - - - - Look up: - Opzoeken: - - - - All - Alle groepen - - - - Opened tabs - Geopende tabbladen - - - - Show Names in Dictionary &Bar - Woordenboekwerkbalk met &tekst - - - - Show Small Icons in &Toolbars - Werkbalken met &kleine pictogrammen - - - - &Navigation - &Navigatiewerkbalk - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Open Tabs List - Tabbladlijst openen - - - - (untitled) - (naamloos) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - WARNUNG: %1 - - - GoldenDict - GoldenDict - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Bewakingsmechanisme voor sneltoetsen kan niet worden geïnitialiseerd.<br>Zorg ervoor dat de RECORD-extensie van uw XServer is ingeschakeld. - - - - New Release Available - Nieuwe versie beschikbaar - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Versie <b>%1</b> van GoldenDict kan nu gedownload worden.<br>Klik op <b>downloaden</b> om naar de downloadpagina te gaan. - - - - Download - Downloaden - - - - Skip This Release - Deze versie overslaan - - - - You have chosen to hide a menubar. Use %1 to show it back. - U hebt ervoor gekozen om de menubalk te verbergen. Druk op %1 om deze weer zichtbaar te maken. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Pagina-instelling - - - - No printer is available. Please install one first. - Geen printer beschikbaar. U moet er eerst één installeren. - - - - Print Article - Artikel afdrukken - - - - Save Article As - Artikel opslaan als - - - Html files (*.html *.htm) - Html bestanden (*.html *.htm) - - - - Error - Fout - - - - Can't save article: %1 - Kan artikel niet opslaan: %1 - - - - &File - &Bestand - - - - &Edit - Be&werken - - - - &Help - &Help - - - - &View - Beel&d - - - - &Zoom - Z&oomen - - - - H&istory - &Geschiedenis - - - Search Pane - Suchformular - - - - &Dictionaries... - Woorden&boeken... - - - - F3 - F3 - - - &Groups... - &Gruppen... - - - - Search - - - - - &Search Pane - &Zoekvenster - - - - &Results Navigation Pane - Navigatievenster zoek&resultaten - - - - &History Pane - &Geschiedenisvenster - - - - &Preferences... - &Instellingen... - - - - F4 - F4 - - - - &Homepage - &Website - - - - &About - &Over - - - - About GoldenDict - Over GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Programma afsluiten - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forum - - - - &Close To Tray - &Sluiten naar systeemvak - - - - Minimizes the window to tray - Minimaliseren naar systeemvak - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - Artikel &opslaan - - - - Save Article - Artikel opslaan - - - - F2 - F2 - - - - &Print - Af&drukken - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - &Pagina-instelling - - - - Print Pre&view - Afdruk&voorbeeld - - - - &Rescan Files - Bestanden opnieuw &inlezen - - - - &New Tab - &Nieuw tabblad - - - - &Always on Top - &Altijd op de voorgrond - - - - Always on Top - Altijd op de voorgrond - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Menuknop - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Druckvorschau - - - Rescan Files - Dateien neu einlesen - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Wissen - - - - New Tab - Nieuw tabblad - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Configuratiemap - - - - - &Show - &Weergeven - - - - Ctrl+H - Ctrl+H - - - - &Export - &Exporteren - - - - &Import - &Importeren - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Woordenboekbestand is gemanipuleerd of beschadigd - - - - Failed loading article from %1, reason: %2 - Kan artikel niet laden van %1, reden: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XML parseerfout: %1 op %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XML parseerfout: %1 op %2,%3 - - - - MediaWikisModel - - - Enabled - Ingeschakeld - - - - Name - Naam - - - - Address - Adres - - - - Icon - Pictogram - - - - OrderAndProps - - - Form - Formulier - - - - Dictionary order: - Woordenboekvolgorde: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Inactieve (uitgeschakelde) woordenboeken: - - - - Dictionary information - Informatie over dit woordenboek - - - - Name: - Naam: - - - - Total articles: - Totaal aantal artikelen: - - - - Total words: - Totaal aantal woorden: - - - - Translates from: - Vertaalt van: - - - - Translates to: - Vertaalt naar: - - - - Description: - Beschrijving: - - - - Files comprising this dictionary: - Woordenboek bestaat uit de volgende bestanden: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Verander de volgorde door items te slepen en verplaats woordenboeken naar de inactieve groep om ze uit te schakelen. - - - - Sort by name - Sorteren op naam - - - - Sort by languages - Sorteren op taal - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Pad - - - - Recursive - Recursief - - - - Preferences - - - System default - Systeemstandaard - - - - - Default - Standaard - - - - Modern - Modern - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blauw - - - Play via DirectShow - Afspelen met DirectShow - - - - Changing Language - Toepassingstaal wijzigen - - - - Restart the program to apply the language change. - Start het programma opnieuw om de toepassingstaal te wijzigen. - - - - Preferences - Instellingen - - - - &Interface - &Weergave - - - - Tabbed browsing - Tabbladen - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normaal wordt een nieuw tabblad direct geselecteerd. -Als u deze optie inschakelt worden nieuwe tabbladen -geopend zonder ze te selecteren. - - - - Open new tabs in background - Nieuwe tabbladen op de achtergrond openen - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Hiermee worden nieuwe tabbladen geopend na het actieve tabblad. -Indien uitgeschakeld worden ze als laatste toegevoegd. - - - - Open new tabs after the current one - Nieuwe tabbladen na de huidige openen - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Indien ingeschakeld wordt een pictogram in het systeemvak weergegeven -waarmee u het hoofdvenster kunt openen en andere taken uit kunt voeren. - - - - Enable system tray icon - Systeemvakpictogram inschakelen - - - - With this on, the application starts directly to system tray without showing -its main window. - Hiermee start het programma direct in het systeemvak, zonder dat het -hoofdvenster wordt weergegeven. - - - - Start to system tray - Starten in systeemvak - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Als dit ingeschakeld is wordt het hoofdvenster alleen verborgen in plaats van gesloten. - - - - Close to system tray - Sluiten naar systeemvak - - - - Startup - Het programma starten - - - - Start with system - Met systeem starten - - - - Interface language: - Toepassingstaal: - - - - Display style: - Weergavestijl: - - - - &Scan Popup - &Scan Popup - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Indien ingeschakeld zal telkens een popup venster getoond worden zodra u een -woord aanwijst met de muis (Windows) of een woord selecteert met de muis (Linux). -U kunt dit in- of uitschakelen in het hoofdvenster of via het systeemvakpictogram. - - - - Enable scan popup functionality - De Scan Popup modus inschakelen - - - - Automatically starts GoldenDict after operation system bootup. - GoldenDict automatisch starten wanneer het besturingssysteem opstart. - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Selecteer deze optie om de tabbladbalk te verbergen als slechts één tabblad geopend is. - - - - Hide single tab - Enkel tabblad verbergen - - - - Ctrl-Tab navigates tabs in MRU order - Met Ctrl-Tab navigeren door recent gebruikte tabbladen - - - - Double-click translates the word clicked - Dubbelklikken vertaalt het aangeklikte woord - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Standaard verplaatst het indrukken van de Esc-toets de cursor -naar het zoekveld, maar hiermee wordt in plaats daarvan het -hoofdvenster verborgen. - - - - ESC key hides main window - Esc-toets verbergt hoofdvenster - - - - Turn this option on if you want to select words by single mouse click - Selecteer deze optie om woorden te selecteren met een enkele muisklik - - - - Select word by single click - Woorden selecteren met een enkele muisklik - - - - Add-on style: - Add-on stijl: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Pas deze waarde aan om zeer lange contextmenu's te voorkomen. - - - - Context menu dictionaries limit: - Woordenboeken in contextmenu beperken tot: - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Hier kunt u aangeven of de Scan Popup modus standaard in- of uitgeschakeld is. -Het programma start met de Scan Popup modus ingeschakeld als dit geselecteerd is. - - - - Start with scan popup turned on - Starten met Scan Popup ingeschakeld - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Als dit ingeschakeld is wordt de popup alleen weergegeven als alle opgegeven -toetsen zijn ingedrukt wanneer de woordselectie verandert. - - - - Only show popup when all selected keys are kept pressed: - Alleen een popup weergeven als alle geselecteerde toetsen ingedrukt worden: - - - - Left Ctrl only - Alleen Ctrl-links - - - - Left Ctrl - Ctrl-links - - - - Right Shift only - Alleen Shift-rechts - - - - Right Shift - Shift-rechts - - - - Alt key - Alt-toets - - - - Alt - Alt - - - - Ctrl key - Ctrl-toets - - - - Ctrl - Ctrl - - - - Left Alt only - Alleen Alt-links - - - - Left Alt - Alt-links - - - - Shift key - Shift-toets - - - - Shift - Shift - - - - Right Alt only - Alleen Alt-rechts - - - - Right Alt - Alt-rechts - - - - Right Ctrl only - Alleen Ctrl-rechts - - - - Right Ctrl - Ctrl-rechts - - - - Left Shift only - Alleen Shift-links - - - - Left Shift - Shift-links - - - - Windows key or Meta key - Windowstoets of Metatoets - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normaal moet u de opgegeven toetsen ingedrukt houden -terwijl u een woord selecteert. Als dit ingeschakeld is -kunnen de toetsen ook kort erna ingedrukt worden. - - - - Send translated word to main window instead of to show it in popup window - Vertaald woord niet in popup weergeven maar naar hoofdvenster verzenden - - - - Send translated word to main window - Vertaald woord naar hoofdvenster verzenden - - - - Playback - Afspelen - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Selecteer deze optie om lange artikelen automatisch samen te vouwen - - - - Collapse articles more than - Artikelen samenvouwen met meer dan - - - - Articles longer than this size will be collapsed - Langere artikelen automatisch samenvouwen - - - - symbols - tekens - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Windows systeemeigen API gebruiken voor afspelen van geluiden. -Alleen beschikbaar voor wav-bestanden, maar werkt zeer goed. - - - Play via Windows native API - Afspelen met systeemeigen API - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Geluiden afspelen met het Phonon framework (in sommige gevallen -wellicht instabiel, maar ondersteunt vrijwel alle bestandsformaten). - - - Play via Phonon - Afspelen met Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Geluiden afspelen met de Bass-audio bibliotheek. Plaats daarvoor -bass.dll in de GoldenDict map (zie http://www.un4seen.com). - - - Play via Bass library - Afspelen met Bass-audio bibliotheek - - - - Use any external program to play audio files - Een extern programma gebruiken voor het afspelen van geluidsbestanden - - - - Use external program: - Extern programma gebruiken: - - - - Ad&vanced - Gea&vanceerd - - - - ScanPopup extra technologies - Scan Popup-extra technologie - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Gebruik zo mogelijk de IAccessibleEx technologie om woorden onder de -aanwijzer te verkrijgen. Deze technologie werkt alleen als programma's -dit ondersteunen (bijvoorbeeld Internet Explorer 9). Als u dergelijke -programma's niet gebruikt, dan hoeft u dit niet te selecteren. - - - - Use &IAccessibleEx - &IAccessibleEx gebruiken - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Gebruik zo mogelijk de UIAutomation technologie om woorden onder de -aanwijzer te verkrijgen. Deze technologie werkt alleen als programma's -dit ondersteunen. Als u dergelijke programma's niet gebruikt, dan hoeft -u dit niet te selecteren. - - - - Use &UIAutomation - &UIAutomation gebruiken - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Gebruik zo mogelijk de speciale GoldenDict methode om woorden onder de -aanwijzer te verkrijgen. Deze technologie werkt alleen als programma's -dit ondersteunen. Als u dergelijke programma's niet gebruikt, dan hoeft -u dit niet te selecteren. - - - - Use &GoldenDict message - &GoldenDict methode gebruiken - - - - History - Geschiedenis - - - - Turn this option on to store history of the translated words - Schakel deze optie in om de geschiedenis van vertaalde woorden op te slaan - - - - Store &history - &Geschiedenis opslaan - - - - Specify the maximum number of entries to keep in history. - Geef het maximum aantal items op dat bewaard wordt als geschiedenis. - - - - Maximum history size: - Maximale grootte geschiedenis: - - - - History saving interval. If set to 0 history will be saved only during exit. - Opslag-interval voor geschiedenis (instellen op 0 om alleen op te slaan bij afsluiten). - - - - Save every - Elke - - - - minutes - minuten opslaan - - - - Articles - Artikelen - - - - Turn this option on to always expand optional parts of articles - Schakel deze optie in om optionele onderdelen van artikelen altijd uit te vouwen - - - - Expand optional &parts - Optionele onderdelen &uitvouwen - - - - Keys may also be pressed afterwards, within - Toetsen ook achteraf in te drukken binnen - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Om onjuiste positieve resultaten te voorkomen worden de -toetsen nadat een selectie is gemaakt slechts gedurende -een beperkt aantal hier op te geven seconden bewaakt. - - - - secs - seconden - - - - Hotkeys - Sneltoetsen - - - - Use the following hotkey to show or hide the main window: - De volgende sneltoets gebruiken om het hoofdvenster te tonen of te verbergen: - - - - Use the following hotkey to translate a word from clipboard: - De volgende sneltoets gebruiken om woorden van het klembord te vertalen: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - De sneltoetsen werken systeembreed en vanuit elk programma zolang GoldenDict op de achtergrond actief is. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Opmerking: Waarschijnlijk gebruikt u een X.Org XServer versie, waarvan de RECORD-extensie niet functioneert. Daarom zullen sneltoetsen in Goldendict waarschijnlijk niet goed werken. Dit moet op de server zelf aangepast worden. U kunt naar het volgende verwijzen </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">foutvermelding</span></a><span style=" color:#ff0000;"> en daar een reactie achter laten.</span></p></body></html> - - - - &Audio - &Geluid - - - - Pronunciation - Uitspraak - - - - Auto-pronounce words in main window - Woorden in hoofdvenster automatisch uitspreken - - - - Auto-pronounce words in scan popup - Woorden in Scan Popup automatisch uitspreken - - - - Play audio files via FFmpeg(libav) and libao - Audiobestanden afspelen via FFmpeg(libav) en libao - - - - Use internal player - Interne speler gebruiken - - - - &Network - &Netwerk - - - - Enable if you wish to use a proxy server -for all program's network requests. - Schakel dit in om een proxyserver te gebruiken voor alle netwerkaanvragen. - - - - Use proxy server - Proxyserver gebruiken - - - - Type: - Type: - - - - Host: - Host: - - - - Port: - Poort: - - - - User: - Gebruiker: - - - - Password: - Wachtwoord: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Hiermee blokkeert GoldenDict de meeste reclame door inhoud van -andere dan de door u bezochte site niet toe te staan. Als een site -onjuist functioneert moet u dit mogelijk uitschakelen. - - - - Disallow loading content from other sites (hides most advertisements) - Inhoud van andere sites blokkeren (verbergt de meeste reclame) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Hiermee bent u in staat om te luisteren naar uitspraak van op -Flash of andere web-invoegtoepassingen gebaseerde websites. -De invoegtoepasing moet geïnstalleerd zijn om deze optie te -kunnen gebruiken. - - - - Enable web plugins - Web-invoegtoepassingen inschakelen - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Sommige websites detecteren GoldenDict met behulp van HTTP-headers -en blokkeren de aanvragen. Selecteer deze optie om dit te voorkomen. - - - - Do not identify GoldenDict in HTTP headers - GoldenDict niet identificeren in HTTP-headers - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Indien ingeschakeld controleert het programma periodiek of er -een nieuwe versie beschikbaar is en wordt de gebruiker zonodig -gevraagd een downloadpagina te openen. - - - - Check for new program releases periodically - Periodiek controleren op nieuwe versies - - - - ProgramTypeEditor - - - Audio - Geluid - - - - Plain Text - Tekst zonder opmaak - - - - Html - Html - - - - Prefix Match - Overeenkomst op voorvoegsel - - - - Unknown - Onbekend - - - - Programs::RunInstance - - - No program name was given. - Geen programmanaam opgegeven. - - - - The program has crashed. - Het programma is vastgelopen. - - - - The program has returned exit code %1. - Het programma heeft afsluitcode %1 geretourneerd. - - - - ProgramsModel - - - Enabled - Ingeschakeld - - - - Type - Type - - - - Name - Naam - - - - Command Line - Opdrachtregel - - - - Icon - Pictogram - - - - QObject - - - - Article loading error - Fout bij laden artikel - - - - - Article decoding error - Fout bij decoderen artikel - - - - avformat_alloc_context() failed. - avformat_alloc_context() mislukt. - - - - av_malloc() failed. - av_malloc() mislukt. - - - - avio_alloc_context() failed. - avio_alloc_context() mislukt. - - - - avformat_open_input() failed: %1. - avformat_open_input() mislukt: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() mislukt: %1. - - - - Could not find audio stream. - Kan audiogegevensstroom niet vinden. - - - - Codec [id: %1] not found. - Codec [id: %1] niet gevonden. - - - - avcodec_open2() failed: %1. - avcodec_open2() mislukt: %1. - - - - Cannot find usable audio output device. - Kan geen geschikt apparaat voor geluidsuitvoer vinden. - - - - Unsupported sample format. - Niet ondersteunde voorbeeldindeling. - - - - ao_open_live() failed: - ao_open_live() mislukt: - - - - No driver. - Geen stuurprogramma. - - - - This driver is not a live output device. - Dit stuurprogramma is geen live uitvoerapparaat. - - - - A valid option key has an invalid value. - Een geldige optiesleutel heeft een ongeldige waarde. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Kan apparaat niet openen: %1, kanalen: %2, snelheid: %3, bits: %4. - - - - Unknown error. - Onbekende fout. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() mislukt. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Woordenboeken zoeken/filteren (Ctrl+F) - - - - Quick Search - Snel zoeken - - - - Clear Search - Zoekresultaat wissen - - - - ResourceToSaveHandler - - - - ERROR: %1 - FOUT: %1 - - - - Resource saving error: - Fout bij opslaan bron: - - - - The referenced resource failed to download. - Kan de bron waarnaar wordt verwezen niet downloaden. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji voor Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji voor Katakana - - - - RussianTranslit - - - Russian Transliteration - Russische transliteratie - - - - ScanPopup - - - Dialog - Venster - - - word - Wort - - - List Matches (Alt+M) - Treffer anzeigen (Alt+M) - - - - - - - - ... - ... - - - - Back - Terug - - - - Forward - Vooruit - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Woord uitspreken (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Woord naar hoofdvenster verzenden (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Woordenboekwerkbalk weergeven of verbergen - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Hiermee vergrendelt u het venster zodat het zichtbaar blijft -en u het in grootte of anderszins kunt aanpassen. - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Pad - - - - Name - Naam - - - - Icon - Pictogram - - - - Sources - - - Text to Speech - Tekst naar spraak - - - - (not available in portable version) - (niet beschikbaar in de draagbare versie) - - - - - - Choose a directory - Kies een map - - - - - - - - - Confirm removal - Verwijderen bevestigen - - - - - Remove directory <b>%1</b> from the list? - De map <b>%1</b> uit de lijst verwijderen? - - - - - - Remove site <b>%1</b> from the list? - De site <b>%1</b> uit de lijst verwijderen? - - - - Remove program <b>%1</b> from the list? - Het programma <b>%1</b> uit de lijst verwijderen? - - - - Files - Bestanden - - - - Paths to search for the dictionary files: - Mappen waarin naar woordenboeken wordt gezocht: - - - - - - - - - &Add... - &Toevoegen... - - - - - - - - - &Remove - &Verwijderen - - - - Re&scan now - &Opnieuw inlezen - - - - Sound Dirs - Geluidsmappen - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Woordenboeken uit geluidsbestanden samenstellen door hier paden toe te voegen: - - - - Morphology - Morfologie - - - - Path to a directory with Hunspell/Myspell dictionaries: - Pad naar de map met Hunspell/Myspell woordenboeken: - - - - &Change... - &Aanpassen... - - - - Available morphology dictionaries: - Beschikbare morfologische woordenboeken: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Elk morfologisch woordenboek verschijnt als -hulpwoordenboek dat stamwoorden voor -zoekopdrachten en spellingsuggesties voor -verkeerd getypte woorden verschaft. Voeg de -geschikte woordenboeken toe onderaan de juiste -groep om ze te gebruiken. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikipedia (MediaWiki) sites: - - - - Websites - Websites - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Alle websites. De tekenreeks %GDWORD% wordt automatisch vervangen door het zoekwoord: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Alternativ kann %GD1251% für CP1251 und %GDISO1% für ISO 8859-1 benutzt werden. - - - - Programs - Programma's - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Alle externe programma's. De tekenreeks %GDWORD% wordt automatisch vervangen door het zoekwoord. -Het zoekwoord wordt ook als standaardinvoer doorgegeven. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Live uitspraak van <a href="http://www.forvo.com/">forvo.com</a>. Deze site maakt het mogelijk om uitspraak van woorden op te nemen en te delen. U kunt er via GoldenDict naar luisteren. - - - - Enable pronunciations from Forvo - Uitspraken van Forvo inschakelen - - - - API Key: - API-sleutel: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Het gebruik van Forvo vereist momenteel een API-sleutel. -Laat dit veld leeg om de standaardsleutel te gebruiken -(in de toekomst mogelijk niet meer beschikbaar) of vraag op -de site een eigen sleutel aan. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Uw eigen sleutel verkrijgt u <a href="http://api.forvo.com/key/">hier</a>, of laat het veld leeg om de standaardsleutel te gebruiken. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Erhalten Sie ihren eigenen Schlüssel <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">hier</span></a>, oder lassen Sie das Feld leer, um den Standardschlüssel zu verwenden.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Gebruik als alternatief %GD1251% voor CP1251, %GDISO1%...%GDISO16% voor ISO 8859-1...ISO 8859-16 resp., -%GDBIG5% voor Big-5, %GDBIG5HKSCS% voor Big5-HKSCS, %GDGBK% voor GBK en GB18030, %GDSHIFTJIS% voor Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Alle externe programma's. De tekenreeks %GDWORD% wordt automatisch vervangen door het zoekwoord. -Als de tekenreeks niet aanwezig is, dan wordt het zoekwoord als standaardinvoer doorgegeven. - - - - Language codes (comma-separated): - Taalcodes (komma-gescheiden): - - - - List of language codes you would like to have. Example: "en, ru". - Een lijst met taalcodes die u kunt gebruiken (voorbeeld: "en, ru"). - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - De volledige lijst met taalcodes is <a href="http://www.forvo.com/languages-codes/">hier</a> beschikbaar. - - - - Transliteration - Transliteratie - - - - Russian transliteration - Russische transliteratie - - - - Greek transliteration - Griekse transliteratie - - - - German transliteration - Duitse transliteratie - - - - Belarusian transliteration - Wit-Russische transliteratie - - - - Enables to use the Latin alphabet to write the Japanese language - Het gebruik van het Latijnse alfabet inschakelen om de Japanse taal te schrijven - - - - Japanese Romaji - Japans Romaji - - - - Systems: - Systemen: - - - - The most widely used method of transcription of Japanese, -based on English phonology - De meest gebruikte methode voor transcriptie van Japans, -gebaseerd op Engelse klankleer - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Het meest reguliere systeem met een één-op-één relatie tot -de kana-schrijfmethoden. Gestandaardiseerd als ISO 3602 - -Nog niet geïmplementeerd in GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Gebaseerd op het Hihon-shiki systeem, maar aangepast aan modern standaard Japans. -Gestandaardiseerd als ISO 3602 - -Nog niet geïmplementeerd in GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Lettergrepenschrift: - - - - Hiragana Japanese syllabary - Hiragana Japans syllabisch schrift - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Katakana Japans syllabisch schrift - - - - Katakana - Katakana - - - - StylesComboBox - - - None - Geen - - - - TextToSpeechSource - - - Selected voice engines: - Geselecteerde spraakprogramma's: - - - - &Add - &Toevoegen - - - - &Remove - &Verwijderen - - - - Preferences - Instellingen - - - - Volume: - Volume: - - - - Rate: - Snelheid: - - - - Preview - Voorbeeld - - - - Available voice engines: - Beschikbare spraakprogramma's: - - - - Text to be previewed: - Voorbeeldtekst: - - - - Type text to be previewed here. - Typ hier een voorbeeldtekst. - - - - &Preview - &Voorbeeld - - - - No TTS voice available - Geen TTS stem beschikbaar - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Kan beschikbare TTS stem niet vinden.<br>Er moet tenminste één TTS programma geïnstalleerd zijn op uw computer. - - - - Confirm removal - Verwijderen bevestigen - - - - Remove voice engine <b>%1</b> from the list? - Spraakprogramma <b>%1</b> verwijderen uit de lijst? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Typ een woord of zin waarnaar u wilt zoeken - - - - Drop-down - Vervolgkeuzelijst - - - - VoiceEnginesModel - - - Enabled - Ingeschakeld - - - - Name - Naam - - - - Id - Id - - - - Icon - Pictogram - - - - WebSitesModel - - - Enabled - Ingeschakeld - - - - Name - Naam - - - - Address - Adres - - - - Icon - Pictogram - - - - WordFinder - - - Failed to query some dictionaries. - Enkele woordenboeken konden niet doorzocht worden. - - - - WordList - - - WARNING: %1 - WAARSCHUWING: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/pl_PL.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/pl_PL.ts deleted file mode 100644 index fff33ecb54..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/pl_PL.ts +++ /dev/null @@ -1,4877 +0,0 @@ - - - - - About - - - About - Informacje - - - - GoldenDict dictionary lookup program, version - GoldenDict — program do przeszukiwania słowników, wersja - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Podziękowania: - - - - Licensed under GNU GPLv3 or later - Licencja GNU GPLv3 lub nowsza - - - - [Unknown] - [Nieznane] - - - - Based on Qt %1 (%2, %3 bit) - Oparte na bibliotece Qt %1 (%2, %3-bitowa) - - - - ArticleMaker - - - Expand article - Rozwiń artykuł - - - - Collapse article - Zwiń artykuł - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Nie znaleziono tłumaczenia słowa <b>%1</b> w grupie <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Nie znaleziono tłumaczenia w grupie <b>%1</b>. - - - - Welcome! - Witamy! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Witamy w programie <b>GoldenDict</b>!</h3><p>Aby rozpocząć pracę z programem, wybierz opcję <b>Edycja|Słowniki</b> i dodaj ścieżki, w których wyszukiwane będą pliki słowników, skonfiguruj serwisy Wikipedii lub inne źródła, dostosuj słowniki oraz utwórz ich grupy.</p>Po wykonaniu tych czynności program będzie gotowy do wyszukiwania słów! Można to robić w tym oknie za pomocą panelu znajdującego się po lewej stronie lub <a href="Praca z okienkiem wyskakującym">podczas pracy z innymi aplikacjami</a>.</p><p>W celu dostosowania programu wybierz opcję <b>Edycja|Preferencje</b> i sprawdź dostępne preferencje. Do wszystkich preferencji wyświetlane są podpowiedzi. W razie wątpliwości należy je dokładnie przeczytać.</p><p>Jeśli potrzebujesz dodatkowej pomocy, masz pytania lub sugestie albo po prostu chcesz wiedzieć, co myślą inni, skorzystaj z naszego <a href="http://goldendict.org/forum/">forum</a>. <p>Aktualizacje programu są dostępne <a href="http://goldendict.org/">w naszej witrynie sieci Web</a>.<p>(c) 2008-2013 Konstantin Isakov. Licencja GPLv3 lub nowsza. - - - - Working with popup - Praca z okienkiem wyskakującym - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Praca z okienkiem wyskakującym</h3>Aby móc wyszukiwać słowa z innych działających aplikacji, aktywuj najpierw funkcję <i>„skanowania automatycznego”</i> w opcji <b>Preferencje</b> i w dowolnym momencie włącz ją, przełączając znajdującą się powyżej ikonę skanowania automatycznego lub klikając prawym przyciskiem myszy ikonę na pasku zadań i wybierając odpowiednią opcję z wyświetlonego menu. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Następnie zatrzymaj kursor w innej aplikacji nad słowem, które chcesz wyszukać. Spowoduje to wyświetlenie okienka wyskakującego zawierającego wyjaśnienie tego słowa. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Następnie zaznacz w innej aplikacji dowolne słowo za pomocą myszy (kliknij je dwukrotnie lub zaznacz wskaźnikiem myszy przy wciśniętym lewym przycisku). Spowoduje to wyświetlenie okienka wyskakującego zawierającego wyjaśnienie tego słowa. - - - - (untitled) - (bez tytułu) - - - - (picture) - (obraz) - - - - ArticleRequest - - - Expand article - Rozwiń artykuł - - - - From - Źródło: - - - - Collapse article - Zwiń artykuł - - - - Query error: %1 - Błąd zapytania: %1 - - - - Close words: - Podobne słowa: - - - - Compound expressions: - Wyrażenia złożone: - - - - Individual words: - Pojedyncze słowa: - - - - ArticleView - - - Select Current Article - Wybierz aktualny artykuł - - - - Copy as text - Kopiuj jako tekst - - - - Inspect - Zbadaj - - - - Resource - Zasób - - - - Audio - Dźwięk - - - - TTS Voice - Głos TTS - - - - Picture - Obraz - - - - Video - Wideo - - - - Video: %1 - Wideo: %1 - - - - Definition from dictionary "%1": %2 - Definicja ze słownika „%1”: %2 - - - - Definition: %1 - Definicja: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - Wskazywany zasób nie istnieje. - - - - The referenced audio program doesn't exist. - Wskazywany program obsługi audio nie istnieje. - - - - - ERROR: %1 - BŁĄD: %1 - - - - Save sound - Zapisz dźwięk - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Pliki dźwiękowe (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Wszystkie pliki (*.*) - - - - Save image - Zapisz obraz - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Pliki obrazów (*.bmp *.jpg *.png *.tif);;Wszystkie pliki (*.*) - - - Resource saving error: - Błąd zapisu zasobu: - - - - &Open Link - &Otwórz łącze - - - - Open Link in New &Tab - O&twórz łącze w nowej karcie - - - - Open Link in &External Browser - Otwórz łącze w z&ewnętrznej przeglądarce - - - - &Look up "%1" - &Wyszukaj „%1” - - - - Look up "%1" in &New Tab - Wyszukaj „%1” w &nowej karcie - - - - Send "%1" to input line - Wyślij „%1” do wiersza wejściowego - - - - - &Add "%1" to history - Dod&aj „%1” do historii - - - - Look up "%1" in %2 - Wyszukaj „%1” w grupie %2 - - - - Look up "%1" in %2 in &New Tab - Wyszukaj „%1” w grupie %2 w &nowej karcie - - - - WARNING: FFmpeg Audio Player: %1 - OSTRZEŻENIE: Odtwarzacz audio FFmpeg: %1 - - - Playing a non-WAV file - Odtwarzanie pliku innego niż WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Aby umożliwić odtwarzanie plików innych niż WAV, przejdź do opcji Edycja|Preferencje, wybierz kartę Dźwięk i zaznacz opcję "Odtwarzaj w DirectShow". - - - Bass library not found. - Nie znaleziono biblioteki BASS. - - - Bass library can't play this sound. - Biblioteka BASS nie może odtworzyć tego dźwięku. - - - - Failed to run a player to play sound file: %1 - Nie powiodło się uruchomienie odtwarzacza w celu odtworzenia pliku dźwiękowego: %1 - - - - Failed to create temporary file. - Nie powiodło się utworzenie pliku tymczasowego. - - - - Failed to auto-open resource file, try opening manually: %1. - Nie powiodło się automatyczne otwarcie pliku zasobu. Spróbuj otworzyć ręcznie: %1. - - - - The referenced resource failed to download. - Nie powiodło się pobranie wskazywanego zasobu. - - - - Save &image... - Zap&isz obraz... - - - - Save s&ound... - Zapisz &dźwięk... - - - - WARNING: %1 - OSTRZEŻENIE: %1 - - - - Form - Formularz - - - - about:blank - about:blank - - - - x - x - - - - Find: - Znajdź: - - - - - &Previous - &Poprzednie - - - - - &Next - &Następne - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - Z rozróżnianiem wielkoś&ci liter - - - - Highlight &all - Podświetl &wszystko - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Transliteracja białoruska z alfabetu łacińskiego na cyrylicę (ortografia klasyczna) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Transliteracja białoruska z alfabetu łacińskiego na cyrylicę (ortografia szkolna) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Transliteracja białoruska (niwelująca różnice -między ortografią klasyczną i szkolną w cyrylicy) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - Wymagane uwierzytelnienie serwera proxy - - - - You need to supply a Username and a Password to access via proxy - Aby uzyskać dostęp za pośrednictwem serwera proxy, należy podać nazwę użytkownika i hasło - - - - Username: - Nazwa użytkownika: - - - - Password: - Hasło: - - - - DictGroupWidget - - - Form - Formularz - - - - Group icon: - Ikona grupy: - - - - Shortcut: - Skrót: - - - - None - Brak - - - - From file... - Z pliku... - - - - Choose a file to use as group icon - Wybierz plik obrazu, który będzie używany jako ikona grupy - - - - Images - Obrazy - - - - All files - Wszystkie pliki - - - - Error - Błąd - - - - Can't read the specified image file. - Nie można odczytać podanego pliku obrazu. - - - - DictGroupsWidget - - - - - - Dictionaries: - Słowniki: - - - - Confirmation - Potwierdzenie - - - - Are you sure you want to generate a set of groups based on language pairs? - Czy na pewno wygenerować zbiór grup na podstawie par języków? - - - - Unassigned - Nieprzypisane - - - - Combine groups by source language to "%1->" - Połącz grupy wg języka źródłowego do „%1->” - - - - Combine groups by target language to "->%1" - Połącz grupy wg języka docelowego do „->%1” - - - - Make two-side translate group "%1-%2-%1" - Utwórz grupę tłumaczenia dwukierunkowego „%1-%2-%1” - - - - - Combine groups with "%1" - Połącz grupy z „%1” - - - - DictHeadwords - - - Search mode - Tryb wyszukiwania - - - - This element determines how filter string will be interpreted - Ta opcja decyduje o sposobie interpretacji ciągu znaków filtru - - - - If checked on the symbols case will be take in account when filtering - Zaznaczenie tej opcji powoduje, że podczas filtrowania uwzględniana jest wielkość liter - - - - Match case - Zgodna wielkość liter - - - - Exports headwords to file - Eksportuje hasła do pliku - - - - Export - Eksportuj - - - - Help - Pomoc - - - - OK - OK - - - - Press this button to apply filter to headwords list - Kliknij ten przycisk, aby zastosować filtr do listy haseł - - - - Apply - Zastosuj - - - - If checked any filter changes will we immediately applied to headwords list - Zaznaczenie tej opcji powoduje, że zmiany filtru są od razu stosowane do listy haseł - - - - Auto apply - Stosuj automatycznie - - - - Filter: - Filtr: - - - - Filter string (fixed string, wildcards or regular expression) - Ciąg znaków filtru (ustalony ciąg znaków, symbole wieloznaczne lub wyrażenie regularne) - - - - Text - Tekst - - - - Wildcards - Symbole wieloznaczne - - - - RegExp - Wyrażenie regularne - - - - Unique headwords total: %1, filtered: %2 - Unikalne hasła łącznie: %1, przefiltrowane: %2 - - - - Save headwords to file - Zapisz hasła do pliku - - - - Text files (*.txt);;All files (*.*) - Pliki tekstowe (*.txt);;Wszystkie pliki (*.*) - - - - Export headwords... - Eksportuj hasła... - - - - Cancel - Anuluj - - - - DictInfo - - - Total articles: - Łączna liczba artykułów: - - - - Translates from: - Tłumaczenia z: - - - - Total words: - Łączna liczba słów: - - - - Translates to: - Tłumaczenia na: - - - - Open folder - Otwórz folder - - - - Edit dictionary - Edytuj słownik - - - - Files comprising this dictionary: - Pliki składające się na ten słownik: - - - - Description: - Opis: - - - - Show all unique dictionary headwords - Pokaż wszystkie unikalne hasła słownika - - - - Headwords - Hasła - - - - Edit the dictionary via command: -%1 - Edytuj słownik za pomocą komendy: -%1 - - - - DictListModel - - - %1 entries - Liczba pozycji: %1 - - - - DictServer - - - Url: - Adres URL: - - - - Databases: - Bazy danych: - - - - Search strategies: - Strategie wyszukiwania: - - - - Server databases - - - - - DictServersModel - - - Enabled - Włączone - - - - Name - Nazwa - - - - Address - Adres - - - - Databases - Bazy danych - - - - Strategies - Strategie - - - - Icon - Ikona - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - Rozdzielona przecinkami lista baz danych -(pusty ciąg znaków lub „*” oznacza wszystkie bazy danych) - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - Rozdzielona przecinkami lista strategii wyszukiwania -(pusty ciąg znaków oznacza strategię „prefiks”) - - - - DictionaryBar - - Dictionary Bar - Pasek słowników - - - - &Dictionary Bar - &Pasek słowników - - - - Extended menu with all dictionaries... - Rozszerzone menu ze wszystkimi słownikami - - - - Edit this group - Edytuj tę grupę - - - - Dictionary info - Informacje o słowniku - - - - Dictionary headwords - Hasła słownika - - - - Open dictionary folder - Otwórz folder słownika - - - - Edit dictionary - Edytuj słownik - - - - EditDictionaries - - - &Sources - Ź&ródła - - - - - &Dictionaries - &Słowniki - - - - - &Groups - &Grupy - - - - Sources changed - Źródła uległy zmianie - - - - Some sources were changed. Would you like to accept the changes? - Niektóre źródła uległy zmianie. Czy zaakceptować zmiany? - - - - Accept - Akceptuj - - - - Cancel - Anuluj - - - - Dictionaries - Słowniki - - - - ExternalViewer - - - the viewer program name is empty - Nazwa programu przeglądarki jest pusta - - - - FTS::FtsIndexing - - None - Brak - - - - FTS::FullTextSearchDialog - - - Full-text search - Wyszukiwanie pełnotekstowe - - - - Whole words - Całe słowa - - - - Plain text - Zwykły tekst - - - - Wildcards - Symbole wieloznaczne - - - - RegExp - Wyrażenie regularne - - - - Max distance between words (%1-%2): - Maks. odstęp między słowami (%1–%2): - - - - Max articles per dictionary (%1-%2): - Maks. liczba art. w słowniku (%1–%2): - - - - - - Articles found: - Znalezione artykuły: - - - - Now indexing: - Trwa indeksowanie: - - - - None - Brak - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - Symbole CJK w ciągu znaków wyszukiwania nie są obsługiwane w trybach wyszukiwania „Całe słowa” i „Zwykły tekst” - - - - The search line must contains at least one word containing - Wiersz wyszukiwania musi zawierać przynajmniej jedno słowo zawierające - - - - or more symbols - lub więcej symboli - - - - No dictionaries for full-text search - Brak słowników do wyszukiwania pełnotekstowego - - - - FTS::Indexing - - None - Brak - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Błąd podczas analizy pliku XML: %1 w %2,%3 - - - - Added %1 - Dodano %1 - - - - by - przez - - - - Male - Mężczyzna - - - - Female - Kobieta - - - - from - z - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Wybierz opcję Edycja|Słowniki|Forvo i postaraj się o nasz klucz API, aby wyeliminować wyświetlanie tego błędu. - - - - FullTextSearchDialog - - - - Search - Szukaj - - - - Match case - Zgodna wielkość liter - - - - Mode: - Tryb: - - - - Articles found: - Znalezione artykuły: - - - - Available dictionaries in group: - Dostępne słowniki w grupie: - - - - Wait for indexing: - Oczekują na indeksowanie: - - - - Total: - Łącznie: - - - - Indexed: - Zaindeksowane: - - - - Now indexing: None - Trwa indeksowanie: Brak - - - - Cancel - Anuluj - - - - Help - Pomoc - - - - GermanTranslit - - - German Transliteration - Transliteracja niemiecka - - - - GreekTranslit - - - Greek Transliteration - Transliteracja grecka - - - - GroupComboBox - - - Choose a Group (Alt+G) - Wybierz grupę (Alt+G) - - - - GroupSelectorWidget - - - Form - Formularz - - - - Look in - Szukaj w - - - - Groups - - - Group tabs - Karty grup - - - - Open groups list - Otwórz listę grup - - - - Add group - Dodaj grupę - - - - Give a name for the new group: - Nadaj nazwę nowej grupie: - - - - Rename group - Zmień nazwę grupy - - - - Give a new name for the group: - Nadaj nową nazwę grupie: - - - - Remove group - Usuń grupę - - - - Are you sure you want to remove the group <b>%1</b>? - Czy na pewno usunąć grupę <b>%1</b>? - - - - - Remove all groups - Usuń wszystkie grupy - - - - Are you sure you want to remove all the groups? - Czy na pewno usunąć wszystkie grupy? - - - - Dictionaries available: - Dostępne słowniki: - - - - Add selected dictionaries to group (Ins) - Dodaj zaznaczone słowniki do grupy (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Usuń zaznaczone słowniki z grupy (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Grupy: - - - - Tab 2 - Karta 2 - - - - Create new dictionary group - Utwórz nową grupę słowników - - - - &Add group - Dod&aj grupę - - - - Create language-based groups - Utwórz grupy na podstawie języków - - - - Auto groups - Grupy automatyczne - - - - Rename current dictionary group - Zmień nazwę bieżącej grupy słowników - - - - Re&name group - Zmień &nazwę grupy - - - - Remove current dictionary group - Usuń bieżącą grupę słowników - - - - &Remove group - &Usuń grupę - - - - Remove all dictionary groups - Usuń wszystkie grupy słowników - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Przeciągaj i upuszczaj słowniki między grupami, przenoś je w obrębie grupy i zmieniaj ich kolejność za pomocą myszy. - - - - Help::HelpWindow - - - GoldenDict help - Pomoc do programu GoldenDict - - - - Home - Strona główna - - - - Back - Wstecz - - - - Forward - Dalej - - - - Zoom In - Zwiększ - - - - Zoom Out - Zmniejsz - - - - Normal Size - Normalna wielkość - - - - Content - Spis treści - - - - Index - Indeks - - - - HistoryPaneWidget - - - &Delete Selected - &Usuń wybrane - - - - Copy Selected - Kopiuj wybrane - - - - History: - Historia: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Wielkość historii: %1 wpisów z maksymalnej liczby %2 - - - - Hunspell - - - Spelling suggestions: - Propozycje: - - - - %1 Morphology - %1 - morfologia - - - - HunspellDictsModel - - - Enabled - Włączone - - - - Name - Nazwa - - - - Initializing - - - Please wait... - Proszę czekać... - - - - - Please wait while indexing dictionary - Zaczekaj na zaindeksowanie słowników - - - - GoldenDict - Initializing - GoldenDict - inicjowanie - - - - Dictionary Name - Nazwa słownika - - - - Language - - - Afar - Afar - - - - Abkhazian - Abchaski - - - - Avestan - Awestański - - - - Afrikaans - Afrykanerski - - - - Akan - Akański - - - - Amharic - Amharski - - - - Aragonese - Aragoński - - - - Arabic - Arabski - - - - Assamese - Assamski - - - - Avaric - Awarski - - - - Aymara - Aymara - - - - Azerbaijani - Azerski - - - - Bashkir - Baszkirski - - - - Belarusian - Białoruski - - - - Bulgarian - Bułgarski - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengalski - - - - Tibetan - Tybetański - - - - Breton - Bretoński - - - - Bosnian - Bośniacki - - - - Catalan - Kataloński - - - - Chechen - Czeczeński - - - - Chamorro - Czamorro - - - - Corsican - Korsykański - - - - Cree - Cree - - - - Czech - Czeski - - - - Church Slavic - Cerkiewnosłowiański - - - - Chuvash - Czuwaski - - - - Welsh - Walijski - - - - Danish - Duński - - - - German - Niemiecki - - - - Divehi - Malediwski - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Grecki - - - - English - Angielski - - - - Esperanto - Esperanto - - - - Spanish - Hiszpański - - - - Estonian - Estoński - - - - Basque - Baskijski - - - - Persian - Perski - - - - Fulah - Ful - - - - Finnish - Fiński - - - - Fijian - Fidżyjski - - - - Faroese - Farerski - - - - French - Francuski - - - - Western Frisian - Zachodniofryzyjski - - - - Irish - Irlandzki - - - - Scottish Gaelic - Gaelicki szkocki - - - - Galician - Galicyjski - - - - Guarani - Guarani - - - - Gujarati - Gujarati - - - - Manx - Manx - - - - Hausa - Hausa - - - - Hebrew - Hebrajski - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Chorwacki - - - - Haitian - Haitański - - - - Hungarian - Węgierski - - - - Armenian - Ormiański - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonezyjski - - - - Interlingue - Interlingue - - - - Igbo - Igbo - - - - Sichuan Yi - Nuosu - - - - Inupiaq - Inupiak - - - - Ido - Ido - - - - Icelandic - Islandzki - - - - Italian - Włoski - - - - Inuktitut - Inuktitut - - - - Japanese - Japoński - - - - Javanese - Jawajski - - - - Georgian - Gruziński - - - - Kongo - Kongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Osziwambo - - - - Kazakh - Kazachski - - - - Kalaallisut - Grenlandzki - - - - Khmer - Khmerski - - - - Kannada - Kannada - - - - Korean - Koreański - - - - Kanuri - Kanuri - - - - Kashmiri - Kaszmirski - - - - Kurdish - Kurdyjski - - - - Komi - Komi - - - - Cornish - Kornijski - - - - Kirghiz - Kirgiski - - - - Latin - Łaciński - - - - Luxembourgish - Luksemburski - - - - Ganda - Ganda - - - - Limburgish - Limburski - - - - Lingala - Lingala - - - - Lao - Laotański - - - - Lithuanian - Litewski - - - - Luba-Katanga - Kiluba - - - - Latvian - Łotewski - - - - Malagasy - Malgaski - - - - Marshallese - Marszaleski - - - - Maori - Maori - - - - Macedonian - Macedoński - - - - Malayalam - Malajalam - - - - Mongolian - Mongolski - - - - Marathi - Marathi - - - - Malay - Malajski - - - - Maltese - Maltański - - - - Burmese - Burmański - - - - Nauru - Nauru - - - - Norwegian Bokmal - Norweski (bokmål) - - - - North Ndebele - Ndebele północny - - - - Nepali - Nepalski - - - - Ndonga - Ndonga - - - - Dutch - Holenderski - - - - Norwegian Nynorsk - Norweski (nynorsk) - - - - Norwegian - Norweski - - - - South Ndebele - Ndebele południowy - - - - Navajo - Navaho - - - - Chichewa - Cziczewa - - - - Occitan - Oksytański - - - - Ojibwa - Odżibwa - - - - Oromo - Oromo - - - - Oriya - Orija - - - - Ossetian - Osetyjski - - - - Panjabi - Pendżabski - - - - Pali - Pali - - - - Polish - Polski - - - - Pashto - Paszto - - - - Portuguese - Portugalski - - - - Quechua - Keczua - - - - Raeto-Romance - Retoromański - - - - Kirundi - Kirundi - - - - Romanian - Rumuński - - - - Russian - Rosyjski - - - - Kinyarwanda - Ruanda-rundi - - - - Sanskrit - Sanskryt - - - - Sardinian - Sardyński - - - - Sindhi - Sindhi - - - - Northern Sami - Pólnocnolapoński - - - - Sango - Sango - - - - Serbo-Croatian - Serbsko-chorwacki - - - - Sinhala - Syngaleski - - - - Slovak - Słowacki - - - - Slovenian - Słoweński - - - - Samoan - Samoański - - - - Shona - Shona - - - - Somali - Somalijski - - - - Albanian - Albański - - - - Serbian - Serbski - - - - Swati - Suazi - - - - Southern Sotho - Sotho południowy - - - - Sundanese - Sudański - - - - Swedish - Szwedzki - - - - Swahili - Swahili - - - - Tamil - Tamilski - - - - Telugu - Telugu - - - - Tajik - Tadżycki - - - - Thai - Tajski - - - - Tigrinya - Tigrinia - - - - Turkmen - Turkmeński - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Turecki - - - - Tsonga - Tsonga - - - - Tatar - Tatarski - - - - Twi - Akan - - - - Tahitian - Tahitański - - - - Uighur - Ujgurski - - - - Ukrainian - Ukraiński - - - - Urdu - Urdu - - - - Uzbek - Uzbecki - - - - Venda - Venda - - - - Vietnamese - Wietnamski - - - - Volapuk - Volapik - - - - Walloon - Waloński - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Jidysz - - - - Yoruba - Joruba - - - - Zhuang - Zuang - - - - Chinese - Chiński - - - - Zulu - Zuluski - - - - Lojban - Lojban - - - - Traditional Chinese - Chiński tradycyjny - - - - Simplified Chinese - Chiński uproszczony - - - - Other - Inny - - - - Other Simplified Chinese dialects - Inne dialekty chińskiego uproszczonego - - - - Other Traditional Chinese dialects - Inne dialekty chińskiego tradycyjnego - - - - Other Eastern-European languages - Inne języki wschodnioeuropejskie - - - - Other Western-European languages - Inne języki zachodnioeuropejskie - - - - Other Russian languages - Inne języki rosyjskie - - - - Other Japanese languages - Inne języki japońskie - - - - Other Baltic languages - Inne języki bałtyckie - - - - Other Greek languages - Inne języki greckie - - - - Other Korean dialects - Inne dialekty koreańskie - - - - Other Turkish dialects - Inne dialekty tureckie - - - - Other Thai dialects - Inne dialekty tajskie - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Błąd podczas ładowania słowników - - - - Main - - - Error in configuration file. Continue with default settings? - Błąd w pliku konfiguracyjnym. Czy kontynuować z ustawieniami domyślnymi? - - - - MainWindow - - Show Names in Dictionary Bar - Pokaż nazwy na pasku słowników - - - Show Small Icons in Toolbars - Wyświetlaj małe ikony na paskach narzędzi - - - - &Menubar - Pasek &menu - - - - - Look up in: - Wyszukaj w: - - - - Found in Dictionaries: - Znaleziono w słownikach: - - - Navigation - Nawigacja - - - - Back - Wstecz - - - - Forward - Dalej - - - - Scan Popup - Skanowanie automatyczne - - - - Pronounce Word (Alt+S) - Wymowa słowa (Alt+S) - - - - Zoom In - Zwiększ - - - - Zoom Out - Zmniejsz - - - - Normal Size - Normalna wielkość - - - - Words Zoom In - Zwiększ słowa - - - - Words Zoom Out - Zmniejsz słowa - - - - Words Normal Size - Normalna wielkość słów - - - - Show &Main Window - Wyświetl okno &główne - - - - Close current tab - Zamknij bieżącą kartę - - - - Close all tabs - Zamknij wszystkie karty - - - - Close all tabs except current - Zamknij wszystkie karty z wyjątkiem bieżącej - - - - - Accessibility API is not enabled - Nie włączono funkcji API dostępności - - - - Article, Complete (*.html) - Artykuł, pełny (*.html) - - - - Article, HTML Only (*.html) - Artykuł, tylko HTML (*.html) - - - - Saving article... - Zapisywanie artykułu... - - - - The main window is set to be always on top. - Okno główne będzie zawsze na wierzchu. - - - - &Hide - &Ukryj - - - - Export history to file - Eksportowanie historii do pliku - - - - - Text files (*.txt);;All files (*.*) - Pliki tekstowe (*.txt);;Wszystkie pliki (*.*) - - - - History export complete - Eksport historii został zakończony - - - - Export error: - Błąd eksportu: - - - - Import history from file - Importowanie historii z pliku - - - - Import error: invalid data in file - Błąd importu: nieprawidłowe dane w pliku - - - - History import complete - Import historii został zakończony - - - - Import error: - >Błąd importu: - - - - Dictionary info - Informacje o słowniku - - - - Dictionary headwords - Hasła słownika - - - - Open dictionary folder - Otwórz folder słownika - - - - Edit dictionary - Edytuj słownik - - - - Now indexing for full-text search: - - - - - - &Quit - &Zakończ - - - - Loading... - Ładowanie... - - - - - Welcome! - Witamy! - - - - %1 dictionaries, %2 articles, %3 words - Słowniki: %1, artykuły: %2, słowa: %3 - - - - Look up: - Wyszukaj: - - - - All - Wszystko - - - - Opened tabs - Otwarte karty - - - - Show Names in Dictionary &Bar - Pokaż nazwy w pas&ku słowników - - - - Show Small Icons in &Toolbars - Pokaż małe &ikony w paskach narzędzi - - - - &Navigation - &Nawigacja - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - Ciągi znaków do wyszukiwania w słownikach. Dozwolone są symbole wieloznaczne „*”, „?” i zbiory symboli „[...]”. -Aby odnaleźć symbole „*”, „?”, „[” i „]”, należy użyć odpowiednio ciągów „\*”, „\?”, „\[” i „\]” - - - - Open Tabs List - Lista otwartych kart - - - - (untitled) - (bez tytułu) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - OSTRZEŻENIE: %1 - - - GoldenDict - GoldenDict - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Nie powiodło się zainicjowanie mechanizmu monitorowania klawiszy skrótu.<br>Upewnij się, że włączono rozszerzenie RECORD serwera XServer. - - - - New Release Available - Dostępna jest nowa wersja - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Wersja <b>%1</b> programu GoldenDict jest dostępna do pobrania.<br>Kliknij przycisk <b>Pobierz</b>, aby przejść do strony pobierania. - - - - Download - Pobierz - - - - Skip This Release - Pomiń tę wersję - - - - You have chosen to hide a menubar. Use %1 to show it back. - Wybrano opcję ukrycia paska menu. Użyj %1, aby ponownie wyświetlić. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Ustawienia strony - - - - No printer is available. Please install one first. - Drukarka jest niedostępna. Trzeba ją najpierw zainstalować. - - - - Print Article - Drukuj artykuł - - - - Save Article As - Zapisz artykuł jako - - - Html files (*.html *.htm) - Pliki html (*.html *.htm) - - - - Error - Błąd - - - - Can't save article: %1 - Nie można zapisać artykułu: %1 - - - - &File - &Plik - - - - &Edit - &Edycja - - - - &Help - Po&moc - - - - &View - &Widok - - - - &Zoom - Po&większenie - - - - H&istory - &Historia - - - Search Pane - Okienko wyszukiwania - - - - &Dictionaries... - &Słowniki... - - - - F3 - F3 - - - &Groups... - &Grupy... - - - Results Navigation Pane - Okienko nawigacji po wynikach - - - - &Search Pane - Okienko wy&szukiwania - - - - &Results Navigation Pane - &Okienko nawigacji po wynikach - - - - &History Pane - Okienko &historii - - - &Dictionaries... F3 - &Słowniki... F3 - - - - Search - Wy&szukiwanie - - - - &Preferences... - &Preferencje... - - - - F4 - F4 - - - - &Homepage - &Strona główna - - - - &About - &Informacje - - - - About GoldenDict - Informacje o programie GoldenDict - - - - GoldenDict reference - Pomoc do programu GoldenDict - - - - F1 - F1 - - - - Quit from application - Zakończ aplikację - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forum - - - - &Close To Tray - Z&amknij do paska zadań - - - - Minimizes the window to tray - Minimalizuje okno do paska zadań - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - Zapi&sz artykuł - - - - Save Article - Zapisz artykuł - - - - F2 - F2 - - - - &Print - &Drukuj - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - &Ustawienia strony - - - - Print Pre&view - &Podgląd wydruku - - - - &Rescan Files - &Wczytaj pliki ponownie - - - - &New Tab - &Nowa karta - - - - &Always on Top - &Zawsze na wierzchu - - - - Always on Top - Zawsze na wierzchu - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Przycisk menu - - - - Search in page - Szukaj na stronie - - - - Ctrl+F - Ctrl+F - - - - Full-text search - Wyszukiwanie pełnotekstowe - - - - Ctrl+Shift+F - Ctrl+Shift+F - - - Print Preview - Podgląd wydruku - - - Rescan Files - Wczytaj pliki ponownie - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - Wy&czyść - - - - New Tab - Nowa karta - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Folder &konfiguracji - - - - - &Show - &Pokaż - - - - Ctrl+H - Ctrl+H - - - - &Export - &Eksportuj - - - - &Import - &Importuj - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Plik słownika został zmodyfikowany lub uszkodzony - - - - Failed loading article from %1, reason: %2 - Nie można załadować artykułu ze źródła %1, przyczyna: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Błąd podczas analizy pliku XML: %1 w %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Błąd podczas analizy pliku XML: %1 w %2,%3 - - - - MediaWikisModel - - - Enabled - Włączone - - - - Name - Nazwa - - - - Address - Adres - - - - Icon - Ikona - - - - OrderAndProps - - - Form - Formularz - - - - Dictionary order: - Kolejność słowników: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Słowniki nieaktywne (wyłączone): - - - - Dictionary information - Informacje o słowniku - - - - Name: - Nazwa: - - - - Total articles: - Łączna liczba artykułów: - - - - Total words: - Łączna liczba słów: - - - - Translates from: - Tłumaczenia z: - - - - Translates to: - Tłumaczenia na: - - - - Description: - Opis: - - - - Files comprising this dictionary: - Pliki składające się na ten słownik: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Dostosuj kolejność, przeciągając i upuszczając elementy. Upuszczenie słownika w grupie nieaktywnych powoduje jego wyłączenie. - - - - Sort by name - Sortuj wg nazwy - - - - Sort by languages - Sortuj wg języków - - - - Dictionary headwords - Hasła słownika - - - - Dictionaries active: %1, inactive: %2 - Słowniki aktywne: %1, nieaktywne: %2 - - - - PathsModel - - - Path - Ścieżka - - - - Recursive - Uwzględniaj podkatalogi - - - - Preferences - - - System default - Domyślny systemu - - - - - Default - Domyślny - - - - Modern - Nowoczesny - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes niebieski - - - Play via DirectShow - Odtwarzaj w DirectShow - - - - Changing Language - Zmiana języka - - - - Restart the program to apply the language change. - Uruchom ponownie program, aby zastosować zmianę języka. - - - - Preferences - Preferencje - - - - &Interface - &Interfejs - - - - Tabbed browsing - Przeglądanie w kartach - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalnie otwarcie nowej karty powoduje natychmiastowe przejście do niej. -Włączenie tej opcji powoduje, że nie następuje przejście do nowo otwartej karty. - - - - Open new tabs in background - Otwieraj nowe karty w tle - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Włączenie tej opcji powoduje, że nowe karty są otwierane tuż za bieżącą, -aktywną. W przeciwnym razie są one dodawane na końcu. - - - - Open new tabs after the current one - Otwieraj nowe karty za bieżącą - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Włączenie tej opcji powoduje, że na pasku zadań obecna jest ikona umożliwiająca -otwieranie okna głównego i wykonywanie innych zadań. - - - - Enable system tray icon - Włącz ikonę paska zadań - - - - With this on, the application starts directly to system tray without showing -its main window. - Włączenie tej opcji powoduje, że aplikacja jest uruchamiana od razu -na pasku zadań bez wyświetlania okna głównego. - - - - Start to system tray - Uruchamiaj na pasku zadań - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Włączenie tej opcji powoduje, że próba zamknięcia okna głównego -prowadzi do jego ukrycia, a nie do zamknięcia aplikacji. - - - - Close to system tray - Zamykaj do paska zadań - - - - Startup - Uruchamianie - - - - Start with system - Uruchamiaj z systemem - - - - Interface language: - Język interfejsu: - - - - Display style: - Styl wyświetlania: - - - - &Scan Popup - &Skanowanie automatyczne - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Włączenie tej opcji powoduje wyświetlanie okienka wyskakującego za każdym razem, gdy -za pomocą myszy wskaże się słowo na ekranie (w systemie Windows) lub za pomocą myszy -zaznaczy się słowo (w systemie Linux). Opcję tę można aktywować i dezaktywować z okna -głównego lub z paska zadań. - - - - Enable scan popup functionality - Włącz funkcję skanowania automatycznego - - - - Automatically starts GoldenDict after operation system bootup. - Automatycznie uruchamia program GoldenDict po starcie systemu operacyjnego. - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Zaznacz tę opcję, aby nie wyświetlać głównego paska kart, gdy otwarta jest tylko jedna karta. - - - - Hide single tab - Ukryj pojedynczą kartę - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab umożliwia nawigację po kartach w kolejności używania - - - - Double-click translates the word clicked - Dwukrotne kliknięcie powoduje przetłumaczenie klikniętego słowa - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Zwykle naciśnięcie klawisza ESC aktywuje wiersz tłumaczenia. -Zaznaczenie tej opcji powoduje, że ukrywane jest okno główne. - - - - ESC key hides main window - Naciśnięcie klawisza ESC powoduje ukrycie okna głównego - - - - Turn this option on if you want to select words by single mouse click - Włącz tę opcję, aby wybierać słowa pojedynczym kliknięciem - - - - Select word by single click - Wybierz słowo pojedynczym kliknięciem - - - - Add-on style: - Styl dodatku: - - - - Help language - Język pomocy - - - - Adjust this value to avoid huge context menus. - Dostosuj tę wartość, aby uniknąć zbyt dużych menu kontekstowych. - - - - Context menu dictionaries limit: - Limit słowników w menu kontekstowym: - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Wskazuje, czy tryb skanowania automatycznego jest domyślnie włączony, czy nie. Zaznaczenie -tej opcji powoduje, że program uruchamia się z włączonym skanowaniem automatycznym. - - - - Start with scan popup turned on - Uruchamiaj z włączoną funkcją skanowania automatycznego - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Włączenie tej opcji powoduje, że okienko wyskakujące jest wyświetlane tylko wtedy, -kiedy zaznaczenie słowa ulega zmianie przy naciśniętych wszystkich wybranych klawiszach. - - - - Only show popup when all selected keys are kept pressed: - Wyświetlaj okienko wyskakujące tylko po naciśnięciu wszystkich wybranych klawiszy: - - - - Left Ctrl only - Tylko lewy Ctrl - - - - Left Ctrl - Lewy Ctrl - - - - Right Shift only - Tylko prawy Shift - - - - Right Shift - Prawy Shift - - - - Alt key - Klawisz Alt - - - - Alt - Alt - - - - Ctrl key - Klawisz Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Tylko lewy Alt - - - - Left Alt - Lewy Alt - - - - Shift key - Klawisz Shift - - - - Shift - Shift - - - - Right Alt only - Tylko prawy Alt - - - - Right Alt - Prawy Alt - - - - Right Ctrl only - Tylko prawy Ctrl - - - - Right Ctrl - Prawy Ctrl - - - - Left Shift only - Tylko lewy Shift - - - - Left Shift - Lewy Shift - - - - Windows key or Meta key - Klawisz Windows/Meta - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalnie w celu aktywowania okienka wyskakującego należy trzymać naciśnięte -wybrane klawisze w momencie zaznaczania słowa. Włączenie tej opcji powoduje, -że wybrane klawisze można nacisnąć krótko po zaznaczeniu słowa. - - - - Send translated word to main window instead of to show it in popup window - Wyślij przetłumaczone słowo do okna głównego, a nie wyświetlaj w okienku wyskakującym - - - - Send translated word to main window - Wyślij przetłumaczone słowo do okna głównego - - - - Playback - Odtwarzanie - - - - System proxy - Systemowy serwer proxy - - - - Custom proxy - Niestandardowy serwer proxy - - - - Custom settings - Ustawienia niestandardowe - - - - Full-text search - Wyszukiwanie pełnotekstowe - - - - Allow full-text search for: - Zezwalaj na wyszukiwanie pełnotekstowe w źródłach: - - - - Don't search in dictionaries containing more than - Nie wyszukuj w słownikach, w których liczba artykułów przekracza - - - - articles (0 - unlimited) - (0 — bez ograniczenia) - - - - Select this option to automatic collapse big articles - Zaznacz tę opcję, aby automatycznie zwijać duże artykuły - - - - Collapse articles more than - Zwijaj artykuły większe niż - - - - Articles longer than this size will be collapsed - Artykuły o długości przekraczającej tę wartość będą zwijane - - - - symbols - symboli - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Używaj interfejsu API odtwarzania systemu Windows. Jest ograniczony tylko do plików .wav, ale działa bardzo dobrze. - - - Play via Windows native API - Odtwarzaj za pomocą interfejsu API systemu Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Odtwarzaj pliki dźwiękowe za pomocą środowiska Phonon. Może działać trochę niestabilnie, ale powinno obsługiwać większość formatów audio. - - - Play via Phonon - Odtwarzaj za pomocą Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Odtwarzaj dźwięki za pomocą biblioteki BASS. Wybór optymalny. Aby korzystać z tego trybu, -należy umieścić plik bass.dll (http://www.un4seen.com) w folderze programu GoldenDict. - - - Play via Bass library - Odtwarzaj za pomocą biblioteki BASS - - - - Use any external program to play audio files - Używaj zewnętrznego programu do odtwarzania plików dźwiękowych - - - - Use external program: - Używaj programu zewnętrznego: - - - - Ad&vanced - &Zaawansowane - - - - ScanPopup extra technologies - Dodatkowe technologie skanowania automatycznego - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Technologia IAccessibleEx umożliwia wczytanie słowa znajdującego -się pod kursorem. Technologię tę obsługują tylko niektóre programy -(na przykład Internet Explorer 9). -Nie ma potrzeby włączania tej opcji, gdy takie programy nie są używane. - - - - Use &IAccessibleEx - Używaj &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Technologia UI Automation umożliwia wczytanie słowa znajdującego -się pod kursorem. Technologię tę obsługują tylko niektóre programy. -Nie ma potrzeby włączania tej opcji, gdy takie programy nie są używane. - - - - Use &UIAutomation - Używaj &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Specjalny komunikat programu GoldenDict umożliwia wczytanie słowa znajdującego -się pod kursorem. Technologię tę obsługują tylko niektóre programy. -Nie ma potrzeby włączania tej opcji, gdy takie programy nie są używane. - - - - Use &GoldenDict message - Używaj komunikatu programu &GoldenDict - - - - History - Historia - - - - Turn this option on to store history of the translated words - Włącz tę opcję, aby zapisywać historię tłumaczonych słów - - - - Store &history - Zapisuj &historię - - - - Specify the maximum number of entries to keep in history. - Określ maksymalną liczbę słów przechowywanych w historii - - - - Maximum history size: - Maksymalna wielkość historii: - - - - History saving interval. If set to 0 history will be saved only during exit. - Interwał zapisywania historii. Wartość zero oznacza, że historia jest zapisywana tylko przy wychodzeniu z programu. - - - - Save every - Zapisuj co - - - - minutes - min - - - - Articles - Artykuły - - - - Turn this option on to always expand optional parts of articles - Włącz tę opcję, aby zawsze rozwijać opcjonalne części artykułów - - - - Expand optional &parts - Rozwijaj części o&pcjonalne - - - - Keys may also be pressed afterwards, within - Klawisze można nacisnąć nie więcej niż - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - W celu uniknięcia przekłamań klawisze są monitorowane -tylko przez podaną tutaj liczbę sekund po zaznaczeniu słowa. - - - - secs - sek. później - - - - Hotkeys - &Klawisze skrótu - - - - Use the following hotkey to show or hide the main window: - Używaj tego klawisza skrótu do wyświetlenia lub ukrycia okna głównego: - - - - Use the following hotkey to translate a word from clipboard: - Używaj tego klawisza skrótu do przetłumaczenia słowa znajdującego się w schowku: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Te klawisze skrótu są globalne i działają w każdym kontekście każdego programu, o ile tylko program GoldenDict działa w tle. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Uwaga: prawdopodobnie w tym systemie działa wersja serwera XServer X.Org z uszkodzonym rozszerzeniem RECORD. Klawisze skrótu w programie GoldenDict prawdopodobnie nie będą funkcjonować. Należy to naprawić w samym serwerze. Zapoznaj się z następującym </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">opisem błędu</span></a><span style=" color:#ff0000;"> i jeśli chcesz, dopisz swój komentarz.</span></p></body></html> - - - - &Audio - &Dźwięk - - - - Pronunciation - Wymowa - - - - Auto-pronounce words in main window - Automatycznie wymawiaj słowa znajdujące się w oknie głównym - - - - Auto-pronounce words in scan popup - Automatycznie wymawiaj słowa znajdujące się w okienku wyskakującym - - - - Play audio files via FFmpeg(libav) and libao - Odtwarzaj pliki audio za pomocą FFmpeg(libav) i libao - - - - Use internal player - Używaj odtwarzacza wewnętrznego - - - - &Network - Si&eć - - - - Enable if you wish to use a proxy server -for all program's network requests. - Włącz, aby używać serwera proxy we wszystkich -żądaniach sieciowych programu. - - - - Use proxy server - Używaj serwera proxy - - - - Type: - Typ: - - - - Host: - Host: - - - - Port: - Port: - - - - User: - Użytkownik: - - - - Password: - Hasło: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Włączenie tej opcji powoduje, że program GoldenDict blokuje większość -reklam, nie zezwalając na wyświetlanie treści (obrazów, ramek), które -nie pochodzą z przeglądanej witryny. Wyłącz ją, jeśli jest przyczyną -niedziałania niektórych witryn. - - - - Disallow loading content from other sites (hides most advertisements) - Nie zezwalaj na wyświetlanie treści pochodzących z innych witryn (ukrywa większość reklam) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Włączenie tej opcji umożliwia wysłuchiwanie wymowy dźwięków ze słowników -internetowych działających w oparciu o wtyczkę Flash lub inne wtyczki internetowe. -Działanie tej opcji wymaga zainstalowania odpowiedniej wtyczki. - - - - Enable web plugins - Włącz wtyczki internetowe - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Niektóre witryny wykrywają program GoldenDict za pomocą nagłówków HTTP i blokują żądania. -Włącz tę opcję, aby obejść ten problem. - - - - Do not identify GoldenDict in HTTP headers - Nie identyfikuj programu GoldenDict w nagłówkach HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Włączenie tej opcji powoduje, że program GoldenDict -okresowo sprawdza dostępność nowej, zaktualizowanej -wersji. Jeśli nowa wersja jest dostępna do pobrania, -program informuje o tym użytkownika i zachęca go do -otwarcia strony pobierania. - - - - Check for new program releases periodically - Sprawdzaj okresowo dostępność nowej wersji programu - - - - ProgramTypeEditor - - - Audio - Dźwięk - - - - Plain Text - Zwykły tekst - - - - Html - Html - - - - Prefix Match - Zgodność przedrostków - - - - Unknown - Nieznane - - - - Programs::RunInstance - - - No program name was given. - Nie określono nazwy programu. - - - - The program has crashed. - Program uległ awarii. - - - - The program has returned exit code %1. - Program zwrócił kod wyjścia %1. - - - - ProgramsModel - - - Enabled - Włączone - - - - Type - Typ - - - - Name - Nazwa - - - - Command Line - Wiersz komend - - - - Icon - Ikona - - - - QObject - - - - Article loading error - Błąd ładowania artykułu - - - - - Article decoding error - Błąd dekodowania artykułu - - - - avformat_alloc_context() failed. - Wywołanie avformat_alloc_context() nie powiodło się. - - - - av_malloc() failed. - Wywołanie av_malloc() nie powiodło się. - - - - avio_alloc_context() failed. - Wywołanie avio_alloc_context() nie powiodło się. - - - - avformat_open_input() failed: %1. - Wywołanie avformat_open_input() nie powiodło się: %1. - - - - avformat_find_stream_info() failed: %1. - Wywołanie avformat_find_stream_info() nie powiodło się: %1. - - - - Could not find audio stream. - Nie można znaleźć strumienia audio. - - - - Codec [id: %1] not found. - Nie znaleziono kodeka [id: %1]. - - - - avcodec_open2() failed: %1. - Wywołanie avcodec_open2() nie powiodło się: %1. - - - - Cannot find usable audio output device. - Nie można znaleźć dostępnego do użycia wyjściowego urządzenia audio. - - - - Unsupported sample format. - Nieobsługiwany format próbki. - - - - ao_open_live() failed: - Wywołanie ao_open_live() nie powiodło się: - - - - No driver. - Brak sterownika. - - - - This driver is not a live output device. - Ten sterownik nie jest aktywnym urządzeniem wyjściowym. - - - - A valid option key has an invalid value. - Prawidłowy klucz opcji ma nieprawidłową wartość. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Nie można otworzyć urządzenia: %1, kanały: %2, szybkość: %3, bity: %4. - - - - Unknown error. - Nieznany błąd. - - - - avcodec_alloc_frame() failed. - Wywołanie avcodec_alloc_frame() nie powiodło się. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Przeszukiwanie/filtrowanie słowników (Ctrl+F) - - - - Quick Search - Szybkie wyszukiwanie - - - - Clear Search - Wyczyść wyszukiwanie - - - - ResourceToSaveHandler - - - - ERROR: %1 - BŁĄD: %1 - - - - Resource saving error: - Błąd zapisu zasobu: - - - - The referenced resource failed to download. - Nie powiodło się pobranie wskazywanego zasobu. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji dla Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji dla Katakana - - - - RussianTranslit - - - Russian Transliteration - Transliteracja rosyjska - - - - ScanPopup - - - Dialog - Okno dialogowe - - - word - słowo - - - List Matches (Alt+M) - Pokaż znalezione (Alt+M) - - - - - - - - ... - ... - - - - Back - Wstecz - - - - Forward - Dalej - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Wymowa słowa (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Wyślij słowo do okna głównego (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Wyświetla lub ukrywa pasek słowników - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Opcja ta umożliwia przypięcie okna na stałe do ekranu. Dzięki -temu można zmieniać jego wielkość i zarządzać nim w inny sposób. - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1– %2 - - - - SoundDirsModel - - - Path - Ścieżka - - - - Name - Nazwa - - - - Icon - Ikona - - - - Sources - - - Text to Speech - Tekst na mowę - - - - (not available in portable version) - (niedostępne w wersji przenośnej) - - - - - - Choose a directory - Wybierz katalog - - - - - - - - - Confirm removal - Potwierdzenie usunięcia - - - - - Remove directory <b>%1</b> from the list? - Czy usunąć katalog <b>%1</b> z listy? - - - - - - Remove site <b>%1</b> from the list? - Czy usunąć witrynę <b>%1</b> z listy? - - - - Remove program <b>%1</b> from the list? - Czy usunąć program <b>%1</b> z listy? - - - - Files - Pliki - - - - Paths to search for the dictionary files: - Ścieżka wyszukiwania plików słownika: - - - - - - - - - &Add... - &Dodaj... - - - - - - - - - &Remove - &Usuń - - - - Re&scan now - &Wczytaj ponownie - - - - Sound Dirs - Katalogi plików dźwiękowych - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Utwórz słowniki z plików dźwiękowych, dodając tutaj odpowiednie ścieżki: - - - - Morphology - Morfologia - - - - Path to a directory with Hunspell/Myspell dictionaries: - Ścieżka do katalogu ze słownikami Hunspell/Myspell: - - - - &Change... - &Zmień... - - - - Available morphology dictionaries: - Dostępne słowniki morfologiczne: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Każdy słownik morfologiczny stanowi osobny -pomocniczy słownik udostępniający formy -podstawowe słów na potrzeby wyszukiwania -oraz jako propozycje wyrazów podobnych -do błędnie napisanych. Aby móc korzystać -z takiego słownika, należy go dodać na końcu -właściwej grupy. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Witryny Wikipedii (MediaWiki): - - - - Websites - Witryny sieci Web - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Dowolne witryny. Ciąg znaków %GDWORD% zostaje zastąpiony wyszukiwanym słowem: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Można też użyć ciągu znaków %GD1251% dla słów w stronie kodowej CP1251 lub ciągu znaków %GDISO1% dla słów w stronie kodowej ISO 8859-1. - - - - Programs - Programy - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Wszystkie programy zewnętrzne. Ciąg znaków %GDWORD% zostaje zastąpiony wyszukiwanym słowem. To słowo zostaje także umieszczone w standardowym wejściu. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Rzeczywista wymowa z witryny <a href="http://www.forvo.com/">forvo.com</a>. Witryna ta umożliwia rejestrowanie i udostępnianie wzorów wymowy słów. Można z nich korzystać w programie GoldenDict. - - - - Enable pronunciations from Forvo - Włącz dostęp do wymowy w witrynie Forvo - - - - API Key: - Klucz API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Korzystanie z witryny Forvo wymaga obecnie klucza API. Pozostaw puste -pole, aby użyć klucza domyślnego, który w przyszłości może przestać być -dostępny, lub zarejestruj się w tej witrynie, aby uzyskać własny klucz API. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Uzyskaj własny klucz <a href="http://api.forvo.com/key/">tutaj</a> lub pozostaw puste pole, aby użyć klucza domyślnego. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Uzyskaj własny klucz <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">tutaj</span></a> lub pozostaw puste pole, aby użyć klucza domyślnego.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Można też użyć ciągu znaków %GD1251% dla słów w stronie kodowej CP1251, %GDISO1%...%GDISO16% odpowiednio dla ISO 8859-1...ISO 8859-16, -%GDBIG5% dla Big-5, %GDBIG5HKSCS% dla Big5-HKSCS, %GDGBK% dla GBK i GB18030, %GDSHIFTJIS% dla Shift-JIS. - - - - DICT servers - Serwery DICT - - - - DICT servers: - Serwery DICT: - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Dowolne programy zewnętrzne. Ciąg znaków %GDWORD% zostanie zastąpiony wyszukiwanym słowem. Przy braku tego ciągu znaków, słowo zostanie przesłane do standardowego wejścia. - - - - Language codes (comma-separated): - Kody języków (rozdzielone przecinkami): - - - - List of language codes you would like to have. Example: "en, ru". - Lista wybranych kodów języków. Na przykład: „en, ru, pl”. - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Pełna lista kodów języków jest dostępna <a href="http://www.forvo.com/languages-codes/">tutaj</a>. - - - - Transliteration - Transliteracja - - - - Russian transliteration - Transliteracja rosyjska - - - - Greek transliteration - Transliteracja grecka - - - - German transliteration - Transliteracja niemiecka - - - - Belarusian transliteration - Transliteracja białoruska - - - - Enables to use the Latin alphabet to write the Japanese language - Umożliwia pisanie w języku japońskim za pomocą alfabetu łacińskiego - - - - Japanese Romaji - Japońskie Rōmaji - - - - Systems: - Systemy: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Najczęściej używana metoda transkrypcji języka japońskiego -oparta na wymowie angielskiej - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Najbardziej regularny system, w którym istnieje wzajemnie jednoznaczna -odpowiedniość z systemem zapisu kana. Opisany przez standard ISO 3602. - -Systemu tego nie zaimplementowano jeszcze w programie GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - System bazujący na Nihon-shiki, ale zmodyfikowany na potrzeby -współczesnego standardowego języka japońskiego. -Opisany przez standard ISO 3602. - -Systemu tego nie zaimplementowano jeszcze w programie GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Zapisy sylabiczne: - - - - Hiragana Japanese syllabary - Japoński zapis sylabiczny Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Japoński zapis sylabiczny Katakana - - - - Katakana - Katakana - - - - StylesComboBox - - - None - Brak - - - - TextToSpeechSource - - - Selected voice engines: - Wybrane mechanizmy głosów: - - - - &Add - Dod&aj - - - - &Remove - &Usuń - - - - Preferences - Preferencje - - - - Volume: - Głośność: - - - - Rate: - Szybkość: - - - - Preview - Podgląd - - - - Available voice engines: - Dostępne mechanizmy głosów: - - - - Text to be previewed: - Tekst do podglądu - - - - Type text to be previewed here. - Wpisz tutaj tekst do podglądu. - - - - &Preview - &Podgląd - - - - No TTS voice available - Brak dostępnego głosu TTS - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Nie można znaleźć dostępnego głosu TTS.<br>Upewnij się, że na komputerze zainstalowano już przynajmniej jeden mechanizm TTS. - - - - Confirm removal - Potwierdzenie usunięcia - - - - Remove voice engine <b>%1</b> from the list? - Czy usunąć mechanizm głosu <b>%1</b> z listy? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Wpisz słowo lub frazę, aby przeszukać słowniki - - - - Drop-down - Rozwiń - - - - VoiceEnginesModel - - - Enabled - Włączone - - - - Name - Nazwa - - - - Id - Identyfikator - - - - Icon - Ikona - - - - WebSitesModel - - - Enabled - Włączone - - - - Name - Nazwa - - - - Address - Adres - - - - Icon - Ikona - - - - WordFinder - - - Failed to query some dictionaries. - Nie powiodło się przeszukanie niektórych słowników. - - - - WordList - - - WARNING: %1 - OSTRZEŻENIE: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/pt_BR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/pt_BR.ts deleted file mode 100644 index a65cd20208..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/pt_BR.ts +++ /dev/null @@ -1,4738 +0,0 @@ - - - - - About - - - About - Sobre - - - - GoldenDict dictionary lookup program, version - Dicionário Eletrônico GoldenDict, versão - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - Licença sob os termos da GNU GPLv3 ou posterior - - - - Credits: - Créditos: - - - - [Unknown] - [Desconhecido] - - - - Based on Qt %1 (%2, %3 bit) - Baseado no Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Expandir artigo - - - - Collapse article - Recolher artigo - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Não achei nenhuma definição ou tradução da palavra/expressão <b>%1</b> no grupo <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Não achei a palavra no grupo <b>%1</b>. - - - - Welcome! - Bem-vindo! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Bem vindo ao <b>GoldenDict</b>!</h3><p>Para começar a trabalhar com o programa, primeiro visite <b>Editar|Dicionários</b> para adicionar alguns caminhos de diretório, onde procuram os arquivos de dicionários, configurar vários sites da Wikipedia ou outras fontes, ajustar a ordem de dicionário ou criar grupos de dicionários.<p>E então você estará pronto para visualizar suas palavras! Você pode fazer isso nesta janela usando o painel à esquerda, ou você pode <a href="Trabalhando com pop-up">procurar palavras a partir de outras aplicações ativas</a>. <p>Para personalizar o programa, confira as preferências disponíveis no <b>Editar|Preferências</b>. Todas as configurações tem dicas, não deixe de lê-las, se você estiver em dúvida sobre qualquer coisa.<p>Se você precisar de mais ajuda, têm qualquer dúvida, sugestões ou apenas saber o que os outros pensam, você é bem-vindo ao programa de <a href="http://goldendict.org/forum/">forum</a>.<p>Confira o programa do <a href="http://goldendict.org/">website</a> para atualizações. <p>(c) 2008-2013 Konstantin Isakov. Licenciado sob GPLv3 ou posterior. - - - - Working with popup - Trabalhando com janelas de definições/tradução semiautomáticas - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Trabalhando com janelas de definições/tradução semiautomáticas</h3>Para fazer consultas/tradução de palavras da janela de outros aplicativos abertos, primeiramente é necessário habilitar a função de janelas secundárias seguindo estes passos a partir da janela principal:<p><OL><LI>Clique em <b>Editar|Configurar</b>; -<LI>Clique na guia <b><i>"Janela de Definições Semiautomáticas"</b></i>;<LI>Marque a opção <i>"Ativar funcionalidades de janelas secundárias de definições semiautomáticas"</i>;<LI>Em seguida, clique em "OK" para salvar as configurações.</OL><p>Com esta opção ativada, você pode marcar ou desmarcar a exibição das janelas secundárias quando quiser. Para fazê-lo, há duas formas:<UL><LI>Na janela principal, clique no botão de <b>Definições Semiautomáticas</b>, cujo botão assemelha-se a uma varinha;<LI>No ícone do programa exibido na Área de Notificação (perto do relógio), clique com o botão direito do mouse e marque a opção <b><i>Definições Semiautomáticas</b></i>.</UL><p>Uma vez habilitada esta função, qualquer palavra ou expressão selecionada terá suas definições exibidas (se a palavra/expressão da consulta existir em algum dos dicionários especificados na configuração) imediatamente nos resultados da consulta. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Basta pairar o ponteiro do mouse sobre a palavra/expressão exibida em uma janela qualquer e que desejar consultar que será exibida uma janela com as definições/tradução. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Com isso, você pode consultar ou traduzir palavra/expressão da janela de qualquer programa que seja selecionável ou em que se possa clicar duplamente. Alás, um clique duplo do mouse, por exemplo, seleciona uma palavra, ao passo que um clique triplo, uma frase inteira. - - - - (untitled) - (sem título) - - - - (picture) - (imagem) - - - - ArticleRequest - - - Expand article - Expandir artigo - - - - From - Resultados de - - - - Collapse article - Recolher artigo - - - - Query error: %1 - Erro de Consulta: %1 - - - - Close words: - Palavras semelhantes: - - - - Compound expressions: - Termos compostos: - - - - Individual words: - Palavras independentes: - - - - ArticleView - - - Form - Formulário - - - - about:blank - sobre:branco - - - - x - x - - - - Find: - Localizar: - - - - - &Previous - A&nterior - - - - - &Next - &Próxima - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Diferenciar maiúsculas/minúsculas - - - - Highlight &all - Destacar &tudo - - - - Resource - Fonte de Dados - - - - Audio - Áudio - - - - TTS Voice - Voz TTS - - - - Picture - Imagem - - - - Video - Vídeo - - - - Video: %1 - Vídeo: %1 - - - - Definition from dictionary "%1": %2 - Definição do dicionário "%1": %2 - - - - Definition: %1 - Definição: %1 - - - - - The referenced resource doesn't exist. - A fonte de dados procurada não existe. - - - - The referenced audio program doesn't exist. - O programa de áudio especificado não existe. - - - - - ERROR: %1 - Erro: %1 - - - - Save sound - Salvar som - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Arquivos de som (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Todos os arquivos (*.*) - - - - Save image - Salvar imagem - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Arquivos de imagem (*.bmp *.jpg *.png *.tif);;Todos os arquivos (*.*) - - - - &Open Link - Abrir Ligação (&O) - - - - Open Link in New &Tab - Abrir Ligação em Nova Guia (&G) - - - - Open Link in &External Browser - Abrir Ligação em &Navegador da Web Externo - - - - Save &image... - Salvar &imagem... - - - - Save s&ound... - Salvar S&om... - - - - &Look up "%1" - &Procurar "%1" - - - - Look up "%1" in &New Tab - Exibir resultado de "%1" em &nova guia - - - - Send "%1" to input line - Enviar "%1" para o campo - - - - - &Add "%1" to history - &Adicionar "%1" ao histórico - - - - Look up "%1" in %2 - Procurar «%1» em %2 - - - - Look up "%1" in %2 in &New Tab - Exibir o resultado da consulta de "%1" no %2 em &nova aba - - - - WARNING: FFmpeg Audio Player: %1 - AVISO: Player de Áudio FFmpeg: %1 - - - - Failed to run a player to play sound file: %1 - Não foi possível executar o reprodutor de áudio: %1 - - - - Failed to create temporary file. - Não foi possível criar o arquivo temporário. - - - - Failed to auto-open resource file, try opening manually: %1. - Não foi possível abrir a fonte de dados automaticamente. Tente abri-la manualmente: %1. - - - - WARNING: %1 - ATENÇÃO: %1 - - - - Select Current Article - Selecionar o Artigo Atual - - - - Copy as text - Copiar como texto - - - - Inspect - Inspecionar - - - - The referenced resource failed to download. - Não foi possível efetuar o download do arquivo de fontes de dados. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Bielorrusso transliteração do latim para o cirílico (ortografia clássica) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Bielorrusso transliteração do latim para o cirílico (ortografia escolar) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Bielorrusso transliteração (atenua as diferenças -entre clássico e ortografia escolar em cirílico) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Senha: - - - - DictGroupWidget - - - Form - Formulário - - - - Group icon: - Ícone do grupo: - - - - Shortcut: - Atalho: - - - - None - Nenhum - - - - From file... - Do arquivo... - - - - Choose a file to use as group icon - Escolha um arquivo para usar como ícone do grupo - - - - Images - Imagens - - - - All files - Todos os arquivos - - - - Error - Erro - - - - Can't read the specified image file. - Não foi possível ler o arquivo de imagem especificado. - - - - DictGroupsWidget - - - - - - Dictionaries: - Dicionários: - - - - Confirmation - Confirmação - - - - Are you sure you want to generate a set of groups based on language pairs? - Quer mesmo criar um conjunto de grupos baseado em pares de idiomas? - - - - Unassigned - Não atribuído - - - - Combine groups by source language to "%1->" - Combinar grupos por idioma de origem para "%1->" - - - - Combine groups by target language to "->%1" - Combinar grupos da língua-alvo para "->%1" - - - - Make two-side translate group "%1-%2-%1" - Faça o grupo traduzir os dois lados "%1-%2-%1" - - - - - Combine groups with "%1" - Combinar grupos com "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Arquivos de texto (*.txt);;Todos os arquivos (*.*) - - - - Export headwords... - - - - - Cancel - Cancelar - - - - DictInfo - - - Total articles: - Total de artigos: - - - - Translates from: - Traduz de: - - - - Total words: - Total de palavras: - - - - Translates to: - Traduz para: - - - - Open folder - Abrir pasta - - - - Edit dictionary - Editar dicionário - - - - Files comprising this dictionary: - Arquivos pertencentes a este dicionário: - - - - Description: - Descrição: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Editar o dicionário via comando: -%1 - - - - DictListModel - - - %1 entries - %1 verbetes - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - - - - - Name - Nome - - - - Address - Endereço - - - - Databases - - - - - Strategies - - - - - Icon - Ícone - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - - &Dictionary Bar - &Barra de Dicionário - - - - Extended menu with all dictionaries... - Estender menu com todos os dicionários... - - - - Edit this group - Editar este grupo - - - - Dictionary info - Informs. do Dicionário - - - - Dictionary headwords - - - - - Open dictionary folder - Abrir pasta de dicionário - - - - Edit dictionary - Editar dicionário - - - - EditDictionaries - - - Dictionaries - Dicionários - - - - &Sources - &Fontes - - - - - &Dictionaries - &Dicionários - - - - - &Groups - &Grupos - - - - Sources changed - Fontes modificadas - - - - Some sources were changed. Would you like to accept the changes? - Algumas fontes de dados foram modificadas. Devo aceitar as modificações? - - - - Accept - Aceitar - - - - Cancel - Cancelar - - - - ExternalViewer - - - the viewer program name is empty - falta especificar o nome do programa de visualização - - - - FTS::FtsIndexing - - None - Nenhum - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Nenhum - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Nenhum - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Erro de análise sintática de XML: %1 al %2,%3 - - - - Added %1 - Adicionado %1 - - - - by - por - - - - Male - Masculino - - - - Female - Feminino - - - - from - de - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Clique em Editar|Dicionários|Fontes|Forvo e aplique a própria chave API para fazer este erro desaparecer. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Cancelar - - - - Help - - - - - GermanTranslit - - - German Transliteration - Transliteração do Alemão - - - - GreekTranslit - - - Greek Transliteration - Transliteração do Grego - - - - GroupComboBox - - - Choose a Group (Alt+G) - Escolha um Grupo (Alt+G) - - - - GroupSelectorWidget - - - Form - Formulário - - - - Look in - Procurar em - - - - Groups - - - Dictionaries available: - Dicionários disponíveis: - - - - Add selected dictionaries to group (Ins) - Adiciona os dicionários selecionados ao grupo (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Remove do grupo os dicionários selecionados (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Grupos: - - - - Tab 2 - Guia 2 - - - - Create new dictionary group - Cria um novo grupo de dicionários - - - - &Add group - &Adicionar - - - - Create language-based groups - Cria grupos de dicionários com base nos tipos de idioma - - - - Auto groups - Agrupar automaticamente - - - - Rename current dictionary group - Renomeia o grupo de dicionários selecionado - - - - Re&name group - &Renomear - - - - Remove current dictionary group - Remove o grupo de dicionários atual - - - - &Remove group - R&emover - - - - Remove all dictionary groups - Remover todos os grupos de dicionários - - - - - Remove all groups - Re&mover todos - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Arraste e solte os &dicionários nos grupos, organize-os e reordene-os com o ponteiro do mouse. - - - - Group tabs - - - - - Open groups list - - - - - Add group - Adicionar grupo - - - - Give a name for the new group: - Digite o nome do grupo que deseja criar: - - - - Rename group - Renomear grupo - - - - Give a new name for the group: - Digite o novo nome do grupo: - - - - Remove group - Remover grupo - - - - Are you sure you want to remove the group <b>%1</b>? - Tem certeza de que quer remover o grupo <b>%1</b>? - - - - Are you sure you want to remove all the groups? - Tem certeza de que quer remover todos os grupos? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - - - - - Forward - - - - - Zoom In - Aumentar as letras das definições - - - - Zoom Out - Diminuir as letras das definições - - - - Normal Size - Restaurar as letras das definições - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Remover Selecionado - - - - Copy Selected - Copiar Selecionado - - - - History: - Histórico: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Tamanho do histórico: %1 entradas de saída de no máximo %2 - - - - Hunspell - - - Spelling suggestions: - Sugestões ortográficas: - - - - %1 Morphology - Ortografia de %1 - - - - HunspellDictsModel - - - Enabled - Habilitado - - - - Name - Nome - - - - Initializing - - - GoldenDict - Initializing - GoldenDict - Processando - - - - - Please wait while indexing dictionary - Favor aguardar enquanto os dicionários são indexados - - - - Dictionary Name - Nome do Dicionário - - - - Please wait... - Favor aguardar... - - - - Language - - - Afar - Afar - - - - Abkhazian - Abcaso - - - - Avestan - Avestico - - - - Afrikaans - Africâner - - - - Akan - Akan - - - - Amharic - Amarico - - - - Aragonese - Aragonês - - - - Arabic - Árabe - - - - Assamese - Assamese - - - - Avaric - Avaro - - - - Aymara - Aymara - - - - Azerbaijani - Azebaijano - - - - Bashkir - Bashkir - - - - Belarusian - Bielorusso - - - - Bulgarian - Búlgaro - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengáli - - - - Tibetan - Tibetano - - - - Breton - Bretone - - - - Bosnian - Bósnio - - - - Catalan - Catalão - - - - Chechen - Checheno - - - - Chamorro - Chamorro - - - - Corsican - Corso - - - - Cree - Cree - - - - Czech - Checo - - - - Church Slavic - Eslavo - - - - Chuvash - Ciuvascio - - - - Welsh - Galês - - - - Danish - Dinamarquês - - - - German - Alemão - - - - Divehi - Maldiviano - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Grego - - - - English - Inglês - - - - Esperanto - Esperanto - - - - Spanish - Espanhol - - - - Estonian - Estoniano - - - - Basque - Basco - - - - Persian - Farsì - - - - Fulah - Fula - - - - Finnish - Finlandês - - - - Fijian - Fijiano - - - - Faroese - Faroese - - - - French - Francês - - - - Western Frisian - Frisone occidentale - - - - Irish - Irlandês - - - - Scottish Gaelic - Galês escocês - - - - Galician - Galício - - - - Guarani - Guaraní - - - - Gujarati - Gujarati - - - - Manx - Mannese - - - - Hausa - Hausa - - - - Hebrew - Hebraico - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Croata - - - - Haitian - Creolo haitiano - - - - Hungarian - Húngaro - - - - Armenian - Armeno - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonésio - - - - Interlingue - Interlingua - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Inupiaq - - - - Ido - Ido - - - - Icelandic - Islandês - - - - Italian - Italiano - - - - Inuktitut - Inuktitut - - - - Japanese - Japonês - - - - Javanese - Javanês - - - - Georgian - Georgiano - - - - Kongo - Monokutuba - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kwanyama - - - - Kazakh - Cazaco - - - - Kalaallisut - Groenlandese - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Coreano - - - - Kanuri - Kanuri - - - - Kashmiri - Kashmiri - - - - Kurdish - Curdo - - - - Komi - Komi - - - - Cornish - Cornico - - - - Kirghiz - Chirghiso - - - - Latin - Latino - - - - Luxembourgish - Luxemburguês - - - - Ganda - Ganda - - - - Limburgish - Limburghese - - - - Lingala - Lingala - - - - Lao - Laotiano - - - - Lithuanian - Lituano - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Lituano - - - - Malagasy - Malgaxe - - - - Marshallese - Marshallese - - - - Maori - Maori - - - - Macedonian - Macedônio - - - - Malayalam - Malaio - - - - Mongolian - Mongol - - - - Marathi - Marathi - - - - Malay - Malaio - - - - Maltese - Maltês - - - - Burmese - Birmanês - - - - Nauru - Nauruano - - - - Norwegian Bokmal - Norvegese Bokmål - - - - North Ndebele - Ndebele del nord - - - - Nepali - Nepalese - - - - Ndonga - Ndonga - - - - Dutch - Holandês - - - - Norwegian Nynorsk - Norueguês - - - - Norwegian - Norueguês - - - - South Ndebele - Ndebele do Sul - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitano - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Osseto - - - - Panjabi - Panjabi - - - - Pali - Pali - - - - Polish - Polonês - - - - Pashto - Pashtu - - - - Portuguese - Português brasileiro - - - - Quechua - Quechua - - - - Raeto-Romance - Reto-Romancio - - - - Kirundi - Kirundi - - - - Romanian - Romeno - - - - Russian - Russo - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sânscrito - - - - Sardinian - Sardo - - - - Sindhi - Sindhi - - - - Northern Sami - Sami del nord - - - - Sango - Sango - - - - Serbo-Croatian - Servo-Croata - - - - Sinhala - Singalese - - - - Slovak - Slovacco - - - - Slovenian - Esloveno - - - - Samoan - Samoano - - - - Shona - Shona - - - - Somali - Somalo - - - - Albanian - Albanês - - - - Serbian - Sérvio - - - - Swati - Swati - - - - Southern Sotho - Sesotho - - - - Sundanese - Sudanês - - - - Swedish - Sueco - - - - Swahili - Swahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tagico - - - - Thai - Tailandês - - - - Tigrinya - Tigrino - - - - Turkmen - Turcomeno - - - - Tagalog - Tagalogue - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Turco - - - - Tsonga - Tsonga - - - - Tatar - Tataro - - - - Twi - Twi - - - - Tahitian - Tahitiano - - - - Uighur - Uigura - - - - Ukrainian - Ucraniano - - - - Urdu - Urdu - - - - Uzbek - Uzbeco - - - - Venda - Venda - - - - Vietnamese - Vietnamita - - - - Volapuk - Volapuk - - - - Walloon - Vallone - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Iídiche - - - - Yoruba - Iorubá - - - - Zhuang - Zhuang - - - - Chinese - Chinês - - - - Zulu - Zulu - - - - Lojban - Lojban - - - - Traditional Chinese - Chinês tradicional - - - - Simplified Chinese - Chinês simplificado - - - - Other - Outro - - - - Other Simplified Chinese dialects - Outros dialetos chineses simplificados - - - - Other Traditional Chinese dialects - Outro dialetos chineses tradicionais - - - - Other Eastern-European languages - Outros idiomas do leste europeu - - - - Other Western-European languages - Outros idiomas da Europa ocidental - - - - Other Russian languages - Outros idiomas russos - - - - Other Japanese languages - Outros idiomas japoneses - - - - Other Baltic languages - Outros idiomas bálticos - - - - Other Greek languages - Outros idiomas gregos - - - - Other Korean dialects - Outros idiomas coreanos - - - - Other Turkish dialects - Outros dialetos turcos - - - - Other Thai dialects - Outros dialetos tailandeses - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Erro ao carregar dicionários - - - - Main - - - Error in configuration file. Continue with default settings? - Erro no arquivo de configuração. Continuar com as configurações padrão? - - - - MainWindow - - - - Welcome! - Bem-vindo! - - - - &File - &Arquivo - - - - &Edit - &Editar - - - - &Help - Aj&uda - - - - &View - Exi&bir - - - - &Zoom - &Zoom - - - - H&istory - His&tórico - - - - Search - - - - - &Search Pane - &Painel de Pesquisa - - - - &Results Navigation Pane - &Painel de Navegação Resultados - - - - &History Pane - & Painel Histórico - - - - &Dictionaries... - &Dicionários... - - - - F3 - F3 - - - - &Preferences... - &Configurar... - - - - F4 - F4 - - - - &Homepage - &Site do programa - - - - &About - S&obre - - - - About GoldenDict - Sobre o GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Fechar o GoldenDict - - - - Quit from application - Fechar o programa - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Fórum - - - - &Close To Tray - &Pôr na Área de Notificação - - - - Minimizes the window to tray - Minimiza a janela como ícone na Área de Notificação - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Salvar verbete - - - - Save Article - Salva o verbete atual - - - - F2 - F2 - - - - &Print - &Imprimir - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - &Configurar Impressão - - - - Print Pre&view - Pré-&visualizar Impressão - - - - &Rescan Files - &Re-escanear Arquivos - - - - &New Tab - &Nova Aba - - - - &Always on Top - &Sempre no Topo - - - - Always on Top - Sempre no Topo - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Botão Menu - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Limpar - - - - New Tab - Nova guia - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Pasta de &configuração - - - - - &Show - E&xibir - - - - Ctrl+H - Ctrl+H - - - - &Export - &Exportar - - - - &Import - &Importar - - - - &Menubar - Barra de &Menus - - - - - Look up in: - Procurar em: - - - - Found in Dictionaries: - Achado nos dicionários: - - - - Back - Anterior - - - - Forward - Seguinte - - - - Scan Popup - Definição Semiautomática - - - - Pronounce Word (Alt+S) - Pronuncia a palavra da consulta atual (Alt+S) - - - - Zoom In - Aumentar as letras das definições - - - - Zoom Out - Diminuir as letras das definições - - - - Normal Size - Restaurar as letras das definições - - - - Words Zoom In - Aumentar as letras dos verbetes - - - - Words Zoom Out - Diminuir as letras dos verbetes - - - - Words Normal Size - Restaurar as letras dos verbetes - - - - Show &Main Window - &Mostrar a janela principal - - - - Close current tab - Fechar a guia atual - - - - Close all tabs - Fechar todas as guias - - - - Close all tabs except current - Fechar todas as guias com exceção da atual - - - - Loading... - Carregando... - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - %1 dictionaries, %2 articles, %3 words - %1 dicionário, %2 verbetes, %3 palavras - - - - Look up: - Procurar: - - - - All - Todos os Dicionários - - - - Opened tabs - Guias abertas - - - - Show Names in Dictionary &Bar - Mostrar Nomes na &Barra de Dicionário - - - - Show Small Icons in &Toolbars - Exibir Ícones Pequenos na &Barra de Tarefas - - - - &Navigation - &Navegação - - - - Open Tabs List - Abrir a lista de guias - - - - (untitled) - (sem título) - - - - %1 - %2 - %1 - %2 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Não foi possível acionar o mecanismo de monitoramento por atalho.<br>Veja se seu XServer está com a extensão RECORD ativada. - - - - New Release Available - Nova Versão Disponível - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - A versão <b>%1</b> do GoldenDict está disponível para download. - - - - Download - Baixar - - - - Skip This Release - Ignorar esta versão - - - - - Accessibility API is not enabled - Acessibilidade a API não está habilitada - - - - You have chosen to hide a menubar. Use %1 to show it back. - Você optou por ocultar a barra de menus. Use %1 para exibi-la de novo. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Configuração de Página - - - - No printer is available. Please install one first. - Não achei nenhuma impressora. Favor instalar uma. - - - - Print Article - Imprimir Verbete - - - - Article, Complete (*.html) - Artigo, Completo (*.html) - - - - Article, HTML Only (*.html) - Artigo, Apenas HTML (*.html) - - - - Save Article As - Salvar Verbete como - - - - Error - Erro! - - - - Can't save article: %1 - Não foi possível salvar o verbete: %1 - - - - Saving article... - Salvando artigo... - - - - The main window is set to be always on top. - A janela principal está definida para estar sempre no topo. - - - - &Hide - &Ocultar - - - - Export history to file - Exportar o histórico - - - - - Text files (*.txt);;All files (*.*) - Arquivos de texto (*.txt);;Todos os arquivos (*.*) - - - - History export complete - Feita a exportação do histórico - - - - Export error: - Erro de exportação: - - - - Import history from file - Importar histórico de arquivo - - - - Import error: invalid data in file - Erro ao tentar importar: dados inválidos no arquivo. - - - - History import complete - Feita a importação do histórico. - - - - Import error: - Erro de importação: - - - - Dictionary info - Inform. do Dicionário - - - - Dictionary headwords - - - - - Open dictionary folder - Abrir pasta de dicionário - - - - Edit dictionary - Editar dicionário - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Arquivo dicionário foi adulterado ou corrompido - - - - Failed loading article from %1, reason: %2 - Falha ao carregar artigo de %1, motivo: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Erro de análise sintática de XML: %1 em %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Erro de análise sintática de XML: %1 em %2,%3 - - - - MediaWikisModel - - - Enabled - Habilitado - - - - Name - Nome - - - - Address - Endereço - - - - Icon - Ícone - - - - OrderAndProps - - - Form - Formulário - - - - Dictionary order: - Ordem dos dicionários: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Dicionários desativados: - - - - Dictionary information - Informações sobre dicionários - - - - Name: - Nome: - - - - Total articles: - Total de verbetes: - - - - Total words: - Total de palavras: - - - - Translates from: - Traduz do: - - - - Translates to: - Para o: - - - - Description: - Descrição: - - - - Files comprising this dictionary: - Arquivos deste dicionário: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Para ordenar os dicionários, arraste-os como desejar. -Se quiser desativar dicionários, arraste-os para o grupo de desativados. - - - - Sort by name - Organizar por nome - - - - Sort by languages - Organizar por idiomas - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Caminho - - - - Recursive - Buscar em subpastas - - - - Preferences - - - Preferences - Configuração - - - - &Interface - &Interface - - - - Tabbed browsing - Navegação por guias - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalmente, ao se abrir uma nova guia, o programa a exibe imediatamente. -Porém, se está opção for habilitada, novas guias serão abertas sem que o -programa as exiba nas frente das outras automaticamente. - - - - Open new tabs in background - Abrir novas guias em segundo plano - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Se habilitada esta opção, as novas guias abertas -serão posicionadas ao lado da guia ativa atual. -Do contrário, serão enfileiradas ao lado da -última. - - - - Open new tabs after the current one - Abrir novas guias após a atual - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Habilite esta opção se não quiser exibir a guia principal -quando apenas uma delas estiver aberta. - - - - Hide single tab - Ocultar guia única - - - - Ctrl-Tab navigates tabs in MRU order - Usar Ctrl-Tab para navegar pelas guias de acordo com as mais recentes - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Se habilitada esta opção, o programa será exibido -na Área de Notificação como ícone, por meio do qual -você poderá restaurar a janela principal e executar -outros comandos. - - - - Enable system tray icon - Habilitar a exibição do GoldenDict como ícone na Área de Notificação - - - - With this on, the application starts directly to system tray without showing -its main window. - Se esta opção for habilitada, o programa será posto -na Área de Notificação ao ser executado, em vez de -exibir sua janela principal. - - - - - Start to system tray - Ao executar o GoldenDict, pô-lo na Área de Notificação - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Com esta opção habilitada, ao se fechar a janela principal do programa, -ela será exibida como ícone na Área de Notificação, em vez de o programa -ser fechado. - - - - Close to system tray - Pôr o GoldenDict na Área de Notificação ao fechá-lo - - - - Startup - Inicialização - - - - Automatically starts GoldenDict after operation system bootup. - Abre o GoldenDict automaticamente com o Windows (como ícone na Área de Notificação). - - - - Start with system - Abrir o GoldenDict com o Windows - - - - Interface language: - Idioma da interface: - - - - Display style: - Capa da interface: - - - - Double-click translates the word clicked - Traduzir palavra/expressão ou exibir definições com um clique duplo do mouse - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normalmente, ao se premer a tecla ESC a seleção é transferida para o campo de tradução/ -pesquisa. Com isto, porém, a janela principal será ocultada. - - - - ESC key hides main window - Usar a tecla ESC para ocultar a janela principal - - - - Turn this option on if you want to select words by single mouse click - Habilite esta opção se quiser selecionar palavras com um único clique do mouse. - - - - Select word by single click - Permitir seleção de palavra com clique único - - - - Add-on style: - Tipo de add-on: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Ajustar este valor para evitar menus de contexto enormes. - - - - Context menu dictionaries limit: - Limite de dicionários no menu de contexto: - - - - &Scan Popup - &Janela de Definições/Tradução Semiautomáticas - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Se habilitada esta opção, será exibida uma janela secundária de definições/ -tradução toda vez que você pairar o ponteiro do mouse sobre uma palavra de -alguma janela (Windows) ou selecioná-la (Linux). Mas você pode habilitar/ -desabilitar este comando, tanto na janela principal, como pelo ícone do -programa na Área de Notificação. - - - - Enable scan popup functionality - Habilitar funcionalidades de janela de definições/tradução semiautomáticas - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Permite especificar se a janela secundária de definições/tradução semiautomáticas deve ficar ativa por padrão. Se habilitada esta opção, o programa será sempre executado com a janela secundária ativada. - - - - Start with scan popup turned on - Executar o GoldenDict com a janela de definições/tradução semiautomáticas habilitada - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Se habilitada esta opção, a janela de definições/tradução só aparecerá se todas as -teclas do atalho estiverem premidas quando a seleção de palavra mudar. - - - - Only show popup when all selected keys are kept pressed: - Só exibir a janela de definições/tradução semiautomática se o usuário premer as teclas escolhidas abaixo: - - - - Left Ctrl only - Ctrl esquerda apenas - - - - Left Ctrl - Ctrl esquerda - - - - Right Shift only - Shift direita apenas - - - - Right Shift - Shift direita - - - - Alt key - Tecla Alt - - - - Alt - Alt - - - - Ctrl key - Tecla Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Alt esquerda apenas - - - - Left Alt - Alt esquerda - - - - Shift key - Tecla Shift - - - - Shift - Shift - - - - Right Alt only - Alt direita apenas - - - - Right Alt - Alt direita - - - - Right Ctrl only - Ctrl direita apenas - - - - Right Ctrl - Ctrl direita - - - - Left Shift only - Shift esquerda apenas - - - - Left Shift - Shift esquerda - - - - Windows key or Meta key - Tecla Windows ou Tecla Meta - - - - Win/Meta - Windows/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalmente, para ativar uma janela de consulta/tradução,é necessário manter premidas -as teclas de atalho enquanto se seleciona uma palavra. Se habilitada esta opção, as -teclas de atalho podem ser premidas também pouco depois da seleção da palavra/expressão. - - - - Keys may also be pressed afterwards, within - Permitir que as teclas sejam premidas depois também, após... - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Para evitar acionamentos de atalhos de teclado falsos, o status das -teclas é verificado só depois de feita a seleção de palavra/expressão -dentro do limite de tempo especificado aqui. - - - - secs - segundos - - - - Send translated word to main window instead of to show it in popup window - Envia a palavra traduzida/consultada para a janela principal, -em vez de exibi-la numa janela secundária (popup). - - - - Send translated word to main window - Enviar a palavra traduzida/consultada para a janela principal - - - - Hotkeys - Atalhos de Teclado - - - - Use the following hotkey to show or hide the main window: - Usar o seguinte atalho de teclado para mostrar/ocultar a janela principal: - - - - Use the following hotkey to translate a word from clipboard: - Usar o seguinte atalho de teclado para consultar nos dicionários ou traduzir texto da Área de Transferência: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Os atalhos de teclado são globais e funcionam a partir de qualquer programa, -em qualquer situação ou contexto, desde que o GoldenDict esteja em execução. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Nota: Parece que você está executando uma versão do X.Org XServer com a extensão RECORD quebrada. Os atalhos de teclado talvez não funcionem no GoldenDict. Isso deve ser consertado no próprio servidor. Veja a documentação no site: </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">sugli errori </span></a><span style=" color:#ff0000;"> e deixe um comentário lá, se quiser.</span></p></body></html> - - - - &Audio - &Áudio - - - - Pronunciation - Pronúncia - - - - Auto-pronounce words in main window - Pronunciar palavras na janela principal automaticamente - - - - Auto-pronounce words in scan popup - Pronunciar automaticamente palavras da janela de definições/tradução semiautomáticas - - - - Playback - Reprodução - - - - Play audio files via FFmpeg(libav) and libao - Reproduzir arquivos de áudio via FFmpeg(libav) e libao - - - - Use internal player - Usar player interno - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Selecione essa opção para automaticamente recolher grandes artigos - - - - Collapse articles more than - Recolher artigos mais de - - - - Articles longer than this size will be collapsed - Artigos mais longos que esse tamanho vai ser recolhido - - - - symbols - símbolos - - - - Use any external program to play audio files - Usa um aplicativo externo para reproduzir arquivos de áudio - - - - Use external program: - Usar programa externo: - - - - &Network - &Rede - - - - Enable if you wish to use a proxy server -for all program's network requests. - Habilite esta opção para usar um servidor proxy -para todos os acessos à rede pelo programa. - - - - Use proxy server - Usar servidor proxy - - - - Type: - Tipo: - - - - Host: - Servidor: - - - - Port: - Porta: - - - - User: - Usuário: - - - - Password: - Senha: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Se habilitada esta opção, o GoldenDict bloqueará a maioria das propagadas impedindo a -transferência de conteúdo para seu PC (de imagens, quadros de HTML etc.) originários do -site que estiver visitando. Se alguns sites deixarem de funcionar, desative esta opção -para ver se o problema é solucionado. - - - - Disallow loading content from other sites (hides most advertisements) - Não permitir o carregamento de conteúdo de outros sites (oculta a maioria das propagandas) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Se você habilitar esta opção, poderá ouvir pronúncias de dicionários online que usam -Flash ou outros plugins da web. -O plugin precisa estar instalado em seu sistema para isto funcionar. - - - - Enable web plugins - Habilitar plugins da web - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Alguns sites detectam GoldenDick via cabeçalhos HTTP e bloqueiam as solicitações. -Ative essa opção para solucionar o problema. - - - - Do not identify GoldenDict in HTTP headers - Não identificar GoldenDict nos cabeçalhos HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Se habilitada esta opção, o programa procura atualizações periodicamente -no servidor do GoldenDict. Se houver atualizações, ele informa ao usuário -e pergunta se ele deseja visitar a página de download. - - - - Check for new program releases periodically - Procurar atualizações do programa periodicamente - - - - Ad&vanced - A&vançada - - - - ScanPopup extra technologies - Tecnologias exibição de definições/tradução semiautomáticas extras - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Se marcada, o programa tenta usar a tecnologia IAccessibleEx para consultar/traduzir a -palavra sob o ponteiro. Esta tecnologia só funciona com alguns programas que a aceitam -(por ex.: o Internet Explorer 9). -Não é necessário habilitar esta opção se você não usa programas desse tipo. - - - - Use &IAccessibleEx - Usar &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Se marcada, o programa tenta usar a tecnologia UI Automation para consultar/traduzir a -palavra sob o ponteiro. Esta tecnologia só funciona com alguns programas que a aceitam. -Não é necessário habilitar esta opção se você não usa esses tipos de programa. - - - - Use &UIAutomation - Usar &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Se marcada, o programa tenta usar um comando especial do GoldenDict para consultar/traduzir -palavra sob o ponteiro. Esta tecnologia só funciona com alguns programas que a aceitam. -Não é necessário habilitar esta opção se você não usa esses tipos de programas. - - - - Use &GoldenDict message - Usar o comando especial de consulta do &GoldenDict - - - - History - Histórico - - - - Turn this option on to store history of the translated words - Habilite esta opção se quiser gravar o histórico das palavras traduzidas/pesquisadas. - - - - Store &history - Gravar o &histórico - - - - Specify the maximum number of entries to keep in history. - Especifique o número máximo de entradas para manter no histórico. - - - - Maximum history size: - Tamanho máximo do histórico: - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervalo ao salvar o histórico. Se definido histórico como 0, será salvo apenas durante a saída. - - - - Save every - Salvar tudo - - - - minutes - minutos - - - - Articles - Artigos - - - - Turn this option on to always expand optional parts of articles - Habilite esta opção se quise expandir sempre partes opcionais de artigos. - - - - Expand optional &parts - E&xpandir partes opcionais - - - - System default - Padrão do sistema - - - - - Default - Padrão - - - - Modern - Moderno - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - - Changing Language - Modificando Idioma - - - - Restart the program to apply the language change. - Reinicie o programa para aplicar a mudança de idioma. - - - - ProgramTypeEditor - - - Audio - Áudio - - - - Plain Text - Texto simples - - - - Html - Html - - - - Prefix Match - Correspondência de prefixo - - - - Unknown - Desconhecido - - - - Programs::RunInstance - - - No program name was given. - Nenhum nome de programa foi especificado. - - - - The program has crashed. - O programa travou. - - - - The program has returned exit code %1. - O programa retornou o código de fechamento %1. - - - - ProgramsModel - - - Enabled - Habilitada - - - - Type - Tipo - - - - Name - Nome - - - - Command Line - Linha de comando - - - - Icon - Ícone - - - - QObject - - - - Article loading error - Erro ao carregar Artigo - - - - - Article decoding error - Erro ao decodificar Artigo - - - - avformat_alloc_context() failed. - avformat_alloc_context() falhou. - - - - av_malloc() failed. - av_malloc() falhou. - - - - avio_alloc_context() failed. - avio_alloc_context() falhou. - - - - avformat_open_input() failed: %1. - avformat_open_input() falhou: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() falhou: %1. - - - - Could not find audio stream. - Não foi possível encontrar o fluxo de áudio. - - - - Codec [id: %1] not found. - Codec [id: %1] não encontrado. - - - - avcodec_open2() failed: %1. - avcodec_open2() falhou: %1. - - - - Cannot find usable audio output device. - Não foi possível encontrar o dispositivo de saída de áudio utilizável. - - - - Unsupported sample format. - Formato de amostra não suportado. - - - - ao_open_live() failed: - ao_open_live() falhou: - - - - No driver. - Nenhum driver. - - - - This driver is not a live output device. - Este driver não é um dispositivo de saída ao vivo. - - - - A valid option key has an invalid value. - Uma tecla de opção válida teve um valor inválido . - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Não é possível abrir o dispositivo: %1, canais: %2, taxa: %3, bits: %4. - - - - Unknown error. - Erro desconhecido. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() falha. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Dicionário pesquisar/filtro (Ctrl+F) - - - - Quick Search - Pesquisa Rápida - - - - Clear Search - Limpar Busca - - - - ResourceToSaveHandler - - - - ERROR: %1 - Erro: %1 - - - - Resource saving error: - Erro ao salvar recurso: - - - - The referenced resource failed to download. - O recurso referenciado não conseguiu baixar. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji para Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji para Katakana - - - - RussianTranslit - - - Russian Transliteration - Transliteração do Russo - - - - ScanPopup - - - Dialog - Painel - - - - - - - - ... - ... - - - - Back - Voltar - - - - Forward - Para Frente - - - - Pronounce Word (Alt+S) - Pronunciar a palavra da consulta atual (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Enviar palavra para a janela principal (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Mostra ou oculta a barra de dicionários - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Use esta opção para fixar a janela do GoldenDict na frente -das outras janelas, redimensioná-la ou geri-la à vontade. - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Caminho - - - - Name - Nome - - - - Icon - Ícone - - - - Sources - - - Files - Arquivos - - - - Paths to search for the dictionary files: - Caminhos dos arquivos de dicionário: - - - - - - - - - &Add... - &Adicionar... - - - - - - - - - &Remove - &Remover - - - - Re&scan now - Atua&lizar agora - - - - Sound Dirs - Pronúncia - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Caminhos de coleções de arquivos de áudio de pronúncia: - - - - Morphology - Ortografia - - - - Path to a directory with Hunspell/Myspell dictionaries: - Caminho da pasta dos dicionários Hunspell/Myspell: - - - - &Change... - &Modificar... - - - - Available morphology dictionaries: - Dicionários de ortografia disponíveis: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Cada dicionário de ortografia aparece como -um dicionário auxiliar separado que fornece -radicais para consultas e sugestões de -ortografia de palavras digitadas -incorretamente. - -Adicione dicionários compatíveis ao fim -dos grupos apropriados para usá-los. - - - - Wikipedia - Wikipédia - - - - Wikipedia (MediaWiki) sites: - Sites da Wikipedia (MediaWiki): - - - - Websites - Site da Web - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Especifique qualquer site que desejar. O demarcador %GDWORD% será substituído pela palavra da consulta do usuário: - - - - Programs - Programas - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Pronunciar palavras diretamente de <a href="http://www.forvo.com/">forvo.com</a>. Este site permite gravar e compartilhar pronúncias de palavras. É possível ouvi-las no GoldenDict. - - - - Enable pronunciations from Forvo - Habilitar pronúncias do Forvo - - - - API Key: - Chave API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - O uso do Forvo atualmente requer uma chave API. Deixe este -campo em branco para usar a chave padrão, que poderá -ficar indisponível no futuro, ou cadastre-se no site para -obter sua própria chave. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Obter sua própria chave <a href="http://api.forvo.com/key/">aqui</a>, ou deixe em branco para usar o padrão. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Alternativamente, usar %GD1251% por CP1251, %GDISO1%...%GDISO16% por ISO 8859-1...ISO 8859-16 respectivamente, -%GDBIG5% por Big-5, %GDBIG5HKSCS% por Big5-HKSCS, %GDGBK% por GBK e GB18030, %GDSHIFTJIS% por Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Todos os programas externos. Um texto %GDWORD% vai ser substituído com a palavra consultada. Se nenhum texto não é apresentado, a palavra vai ser alimentada com a entrada padrão. - - - - Language codes (comma-separated): - Códigos de idioma -(separar por vírgula): - - - - List of language codes you would like to have. Example: "en, ru". - Lista de códigos de idioma que você gostaria de ter. Por exemplo: "en, ru, pt_BR". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - A lista completa de códigos de idioma está disponível <a href="http://www.forvo.com/languages-codes/">aqui</a>. - - - - Transliteration - Transliteração - - - - Russian transliteration - Transliteração do Russo - - - - Greek transliteration - Transliteração do Grego - - - - German transliteration - Transliteração do Alemão - - - - Belarusian transliteration - Bielorrusso transliteração - - - - Enables to use the Latin alphabet to write the Japanese language - Habilita a romanização do japonês (palavras japonesas escritas em Latim) - - - - Japanese Romaji - Japonês Romanizado (ideogramas convertidos para caracteres latinos) - - - - Systems: - Sistemas: - - - - The most widely used method of transcription of Japanese, -based on English phonology - O método de transcrição japonesa mais amplamente -usado, baseado na fonologia inglesa - - - - Hepburn - Romanização hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - O sistema mais regular, que tem uma relação deum para -um com sistemas de escrita em kana. Padronizado -como ISO 3602 - -Ainda não implementado no GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Baseado no sistema Nihon-shiki, mas modificado para um padrão japonês moderno. -Padronizado como ISO 3602 - -Ainda não implementado no GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Silabários: - - - - Hiragana Japanese syllabary - Silabário japonês Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Silabário japonês Katakana - - - - Katakana - Katakana - - - - Text to Speech - Texto para Fala - - - - (not available in portable version) - (indisponível na versão portátil) - - - - - - Choose a directory - Escolha uma pasta - - - - - - - - - Confirm removal - Confirmar remoção - - - - - Remove directory <b>%1</b> from the list? - Quer mesmo remover a pasta <b>%1</b> da lista? - - - - - - Remove site <b>%1</b> from the list? - Quer mesmo remover o site <b>%1</b> da lista? - - - - Remove program <b>%1</b> from the list? - Quer mesmo remover o programa <b>%1</b> da lista? - - - - StylesComboBox - - - None - Nenhum - - - - TextToSpeechSource - - - Selected voice engines: - Engines de voz selecionadas: - - - - &Add - &Adicionar - - - - &Remove - &Remover - - - - Preferences - Preferências - - - - Volume: - Volume: - - - - Rate: - Taxa: - - - - Preview - Pré-Visualizar - - - - Available voice engines: - Engines de voz disponíveis: - - - - Text to be previewed: - Texto a ser visualizado: - - - - Type text to be previewed here. - Digite o texto a ser visualizado aqui. - - - - &Preview - &Pré-Visualizar - - - - No TTS voice available - Nenhuma voz TTS disponível - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Não foi possível encontra voz TTS.<br>Por favor, certifique-se que pelo menos um motor TTS esteja instalado no seu computador. - - - - Confirm removal - Confirmar remoção - - - - Remove voice engine <b>%1</b> from the list? - Remover engine de voz <b>%1</b> da lista? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Digite uma palavra ou frase para pesquisar dicionários - - - - Drop-down - Suspensa - - - - VoiceEnginesModel - - - Enabled - Habilitado - - - - Name - Nome - - - - Id - Id - - - - Icon - Ícone - - - - WebSitesModel - - - Enabled - Habilitado - - - - Name - Nome - - - - Address - Endereço - - - - Icon - Ícone - - - - WordFinder - - - Failed to query some dictionaries. - Não foi possível consultar alguns dicionários. - - - - WordList - - - WARNING: %1 - AVISO: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_es.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_es.ts deleted file mode 100644 index 18e25ee7b7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_es.ts +++ /dev/null @@ -1,8065 +0,0 @@ - - - - - MAC_APPLICATION_MENU - - - Services - Servicios - - - - Hide %1 - Ocultar %1 - - - - Hide Others - Ocultar otros - - - - Show All - Mostrar todo - - - - Preferences... - Preferencias… - - - - Quit %1 - Salir de %1 - - - - About %1 - Acerca de %1 - - - - AudioOutput - - - <html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html> - - - - - <html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html> - - - - - Revert back to device '%1' - - - - - CloseButton - - - Close Tab - Cerrar pestaña - - - - PPDOptionsModel - - Name - Nombre - - - Value - Valor - - - - Phonon:: - - - Notifications - - - - - Music - - - - - Video - - - - - Communication - - - - - Games - - - - - Accessibility - - - - - Phonon::Gstreamer::Backend - - - Warning: You do not seem to have the package gstreamer0.10-plugins-good installed. - Some video features have been disabled. - - - - - Warning: You do not seem to have the base GStreamer plugins installed. - All audio and video support has been disabled - - - - - Phonon::Gstreamer::MediaObject - - - Cannot start playback. - -Check your Gstreamer installation and make sure you -have libgstreamer-plugins-base installed. - - - - - A required codec is missing. You need to install the following codec(s) to play this content: %0 - - - - - - - - - - - - Could not open media source. - - - - - Invalid source type. - - - - - Could not locate media source. - - - - - Could not open audio device. The device is already in use. - - - - - Could not decode media source. - - - - - Phonon::VolumeSlider - - - - Volume: %1% - - - - - - - Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1% - - - - - Q3Accel - - - %1, %2 not defined - La secuencia %1, %2 no está definida - - - - Ambiguous %1 not handled - Secuencia ambigua %1 no tratada - - - - Q3DataTable - - - True - Verdadero - - - - False - Falso - - - - Insert - Insertar - - - - Update - Actualizar - - - - Delete - Borrar - - - - Q3FileDialog - - - Copy or Move a File - Copiar o mover un fichero - - - - Read: %1 - Lectura: %1 - - - - - Write: %1 - Escritura: %1 - - - - - Cancel - Cancelar - - - - - - - All Files (*) - Todos los ficheros (*) - - - - Name - Nombre - - - - Size - Tamaño - - - - Type - Tipo - - - - Date - Fecha - - - - Attributes - Atributos - - - - - &OK - &Aceptar - - - - Look &in: - Buscar &en: - - - - - - File &name: - &Nombre de fichero: - - - - File &type: - &Tipo de fichero: - - - - Back - Precedente (histórico) - - - - One directory up - Ir al directorio superior - - - - Create New Folder - Crear una nueva carpeta - - - - List View - Vista de lista - - - - Detail View - Vista detallada - - - - Preview File Info - Información del fichero previsualizado - - - - Preview File Contents - Contenido del fichero previsualizado - - - - Read-write - Lectura-escritura - - - - Read-only - Sólo lectura - - - - Write-only - Sólo escritura - - - - Inaccessible - Inaccesible - - - - Symlink to File - Enlace simbólico a un fichero - - - - Symlink to Directory - Enlace simbólico a un directorio - - - - Symlink to Special - Enlace simbólico a un fichero especial - - - - File - Fichero - - - - Dir - Directorio - - - - Special - Fichero especial - - - - - - Open - Abrir - - - - - Save As - Guardar como - - - - - - &Open - &Abrir - - - - - &Save - &Guardar - - - - &Rename - Cambia&r de nombre - - - - &Delete - &Borrar - - - - R&eload - R&ecargar - - - - Sort by &Name - Ordenar por &nombre - - - - Sort by &Size - Ordenar por &tamaño - - - - Sort by &Date - Ordenar por &fecha - - - - &Unsorted - &Sin ordenar - - - - Sort - Ordenar - - - - Show &hidden files - Mostrar los fic&heros ocultos - - - - the file - el fichero - - - - the directory - el directorio - - - - the symlink - el enlace simbólico - - - - Delete %1 - Borrar %1 - - - - <qt>Are you sure you wish to delete %1 "%2"?</qt> - <qt>¿Seguro que desea borrar %1 «%2»?</qt> - - - - &Yes - &Sí - - - - &No - &No - - - - New Folder 1 - Nueva carpeta 1 - - - - New Folder - Nueva carpeta - - - - New Folder %1 - Nueva carpeta %1 - - - - Find Directory - Buscar en el directorio - - - - - Directories - Directorios - - - - Directory: - Directorio: - - - - - Error - Error - - - - %1 -File not found. -Check path and filename. - %1 -Fichero no encontrado. -Compruebe la ruta y el nombre del fichero. - - - - All Files (*.*) - Todos los ficheros (*.*) - - - - Open - Abrir - - - - Select a Directory - Seleccionar un directorio - - - - Q3LocalFs - - - - Could not read directory -%1 - No fue posible leer el directorio -%1 - - - - Could not create directory -%1 - No fue posible crear el directorio -%1 - - - - Could not remove file or directory -%1 - No fue posible eliminar el fichero o directorio -%1 - - - - Could not rename -%1 -to -%2 - No fue posible cambiar el nombre -%1 -a -%2 - - - - Could not open -%1 - No fue posible abrir -%1 - - - - Could not write -%1 - No fue posible escribir -%1 - - - - Q3MainWindow - - - Line up - Alinear - - - - Customize... - Personalizar... - - - - Q3NetworkProtocol - - - Operation stopped by the user - Operación detenida por el usuario - - - - Q3ProgressDialog - - - - Cancel - Cancelar - - - - Q3TabDialog - - - - OK - Aceptar - - - - Apply - Aplicar - - - - Help - Ayuda - - - - Defaults - Valores por omisión - - - - Cancel - Cancelar - - - - Q3TextEdit - - - &Undo - &Deshacer - - - - &Redo - &Rehacer - - - - Cu&t - Cor&tar - - - - &Copy - &Copiar - - - - &Paste - &Pegar - - - - Clear - Limpiar - - - - - Select All - Seleccionar todo - - - - Q3TitleBar - - - System - Sistema - - - - Restore up - Restaurar arriba - - - - Minimize - Minimizar - - - - Restore down - Restaurar abajo - - - - Maximize - Maximizar - - - - Close - Cerrar - - - - Contains commands to manipulate the window - Contiene órdenes para manipular la ventana - - - - Puts a minimized back to normal - Devuelve una ventana minimizada a su aspecto normal - - - - Moves the window out of the way - Aparta la ventana - - - - Puts a maximized window back to normal - Devuelve una ventana maximizada a su aspecto normal - - - - Makes the window full screen - Muestra la ventana en pantalla completa - - - - Closes the window - Cierra la ventana - - - - Displays the name of the window and contains controls to manipulate it - Muestra el nombre de la ventana y contiene controles para manipularla - - - - Q3ToolBar - - - More... - Más... - - - - Q3UrlOperator - - - - - The protocol `%1' is not supported - El protocolo «%1» no está contemplado - - - - The protocol `%1' does not support listing directories - El protocolo «%1» no permite listar los ficheros de un directorio - - - - The protocol `%1' does not support creating new directories - El protocolo «%1» no permite crear nuevos directorios - - - - The protocol `%1' does not support removing files or directories - El protocolo «%1» no permite eliminar ficheros o directorios - - - - The protocol `%1' does not support renaming files or directories - El protocolo «%1» no permite cambiar de nombre ficheros o directorios - - - - The protocol `%1' does not support getting files - El protocolo «%1» no permite recibir ficheros - - - - The protocol `%1' does not support putting files - El protocolo «%1» no permite enviar ficheros - - - - - The protocol `%1' does not support copying or moving files or directories - El protocolo «%1» no permite copiar o mover ficheros o directorios - - - - - (unknown) - (desconocido) - - - - Q3Wizard - - - &Cancel - &Cancelar - - - - < &Back - < &Anterior - - - - &Next > - Siguie&nte > - - - - &Finish - &Terminar - - - - &Help - &Ayuda - - - - QAbstractSocket - - - - - - Host not found - Equipo no encontrado - - - - - - Connection refused - Conexión rechazada - - - - Connection timed out - Conexión expirada - - - - - - Operation on socket is not supported - - - - - Socket operation timed out - Operación socket expirada - - - - Socket is not connected - El socket no está conectado - - - - Network unreachable - Red inalcanzable - - - - QAbstractSpinBox - - - &Step up - &Aumentar - - - - Step &down - Re&ducir - - - - &Select All - &Seleccionar todo - - - - QApplication - - - Activate - Activar - - - - Executable '%1' requires Qt %2, found Qt %3. - El ejecutable «%1» requiere Qt %2 (se encontró Qt %3). - - - - Incompatible Qt Library Error - Error: biblioteca Qt incompatible - - - - QT_LAYOUT_DIRECTION - Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. - LTR - - - - Activates the program's main window - Activa la ventana principal del programa - - - - QAxSelect - - - Select ActiveX Control - Seleccionar un control ActiveX - - - - OK - Aceptar - - - - &Cancel - &Cancelar - - - - COM &Object: - &Objeto COM: - - - - QCheckBox - - - Uncheck - Desmarcar - - - - Check - Marcar - - - - Toggle - Conmutar - - - - QColorDialog - - - Hu&e: - &Tono: - - - - &Sat: - &Saturación: - - - - &Val: - &Valor: - - - - &Red: - &Rojo: - - - - &Green: - &Verde: - - - - Bl&ue: - Az&ul: - - - - A&lpha channel: - Canal a&lfa: - - - - Select Color - - - - - &Basic colors - Colores &básicos - - - - &Custom colors - &Colores personalizados - - - &Define Custom Colors >> - &Definir colores personalizados >> - - - OK - Aceptar - - - Cancel - Cancelar - - - - &Add to Custom Colors - &Añadir a los colores personalizados - - - Select color - Seleccionar color - - - - QComboBox - - - - Open - Abrir - - - - False - Falso - - - - True - Verdadero - - - - Close - Cerrar - - - - QCoreApplication - - - %1: key is empty - QSystemSemaphore - - - - - %1: unable to make key - QSystemSemaphore - - - - - %1: ftok failed - QSystemSemaphore - - - - - QDB2Driver - - - Unable to connect - Imposible establecer una conexión - - - - Unable to commit transaction - Incapaz de enviar la transacción - - - - Unable to rollback transaction - Incapaz de anular la transacción - - - - Unable to set autocommit - Incapaz de activar el envío automático - - - - QDB2Result - - - - Unable to execute statement - Imposible ejecutar la instrucción - - - - Unable to prepare statement - Imposible preparar la instrucción - - - - Unable to bind variable - No es posible ligar la variable - - - - Unable to fetch record %1 - Imposible obtener el registro %1 - - - - Unable to fetch next - Imposible recuperar el siguiente - - - - Unable to fetch first - Imposible recuperar el primero - - - - QDateTimeEdit - - - AM - AM - - - - am - am - - - - PM - PM - - - - pm - pm - - - - QDial - - - QDial - QDial - - - - SpeedoMeter - Velocímetro - - - - SliderHandle - Asa del deslizador - - - - QDialog - - - What's This? - ¿Qué es esto? - - - - Done - Terminar - - - - QDialogButtonBox - - - - - OK - Aceptar - - - - Save - Guardar - - - - &Save - &Guardar - - - - Open - Abrir - - - - Cancel - Cancelar - - - - &Cancel - &Cancelar - - - - Close - Cerrar - - - - &Close - &Cerrar - - - - Apply - Aplicar - - - - Reset - Reinicializar - - - - Help - Ayuda - - - - Don't Save - No guardar - - - - Discard - Descartar - - - - &Yes - &Sí - - - - Yes to &All - Sí a &todo - - - - &No - &No - - - - N&o to All - N&o a todo - - - - Save All - Guardar todo - - - - Abort - Interrumpir - - - - Retry - Reintentar - - - - Ignore - Ignorar - - - - Restore Defaults - Restaurar los valores predeterminados - - - - Close without Saving - Cerrar sin guardar - - - - &OK - &Aceptar - - - - QDirModel - - - Name - Nombre - - - - Size - Tamaño - - - Kind - Match OS X Finder - - Clase - - - - Type - All other platforms - Tipo - - - - Date Modified - Última modificación - - - - Kind - Match OS X Finder - Clase - - - - QDockWidget - - - Close - Cerrar - - - - Dock - Anclada - - - - Float - Flotante - - - - QDoubleSpinBox - - - More - Más - - - - Less - Menos - - - - QErrorMessage - - - Debug Message: - Mensaje de depuración: - - - - Warning: - Aviso: - - - - Fatal Error: - Error fatal: - - - - &Show this message again - Mo&strar este mensaje de nuevo - - - - &OK - &Aceptar - - - - QFile - - - - Destination file exists - - - - - Cannot remove source file - - - - - Cannot open %1 for input - - - - - Cannot open for output - - - - - Failure to write block - - - - - Cannot create %1 for output - - - - - QFileDialog - - - - All Files (*) - Todos los ficheros (*) - - - - Directories - Directorios - - - - - - - &Open - &Abrir - - - - - &Save - &Guardar - - - - Open - Abrir - - - - %1 already exists. -Do you want to replace it? - El fichero %1 ya existe. -¿Desea reemplazarlo? - - - - %1 -File not found. -Please verify the correct file name was given. - %1 -Fichero no encontrado. -Verifique que el nombre del fichero es correcto. - - - - My Computer - Mi equipo - - - - &Rename - Cambia&r de nombre - - - - &Delete - &Borrar - - - - Show &hidden files - Mostrar los fic&heros ocultos - - - - - Back - Anterior (histórico) - - - - - Parent Directory - Directorio superior - - - - - List View - Vista de lista - - - - - Detail View - Vista detallada - - - - - Files of type: - Ficheros de tipo: - - - - - Directory: - Directorio: - - - -File not found. -Please verify the correct file name was given - -Fichero no encontrado. -Compruebe que el nombre del fichero es correcto - - - - - %1 -Directory not found. -Please verify the correct directory name was given. - %1 -Directorio no encontrado. -Verique que el nombre del directorio es correcto. - - - - '%1' is write protected. -Do you want to delete it anyway? - «%1» está protegido contra escritura. -¿Desea borrarlo de todas formas? - - - - Are sure you want to delete '%1'? - ¿Seguro que desea borrar «%1»? - - - - Could not delete directory. - No fue posible borrar el directorio. - - - - Recent Places - - - - - All Files (*.*) - Todos los ficheros (*.*) - - - - Save As - Guardar como - - - - Drive - Unidad - - - - - File - Fichero - - - - Unknown - Desconocido - - - - Find Directory - Buscar en el directorio - - - - Show - Mostrar - - - - - Forward - Siguiente (histórico) - - - - New Folder - Nueva carpeta - - - - &New Folder - &Nueva carpeta - - - - - &Choose - &Seleccionar - - - - Remove - Eliminar - - - - - File &name: - &Nombre de fichero: - - - - - Look in: - Ver en: - - - - - Create New Folder - Crear una nueva carpeta - - - - QFileSystemModel - - - %1 TB - %1 TiB - - - - %1 GB - %1 GiB - - - - %1 MB - %1 MiB - - - - %1 KB - %1 KiB - - - - %1 bytes - %1 bytes - - - - Invalid filename - Nombre de fichero no válido - - - - <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. - <b>No se puede utilizar el nombre «%1».</b><p>Intente usar otro nombre con menos caracteres o sin signos de puntuación. - - - - Name - Nombre - - - - Size - Tamaño - - - - Kind - Match OS X Finder - Clase - - - Type - -All other platforms - Tipo - - - - Date Modified - Última modificación - - - - My Computer - Mi equipo - - - - Computer - Equipo - - - - Type - All other platforms - Tipo - - - - QFontDatabase - - - - Normal - - - - - - - Bold - - - - - - Demi Bold - - - - - - - Black - - - - - Demi - - - - - - Light - - - - - - Italic - - - - - - Oblique - - - - - Any - - - - - Latin - - - - - Greek - - - - - Cyrillic - - - - - Armenian - - - - - Hebrew - - - - - Arabic - - - - - Syriac - - - - - Thaana - - - - - Devanagari - - - - - Bengali - - - - - Gurmukhi - - - - - Gujarati - - - - - Oriya - - - - - Tamil - - - - - Telugu - - - - - Kannada - - - - - Malayalam - - - - - Sinhala - - - - - Thai - - - - - Lao - - - - - Tibetan - - - - - Myanmar - - - - - Georgian - - - - - Khmer - - - - - Simplified Chinese - - - - - Traditional Chinese - - - - - Japanese - - - - - Korean - - - - - Vietnamese - - - - - Symbol - - - - - Ogham - - - - - Runic - - - - - QFontDialog - - - &Font - &Tipo de letra - - - - Font st&yle - &Estilo del tipo de letra - - - - &Size - &Tamaño - - - - Effects - Efectos - - - - Stri&keout - &Tachado - - - - &Underline - S&ubrayado - - - - Sample - Muestra - - - - Wr&iting System - Sistema de escr&itura - - - - - Select Font - Seleccionar un tipo de letra - - - - QFtp - - - - Not connected - No conectado - - - - - Host %1 not found - Equipo %1 no encontrado - - - - - Connection refused to host %1 - Conexión rechazada al equipo %1 - - - - Connection timed out to host %1 - - - - - - - Connected to host %1 - Conectado al equipo %1 - - - - - Connection refused for data connection - Conexión para conexión de datos rechazada - - - - - - - Unknown error - Error desconocido - - - - - Connecting to host failed: -%1 - La conexión con el equipo ha fallado: -%1 - - - - - Login failed: -%1 - Identificación fallida: -%1 - - - - - Listing directory failed: -%1 - El listado del directorio ha fallado: -%1 - - - - - Changing directory failed: -%1 - Fallo del cambio de directorio: -%1 - - - - - Downloading file failed: -%1 - Fallo de la descarga del fichero: -%1 - - - - - Uploading file failed: -%1 - El envío del fichero ha fallado: -%1 - - - - - Removing file failed: -%1 - Eliminación de fichero fallida: -%1 - - - - - Creating directory failed: -%1 - Fallo de la creación de un directorio: -%1 - - - - - Removing directory failed: -%1 - Eliminación de directorio fallida: -%1 - - - - - - Connection closed - Conexión cerrada - - - - Host %1 found - Equipo %1 encontrado - - - - Connection to %1 closed - Conexión a %1 cerrada - - - - Host found - Equipo encontrado - - - - Connected to host - Conectado al equipo - - - - QHostInfo - - - Unknown error - Error desconocido - - - - QHostInfoAgent - - - - - - - - - - Host not found - Equipo no encontrado - - - - - - - Unknown address type - Dirección de tipo desconocido - - - - - - Unknown error - Error desconocido - - - - QHttp - - - HTTPS connection requested but SSL support not compiled in - - - - - - - - Unknown error - Error desconocido - - - - - Request aborted - Solicitud interrumpida - - - - - No server set to connect to - No se ha indicado ningún servidor al que conectarse - - - - - Wrong content length - Longitud del contenido errónea - - - - - Server closed connection unexpectedly - El servidor cerró la conexión inesperadamente - - - - Unknown authentication method - - - - - Error writing response to device - - - - - - Connection refused - Conexión rechazada - - - - - - Host %1 not found - Equipo %1 no encontrado - - - - - - - HTTP request failed - Solicitud HTTP fallida - - - - - Invalid HTTP response header - Cabecera de respuesta HTTP no válida - - - - - - - Invalid HTTP chunked body - Fragmento HTTP no válido - - - - Host %1 found - Equipo %1 encontrado - - - - Connected to host %1 - Conectado al equipo %1 - - - - Connection to %1 closed - Conexión a %1 cerrada - - - - Host found - Equipo encontrado - - - - Connected to host - Conectado al equipo - - - - - Connection closed - Conexión cerrada - - - - Proxy authentication required - El proxy requiere autenticación - - - - Authentication required - Se precisa autenticación - - - - Connection refused (or timed out) - - - - - Proxy requires authentication - - - - - Host requires authentication - - - - - Data corrupted - - - - - Unknown protocol specified - - - - - SSL handshake failed - - - - - QHttpSocketEngine - - - Did not receive HTTP response from proxy - - - - - Error parsing authentication request from proxy - - - - - Authentication required - Se precisa autenticación - - - - Proxy denied connection - - - - - Error communicating with HTTP proxy - - - - - Proxy server not found - - - - - Proxy connection refused - - - - - Proxy server connection timed out - - - - - Proxy connection closed prematurely - - - - - QIBaseDriver - - - Error opening database - Error al abrir la base de datos - - - - Could not start transaction - No fue posible iniciar la transacción - - - - Unable to commit transaction - Incapaz de enviar la transacción - - - - Unable to rollback transaction - Incapaz de anular la transacción - - - - QIBaseResult - - - Unable to create BLOB - Imposible crear un BLOB - - - - Unable to write BLOB - Imposible escribir el BLOB - - - - Unable to open BLOB - Imposible abrir el BLOB - - - - Unable to read BLOB - Imposible leer el BLOB - - - - - Could not find array - No fue posible encontrar la tabla - - - - Could not get array data - No fue posible obtener los datos de la tabla - - - - Could not get query info - No fue posible obtener información sobre la consulta - - - - Could not start transaction - No fue posible iniciar la transacción - - - - Unable to commit transaction - Incapaz de enviar la transacción - - - - Could not allocate statement - No fue posible asignar la instrucción - - - - Could not prepare statement - No fue posible preparar la instrucción - - - - - Could not describe input statement - No fue posible describir la instrucción de entrada - - - - Could not describe statement - No fue posible describir la instrucción - - - - Unable to close statement - No fue posible cerrar la instrucción - - - - Unable to execute query - No fue posible ejecutar la consulta - - - - Could not fetch next item - No fue posible obtener el elemento siguiente - - - - Could not get statement info - No fue posible obtener información sobre la instrucción - - - - QIODevice - - - Permission denied - Permiso denegado - - - - Too many open files - Demasiados ficheros abiertos simultáneamente - - - - No such file or directory - No hay ningún fichero o directorio con ese nombre - - - - No space left on device - No queda espacio en el dispositivo - - - - Unknown error - Error desconocido - - - - QInputContext - - - XIM - XIM - - - - XIM input method - Método de entrada XIM - - - - Windows input method - Método de entrada Windows - - - - Mac OS X input method - Método de entrada Mac OS X - - - - QInputDialog - - - Enter a value: - - - - - QLibrary - - QLibrary::load_sys: Cannot load %1 (%2) - QLibrary::load_sys: No se puede cargar %1 (%2) - - - QLibrary::unload_sys: Cannot unload %1 (%2) - QLibrary::unload_sys: No se puede cargar %1 (%2) - - - QLibrary::resolve_sys: Symbol "%1" undefined in %2 (%3) - QLibrary::resolve_sys: Símbolo «%1» no definido en %2 (%3) - - - - Could not mmap '%1': %2 - No fu posible establecer la proyección en memoria de «%1»: %2 - - - - Plugin verification data mismatch in '%1' - Los datos de verificación del complemento no coinciden en «%1» - - - - Could not unmap '%1': %2 - No fue posible suprimir la proyección en memoria de «%1»: %2 - - - - The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] - El complemento «%1» usa una biblioteca Qt incompatible. (%2.%3.%4) [%5] - - - - The plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3" - El complemento «%1» usa una biblioteca Qt incompatible. Se esperaba la clave «%2», pero se ha recibido «%3» - - - - Unknown error - Error desconocido - - - - - The shared library was not found. - No se ha encontrado la biblioteca compartida. - - - - The file '%1' is not a valid Qt plugin. - El fichero «%1» no es un complemento de Qt válido. - - - - The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) - El complemento «%1» usa una biblioteca Qt incompatible. (No se pueden mezclar las bibliotecas «debug» y «release».) - - - - - Cannot load library %1: %2 - - - - - - Cannot unload library %1: %2 - - - - - - Cannot resolve symbol "%1" in %2: %3 - - - - - QLineEdit - - - &Undo - &Deshacer - - - - &Redo - &Rehacer - - - - Cu&t - Cor&tar - - - - &Copy - &Copiar - - - - &Paste - &Pegar - - - - Delete - Borrar - - - - Select All - Seleccionar todo - - - - QLocalServer - - - - %1: Name error - - - - - %1: Permission denied - - - - - %1: Address in use - - - - - - %1: Unknown error %2 - - - - - QLocalSocket - - - - %1: Connection refused - - - - - - %1: Remote closed - - - - - - - - %1: Invalid name - - - - - - %1: Socket access error - - - - - - %1: Socket resource error - - - - - - %1: Socket operation timed out - - - - - - %1: Datagram too large - - - - - - - %1: Connection error - - - - - - %1: The socket operation is not supported - - - - - %1: Unknown error - - - - - - %1: Unknown error %2 - - - - - QMYSQLDriver - - - Unable to open database ' - Imposible abrir la base de datos ' - - - - Unable to connect - No es posible establecer una conexión - - - - Unable to begin transaction - No es posible iniciar la transacción - - - - Unable to commit transaction - No es posible enviar la transacción - - - - Unable to rollback transaction - No es posible anular la transacción - - - - QMYSQLResult - - - Unable to fetch data - No es posible obtener los datos - - - - Unable to execute query - No es posible ejecutar la consulta - - - - Unable to store result - No es posible almacenar el resultado - - - - - Unable to prepare statement - No es posible preparar la instrucción - - - - Unable to reset statement - No es posible reinicializar la instrucción - - - - Unable to bind value - No es posible ligar el valor - - - - Unable to execute statement - No es posible ejecutar la instrucción - - - - - Unable to bind outvalues - No es posible ligar los valores de salida - - - - Unable to store statement results - No es posible almacenar los resultados de la instrucción - - - - Unable to execute next query - - - - - Unable to store next result - - - - - QMdiArea - - - (Untitled) - - - - - QMdiSubWindow - - - %1 - [%2] - %1 - [%2] - - - - Close - Cerrar - - - - Minimize - Minimizar - - - - Restore Down - Restaurar abajo - - - - &Restore - &Restaurar - - - - &Move - &Mover - - - - &Size - Redimen&sionar - - - - Mi&nimize - Mi&nimizar - - - - Ma&ximize - Ma&ximizar - - - - Stay on &Top - Permanecer en &primer plano - - - - &Close - &Cerrar - - - - - [%1] - - - - - Maximize - Maximizar - - - - Unshade - - - - - Shade - - - - - Restore - - - - - Help - Ayuda - - - - Menu - Menú - - - - QMenu - - - - Close - Cerrar - - - - - Open - Abrir - - - - - - Execute - Ejecutar - - - - QMenuBar - - About - Acerca de - - - Config - Configuración - - - Preference - Preferencia - - - Options - Opciones - - - Setting - Parámetro - - - Setup - Configuración - - - Quit - Salir - - - Exit - Salir - - - About %1 - Acerca de %1 - - - About Qt - Acerca de Qt - - - Preferences - Preferencias - - - Quit %1 - Salir de %1 - - - - QMessageBox - - - Help - Ayuda - - - - - - - OK - Aceptar - - - - About Qt - Acerca de Qt - - - <p>This program uses Qt version %1.</p> - <p>Este programa utiliza la versión %1 de Qt.</p> - - - <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qtopia Core.</p><p>Qt is a Trolltech product. See <a href="http://qt.digia.com/">qt.digia.com</a> for more information.</p> - <h3>Acerca de Qt</h3>%1<p>Qt es un toolkit en C++ para desarrollo de aplicaciones multiplataforma.</p><p>Qt proporciona portabilidad del código entre MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux y todas las variantes comerciales de Unix importantes. Qt también está disponible para sistemas empotrados bajo el nombre Qtopia Core.</p><p>Qt es un producto de Trolltech. Visite <a href="http://qt.digia.com/">qt.digia.com</a> para obtener más información.</p> - - - - Show Details... - Mostrar los detalles... - - - - Hide Details... - Ocultar los detalles... - - - - <h3>About Qt</h3><p>This program uses Qt version %1.</p><p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.</p><p>Please see <a href="http://qt.digia.com/product/licensing">qt.digia.com/product/licensing</a> for an overview of Qt licensing.</p><p>Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).</p><p>Qt is a Digia product. See <a href="http://qt.digia.com/">qt.digia.com</a> for more information.</p> - - - - <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://qt.digia.com/company/model/">qt.digia.com/company/model/</a> for an overview of Qt licensing.</p> - <p>Este programa utiliza Qt Open Source Edition versión %1.</p><p>Qt Open Source Edition está dirigida al desarrollo de aplicaciones libres. Para desarrollar aplicaciones privativas (de código cerrado) necesita una licencia comercial de Qt.</p><p>Visite <a href="http://qt.digia.com/company/model/">qt.digia.com/company/model/</a> para obtener una visión global de las licencias de Qt.</p> - - - - QMultiInputContext - - - Select IM - Seleccionar IM - - - - QMultiInputContextPlugin - - - Multiple input method switcher - Seleccionador de varios métodos de entrada - - - - Multiple input method switcher that uses the context menu of the text widgets - Seleccionador de varios métodos de entrada que usa el menú contextual de los elementos de texto - - - - QNativeSocketEngine - - - The remote host closed the connection - El equipo remoto ha cerrado la conexión - - - - Network operation timed out - La operación de red ha expirado - - - - Out of resources - Insuficientes recursos - - - - Unsupported socket operation - Operación socket no admitida - - - - Protocol type not supported - Tipo de protocolo no admitido - - - - Invalid socket descriptor - Descriptor de socket no válido - - - - Network unreachable - Red inalcanzable - - - - Permission denied - Permiso denegado - - - - Connection timed out - Conexión expirada - - - - Connection refused - Conexión rechazada - - - - The bound address is already in use - La dirección enlazada ya está en uso - - - - The address is not available - La dirección no está disponible - - - - The address is protected - La dirección está protegida - - - - Unable to send a message - Imposible enviar un mensaje - - - - Unable to receive a message - Imposible recibir un mensaje - - - - Unable to write - Imposible escribir - - - - Network error - Error de red - - - - Another socket is already listening on the same port - Ya hay otro socket escuchando por el mismo puerto - - - - Unable to initialize non-blocking socket - Imposible inicializar el socket no bloqueante - - - - Unable to initialize broadcast socket - Imposible inicializar el socket de difusión - - - - Attempt to use IPv6 socket on a platform with no IPv6 support - Intento de usar un socket IPv6 sobre una plataforma que no contempla IPv6 - - - - Host unreachable - Equipo inaccesible - - - - Datagram was too large to send - El datagrama era demasiado grande para poder ser enviado - - - - Operation on non-socket - Operación sobre un no-socket - - - - Unknown error - Error desconocido - - - - The proxy type is invalid for this operation - - - - - QNetworkAccessCacheBackend - - - Error opening %1 - - - - - QNetworkAccessFileBackend - - - Request for opening non-local file %1 - - - - - Error opening %1: %2 - - - - - Write error writing to %1: %2 - - - - - Cannot open %1: Path is a directory - - - - - Read error reading from %1: %2 - - - - - QNetworkAccessFtpBackend - - - No suitable proxy found - - - - - Cannot open %1: is a directory - - - - - Logging in to %1 failed: authentication required - - - - - Error while downloading %1: %2 - - - - - Error while uploading %1: %2 - - - - - QNetworkAccessHttpBackend - - - No suitable proxy found - - - - - QNetworkReply - - - Error downloading %1 - server replied: %2 - - - - - Protocol "%1" is unknown - - - - - QNetworkReplyImpl - - - - Operation canceled - - - - - QOCIDriver - - - Unable to logon - No es posible abrir sesión - - - - Unable to initialize - QOCIDriver - La inicialización ha fallado - - - - Unable to begin transaction - No es posible iniciar la transacción - - - - Unable to commit transaction - - - - - Unable to rollback transaction - - - - - QOCIResult - - - - - Unable to bind column for batch execute - No es posible ligar la columna para una ejecución por lotes - - - - Unable to execute batch statement - No es posible ejecutar la instrucción por lotes - - - - Unable to goto next - No es posible pasar al siguiente - - - - Unable to alloc statement - No es posible asignar la instrucción - - - - Unable to prepare statement - No es posible preparar la instrucción - - - - Unable to bind value - No es posible ligar el valor - - - Unable to execute select statement - No es posible ejecutar la instrucción select - - - - Unable to execute statement - No es posible ejecutar la instrucción - - - - QODBCDriver - - - Unable to connect - No es posible establecer una conexión - - - - Unable to connect - Driver doesn't support all needed functionality - No es posible conectarse - El controlador no ofrece todas las funciones necesarias - - - - Unable to disable autocommit - No es posible inhabilitar el envío automático - - - - Unable to commit transaction - No es posible enviar la transacción - - - - Unable to rollback transaction - No es posible anular la transacción - - - - Unable to enable autocommit - No es posible habilitar el envío automático - - - - QODBCResult - - - - QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration - QODBCResult::reset: No es posible establecer «SQL_CURSOR_STATIC» como atributo de instrucción. Compruebe la configuración de su controlador ODBC - - - - - Unable to execute statement - No es posible ejecutar la instrucción - - - - Unable to fetch next - No es posible obtener el siguiente - - - - Unable to prepare statement - No es posible preparar la instrucción - - - - Unable to bind variable - No es posible ligar la variable - - - - - - Unable to fetch last - - - - - Unable to fetch - - - - - Unable to fetch first - Imposible recuperar el primero - - - - Unable to fetch previous - - - - - QObject - - - Home - Inicio - - - - Operation not supported on %1 - - - - - Invalid URI: %1 - - - - - Write error writing to %1: %2 - - - - - Read error reading from %1: %2 - - - - - Socket error on %1: %2 - - - - - Remote host closed the connection prematurely on %1 - - - - - Protocol error: packet of size 0 received - - - - - - No host name given - - - - - QPPDOptionsModel - - - Name - Nombre - - - - Value - Valor - - - - QPSQLDriver - - - Unable to connect - No es posible establecer conexión - - - - Could not begin transaction - No fue posible iniciar la transacción - - - - Could not commit transaction - No fue posible enviar la transacción - - - - Could not rollback transaction - No fue posible anular la transacción - - - - Unable to subscribe - - - - - Unable to unsubscribe - - - - - QPSQLResult - - - Unable to create query - No es posible crear la consulta - - - - Unable to prepare statement - - - - - QPageSetupWidget - - - Centimeters (cm) - - - - - Millimeters (mm) - - - - - Inches (in) - - - - - Points (pt) - - - - - Form - - - - - Paper - - - - - Page size: - Tamaño de página: - - - - Width: - - - - - Height: - - - - - Paper source: - Fuente del papel: - - - - Orientation - - - - - Portrait - Vertical - - - - Landscape - Apaisado - - - - Reverse landscape - - - - - Reverse portrait - - - - - Margins - - - - - top margin - - - - - left margin - - - - - right margin - - - - - bottom margin - - - - - QPluginLoader - - - Unknown error - Error desconocido - - - - The plugin was not loaded. - El complemento no fue cargado. - - - - QPrintDialog - - - locally connected - conectado localmente - - - - - Aliases: %1 - Alias: %1 - - - - - unknown - desconocido - - - Print in color if available - Imprimir en color si es posible - - - - Print all - Imprimir todo - - - - Print selection - Imprimir la selección - - - - Print range - Imprimir el intervalo - - - Print last page first - Imprimir primero la última página - - - Number of copies: - Número de copias: - - - Paper format - Formato del papel - - - Portrait - Vertical - - - Landscape - Apaisado - - - - A0 (841 x 1189 mm) - A0 (841 x 1189 mm) - - - - A1 (594 x 841 mm) - A1 (594 x 841 mm) - - - - A2 (420 x 594 mm) - A2 (420 x 594 mm) - - - - A3 (297 x 420 mm) - A3 (297 x 420 mm) - - - - A4 (210 x 297 mm, 8.26 x 11.7 inches) - A4 (210 x 297 mm, 8,26 x 11,7 pulgadas) - - - - A5 (148 x 210 mm) - A5 (148 x 210 mm) - - - - A6 (105 x 148 mm) - A6 (105 x 148 mm) - - - - A7 (74 x 105 mm) - A7 (74 x 105 mm) - - - - A8 (52 x 74 mm) - A8 (52 x 74 mm) - - - - A9 (37 x 52 mm) - A9 (37 x 52 mm) - - - - B0 (1000 x 1414 mm) - B0 (1000 x 1414 mm) - - - - B1 (707 x 1000 mm) - B1 (707 x 1000 mm) - - - - B2 (500 x 707 mm) - B2 (500 x 707 mm) - - - - B3 (353 x 500 mm) - B3 (353 x 500 mm) - - - - B4 (250 x 353 mm) - B4 (250 x 353 mm) - - - - B5 (176 x 250 mm, 6.93 x 9.84 inches) - B5 (176 x 250 mm, 6,93 x 9,84 pulgadas) - - - - B6 (125 x 176 mm) - B6 (125 x 176 mm) - - - - B7 (88 x 125 mm) - B7 (88 x 125 mm) - - - - B8 (62 x 88 mm) - B8 (62 x 88 mm) - - - - B9 (44 x 62 mm) - B9 (44 x 62 mm) - - - - B10 (31 x 44 mm) - B10 (31 x 44 mm) - - - - C5E (163 x 229 mm) - C5E (163 x 229 mm) - - - - DLE (110 x 220 mm) - DLE (110 x 220 mm) - - - - Executive (7.5 x 10 inches, 191 x 254 mm) - Ejecutivo (7,5 x 10 pulgadas, 191 x 254 mm) - - - - Folio (210 x 330 mm) - Folio (210 x 330 mm) - - - - Ledger (432 x 279 mm) - Ledger (432 x 279 mm) - - - - Legal (8.5 x 14 inches, 216 x 356 mm) - Legal (8,5 x 14 pulgadas, 216 x 356 mm) - - - - Letter (8.5 x 11 inches, 216 x 279 mm) - Carta (8,5 x 11 pulgadas, 216 x 279 mm) - - - - Tabloid (279 x 432 mm) - Tabloide (279 x 432 mm) - - - - US Common #10 Envelope (105 x 241 mm) - Sobre US Common #10 (105 x 241 mm) - - - - OK - Aceptar - - - Cancel - Cancelar - - - Page size: - Tamaño de página: - - - Orientation: - Orientación: - - - Paper source: - Fuente del papel: - - - - - - Print - Imprimir - - - File - Fichero - - - Printer - Impresora - - - - Print To File ... - Imprimir a fichero... - - - Print dialog - Ventana de impresión - - - Size: - Tamaño: - - - Properties - Propiedades - - - Printer info: - Información de la impresora: - - - Browse - Explorar - - - Print to file - Imprimir a fichero - - - Pages from - Páginas - - - to - a - - - Selection - Selección - - - Copies - Copias - - - Collate - Recopilar - - - Other - Otro - - - Double side printing - Impresión a doble cara - - - - File %1 is not writable. -Please choose a different file name. - No se puede escribir en el fichero %1. -Elija un nombre de fichero diferente. - - - - %1 already exists. -Do you want to overwrite it? - %1 ya existe. -¿Desea sobrescribirlo? - - - - File exists - El fichero existe - - - - <qt>Do you want to overwrite it?</qt> - <qt>¿Desea sobrescribirlo?</qt> - - - - %1 is a directory. -Please choose a different file name. - %1 es un directorio. -Elija un nombre de fichero diferente. - - - - A0 - - - - - A1 - - - - - A2 - - - - - A3 - - - - - A4 - - - - - A5 - - - - - A6 - - - - - A7 - - - - - A8 - - - - - A9 - - - - - B0 - - - - - B1 - - - - - B2 - - - - - B3 - - - - - B4 - - - - - B5 - - - - - B6 - - - - - B7 - - - - - B8 - - - - - B9 - - - - - B10 - - - - - C5E - - - - - DLE - - - - - Executive - - - - - Folio - - - - - Ledger - - - - - Legal - - - - - Letter - - - - - Tabloid - - - - - US Common #10 Envelope - - - - - Custom - - - - - - &Options >> - - - - - &Print - - - - - &Options << - - - - - Print to File (PDF) - - - - - Print to File (Postscript) - - - - - Local file - - - - - Write %1 file - - - - - The 'From' value cannot be greater than the 'To' value. - - - - - QPrintPreviewDialog - - Page Setup - Configurar página - - - %1% - %1% - - - Print Preview - Previsualizar impresión - - - Next page - Página siguiente - - - Previous page - Página anterior - - - First page - Primera página - - - Last page - Última página - - - Fit width - Ajustar al ancho - - - Fit page - Ajustar a la página - - - Zoom in - Acercar - - - Zoom out - Alejar - - - Portrait - Vertical - - - Landscape - Apaisado - - - Show single page - Mostrar páginas sueltas - - - Show facing pages - Mostrar páginas encaradas - - - Show overview of all pages - Vista previa de todas las páginas - - - Print - Imprimir - - - Page setup - Configurar página - - - Close - Cerrar - - - Export to PDF - Exportar a PDF - - - Export to PostScript - Exportar a PostScript - - - - QPrintPropertiesDialog - - PPD Properties - Propiedades PPD - - - Save - Guardar - - - OK - Aceptar - - - - QPrintPropertiesWidget - - - Form - - - - - Page - - - - - Advanced - - - - - QPrintSettingsOutput - - - Form - - - - - Copies - Copias - - - - Print range - Imprimir el intervalo - - - - Print all - Imprimir todo - - - - Pages from - Páginas - - - - to - a - - - - Selection - Selección - - - - Output Settings - - - - - Copies: - - - - - Collate - Recopilar - - - - Reverse - - - - - Options - Opciones - - - - Color Mode - - - - - Color - - - - - Grayscale - - - - - Duplex Printing - - - - - None - - - - - Long side - - - - - Short side - - - - - QPrintWidget - - - Form - - - - - Printer - Impresora - - - - &Name: - - - - - P&roperties - - - - - Location: - - - - - Preview - - - - - Type: - - - - - Output &file: - - - - - ... - - - - - QProcess - - - - Could not open input redirection for reading - - - - - - Could not open output redirection for writing - - - - - Resource error (fork failure): %1 - - - - - - - - - - - - - Process operation timed out - - - - - - - - Error reading from process - - - - - - - Error writing to process - - - - - Process crashed - - - - - No program defined - - - - - Process failed to start - - - - - QProgressDialog - - - Cancel - Cancelar - - - - QPushButton - - - Open - Abrir - - - - QRadioButton - - - Check - Marcar - - - - QRegExp - - - no error occurred - no se ha producido ningún error - - - - disabled feature used - se ha usado una característica no habilitada - - - - bad char class syntax - sintaxis no válida para clase de caracteres - - - - bad lookahead syntax - sintaxis no válida para lookahead - - - - bad repetition syntax - sintaxis no válida para repetición - - - - invalid octal value - valor octal no válido - - - - missing left delim - falta el delimitador izquierdo - - - - unexpected end - fin inesperado - - - - met internal limit - se alcanzó el límite interno - - - - QSQLite2Driver - - - Error to open database - Error al abrir la base de datos - - - - Unable to begin transaction - No es posible iniciar la transacción - - - - Unable to commit transaction - No es posible enviar la transacción - - - - Unable to rollback Transaction - No es posible anular la transacción - - - - QSQLite2Result - - - Unable to fetch results - No es posible obtener los resultados - - - - Unable to execute statement - No es posible ejecutar la instrucción - - - - QSQLiteDriver - - - Error opening database - Error al abrir la base de datos - - - - Error closing database - Error al cerrar la base de datos - - - - Unable to begin transaction - No es posible iniciar la transacción - - - - Unable to commit transaction - No es posible enviar la transacción - - - Unable to roll back transaction - No es posible anular la transacción - - - - Unable to rollback transaction - - - - - QSQLiteResult - - - - - Unable to fetch row - No es posible obtener la fila - - - - Unable to execute statement - No es posible ejecutar la instrucción - - - - Unable to reset statement - No es posible reinicializar la instrucción - - - - Unable to bind parameters - No es posible ligar los parámetros - - - - Parameter count mismatch - Número de parámetros incorrecto - - - - No query - - - - - QScrollBar - - - Scroll here - Desplazar hasta aquí - - - - Left edge - Borde izquierdo - - - - Top - Parte superior - - - - Right edge - Borde derecho - - - - Bottom - Parte inferior - - - - Page left - Una página a la izquierda - - - - - Page up - Una página hacia arriba - - - - Page right - Una página a la derecha - - - - - Page down - Una página hacia abajo - - - - Scroll left - Desplazar hacia la izquierda - - - - Scroll up - Desplazar hacia arriba - - - - Scroll right - Desplazar hacia la derecha - - - - Scroll down - Desplazar hacia abajo - - - - Line up - Alinear - - - - Position - Posición - - - - Line down - Alinear por abajo - - - - QSharedMemory - - - %1: unable to set key on lock - - - - - %1: create size is less then 0 - - - - - - %1: unable to lock - - - - - %1: unable to unlock - - - - - - %1: permission denied - - - - - - %1: already exists - - - - - - %1: doesn't exists - - - - - - %1: out of resources - - - - - - %1: unknown error %2 - - - - - %1: key is empty - - - - - %1: unix key file doesn't exists - - - - - %1: ftok failed - - - - - - %1: unable to make key - - - - - %1: system-imposed size restrictions - - - - - %1: not attached - - - - - %1: invalid size - - - - - %1: key error - - - - - %1: size query failed - - - - - QShortcut - - - Space - Espacio - - - - Esc - Esc - - - - Tab - Tabulador - - - - Backtab - Tabulador hacia atrás - - - - Backspace - Borrar - - - - Return - Retorno - - - - Enter - Intro - - - - Ins - Ins - - - - Del - Supr - - - - Pause - Pausa - - - - Print - Impr Pant - - - - SysReq - PetSis - - - - Home - Inicio - - - - End - Fin - - - - Left - Izquierda - - - - Up - Arriba - - - - Right - Derecha - - - - Down - Abajo - - - - PgUp - Re Pág - - - - PgDown - Av Pág - - - - CapsLock - Bloq Mayús - - - - NumLock - Bloq Num - - - - ScrollLock - Bloq Despl - - - - Menu - Menú - - - - Help - Ayuda - - - - Back - Anterior (histórico) - - - - Forward - Siguiente (histórico) - - - - Stop - Detener - - - - Refresh - Actualizar - - - - Volume Down - Bajar el volumen - - - - Volume Mute - Silenciar - - - - Volume Up - Subir el volumen - - - - Bass Boost - Potenciar los graves - - - - Bass Up - Subir los graves - - - - Bass Down - Bajar los graves - - - - Treble Up - Subir los agudos - - - - Treble Down - Bajar los agudos - - - - Media Play - Reproducir el medio - - - - Media Stop - Detener el medio - - - - Media Previous - Medio anterior - - - - Media Next - Siguiente medio - - - - Media Record - Grabar medio - - - - Favorites - Favoritos - - - - Search - Búsqueda - - - - Standby - Reposo - - - - Open URL - Abrir URL - - - - Launch Mail - Lanzar correo - - - - Launch Media - Lanzar medio - - - - Launch (0) - Lanzar (0) - - - - Launch (1) - Lanzar (1) - - - - Launch (2) - Lanzar (2) - - - - Launch (3) - Lanzar (3) - - - - Launch (4) - Lanzar (4) - - - - Launch (5) - Lanzar (5) - - - - Launch (6) - Lanzar (6) - - - - Launch (7) - Lanzar (7) - - - - Launch (8) - Lanzar (8) - - - - Launch (9) - Lanzar (9) - - - - Launch (A) - Lanzar (A) - - - - Launch (B) - Lanzar (B) - - - - Launch (C) - Lanzar (C) - - - - Launch (D) - Lanzar (D) - - - - Launch (E) - Lanzar (E) - - - - Launch (F) - Lanzar (F) - - - - Print Screen - Imprimir pantalla - - - - Page Up - Retroceder página - - - - Page Down - Avanzar página - - - - Caps Lock - Bloqueo de mayúsculas - - - - Num Lock - Bloq num - - - - Number Lock - Bloqueo numérico - - - - Scroll Lock - Bloqueo del desplazamiento - - - - Insert - Insertar - - - - Delete - Borrar - - - - Escape - Escape - - - - System Request - Petición del sistema - - - - Select - Seleccionar - - - - Yes - Sí - - - - No - No - - - - Context1 - Contexto1 - - - - Context2 - Contexto2 - - - - Context3 - Contexto3 - - - - Context4 - Contexto4 - - - - Call - Llamar - - - - Hangup - Descolgar - - - - Flip - Voltear - - - - - Ctrl - Ctrl - - - - - Shift - May - - - - - Alt - Alt - - - - - Meta - Meta - - - - + - + - - - - F%1 - F%1 - - - - Home Page - Página de inicio - - - - QSlider - - - Page left - Una página a la izquierda - - - - Page up - Una página hacia arriba - - - - Position - Posición - - - - Page right - Una página a la derecha - - - - Page down - Una página hacia abajo - - - - QSocks5SocketEngine - - - Connection to proxy refused - - - - - Connection to proxy closed prematurely - - - - - Proxy host not found - - - - - Connection to proxy timed out - - - - - Proxy authentication failed - - - - - Proxy authentication failed: %1 - - - - - SOCKS version 5 protocol error - - - - - General SOCKSv5 server failure - - - - - Connection not allowed by SOCKSv5 server - - - - - TTL expired - - - - - SOCKSv5 command not supported - - - - - Address type not supported - - - - - Unknown SOCKSv5 proxy error code 0x%1 - - - - Socks5 timeout error connecting to socks server - Error de expiración socks5 mientras se establecía una conexión al servidor socks - - - - Network operation timed out - La operación de red ha expirado - - - - QSpinBox - - - More - Más - - - - Less - Menos - - - - QSql - - - Delete - Borrar - - - - Delete this record? - ¿Borrar este registro? - - - - - - Yes - Sí - - - - - - No - No - - - - Insert - Insertar - - - - Update - Actualizar - - - - Save edits? - ¿Guardar las modificaciones? - - - - Cancel - Cancelar - - - - Confirm - Confirmar - - - - Cancel your edits? - ¿Cancelar sus modificaciones? - - - - QSslSocket - - - Unable to write data: %1 - No es posible escribir los datos: %1 - - - - Error while reading: %1 - Error al leer: %1 - - - - Error during SSL handshake: %1 - Error durante el saludo SSL: %1 - - - - Error creating SSL context (%1) - Error al crear el contexto SSL (%1) - - - - Invalid or empty cipher list (%1) - Lista de cifras vacía o no válida (%1) - - - - Error creating SSL session, %1 - Error al crear la sesión SSL, %1 - - - - Error creating SSL session: %1 - Error al crear la sesión SSL: %1 - - - - Cannot provide a certificate with no key, %1 - No se puede proporcionar un certificado sin clave, %1 - - - - Error loading local certificate, %1 - Error al cargar el certificado local, %1 - - - - Error loading private key, %1 - Error al cargar la clave privada, %1 - - - Private key do not certificate public key, %1 - La clave privada no certifica la clave pública, %1 - - - - Private key does not certificate public key, %1 - - - - - QSystemSemaphore - - - - %1: out of resources - - - - - - %1: permission denied - - - - - %1: already exists - - - - - %1: does not exist - - - - - - %1: unknown error %2 - - - - - QTDSDriver - - - Unable to open connection - No es posible abrir la conexión - - - - Unable to use database - No es posible utilizar la base de datos - - - - QTabBar - - - Scroll Left - Desplazar hacia la izquierda - - - - Scroll Right - Desplazar hacia la derecha - - - - QTcpServer - - Socket operation unsupported - Operación socket no admitida - - - - Operation on socket is not supported - - - - - QTextControl - - - &Undo - &Deshacer - - - - &Redo - &Rehacer - - - - Cu&t - Cor&tar - - - - &Copy - &Copiar - - - - Copy &Link Location - Copiar la ubicación del en&lace - - - - &Paste - &Pegar - - - - Delete - Borrar - - - - Select All - Seleccionar todo - - - - QToolButton - - - - Press - Pulsar - - - - - Open - Abrir - - - - QUdpSocket - - - This platform does not support IPv6 - La plataforma no contempla IPv6 - - - - QUndoGroup - - - Undo - Deshacer - - - - Redo - Rehacer - - - - QUndoModel - - - <empty> - <vacío> - - - - QUndoStack - - - Undo - Deshacer - - - - Redo - Rehacer - - - - QUnicodeControlCharacterMenu - - - LRM Left-to-right mark - LRM Left-to-right mark - - - - RLM Right-to-left mark - RLM Right-to-left mark - - - - ZWJ Zero width joiner - ZWJ Zero width joiner - - - - ZWNJ Zero width non-joiner - ZWNJ Zero width non-joiner - - - - ZWSP Zero width space - ZWSP Zero width space - - - - LRE Start of left-to-right embedding - LRE Start of left-to-right embedding - - - - RLE Start of right-to-left embedding - RLE Start of right-to-left embedding - - - - LRO Start of left-to-right override - LRO Start of left-to-right override - - - - RLO Start of right-to-left override - RLO Start of right-to-left override - - - - PDF Pop directional formatting - PDF Pop directional formatting - - - - Insert Unicode control character - Insertar carácter de control Unicode - - - - QWebFrame - - - Request cancelled - - - - - Request blocked - - - - - Cannot show URL - - - - - Frame load interruped by policy change - - - - - Cannot show mimetype - - - - - File does not exist - - - - - QWebPage - - - Bad HTTP request - - - - - Submit - default label for Submit buttons in forms on web pages - - - - - Submit - Submit (input element) alt text for <input> elements with no alt, title, or value - - - - - Reset - default label for Reset buttons in forms on web pages - Reinicializar - - - - This is a searchable index. Enter search keywords: - text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index' - - - - - Choose File - title for file button used in HTML forms - - - - - No file selected - text to display in file button used in HTML forms when no file is selected - - - - - Open in New Window - Open in New Window context menu item - - - - - Save Link... - Download Linked File context menu item - - - - - Copy Link - Copy Link context menu item - - - - - Open Image - Open Image in New Window context menu item - - - - - Save Image - Download Image context menu item - - - - - Copy Image - Copy Link context menu item - Copiar imagen - - - - Open Frame - Open Frame in New Window context menu item - - - - - Copy - Copy context menu item - Copiar - - - - Go Back - Back context menu item - Precedente - - - - Go Forward - Forward context menu item - - - - - Stop - Stop context menu item - Detener - - - - Reload - Reload context menu item - - - - - Cut - Cut context menu item - Cortar - - - - Paste - Paste context menu item - Pegar - - - Select All - Select All context menu item - Seleccionar todo - - - - No Guesses Found - No Guesses Found context menu item - - - - - Ignore - Ignore Spelling context menu item - Ignorar - - - - Add To Dictionary - Learn Spelling context menu item - - - - - Search The Web - Search The Web context menu item - - - - - Look Up In Dictionary - Look Up in Dictionary context menu item - - - - - Open Link - Open Link context menu item - - - - - Ignore - Ignore Grammar context menu item - Ignorar - - - - Spelling - Spelling and Grammar context sub-menu item - - - - - Show Spelling and Grammar - menu item title - - - - - Hide Spelling and Grammar - menu item title - - - - - Check Spelling - Check spelling context menu item - - - - - Check Spelling While Typing - Check spelling while typing context menu item - - - - - Check Grammar With Spelling - Check grammar with spelling context menu item - - - - - Fonts - Font context sub-menu item - - - - - Bold - Bold context menu item - - - - - Italic - Italic context menu item - - - - - Underline - Underline context menu item - - - - - Outline - Outline context menu item - - - - - Direction - Writing direction context sub-menu item - - - - - Text Direction - Text direction context sub-menu item - - - - - Default - Default writing direction context menu item - - - - - LTR - Left to Right context menu item - - - - - RTL - Right to Left context menu item - - - - - Inspect - Inspect Element context menu item - - - - - No recent searches - Label for only item in menu that appears when clicking on the search field image, when no searches have been performed - - - - - Recent searches - label for first item in the menu that appears when clicking on the search field image, used as embedded menu title - - - - - Clear recent searches - menu item in Recent Searches menu that empties menu's contents - - - - - Unknown - Unknown filesize FTP directory listing item - Desconocido - - - - %1 (%2x%3 pixels) - Title string for images - - - - - Web Inspector - %2 - - - - - Scroll here - Desplazar hasta aquí - - - - Left edge - Borde izquierdo - - - - Top - Parte superior - - - - Right edge - Borde derecho - - - - Bottom - Parte inferior - - - - Page left - Una página a la izquierda - - - - Page up - Una página hacia arriba - - - - Page right - Una página a la derecha - - - - Page down - Una página hacia abajo - - - - Scroll left - Desplazar hacia la izquierda - - - - Scroll up - Desplazar hacia arriba - - - - Scroll right - Desplazar hacia la derecha - - - - Scroll down - Desplazar hacia abajo - - - - %n file(s) - number of chosen file - - - - - - - - JavaScript Alert - %1 - - - - - JavaScript Confirm - %1 - - - - - JavaScript Prompt - %1 - - - - - Move the cursor to the next character - - - - - Move the cursor to the previous character - - - - - Move the cursor to the next word - - - - - Move the cursor to the previous word - - - - - Move the cursor to the next line - - - - - Move the cursor to the previous line - - - - - Move the cursor to the start of the line - - - - - Move the cursor to the end of the line - - - - - Move the cursor to the start of the block - - - - - Move the cursor to the end of the block - - - - - Move the cursor to the start of the document - - - - - Move the cursor to the end of the document - - - - - Select all - Seleccionar todo - - - - Select to the next character - - - - - Select to the previous character - - - - - Select to the next word - - - - - Select to the previous word - - - - - Select to the next line - - - - - Select to the previous line - - - - - Select to the start of the line - - - - - Select to the end of the line - - - - - Select to the start of the block - - - - - Select to the end of the block - - - - - Select to the start of the document - - - - - Select to the end of the document - - - - - Delete to the start of the word - - - - - Delete to the end of the word - - - - - Insert a new paragraph - - - - - Insert a new line - - - - - QWhatsThisAction - - - What's This? - ¿Qué es esto? - - - - QWidget - - - * - * - - - - QWizard - - - Go Back - Precedente - - - - Continue - Siguiente - - - - Commit - Enviar - - - - Done - Terminar - - - Quit - Salir - - - - Help - Ayuda - - - - < &Back - < &Anterior - - - - &Finish - &Terminar - - - - Cancel - Cancelar - - - - &Help - &Ayuda - - - - &Next - - - - - &Next > - Siguie&nte > - - - - QWorkspace - - - &Restore - &Restaurar - - - - &Move - &Mover - - - - &Size - &Tamaño - - - - Mi&nimize - Mi&nimizar - - - - Ma&ximize - Ma&ximizar - - - - &Close - &Cerrar - - - - Stay on &Top - Permanecer en &primer plano - - - - - Sh&ade - Sombre&ar - - - - - %1 - [%2] - %1 - [%2] - - - - Minimize - Minimizar - - - - Restore Down - Restaurar abajo - - - - Close - Cerrar - - - - &Unshade - Q&uitar sombra - - - - QXml - - - no error occurred - no se ha producido ningún error - - - - error triggered by consumer - error debido al consumidor - - - - unexpected end of file - fin de fichero inesperado - - - - more than one document type definition - más de una definición de tipo de documento - - - - error occurred while parsing element - se ha producido un error durante el análisis de un elemento - - - - tag mismatch - etiqueta desequilibrada - - - - error occurred while parsing content - se ha producido un error durante el análisis del contenido - - - - unexpected character - carácter inesperado - - - - invalid name for processing instruction - nombre de instrucción de tratamiento no válido - - - - version expected while reading the XML declaration - se esperaba la versión al leer la declaración XML - - - - wrong value for standalone declaration - valor erróneo para la declaración independiente - - - - encoding declaration or standalone declaration expected while reading the XML declaration - se esperaba una declaración de codificación o declaración autónoma al leer la declaración XML - - - - standalone declaration expected while reading the XML declaration - se esperaba una declaración independiente al leer la declaración XML - - - - error occurred while parsing document type definition - se ha producido un error durante el análisis de la definición de tipo de documento - - - - letter is expected - se esperaba una letra - - - - error occurred while parsing comment - se ha producido un error durante el análisis de un comentario - - - - error occurred while parsing reference - se ha producido un error durante el análisis de una referencia - - - - internal general entity reference not allowed in DTD - no se permiten referencias a entidades internas generales en la DTD - - - - external parsed general entity reference not allowed in attribute value - no se permiten referencias a entidades externas generales ya analizadas en el valor de un atributo - - - - external parsed general entity reference not allowed in DTD - no se permiten referencias a entidades externas generales ya analizadas en la DTD - - - - unparsed entity reference in wrong context - referencia a entidad no analizada en un contexto no válido - - - - recursive entities - entidades recursivas - - - - error in the text declaration of an external entity - error en la declaración de texto de una entidad externa - - - - QXmlStream - - - - Extra content at end of document. - Contenido extra al final del documento. - - - - Invalid entity value. - Valor de la entidad no válido. - - - - Invalid XML character. - Carácter XML no válido. - - - - Sequence ']]>' not allowed in content. - Secuencia «]]>» no permitida en el contenido. - - - - Namespace prefix '%1' not declared - Prefijo de espacio de nombres «%1» no declarado - - - - Attribute redefined. - Atributo redefinido. - - - - Unexpected character '%1' in public id literal. - Carácter «%1» inesperado en un literal de identificación público. - - - - Invalid XML version string. - Cadena de versión XML no válida. - - - - Unsupported XML version. - Versión XML no admitida. - - - - %1 is an invalid encoding name. - %1 es un nombre de codificación no válido. - - - - Encoding %1 is unsupported - No se admite la codificación %1 - - - Invalid XML encoding name. - Nombre de codificación XML no válido. - - - - Standalone accepts only yes or no. - «Standalone» sólo acepta «sí» o «no». - - - - Invalid attribute in XML declaration. - Atributo no válido en la declaración XML. - - - - Premature end of document. - Final prematuro del documento. - - - - Invalid document. - Documento no válido. - - - - Expected - Se esperaba - - - - , but got ' - , pero se ha recibido ' - - - - Unexpected ' - No se esperaba ' - - - - Expected character data. - Se esperaban datos de carácter. - - - - Recursive entity detected. - Detectada entidad recursiva. - - - - Start tag expected. - Se esperaba etiqueta de inicio. - - - - XML declaration not at start of document. - La declaración XML no está al principio del documento. - - - - NDATA in parameter entity declaration. - NDATA en una declaración de entidad parámetro. - - - - %1 is an invalid processing instruction name. - %1 es un nombre de instrucción de procesamiento no válido. - - - - Invalid processing instruction name. - Nombre de instrucción de procesamiento no válido. - - - - - - - Illegal namespace declaration. - Declaración de espacio de nombres ilegal. - - - - Invalid XML name. - Nombre XML no válido. - - - - Opening and ending tag mismatch. - Las etiquetas de apertura y cierre no coinciden. - - - - Reference to unparsed entity '%1'. - Referencia a una entidad no analizada «%1». - - - - - - Entity '%1' not declared. - Entidad «%1» no declarada. - - - - Reference to external entity '%1' in attribute value. - Referencia a una entidad externa «%1» en el valor del atributo. - - - - Invalid character reference. - Referencia un carácter no válido. - - - - - Encountered incorrectly encoded content. - Encontrado contenido codificado incorrectamente. - - - - The standalone pseudo attribute must appear after the encoding. - El pseudoatributo «standalone» debe aparece después de la codificación. - - - - %1 is an invalid PUBLIC identifier. - %1 no es un identificador PUBLIC válido. - - - - QtXmlPatterns - - - An %1-attribute with value %2 has already been declared. - - - - - An %1-attribute must have a valid %2 as value, which %3 isn't. - - - - - Network timeout. - - - - - Element %1 can't be serialized because it appears outside the document element. - - - - - Attribute %1 can't be serialized because it appears at the top level. - - - - - Year %1 is invalid because it begins with %2. - - - - - Day %1 is outside the range %2..%3. - - - - - Month %1 is outside the range %2..%3. - - - - - Overflow: Can't represent date %1. - - - - - Day %1 is invalid for month %2. - - - - - Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; - - - - - Time %1:%2:%3.%4 is invalid. - - - - - Overflow: Date can't be represented. - - - - - - At least one component must be present. - - - - - At least one time component must appear after the %1-delimiter. - - - - - No operand in an integer division, %1, can be %2. - - - - - The first operand in an integer division, %1, cannot be infinity (%2). - - - - - The second operand in a division, %1, cannot be zero (%2). - - - - - %1 is not a valid value of type %2. - - - - - When casting to %1 from %2, the source value cannot be %3. - - - - - Integer division (%1) by zero (%2) is undefined. - - - - - Division (%1) by zero (%2) is undefined. - - - - - Modulus division (%1) by zero (%2) is undefined. - - - - - - Dividing a value of type %1 by %2 (not-a-number) is not allowed. - - - - - Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed. - - - - - Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed. - - - - - A value of type %1 cannot have an Effective Boolean Value. - - - - - Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values. - - - - - Value %1 of type %2 exceeds maximum (%3). - - - - - Value %1 of type %2 is below minimum (%3). - - - - - A value of type %1 must contain an even number of digits. The value %2 does not. - - - - - %1 is not valid as a value of type %2. - - - - - Operator %1 cannot be used on type %2. - - - - - Operator %1 cannot be used on atomic values of type %2 and %3. - - - - - The namespace URI in the name for a computed attribute cannot be %1. - - - - - The name for a computed attribute cannot have the namespace URI %1 with the local name %2. - - - - - Type error in cast, expected %1, received %2. - - - - - When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed. - - - - - No casting is possible with %1 as the target type. - - - - - It is not possible to cast from %1 to %2. - - - - - Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated. - - - - - It's not possible to cast the value %1 of type %2 to %3 - - - - - Failure when casting from %1 to %2: %3 - - - - - A comment cannot contain %1 - - - - - A comment cannot end with a %1. - - - - - No comparisons can be done involving the type %1. - - - - - Operator %1 is not available between atomic values of type %2 and %3. - - - - - An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place. - - - - - A library module cannot be evaluated directly. It must be imported from a main module. - - - - - No template by name %1 exists. - - - - - A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type. - - - - - A positional predicate must evaluate to a single numeric value. - - - - - The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid. - - - - - %1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3. - - - - - The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two. - - - - - The data of a processing instruction cannot contain the string %1 - - - - - No namespace binding exists for the prefix %1 - - - - - No namespace binding exists for the prefix %1 in %2 - - - - - - %1 is an invalid %2 - - - - - %1 takes at most %n argument(s). %2 is therefore invalid. - - - - - - - - %1 requires at least %n argument(s). %2 is therefore invalid. - - - - - - - - The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration. - - - - - The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. - - - - - The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. - - - - - %1 is not a valid XML 1.0 character. - - - - - The first argument to %1 cannot be of type %2. - - - - - If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same. - - - - - %1 was called. - - - - - %1 must be followed by %2 or %3, not at the end of the replacement string. - - - - - In the replacement string, %1 must be followed by at least one digit when not escaped. - - - - - In the replacement string, %1 can only be used to escape itself or %2, not %3 - - - - - %1 matches newline characters - - - - - %1 and %2 match the start and end of a line. - - - - - Matches are case insensitive - - - - - Whitespace characters are removed, except when they appear in character classes - - - - - %1 is an invalid regular expression pattern: %2 - - - - - %1 is an invalid flag for regular expressions. Valid flags are: - - - - - If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified. - - - - - It will not be possible to retrieve %1. - - - - - The root node of the second argument to function %1 must be a document node. %2 is not a document node. - - - - - The default collection is undefined - - - - - %1 cannot be retrieved - - - - - The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization). - - - - - A zone offset must be in the range %1..%2 inclusive. %3 is out of range. - - - - - %1 is not a whole number of minutes. - - - - - Required cardinality is %1; got cardinality %2. - - - - - The item %1 did not match the required type %2. - - - - - - %1 is an unknown schema type. - - - - - Only one %1 declaration can occur in the query prolog. - - - - - The initialization of variable %1 depends on itself - - - - - No variable by name %1 exists - - - - - The variable %1 is unused - - - - - Version %1 is not supported. The supported XQuery version is 1.0. - - - - - The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2. - - - - - No function with signature %1 is available - - - - - - A default namespace declaration must occur before function, variable, and option declarations. - - - - - Namespace declarations must occur before function, variable, and option declarations. - - - - - Module imports must occur before function, variable, and option declarations. - - - - - It is not possible to redeclare prefix %1. - - - - - Prefix %1 is already declared in the prolog. - - - - - The name of an option must have a prefix. There is no default namespace for options. - - - - - The Schema Import feature is not supported, and therefore %1 declarations cannot occur. - - - - - The target namespace of a %1 cannot be empty. - - - - - The module import feature is not supported - - - - - No value is available for the external variable by name %1. - - - - - A construct was encountered which only is allowed in XQuery. - - - - - A template by name %1 has already been declared. - - - - - The keyword %1 cannot occur with any other mode name. - - - - - The value of attribute %1 must of type %2, which %3 isn't. - - - - - The prefix %1 can not be bound. By default, it is already bound to the namespace %2. - - - - - A variable by name %1 has already been declared. - - - - - A stylesheet function must have a prefixed name. - - - - - The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this) - - - - - The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases. - - - - - The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2 - - - - - A function already exists with the signature %1. - - - - - No external functions are supported. All supported functions can be used directly, without first declaring them as external - - - - - An argument by name %1 has already been declared. Every argument name must be unique. - - - - - When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal. - - - - - In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching. - - - - - In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching. - - - - - In an XSL-T pattern, function %1 cannot have a third argument. - - - - - In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching. - - - - - In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can. - - - - - %1 is an invalid template mode name. - - - - - The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide. - - - - - The Schema Validation Feature is not supported. Hence, %1-expressions may not be used. - - - - - None of the pragma expressions are supported. Therefore, a fallback expression must be present - - - - - Each name of a template parameter must be unique; %1 is duplicated. - - - - - The %1-axis is unsupported in XQuery - - - - - %1 is not a valid name for a processing-instruction. - - - - - %1 is not a valid numeric literal. - - - - - No function by name %1 is available. - - - - - The namespace URI cannot be the empty string when binding to a prefix, %1. - - - - - %1 is an invalid namespace URI. - - - - - It is not possible to bind to the prefix %1 - - - - - Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared). - - - - - Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared). - - - - - Two namespace declaration attributes have the same name: %1. - - - - - The namespace URI must be a constant and cannot use enclosed expressions. - - - - - An attribute by name %1 has already appeared on this element. - - - - - A direct element constructor is not well-formed. %1 is ended with %2. - - - - - The name %1 does not refer to any schema type. - - - - - %1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works. - - - - - %1 is not an atomic type. Casting is only possible to atomic types. - - - - - - %1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported. - - - - - The name of an extension expression must be in a namespace. - - - - - empty - - - - - zero or one - - - - - exactly one - - - - - one or more - - - - - zero or more - - - - - Required type is %1, but %2 was found. - - - - - Promoting %1 to %2 may cause loss of precision. - - - - - The focus is undefined. - - - - - It's not possible to add attributes after any other kind of node. - - - - - An attribute by name %1 has already been created. - - - - - Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported. - - - - - %1 is an unsupported encoding. - - - - - %1 contains octets which are disallowed in the requested encoding %2. - - - - - The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character. - - - - - Ambiguous rule match. - - - - - In a namespace constructor, the value for a namespace cannot be an empty string. - - - - - The prefix must be a valid %1, which %2 is not. - - - - - The prefix %1 cannot be bound. - - - - - Only the prefix %1 can be bound to %2 and vice versa. - - - - - Circularity detected - - - - - The parameter %1 is required, but no corresponding %2 is supplied. - - - - - The parameter %1 is passed, but no corresponding %2 exists. - - - - - The URI cannot have a fragment - - - - - Element %1 is not allowed at this location. - - - - - Text nodes are not allowed at this location. - - - - - Parse error: %1 - - - - - The value of the XSL-T version attribute must be a value of type %1, which %2 isn't. - - - - - Running an XSL-T 1.0 stylesheet with a 2.0 processor. - - - - - Unknown XSL-T attribute %1. - - - - - Attribute %1 and %2 are mutually exclusive. - - - - - In a simplified stylesheet module, attribute %1 must be present. - - - - - If element %1 has no attribute %2, it cannot have attribute %3 or %4. - - - - - Element %1 must have at least one of the attributes %2 or %3. - - - - - At least one mode must be specified in the %1-attribute on element %2. - - - - - Attribute %1 cannot appear on the element %2. Only the standard attributes can appear. - - - - - Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes. - - - - - Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes. - - - - - Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes. - - - - - XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is. - - - - - The attribute %1 must appear on element %2. - - - - - The element with local name %1 does not exist in XSL-T. - - - - - Element %1 must come last. - - - - - At least one %1-element must occur before %2. - - - - - Only one %1-element can appear. - - - - - At least one %1-element must occur inside %2. - - - - - When attribute %1 is present on %2, a sequence constructor cannot be used. - - - - - Element %1 must have either a %2-attribute or a sequence constructor. - - - - - When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor. - - - - - Element %1 cannot have children. - - - - - Element %1 cannot have a sequence constructor. - - - - - - The attribute %1 cannot appear on %2, when it is a child of %3. - - - - - A parameter in a function cannot be declared to be a tunnel. - - - - - This processor is not Schema-aware and therefore %1 cannot be used. - - - - - Top level stylesheet elements must be in a non-null namespace, which %1 isn't. - - - - - The value for attribute %1 on element %2 must either be %3 or %4, not %5. - - - - - Attribute %1 cannot have the value %2. - - - - - The attribute %1 can only appear on the first %2 element. - - - - - At least one %1 element must appear as child of %2. - - - - - VolumeSlider - - - Muted - - - - - - Volume: %1% - - - - - WebCore::PlatformScrollbar - - Scroll here - Desplazar hasta aquí - - - Left edge - Borde izquierdo - - - Top - Parte superior - - - Right edge - Borde derecho - - - Bottom - Parte inferior - - - Page left - Una página a la izquierda - - - Page up - Una página hacia arriba - - - Page right - Una página a la derecha - - - Page down - Una página hacia abajo - - - Scroll left - Desplazar hacia la izquierda - - - Scroll up - Desplazar hacia arriba - - - Scroll right - Desplazar hacia la derecha - - - Scroll down - Desplazar hacia abajo - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_it.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_it.ts deleted file mode 100644 index 87271233d3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_it.ts +++ /dev/null @@ -1,6294 +0,0 @@ - - - - - QWidget - - * - - - - - QShortcut - - + - + - - - CD - CD - - - Go - Vai - - - No - No - - - Up - Sù - - - Alt - Alt - - - F%1 - F%1 - - - DOS - DOS - - - Del - Canc - - - Cut - Taglia - - - End - Fine - - - Esc - Esc - - - Ins - Ins - - - Tab - Tab - - - WWW - WWW - - - Yes - Sì - - - Back - Indietro - - - Away - Assente - - - Book - Libro - - - Call - Chiama - - - Copy - Copia - - - Ctrl - Ctrl - - - Down - Giù - - - Flip - Inverti - - - Game - Gioco - - - Help - Guida - - - Home - Inizio - - - Left - Sinistra - - - Menu - Menu - - - Meta - Meta - - - News - Novità - - - PgUp - PgSù - - - Save - Salva - - - Send - Invia - - - Shop - Negozio - - - Stop - Interrompi - - - Time - Durata - - - XFer - XFer - - - View - Visualizza - - - Split Screen - Dividi schermo - - - Clear - Pulisci - - - Close - Chiudi - - - Eject - Espelli - - - Enter - Invio - - - Kanji - Kanji - - - Music - Musica - - - Paste - Incolla - - - Pause - Pausa - - - Phone - Telefono - - - Print - Stampa - - - Reply - Rispondi - - - Right - Destra - - - Shift - MAIUSCOLE - - - Sleep - Sospendi - - - Space - Spazio - - - Tools - Strumenti - - - Video - Video - - - Hiragana - Hiragana - - - Wireless - Wireless - - - Media Record - Registra - - - Multiple Candidate - Candidato multiplo - - - Zenkaku - Zenkaku - - - Print Screen - Stampa schermata - - - Audio Rewind - Riavvolgi audio - - - Audio Repeat - Ripeti audio - - - Toggle Call/Hangup - Alterna Chiama/Riaggancia - - - Zoom In - Ingrandisci - - - Camera Shutter - Otturatore fotocamera - - - Ultra Wide Band - Banda ultra larga - - - Hangul Special - Hangul Special - - - Treble Down - Abbassa gli alti - - - Scroll Lock - Blocca scorrimento - - - Media Pause - Pausa - - - Word Processor - Elaboratore di testi - - - Volume Down - Abbassa volume - - - Volume Mute - Silenzia - - - Kana Shift - Kana MAIUSCOLE - - - Media Previous - Traccia precedente - - - Home Page - Pagina iniziale - - - Meeting - Riunione - - - Volume Up - Alza volume - - - Menu PB - Menu PB - - - Keyboard Brightness Up - Aumenta la luminosità della tastiera - - - Hangul PostHanja - Hangul PostHanja - - - Kana Lock - Blocca Kana - - - Community - Comunità - - - Launch (6) - Avvia (6) - - - Launch (7) - Avvia (7) - - - Launch (8) - Avvia (8) - - - Launch (9) - Avvia (9) - - - Launch (2) - Avvia (2) - - - Launch (3) - Avvia (3) - - - Launch (4) - Avvia (4) - - - Launch (5) - Avvia (5) - - - Launch (0) - Avvia (0) - - - Launch (1) - Avvia (1) - - - Launch (F) - Avvia (F) - - - Launch (B) - Avvia (B) - - - Launch (C) - Avvia (C) - - - Launch (D) - Avvia (D) - - - Launch (E) - Avvia (E) - - - Launch (A) - Avvia (A) - - - Delete - Elimina - - - Escape - Esc - - - Audio Random Play - Riproduci brani casualmente - - - Hangul - Hangul - - - Hangup - Riaggancia - - - Henkan - Henkan - - - Insert - Inserisci - - - Home Office - Casa e ufficio - - - Last Number Redial - Ultimo numero chiamato - - - Logoff - Disconnettiti - - - Market - Mercato - - - Massyo - Massyo - - - Bass Boost - Incremento bassi - - - Option - Opzione - - - PgDown - PgGiù - - - Reload - Ricarica - - - Return - Invio - - - Romaji - Romaji - - - Search - Cerca - - - Select - Seleziona - - - SysReq - SysReq - - - Travel - Viaggia - - - NumLock - BlocNum - - - Audio Forward - Avannza audio - - - WebCam - WebCam - - - Hiragana Katakana - Hiragana Katakana - - - Top Menu - Menu in alto - - - ScrollLock - BloccaScorrimento - - - Hot Links - Collegamenti caldi - - - Audio Cycle Track - Ripeti ciclicamente - - - Context1 - Contesto1 - - - Context2 - Contesto2 - - - Context3 - Contesto3 - - - Context4 - Contesto4 - - - Zoom Out - Riduci - - - Page Up - Pagina sù - - - Open URL - Apri URL - - - iTouch - iTouch - - - Previous Candidate - Candidato precedente - - - Toggle Media Play/Pause - Alterna Riproduci/Pausa - - - Caps Lock - BLOCCO MAIUSCOLE - - - Eisu Shift - Eisu MAIUSCOLE - - - Code input - Inserisci codice - - - Camera Focus - Messa a fuoco fotocamera - - - Adjust Brightness - Regola la luminosità - - - Spreadsheet - Foglio di calcolo - - - Eisu toggle - Alterna Eisu - - - Keyboard Brightness Down - Abbassa la luminosità della tastiera - - - Clear Grab - Elimina la cattura - - - Monitor Brightness Up - Aumenta la luminosità del monitor - - - System Request - Sistema richiesto - - - CapsLock - BLOCCOMAIUSCOLE - - - Backtab - Tab indietro - - - Bass Up - Alza i bassi - - - Battery - Batteria - - - Katakana - Katakana - - - Refresh - Aggiorna - - - Hibernate - Iberna - - - Application Left - Applicazione sinistra - - - Voice Dial - Composizione vocale - - - Browser - Navigatore - - - Keyboard Menu - Menu tastiera - - - Back Forward - Arretra Avanza - - - Launch Mail - Avvia email - - - Keyboard Light On/Off - Tastiera illuminata sì/no - - - Backspace - Indietro - - - Bass Down - Abbassa i bassi - - - Mail Forward - Intoltra email - - - Messenger - Messaggeria istantanea - - - Hangul Banja - Hangul Banja - - - Hangul Hanja - Hangul Hanja - - - Standby - Attesa - - - Hangul Start - Avvio Hangul - - - Rotation KB - Rotazione KB - - - Rotation PB - Rotazione PB - - - Documents - Documenti - - - Calculator - Calcolatrice - - - Support - Supporto - - - Suspend - Sospendi - - - Display - Schermo - - - Hangul Romaja - Hangul Romaja - - - My Sites - I miei siti - - - Rotate Windows - Ruota finestra - - - Touroku - Touroku - - - Zenkaku Hankaku - Zenkaku Hankaku - - - Hangul Jeonja - Hangul Jeonja - - - Treble Up - Alza gli alti - - - Subtitle - Sottotitoli - - - Hangul Jamo - Hangul Jamo - - - Bluetooth - Bluetooth - - - Muhenkan - Muhenkan - - - Num Lock - Bloc Num - - - Screensaver - Salva schermo - - - Number Lock - Blocca tastierino numerico - - - Spellchecker - Correttore ortografico - - - Hangul PreHanja - Hangul PreHanja - - - Terminal - Terminale - - - Add Favorite - Aggiungi ai preferiti - - - Finance - Finanza - - - Task Panel - Pannello dei compiti - - - Favorites - Preferiti - - - Forward - Avanza - - - Page Down - Pagina giù - - - Wake Up - Risveglio - - - Power Off - Spegnimento - - - LightBulb - Lampadina - - - Hankaku - Hankaku - - - Hangul End - Fine Hangul - - - Monitor Brightness Down - Abbassa la luminosità del monitor - - - History - Cronologia - - - Media Play - Riproduci - - - Media Stop - Interrompi - - - Media Next - Traccia successiva - - - Launch Media - Avvia traccia multimediale - - - Application Right - Applicazione destra - - - Pictures - Immmagini - - - - Q3TabDialog - - OK - OK - - - Help - Guida - - - Apply - Applica - - - Cancel - Annulla - - - Defaults - Preimpostati - - - - QDialogButtonBox - - OK - OK - - - &OK - &OK - - - &No - &No - - - &Yes - &Sì - - - Help - Guida - - - Open - Apri - - - Save - Salva - - - &Save - &Salva - - - Abort - Interrompi - - - Apply - Applica - - - Close - Chiudi - - - Reset - Azzera - - - Retry - Riprova - - - Restore Defaults - Ripristina i valori preimpostati - - - &Close - &Chiudi - - - Cancel - Annulla - - - Ignore - Ignora - - - Close without Saving - Chiudi senza salvare - - - N&o to All - N&o a tutti - - - Save All - Salva tutto - - - &Cancel - &Annulla - - - Discard - Rifiuta - - - Yes to &All - S&ì a tutti - - - Don't Save - Non salvare - - - - QPrintPreviewDialog - - %1% - %1% - - - Print Preview - Anteprima di stampa - - - Close - Chiudi - - - Print - Stampa - - - Fit page - Adatta zoom alla pagina - - - Zoom in - Ingrandisci - - - Landscape - Orizzontale - - - Zoom out - Riduci - - - Fit width - Adatta zoom in larghezza - - - Portrait - Verticale - - - Page Setup - Imposta pagina - - - Page setup - Imposta pagina - - - Show overview of all pages - Mostra panoramica di tutte le pagine - - - First page - Vai alla prima pagina - - - Last page - Vai all'ultima pagina - - - Show single page - Mostra pagina singola - - - Export to PDF - Esporta come PDF - - - Previous page - Vai alla pagina precedente - - - Next page - Vai alla pagina successiva - - - Show facing pages - Mostra pagine affiancate - - - Export to PostScript - Esporta come PostScript - - - - QWebPage - - Top - In alto - - - Unknown - Unknown filesize FTP directory listing item - Sconosciute - - - Align Right - Allinea a destra - - - Insert a new paragraph - Inserisci un nuovo paragrafo - - - Strikethrough - Barrato - - - Recent searches - label for first item in the menu that appears when clicking on the search field image, used as embedded menu title - Ricerche recenti - - - Stop - Stop context menu item - Interrompi - - - Select to the start of the block - Seleziona all'inizio del blocco - - - No Guesses Found - No Guesses Found context menu item - Nessun ospite trovato - - - Move the cursor to the end of the block - Sposta il cursore alla fine del blocco - - - Fullscreen Button - Media controller element - Passa a schermo intero - - - Select to the start of the line - Seleziona all'inizio della linea - - - This is a searchable index. Enter search keywords: - text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index' - Questo è un indice consultabile. Inserire le parole chiave: - - - Justify - Giustificato - - - Direction - Writing direction context sub-menu item - Direzione - - - Delete to the start of the word - Elimina all'inizio della parola - - - Unmute audio tracks - Media controller element - Riattiva l'audio delle tracce dal silenzio - - - Seek Forward Button - Media controller element - Avanza ricerca - - - Left to Right - Left to Right context menu item - Da sinistra a destra - - - Move the cursor to the next word - Sposta il cursore all'inizio della parola - - - Move the cursor to the next line - Sposta il cursore all'inizio della linea - - - JavaScript Alert - %1 - Allerta JavaScript - %1 - - - Right to Left - Right to Left context menu item - Da destra a sinistra - - - Scroll down - Scorri verso il basso - - - Scroll here - Scorri qui - - - Scroll left - Scorri verso sinistra - - - Go Back - Back context menu item - Precedente - - - Search The Web - Search The Web context menu item - Cerca nel web - - - Unmute Button - Media controller element - Riattiva l'audio dal silenzio - - - Fonts - Font context sub-menu item - Tipi di caratteri - - - Underline - Underline context menu item - Sottolineato - - - Reload - Reload context menu item - Ricarica - - - Move the cursor to the start of the block - Sposta il cursore all'inizio del blocco - - - Ignore - Ignore Spelling context menu item - Ignora - - - Paste - Paste context menu item - Incolla - - - Go Forward - Forward context menu item - Vai al successivo - - - Slider - Media controller element - Interruttore scorrevole - - - Pause Button - Media controller element - Pausa - - - Outline - Outline context menu item - Cornice - - - Bottom - In basso - - - Copy - Copy context menu item - Copia - - - Center - Centra - - - Indent - Rientra - - - %1 minutes %2 seconds - Media time description - %1 minuti %2 secondi - - - Move the cursor to the end of the line - Sposta il cursore alla fine del blocco - - - Save Image - Download Image context menu item - Salva immagine - - - Move the cursor to the start of the line - Sposta il cursore alla fine della linea - - - Copy Link - Copy Link context menu item - Copia collegamento - - - Status Display - Media controller element - Mostra stato - - - The script on this page appears to have a problem. Do you want to stop the script? - Lo script di questa pagina sembra avere alcuni problemi. Desideri fermarlo? - - - JavaScript Confirm - %1 - Conferma JavaScript - %1 - - - Insert a new line - Inserisci una nuova riga - - - Audio Element - Media controller element - Elemento audio - - - No file selected - text to display in file button used in HTML forms when no file is selected - Nessun file selezionato - - - Return streaming movie to real-time - Media controller element - Passa dal filmato streaming a quello in tempo reale - - - Check Spelling - Check spelling context menu item - Controllo ortografico - - - Return to Real-time Button - Media controller element - Passa al filmato in tempo reale - - - Web Inspector - %2 - Ispettore web - %2 - - - Page up - Pagina sù - - - Rewind movie - Media controller element - Riavvolgi video - - - No recent searches - Label for only item in menu that appears when clicking on the search field image, when no searches have been performed - Nessuna ricerca recente - - - Paste and Match Style - Incolla e corrispondi lo stile - - - Look Up In Dictionary - Look Up in Dictionary context menu item - Cerca nel dizionario - - - Outdent - Riduci rientranza - - - Inspect - Inspect Element context menu item - Ispeziona - - - Play movie in full-screen mode - Media controller element - Riproduci filmato a schermo intero - - - Ignore - Ignore Grammar context menu item - Ignora - - - Check Grammar With Spelling - Check grammar with spelling context menu item - Controlla la grammatica assieme all'ortografia - - - Insert Bulleted List - Inserisci elenchi puntati - - - JavaScript Problem - %1 - Problema di JavaScript - %1 - - - Page right - Pagina destra - - - Move the cursor to the start of the document - Sposta il cursore all'inizio del documento - - - Remaining movie time - Media controller element - Durata restante del filmato - - - Move the cursor to the next character - Sposta il cursore all'inizio del carattere - - - JavaScript Prompt - %1 - Prompt di JavaScript - %1 - - - Submit - default label for Submit buttons in forms on web pages - Sottoscrivi - - - Show Spelling and Grammar - menu item title - Mostra ortografia e grammatica - - - Default - Default writing direction context menu item - Preimpostato - - - Select to the previous line - Seleziona la riga precedente - - - Select to the previous word - Seleziona la parola precedente - - - Current movie time - Media controller element - Durata corrente del filmato - - - Redirection limit reached - Limite di reindirizzamento raggiunto - - - Check Spelling While Typing - Check spelling while typing context menu item - Controlla l'ortografia durante la digitazione - - - Clear recent searches - menu item in Recent Searches menu that empties menu's contents - Elimina ricerche recenti - - - Select to the next character - Seleziona all'inizio del carattere - - - Slider Thumb - Media controller element - Interruttore scorrevole miniature - - - %1 seconds - Media time description - %1 secondi - - - Text Direction - Text direction context sub-menu item - Direzione del testo - - - Delete to the end of the word - Elimina alla fine della parola - - - Select to the end of the line - Seleziona alla fine della linea - - - Submit - Submit (input element) alt text for <input> elements with no alt, title, or value - Sottoscrivi - - - Loading... - Media controller status message when the media is loading - Caricamento... - - - Save Link... - Download Linked File context menu item - Salva collegamento... - - - Open Link - Open Link context menu item - Apri collegamento - - - Scroll up - Scorri verso l'alto - - - Spelling - Spelling and Grammar context sub-menu item - Ortografia - - - Live Broadcast - Media controller status message when watching a live broadcast - Trasmissione in diretta - - - Video Element - Media controller element - Elemento video - - - Subscript - Sottoscritto - - - Superscript - Soprascritto - - - Bold - Bold context menu item - Grassetto - - - Hide Spelling and Grammar - menu item title - Nascondi ortografia e granmmatica - - - Copy Image - Copy Link context menu item - Copia immagine - - - Select to the start of the document - Seleziona all'inizio del documento - - - Add To Dictionary - Learn Spelling context menu item - Aggiungi nel dizionario - - - Remaining Time - Media controller element - Tempo rimanente - - - Seek quickly forward - Media controller element - Avanza velocemente nella ricerca - - - %1 hours %2 minutes %3 seconds - Media time description - %1 ore %2 minuti %3 secondi - - - Seek quickly back - Media controller element - Arretra velocemente nella ricerca - - - Cut - Cut context menu item - Taglia - - - Move the cursor to the previous character - Sposta il cursore al carattere precedente - - - Video element playback controls and status display - Media controller element - Visualizza lo stato e i controlli per la riproduzione dei video - - - Insert Numbered List - Inserisci elenco numerato - - - Select to the end of the document - Seleziona alla fine del documento - - - Select to the end of the block - Seleziona alla fine del blocco - - - Select All - Seleziona tutto - - - Movie time scrubber - Media controller element - Azzera durata del filmato - - - Scroll right - Scorri verso destra - - - Bad HTTP request - Cattiva richiesta HTTP - - - Rewind Button - Media controller element - Riavvolgi - - - Indefinite time - Media time description - Tempo indefinito - - - Open Frame - Open Frame in New Window context menu item - Apri fotogramma - - - Current movie status - Media controller element - Stato corrente del filmato - - - %1 days %2 hours %3 minutes %4 seconds - Media time description - %1 giorni %2 ore %3 minuti %4 secondi - - - Move the cursor to the previous word - Sposta il cursore alla parola precedente - - - Move the cursor to the previous line - Sposta il cursore alla linea precedente - - - Seek Back Button - Media controller element - Arretra nella ricerca - - - %n file(s) - - %n fichier - %n file - - - - %1 (%2x%3 pixels) - Title string for images - %1 (%2x%3 pixels) - - - Left edge - A sinistra - - - Page down - Pagina giù - - - Page left - Pagina sinistra - - - Missing Plug-in - Plug-in mancante - - - Reset - default label for Reset buttons in forms on web pages - Azzera - - - Align Left - Allinea a sinistra - - - Select to the previous character - Seleziona il carattere precedente - - - Mute audio tracks - Media controller element - Silenzia le tracce - - - Audio element playback controls and status display - Media controller element - Visualizza lo stato e i controlli per la riproduzione dell'audio - - - Begin playback - Media controller element - Inizia la riproduzione - - - Choose File - title for file button used in HTML forms - Seleziona file - - - Pause playback - Media controller element - Pausa - - - Open Image - Open Image in New Window context menu item - Apri immagine - - - Mute Button - Media controller element - Silenzia - - - Play Button - Media controller element - Riproduci - - - Right edge - A destra - - - Elapsed Time - Media controller element - Tempo trascorso - - - Move the cursor to the end of the document - Sposta il cursore alla fine del documento - - - Remove formatting - Rimuovi formattazione - - - Open in New Window - Open in New Window context menu item - Apri in una nuova finestra - - - Select to the next word - Seleziona fino alla parola successiva - - - Select to the next line - Seleziona fino alla riga successiva - - - Movie time scrubber thumb - Media controller element - Azzera miniatura durata del filmato - - - Italic - Italic context menu item - Corsivo - - - - QFile - - Cannot remove source file - Impossibile rimuovere il file sorgente - - - Cannot create %1 for output - Impossibile creare %1 per la scrittura - - - Failure to write block - Impossibile scrivere un blocco - - - Cannot open %1 for input - Impossibile aprire %1 per la lettura - - - Destination file exists - Il file di destinazione esiste già - - - Cannot open for output - Impossibile aprire il file per la scrittura - - - Will not rename sequential file using block copy - I file sequenziali non verreanno rinominati utilizzando la copia del blocco - - - - QFileDialog - - Back - Indietro - - - File - File - - - Open - Apri - - - &Open - &Apri - - - &Save - &Salva - - - Drive - Unità - - - Show - Mostra - - - '%1' is write protected. -Do you want to delete it anyway? - '%1' è protetto in scrittura. -Eliminare il file comunque? - - - File &name: - &Nome file: - - - Alias - Mac OS X Finder - Alias - - - File Folder - Match Windows Explorer - Cartella file - - - New Folder - Nuova cartella - - - Shortcut - All other platforms - Scorciatoia - - - Parent Directory - Cartella superiore - - - &New Folder - &Nuova cartella - - - Remove - Elimina - - - My Computer - Computer - - - Look in: - Cerca in: - - - Create a New Folder - Crea nuova cartella - - - Files of type: - Tipi di file: - - - Find Directory - Cerca nella cartella - - - Show &hidden files - Mostra file &nascosti - - - Are sure you want to delete '%1'? - Sei sicuro di volere eliminare '%1' ? - - - Save As - Salva come - - - %1 -Directory not found. -Please verify the correct directory name was given. - %1 -Cartella non trovata. -Verificare il nome della cartella che sia corretto. - - - List View - Elenco - - - &Choose - &Seleziona - - - &Delete - &Elimina - - - All Files (*) - Tutti i file (*) - - - Directories - Cartelle - - - All Files (*.*) - Tutti i file (*.*) - - - &Rename - &Rinomina - - - Could not delete directory. - Impossibile eliminare la cartella. - - - Directory: - Cartella: - - - Unknown - Sconosciuto - - - %1 already exists. -Do you want to replace it? - Il file %1 esiste già. -Sostituire il file? - - - Folder - All other platforms - Cartella - - - Forward - Successivo - - - Go forward - Vai al successivo - - - Go to the parent directory - Vai al livello superiore della cartella - - - Recent Places - Risorse recenti - - - Go back - Torna indietro - - - Change to detail view mode - Passa alla visualizzazione come dettagli - - - Create New Folder - Crea nuoba cartella - - - Detail View - Dettagli - - - %1 -File not found. -Please verify the correct file name was given. - %1 -File non trovato. -Verificare il nome del file che sia corretto. - - - Change to list view mode - Passa alla visualizzazione come elenco - - - - Q3TextEdit - - Cu&t - &Taglia - - - &Copy - Cop&ia - - - &Redo - &Ripeti - - - &Undo - &Annulla - - - Clear - Pulisci - - - &Paste - &Incolla - - - Select All - Seleziona tutto - - - - QLineEdit - - Cu&t - &Taglia - - - &Copy - Cop&ia - - - &Redo - &Ripeti - - - &Undo - &Annulla - - - &Paste - &Incolla - - - Delete - Elimina - - - Select All - Seleziona tutto - - - - QTextControl - - Cu&t - &Taglia - - - &Copy - Cop&ia - - - &Redo - &Ripeti - - - &Undo - &Annulla - - - &Paste - &Incolla - - - Delete - Elimina - - - Select All - Seleziona tutto - - - Copy &Link Location - Copia &collegamento dell'indirizzo di destinazione - - - - QDockWidget - - Dock - Aggancia - - - Close - Chiudi - - - Float - Mobile - - - - QDialog - - Done - Fine - - - What's This? - Che cos'è? - - - - QWizard - - Done - Operazione completata - - - Help - Guida - - - &Help - &Guida - - - &Next - &Successivo - - - Cancel - Annulla - - - Commit - Deposita - - - Continue - Continua - - - &Finish - &Fine - - - &Next > - &Avanti > - - - Go Back - Torna indietro - - - < &Back - < &Indietro - - - - QPageSetupWidget - - Form - Modulo - - - bottom margin - Marginre inferiore - - - Paper - Foglio - - - Paper source: - Alimentazione: - - - Centimeters (cm) - Centimetri (cm) - - - right margin - Margine destro - - - Margins - Margini - - - Landscape - Orizzontale - - - Width: - Larghezza: - - - Orientation - Orientamento - - - Portrait - Verticale - - - top margin - Marginre superiore - - - left margin - Marginre sinistro - - - Page size: - Dimensioni pagina: - - - Reverse portrait - Verticale capovolto - - - Millimeters (mm) - Millimetri (mm) - - - Points (pt) - Punti (pt) - - - Inches (in) - Pollici (in) - - - Reverse landscape - Orizzontale capovolto - - - Height: - Altezza: - - - - QPrintPropertiesWidget - - Form - Modulo - - - Page - Pagina - - - Advanced - Avanzato - - - - QMdiSubWindow - - Help - Guida - - - Menu - Menu - - - &Move - &Sposta - - - &Size - &Ridimensiona - - - Close - Chiudi - - - Minimize - Riduci a icona - - - Shade - Arrotola - - - Stay on &Top - &Sempre in primo piano - - - &Close - &Chiudi - - - - [%1] - - [%1] - - - %1 - [%2] - %1 - [%2] - - - &Restore - &Ripristina - - - Restore - Ripristina - - - Maximize - Ingrandisci - - - Unshade - Srotola - - - Mi&nimize - &Riduci a icona - - - Ma&ximize - &Ingrandisci - - - Restore Down - Ripristina in basso - - - - QDoubleSpinBox - - Less - Meno - - - More - Più - - - - QSpinBox - - Less - Meno - - - More - Più - - - - QDirModel - - Name - Nome - - - Size - Dimensioni - - - Kind - Match OS X Finder - Tipologia - - - Type - All other platforms - Tipo - - - Date Modified - Data di modifica - - - - QFileSystemModel - - Name - Nome - - - Size - Dimensioni - - - %1 GB - %1 GB - - - %1 KB - %1 KB - - - %1 MB - %1 MB - - - %1 TB - %1 TB - - - <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. - <b>Il nome "%1" non può essere usato.</b><p>Provare ad utilizzare un altro nome con meno caratteri o senza simboli di punteggiatura. - - - %1 bytes - %1 byte - - - My Computer - Computer - - - Computer - Computer - - - Invalid filename - Nome file non valido - - - %1 byte(s) - %1 byte - - - Kind - Match OS X Finder - Tipologia - - - Type - All other platforms - Tipo - - - Date Modified - Data di modifica - - - - QPPDOptionsModel - - Name - Nome - - - Value - Valore - - - - QScriptDebuggerLocalsModel - - Name - Nome - - - Value - Valore - - - - QScriptDebuggerStackModel - - Name - Nome - - - Level - Livello - - - Location - Percorso - - - - QScriptDebuggerCodeFinderWidget - - Next - Successivo - - - Close - Chiudi - - - Whole words - Parole intere - - - Previous - Precedente - - - <img src=":/qt/scripttools/debugging/images/wrap.png">&nbsp;Search wrapped - <img src=":/qt/scripttools/debugging/images/wrap.png">&nbsp;Ricerca ripresa - - - Case Sensitive - MAIUSCOLE/minuscole - - - - QComboBox - - Open - Apri - - - True - Vero - - - Close - Chiudi - - - False - Falso - - - - QMenu - - Open - Apri - - - Close - Chiudi - - - Execute - Esegui - - - - QPushButton - - Open - Apri - - - - QToolButton - - Open - Apri - - - Press - Premi - - - - QUndoGroup - - Redo - Ripeti - - - Undo - Annulla - - - - QUndoStack - - Redo - Ripeti - - - Undo - Annulla - - - - Q3DataTable - - True - Vero - - - False - Falso - - - Delete - Elimina - - - Insert - Inserisci - - - Update - Aggiorna - - - - QScriptEngineDebugger - - View - Visualizza - - - Stack - Pila - - - Debug Output - Uscita di debug - - - Breakpoints - Punti di interruzione - - - Qt Script Debugger - Debugger di script Qt - - - Locals - Locali - - - Search - Cerca - - - Error Log - Registro degli errori - - - Console - Console - - - Loaded Scripts - Script caricati - - - - QSslSocket - - Error creating SSL session: %1 - Errore nella creazione della sessione SSL: %1 - - - Error creating SSL session, %1 - Errore nella creazione della sessione SSL, %1 - - - The certificate's notAfter field contains an invalid time - Il campo notAfter del certificato contiene un'ora non valida - - - No error - Nessun errorre - - - Cannot provide a certificate with no key, %1 - Impossibile fornire un certificato senza chiave, %1 - - - Unable to write data: %1 - Impossibile scrivere i dati: %1 - - - The basicConstraints path length parameter has been exceeded - Il parametro di lunghezza di percorso basicConstraints è stato superato - - - The certificate has expired - Il certificato è scaduto - - - Error during SSL handshake: %1 - Errore nell'inizializzazione SSL: %1 - - - Error loading local certificate, %1 - Errore nel caricamento del certificato locale, %1 - - - The certificate is self-signed, and untrusted - Il certificato è firmato da sé e non affidabile - - - The peer did not present any certificate - La controparte non ha presentato nessun certificato - - - The root CA certificate is marked to reject the specified purpose - Il certificato radice dell'autorità di certificazione è segnato per rifiutare lo scopo specifico - - - Invalid or empty cipher list (%1) - Elenco di cifrari non valido o vuoto (%1) - - - No certificates could be verified - Non è stato possibile verificare nessun certificato - - - The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate - Il certificato candidato attuale dell'emittente è stato rifiutato perché erano presenti il nome dell'emittente e il numero di serie, e non corrispondono all'identificativo della chiave di autorità del certificato attuale - - - The root CA certificate is not trusted for this purpose - Il certificato radice dell'autorità di certificazione non è affidabile questo scopo - - - The host name did not match any of the valid hosts for this certificate - Il nome dell'host non coincide con nessuno degli host validi per questo certificato - - - The root certificate of the certificate chain is self-signed, and untrusted - Il certificato radice della catena di certificati è firmato da sé e non affidabile - - - The certificate signature could not be decrypted - Impossibile decifrare la firma del certificato - - - The supplied certificate is unsuitable for this purpose - Il certificato fornito non è adatto per questo scopo - - - Private key does not certify public key, %1 - La chiave privata non certifica quella pubblica, %1 - - - Error creating SSL context (%1) - Errore nella creazione del contesto SSL (%1) - - - The issuer certificate could not be found - Impossibile trovare il certificato dell'emittente - - - Unknown error - Errore sconosciuto - - - The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate - Il certificato candidato attuale dell'emittente è stato rifiutato perché il nome del suo oggetto non corrisponde al nome dell'emittente del certificato attuale - - - Error while reading: %1 - Errore nella lettura: %1 - - - The certificate's notBefore field contains an invalid time - Il campo notBefore del certificato contiene un'ora non valida - - - Error loading private key, %1 - Errore nel caricamento della chiave privata, %1 - - - The certificate is not yet valid - Il certificato non è ancora valido - - - The public key in the certificate could not be read - Impossibile leggere la chiave pubblica del certificato - - - One of the CA certificates is invalid - Uno dei certificati dell'autorità di certificazione non è valido - - - The signature of the certificate is invalid - La firma del certificato non è valida - - - The issuer certificate of a locally looked up certificate could not be found - Le certificat de l'émetteur d'un certificat converti localement est introuvable - - - Unable to decrypt data: %1 - Impossibile decifrare i dati: %1 - - - - QLocalSocket - - %1: Connection error - %1: Errore di connessione - - - %1: Connection refused - %1: Connessione rifiutata - - - %1: Unknown error %2 - %1: errore sconosciuto %2 - - - %1: Socket access error - %1: Errore di accesso al socket - - - %1: Socket resource error - %1: Errore di risorsa del socket - - - %1: The socket operation is not supported - %1: L'operazione sul socket non è supportata - - - %1: Invalid name - %1: Nome non valido - - - %1: Unknown error - %1: Errore sconosciuto - - - %1: Socket operation timed out - %1: Operazione sul socket scaduta - - - %1: Datagram too large - %1: Datagramma troppo grande - - - %1: Remote closed - %1: Host remoto chiuso - - - - QOCIResult - - Unable to get statement type - Impossibile recuperare il tipo di dichiarazione - - - Unable to alloc statement - Impossibile allocare la dichiarazione - - - Unable to goto next - Impossibile passare al successivo - - - Unable to execute statement - Impossibile eseguire la dichiarazione - - - Unable to bind column for batch execute - Impossibile collegare la colonna per l'esecuzione in serie - - - Unable to prepare statement - Impossibile preparare la dichiarazione - - - Unable to execute batch statement - Impossibile eseguire la dichiarazione in serie - - - Unable to bind value - Impossibile collegare il valore - - - - QDeclarativeAnchors - - Cannot anchor item to self. - Impossibile ancorare un elemento a sè stesso. - - - Possible anchor loop detected on horizontal anchor. - Possibile ciclo ancorato rilevato all'ancoramento orizzontale. - - - Cannot anchor to a null item. - Impossibile ancorare a un elemento nullo. - - - Cannot specify top, bottom, and vcenter anchors. - Impossibile specificare ancore in alto, in basso e al centro verticale. - - - Possible anchor loop detected on centerIn. - Possibile ciclo ancorato rilevato al centramento. - - - Baseline anchor cannot be used in conjunction with top, bottom, or vcenter anchors. - L'ancora sulla linea base non è utilizzabile assieme alle ancore in alto, in basso o al centro verticale. - - - Cannot specify left, right, and hcenter anchors. - Impossibile specificare ancore a sinistra, destra e centro orizzontale. - - - Possible anchor loop detected on vertical anchor. - Possibile ciclo ancorato rilevato all'ancoramento verticale. - - - Cannot anchor a horizontal edge to a vertical edge. - Impossibile ancorare un bordo orizzontale a uno verticale. - - - Cannot anchor a vertical edge to a horizontal edge. - Impossibile ancorare un bordo verticale a uno orizzontale. - - - Cannot anchor to an item that isn't a parent or sibling. - Impossibile ancorare a un elemento che non sia padre o di pari livello. - - - Possible anchor loop detected on fill. - Possibile ciclo ancorato rilevato al riempimento. - - - - QDeclarativeCompositeTypeManager - - %1 %2 - %1 %2 - - - Resource %1 unavailable - Risors %1 non disponbile - - - Type %1 unavailable - Tipo %1 non disponibile - - - Namespace %1 cannot be used as a type - Lo spazio di nomi %1 non può essere usato come tipo - - - - Phonon::MMF::AudioEqualizer - - %1 Hz - %1 Hz - - - - QFontDialog - - &Font - &Tipi di carattere - - - &Size - &Dimensioni - - - Sample - Esempio - - - Font st&yle - &Stile caratteri - - - Wr&iting System - Sistema di sc&rittura - - - Select Font - Seleziona i caratteri - - - &Underline - Sotto&lineato - - - Effects - Effetti - - - Stri&keout - &Barrato - - - - Q3Wizard - - &Help - &Guida - - - &Cancel - &Annulla - - - &Finish - &Fine - - - &Next > - &Avanti > - - - < &Back - < &Indietro - - - - QWorkspace - - &Move - &Sposta - - - &Size - &Ridimensiona - - - Close - Chiudi - - - Minimize - Riduci a icona - - - Stay on &Top - &Sempre in primo piano - - - &Close - &Chiudi - - - %1 - [%2] - %1 - [%2] - - - Sh&ade - &Arrotola - - - &Restore - &Ripristina - - - &Unshade - &Srotola - - - Mi&nimize - &Riduci a icona - - - Ma&ximize - &Ingrandisci - - - Restore Down - Ripristina in basso - - - - QColorDialog - - &Red: - &Rosso: - - - &Sat: - &Saturazione: - - - &Val: - &Valore: - - - Hu&e: - &Tonalità: - - - Select Color - Colore selezionato - - - &Add to Custom Colors - &Aggiungi ai colori personalizzati - - - Bl&ue: - Bl&u : - - - &Green: - &Verde: - - - &Basic colors - Colori di &base - - - &Custom colors - &Colori personalizzati - - - A&lpha channel: - Canale a&lpha : - - - - QNetworkSessionPrivateImpl - - Roaming error - Errore di roaming - - - The session was aborted by the user or system. - La sessione è stata interrotta dall'utente o dal sistema. - - - The requested operation is not supported by the system. - L'operazione richiesta non è supportata dal sistema. - - - Session aborted by user or system - Sessione interrotta dall'utente o dal sistema - - - Unidentified Error - Errore non identificato - - - Roaming was aborted or is not possible. - Roaming interrotto o impossibile. - - - The specified configuration cannot be used. - La configurazione specificata non può essere usata. - - - Unknown session error. - Errore di sessione sconosciuto. - - - - QSharedMemory - - %1: system-imposed size restrictions - %1: restrizioni di sistema sulla dimensione - - - %1: doesn't exists - %1: non esiste - - - %1: key is empty - %1: la chiave è vuota - - - %1: key error - %1 : errore di chiave - - - %1: create size is less then 0 - %1: la dimensione creata è inferiore a 0 - - - %1: already exists - %1: esiste già - - - %1: unknown error %2 - %1: errore sconosciuto %2 - - - %1: invalid size - %1: dimensione non valida - - - %1: unable to make key - %1: impossibile creare la chiave - - - %1: unable to set key on lock - %1: impossibile impostare la chiave sul blocco - - - %1: unable to unlock - %1: impossibile sbloccare - - - %1: permission denied - %1: permesso negato - - - %1: ftok failed - %1: ftok non riuscito - - - %1: out of resources - %1: risorse insufficienti - - - %1: not attached - %1: non allegato - - - %1: UNIX key file doesn't exist - %1: il file chiave UNIX non esiste - - - %1: doesn't exist - %1: non esistono - - - %1: size query failed - %1: interrogazione della dimensione non riuscita - - - %1: unable to lock - %1: impossibile bloccare - - - - QXmlStream - - Reference to unparsed entity '%1'. - Riferimento all'entità '%1' non analizzata. - - - Unexpected character '%1' in public id literal. - Carattere inatteso "%1" in letterale identificativo pubblico. - - - Illegal namespace declaration. - Dichiarazione di spazio di nomi non consentita. - - - Invalid XML character. - Carattere XML non valido. - - - Expected character data. - Erano attesi dati di caratteri. - - - Standalone accepts only yes or no. - "Standalone" accetta solo "yes" o "no". - - - Invalid XML version string. - Stringa di versione XML non valida. - - - Invalid processing instruction name. - Nome d'istruzione non valido. - - - Namespace prefix '%1' not declared - Prefisso "%1" dello spazio di nomi non dichiarato - - - Entity '%1' not declared. - Entità '%1' non dichiarata. - - - %1 is an invalid processing instruction name. - %1 non è un'istruzione di processo valida. - - - The standalone pseudo attribute must appear after the encoding. - Lo pseudo-attributo "standalone" deve comparire dopo la codifica. - - - Sequence ']]>' not allowed in content. - Sequenza ']]>' non consentita nel contesto. - - - %1 is an invalid encoding name. - %1 non è un nome di codifica valido. - - - , but got ' - , invece si è ottenuto ' - - - Start tag expected. - Ci si attendeva un marcatore d'inizio. - - - Invalid character reference. - Riferimento di carattere non valido. - - - Reference to external entity '%1' in attribute value. - Riferimento all'entità esterna '%1' nel valore dell'attributo. - - - Expected - Atteso - - - Invalid document. - Documento non valido. - - - Opening and ending tag mismatch. - Il marcatore d'inizio e quello di fine devono corrispondere. - - - Encountered incorrectly encoded content. - Trovato contenuto con codifica non corretta. - - - Invalid attribute in XML declaration. - Attributo non valido nella dichiarazione XML. - - - Attribute redefined. - Attributo ridefinito. - - - %1 is an invalid PUBLIC identifier. - %1 non è un identificatore PUBLIC valido. - - - Extra content at end of document. - Contenuti eccedenti alla fine del documento. - - - Invalid XML name. - Nome XML non valido. - - - Premature end of document. - Chiusura anticipata del documento. - - - XML declaration not at start of document. - La dichiarazione XML deve trovarsi all'inizio del documento. - - - Recursive entity detected. - Entità ricorsiva rilevata. - - - Unsupported XML version. - Versione di XML non supportata. - - - Unexpected ' - Inatteso ' - - - Invalid entity value. - Valore dell'entità non valido. - - - Encoding %1 is unsupported - La codifica %1 non è supportata - - - NDATA in parameter entity declaration. - NDATA all'interno di una dichiarazione d'entità di parametri. - - - - QProcess - - Error writing to process - Errore in scrittura sul processo - - - Resource error (fork failure): %1 - Errore di risorse (fork non riuscito): %1 - - - Error reading from process - Errore in lettura dal processo - - - Process failed to start: %1 - Avvio del processo non riuscito: %1 - - - Could not open input redirection for reading - Impossibile aprire in lettura la ridirezione dell'ingresso - - - No program defined - Nessun programma definito - - - Could not open output redirection for writing - Impossibile aprire in scrittura la ridirezione dell'uscita - - - Process operation timed out - Tempo scaduto per l'operazione del processo - - - Process crashed - Il processo è andato in crash - - - - QNativeSocketEngine - - The proxy type is invalid for this operation - Il tipo di proxy non è valido per questa operazione - - - Network operation timed out - Operazione di rete scaduta - - - The remote host closed the connection - L'host remoto ha chiuso la connessione - - - Invalid socket descriptor - Descrittore di socket non valido - - - Host unreachable - Host irraggiungibile - - - Protocol type not supported - Tipo di protocollo non supportato - - - Datagram was too large to send - Datagramma troppo grande per essere inviato - - - Attempt to use IPv6 socket on a platform with no IPv6 support - Tentativo di usare un socket IPv6 su una piattaforma senza supporto IPv6 - - - Unable to receive a message - Impossibile ricevere un messaggio - - - Permission denied - Permesso negato - - - Connection refused - Connessione rifiutata - - - Unable to write - Impossibile scrivere - - - Another socket is already listening on the same port - Un altro socket è già in ascolto sulla stessa porta - - - Unable to send a message - Impossibile inviare un messaggio - - - The bound address is already in use - L'indirizzo vincolato è già in uso - - - Connection timed out - Connessione scaduta - - - Network error - Errore di rete - - - Unsupported socket operation - Operazione sul socket non supportata - - - Operation on non-socket - Operazione su un non-socket - - - Unable to initialize broadcast socket - Impossibile inizializzare socket di broadcast - - - Unknown error - Errore sconosciuto - - - Unable to initialize non-blocking socket - Impossibile inizializzare socket non bloccante - - - The address is protected - L'indirizzo è protetto - - - Network unreachable - Rete irraggiungibile - - - The address is not available - L'indirizzo non è disponibile - - - Out of resources - Risorse terminate - - - - QNetworkAccessFtpBackend - - No suitable proxy found - Nessun proxy adatto trovato - - - Error while downloading %1: %2 - Errore nello scaricamento di %1: %2 - - - Error while uploading %1: %2 - Errore nell'invio di %1: %2 - - - Cannot open %1: is a directory - Impossibile aprire %1: è una cartella - - - Logging in to %1 failed: authentication required - Accesso a %1 non riuscito: autenticazione richiesta - - - - QNetworkAccessHttpBackend - - No suitable proxy found - Nessun proxy adatto trovato - - - - QCheckBox - - Check - Spunta - - - Toggle - Commuta - - - Uncheck - Togli spunta - - - - QRadioButton - - Check - Spunta - - - - Q3TitleBar - - Close - Chiudi - - - Minimize - Riduci a icona - - - Displays the name of the window and contains controls to manipulate it - Mostra il nome della finestra e contiene i controlli per manipolarla - - - Makes the window full screen - Mostra la finestra a schermo intero - - - System - Sistema - - - Maximize - Ingrandisci - - - Contains commands to manipulate the window - Contiene i comandi per manipolare la finestra - - - Restore up - Ripristina in alto - - - Puts a minimized window back to normal - Ripristina una finestra minimizzata - - - Closes the window - Chiude la finestra - - - Puts a maximized window back to normal - Ripristina una finestra massimizzata - - - Moves the window out of the way - Toglie di torno la finestra - - - Restore down - Ripristina in basso - - - - QScriptNewBreakpointWidget - - Close - Chiudi - - - - Phonon:: - - Games - Giochi - - - Music - Musica - - - Video - Video - - - Communication - Comunicazione - - - Accessibility - Accessibilità - - - Notifications - Notifiche - - - - Phonon::VolumeSlider - - Muted - In silenzio - - - Volume: %1% - Volume : %1% - - - Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1% - Utilizzare questo interruttore scorrevole per regolare il volume. La posizione più a sinistra è 0% mentre quella destra è %1% - - - - Q3LocalFs - - Could not open -%1 - Impossibile aprire -%1 - - - Could not remove file or directory -%1 - Impossibile rimuovere il file o la cartella -%1 - - - Could not create directory -%1 - Impossibile creare la cartella -%1 - - - Could not read directory -%1 - Impossibile leggere la cartella -%1 - - - Could not rename -%1 -to -%2 - Impossibile rinominare -%1 -a -%2 - - - Could not write -%1 - Impossibile scrivere -%1 - - - - QDial - - QDial - QDial - - - SliderHandle - Levetta del cursore - - - SpeedoMeter - Tachimetro - - - - QAccessibleButton - - Press - Premi - - - - QSocks5SocketEngine - - Network operation timed out - Operazione di rete scaduta - - - Connection to proxy closed prematurely - Connessione al proxy chiusa prematuramente - - - Proxy authentication failed: %1 - Autenticazione al proxy non riuscita: %1 - - - Proxy authentication failed - Autenticazione al proxy non riuscita - - - General SOCKSv5 server failure - Errore generale del server SOCKSv5 - - - Unknown SOCKSv5 proxy error code 0x%1 - Codice di errore sconosciuto 0x%1 del proxy SOCKSv5 - - - Connection not allowed by SOCKSv5 server - Connessione non consentita dal server SOCKSv5 - - - SOCKSv5 command not supported - Comando SOCKSv5 non supportato - - - Connection to proxy timed out - Connessione al proxy scaduta - - - Proxy host not found - Host proxy non trovato - - - TTL expired - TTL scaduto - - - Address type not supported - Tipo di indirizzo non supportato - - - Connection to proxy refused - Connessione al proxy rifiutata - - - SOCKS version 5 protocol error - Errore di protocollo SOCKS versione 5 - - - - Phonon::MMF - - Could not connect - Impossibile connettersi - - - Access denied - Accesso negato - - - Invalid protocol - Protocollo non valido - - - No error - Nessun errorre - - - Audio Output - Uscita audio - - - Disconnected - Disconnesso - - - Server alert - Avviso del server - - - Out of memory - Memoria esaurita - - - Not supported - Non supportato - - - Invalid URL - URL non valido - - - Video output error - Errore nell'uscita video - - - In use - In uso - - - Insufficient bandwidth - Banda insufficiente - - - Already exists - Esiste già - - - Audio output error - Errore nell'uscita audio - - - Multicast error - Errore multicast - - - Proxy server not supported - Server proxy non supportato - - - Permission denied - Permesso negato - - - Not found - Non trovato - - - Not ready - Non pronto - - - Proxy server error - Errore nel server proxy - - - The audio output device - Il dispositivo di uscita dell'audio - - - Streaming not supported - Streaming non supportato - - - Audio or video components could not be played - Impossibile leggere i componenti audio o video - - - Underflow - Scarso flusso - - - Network communication error - Errore di comunicazione di rete - - - Overflow - Sovraccarico - - - Network unavailable - Rete non disponibile - - - Path not found - Percorso non trovato - - - Decoder error - Errore di decodifica - - - DRM error - Errore di DRM - - - Unknown error (%1) - Errore sconosciuto (%1) - - - - QRegExp - - invalid category - categoria non valida - - - bad lookahead syntax - sintassi errata della ricerca in avanti - - - no error occurred - nessun errore - - - missing left delim - delimitatore sinistro mancante - - - bad char class syntax - sintassi errata di classe di caratteri - - - disabled feature used - è stata usata una funzione disabilitata - - - invalid octal value - valore ottale non valido - - - bad repetition syntax - sintassi errata di ripetizione - - - met internal limit - raggiunto un limite interno - - - invalid interval - intervallo non valido - - - unexpected end - fine inattesa - - - - QWhatsThisAction - - What's This? - Che cos'è? - - - - QDeclarativeTextInput - - Could not instantiate cursor delegate - Impossibile istanziare il delegato del cursore - - - Could not load cursor delegate - Impossibile caricare il delegato del cursore - - - - Q3UrlOperator - - The protocol `%1' does not support getting files - Il protocollo `%1' non consente la ricezione dei file - - - The protocol `%1' does not support renaming files or directories - Il protocollo `%1' non consente la rinomina dei file o delle cartelle - - - The protocol `%1' does not support listing directories - Il protocollo `%1' non consente l'elencazione delle cartelle - - - (unknown) - (sconosciuto) - - - The protocol `%1' does not support removing files or directories - Il protocollo `%1' non consente la rimozione dei file o delle cartelle - - - The protocol `%1' does not support putting files - Il protocollo `%1' non consente l'invio dei file - - - The protocol `%1' is not supported - Il protocollo `%1' non è supportato - - - The protocol `%1' does not support copying or moving files or directories - Il protocollo `%1' non consente la copia o lo spostamento dei file o delle cartelle - - - The protocol `%1' does not support creating new directories - Il protocollo `%1' non consente la creazione di nuove cartelle - - - - QFtp - - Listing directory failed: -%1 - Elencazione delle cartelle è fallita: -%1 - - - Creating directory failed: -%1 - Creazione delle cartelle è fallita: -%1 - - - Not connected - Non connesso - - - Connection refused for data connection - Connessione rifiutata dalla connessione di dati - - - Login failed: -%1 - Autenticazione fallita: -%1 - - - Downloading file failed: -%1 - Scaricamento del file fallito: -%1 - - - Connected to host - Connessione all'host - - - Connection timed out to host %1 - Connessione scaduta verso l'host %1 - - - Connected to host %1 - Connessione all'host %1 - - - Connecting to host failed: -%1 - Connessione all'host fallita: -%1 - - - Host %1 not found - Host %1 non trovato - - - Uploading file failed: -%1 - Caricamento file sul sever fallito: -%1 - - - Changing directory failed: -%1 - Modifica della cartella fallita: -%1 - - - Host found - Host trovato - - - Removing directory failed: -%1 - Rimozione della cartella fallita: -%1 - - - Connection refused to host %1 - Connessione all'host %1 rifiutata - - - Connection to %1 closed - Connessione a %1 chiusa - - - Removing file failed: -%1 - Rimozione file fallita: -%1 - - - Host %1 found - Host %1 trovato - - - Unknown error - Errore sconosciuto - - - Connection closed - Connessione chiusa - - - - QDeclarativeListModel - - set: value is not an object - set: il valore non è un oggetto - - - ListElement: cannot use script for property value - ListElement: non può usare uno script come valore di proprietà - - - ListModel: undefined property '%1' - ListModel: proprietà non definita '%1' - - - ListElement: cannot contain nested elements - ListElement: non può contenere elementi annidati - - - insert: value is not an object - insert: il valore non è un oggetto - - - remove: index %1 out of range - remove: l'indice %1 è fuori dai limiti - - - set: index %1 out of range - set: l'indice %1 è fuori dai limiti - - - append: value is not an object - append: il valore non è un oggetto - - - move: out of range - move: fuori dai limiti - - - insert: index %1 out of range - insert: l'indice %1 è fuori dai limiti - - - ListElement: cannot use reserved "id" property - ListElement : non può usare la proprietà riservata "id" - - - - QDeclarativeEngine - - Version mismatch: expected %1, found %2 - Versione non corrispondente: era attesa %1, trovata %2 - - - executeSql called outside transaction() - executeSql chiamato al di fuori di transaction() - - - Read-only Transaction - Transazione di sola lettura - - - SQL transaction failed - Transazione SQL non riuscita - - - transaction: missing callback - transaction: manca funzione chiamante - - - SQL: database version mismatch - SQL: versioni di banche dati non corrispondenti - - - - Phonon::MMF::EnvironmentalReverb - - Reverb delay (ms) - Ritardo del riverbero (ms) - - - Density (%) - Densità (%) - - - Room HF level - Livello della stanza in alta frequenza - - - Reverb level (mB) - Livello del riverbero (mB) - - - Diffusion (%) - Diffusione (%) - - - Decay HF ratio (%) - Rapporto di decadimento delle alte frequenze (%) - - - Decay time (ms) - Tempo di decadimento (ms) - - - Reflections level (mB) - Livello delle riflessioni (mB) - - - Room level (mB) - Livello della stanza (mB) - - - Reflections delay (ms) - Ritardo delle riflessioni (ms) - - - - QDeclarativeVME - - Cannot assign object to list - Impossibile assegnare un oggetto all'elenco - - - Cannot assign object type %1 with no default method - Impossibile assegnare un oggetto di tipo %1 senza metodo predefinito - - - Cannot connect mismatched signal/slot %1 %vs. %2 - Impossibile connettere segnale e ricettore non corrispondenti, %1 e %2 - - - Cannot assign value %1 to property %2 - Impossibile assegnare un valore %1 alla proprietà %2 - - - Cannot set properties on %1 as it is null - Impossibile impostare le proprietà di %1 perché è nullo - - - Cannot assign an object to signal property %1 - Impossibile assegnare un oggetto alla proprietà di segnale %1 - - - Unable to create object of type %1 - Impossibile creare oggetto di tipo %1 - - - Cannot assign object to interface property - Impossibile assegnare oggetto a proprietà di interfaccia - - - Unable to create attached object - Impossibile creare oggetto allegato - - - - QDB2Driver - - Unable to commit transaction - Impossibile depositare la transazione - - - Unable to set autocommit - Impossibile impostare il deposito automatico - - - Unable to connect - Impossibile connettere - - - Unable to rollback transaction - Impossibile annullare la transazione - - - - QIBaseDriver - - Unable to commit transaction - Impossibile depositare la transazione - - - Could not start transaction - Impossibile avviare la transazione - - - Error opening database - Errore nell'apertura della banca dati - - - Unable to rollback transaction - Impossibile annullare la transazione - - - - QIBaseResult - - Unable to commit transaction - Impossibile depositare la transazione - - - Unable to open BLOB - Impossibile aprire il blob - - - Could not describe statement - Impossibile descrivere la dichiarazione - - - Could not describe input statement - Impossibile descrivere la dichiarazione di ingresso - - - Could not allocate statement - Impossibile allocare la dichiarazione - - - Unable to write BLOB - Impossibile scrivere il blob - - - Could not start transaction - Impossibile avviare la transazione - - - Unable to close statement - Impossibile chiudere la dichiarazione - - - Could not get query info - Impossibile prelevare le informazioni dell'interrogazione - - - Could not find array - Impossibile trovare l'array - - - Could not get array data - Impossibile prelevare i dati dell'array - - - Unable to execute query - Impossibile eseguire l'interrogazione - - - Could not prepare statement - Impossibile preparare la dichiarazione - - - Could not fetch next item - Impossibile prelevare il prossimo elemento - - - Could not get statement info - Impossibile ottenere informazioni sulla dichiarazione - - - Unable to create BLOB - Impossibile creare il blob - - - Unable to read BLOB - Impossibile leggere il blob - - - - QMYSQLDriver - - Unable to commit transaction - Impossibile depositare la transazione - - - Unable to open database ' - Impossibile aprire la banca dati ' - - - Unable to connect - Impossibile connettere - - - Unable to rollback transaction - Impossibile annullare la transazione - - - Unable to begin transaction - Impossibile avviare la transazione - - - - QOCIDriver - - Unable to commit transaction - Impossibile depositare la transazione - - - Unable to initialize - QOCIDriver - Impossibile inizializzare - - - Unable to logon - Impossibile accedere - - - Unable to rollback transaction - Impossibile annullare la transazione - - - Unable to begin transaction - Impossibile avviare la transazione - - - - QODBCDriver - - Unable to commit transaction - Impossibile depositare la transazione - - - Unable to enable autocommit - Impossibile abilitare il deposito automatico - - - Unable to disable autocommit - Impossibile disabilitare il deposito automatico - - - Unable to connect - Driver doesn't support all functionality required - Impossibile connettersi: il driver non supporta tutte le funzionalità richieste - - - Unable to connect - Impossibile connettere - - - Unable to rollback transaction - Impossibile annullare la transazione - - - - QSQLite2Driver - - Unable to commit transaction - Impossibile depositare la transazione - - - Error opening database - Errore nell'apertura della banca dati - - - Unable to rollback transaction - Impossibile annullare la transazione - - - Unable to begin transaction - Impossibile avviare la transazione - - - - QSQLiteDriver - - Unable to commit transaction - Impossibile depositare la transazione - - - Error closing database - Errore nella chiusura della banca dati - - - Error opening database - Errore nell'apertura della banca dati - - - Unable to rollback transaction - Impossibile annullare la transazione - - - Unable to begin transaction - Impossibile avviare la transazione - - - - QAbstractSocket - - Host not found - Host non trovato - - - Connection refused - Connessione rifiutata - - - Connection timed out - Connessione scaduta - - - Socket is not connected - Socket non connesso - - - Socket operation timed out - Operazione sul socket scaduta - - - Network unreachable - Rete irraggiungibile - - - Operation on socket is not supported - L'operazione sul socket non è supportata - - - - QHostInfoAgent - - Host not found - Host non trovato - - - No host name given - Nessun nome di host specificato - - - Unknown address type - Tipo di indirizzo sconosciuto - - - Unknown error - Errore sconosciuto - - - Invalid hostname - Nome dell'host non valido - - - - Phonon::Gstreamer::MediaObject - - Could not open media source. - Impossibile aprire la fonte audio/video. - - - Missing codec helper script assistant. - Assistente dello script di supporto al codec mancante. - - - Could not decode media source. - Impossibile decodificare la fonte audio/video. - - - Invalid source type. - Tipo di fonte non valido. - - - Cannot start playback. - -Check your GStreamer installation and make sure you -have libgstreamer-plugins-base installed. - Impossibile avviare la lettura. - -Controlla l'installazione di GStreamer e assicurati -di aver installato libgstreamer-plugins-base. - - - Plugin codec installation failed for codec: %0 - Installazione dell'estensione per codec non riuscita per il codec: %0 - - - Could not open audio device. The device is already in use. - Impossibile aprire il dispositivo audio. Il dispositivo è già in uso. - - - A required codec is missing. You need to install the following codec(s) to play this content: %0 - Manca un codec richiesto. Devi installare i codec seguenti per leggere questo contenuto: %0 - - - Could not locate media source. - Impossibile trovare la fonte audio/video. - - - - QLibrary - - Could not unmap '%1': %2 - Impossibile effettuare unmap di «%1»: %2 - - - Cannot unload library %1: %2 - Impossibile scaricare la libreria %1: %2 - - - Cannot load library %1: %2 - Impossibile caricare la libreria %1: %2 - - - The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] - L'estensione '%1' usa una libreria Qt non compatibile. (%2.%3.%4) [%5] - - - Cannot resolve symbol "%1" in %2: %3 - Impossible de résoudre le symbole "%1" dans %2 : %3 - - - Plugin verification data mismatch in '%1' - Dati di verifica dell'estensione non corrispondenti in '%1' - - - The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) - L'estensione '%1' usa una libreria Qt non compatibile (non si possono mischiare le versioni di debug con quelle di rilascio). - - - The file '%1' is not a valid Qt plugin. - Il file '%1' non è un'estensione valida di Qt. - - - The shared library was not found. - La libreria condivisa non è stata trovata. - - - Unknown error - Errore sconosciuto - - - The plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3" - Le plugin '%1' utilise une bibliothèque Qt incompatible. Clé attendue "%2", reçue "%3" - - - Could not mmap '%1': %2 - Impossibile effettuare mmap di '%1': %2 - - - - QHttp - - Connection refused (or timed out) - Connessione rifiutata (o scaduta) - - - Data corrupted - Data corrotta - - - Connected to host - Connessione all'host - - - Connected to host %1 - Connessione all'host %1 - - - Host %1 not found - Host %1 non trovato - - - Unknown authentication method - Metodo di autentificazione sconosciuto - - - Host requires authentication - L'host richiede l'autentificazione - - - Error writing response to device - Errore in scrittura durante la risposta al dispositivo - - - HTTPS connection requested but SSL support not compiled in - Connessione HTTPS richiesta ma il supporto SSL non è compilato in - - - Host found - Host trovato - - - Connection refused - Connessione rifiutata - - - Proxy authentication required - Autenticazione al proxy richiesta - - - Unknown protocol specified - Protocollo specificato sconosciuto - - - HTTP request failed - Richiesta HTTP fallita - - - Proxy requires authentication - Il proxy richiede un'autentificazione - - - Authentication required - Autentificazione richiesta - - - SSL handshake failed - Inizializzazione SSL fallita - - - Connection to %1 closed - Connessione a %1 chiusa - - - Invalid HTTP chunked body - Frammento HTTP non valido - - - Host %1 found - Host %1 trovato - - - Wrong content length - Lunghezza contenuto errata - - - Unknown error - Errore sconosciuto - - - Invalid HTTP response header - Intestazione di risposta HTTP non valida - - - Connection closed - Connessione chiusa - - - No server set to connect to - Nessun server impostato per la connessione a - - - Server closed connection unexpectedly - La connessione si è interrotta inaspettatamente - - - Request aborted - Richiesta interrotta - - - - QDeclarativeImportDatabase - - is ambiguous. Found in %1 and in %2 - ambiguo. Trovato in %1 e in %2 - - - local directory - cartella locale - - - import "%1" has no qmldir and no namespace - l'importazione '%1' non ha qmldir né spazio di nomi - - - - %1 is not a namespace - - %1 non è uno spazio di nomi - - - module "%1" definition "%2" not readable - definizione "%2" per il modulo "%1% non leggibile - - - module "%1" plugin "%2" not found - plugin "%2" per il modulo "%1" non trovato - - - is not a type - non è un tipo - - - module "%1" is not installed - il modulo "%1" non è installato - - - module "%1" version %2.%3 is not installed - la versione %2.%3 del modulo "%1" non è installata - - - - nested namespaces not allowed - - spazi di nomi annidati non permessi - - - plugin cannot be loaded for module "%1": %2 - plugin non caricabile per il modulo "%1" : %2 - - - is instantiated recursively - è istanziato ricorsivamente - - - is ambiguous. Found in %1 in version %2.%3 and %4.%5 - ambiguo. Trovato in %1 in versione %2.%3 e %4.%5 - - - "%1": no such directory - "%1": cartella inesistente - - - - QXml - - unparsed entity reference in wrong context - riferimento a entità non analizzata in contesto errato - - - external parsed general entity reference not allowed in DTD - riferimento a entità esterna generale analizzata non consetito nella DTD - - - wrong value for standalone declaration - valore errato per la dichiarazione "standalone" - - - encoding declaration or standalone declaration expected while reading the XML declaration - attesa una dichiarazione di codifica o una dichiarazione "standalone" nella lettura della dichiarazione XML - - - no error occurred - nessun errore - - - error occurred while parsing reference - errore nell'analisi del riferimento - - - standalone declaration expected while reading the XML declaration - attesa dichiarazione "standalone" nella lettura della dichiarazione XML - - - invalid name for processing instruction - nome non valido per l'istruzione di elaborazione - - - error triggered by consumer - errore causato dal consumatore - - - error occurred while parsing element - errore nell'analisi dell'elemento - - - unexpected character - carattere inatteso - - - tag mismatch - marcatori non corrispondenti - - - error occurred while parsing content - errore nell'analisi del contenuto - - - error occurred while parsing comment - errore nell'analisi del commento - - - internal general entity reference not allowed in DTD - riferimento a entità interna generale non consentito nella DTD - - - recursive entities - entità ricorsive - - - more than one document type definition - più di una DTD - - - version expected while reading the XML declaration - attesa versione nella lettura della dichiarazione XML - - - letter is expected - attesa una lettera - - - unexpected end of file - fine di file inattesa - - - external parsed general entity reference not allowed in attribute value - riferimento a entità esterna generale analizzata non consentito in un valore di attributo - - - error in the text declaration of an external entity - errore nella dichiarazione del testo di un'entità esterna - - - error occurred while parsing document type definition - errore nell'analisi della DTD - - - - QSystemSemaphore - - %1: does not exist - %1: non esiste - - - %1: already exists - %1: esiste già - - - %1: unknown error %2 - %1: errore sconosciuto %2 - - - %1: permission denied - %1: permesso negato - - - %1: out of resources - %1: risorse insufficienti - - - - Phonon::MMF::MediaObject - - Error opening source: resource is compressed - Errore nell'apertura della fonte: risorsa compressa - - - Error opening source: media type could not be determined - Errore nell'apertura della fonte: impossibile determinare il tipo di audio o video - - - Error opening source: resource not valid - Errore nell'apertura della fonte: risorsa non valida - - - Error opening source: type not supported - Errore nell'apertura della fonte: tipo non supportato - - - - QDeclarativePixmap - - Error decoding: %1: %2 - Errore nella decodifica: %1: %2 - - - Cannot open: %1 - Impossibile aprire: %1 - - - Failed to get image from provider: %1 - Recupero dell'immagine dal fornitore non riuscita: %1 - - - - QSQLiteResult - - Unable to fetch row - Impossibile prelevare la riga - - - No query - Nessuna interrogazione - - - Unable to execute statement - Impossibile eseguire la dichiarazione - - - Unable to bind parameters - Impossibile collegare i parametri - - - Unable to reset statement - Impossibile azzerare la dichiarazione - - - Parameter count mismatch - Numero di parametri non corrispondente - - - - QApplication - - Activates the program's main window - Attiva la finestra principale del programma - - - QT_LAYOUT_DIRECTION - Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. - LTR - - - Activate - Attiva - - - Executable '%1' requires Qt %2, found Qt %3. - L'esecuzione '%1' richiede Qt %2 mentre è stato rilevato Qt %3. - - - Incompatible Qt Library Error - Errore d'incompatibilità delle librerie Qt - - - - QDeclarativeBinding - - Binding loop detected for property "%1" - Ciclo di collegamento rilevato per la proprietà "%1" - - - - QDeclarativeBindings - - Binding loop detected for property "%1" - Ciclo di collegamento rilevato per la proprietà "%1" - - - - QUnicodeControlCharacterMenu - - RLE Start of right-to-left embedding - RLE inizio incorporamento da destra a sinistra - - - ZWSP Zero width space - ZWJ spazio di ampiezza zero - - - Insert Unicode control character - Inserisci carattere di controllo Unicode - - - LRO Start of left-to-right override - LRO inizio forzatura da sinistra a destra - - - LRE Start of left-to-right embedding - LRE inizio incorporamento da sinistra a destra - - - RLM Right-to-left mark - RLM indicatore di direzione da destra a sinistra - - - PDF Pop directional formatting - PDF ripristina impostazioni di direzione del testo - - - ZWNJ Zero width non-joiner - ZWNJ carattere non congiungente di ampiezza zero - - - RLO Start of right-to-left override - RLO inizio forzatura da destra a sinistra - - - ZWJ Zero width joiner - ZWJ carattere congiungente di ampiezza zero - - - LRM Left-to-right mark - LRM indicatore di direzione da sinistra a destra - - - - QWebFrame - - Request blocked - Richiesta bloccata - - - Frame load interrupted by policy change - Caricamento riquadro interrotto dalla modifica dei criteri - - - Request cancelled - Richiesta annullata - - - Cannot show URL - Impossibile mostrare l'URL - - - File does not exist - Il file non esiste - - - Cannot show mimetype - Impossible mostrare il Tipo MIME - - - - QHttpSocketEngine - - Proxy connection refused - Connessione al proxy rifiutata - - - Proxy denied connection - Connessione al proxy negata - - - Proxy server not found - Connessione al serveur non rilevata - - - Proxy server connection timed out - Connessione al server proxy scaduta - - - Did not receive HTTP response from proxy - Non è stata ricevuta alcuna risposta HTTP dal proxy - - - Proxy connection closed prematurely - La connessione al proxy si è chiusa prematuramente - - - Error communicating with HTTP proxy - Errore di comunicazione con il proxy HTTP - - - Authentication required - Autentificazione richiesta - - - Error parsing authentication request from proxy - Errore durante l'analsi di autentificazione richiesta da parte del proxy - - - - QNetworkAccessManager - - Network access is disabled. - L'accesso alla rete è disabilitato. - - - - QNetworkReply - - Error downloading %1 - server replied: %2 - Errore nello scaricamento di %1; il server ha risposto: %2 - - - Network session error. - Errore nella sessione di rete. - - - Protocol "%1" is unknown - Le protocole "%1" est inconnu - - - Temporary network failure. - Errore di rete temporaneo. - - - - QAbstractSpinBox - - Step &down - Sposta in &basso - - - &Step up - Sposta in &alto - - - &Select All - Seleziona &tutto - - - - QDeclarativeXmlRoleList - - An XmlListModel query must start with '/' or "//" - Un'interrogazione XmlListModel deve iniziare per '/' o "//" - - - - QDB2Result - - Unable to bind variable - Impossibile collegare la variabile - - - Unable to execute statement - Impossibile eseguire la dichiarazione - - - Unable to fetch next - Impossibile prelevare il successivo - - - Unable to prepare statement - Impossibile preparare la dichiarazione - - - Unable to fetch record %1 - Impossibile prelevare il record %1 - - - Unable to fetch first - Impossibile prelevare il primo - - - - QODBCResult - - Unable to bind variable - Impossibile collegare la variabile - - - Unable to execute statement - Impossibile eseguire la dichiarazione - - - Unable to fetch next - Impossibile prelevare il successivo - - - Unable to fetch last - Impossibile prelevare l'ultimo - - - Unable to prepare statement - Impossibile preparare la dichiarazione - - - Unable to fetch previous - Impossibile prelevare il precedente - - - Unable to fetch - Impossibile prelevare - - - QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration - QODBCResult::reset: Impossibile impostare 'SQL_CURSOR_STATIC' come un attributo della dichiarazione. Controlla la configurazione del driver ODBC. - - - Unable to fetch first - Impossibile prelevare il primo - - - - QPSQLDriver - - Unable to subscribe - Impossibile iscriversi - - - Could not begin transaction - Impossibile iniziare la transazione - - - Could not rollback transaction - Impossibile annullare la transazione - - - Could not commit transaction - Impossibile depositare la transazione - - - Unable to connect - Impossibile connettere - - - Unable to unsubscribe - Impossibile deiscriversi - - - - QInputDialog - - Enter a value: - Inserisci un valore: - - - - QIODevice - - No such file or directory - File o cartella inesistente - - - Permission denied - Permesso negato - - - No space left on device - Non c'è più spazio sul dispositivo - - - Unknown error - Errore sconosciuto - - - Too many open files - Troppi file aperti - - - - FakeReply - - Invalid URL - URL non valido - - - Fake error ! - Errore finto! - - - - QMultiInputContext - - Select IM - Seleziona metodo d'inserimento - - - - QTabBar - - Scroll Left - Scorri a sinistra - - - Scroll Right - Scorri a destra - - - - QUndoModel - - <empty> - <vuoto> - - - - QNetworkAccessCacheBackend - - Error opening %1 - Errore nell'apertura di %1 - - - - QDeclarativeParser - - Script import qualifiers must be unique. - I qualificatori di importazione degli script devono essere univoci. - - - Unterminated regular expression class - Classe di espressioni regolari non conclusa - - - Library import requires a version - L'importazione di librerie richiede una versione - - - Invalid regular expression flag '%0' - Contrassegno non valido per espressione regolare '%0' - - - JavaScript declaration outside Script element - Dichiarazione JavaScript al di fuori di un elemento Script - - - Illegal character - Carattere non consentito - - - Unclosed comment at end of file - Commento non concluso alla fine del file - - - Unclosed string at end of line - Stringa non conclusa alla fine della riga - - - Expected property type - Era atteso un tipo di proprietà - - - Expected type name - Era atteso un nome di tipo - - - Illegal escape sequence - Sequenza di escape non consentita - - - Readonly not yet supported - Sola lettura non ancora supportata - - - Unterminated regular expression literal - Letterale a espressione regolare non concluso - - - Property value set multiple times - Valore della proprietà impostato più volte - - - Unterminated regular expression backslash sequence - Sequenza con barra inversa di espressione regolare non conclusa - - - Identifier cannot start with numeric literal - L'identificativo non può cominciare con un letterale numerico - - - Script import requires a qualifier - L'importazione di script richiede un qualificatore - - - Illegal syntax for exponential number - Sintassi non consentita per numero esponenziale - - - Invalid property type modifier - Modificatore del tipo di proprietà non valido - - - Reserved name "Qt" cannot be used as an qualifier - Il nome riservato"Qt" non può essere usato come qualificatore - - - Expected token `%1' - Elemento atteso '%1' - - - Unexpected token `%1' - Elemento inatteso '%1' - - - Expected parameter type - Era atteso un tipo di parametro - - - Illegal unicode escape sequence - Sequenza di escape Unicode non consentita - - - Unexpected property type modifier - Modificatore del tipo di proprietà inatteso - - - Invalid import qualifier ID - Identificativo del qualificatore d'importazione non valido - - - Syntax error - Errore di sintassi - - - - QScriptEdit - - Disable Breakpoint - Disabilita punto di interruzione - - - Breakpoint Condition: - Condizione del punto di interruzione: - - - Toggle Breakpoint - Commuta punto di interruzione - - - Enable Breakpoint - Abilita punto di interruzione - - - - QMYSQLResult - - Unable to execute statement - Impossibile eseguire la dichiarazione - - - Unable to store statement results - Impossibile memorizzare i risultati della dichiarazione - - - Unable to execute next query - Impossibile eseguire l'interrogazione successiva - - - Unable to bind outvalues - Impossibile collegare i valori in uscita - - - Unable to store next result - Impossibile memorizzare il prossimo risultato - - - Unable to fetch data - Impossibile prelevare dati - - - Unable to prepare statement - Impossibile preparare la dichiarazione - - - Unable to store result - Impossibile memorizzare il risultato - - - Unable to bind value - Impossibile collegare il valore - - - Unable to execute query - Impossibile eseguire l'interrogazione - - - Unable to reset statement - Impossibile azzerare la dichiarazione - - - - QSQLite2Result - - Unable to execute statement - Impossibile eseguire la dichiarazione - - - Unable to fetch results - Impossibile prelevare i risultati - - - - Phonon::AudioOutput - - <html>Switching to the audio playback device <b>%1</b><br/>which has higher preference or is specifically configured for this stream.</html> - <html>Passo al dispositivo di lettura audio <b>%1</b><br/> che ha maggiore preferenza o è configurato specificamente per questo flusso.</html> - - - <html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html> - <html>Il dispositivo di lettura audio <b>%1</b> non funziona.<br/>Ripiego su <b>%2</b>.</html> - - - Revert back to device '%1' - Ritorno al dispositivo '%1' - - - <html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html> - <html>Passo al dispositivo di lettura audio <b>%1</b><br/> che è appena diventato disponibile e ha una preferenza maggiore.</html> - - - - Q3MainWindow - - Line up - Allinea - - - Customize... - Personalizza... - - - - QUdpSocket - - This platform does not support IPv6 - Questa piattaforma non supporta IPv6 - - - - Phonon::Gstreamer::Backend - - Warning: You do not seem to have the base GStreamer plugins installed. - All audio and video support has been disabled - Avviso: sembra che le estensioni fondamentali di GStreamer non siano installate. - Il supporto audio e video è stato disabilitato. - - - Warning: You do not seem to have the package gstreamer0.10-plugins-good installed. - Some video features have been disabled. - Avviso: sembra che il pacchetto gstreamer0.10-plugins-good non sia installato. - Alcune funzioni video sono state disabilitate. - - - - QDeclarativePropertyChanges - - Cannot assign to read-only property "%1" - Impossibile assegnare alla proprietà di sola lettura "%1" - - - PropertyChanges does not support creating state-specific objects. - PropertyChanges non supporta la creazione di oggetti a stato specifico. - - - Cannot assign to non-existent property "%1" - Impossibile assegnare una proprietà inesistente "%1" - - - - QLocalServer - - %1: Name error - %1: errore nel nome - - - %1: Unknown error %2 - %1: errore sconosciuto %2 - - - %1: Permission denied - %1: permesso negato - - - %1: Address in use - %1: Indirizzo già in uso - - - - Phonon::MMF::AbstractVideoPlayer - - Pause failed - Pausa non riuscita - - - Seek failed - Spostamento non riuscito - - - Opening clip failed - Apertura dello spezzone non riuscita - - - Getting position failed - Recupero della posizione non riuscito - - - - Phonon::MMF::AbstractMediaPlayer - - Not ready to play - Non pronto alla lettura - - - Error opening file - Errore nell'apertura del file - - - Error opening source: resource not opened - Errore nell'apertura della fonte: risorsa non aperta - - - Error opening URL - Errore nell'apertura dell'URL - - - Loading clip failed - Caricamento dello spezzone non riuscito - - - Setting volume failed - Impostazione del volume non riuscita - - - Error opening resource - Errore nell'apertura della risorsa - - - Playback complete - Lettura completata - - - - QDeclarativeAbstractAnimation - - Animation is an abstract class - L'animazione è una classe astratta - - - Cannot animate non-existent property "%1" - Impossibile animare la proprietà inesistente "%1" - - - Cannot animate read-only property "%1" - Impossibile animare la proprietà di sola lettura "%1" - - - - QCoreApplication - - %1: unable to make key - QSystemSemaphore - %1: impossibile creare la chiave - - - %1: ftok failed - QSystemSemaphore - %1: ftok non riuscito - - - %1: out of resources - QSystemSemaphore - %1: risorse insufficienti - - - %1: does not exist - QSystemSemaphore - %1: non esiste - - - %1: unknown error %2 - QSystemSemaphore - %1: errore sconosciuto %2 - - - %1: key is empty - QSystemSemaphore - %1: la chiave è vuota - - - %1: already exists - QSystemSemaphore - %1: esiste già - - - - QDeclarativeFlipable - - front is a write-once property - 'front' (fronte) è una proprietà scrivibile una volta sola - - - back is a write-once property - 'back' (retro) è una proprietà scrivibile una volta sola - - - - Q3ToolBar - - More... - Altro... - - - - QDeclarativeParentAnimation - - Unable to preserve appearance under non-uniform scale - Impossibile mantenere l'aspetto in riscalamento non uniforme - - - Unable to preserve appearance under complex transform - Impossibile mantenere l'aspetto in trasformazione complessa - - - Unable to preserve appearance under scale of 0 - Impossibile mantenere l'aspetto in scala di 0 - - - - QDeclarativeParentChange - - Unable to preserve appearance under non-uniform scale - Impossibile mantenere l'aspetto in riscalamento non uniforme - - - Unable to preserve appearance under complex transform - Impossibile mantenere l'aspetto in trasformazione complessa - - - Unable to preserve appearance under scale of 0 - Impossibile mantenere l'aspetto in scala di 0 - - - - QMultiInputContextPlugin - - Multiple input method switcher that uses the context menu of the text widgets - Cambio multiplo del metodo d'inserimento che usa il menu contestuale degli campi di testo - - - Multiple input method switcher - Cambio multiplo del metodo d'inserimento - - - - Q3ProgressDialog - - Cancel - Annulla - - - - QProgressDialog - - Cancel - Annulla - - - - QGstreamerPlayerSession - - Unable to play %1 - Impossibile leggere %1 - - - - QDeclarativeComponent - - Invalid empty URL - URL vuoto non valido - - - - MAC_APPLICATION_MENU - - Hide Others - Nascondi gli altri - - - Quit %1 - Esci da %1 - - - About %1 - Informazioni su %1 - - - Preferences... - Preferenze... - - - Services - Servizi - - - Hide %1 - Nascondi %1 - - - Show All - Mostra tutto - - - - QTDSDriver - - Unable to open connection - Impossibile aprire la connessione - - - Unable to use database - Impossibile usare la banca dati - - - - QDeclarativeVisualDataModel - - Delegate component must be Item type. - Il componente delegato deve essere di tipo Item. - - - - QMediaPlaylist - - The file could not be accessed. - Impossibile accedere al file. - - - Could not add items to read only playlist. - Impossibile aggiungere elementi alla scaletta in sola lettura dei file multimediali da riprodurre. - - - Playlist format is not supported - Il formato della scaletta dei file multimediali da riprodurre non è supportato - - - - QDeclarativeConnections - - Connections: script expected - Connections: era atteso uno script - - - Connections: nested objects not allowed - Connections: oggetti annidati non permessi - - - Cannot assign to non-existent property "%1" - Impossibile assegnare alla proprietà inesistente"%1" - - - Connections: syntax error - Connections: errore di sintassi - - - - QPluginLoader - - The plugin was not loaded. - L'estensione non è stata caricata. - - - Unknown error - Errore sconosciuto - - - - QSlider - - Page up - Pagina sù - - - Position - Posizione - - - Page right - Pagina destra - - - Page down - Pagina giù - - - Page left - Pagina sinistra - - - - CloseButton - - Close Tab - Chiudi scheda - - - - QPSQLResult - - Unable to prepare statement - Impossibile preparare la dichiarazione - - - Unable to create query - Impossibile creare l'interrogazione - - - - QNetworkSession - - Invalid configuration. - Configurazione non valida. - - - - QNetworkAccessDataBackend - - Invalid URI: %1 - URI non valido: %1 - - - Operation not supported on %1 - Operazione non supportata su %1 - - - - QDeclarativeAnimatedImage - - Qt was built without support for QMovie - Qt è stato generato senza supporto per QMovie - - - - QObject - - "%1" duplicates a previous role name and will be disabled. - "%1" duplica un nome di ruolo precedente e sarà disabilitato. - - - PulseAudio Sound Server - Server sonoro PulseAudio - - - invalid query: "%1" - interrogazione non valida: "%1" - - - - QDeclarativeKeysAttached - - Keys is only available via attached properties - Keys è disponibile solo attraverso proprietà allegate - - - - QMenuBar - - Actions - Azioni - - - - QMediaPlayer - - The QMediaPlayer object does not have a valid service - L'oggetto QMediaPlayer non presenta un servizio valido - - - - QNetworkAccessDebugPipeBackend - - Socket error on %1: %2 - Errore di socket su %1: %2 - - - Remote host closed the connection prematurely on %1 - L'host remoto ha chiuso la connessione prematuramente su %1 - - - Write error writing to %1: %2 - Errore nella scrittura su %1: %2 - - - - QNetworkAccessFileBackend - - Request for opening non-local file %1 - Richiesta di apertura di file non locale %1 - - - Read error reading from %1: %2 - Errore nella lettura da %1: %2 - - - Cannot open %1: Path is a directory - Impossibile aprire %1: il percorso è una cartella - - - Error opening %1: %2 - Errore nell'apertura di %1: %2 - - - Write error writing to %1: %2 - Errore nella scrittura su %1: %2 - - - - QHostInfo - - No host name given - Nessun nome di host specificato - - - Unknown error - Errore sconosciuto - - - - QDeclarativeLoader - - Loader does not support loading non-visual elements. - Il caricatore non supporta il caricamento di elementi non visivi. - - - - QNetworkReplyImpl - - Operation canceled - Operazione annullata - - - - Q3NetworkProtocol - - Operation stopped by the user - Operazione interrotta dall'utente - - - - QStateMachine - - Missing default state in history state '%1' - Stato predefinito mancante nello stato cronologico '%1' - - - Unknown error - Errore sconosciuto - - - Missing initial state in compound state '%1' - Stato iniziale mancante nello stato composto '%1' - - - No common ancestor for targets and source of transition from state '%1' - Nessun antenato comune per le destinazioni e l'origine della transizione dallo stato '%1' - - - - QMdiArea - - (Untitled) - (Senza titolo) - - - - QDeclarativeXmlListModelRole - - An XmlRole query must not start with '/' - Un'interrogazione XmlRole non può cominciare per '/' - - - - QDeclarativeBehavior - - Cannot change the animation assigned to a Behavior. - Impossibile cambiare l'animazione assegnata a un comportamento. - - - - Q3Accel - - %1, %2 not defined - %1, %2 non definiti - - - Ambiguous %1 not handled - %1 ambiguo non gestito - - - - Phonon::MMF::EffectFactory - - Enabled - Abilitato - - - - Phonon::MMF::DsaVideoPlayer - - Video display error - Errore nella visualizzazione del video - - - - Phonon::MMF::SurfaceVideoPlayer - - Video display error - Errore nella visualizzazione del video - - - - Phonon::MMF::StereoWidening - - Level (%) - Livello (%) - - - - Phonon::MMF::AudioPlayer - - Getting position failed - Recupero della posizione non riuscito - - - - QDeclarativeKeyNavigationAttached - - KeyNavigation is only available via attached properties - KeyNavigation è disponibile solo attraverso proprietà allegate - - - - QDeclarativeAnchorAnimation - - Cannot set a duration of < 0 - Impossibile impostare una durata negativa - - - - QDeclarativePauseAnimation - - Cannot set a duration of < 0 - Impossibile impostare una durata negativa - - - - QDeclarativePropertyAnimation - - Cannot set a duration of < 0 - Impossibile impostare una durata negativa - - - - QTcpServer - - Operation on socket is not supported - L'operazione sul socket non è supportata - - - - QDeclarativeXmlListModel - - Qt was built without support for xmlpatterns - Qt è stato generato senza supporto per gli schemi XML - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_lt.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_lt.ts deleted file mode 100644 index c484b25858..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qt_lt.ts +++ /dev/null @@ -1,5719 +0,0 @@ - - - - - MAC_APPLICATION_MENU - - Services - Paslaugos - - - Hide %1 - Slėpti %1 - - - Hide Others - Slėpti kitką - - - Show All - Rodyti viską - - - Preferences... - Nuostatos... - - - Quit %1 - Baigti %1 - - - About %1 - Apie %1 - - - - AudioOutput - - <html>The audio playback device <b>%1</b> does not work.<br/>Falling back to <b>%2</b>.</html> - <html><b>%1</b>Garso atkūrimo įrenginys neveikia.<br/>Naudosimas <b>%2</b>.</html> - - - <html>Switching to the audio playback device <b>%1</b><br/>which just became available and has higher preference.</html> - <html>Naudosimas <b>%1</b> garso atkūrimo įrenginys,<br/>kuris ką tik tapo prieinamu bei turi aukštesnį prioritetą.</html> - - - Revert back to device '%1' - Naudosimas įrenginys „%1“ - - - - Phonon:: - - Notifications - Pranešimai - - - Music - Muzika - - - Video - Vaizdai - - - Communication - Bendravimas - - - Games - Žaidimai - - - Accessibility - Prieinamumas - - - - Phonon::Gstreamer::Backend - - Warning: You do not seem to have the package gstreamer0.10-plugins-good installed. - Some video features have been disabled. - Attention: Vous n'avez apparemment pas installé le paquet gstreamer0.10-plugins-good. -Des fonctionnalités vidéo ont été desactivées. - Dėmesio: panašu, kad gstreamer0.10-plugins-good paketas neįdiegtas. - Kai kurios vaizdo funkcijos uždraustos. - - - Warning: You do not seem to have the base GStreamer plugins installed. - All audio and video support has been disabled - Attention: Vous n'avez apparemment pas installées les plugins de base de GStreamer. -Le support audio et vidéo est désactivé. - Dėmesio: panašu, kad neįdiegtas pagrindinis GStreamer papildinys. - Visas garso ir vaizdo palaikymas yra uždraustas - - - - Phonon::Gstreamer::MediaObject - - Cannot start playback. - -Check your Gstreamer installation and make sure you -have libgstreamer-plugins-base installed. - Impossible de démarrer la lecture. Verifiez votre installation de Gstreamer et assuez-vousd'avoir installé libgstreamer-plugins-base. - Nepavyksta groti. - -Patikrinkite, ar tinkamai įdiegtas Gstreamer ir -jo elementas libgstreamer-plugins-base. - - - A required codec is missing. You need to install the following codec(s) to play this content: %0 - Des codecs requis sont manquants. Vous devez installer les codecs suivants pour jouer le contenu - - Trūksta reikiamos kodavimo priemonės. Norėdami atlikti šį kūrinį, įdiekite šią kodavimo priemonę: %0 - Trūksta reikiamos kodavimo priemonės. Norėdami atlikti šį kūrinį, įdiekite šias kodavimo priemones: %0 - Trūksta reikiamos kodavimo priemonės. Norėdami atlikti šį kūrinį, įdiekite šias kodavimo priemones: %0 - - - - Could not open media source. - Nepavyksta atverti kūrinio šaltinio. - - - Invalid source type. - Netinkamas šaltinio tipas. - - - Could not locate media source. - Nepavyksta rasti kūrinio šaltinio. - - - Could not open audio device. The device is already in use. - Nepavyksta atverti garso įrenginio.Įrenginys užimtas. - - - Could not decode media source. - Nepavyksta iškoduoti kūrinio šaltinio. - - - - Phonon::VolumeSlider - - Volume: %1% - Garsumas: %1% - - - Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1% - Utilisez le slider pour ajuster le volume. La position la plus à gauche est 0%, la plus à droite est %1% - Garsumą keiskite šliaužikliu. Kairiausia padėtis atitinka 0%, o dešiniausia – %1% - - - - Q3Accel - - %1, %2 not defined - %1, %2 seka neapibrėžta - - - Ambiguous %1 not handled - Séquence ambiguë %1 non traitée - - - - - Q3DataTable - - True - Tiesa - - - False - Melas - - - Insert - Įterpti - - - Update - Atnaujinti - - - Delete - Pašalinti - - - - Q3FileDialog - - Copy or Move a File - Kopijuoti arba perkelti rinkmeną - - - Read: %1 - Skaityti: %1 - - - Write: %1 - Rašyti: %1 - - - Cancel - Atšaukti - - - All Files (*) - Visos rinkmenos (*) - - - Name - Pavadinimas - - - Size - Dydis - - - Type - Tipas - - - Date - Data - - - Attributes - Savybės - - - &OK - &Gerai - - - Look &in: - Kur &ieškoti: - - - File &name: - Rinkmenos &pavadinimas: - - - File &type: - Rinkmenos &tipas: - - - Back - Atgal - - - One directory up - Į aukštesnį aplanką - - - Create New Folder - Sukurti naują aplanką - - - List View - Sąrašo rodinys - - - Detail View - Detalus rodinys - - - Preview File Info - Informations du fichier prévisualisé - Rinkmenos informacijos peržiūra - - - Preview File Contents - Contenu du fichier prévisualisé - Rinkmenos turinio peržiūra - - - Read-write - Tik rašyti - - - Read-only - Tik skaityti - - - Write-only - Tik rašyti - - - Inaccessible - Neprieinama - - - Symlink to File - Sukurti simbolinę nuorodą į rinkmeną - - - Symlink to Directory - Sukurti simbolinę nuorodą į aplanką - - - Symlink to Special - Sukurti specialią simbolinę nuorodą - - - File - Rinkmena - - - Dir - Aplankas - - - Special - Specialus - - - Open - Atverti - - - Save As - Įrašyti kaip - - - &Open - At&verti - - - &Save - Į&rašyti - - - &Rename - &Pervadinti - - - &Delete - &Ištrinti - - - R&eload - Įk&elti iš naujo - - - Sort by &Name - Rikiuoti pagal &pavadinimą - - - Sort by &Size - Rikiuoti pagal &dydį - - - Sort by &Date - Rikiuoti pagal &datą - - - &Unsorted - &Nerikiuoti - - - Sort - Rikiuoti - - - Show &hidden files - Rodyti paslėptas &rinkmenas - - - the file - rinkmeną - - - the directory - aplanką - - - the symlink - simbolinę nuorodą - - - Delete %1 - Ištrinti %1 - - - <qt>Are you sure you wish to delete %1 "%2"?</qt> - <qt>Tikrai ištrinti %1 „%2“?</qt> - - - &Yes - &Taip - - - &No - &Ne - - - New Folder 1 - Naujas aplankas 1 - - - New Folder - Naujas aplankas - - - New Folder %1 - Naujas aplankas %1 - - - Find Directory - Ieškoti aplanko - - - Directories - Aplankai - - - Directory: - Aplankas: - - - Error - Klaida - - - %1 -File not found. -Check path and filename. - %1 -Rinkmena nerasta. -Patikrinkite rinkmenos kelią ir pavadinimą. - - - - Q3LocalFs - - Could not read directory -%1 - Nepavyksta nuskaityti iš aplanko -%1 - - - Could not create directory -%1 - Nepavyksta sukurti aplanko -%1 - - - Could not remove file or directory -%1 - Nepavyksta pašalinti rinkmenos arba aplanko -%1 - - - Could not rename -%1 -to -%2 - %1 -nepavyksta pervadinti į -%2 - - - Could not open -%1 - Nepavyksta atverti -%1 - - - Could not write -%1 - Nepavyksta rašyti į -%1 - - - - Q3MainWindow - - Line up - Aligner - - - - Customize... - Personnaliser... - Derinti... - - - - Q3NetworkProtocol - - Operation stopped by the user - Veiksmą nutraukė naudotojas - - - - Q3ProgressDialog - - Cancel - Atšaukti - - - - Q3TabDialog - - OK - Gerai - - - Apply - Pritaikyti - - - Help - Pagalba - - - Defaults - Numatyta - - - Cancel - Atšaukti - - - - Q3TextEdit - - &Undo - Atša&ukti - - - &Redo - Paka&rtoti - - - Cu&t - Iškirp&ti - - - &Copy - &Kopijuoti - - - &Paste - &Padėti - - - Clear - Išvalyti - - - Select All - Viską pažymėti - - - - Q3TitleBar - - System - Sistema - - - Restore up - Atstatyti aukščiau - - - Minimize - Sumažinti - - - Restore down - Atstatyti žemiau - - - Maximize - Išdidinti - - - Close - Užverti - - - Contains commands to manipulate the window - Contient des commandes pour manipuler la fenêtre - Komandos langui valdyti - - - Puts a minimized back to normal - Sumažintą langą grąžina į įprastą būseną - - - Moves the window out of the way - Déplace la fenêtre à l'écart - Nukelia langą - - - Puts a maximized window back to normal - Išdidintą langą grąžina į įprastą būseną - - - Makes the window full screen - Langą rodo visame ekrane - - - Closes the window - Užveria langą - - - Displays the name of the window and contains controls to manipulate it - Affiche le nom de la fenêtre et contient des contrôles pour la manipuler - Rodo lango pavadinimą ir turi jo tvarkymo priemones - - - - Q3ToolBar - - More... - Daugiau... - - - - Q3UrlOperator - - The protocol `%1' is not supported - Protokolas „%1“ nepalaikomas - - - The protocol `%1' does not support listing directories - Le protocole `%1' ne permet pas de lister les fichiers d'un dossier - Protokolas „%1“ nepalaiko aplankų sąrašų pateikimo - - - The protocol `%1' does not support creating new directories - Protokolas „%1“ nepaliko naujų aplankų kūrimo - - - The protocol `%1' does not support removing files or directories - Protokolas „%1“ nepaliko rinkmenų ir aplankų šalinimo - - - The protocol `%1' does not support renaming files or directories - Protokolas „%1“ nepaliko rinkmenų ir aplankų pervedinimo - - - The protocol `%1' does not support getting files - Protokolas „%1“ nepalaiko rinkmenų gavimo - - - The protocol `%1' does not support putting files - Protokolas „%1“ nepalaiko rinkmenų įkėlimo - - - The protocol `%1' does not support copying or moving files or directories - Protokolas „%1“ nepaliko rinkmenų ir aplankų kopijavimo ir perkėlimo - - - (unknown) - (nežinoma) - - - - Q3Wizard - - &Cancel - &Atšaukti - - - < &Back - < &Atgal - - - &Next > - &Toliau > - - - &Finish - &Užbaigti - - - &Help - &Pagalba - - - - QAbstractSocket - - Host not found - Pagrindinis kompiuteris nerastas - - - Connection refused - Connexion refusée - Ryšys atmestas - - - Socket operation timed out - Opération socket expirée - - - - Socket is not connected - Le socket n'est pas connecté - - - - - QAbstractSpinBox - - &Step up - Pa&didinti - - - Step &down - Su&mažinti - - - &Select All - &Viską pažymėti - - - - QApplication - - Activate - Aktyvuoti - - - Executable '%1' requires Qt %2, found Qt %3. - „%1“ vykdymui reikia Qt %2 (rasta Qt %3). - - - Incompatible Qt Library Error - Klaida: QT bibliotekos nesuderinamos - - - QT_LAYOUT_DIRECTION - Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. - LTR - - - Activates the program's main window - Aktyvuoja programos pagrindinį langą - - - - QCheckBox - - Uncheck - Atžymėti - - - Check - Pažymėti - - - Toggle - Perjungti - - - - QColorDialog - - Hu&e: - &Tonas : - - - &Sat: - &Sodrumas: - - - &Val: - &Reikšmė: - - - &Red: - &Raudona: - - - &Green: - &Žalia: - - - Bl&ue: - &Mėlyna: - - - A&lpha channel: - A&lfa kanalas: - - - &Basic colors - &Pagrindinės spalvos - - - &Custom colors - &Derintos spalvos - - - &Add to Custom Colors - Pridėti prie d&erintų spalvų - - - Select color - Spalvos pasirinkimas - - - - QComboBox - - Open - Atverti - - - False - Melas - - - True - Tiesa - - - Close - Užverti - - - - QCoreApplication - - %1: permission denied - QSystemSemaphore - %1: nepakanka leidimų - - - %1: already exists - QSystemSemaphore - %1: jau yra - - - %1: doesn't exists - QSystemSemaphore - %1: nėra - - - %1: out of resources - QSystemSemaphore - %1: plus de ressources disponibles - %1: viršija išteklius - - - %1: unknown error %2 - QSystemSemaphore - %1: nežinoma klaida %2 - - - %1: key is empty - QSystemSemaphore - %1: clé vide - %1: tuščias raktas - - - %1: unable to make key - QSystemSemaphore - %1: impossible de créer la clé - %1: nepavyksta sukurti rakto - - - %1: ftok failed - QSystemSemaphore - %1: ftok a échoué - - - - - QDB2Driver - - Unable to connect - Incapable d'établir une connexion - Nepavyksta prisijungti - - - Unable to commit transaction - Incapable de soumettre la transaction - Nepavyksta įkelti operacijos - - - Unable to rollback transaction - Incapable d'annuler la transaction - Nepavyksta atsisakyti operacijos - - - Unable to set autocommit - Impossible d'activer l'auto-soumission - Nepavyksta įgalinti automatinio įkėlimo - - - - QDB2Result - - Unable to execute statement - Impossible d'exécuter la requête - - - - Unable to prepare statement - Impossible de prépare la requête - - - - Unable to bind variable - Impossible d'attacher la variable - - - - Unable to fetch record %1 - Impossible de récupérer l'enregistrement %1 - - - - Unable to fetch next - Impossible de récupérer le suivant - - - - Unable to fetch first - Impossible de récupérer le premier - - - - - QDateTimeEdit - - AM - - - - am - - - - PM - - - - pm - - - - - QDial - - QDial - - - - SpeedoMeter - Greičio matuoklis - - - SliderHandle - Poignée - - - - - QDialog - - What's This? - Kas tai? - - - Done - Užbaigti - - - - QDialogButtonBox - - OK - Gerai - - - Save - Įrašyti - - - Open - Atverti - - - Cancel - Atšaukti - - - Close - Užverti - - - Apply - Pritaikyti - - - Reset - Iš naujo - - - Help - Pagalba - - - Don't Save - Neįrašyti - - - Discard - Panaikinti - - - &Yes - &Taip - - - Yes to &All - Taip &viskam - - - &No - &Ne - - - N&o to All - N&e viskam - - - Save All - Viską įrašyti - - - Abort - Nutraukti - - - Retry - Kartoti - - - Ignore - Nepaisyti - - - Restore Defaults - Atkurti numatytąsias reikšmes - - - Close without Saving - Užverti neišsaugant - - - &OK - &Gerai - - - - QDirModel - - Name - Pavadinimas - - - Size - Dydis - - - Kind - Match OS X Finder - Tipas - - - Type - All other platforms - Tipas - - - Date Modified - Pakeitimo data - - - - QDockWidget - - Close - Užverti - - - Dock - Attacher - Pritvirtinti - - - Float - Détacher - Atkabinti - - - - QDoubleSpinBox - - More - Daugiau - - - Less - Mažiau - - - - QErrorMessage - - Debug Message: - Derinimo pranešimas: - - - Warning: - Įspėjimas: - - - Fatal Error: - Lemtinga klaida: - - - &Show this message again - &Rodyti šį pranešimą dar kartą - - - &OK - &Gerai - - - - QFileDialog - - All Files (*) - Visos rinkmenos (*) - - - Directories - Aplankai - - - &Open - At&verti - - - &Save - Į&rašyti - - - Open - Atverti - - - %1 already exists. -Do you want to replace it? - Rinkmena %1 jau yra. Perrašyti ją? - - - %1 -File not found. -Please verify the correct file name was given. - %1 -Rinkmena nerasta. -Patikrinkite rinkmenos kelią ir pavadinimą. - - - My Computer - Mano kompiuteris - - - &Rename - &Pervadinti - - - &Delete - &Ištrinti - - - Show &hidden files - Rodyti paslėptas &rinkmenas - - - Back - Atgal - - - Parent Directory - Į aukštesnį aplanką - - - List View - Sąrašo rodinys - - - Detail View - Detalus rodinys - - - Files of type: - Rinkmenos, kurių tipas: - - - Directory: - Aplankas: - - - %1 -Directory not found. -Please verify the correct directory name was given. - %1 -Aplankas nerastas. -Patikrinkite aplanko pavadinimą. - - - '%1' is write protected. -Do you want to delete it anyway? - „%1“ apsaugotas nuo įrašymas. -Vis tiek norite ištrinti? - - - Are sure you want to delete '%1'? - Tikrai norite ištrinti „%1“? - - - Could not delete directory. - Nepavyksta pašalinti aplanko. - - - Save As - Įrašyti kaip - - - Drive - - - - File - Rinkmena - - - Unknown - Nežinoma - - - Find Directory - Ieškoti aplanko - - - Show - Rodyti - - - Forward - Toliau - - - New Folder - Naujas aplankas - - - &New Folder - &Naujas aplankas - - - &Choose - &Pasirinkti - - - Remove - Pašalinti - - - File &name: - Rinkmenos &pavadinimas: - - - Look in: - Kur ieškoti: - - - Create New Folder - Sukurti naują aplanką - - - - QFileSystemModel - - Invalid filename - Rinkmenos pavadinimas netinkamas - - - <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. - <b>Negalima naudoti pavadinimo „%1“</b><p>Naudokite kitą trumpesnį pavadinimą be skyrybos ženklų. - - - Name - Pavadinimas - - - Size - Dydis - - - Kind - Match OS X Finder - Tipas - - - Type - All other platforms - Tipas - - - Date Modified - Pakeitimo data - - - My Computer - Mano kompiuteris - - - Computer - Kompiuteris - - - %1 TB - %1 TB - - - %1 GB - %1 GB - - - %1 MB - %1 MB - - - %1 KB - %1 KB - - - %1 bytes - %1 baitai - - - - QFontDatabase - - Normal - Įprastas - - - Bold - Pusjuodis - - - Demi Bold - Silpnai pusjuodis - - - Black - Juodas - - - Demi - Pusiau - - - Light - Plonas - - - Italic - Kursyvinis - - - Oblique - Pasviras - - - Any - Bet koks - - - Latin - Lotynų - - - Greek - Graikų - - - Cyrillic - Kirilica - - - Armenian - Armėnų - - - Hebrew - Hebrajų - - - Arabic - Arabų - - - Syriac - Sirų - - - Thaana - - - - Devanagari - Devanagari - - - Bengali - Bengalų - - - Gurmukhi - Gurmukhi - - - Gujarati - Gudžarati - - - Oriya - - - - Tamil - Tamilų - - - Telugu - Telugu - - - Kannada - - - - Malayalam - Malajalių - - - Sinhala - Sinhala - - - Thai - Tajų - - - Lao - Laosiečių - - - Tibetan - Tibeto - - - Myanmar - Mianmaro - - - Georgian - Gruzinų - - - Khmer - Chmerų - - - Simplified Chinese - Supaprastinta kinų - - - Traditional Chinese - Tradicinė kinų - - - Japanese - Japonų - - - Korean - Korėjiečių - - - Vietnamese - Vietnamiečių - - - Symbol - Simbolis - - - Ogham - - - - Runic - Runų - - - - QFontDialog - - &Font - &Šriftas - - - Font st&yle - Šrifto &stilius - - - &Size - &Dydis - - - Effects - Efektai - - - Stri&keout - Per&braukta - - - &Underline - &Pabrauktas - - - Sample - Pavyzdys - - - Wr&iting System - Rašymo &sistema - - - Select Font - Pasirinkti šriftą - - - - QFtp - - Not connected - Neprisijungta - - - Host %1 not found - Pagrindinis kompiuteris %1 nerastas - - - Connection refused to host %1 - Prisijungimas prie pagrindinio kompiuterio %1 atmestas - - - Connected to host %1 - Prisijungta prie pagrindinio kompiuterio %1 - - - Connection refused for data connection - - - - Unknown error - Nežinoma klaida - - - Connecting to host failed: -%1 - Nepavyko prisijungti prie pagrindinio kompiuterio: -%1 - - - Login failed: -%1 - Prisijungti nepavyko: -%1 - - - Listing directory failed: -%1 - Nepavyko pateikti aplankų sąrašo: -%1 - - - Changing directory failed: -%1 - Nepavyko pakeisti aplanko: -%1 - - - Downloading file failed: -%1 - Nepavyko parsiųsti rinkmenos: -%1 - - - Uploading file failed: -%1 - Nepavyko įkelti rinkmenos: -%1 - - - Removing file failed: -%1 - Nepavyko pašalinti rinkmenos: -%1 - - - Creating directory failed: -%1 - Nepavyko sukurti aplanko: -%1 - - - Removing directory failed: -%1 - Nepavyko pašalinti aplanko: -%1 - - - Connection closed - Ryšys nutrauktas - - - Host %1 found - Rastas pagrindinis kompiuteris %1 - - - Connection to %1 closed - Nutrauktas prisijungimas prie %1 - - - Host found - Rastas pagrindinis kompiuteris - - - Connected to host - Prisijungta prie pagrindinio kompiuterio - - - - QHostInfo - - Unknown error - Nežinoma klaida - - - - QHostInfoAgent - - Host not found - Pagrindinis kompiuteris nerastas - - - Unknown address type - Nežinimo tipo adresas - - - Unknown error - Nežinoma klaida - - - - QHttp - - Unknown error - Nežinoma klaida - - - Request aborted - Užklausa nutraukta - - - No server set to connect to - - - - Wrong content length - Netinkamas turinio ilgis - - - Server closed connection unexpectedly - Serveris netikėtai nutraukė ryšį - - - Connection refused - Ryšys atmestas - - - Host %1 not found - Pagrindinis kompiuteris %1 nerastas - - - HTTP request failed - - - - Invalid HTTP response header - - - - Invalid HTTP chunked body - - - - Host %1 found - Rastas pagrindinis kompiuteris %1 - - - Connected to host %1 - Prisijungta prie pagrindinio kompiuterio %1 - - - Connection to %1 closed - Nutrauktas prisijungimas prie %1 - - - Host found - Rastas pagrindinis kompiuteris - - - Connected to host - Prisijungta prie pagrindinio kompiuterio - - - Connection closed - Ryšys nutrauktas - - - Proxy authentication required - Le proxy requiert une authentification - Reikia nustatyti tapatybę įgaliotame serveryje - - - Authentication required - Reikia nustatyti tapatybę - - - Connection refused (or timed out) - Ryšys atmestas (arba pasibaigė laikas) - - - Proxy requires authentication - Įgaliotasis serveris reikalauja nustatyti tapatybę - - - Host requires authentication - L'hôte requiert une authentification - Pagrindinis kompiuteris reikalauja nustatyti tapatybę - - - Data corrupted - Données corrompues - Duomenys sugadinti - - - Unknown protocol specified - Protocole spécifié inconnu - Nurodytas nežinomas protokolas - - - SSL handshake failed - le handshake SSL a échoué - - - - HTTPS connection requested but SSL support not compiled in - Connexion HTTPS requise mais le support SSL n'est pas compilé - HTTPS ryšiui reikia SSL, tačiau palaikymas nesukompiliuotas - - - - QHttpSocketEngine - - Authentication required - Reikia nustatyti tapatybę - - - - QIBaseDriver - - Error opening database - Erreur d'ouverture de la base de données - Atveriant duomenų bazę įvyko klaida - - - Could not start transaction - La transaction n'a pas pu être démarrée - Nepavyksta pradėti operacijos - - - Unable to commit transaction - Nepavyksta įkelti operacijos - - - Unable to rollback transaction - Nepavyksta atsisakyti operacijos - - - - QIBaseResult - - Unable to create BLOB - Nepavyksta sukurti BLOB - - - Unable to write BLOB - Nepavyksta įrašyti BLOB - - - Unable to open BLOB - Nepavyksta atverti BLOB - - - Unable to read BLOB - Nepavyksta nuskaityti BLOB - - - Could not find array - Impossible de trouver le tableau - - - - Could not get array data - Impossible de trouver le tableau de données - - - - Could not get query info - Impossible d'avoir les informations sur la requête - - - - Could not start transaction - Nepavyksta pradėti operacijos - - - Unable to commit transaction - Nepavyksta įkelti operacijos - - - Could not allocate statement - Impossible d'allouer la requête - - - - Could not prepare statement - Impossible de préparer la requête - - - - Could not describe input statement - Impossible de décrire la requête - - - - Could not describe statement - Impossible de décrire la requête - - - - Unable to close statement - Impossible de fermer la requête - - - - Unable to execute query - Impossible d'exécuter la requête - - - - Could not fetch next item - Impossible de récuperer l'élément suivant - - - - Could not get statement info - Impossible d'avoir les informations sur la requête - Nepavyksta gauti informacijos apie būseną - - - - QIODevice - - Permission denied - Nepakanka leidimų - - - Too many open files - Trop de fichiers ouverts simultanément - Atverta per daug rinkmenų - - - No such file or directory - Aucun fichier ou dossier de ce nom - Tokios rinkmenos ar aplanko nėra - - - No space left on device - Aucun espace disponible sur le périphérique - Įrenginyje nebėra vietos - - - Unknown error - Nežinoma klaida - - - - QInputContext - - XIM - XIM - - - XIM input method - XIM įvesties metodas - - - Windows input method - Windows įvesties metodas - - - Mac OS X input method - Mac OS X įvesties metodas - - - - QLibrary - - QLibrary::load_sys: Cannot load %1 (%2) - QLibrary::load_sys: Nepavyksta įkelti %1 (%2) - - - QLibrary::unload_sys: Cannot unload %1 (%2) - QLibrary::unload_sys: Nepavyksta iškelti %1 (%2) - - - QLibrary::resolve_sys: Symbol "%1" undefined in %2 (%3) - QLibrary::resolve_sys: Symbole "%1" non défini dans %2 (%3) - - - - Could not mmap '%1': %2 - Impossible d'établir la projection en mémoire de '%1' : %2 - - - - Plugin verification data mismatch in '%1' - Données de vérification du plugin différente dans '%1' - - - - Could not unmap '%1': %2 - Impossible de supprimer la projection en mémoire de '%1' : %2 - - - - The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] - Le plugin '%1' utilise une bibliothèque Qt incompatible. (%2.%3.%4) [%5] - „%1“ papildinys naudoja nesuderinamą Qt biblioteką. (%2.%3.%4) [%5] - - - The plugin '%1' uses incompatible Qt library. Expected build key "%2", got "%3" - Le plugin '%1' utilise une bibliothèque Qt incompatible. Clé attendue "%2", reçue "%3" - - - - Unknown error - Nežinoma klaida - - - The shared library was not found. - La bibliothèque partagée est introuvable. - Bendra biblioteka nerasta. - - - The file '%1' is not a valid Qt plugin. - Le fichier '%1' n'est pas un plugin Qt valide. - Rinkmena „%1“ nėra tinkamas Qt papildinys. - - - The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) - Le plugin '%1' utilise une bibliothèque Qt incompatible. (Il est impossible de mélanger des bibliothèques 'debug' et 'release'.) - - - - - QLineEdit - - &Undo - Atša&ukti - - - &Redo - Paka&rtoti - - - Cu&t - Iškirp&ti - - - &Copy - &Kopijuoti - - - &Paste - &Padėti - - - Delete - Ištrinti - - - Select All - Viską pažymėti - - - - QLocalServer - - %1: Name error - %1: Vardo klaida - - - %1: Permission denied - %1: Nepakanka leidimų - - - %1: Address in use - %1: Adresas jau naudojamas - - - %1: Unknown error %2 - %1: Nežinoma klaida %2 - - - - QLocalSocket - - %1: Connection refused - %1: Ryšys atmestas - - - %1: Remote closed - %1: Ryšys nutrauktas - - - %1: Invalid name - %1: Netinkamas pavadinimas - - - %1: Socket access error - %1: Erreur d'accès au socket - - - - %1: Socket resource error - %1: Erreur de ressource du socket - - - - %1: Socket operation timed out - %1: L'opération socket a expiré - - - - %1: Datagram too large - %1: Datagramme trop grand - - - - %1: Connection error - %1: Ryšio klaida - - - %1: The socket operation is not supported - %1: L'opération n'est pas supportée - - - - %1: Unknown error %2 - %1: Nežinoma klaida %2 - - - - QMYSQLDriver - - Unable to open database ' - Napavyksta atverti duomenų bazės - - - Unable to connect - Nepavyksta prisijungti - - - Unable to begin transaction - Nepavyksta pradėti operacijos - - - Unable to commit transaction - Nepavyksta įkelti operacijos - - - Unable to rollback transaction - Nepavyksta atsisakyti operacijos - - - - QMYSQLResult - - Unable to fetch data - Nepavyksta gauti duomenų - - - Unable to execute query - Impossible d'exécuter la requête - - - - Unable to store result - Impossible de stocker le résultat - - - - Unable to prepare statement - Impossible de préparer l'instruction - - - - Unable to reset statement - Impossible de réinitialiser l'instruction - - - - Unable to bind value - Impossible d'attacher la valeur - - - - Unable to execute statement - Impossible d'exécuter la requête - - - - Unable to bind outvalues - Impossible d'attacher les valeurs de sortie - - - - Unable to store statement results - Impossible de stocker les résultats de la requête - - - - Unable to execute next query - Impossible d'exécuterla prochaine requête - - - - Unable to store next result - Impossible de stocker le prochain résultat - - - - - QMdiArea - - (Untitled) - (be antraštės) - - - - QMdiSubWindow - - %1 - [%2] - %1 - [%2] - - - Close - Užverti - - - Minimize - Sumažinti - - - Restore Down - Atstatyti žemiau - - - &Restore - &Atstatyti - - - &Move - &Perkelti - - - &Size - &Dydis - - - Mi&nimize - Su&mažinti - - - Ma&ximize - Iš&didinti - - - Stay on &Top - &Visada viršuje - - - &Close - &Užverti - - - - [%1] - - [%1] - - - Maximize - Išdidinti - - - Unshade - - - - Shade - Ombrer - Patamsinti - - - Restore - Atstatyti - - - Help - Pagalba - - - Menu - Meniu - - - - QMenu - - Close - Užverti - - - Open - Atverti - - - Execute - Įvykdyti - - - - QMessageBox - - Help - Pagalba - - - OK - Gerai - - - About Qt - Apie Qt - - - <p>This program uses Qt version %1.</p> - <p>Ši programa naudoja %1 Qt versija.</p> - - - Show Details... - Rodyti detales... - - - Hide Details... - Slėpti detales... - - - <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://www.trolltech.com/company/model/">www.trolltech.com/company/model/</a> for an overview of Qt licensing.</p> - - - - <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.</p><p>Qt is a Nokia product. See <a href="http://www.trolltech.com/qt/">www.trolltech.com/qt/</a> for more information.</p> - - - - - QMultiInputContext - - Select IM - Sélectionner IM - Pasirinkti ĮM - - - - QMultiInputContextPlugin - - Multiple input method switcher - Sélectionneur de méthode de saisie - - - - Multiple input method switcher that uses the context menu of the text widgets - Sélectionneur de méthode de saisie qui utilise le menu contextuel des widgets de texte - - - - - QNativeSocketEngine - - The remote host closed the connection - L'hôte distant a fermé la connexion - Nuotolinis pagrindinis kompiuteris nutraukė ryšį - - - Network operation timed out - L'opération réseau a expiré - Baigėsi laikas tinklo operacijai - - - Out of resources - Manque de ressources - Trūksta išteklių - - - Unsupported socket operation - Opération socket non supportée - - - - Protocol type not supported - Nepalaikomas protokolo tipas - - - Invalid socket descriptor - Descripteur de socket invalide - - - - Network unreachable - Réseau impossible à rejoindre - Tinklas nepasiekiamas - - - Permission denied - Nepakanka leidimų - - - Connection timed out - Baigėsi ryšio laikas - - - Connection refused - Ryšys atmestas - - - The bound address is already in use - L'adresse liée est déjà en usage - - - - The address is not available - L'adresse n'est pas disponible - - - - The address is protected - L'adresse est protégée - Adresas apsaugotas - - - Unable to send a message - Impossible d'envoyer un message - Nepavyksta išsiųsti žinutės - - - Unable to receive a message - Impossible de recevoir un message - Nepavyksta gauti žinutės - - - Unable to write - Impossible d'écrire - Nepavyksta įrašyti - - - Network error - Tinklo klaida - - - Another socket is already listening on the same port - Un autre socket écoute déjà sur le même port - - - - Unable to initialize non-blocking socket - Impossible d'initialiser le socket asynchrone - - - - Unable to initialize broadcast socket - Impossible d'initialiser le socket broadcast - - - - Attempt to use IPv6 socket on a platform with no IPv6 support - Tentative d'utiliser un socket IPv6 sur une plateforme qui ne supporte pas IPv6 - - - - Host unreachable - Hôte inaccessible - Pagrindinis kompiuteris nepasiekiamas - - - Datagram was too large to send - Le datagramme était trop grand pour être envoyé - - - - Operation on non-socket - Operation sur non-socket - - - - Unknown error - Nežinoma klaida - - - The proxy type is invalid for this operation - Le type de proxy est invalide pour cette opération - - - - - QNetworkAccessFileBackend - - Request for opening non-local file %1 - Requête d'ouverture de fichier distant %1 - Bandoma atverti nuotolinę rinkmeną %1 - - - Error opening %1: %2 - Erreur lors de l'ouverture de %1 : %2 - Atveriant %1 įvyko klaida: %2 - - - Write error writing to %1: %2 - Erreur d'écriture de %1 : %2 - Klaida rašant į %1: %2 - - - Cannot open %1: Path is a directory - Impossible d'ouvrir %1 : le chemin est un dossier - Nepavyksta atverti %1: kelias yra aplankas - - - Read error reading from %1: %2 - Erreur de lecture de %1 : %2 - Klaida skaitant iš %1: %2 - - - - QNetworkAccessFtpBackend - - Cannot open %1: is a directory - Nepavyksta atverti %1: tai yra aplankas - - - Logging in to %1 failed: authentication required - Connexion à %1 a échoué : authentification requise - Nepavyko prisijungti prie %1: reikia patvirtinti tapatybę - - - Error while downloading %1: %2 - Klaida įvyko parsiunčiant %1 : %2 - - - Error while uploading %1: %2 - Klaida įvyko įkeliant %1 : %2 - - - - QNetworkReply - - Error downloading %1 - server replied: %2 - Klaida parsiunčiant %1 - serveris grąžino: %2 - - - Protocol "%1" is unknown - Protokolas „%1“ nežinomas - - - - QNetworkReplyImpl - - Operation canceled - Veiksmas atšauktas - - - - QOCIDriver - - Unable to logon - Nepavyskta pradėti sesijos - - - Unable to initialize - QOCIDriver - Nepavyksta paruošti - - - Unable to begin transaction - Nepavyksta pradėti operacijos - - - Unable to commit transaction - Nepavyksta įrašyti operacijos - - - Unable to rollback transaction - Nepavyksta atsisakyti operacijos - - - - QOCIResult - - Unable to bind column for batch execute - Impossible d'attacher la colonne pour une execution batch - - - - Unable to execute batch statement - Impossible d'exécuter l'instruction batch - - - - Unable to goto next - Impossible de passer au suivant - - - - Unable to alloc statement - Impossible d'allouer la requête - - - - Unable to prepare statement - Impossible de préparer la requête - - - - Unable to bind value - Impossible d'attacher la valeur - - - - Unable to execute select statement - Impossible d'exéctuer la requête select - - - - Unable to execute statement - Impossible d'exéctuer la requête - - - - - QODBCDriver - - Unable to connect - Incapable d'établir une connexion - Nepavyksta prisijungti - - - Unable to connect - Driver doesn't support all needed functionality - Impossible de se connecter - Le pilote ne supporte pas toutes les fonctionnalités nécessaires - Nepavyksta prisijungti - tvarkyklė nepaiko reikiamų funkcijų - - - Unable to disable autocommit - Nepavyksta uždrausti automatinio įkėlimo - - - Unable to commit transaction - Nepavyksta įkelti operacijos - - - Unable to rollback transaction - Nepavyksta atsisakyti operacijos - - - Unable to enable autocommit - Nepavyksta įgalinti automatinio įkėlimo - - - - QODBCResult - - QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration - QODBCResult::reset: Impossible d'utiliser 'SQL_CURSOR_STATIC' comme attribut de requête. Veuillez vérifier la configuration de votre pilote ODBC - - - - Unable to execute statement - Impossible d'exéctuer la requête - - - - Unable to fetch next - Impossible de récupérer le suivant - - - - Unable to prepare statement - Impossible de préparer la requête - - - - Unable to bind variable - Impossible d'attacher la variable - - - - Unable to fetch last - Impossible de récupérer le dernier - - - - Unable to fetch - Nepavyksta gauti - - - Unable to fetch first - Impossible de récupérer le premier - - - - Unable to fetch previous - Impossible de récupérer le précedent - - - - - QObject - - Operation not supported on %1 - Opération non supportée sur %1 - - - - Invalid URI: %1 - Klaidingas URI: %1 - - - Write error writing to %1: %2 - Klaida rašant į %1: %2 - - - Read error reading from %1: %2 - Klaida skaitant iš %1: %2 - - - Socket error on %1: %2 - Erreur de socket sur %1 : %2 - - - - Remote host closed the connection prematurely on %1 - L'hôte distant a fermé sa connexion de façon prématurée sur %1 - - - - Protocol error: packet of size 0 received - Erreur de protocole: paquet de taille 0 reçu - - - - - QPPDOptionsModel - - Name - Pavadinimas - - - Value - Reikšmė - - - - QPSQLDriver - - Unable to connect - Impossible d'établir une connexion - Nepavyksta prisijungti - - - Could not begin transaction - Nepavyksta pradėti operacijos - - - Could not commit transaction - Nepavyksta įkelti operacijos - - - Could not rollback transaction - Nepavyksta atsisakyti operacijos - - - Unable to subscribe - - - - Unable to unsubscribe - Impossible de se désinscrire - - - - - QPSQLResult - - Unable to create query - Nepavyksta sukurti užklausos - - - Unable to prepare statement - Impossible de préparer la requête - - - - - QPageSetupWidget - - Centimeters (cm) - Centimetrai (cm) - - - Millimeters (mm) - Millimetrai (mm) - - - Inches (in) - Coliai (in) - - - Points (pt) - Taškai (pt) - - - Form - Forma - - - Paper - Popierius - - - Page size: - Puslapio dydis: - - - Width: - Plotis: - - - Height: - Aukštis: - - - Paper source: - Popieriaus šaltinis: - - - Orientation - Orientacija - - - Portrait - Stačias - - - Landscape - Gulsčias - - - Reverse landscape - Apverstas gulsčias - - - Reverse portrait - Apverstas stačias - - - Margins - Paraštės - - - top margin - viršutinė paraštė - - - left margin - kairioji paraštė - - - right margin - dešinioji paraštė - - - bottom margin - apatinė paraštė - - - - QPluginLoader - - Unknown error - Nežinoma klaida - - - The plugin was not loaded. - Papildinys neįkeltas. - - - - QPrintDialog - - locally connected - vietinis prijungimas - - - Aliases: %1 - Pseudonimai: %1 - - - unknown - nežinoma - - - Print To File ... - Spausdinti į rinkmeną... - - - File %1 is not writable. -Please choose a different file name. - Nepavyksta rašyti į %1. -Pasirinkite kitą rinkmenos pavadinimą. - - - %1 already exists. -Do you want to overwrite it? - %1 jau yra. -Perrašyti? - - - %1 is a directory. -Please choose a different file name. - %1 yra aplankas. -Pasirinkite kitą rinkmenos pavadinimą. - - - A0 - A0 - - - A1 - A1 - - - A2 - A2 - - - A3 - A3 - - - A4 - A4 - - - A5 - A5 - - - A6 - A6 - - - A7 - A7 - - - A8 - A8 - - - A9 - A9 - - - B0 - B0 - - - B1 - B1 - - - B2 - B2 - - - B3 - B3 - - - B4 - B4 - - - B5 - B5 - - - B6 - B6 - - - B7 - B7 - - - B8 - B8 - - - B9 - B9 - - - B10 - B10 - - - C5E - C5E - - - DLE - DLE - - - Executive - - - - Folio - - - - Ledger - - - - Legal - - - - Letter - Laiškas - - - Tabloid - - - - US Common #10 Envelope - - - - Custom - Savitas - - - &Options >> - &Parinktys >> - - - &Print - &Spausdinti - - - &Options << - &Parinktys << - - - Print to File (PDF) - Spausdinti į rinkmeną (PDF) - - - Print to File (Postscript) - Spausdinti į rinkmeną (PostScript) - - - Local file - Vietinė rinkmena - - - Write %1 file - Įrašyti į rinkmeną %1 - - - - QPrintPreviewDialog - - Page Setup - Puslapio konfigūracija - - - Print Preview - Spaudinio peržiūra - - - Next page - Tolesnis puslapis - - - Previous page - Ankstesnis puslapis - - - First page - Pirmas puslapis - - - Last page - Paskutinis puslapis - - - Fit width - Taikyti pagal plotį - - - Fit page - Įtalpinti puslapį - - - Zoom in - Priartinti - - - Zoom out - Atitolinti - - - Portrait - Stačias - - - Landscape - Gulsčias - - - Show single page - Rodyti vieną puslapį - - - Show facing pages - Rodyti po du puslapius - - - Show overview of all pages - Rodyti visus puslapius - - - Print - Spausdinti - - - Page setup - Puslapio konfigūracija - - - Close - Užverti - - - - QPrintPropertiesWidget - - Form - Forma - - - Page - Puslapis - - - Advanced - Sudėtingiau - - - - QPrintSettingsOutput - - Form - Forma - - - Copies - Kopijos - - - Print range - Imprimer la sélection - Spausdinimo rėžis - - - Print all - Viską spausdinti - - - Pages from - Puslapius nuo - - - to - iki - - - Selection - Sélection - Pasirinkimas - - - Output Settings - Paramètres de sortie - Išvesties nuostatos - - - Copies: - Kopijos: - - - Collate - Assembler - Rikiuoti - - - Reverse - Inverse - Atvirkščiai - - - Options - Parinktys - - - Color Mode - Spalvų veiksena - - - Color - Spalvota - - - Grayscale - Pilkumo skalė - - - Duplex Printing - Impression en duplex - Dvipusis spausdinimas - - - None - Nieko - - - Long side - Côté long - Platusis kraštas - - - Short side - Côté court - Siaurasis kraštas - - - - QPrintWidget - - Form - Forma - - - Printer - Spausdintuvas - - - &Name: - &Pavadinimas: - - - P&roperties - &Savybės - - - Location: - Vieta: - - - Preview - Peržiūra - - - Type: - Tipas: - - - Output &file: - Išvesties &rinkmena: - - - ... - ... - - - - QProgressDialog - - Cancel - Atšaukti - - - - QPushButton - - Open - Atverti - - - - QRadioButton - - Check - Pažymėti - - - - QRegExp - - no error occurred - aucune erreur ne s'est produite - jokių klaidų - - - disabled feature used - parinktis uždrausta - - - bad char class syntax - syntaxe invalide pour classe de caractère - - - - bad lookahead syntax - syntaxe invalide pour lookahead - - - - bad repetition syntax - syntaxe invalide pour répétition - - - - invalid octal value - valeur octale invalide - - - - missing left delim - délémiteur gauche manquant - - - - unexpected end - fin impromptue - netikėta pabaiga - - - met internal limit - rencontré limite interne - pasiekta vidinė riba - - - - QSQLite2Driver - - Error to open database - Erreur à l'ouverture de la base de données - Atveriant duomenų bazę įvyko klaida - - - Unable to begin transaction - Nepavyksta pradėti operacijos - - - Unable to commit transaction - Nepavyksta įkelti operacijos - - - Unable to rollback Transaction - Nepavyksta atsisakyti operacijos - - - - QSQLite2Result - - Unable to fetch results - Nepavyksta gauti rezultatų - - - Unable to execute statement - Impossible d'exécuter la requête - - - - - QSQLiteDriver - - Error opening database - Atveriant duomenų bazę įvyko klaida - - - Error closing database - Užveriant duomenų bazę įvyko klaida - - - Unable to begin transaction - Nepavyksta pradėti operacijos - - - Unable to commit transaction - Nepavyksta įkelti operacijos - - - Unable to rollback transaction - Nepavyksta atsisakyti operacijos - - - - QSQLiteResult - - Unable to fetch row - Nepavyksta gauti dabar - - - Unable to execute statement - Impossible d'exécuter la requête - - - - Unable to reset statement - Impossible de réinitialiser la requête - - - - Unable to bind parameters - Impossible d'attacher les paramètres - - - - Parameter count mismatch - Nombre de paramètres incorrect - - - - No query - Pas de requête - Užklausos nėra - - - - QScrollBar - - Scroll here - Slikti iki čia - - - Left edge - Kairysis kraštas - - - Top - Viršus - - - Right edge - Dešinysis kraštas - - - Bottom - Apačia - - - Page left - Puslapis kairėje - - - Page up - Puslapiu aukštyn - - - Page right - Puslapis dešinėje - - - Page down - Puslapiu žemyn - - - Scroll left - Slinkti kairėn - - - Scroll up - Slikti auktyn - - - Scroll right - Slinkti dešinėn - - - Scroll down - Slinkti žemyn - - - Line up - Linija aukštyn - - - Position - Padėtis - - - Line down - Linija žemyn - - - - QSharedMemory - - %1: unable to set key on lock - %1 : impossible d'affecter la clé au verrou - - - - %1: create size is less then 0 - %1 : taille de création est inférieur à 0 - - - - %1: unable to lock - %1 : impossible de vérrouiller - - - - %1: unable to unlock - %1 : impossible de déverrouiller - - - - %1: permission denied - %1: nepakanka leidimų - - - %1: already exists - %1: jau yra - - - %1: doesn't exists - %1: nėra - - - %1: out of resources - %1: viršija išteklius - - - %1: unknown error %2 - %1: nežinoma klaida %2 - - - %1: key is empty - %1 : clé vide - - - - %1: unix key file doesn't exists - %1 : le fichier de clé unix n'existe pas - - - - %1: ftok failed - %1 : ftok a échoué - - - - %1: unable to make key - %1 : impossible de créer la clé - - - - %1: system-imposed size restrictions - %1 : le système impose des restrictions sur la taille - - - - %1: not attached - %1 : non attaché - - - - - QShortcut - - Space - Tarpas - - - Esc - Gr(įžti) - - - Tab - Tab(uliacija) - - - Backtab - - - - Backspace - Naikinti - - - Return - Įvesti - - - Enter - Įvesti - - - Ins - Įterpti - - - Del - Šalinti - - - Pause - Pauzė - - - Print - Ekrano nuotrauka - - - SysReq - - - - Home - Prad(žia) - - - End - Pab(aiga) - - - Left - Kairėn - - - Up - Aukštyn - - - Right - Dešinėn - - - Down - Žemyn - - - PgUp - Psl aukštyn - - - PgDown - Psl žemyn - - - CapsLock - Didž(iosios) - - - NumLock - Skaitm(enys) - - - ScrollLock - Slinkti - - - Menu - Meniu - - - Help - Pagalba - - - Back - Atgal - - - Forward - Toliau - - - Stop - Stabdyti - - - Refresh - Atnaujinti - - - Volume Down - Pritildyti - - - Volume Mute - Nutildyti - - - Volume Up - Pagarsinti - - - Bass Boost - Graves fort - Žemi dažniai - - - Bass Up - Graves haut - - - - Bass Down - Graves bas - - - - Treble Up - Aigus haut - - - - Treble Down - Aigus bas - - - - Media Play - Groti kūrinį - - - Media Stop - Sustabdyti kūrinį - - - Media Previous - Ankstenis kūrinys - - - Media Next - Tolesnis kūrinys - - - Media Record - Įrašyti kūrinį - - - Favorites - Préférés - - - - Search - Recherche - Ieškoti - - - Standby - Attente - Užmigdyti - - - Open URL - Atverti URL - - - Launch Mail - Lancer courrier - Paštas - - - Launch Media - Lancer média - - - - Launch (0) - Paleisti (0) - - - Launch (1) - Paleisti (1) - - - Launch (2) - Paleisti (2) - - - Launch (3) - Paleisti (3) - - - Launch (4) - Paleisti (4) - - - Launch (5) - Paleisti (5) - - - Launch (6) - Paleisti (6) - - - Launch (7) - Paleisti (7) - - - Launch (8) - Paleisti (8) - - - Launch (9) - Paleisti (9) - - - Launch (A) - Paleisti (A) - - - Launch (B) - Paleisti (B) - - - Launch (C) - Paleisti (C) - - - Launch (D) - Paleisti (D) - - - Launch (E) - Paleisti (E) - - - Launch (F) - Paleisti (F) - - - Print Screen - Ekrano nuotrauka - - - Page Up - Puslapiu aukštyn - - - Page Down - Puslapiu žemyn - - - Caps Lock - Didžiosios - - - Num Lock - Skaitmenys - - - Number Lock - Skaitmenys - - - Scroll Lock - Slinkti - - - Insert - Įterpti - - - Delete - Šalinti - - - Escape - Grįžti - - - System Request - - - - Select - Pasirinkti - - - Yes - Taip - - - No - Ne - - - Context1 - 1kontekstas - - - Context2 - 2kontekstas - - - Context3 - 3kontekstas - - - Context4 - 4kontekstas - - - Call - Appeler - - - Hangup - Raccrocher - - - Flip - Retourner - - - Ctrl - Vald - - - Shift - Lyg2 - - - Alt - Alt - - - Meta - Meta - - - + - + - - - F%1 - F%1 - - - Home Page - Pagrindinis puslapis - - - - QSlider - - Page left - Puslapis kairėje - - - Page up - Puslapiu aukštyn - - - Position - Padėtis - - - Page right - Puslapis dešinėje - - - Page down - Puslapiu žemyn - - - - QSocks5SocketEngine - - Socks5 timeout error connecting to socks server - Erreur d'expiration socks5 lors de l'établissement d'une connexion au serveur socks - - - - Network operation timed out - L'opération réseau a expiré - Baigėsi laikas tinklo operacijai - - - - QSpinBox - - More - Daugiau - - - Less - Mažiau - - - - QSql - - Delete - Supprimer - Šalinti - - - Delete this record? - Supprimer cet enregistrement ? - Pašalinti įrašą? - - - Yes - Taip - - - No - Ne - - - Insert - Insérer - Įterpti - - - Update - Atnaujinti - - - Save edits? - Enregistrer les modifications - Išsaugoti pakeitimus? - - - Cancel - Atšaukti - - - Confirm - Patvirtinti - - - Cancel your edits? - Annuler vos modifications - Atmesti pakeitimus? - - - - QSslSocket - - Unable to write data: %1 - Nepavyksta įrašyti duomenų: %1 - - - Error while reading: %1 - Skaitymo klaida: %1 - - - Error during SSL handshake: %1 - Erreur lors de la poignée de main SSL : %1 - - - - Error creating SSL context (%1) - Erreur lors de la création du contexte SSL (%1) - - - - Invalid or empty cipher list (%1) - La list de chiffrements est invalide ou vide (%1) - - - - Error creating SSL session, %1 - Kuriant SSL sesiją įvyko klaida, %1 - - - Error creating SSL session: %1 - Kuriant SSL sesiją įvyko klaida: %1 - - - Cannot provide a certificate with no key, %1 - Impossible de fournir un certificat sans clé, %1 - - - - Error loading local certificate, %1 - Įkeliant vietinį liudijimą įvyko klaida, %1 - - - Error loading private key, %1 - Erreur lors du chargement de la clé privée, %1 - Klaida įkeliant privatųjį raktą, %1 - - - Private key does not certificate public key, %1 - La clé privée ne certifie pas la clé publique, %1 - - - - - QTDSDriver - - Unable to open connection - Impossible d'ouvrir la connexion - nepavyksta atverti ryšio - - - Unable to use database - Impossible d'utiliser la base de données - Napavyksta pasinaudoti duomenų baze - - - - QTabBar - - Scroll Left - Slinkti kairėn - - - Scroll Right - Slinkti dešinėn - - - - QTextControl - - &Undo - Atša&ukti - - - &Redo - Paka&rtoti - - - Cu&t - Iškirp&ti - - - &Copy - &Kopijuoti - - - Copy &Link Location - Kopijuoti &nuorodos adresą - - - &Paste - &Padėti - - - Delete - Ištrinti - - - Select All - Viską pažymėti - - - - QToolButton - - Press - Spausti - - - Open - Atverti - - - - QUdpSocket - - This platform does not support IPv6 - Cette plateforme ne supporte pas IPv6 - Ši platforma nepalaiko IPv6 - - - - QUndoGroup - - Undo - Atšaukti - - - Redo - Pakartoti - - - - QUndoModel - - <empty> - <tuščia> - - - - QUndoStack - - Undo - Atšaukti - - - Redo - Pakartoti - - - - QUnicodeControlCharacterMenu - - LRM Left-to-right mark - LRM žymė iš kairės į dešinę - - - RLM Right-to-left mark - RLM žymė iš dešinės į kairę - - - ZWJ Zero width joiner - ZWJ nulinio pločio jungtis - - - ZWNJ Zero width non-joiner - ZWNJ nulinio pločio nejungtis - - - ZWSP Zero width space - ZWSP nulinio pločio tarpas - - - LRE Start of left-to-right embedding - LRE „iš kairės į dešinę“ integruotas - - - RLE Start of right-to-left embedding - RLE „iš dešinės į kairę“ integruotas - - - LRO Start of left-to-right override - LRO „iš kairės į dešinę“ atšaukimas - - - RLO Start of right-to-left override - RLO „iš dešinės į kairę“ atšaukimas - - - PDF Pop directional formatting - PDF Pop kryptingas formatavimas - - - Insert Unicode control character - Įterpti unikodo valdymo simbolį - - - - QWebFrame - - Request cancelled - Atsisakyta užklausos - - - Request blocked - Requête bloquée - Užklausa užblokuota - - - Cannot show URL - Nepavyksta parodyti URL - - - Frame load interruped by policy change - Chargement de la frame interrompu par un changement de configuration - - - - Cannot show mimetype - Impossible d'afficher le mimetype - Negalima parodyti MIME tipo - - - File does not exist - Rinkmenos nėra - - - - QWebPage - - Bad HTTP request - Requête HTTP erronée - Bloga HTTP užklausa - - - Submit - default label for Submit buttons in forms on web pages - Pateikti - - - Submit - Submit (input element) alt text for <input> elements with no alt, title, or value - Pateikti - - - Reset - default label for Reset buttons in forms on web pages - Iš naujo - - - This is a searchable index. Enter search keywords: - text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index' - Ceci est un index. Veuillez saisir les mots-clé : - - - - Choose File - title for file button used in HTML forms - Pasirinkti rinkmeną - - - No file selected - text to display in file button used in HTML forms when no file is selected - Rinkmena nepasirinkta - - - Open in New Window - Open in New Window context menu item - Atverti naujame lange - - - Save Link... - Download Linked File context menu item - Įrašyti nuorodą... - - - Copy Link - Copy Link context menu item - Kopijuoti nuorodą - - - Open Image - Open Image in New Window context menu item - Atverti paveikslėlį - - - Save Image - Download Image context menu item - Įrašyti paveikslėlį - - - Copy Image - Copy Link context menu item - Kopijuoti paveikslėlį - - - Open Frame - Open Frame in New Window context menu item - Atverti kadrą - - - Copy - Copy context menu item - Kopijuoti - - - Go Back - Back context menu item - Atgal - - - Go Forward - Forward context menu item - Toliau - - - Stop - Stop context menu item - Stabdyti - - - Reload - Reload context menu item - Įkelti iš naujo - - - Cut - Cut context menu item - Iškirpti - - - Paste - Paste context menu item - Padėti - - - No Guesses Found - No Guesses Found context menu item - Pas de candidat trouvés - - - - Ignore - Ignore Spelling context menu item - Nepaisyti - - - Add To Dictionary - Learn Spelling context menu item - Įtraukti į žodyną - - - Search The Web - Search The Web context menu item - Ieškoti žiniatinklyje - - - Look Up In Dictionary - Look Up in Dictionary context menu item - Ieškoti žodyne - - - Open Link - Open Link context menu item - Atverti nuorodą - - - Ignore - Ignore Grammar context menu item - Nepaisyti - - - Spelling - Spelling and Grammar context sub-menu item - Rašybos tikrinimas - - - Show Spelling and Grammar - menu item title - Rodyti rašybos ir gramatikos tikrinimą - - - Hide Spelling and Grammar - menu item title - Slėpti rašybos ir gramatikos tikrinimą - - - Check Spelling - Check spelling context menu item - Tikrinti rašybą - - - Check Spelling While Typing - Check spelling while typing context menu item - Rašybą tikrinti įvedimo metu - - - Check Grammar With Spelling - Check grammar with spelling context menu item - Tikrinant rašybą, tikrinti ir gramatiką - - - Fonts - Font context sub-menu item - Šriftai - - - Bold - Bold context menu item - Pusjuodis - - - Italic - Italic context menu item - Kursyvinis - - - Underline - Underline context menu item - Pabrauktas - - - Outline - Outline context menu item - Kontūras - - - Direction - Writing direction context sub-menu item - Kryptis - - - Default - Default writing direction context menu item - Numatyta - - - LTR - Left to Right context menu item - Iš kairės į dešinę - - - RTL - Right to Left context menu item - Iš dešinės į kairę - - - Inspect - Inspect Element context menu item - Inspecter - - - - No recent searches - Label for only item in menu that appears when clicking on the search field image, when no searches have been performed - Paieškų nebuvo - - - Recent searches - label for first item in the menu that appears when clicking on the search field image, used as embedded menu title - Paskiausios paieškos - - - Clear recent searches - menu item in Recent Searches menu that empties menu's contents - Išvalyti paskiausias paieškas - - - Unknown - Unknown filesize FTP directory listing item - Nežinoma - - - %1 (%2x%3 pixels) - Title string for images - %1 (%2x%3 tšk) - - - Web Inspector - %2 - Inspecteur Web - %2 - - - - - QWhatsThisAction - - What's This? - Kas tai? - - - - QWidget - - * - * - - - - QWizard - - Go Back - Atgal - - - Continue - Toliau - - - Commit - Įkelti - - - Done - Užbaigti - - - Quit - Baigti - - - Help - Pagalba - - - < &Back - < &Atgal - - - &Finish - &Užbaigti - - - Cancel - Atšaukti - - - &Help - &Pagalba - - - &Next - &Toliau - - - &Next > - &Toliau > - - - - QWorkspace - - &Restore - &Atstatyti - - - &Move - &Perkelti - - - &Size - &Keisti dydį - - - Mi&nimize - Su&mažinti - - - Ma&ximize - Iš&didinti - - - &Close - &Užverti - - - Stay on &Top - &Visada viršuje - - - Sh&ade - &Enrouler - - - - %1 - [%2] - %1 - [%2] - - - Minimize - Sumažinti - - - Restore Down - Restaurer en bas - - - - Close - Užverti - - - &Unshade - &Dérouler - - - - - QXml - - no error occurred - aucune erreur ne s'est produite - jokių klaidų - - - error triggered by consumer - erreur déclenchée par le consommateur - - - - unexpected end of file - fin de fichier impromptue - - - - more than one document type definition - plus d'une définition de type de document - - - - error occurred while parsing element - une erreur s'est produite lors de l'analyse d'un élément - - - - tag mismatch - balise débalancée - - - - error occurred while parsing content - une erreur s'est produise lors de l'analyse du contenu - - - - unexpected character - caractère impromptu - - - - invalid name for processing instruction - nom d'instruction de traitement invalide - - - - version expected while reading the XML declaration - version attendue dans la déclaration XML - - - - wrong value for standalone declaration - - - - encoding declaration or standalone declaration expected while reading the XML declaration - - - - standalone declaration expected while reading the XML declaration - - - - error occurred while parsing document type definition - une erreur s'est produite lors de l'analyse d'une définition de type de document - - - - letter is expected - lettre attendue - - - - error occurred while parsing comment - une erreur s'est produise lors de l'analyse d'un commentaire - - - - error occurred while parsing reference - une erreur s'est produite lors de l'analyse d'une référence - - - - internal general entity reference not allowed in DTD - appel d'entité interne générale non permis dans la DTD - - - - external parsed general entity reference not allowed in attribute value - appel d'entité externe parsée non permis dans la valeur d'un attribut - - - - external parsed general entity reference not allowed in DTD - appel d'entité externe parsée générale non permis dans la DTD - - - - unparsed entity reference in wrong context - appel d'entité non parsée dans un contexte invalide - - - - recursive entities - entités récursives - - - - error in the text declaration of an external entity - - - - - QXmlStream - - Extra content at end of document. - Conteny supplémentaire à la fin du document. - - - - Invalid entity value. - Valeur de l'entité invalide. - - - - Invalid XML character. - Caractère XML invalide. - - - - Sequence ']]>' not allowed in content. - Séquence ']]>' interdite dans le contenu. - - - - Namespace prefix '%1' not declared - Le préfixe de namespace '%1' non déclaré - - - - Attribute redefined. - Attribut redéfini. - - - - Unexpected character '%1' in public id literal. - Caractère '%1' inattendu dans un 'public id literal'. - - - - Invalid XML version string. - Version XML invalide. - - - - Unsupported XML version. - Version XML non supportée. - - - - %1 is an invalid encoding name. - %1 n'est pas un encodage valide. - - - - Encoding %1 is unsupported - Encodage %1 n'est pas supporté - - - - Standalone accepts only yes or no. - 'Standalone' n'accepte que 'yes' ou 'no'. - - - - Invalid attribute in XML declaration. - Attribut invalide dans la déclaration XML. - - - - Premature end of document. - Fin de document prématurée. - - - - Invalid document. - Document invalide. - - - - Expected - Attendu - - - - , but got ' - , mais eu ' - - - - Unexpected ' - Inattendu ' - - - - Expected character data. - Character data attendu. - - - - Recursive entity detected. - Entité recursive détectée. - - - - Start tag expected. - Balise ouvrante attendue. - - - - XML declaration not at start of document. - Déclaration XML après le début du document. - - - - NDATA in parameter entity declaration. - NDATA dans une déclaration d'entité paramètre. - - - - %1 is an invalid processing instruction name. - %1 est un nom d'instruction de traitement invalide. - - - - Invalid processing instruction name. - Nom d'instruction de traitement invalide. - - - - Illegal namespace declaration. - Déclaration de namespace illégale. - - - - Invalid XML name. - Nom XML invalide. - - - - Opening and ending tag mismatch. - Ouverture et fermeture de balise invalide. - - - - Reference to unparsed entity '%1'. - Référence vers une entité non analysée '%1'. - - - - Entity '%1' not declared. - Entité '%1' non déclarée. - - - - Reference to external entity '%1' in attribute value. - Référence vers une entité externe '%1' dans la valeur de l'attribut. - - - - Invalid character reference. - Référence vers un caractère invalide. - - - - Encountered incorrectly encoded content. - Encodage du contenu incorrect. - - - - The standalone pseudo attribute must appear after the encoding. - Le pseudo attribut standalone doit apparaître après l'encodage. - - - - %1 is an invalid PUBLIC identifier. - %1 n'est pas un identifiant PUBLIC valide. - - - - - QtXmlPatterns - - An %1-attribute with value %2 has already been declared. - Un attribute %1 avec la valeur %2 est déjà déclaré. - - - - An %1-attribute must have a valid %2 as value, which %3 isn't. - Un attribute %1 doit avoir un %2 valide, %3 ne l'a pas. - - - - Network timeout. - Tinklo ryšiui laikas baigėsi. - - - Element %1 can't be serialized because it appears outside the document element. - L'élément %1 ne peut pas être sérialisé parce qu'il est hors de l'élément document. - - - - Year %1 is invalid because it begins with %2. - L'année %1 est invalide parce qu'elle commence par %2. - - - - Day %1 is outside the range %2..%3. - Le jour %1 est hors de l'intervalle %2..%3. - - - - Month %1 is outside the range %2..%3. - Le mois %1 est hors de l'intervalle %2..%3. - - - - Overflow: Can't represent date %1. - Overflow: ne peut pas représenter la date %1. - - - - Day %1 is invalid for month %2. - Jour %1 est invalide pour le mois %2. - - - - Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; - L'heure 24:%1:%2.%3 est invalide. L'heure est 24 mais les minutes, seconndes et millisecondes ne sont pas à 0; - - - - Time %1:%2:%3.%4 is invalid. - L'heure %1:%2:%3.%4 est invalide. - - - - Overflow: Date can't be represented. - Overflow : la date ne peut pas être représentée. - - - - At least one component must be present. - Au moins un composant doit être présent. - - - - At least one time component must appear after the %1-delimiter. - Au moins un composant doit apparaître après le délimiteur %1. - - - - No operand in an integer division, %1, can be %2. - Pas d'opérande dans une division entière, %1, peut être %2. - - - - The first operand in an integer division, %1, cannot be infinity (%2). - Le premier opérande dans une division entière, %1, ne peut être infini (%2). - - - - The second operand in a division, %1, cannot be zero (%2). - Le second opérande dans une division, %1, ne peut être nul (%2). - - - - %1 is not a valid value of type %2. - %1 n'est pas une valeur valide du type %2. - - - - When casting to %1 from %2, the source value cannot be %3. - En castant de %2 vers %1, la valeur source ne peut pas être %3. - - - - Integer division (%1) by zero (%2) is undefined. - Division entière (%1) par zéro (%2) indéfinie. - - - - Division (%1) by zero (%2) is undefined. - Division (%1) par zéro (%2) indéfinie. - Dalyba (%1) iš nulio (%2) negalima. - - - Modulus division (%1) by zero (%2) is undefined. - Module division (%1) par zéro (%2) indéfinie. - - - - Dividing a value of type %1 by %2 (not-a-number) is not allowed. - Diviser une valeur du type %1 par %2 (not-a-number) est interdit. - - - - Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed. - Diviser une valeur de type %1 par %2 ou %3 (plus ou moins zéro) est interdit. - - - - Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed. - La multiplication d'une valeur du type %1 par %2 ou %3 (plus ou moins infini) est interdite. - - - - A value of type %1 cannot have an Effective Boolean Value. - Une valeur de type %1 ne peut pas avoir une Effective Boolean Value. - - - - Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values. - Effective Boolean Value ne peut être calculée pour une séquence contenant deux ou plus valeurs atomiques. - - - - Value %1 of type %2 exceeds maximum (%3). - La valeur %1 de type %2 excède le maximum (%3). - - - - Value %1 of type %2 is below minimum (%3). - La valeur %1 de type %2 est inférieur au minimum (%3). - - - - A value of type %1 must contain an even number of digits. The value %2 does not. - Une valeur de type %1 doit contenir un nombre pair de chiffre. La valeur %2 n'est pas conforme. - - - - %1 is not valid as a value of type %2. - %1 n'est pas une valeur valide de type %2. - - - - Operator %1 cannot be used on type %2. - L'opérateur %1 ne peut pas être utilisé pour le type %2. - - - - Operator %1 cannot be used on atomic values of type %2 and %3. - L'opérateur %1 ne peut pas être utilisé pour des valeurs atomiques de type %2 ou %3. - - - - The namespace URI in the name for a computed attribute cannot be %1. - L'URI de namespace dans le nom d'un attribut calculé ne peut pas être %1. - - - - The name for a computed attribute cannot have the namespace URI %1 with the local name %2. - Le nom d'un attribut calculé ne peut pas avoir l'URI de namespace %1 avec le nom local %2. - - - - Type error in cast, expected %1, received %2. - Erreur de type lors du cast, attendu %1 mais reçu %2. - - - - When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed. - En castant vers %1 ou des types dérivés, la valeur source doit être du même type ou une chaîne. Le type %2 n'est pas autorisé. - - - - No casting is possible with %1 as the target type. - Aucun cast n'est possible avec %1 comme type de destination. - - - - It is not possible to cast from %1 to %2. - Il est impossible de caster de %1 en %2. - - - - Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated. - Caster vers %1 est impossible parce que c'est un type abstrait qui ne peut donc être instancié. - - - - It's not possible to cast the value %1 of type %2 to %3 - I lest impossible de caster la valeur %1 de type %2 en %3 - - - - Failure when casting from %1 to %2: %3 - Echec en castant de %1 ver %2 : %3 - - - - A comment cannot contain %1 - Un commentaire ne peut pas contenir %1 - - - - A comment cannot end with a %1. - Un commentaire ne peut pas finir par %1. - - - - No comparisons can be done involving the type %1. - Aucune comparaison ne peut être faite avec le type %1. - - - - Operator %1 is not available between atomic values of type %2 and %3. - L'opérateur %1 n'est pas disponible entre valeurs atomiques de type %2 et %3. - - - - An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place. - Un noeuds attribut ne peut être un fils d'un noeuds document. C'est pourquoi l'attribut %1 est mal placé. - - - - A library module cannot be evaluated directly. It must be imported from a main module. - Un module de bibliothèque ne peut pas être évalué directement. Il doit être importé d'un module principal. - - - - A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type. - Une valeur de type %1 ne peut être un prédicat. Un prédicat doit être de type numérique ou un Effective Boolean Value. - - - - A positional predicate must evaluate to a single numeric value. - Un prédicat de position doit être évalué en une unique valeur numérique. - - - - The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid. - Le nom de destination dans une instruction de traitement ne peut être %1. %2 est invalide. - - - - %1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3. - %1 n'est pas un nom de destination valide dans une instruction de traitement. Ce doit être une valeur %2, par ex. %3. - - - - The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two. - La dernière étape dans un chemin doit contenir soit des noeuds soit des valeurs atomiques. Cela ne peut pas être un mélange des deux. - - - - The data of a processing instruction cannot contain the string %1 - Les données d'une instruction de traitement ne peut contenir la chaîne %1 - - - - No namespace binding exists for the prefix %1 - Aucun lien de namespace n'existe pour le préfixe %1 - - - - No namespace binding exists for the prefix %1 in %2 - Aucun lien de namespace n'existe pour le préfixe %1 dans %2 - - - - %1 is an invalid %2 - %1 est un ivalide %2 - - - - %1 takes at most %n argument(s). %2 is therefore invalid. - %1 prend au maximum %n argument. %2 est donc invalide. - - - - - - %1 requires at least %n argument(s). %2 is therefore invalid. - %1 requiert au moins %n argument. %2 est donc invalide. - - - - - - The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration. - Le premier argument de %1 ne peut être du type %2. Il doit être de type numérique, xs:yearMonthDuration ou xs:dayTimeDuration. - - - - The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. - Le premier argument de %1 ne peut être du type %2. Il doit être de type %3, %4 ou %5. - - - - The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5. - Le deuxième argument de %1 ne peut être du type %2. Il doit être de type %3, %4 ou %5. - - - - %1 is not a valid XML 1.0 character. - %1 n'est pas un caractère XML 1.0 valide. - - - - The first argument to %1 cannot be of type %2. - Le premier argument de %1 ne peut être du type %2. - - - - If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same. - Si les deux valeurs ont des décalages de zone, elle doivent avoir le même. %1 et %2 sont différents. - - - - %1 was called. - %1 a été appelé. - - - - %1 must be followed by %2 or %3, not at the end of the replacement string. - %1 doit être suivi par %2 ou %3, et non à la fin de la chaîne de remplacement. - - - - In the replacement string, %1 must be followed by at least one digit when not escaped. - Dans la chaîne de remplacement, %1 doit être suivi par au moins un chiffre s'il n'est pas échappé. - - - - In the replacement string, %1 can only be used to escape itself or %2, not %3 - Dans la chaîne de remplacement, %1 peut seulement être utilisé pour échapper lui-même ou %2 mais pas %3 - - - - %1 matches newline characters - %1 correspond à des caractères de saut de ligne - - - - %1 and %2 match the start and end of a line. - %1 et %2 correspondent au début et à la fin d'une ligne. - - - - Matches are case insensitive - Atitikmenys nepaiso raidžių dydžio - - - Whitespace characters are removed, except when they appear in character classes - Les blancs sont supprimés excepté quand ils apparaissent dans les classes de caractère - - - - %1 is an invalid regular expression pattern: %2 - %1 est un modèle d'expression régulière invalide: %2 - - - - %1 is an invalid flag for regular expressions. Valid flags are: - %1 est un flag invalide pour des expressions régulières. Les flags valides sont : - - - - If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified. - Si le premier argument est une sequence vide ou un chaîne vide (sans namespace), un préfixe ne peut être spécifié. Le préfixe %1 a été spécifié. - - - - It will not be possible to retrieve %1. - Il sera impossible de récupérer %1. - - - - The root node of the second argument to function %1 must be a document node. %2 is not a document node. - Le noeuds racine du deuxième argument à la fonction %1 doit être un noeuds document. %2 n'est pas un document. - - - - The default collection is undefined - I'l n'y a pas de collection par défaut - - - - %1 cannot be retrieved - Nepavyksta gauti %1 - - - The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization). - Le forme de normalisation %1 n'est pas supportée. Les formes supportées sont %2, %3, %4 et %5, et aucun, ie. une chaîne vide (pas de normalisation). - - - - A zone offset must be in the range %1..%2 inclusive. %3 is out of range. - - - - %1 is not a whole number of minutes. - - - - Required cardinality is %1; got cardinality %2. - La cardinalité requise est %1; reçu %2. - - - - The item %1 did not match the required type %2. - L'item %1 ne correspond pas au type requis %2. - - - - %1 is an unknown schema type. - %1 est un type de schema inconnu. - - - - Only one %1 declaration can occur in the query prolog. - Seulement une déclaration %1 peut intervenir lors du prologue de la requête. - - - - The initialization of variable %1 depends on itself - L'initialisation de la variable %1 dépend d'elle-même - - - - No variable by name %1 exists - Aucun variable nommée %1 existe - - - - The variable %1 is unused - Kintamasis %1 nenaudojamas - - - Version %1 is not supported. The supported XQuery version is 1.0. - Versija %1nepalaikoma. Palaikoma XQuery versija yra 1.0. - - - The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2. - L'encodage %1 est invalide. Il doit contenir uniquement des caractères latins, sans blanc et doit être conforme à l'expression régulière %2. - - - - No function with signature %1 is available - Aucune fonction avec la signature %1 n'est disponible - - - - A default namespace declaration must occur before function, variable, and option declarations. - Un déclaration de namespace par défaut doit être placée avant toute fonction, variable ou declaration d'option. - - - - Namespace declarations must occur before function, variable, and option declarations. - Les declarations de namespace doivent être placées avant tout fonction, variable ou déclaration d'option. - - - - Module imports must occur before function, variable, and option declarations. - Les imports de module doivent être placés avant tout fonction, variable ou déclaration d'option. - - - - It is not possible to redeclare prefix %1. - Il est impossible de redéclarer le préfixe %1. - - - - Only the prefix %1 can be declared to bind the namespace %2. By default, it is already bound to the prefix %1. - Seul le préfixe %1 peut être déclaré pour lié le namespace %2. Par défaut, il est déjà lié au préfixe %1. - - - - Prefix %1 is already declared in the prolog. - Le préfixe %1 est déjà déclaré dans le prologue. - - - - The name of an option must have a prefix. There is no default namespace for options. - Le nom d'une option doit avoir un préfixe. Il n'y a pas de namespace par défaut pour les options. - - - - The Schema Import feature is not supported, and therefore %1 declarations cannot occur. - La fonctionnalité "Schema Import" n'est pas supportée et les déclarations %1 ne peuvent donc intervenir. - - - - The target namespace of a %1 cannot be empty. - Le namespace cible d'un %1 ne peut être vide. - - - - The module import feature is not supported - La fonctionnalité "module import" n'est pas supportée - - - - A variable by name %1 has already been declared in the prolog. - Une variable du nom %1 a déjà été déclarée dans le prologue. - - - - No value is available for the external variable by name %1. - Aucune valeur n'est disponible pour la variable externe %1. - - - - The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases. - Le namespace %1 est réservé; c'est pourquoi les fonctions définies par l'utilisateur ne peuvent l'utiliser. Essayez le préfixe prédéfini %2 qui existe pour ces cas. - - - - The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2 - Le namespace d'une fonction utilisateur dans un module de bibliothèque doit être équivalent au namespace du module. En d'autres mots, il devrait être %1 au lieu de %2 - - - - A function already exists with the signature %1. - Une fonction avec la signature %1 existe déjà. - - - - No external functions are supported. All supported functions can be used directly, without first declaring them as external - Les fonctions externes ne sont pas supportées. Toutes les fonctions supportées peuvent êter utilisées directement sans les déclarer préalablement comme externes - - - - An argument by name %1 has already been declared. Every argument name must be unique. - Un argument nommé %1 a déjà été déclaré. Chaque nom d'argument doit être unique. - - - - The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide. - Le nom d'une variable liée dans un expression for doit être different de la variable positionnelle. Les deux variables appelées %1 sont en conflit. - - - - The Schema Validation Feature is not supported. Hence, %1-expressions may not be used. - La fonctionnalité "Schema Validation" n'est pas supportée. Les expressions %1 ne seront pas utilisées. - - - - None of the pragma expressions are supported. Therefore, a fallback expression must be present - Aucune des expressions pragma n'est supportée. Une expression par défault doit être présente - - - - The %1-axis is unsupported in XQuery - L'axe %1 n'est pas supporté dans XQuery - - - - %1 is not a valid numeric literal. - %1 n'est pas une valeur numérique valide. - - - - No function by name %1 is available. - La fonction %1 n'est pas disponible. - - - - The namespace URI cannot be the empty string when binding to a prefix, %1. - L'URI de namespace ne peut être une chaîne vide quand on le lie à un préfixe, %1. - - - - %1 is an invalid namespace URI. - %1 est un URI de namespace invalide. - - - - It is not possible to bind to the prefix %1 - Il est impossible de se lier au préfixe %1 - - - - Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared). - Le namespace %1 peut seulement être lié à %2 (et doit être pré-déclaré). - - - - Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared). - Le préfixe %1 peut seulement être lié à %2 (et doit être prédéclaré). - - - - Two namespace declaration attributes have the same name: %1. - Deux attributs de déclarations de namespace ont le même nom : %1. - - - - The namespace URI must be a constant and cannot use enclosed expressions. - L'URI de namespace doit être une constante et ne peut contenir d'expressions. - - - - An attribute by name %1 has already appeared on this element. - Un attribute nommé %1 existe déjà pour cet élément. - - - - A direct element constructor is not well-formed. %1 is ended with %2. - Un constructeur direct d'élément est mal-formé. %1 est terminé par %2. - - - - The name %1 does not refer to any schema type. - Le nom %1 ne se réfère à aucun type de schema. - - - - %1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works. - %1 est une type complexe. Caster vers des types complexes n'est pas possible. Cependant, caster vers des types atomiques comme %2 marche. - - - - %1 is not an atomic type. Casting is only possible to atomic types. - %1 n'est pas un type atomique. Il est uniquement possible de caster vers des types atomiques. - - - - %1 is not a valid name for a processing-instruction. Therefore this name test will never match. - %1 n'est pas un nom valide pour une instruction de traitement. C'est pourquoi ce test de nom ne réussira jamais. - - - - %1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported. - %1 n'est pas dans les déclaration d'attribut in-scope. La fonctionnalité d'inport de schéma n'est pas supportée. - - - - The name of an extension expression must be in a namespace. - Le nom d'une expression d'extension doit être dans un namespace. - - - - empty - vide - tuščia - - - zero or one - zéro ou un - nulis arba vienas - - - exactly one - exactement un - tik vienas - - - one or more - vienas arba daugiau - - - zero or more - nulis arba daugiau - - - Required type is %1, but %2 was found. - Le type requis est %1, mais %2 a été reçu. - - - - Promoting %1 to %2 may cause loss of precision. - La Promotion de %1 vers %2 peut causer un perte de précision. - - - - The focus is undefined. - Le focus est indéfini. - - - - It's not possible to add attributes after any other kind of node. - Il est impossible d'ajouter des attributs après un autre type de noeuds. - - - - An attribute by name %1 has already been created. - Un attribute de nom %1 a déjà été créé. - - - - Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported. - - - - Attribute %1 can't be serialized because it appears at the top level. - L'attribut %1 ne peut pas être sérialisé car il apparaît à la racine. - - - - The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this) - - - - - VolumeSlider - - Muted - Nutildyta - - - Volume: %1% - Garsumas: %1% - - - - WebCore::PlatformScrollbar - - Scroll here - Slikti iki čia - - - Left edge - Kairysis kraštas - - - Top - Viršus - - - Right edge - Dešinysis kraštas - - - Bottom - Apačia - - - Page left - Puslapis kairėje - - - Page up - Puslapis viršuje - - - Page right - Puslapis dešinėje - - - Page down - Puslapis apačioje - - - Scroll left - Slinkti kairėn - - - Scroll up - Slikti auktyn - - - Scroll right - Slinkti dešinėn - - - Scroll down - Slinkti žemyn - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qu_WI.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qu_WI.ts deleted file mode 100644 index 5ff72c25f0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/qu_WI.ts +++ /dev/null @@ -1,5651 +0,0 @@ - - - - - - - XML parse error: %1 at %2,%3 - Error leyendo XML: %1 en %2,%3 - - - - About - - - About - GoldenDictmanta - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Yanapaqkuna: - - - GoldenDict dictionary lookup program, version 0.7 - GoldenDict diccionario electrónico, versión 0.7 - - - - GoldenDict dictionary lookup program, version - GoldenDict simi-pirwapi mask'ana, versión - - - #.# - #.# - - - - Licensed under GNU GPLv3 or later - GNU GPL kamachiyuq, versión 3 qhipamantataq - - - - [Unknown] - [mana yachasqachu] - - - - Based on Qt %1 (%2, %3 bit) - - - - - ArticleMaker - - - Expand article - - - - - Collapse article - - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Mana <b>%2</b> juñupi <b>%1</b> simita tarinchu. - - - - No translation was found in group <b>%1</b>. - Mana <b>%1</b> juñupi simita tarinchu. - - - - Welcome! - Qallarinapaq - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">¡Bienvenido a <b>GoldenDict</b>!</h3><p>Qallarinapaq, <b>Allinchay > Simi-pirwakuna</b> riy. Jaqaypi simi-pirwakunata mask'anapaq ñankunata yapay. Chaymanta, simi-pirwakunata ñiqichayta atinki. Juñukunaman simi-pirwakunata yapayta atinkitaq. <p>Chaymantari, simikunapi simikunata atinki. Mask'anapaq tawak'uchupi simita qillqapay. Wak programakunapi simikunata mask'anapaq, <a href="Working with popup">Juch'uy qhawanapi mask'ayta</a> qhaway. <p>Kay programata kamachinapaq <b>Allinchay &gt; Aqllanakuna</b> menuman riy. Achkhata yachanapaq qqllanakunaqpa willaynkukunata nawichayta atinki. <p>Aswan yanapata munaspaqa, <a href="http://goldendict.org/forum/">GoldenDictpa foronpi</a> tapuyta atinki. Kay programata kunanchanapaq <p><a href="http://goldendict.org/">web raphiman</a> riy. <p>(c) 2008-2013 Konstantin Isakov. GoldenDictqa GPL kamachiyyuq, versión 3 qhipamantataq. - - - - Working with popup - Juch'uy qhawanapi mask'anapaq - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Cómo Utilizar la ventana emergente</h3>Para buscar palabras desde otras aplicaciones activas, primero hay que habilitar la opción <i>"Escaneo en una ventana emergente"</i> en <b>Editar|Preferencias</b>. Luego puede utilizarla en cualquier momento, activando el icono arriba de la 'Ventana Emergente'. Alternativamente, haga clic a derecha abajo en la bandeja del sistema y seleccione la opción <b>Escanear con Ventana Emergente</b> en el menú. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Luego detenga el cursor sobre la palabra que Ud. quiere buscar en otra aplicación y una ventana emergente aparecerá para hacer la consulta. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Luego, seleccione una palabra deseada con su ratón para buscarla desde otra aplicación. Para seleccionar una palabra haga doble clic o arrastra sobre la palabra mientras oprimiendo el botón del ratón, y una ventana emergente aparecerá con la definición de la palabra. - - - - (untitled) - (mana sutiyuq) - - - - (picture) - - - - - ArticleRequest - - - From - - - - From %1 - From %1 - - - - Expand article - - - - - Collapse article - - - - - Query error: %1 - Pantay mask'aspa: %1 - - - - Close words: - Simikunata wisq'ay: - - - - Compound expressions: - Expresiones compuestas: - - - - Individual words: - Palabras individuales: - - - - ArticleView - - - Select Current Article - - - - - Copy as text - - - - - Inspect - - - - - Resource - - - - - Audio - - - - - TTS Voice - - - - - Picture - - - - - Definition from dictionary "%1": %2 - - - - - Definition: %1 - - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - El recurso referido no existe. - - - - The referenced audio program doesn't exist. - - - - - - ERROR: %1 - - - - - Save sound - - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - - - - - Save image - - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - - - - - &Open Link - &T'inkisqata kichay - - - - Video - - - - - Video: %1 - - - - - Open Link in New &Tab - Musuq pestañapi t'inkisqata kichay - - - - Open Link in &External Browser - Abrir enlace en un &navegador web externo - - - - &Look up "%1" - "%1"ta &mask'ay - - - - Look up "%1" in &New Tab - &Musuq pestañapi "%1"ta mask'ay - - - - Send "%1" to input line - - - - - - &Add "%1" to history - - - - - Look up "%1" in %2 - %2pi "%1"ta mask'ay - - - - Look up "%1" in %2 in &New Tab - &Musuq pestañapi %2pi "%1"ta mask'ay - - - - WARNING: FFmpeg Audio Player: %1 - - - - Playing a non-WAV file - Mana WAVchu archivota takichichkan - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Para activar reproducción de archivos no WAV, por favor vaya a Editar|Preferencias, escoja la pestaña Audio y seleccione "Reproducir con DirectShow". - - - - Failed to run a player to play sound file: %1 - Fallo ejecutando un reproductor para reproducir el archivo de audio: %1 - - - - Failed to create temporary file. - Temporal archiwuta yurichispa pantay. - - - - Failed to auto-open resource file, try opening manually: %1. - Fallo abriendo automáticamente el archivo de recursos. Intente abrirlo manualmente: %1. - - - - The referenced resource failed to download. - El recurso ha fallado de descargar. - - - - Save &image... - - - - - Save s&ound... - - - - - WARNING: %1 - WILLAY: %1 - - - - Form - Forma - - - - about:blank - willay:chusaq - - - - x - x - - - - Find: - Mask'ay: - - - - - &Previous - &Ñawpa - - - - - &Next - &Qhipa - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &JATUNKUNA/juch'uykuna - - - - Highlight &all - - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - - - - - Belarusian transliteration from latin to cyrillic (school orthography) - - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Pakasqa simi: - - - - DictGroupWidget - - - Form - Forma - - - - Group icon: - Juñuqpa unanchan: - - - - Shortcut: - Tecla de acceso rápido: - - - - None - Ni ima - - - - From file... - Archiwumanta... - - - - Choose a file to use as group icon - Juñuqpa uñanchanwan archiwuta aqllay - - - - Images - Rikch'aykuna - - - - All files - Tukuy archiwukuna - - - - Error - Pantay - - - - Can't read the specified image file. - Mana rikch'aywan archiwuta kichayta atinchu - - - - DictGroupsWidget - - - - - - Dictionaries: - - - - - Confirmation - Confirmación - - - - Are you sure you want to generate a set of groups based on language pairs? - ¿Estás seguro que quiere generar un conjunto de grupos basado en pares de lengua? - - - - Unassigned - - - - - Combine groups by source language to "%1->" - - - - - Combine groups by target language to "->%1" - - - - - Make two-side translate group "%1-%2-%1" - - - - - - Combine groups with "%1" - - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - - - - - Export headwords... - - - - - Cancel - Chinkachiy - - - - DictInfo - - - Total articles: - Jayk'a articulokuna: - - - - Translates from: - Simimanta: - - - - Total words: - Jayk'a simikuna: - - - - Translates to: - Simiman: - - - - Open folder - - - - - Edit dictionary - - - - - Files comprising this dictionary: - Kay simi-pirwaqa chay archiwukunayoq: - - - - Description: - - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - - - - - DictListModel - - - %1 entries - %1 willaykuna - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Llank'achkanña - - - - Name - Suti - - - - Address - Maypi - - - - Databases - - - - - Strategies - - - - - Icon - - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Simi-pirwaqpa chumpin - - - - &Dictionary Bar - - - - - Extended menu with all dictionaries... - - - - - Edit this group - Kay juñuta allinchay - - - - Dictionary info - - - - - Dictionary headwords - - - - - Open dictionary folder - - - - - Edit dictionary - - - - - EditDictionaries - - - &Sources - &Pukyukuna - - - - - &Dictionaries - &Simi-pirwakuna - - - - - &Groups - &Juñukuna - - - - Sources changed - Fuentes modificados - - - - Some sources were changed. Would you like to accept the changes? - Algunos fuentes fueron cambiados. ¿Quieres aceptar los cambios? - - - - Accept - Chaskiy - - - - Cancel - Chinkachiy - - - - Dictionaries - Simi-pirwakuna - - - - ExternalViewer - - - the viewer program name is empty - - - - - FTS::FtsIndexing - - None - Ni ima - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Ni ima - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Ni ima - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XMLta ñawichaspa pantay: "%2,%3" nisqaman %1 - - - - Added %1 - %1 yapasqa - - - - by - por - - - - Male - Qhari - - - - Female - Warmi - - - - from - imamanta - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Vaya a Editar|Diccionarios|Fuentes|Forvo y solicitar su propia clave de API para hacer desaparecer este error. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Chinkachiy - - - - Help - - - - - GermanTranslit - - - German Transliteration - Aleman qillqapi churana - - - - GreekTranslit - - - Greek Transliteration - Griego qillqapi churana - - - - GroupComboBox - - - Choose a Group (Alt+G) - Juñuta aqllay (Alt+G) - - - - GroupSelectorWidget - - - Form - Forma - - - - Look in - Imata mask'an: - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - J&uñuta yapay - - - - Give a name for the new group: - Musuq juñuman churay kay sutita: - - - - Rename group - Waq sutita churay - - - - Give a new name for the group: - Churay musuq sutita kay juñuman: - - - - Remove group - Juñuta chinkachiy - - - - Are you sure you want to remove the group <b>%1</b>? - <b>%1</b> juñuta chinkachiyta munankichu? - - - - - Remove all groups - &Tukuy juñukunata chinkachiy - - - - Are you sure you want to remove all the groups? - Tukuy juñukunata chinkachiyta munankichu? - - - Groups - Groups - - - - Dictionaries available: - Jap'inapaq simi-pirwakuna: - - - - Add selected dictionaries to group (Ins) - (INS)wan juñuman aqllasqa simi-pirwakunata yapay - - - - > - > - - - - Ins - INS - - - - Remove selected dictionaries from group (Del) - (SUPR)wan juñumanta aqllasqa simi-pirwakunata chinkachiy - - - - < - < - - - - Del - DEL - - - - Groups: - Juñukuna: - - - - Tab 2 - Pestaña 2 - - - - Create new dictionary group - Simi-pirwakunaqpa musuq juñunkuta yurichiy - - - - &Add group - &Juñuta yapay - - - - Create language-based groups - Simimanta juñukunata yurichiy - - - - Auto groups - Mana aqllasqachu juñukuna - - - - Rename current dictionary group - Renombrar el grupo actual de diccionarios - - - - Re&name group - Juñuqpa &waq sutinta churay - - - - Remove current dictionary group - Simi-pirwakunawan kunan juñuta chinkachiy - - - - &Remove group - Juñuta &chinkachiy - - - - Remove all dictionary groups - Simi-pirwakunawan tukuy juñukunata chinkachiy - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Para añadir diccionarios a grupos, utilice el ratón para arrastre y suelte los diccionarios a los grupos utilizando el ratón. Además cambie el orden de los grupos arrastrándolos con el ratón. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Ñawpaq - - - - Forward - Qhipa - - - - Zoom In - Jatunyachiy - - - - Zoom Out - Juch'uyyachiy - - - - Normal Size - Mana aqllasqa chhikan - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - - - - - Copy Selected - - - - - History: - - - - - %1/%2 - - - - - History size: %1 entries out of maximum %2 - - - - - Hunspell - - - Spelling suggestions: - Qillqata allinchanapaq: - - - Afar - Afar - - - Abkhazian - Abkhazian - - - Avestan - Avestan - - - Afrikaans - Afrikaans - - - Akan - Akan - - - Amharic - Amharic - - - Aragonese - Aragonese - - - Arabic - Arabic - - - Assamese - Assamese - - - Avaric - Avaric - - - Aymara - Aymara - - - Azerbaijani - Azerbaijani - - - Bashkir - Bashkir - - - Belarusian - Belarusian - - - Bulgarian - Bulgarian - - - Bihari - Bihari - - - Bislama - Bislama - - - Bambara - Bambara - - - Bengali - Bengali - - - Tibetan - Tibetan - - - Breton - Breton - - - Bosnian - Bosnian - - - Catalan - Catalan - - - Chechen - Chechen - - - Chamorro - Chamorro - - - Corsican - Corsican - - - Cree - Cree - - - Czech - Czech - - - Church Slavic - Church Slavic - - - Chuvash - Chuvash - - - Welsh - Welsh - - - Danish - Danish - - - German - German - - - Divehi - Divehi - - - Dzongkha - Dzongkha - - - Ewe - Ewe - - - Greek - Greek - - - English - English - - - Esperanto - Esperanto - - - Spanish - Spanish - - - Estonian - Estonian - - - Basque - Basque - - - Persian - Persian - - - Fulah - Fulah - - - Finnish - Finnish - - - Fijian - Fijian - - - Faroese - Faroese - - - French - French - - - Western Frisian - Western Frisian - - - Irish - Irish - - - Scottish Gaelic - Scottish Gaelic - - - Galician - Galician - - - Guarani - Guarani - - - Gujarati - Gujarati - - - Manx - Manx - - - Hausa - Hausa - - - Hebrew - Hebrew - - - Hindi - Hindi - - - Hiri Motu - Hiri Motu - - - Croatian - Croatian - - - Haitian - Haitian - - - Hungarian - Hungarian - - - Armenian - Armenian - - - Herero - Herero - - - Interlingua - Interlingua - - - Indonesian - Indonesian - - - Interlingue - Interlingue - - - Igbo - Igbo - - - Sichuan Yi - Sichuan Yi - - - Inupiaq - Inupiaq - - - Ido - Ido - - - Icelandic - Icelandic - - - Italian - Italiano - - - Inuktitut - Inuktitut - - - Japanese - Japanese - - - Javanese - Javanese - - - Georgian - Georgian - - - Kongo - Kongo - - - Kikuyu - Kikuyu - - - Kwanyama - Kwanyama - - - Kazakh - Kazakh - - - Kalaallisut - Kalaallisut - - - Khmer - Khmer - - - Kannada - Kannada - - - Korean - Korean - - - Kanuri - Kanuri - - - Kashmiri - Kashmiri - - - Kurdish - Kurdish - - - Komi - Komi - - - Cornish - Cornish - - - Kirghiz - Kirghiz - - - Latin - Latin - - - Luxembourgish - Luxembourgish - - - Ganda - Ganda - - - Limburgish - Limburgish - - - Lingala - Lingala - - - Lao - Lao - - - Lithuanian - Lithuanian - - - Luba-Katanga - Luba-Katanga - - - Latvian - Latvian - - - Malagasy - Malagasy - - - Marshallese - Marshallese - - - Maori - Maori - - - Macedonian - Macedonian - - - Malayalam - Malayalam - - - Mongolian - Mongolian - - - Marathi - Marathi - - - Malay - Malay - - - Maltese - Maltese - - - Burmese - Burmese - - - Nauru - Nauru - - - Norwegian Bokmal - Norwegian Bokmal - - - North Ndebele - North Ndebele - - - Nepali - Nepali - - - Ndonga - Ndonga - - - Dutch - Dutch - - - Norwegian Nynorsk - Norwegian Nynorsk - - - Norwegian - Norwegian - - - South Ndebele - South Ndebele - - - Navajo - Navajo - - - Chichewa - Chichewa - - - Occitan - Occitan - - - Ojibwa - Ojibwa - - - Oromo - Oromo - - - Oriya - Oriya - - - Ossetian - Ossetian - - - Panjabi - Panjabi - - - Pali - Pali - - - Polish - Polish - - - Pashto - Pashto - - - Portuguese - Portuguese - - - Quechua - Quechua - - - Raeto-Romance - Raeto-Romance - - - Kirundi - Kirundi - - - Romanian - Romanian - - - Russian - Russian - - - Kinyarwanda - Kinyarwanda - - - Sanskrit - Sanskrit - - - Sardinian - Sardinian - - - Sindhi - Sindhi - - - Northern Sami - Northern Sami - - - Sango - Sango - - - Serbo-Croatian - Serbo-Croatian - - - Sinhala - Sinhala - - - Slovak - Slovak - - - Slovenian - Slovenian - - - Samoan - Samoan - - - Shona - Shona - - - Somali - Somali - - - Albanian - Albanian - - - Serbian - Serbian - - - Swati - Swati - - - Southern Sotho - Southern Sotho - - - Sundanese - Sundanese - - - Swedish - Swedish - - - Swahili - Swahili - - - Tamil - Tamil - - - Telugu - Telugu - - - Tajik - Tajik - - - Thai - Thai - - - Tigrinya - Tigrinya - - - Turkmen - Turkmen - - - Tagalog - Tagalog - - - Tswana - Tswana - - - Tonga - Tonga - - - Turkish - Turkish - - - Tsonga - Tsonga - - - Tatar - Tatar - - - Twi - Twi - - - Tahitian - Tahitian - - - Uighur - Uighur - - - Ukrainian - Ukrainian - - - Urdu - Urdu - - - Uzbek - Uzbek - - - Venda - Venda - - - Vietnamese - Vietnamese - - - Volapuk - Volapuk - - - Walloon - Walloon - - - Wolof - Wolof - - - Xhosa - Xhosa - - - Yiddish - Yiddish - - - Yoruba - Yoruba - - - Zhuang - Zhuang - - - Chinese - Chinese - - - Zulu - Zulu - - - - %1 Morphology - Morfología %1 - - - - HunspellDictsModel - - - Enabled - Llank'achkanña - - - - Name - Suti - - - - Initializing - - - Please wait... - Suyariy... - - - - - Please wait while indexing dictionary - Siqipi simi-pirwakunata ñiqichachkan. Suyariy. - - - - GoldenDict - Initializing - GoldenDict - qallarispa - - - - Dictionary Name - Simi-pirwaqpa sutin - - - - Language - - - Afar - Afar - - - - Abkhazian - Abjasio - - - - Avestan - Avéstico - - - - Afrikaans - Afrikáans - - - - Akan - Acano - - - - Amharic - Amárico - - - - Aragonese - Aragonés - - - - Arabic - Arabé - - - - Assamese - Asamés - - - - Avaric - Ávaro - - - - Aymara - Aymara - - - - Azerbaijani - Azerí - - - - Bashkir - Bashkir - - - - Belarusian - Bielorruso - - - - Bulgarian - Búlgaro - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengalí - - - - Tibetan - Tibetano - - - - Breton - Bretón - - - - Bosnian - Bosnio - - - - Catalan - Catalán - - - - Chechen - Chechén - - - - Chamorro - Chamorro - - - - Corsican - Corso - - - - Cree - Cree - - - - Czech - Checo - - - - Church Slavic - Eslavo eclesiástico - - - - Chuvash - Chuvasio - - - - Welsh - Galés - - - - Danish - Danés - - - - German - Alemán - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Griego - - - - English - Inglés - - - - Esperanto - Esperanto - - - - Spanish - Español - - - - Estonian - Estonio - - - - Basque - Vasco (Euskara) - - - - Persian - Farsì - - - - Fulah - Fula - - - - Finnish - Finlandés - - - - Fijian - Fiyiano - - - - Faroese - Feroés - - - - French - Francés - - - - Western Frisian - Frisón occidental - - - - Irish - Irlandés - - - - Scottish Gaelic - Gaélico escocés - - - - Galician - Gallego - - - - Guarani - Guaraní - - - - Gujarati - Guyaratí - - - - Manx - Manés - - - - Hausa - Hausa - - - - Hebrew - Hebreo - - - - Hindi - Hindi - - - - Hiri Motu - Hiri Motu - - - - Croatian - Croato - - - - Haitian - Criollo haitiano - - - - Hungarian - Húngaro - - - - Armenian - Armenio - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonés - - - - Interlingue - Interlingua - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Inupiaq - - - - Ido - Ido - - - - Icelandic - Islandés - - - - Italian - Italiano - - - - Inuktitut - Inuktitut - - - - Japanese - Japonés - - - - Javanese - Javanés - - - - Georgian - Georgiano - - - - Kongo - Kikongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kwanyama - - - - Kazakh - Cazaco - - - - Kalaallisut - Groenlandés - - - - Khmer - Camboyano - - - - Kannada - Kannada - - - - Korean - Coreano - - - - Kanuri - Kanuri - - - - Kashmiri - Cachemir - - - - Kurdish - Kurdo - - - - Komi - Komi - - - - Cornish - Córnico - - - - Kirghiz - Kirguís - - - - Latin - Latín - - - - Luxembourgish - Luxemburgués - - - - Ganda - Ganda - - - - Limburgish - Limburgés - - - - Lingala - Lingala - - - - Lao - Laosiano - - - - Lithuanian - Lituano - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Letón - - - - Malagasy - Malgache - - - - Marshallese - Marshalés - - - - Maori - Maori - - - - Macedonian - Macedonio - - - - Malayalam - Malayalam - - - - Mongolian - Mongol - - - - Marathi - Marathi - - - - Malay - Malayo - - - - Maltese - Maltés - - - - Burmese - Birmano - - - - Nauru - Nauruano - - - - Norwegian Bokmal - Noruego bokmål - - - - North Ndebele - Ndebele norteño - - - - Nepali - Nepalés - - - - Ndonga - Ndonga - - - - Dutch - Danés - - - - Norwegian Nynorsk - Noruego Nynorsk - - - - Norwegian - Noruego - - - - South Ndebele - Ndebele sureño - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitano - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Osseto - - - - Panjabi - Panjabi - - - - Pali - Pali - - - - Polish - Polaco - - - - Pashto - Pastún - - - - Portuguese - Portugués - - - - Quechua - Quechua (Runasimi) - - - - Raeto-Romance - Retorrománico - - - - Kirundi - Kirundi - - - - Romanian - Rumano - - - - Russian - Ruso - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sanscrito - - - - Sardinian - Sardo - - - - Sindhi - Sindhi - - - - Northern Sami - Sami norteño - - - - Sango - Sango - - - - Serbo-Croatian - Serbo-Croato - - - - Sinhala - Cingalés - - - - Slovak - Slovaco - - - - Slovenian - Sloveno - - - - Samoan - Samoano - - - - Shona - Shona - - - - Somali - Somalí - - - - Albanian - Albanés - - - - Serbian - Serbio - - - - Swati - Swati - - - - Southern Sotho - Sesotho - - - - Sundanese - Sudanés - - - - Swedish - Sueco - - - - Swahili - Suajili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tayiko - - - - Thai - Tailandés - - - - Tigrinya - Tigriña - - - - Turkmen - Turcomano - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Turco - - - - Tsonga - Tsonga - - - - Tatar - Tártaro - - - - Twi - Twi - - - - Tahitian - Tahitiano - - - - Uighur - Uigur - - - - Ukrainian - Ucranio - - - - Urdu - Urdu - - - - Uzbek - Uzbeco - - - - Venda - Venda - - - - Vietnamese - Vietnamita - - - - Volapuk - Volapuk - - - - Walloon - Valón - - - - Wolof - Wólof - - - - Xhosa - Xhosa - - - - Yiddish - Yidis - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Chino - - - - Zulu - Zulu - - - - Lojban - - - - - Traditional Chinese - - - - - Simplified Chinese - - - - - Other - - - - - Other Simplified Chinese dialects - - - - - Other Traditional Chinese dialects - - - - - Other Eastern-European languages - - - - - Other Western-European languages - - - - - Other Russian languages - - - - - Other Japanese languages - - - - - Other Baltic languages - - - - - Other Greek languages - - - - - Other Korean dialects - - - - - Other Turkish dialects - - - - - Other Thai dialects - - - - - Tamazight - - - - - LoadDictionaries - - - Error loading dictionaries - Simi-pirwakunata jap'ikuspa pantay - - - - Main - - - Error in configuration file. Continue with default settings? - - - - - MainWindow - - Navigation - Wamp'unapaq chumpi - - - - Back - Ñawpaq - - - - Forward - Qhipa - - - - Scan Popup - Juch'uy qhawanapi mask'ay - - - Pronounce word - Pronounce word - - - - Show &Main Window - Qhapaq qhawanata &rikhuchiy - - - - - &Quit - &Lluqsiy - - - - Loading... - Jap'ikuchkan... - - - - Skip This Release - Saltar esta versión - - - [Unknown] - [Sconosciuto] - - - - Page Setup - Raphita kamachina - - - - No printer is available. Please install one first. - Mana impresora nisqaqa kanchu. Por favor instale una impresora. - - - - Print Article - Raphipi articulota ñit'iy - - - - Save Article As - Jinata articulota jallch'ay - - - Html files (*.html *.htm) - Archiwukuna HTML (*.html *.htm) - - - - Error - Pantay - - - - Can't save article: %1 - "%1" articulota mana jallch'ayta atinchu - - - Error loading dictionaries - Error loading dictionaries - - - - %1 dictionaries, %2 articles, %3 words - %1 simi-pirwakuna, %2 articulokuna, %3 simikuna - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Fallo de inicializar monitoreo de teclas de acceso rápido.<br>Asegúrese que su XServer tiene activada la extensión RECORD. - - - - New Release Available - Una nueva versión está disponible - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Ahora versión <b>%1</b> de GoldenDict está disponible para descargar.<br>Haga clic en <b>Descargar</b> para ir a página de descargas. - - - - Download - Urayachiy - - - - - Look up in: - Mask'ay: - - - Show Names in Dictionary Bar - Simi-pirwaqpa chumpinpi sutikunata rikhurichiy - - - - &Menubar - - - - - Found in Dictionaries: - - - - - Pronounce Word (Alt+S) - Simita parlachiy (Alt+S) - - - - Show Names in Dictionary &Bar - - - - - Show Small Icons in &Toolbars - - - - - &Navigation - - - - - Zoom In - Jatunyachiy - - - - Zoom Out - Juch'uyyachiy - - - - Normal Size - Mana aqllasqa chhikan - - - - Words Zoom In - Simikunata jatunyachiy - - - - Words Zoom Out - Simikunata juch'uyyachiy - - - - Words Normal Size - Mana aqllasqa chhikanpa simikunan - - - - Close current tab - Kunan pestañata wisq'ay - - - - Close all tabs - Tukuy pestañakunata wisq'ay - - - - Close all tabs except current - Tukuy pestañakunata wisq'ay, mana kunan pestañachu - - - - Look up: - Mask'ay: - - - - All - Tukuy - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Article, Complete (*.html) - - - - - Article, HTML Only (*.html) - - - - - Saving article... - - - - - The main window is set to be always on top. - - - - - Import history from file - - - - - Import error: invalid data in file - - - - - History import complete - - - - - Import error: - - - - - Dictionary info - - - - - Dictionary headwords - - - - - Open dictionary folder - - - - - Edit dictionary - - - - - Opened tabs - Kichasqa Pestañas - - - - Open Tabs List - - - - - (untitled) - (Mana sutiyuq) - - - - %1 - %2 - - - - WARNING: %1 - WILLAY: %1 - - - - You have chosen to hide a menubar. Use %1 to show it back. - - - - - Ctrl+M - - - - - &Hide - - - - - Export history to file - - - - - - Text files (*.txt);;All files (*.*) - - - - - History export complete - - - - - Export error: - - - - GoldenDict - GoldenDict - - - Tab 1 - Tab 1 - - - Tab 2 - Tab 2 - - - - - Welcome! - ¡Bienvenido! - - - - &File - &Archiwu - - - - &Edit - &Allinchay - - - - &Help - &Yanapa - - - - &Preferences... - &Aqllanakuna... - - - &Sources... - &Sources... - - - - F2 - F2 - - - &Groups... - &Juñukuna... - - - - &View - &Qhaway - - - - &Zoom - &Jatunyachiy/Juch'uyachiy - - - - H&istory - &Yuyaynin - - - - &Dictionaries... - &Simi-pirwakuna... - - - - F3 - F3 - - - - &Search Pane - - - - - Search - - - - - &Results Navigation Pane - - - - - &History Pane - - - - - F4 - F4 - - - - &Homepage - &GoldenDictpa raphin - - - - &About - &GoldenDictmanta willaway - - - - About GoldenDict - GoldenDictmanta willaway - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Programa nisqamanta lluqsiy - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Foro (Rimanakusun) - - - - &Close To Tray - &Sistema nisqaqpa chumpinman wisq'ay - - - - Minimizes the window to tray - Sistema nisqaqpa chumpinman programata juch'uyyachin - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Articulo nisqata jallch'ay - - - - Save Article - Articulo nisqata jallch'ay - - - - &Print - &Raphipi ñit'iy - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Raphita kamachina - - - - Print Pre&view - - - - - &Rescan Files - - - - - &New Tab - - - - - &Always on Top - - - - - Always on Top - - - - - Ctrl+O - - - - - - - Menu Button - - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Raphipi ñit'inapaq qhawanaraq - - - Rescan Files - Hukmanta archiwukunata ñawichay - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Pichay - - - - New Tab - - - - - Ctrl+T - - - - - &Configuration Folder - - - - - - &Show - - - - - Ctrl+H - - - - - &Export - - - - - &Import - - - - Search Pane - Mask'anapaq kiti - - - Ctrl+F11 - Ctrl+F11 - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - - - - - Failed loading article from %1, reason: %2 - - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XMLta ñawichaspa pantay: %1 "%2,%3"pi - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XMLta ñawichaspa pantay: %1 "%2,%3"pi - - - - MediaWikisModel - - - Enabled - Llank'achkanña - - - - Name - Suti - - - - Address - Maypi - - - - Icon - - - - - OrderAndProps - - - Form - Forma - - - - Dictionary order: - Siqipi simi-pirwakunata ñiqichanapaq: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Mana jap'isqa simi-pirwakuna: - - - - Dictionary information - Simi-pirwamanta willay - - - - Name: - Suti: - - - - Total articles: - Jayk'a articulokuna: - - - - Total words: - Jayk'a simikuna: - - - - Translates from: - Simimanta: - - - - Translates to: - Simiman: - - - - Description: - - - - - Files comprising this dictionary: - Kay simi-pirwaqa chay archiwukunayoq: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Ajuste el orden, arrastrando y soltando los diccionarios con el ratón. Mueva diccionarios al grupo deshabilitado para desactivar su uso - - - - Sort by name - - - - - Sort by languages - - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Ñan - - - - Recursive - Recursivo - - - - Preferences - - - Preferences - Aqllanakuna - - - - &Interface - &Programaqpa uyan - - - - Tabbed browsing - Pestaña nisqawan wamp'una - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalmente, abriendo una pestaña nueva traslada allí -inmediatamente. Con esta opción pestañas nuevas serán -abiertas sin trasladar a ellas. - - - - Open new tabs in background - Musuq pestañata kichaqtin kunan pestañamanta ama ripuychu - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Por defecto, nuevas pestañas son agregadas al final -de la lista. Con está opción pestañas nuevas son -abiertas al lado de la pestaña actual. - - - - Open new tabs after the current one - Kunan pestañaqpa chirunman musuq pestañata kichay - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - - - - - Hide single tab - - - - - Ctrl-Tab navigates tabs in MRU order - - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Cuando activado un icono aparece en la bandeja del sistema que puede ser utilizado para abrir la ventana principal y realizar otras tareas. - - - - Enable system tray icon - Sistema nisqaqpa chumpinpi unanchata churay - - - - With this on, the application starts directly to system tray without showing -its main window. - Con esta opción, la aplicación inicia directamente en la bandeja del sistema sin mostrar su ventana principal. - - - - Start to system tray - Sistema nisqaqpa chumpinpi qalliriy - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Con esta opción un intento de cerrar la ventana principal la ocultaría sin -cerrar la aplicación. - - - - Close to system tray - Sistema nisqaqpa chimpunman wisq'ay - - - - Startup - Qallariynin - - - - Start with system - Sistema nisqaqa qallariqtin GoldenDict qallarintaq - - - - Interface language: - GoldenDictpa simin: - - - - Display style: - Imayna rikhurin: - - - - Double-click translates the word clicked - Simita mask'anapaq iskay klik ruway - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - - - - - ESC key hides main window - - - - - Turn this option on if you want to select words by single mouse click - - - - - Select word by single click - - - - - Add-on style: - - - - - Help language - - - - - Adjust this value to avoid huge context menus. - - - - - Context menu dictionaries limit: - - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Selecciona si el modo de escaneo está activado por defecto o no. Si está -marcado, el programa siempre iniciará con el modo de escaneo habilitado. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalmente, para activar la ventana emergente, tiene -que mantener las teclas escogidas oprimidas mientras -Ud. selecciona una palabra. Con esta opción habilitada, -las teclas escogidas puede ser oprimidas un poco -despues la seleccion esté hecha. - - - - Hotkeys - Teclakuna - - - - Use the following hotkey to show or hide the main window: - Usar la siguiente combinación de teclas para mostrar u ocultar la ventana principal: - - - - Use the following hotkey to translate a word from clipboard: - Usar la tecla siguiente para traducir una palabra en la porta-papeles: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Las teclas de acceso rápido están globales y funcionan desde cualquier programa o contexto mientras que GoldenDict estén ejecutando en el fondo. - - - - &Scan Popup - &Juch'uy qhawanapi mask'ay - - - - Automatically starts GoldenDict after operation system bootup. - Sistema nisqaqa qallariqtinkama, GoldenDictqa qallarinpis. - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Con esta opción habilitada, la ventana emergente aparecerá -cada vez que el ratón apunta a una palabra en la pantalla (Windows) o -una palabra está seleccionada con el ratón (Linux). Cuando habilitada, -se puede prenderla o apagarla desde la ventana principal o el icono -en la bandeja del sistema. - - - Scan popup functionality - Scan popup functionality - - - - Enable scan popup functionality - Juch'uy qhawanapi mask'ay - - - - Start with scan popup turned on - Programaqa qallariqtin juch'uy qhawanapi maskay - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Con esto habilitado, la ventana emergente sólo aparece si todas las teclas -seleccionadas estén oprimidas cuando la selección de la palabra cambie. - - - - Only show popup when all selected keys are kept pressed: - Tukuy kay teclakunata ñit'inaykikama, juch'uy qhawanata rikhurichinqa: - - - - Left Ctrl only - Sapalla lluq'i CTRL - - - - Left Ctrl - Lluq'i CTRL - - - - Right Shift only - Sapalla paña MAYÚSCULA - - - - Right Shift - Paña MAYÚSCULA - - - - Alt key - Tecla ALT - - - - Alt - ALT - - - - Ctrl key - Tecla CTRL - - - - Ctrl - CTRL - - - - Left Alt only - Sapalla lluq'i ALT - - - - Left Alt - Lluq'i ALT - - - - Shift key - Tecla MAYÚSCULA - - - - Shift - MAYÚSCULA - - - - Right Alt only - Sapalla paña ALT - - - - Right Alt - Paña ALT - - - - Right Ctrl only - Sapalla paña CTRL - - - - Right Ctrl - Paña CTRL - - - - Left Shift only - Sola MAYÚSCULA de izquierda - - - - Left Shift - Lluq'i MAYÚSCULA - - - - Windows key or Meta key - Tecla de WINDOWS o META - - - - Win/Meta - WINDOWSchu METAchu - - - - Keys may also be pressed afterwards, within - Teclasta ñit'iyta atinki - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Para evitar positivos falsos, las teclas sólo son monitoreadas después de la terminación de la selección adentro un tiempo limitado, que está especificado aquí. - - - - secs - qhipa segundokuna - - - - Send translated word to main window instead of to show it in popup window - - - - - Send translated word to main window - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Nota: Aparece que la extensión RECORD está rota en tu instalación de X.Org XServer. Las teclas de acceso rápido de GoldenDict probablemente no funcionan. Este problema puede ser arreglado en el servidor mismo. Por favor consulte al </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">reportaje de bug</span></a><span style=" color:#ff0000;"> y se puede entregar comentarios allí.</span></p></body></html> - - - - &Audio - &Chanra - - - - Pronunciation - Parlachina - - - - Auto-pronounce words in main window - Qhapaq qhawanapi kunanpacha simikunata parlachiy - - - - Auto-pronounce words in scan popup - Juch'uy qhawanapi kunanpacha simikunata parlachiy - - - - Playback - Takichina - - - - Play audio files via FFmpeg(libav) and libao - - - - - Use internal player - - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - - - - - Collapse articles more than - - - - - Articles longer than this size will be collapsed - - - - - symbols - - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Usar la API nativa de Windows para reproducir que está limitada -a archivos .wav, pero funciona muy bien. - - - Play via Windows native API - Windows API nisqawan takichiy - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Reproduce audio con Phonon. Puede ser un poco inestable, -pero debe soportar a mayoría de formatos de audio. - - - Play via Phonon - Phonon nisqawan takichiy - - - - Use any external program to play audio files - Usar cualquier programa para reproducir archivos de audio - - - - Use external program: - Takichiy jawa programawan: - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - - - - - Do not identify GoldenDict in HTTP headers - - - - - Ad&vanced - - - - - ScanPopup extra technologies - - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - - - - - Use &IAccessibleEx - - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - - Use &UIAutomation - - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - - Use &GoldenDict message - - - - - History - - - - - Turn this option on to store history of the translated words - - - - - Store &history - - - - - Specify the maximum number of entries to keep in history. - - - - - Maximum history size: - - - - - History saving interval. If set to 0 history will be saved only during exit. - - - - - Save every - - - - - minutes - - - - - Articles - - - - - Turn this option on to always expand optional parts of articles - - - - - Expand optional &parts - - - - Program to play audio files: - Program to play audio files: - - - - &Network - &Llika - - - - Enable if you wish to use a proxy server -for all program's network requests. - Habilite está opción si Ud. quiere utilizar un -servidor proxy por todas las solicitudes de red del programa. - - - - Use proxy server - Servidor proxy nisqawan t'inkichiy - - - - Type: - Tipo: - - - - Host: - Host: - - - - Port: - Punku: - - - - User: - jap'iq masi: - - - - Password: - Pakasqa simi: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Habilitando esta opción bloqueará la mayoría de propagando comercial, porque no permite contenido (imágenes y marcos) que no vienen directamente del sitio utilizado. Si causa problemas con algunos sitios, deshabilite esta opción. - - - - Disallow loading content from other sites (hides most advertisements) - No permite la carga de contenido de otros sitios (oculta la mayoría de propaganda) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - - - - - Enable web plugins - - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Cuando habilitado, el programa periódicamente -verifica si una versión nueva de GoldenDict está -disponible para descargarla. Si está disponible, -el programa le informa al usuario y le apunta a -la página web para descargarla. - - - - Check for new program releases periodically - Verificar periódicamente si haya una nueva versión del programa - - - - System default - Sistema nisqaqpa simin - - - English - English - - - Russian - Russian - - - - - Default - Mana aqllasqa - - - - Modern - - - - - Lingvo - Lingvo - - - - Babylon - - - - - Lingoes - - - - - Lingoes-Blue - - - - Play via DirectShow - DirectShow nisqawan takichiy - - - - Changing Language - Simita t'ikrachkan - - - - Restart the program to apply the language change. - Musuq simita jap'ikunanpaq hukmanta programata qallarichiy. - - - - ProgramTypeEditor - - - Audio - - - - - Plain Text - - - - - Html - - - - - Prefix Match - - - - - Unknown - - - - - Programs::RunInstance - - - No program name was given. - - - - - The program has crashed. - - - - - The program has returned exit code %1. - - - - - ProgramsModel - - - Enabled - Llank'achkanña - - - - Type - - - - - Name - Suti - - - - Command Line - - - - - Icon - - - - - QObject - - - - Article loading error - - - - - - Article decoding error - - - - - avformat_alloc_context() failed. - - - - - av_malloc() failed. - - - - - avio_alloc_context() failed. - - - - - avformat_open_input() failed: %1. - - - - - avformat_find_stream_info() failed: %1. - - - - - Could not find audio stream. - - - - - Codec [id: %1] not found. - - - - - avcodec_open2() failed: %1. - - - - - Cannot find usable audio output device. - - - - - Unsupported sample format. - - - - - ao_open_live() failed: - - - - - No driver. - - - - - This driver is not a live output device. - - - - - A valid option key has an invalid value. - - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - - - - - Unknown error. - - - - - avcodec_alloc_frame() failed. - - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - - - - - Quick Search - - - - - Clear Search - - - - - ResourceToSaveHandler - - - - ERROR: %1 - - - - - Resource saving error: - - - - - The referenced resource failed to download. - El recurso ha fallado de descargar. - - - - Romaji - - - Hepburn Romaji for Hiragana - Romanización hepburn de Hiragana - - - - Hepburn Romaji for Katakana - Romanización hepburn de Katakana - - - - RussianTranslit - - - Russian Transliteration - Ruso qillqapi churay - - - - ScanPopup - - %1 results differing in diacritic marks - %1 results differing in diacritic marks - - - %1 result(s) beginning with the search word - %1 result(s) beginning with the search word - - - - Dialog - Rimanakuy - - - word - simi - - - - Back - Ñawpaq - - - - Forward - Qhipa - - - List Matches (Alt+M) - Tarisqa simikuna (Alt+M) - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Simita parlachiy (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - - - - - Alt+W - - - - - Shows or hides the dictionary bar - Simi-pirwakunawan chumpita rikhurichin chaymanta pakachintaq - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Utilice esto para fijar la ventana en la pantalla, redimensionarla o gerenciarla en otra manera. - - - List matches - List matches - - - - - - - - ... - ... - - - Pronounce word - Pronounce word - - - GoldenDict - GoldenDict - - - - - %1 - %2 - - - - - SoundDirsModel - - - Path - Ñan - - - - Name - Suti - - - - Icon - - - - - Sources - - - Text to Speech - - - - - (not available in portable version) - (no disponible en versión portátil) - - - - - - Choose a directory - Directorio nisqata aqllay - - - - - - - - - Confirm removal - Chinkachiyta munankichu? - - - - - Remove directory <b>%1</b> from the list? - ¿<b>%1</b> directorio chinkachiyta munankichu? - - - - - - Remove site <b>%1</b> from the list? - ¿<b>%1</b> raphita chinkachiyta munankichu? - - - - Remove program <b>%1</b> from the list? - - - - Sources - Sources - - - - Files - Archiwukuna - - - - Paths to search for the dictionary files: - Simi-pirwakunaqpa archiwunkuta tarinapaq ñankuna: - - - - - - - - - &Add... - &Yapay... - - - - - - - - - &Remove - &Chinkachiy - - - - Re&scan now - Kunan &hukmanta ñawichay - - - - Sound Dirs - Chanrawan directoriokuna - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Crear diccionarios de grupos de archivos de audio, encontrados en rutas aquí: - - - - Morphology - Morfología - - - - Path to a directory with Hunspell/Myspell dictionaries: - Hunspell/Myspell simi-pirwakunawan directoriokunaman ñan: - - - - &Change... - &Allinchay... - - - - Available morphology dictionaries: - Jap'ikunapaq morfológicos simi-pirwakuna: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Cada diccionario morfológico aparece como -un diccionario auxiliar separado que -provee palabras raíces para búsquedas -y sugerencias ortográficas de palabras -mal escritas. Agregar diccionarios a los -fondos de grupos apropriados para utilizarlos. - - - - Websites - Web raphikuna - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Web raphikuna: (Mask'asqa simiwan "%GDWORD%"ta rantinqa) - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - ("CP1251"wan "%GD1251%"ta rantinqa. "ISO 8859-1"wan "%GDISO1%"ta rantinqa) - - - - Programs - - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Pronuncia directamente de <a href="http://www.forvo.com/">forvo.com</a>. Este sito permite que la gente grabe y comparta pronunciaciones de palabras que pueden ser escuchadas desde GoldenDict. - - - - Enable pronunciations from Forvo - Forvo nisqawan parlachiy - - - - API Key: - API nisqaqpa chimpun: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Actualmente el uso de Forvo requiere una clave de API. Deje este campo -en blanco para utilizar la clave por defecto, que tal vez no será -disponible en el futuro, o registre en el sitio para obtener tu -propia clave personalizada. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Obtenga tu propria clave <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">aquí</span></a>, o deje en blanco para utilizar la clave por defecto.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - - - - - Language codes (comma-separated): - Simikunaqpa chimpunku (coma nisqakunawan t'aqasqa): - - - - List of language codes you would like to have. Example: "en, ru". - Simi munaykinkiLista de códigos de lenguas que Ud. quiere utilizar. Por Ejemplo: "en, ru, es". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Una lista completa de los códigos de lenguas está disponible <a href="http://www.forvo.com/languages-codes/">aquí</a>. - - - - Transliteration - Waq qillqaman t'ikray - - - - Russian transliteration - Ruso qillqaman t'ikray - - - - Greek transliteration - Griego qillqaman t'ikray - - - - German transliteration - Aleman qillqaman t'ikray - - - - Belarusian transliteration - - - - - Enables to use the Latin alphabet to write the Japanese language - Habilita el alfabeto romano para escribir la lengua japonesa - - - - Japanese Romaji - Romano qillqapi japonés simita t'ikray - - - - Systems: - Sistemas: - - - - The most widely used method of transcription of Japanese, -based on English phonology - El sistema más utilizado para transcribir japonés, -basado en la fonología inglesa - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - El sistema más utilizado, con una relación uno-a-uno con sistemas de escritura kana. -Su estándar es ISO-3602. - -Todavia no implementado en GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Basado en el sistema Nihon-shiki, pero modificado para el japonés moderno estándar. -Estandarizado como ISO 3602 - -Todavía no implementado en GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Silabario: - - - - Hiragana Japanese syllabary - Silabario de Japonés Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Silabario de Japonés Katakana - - - - Katakana - Katakana - - - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - Each morphology dictionary appears as a separate auxiliary dictionary which provides stem words for searches and spelling suggestions for mistyped words. Add appropriate dictionaries to the bottoms of the appropriate groups to use them. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikipedia (MediaWiki) raphikuna: - - - - StylesComboBox - - - None - Ni ima - - - - TextToSpeechSource - - - Selected voice engines: - - - - - &Add - - - - - &Remove - &Chinkachiy - - - - Preferences - Aqllanakuna - - - - Volume: - - - - - Rate: - - - - - Preview - - - - - Available voice engines: - - - - - Text to be previewed: - - - - - Type text to be previewed here. - - - - - &Preview - - - - - No TTS voice available - - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - - - - - Confirm removal - Chinkachiyta munankichu? - - - - Remove voice engine <b>%1</b> from the list? - - - - - TranslateBox - - - Type a word or phrase to search dictionaries - - - - - Drop-down - - - - - VoiceEnginesModel - - - Enabled - Llank'achkanña - - - - Name - Suti - - - - Id - - - - - Icon - - - - - WebSitesModel - - - Enabled - Llank'achkanña - - - - Name - Suti - - - - Address - Maypi - - - - Icon - - - - - WordFinder - - - Failed to query some dictionaries. - Simi-pirwakunapi mask'aspa pantay - - - - WordList - - - WARNING: %1 - WILLAY: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ru_RU.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ru_RU.ts deleted file mode 100644 index 93aebd0356..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/ru_RU.ts +++ /dev/null @@ -1,4724 +0,0 @@ - - - - - About - - - About - О программе - - - - GoldenDict dictionary lookup program, version - Словарь GoldenDict, версия - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © Константин Исаков (ikm@goldendict.org), 2008-2013 - - - - Credits: - Список участников: - - - - Licensed under GNU GPLv3 or later - Лицензия: GNU GPLv3 или более поздняя версия - - - - [Unknown] - [Неизвестно] - - - - Based on Qt %1 (%2, %3 bit) - На базе Qt %1 (%2, %3 бит) - - - - ArticleMaker - - - Expand article - Развернуть статью - - - - Collapse article - Свернуть статью - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - В группе <b>%2</b> не найдено перевода для <b>%1</b>. - - - - No translation was found in group <b>%1</b>. - В группе <b>%1</b> перевод не найден. - - - - Welcome! - Добро пожаловать! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Добро пожаловать в <b>GoldenDict</b>!</h3><p>Если вы запустили программу в первый раз, укажите пути к словарям в <b>Правка|Словари</b>. Там же Вы можете указать различные сайты Википедии или другие источники данных, настроить порядок просмотра словарей или создать словарные группы.<p>После этого Вы можете приступать к поиску слов. Слова можно искать в левой области данного окна. При работе в других приложениях можно искать слова, используя <a href="Работа с всплывающим окном">всплывающее окно</a>. <p>В меню <b>Правка|Параметры</b> Вы можете настроить приложение по своему вкусу. Все параметры имеют подсказки, показываемые при наведении курсора на них. Обращайте, пожалуйста, на них внимание, когда у Вас возникают затруднения с настройкой.<p>Если Вам требуется дополнительная помощь, возникли какие-то вопросы, пожелания и т.п., обращайтесь на <a href="http://goldendict.org/forum/">форум программы</a>.<p>Обновления программы доступны на её <a href="http://goldendict.org/">вебсайте</a>.<p>© Константин Исаков (ikm@goldendict.org), 2008-2013. Лицензия: GNU GPLv3 или более поздняя версия. - - - - Working with popup - Работа с всплывающим окном - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Всплывающее окно</h3>Для поиска слов из других приложений, вам нужно включить <i>«Разрешить всплывающее окно»</i> в <b>Параметрах</b> и после этого включить всплывающее окно кнопкой «Сканировать» в основном окне или в контекстном меню значка в системном лотке. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Теперь подведите курсор мыши к какому-либо слову в приложении, и появится всплывающее окно с переводом или значением этого слова. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Теперь выделите какое-либо слово в приложении (двойным щелчком, или же проводя по ним курсором мыши при зажатой левой кнопке), и появится всплывающее окно с переводом или значением этого слова. - - - - (untitled) - (без имени) - - - - (picture) - (картинка) - - - - ArticleRequest - - - Expand article - Развернуть статью - - - - From - Из словаря - - - - Collapse article - Свернуть статью - - - - Query error: %1 - Ошибка поиска: %1 - - - - Close words: - Близкие слова: - - - - Compound expressions: - Составные выражения: - - - - Individual words: - Отдельные слова: - - - - ArticleView - - - Select Current Article - Выделить текущую статью - - - - Copy as text - Копировать как текст - - - - Inspect - Инспектор - - - - Resource - Ресурс - - - - Audio - Аудио - - - - TTS Voice - Синтезатор голоса - - - - Picture - Картинка - - - - Video - Видео - - - - Video: %1 - Видео: %1 - - - - Definition from dictionary "%1": %2 - Определение из словаря «%1»: %2 - - - - Definition: %1 - Определение: %1 - - - - - The referenced resource doesn't exist. - Запрошенный ресурс не найден. - - - - The referenced audio program doesn't exist. - Указанная аудио-программа не найдена. - - - - - ERROR: %1 - ОШИБКА: %1 - - - - Save sound - Сохранить звук - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Звуковые файлы (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Все файлы (*.*) - - - - Save image - Сохранить изображение - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Файлы изображений (*.bmp *.jpg *.png *.tif);;Все файлы (*.*) - - - - &Open Link - &Открыть ссылку - - - - Open Link in New &Tab - Открыть ссылку в новой &вкладке - - - - Open Link in &External Browser - Открыть ссылку во внешнем &браузере - - - - &Look up "%1" - &Поиск «%1» - - - - Look up "%1" in &New Tab - Поиск «%1» в &новой вкладке - - - - Send "%1" to input line - Поместить «%1» в строку ввода - - - - - &Add "%1" to history - Добавить «%1» в журнал - - - - Look up "%1" in %2 - Поиск «%1» в %2 - - - - Look up "%1" in %2 in &New Tab - Поиск «%1» в %2 в &новой вкладке - - - - WARNING: FFmpeg Audio Player: %1 - ПРЕДУПРЕЖДЕНИЕ: Плейер FFMpeg: %1 - - - - Failed to run a player to play sound file: %1 - Невозможно запустить проигрыватель звукового файла: %1 - - - - Failed to create temporary file. - Ошибка создания временного файла. - - - - Failed to auto-open resource file, try opening manually: %1. - Ошибка открытия файла ресурса, попробуйте открыть вручную: %1. - - - - The referenced resource failed to download. - Невозможно загрузить указанный ресурс. - - - - Save &image... - Сохранить &изображение... - - - - Save s&ound... - Сохранить &звук... - - - - WARNING: %1 - ВНИМАНИЕ: %1 - - - - Form - Form - - - - about:blank - about:blank - - - - x - x - - - - Find: - Искать: - - - - - &Previous - &Предыдущее - - - - - &Next - &Следующее - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - Учитывать &регистр - - - - Highlight &all - Пометить &все - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Белорусская транслитерация (классическая орфография) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Белорусская транслитерация (школьная орфография) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Белорусская транслитерация (сглаживание разницы -между классической и школьной орфографией) - - - - ChineseConversion - - - GroupBox - GroupBox - - - - Enable conversion between simplified and traditional Chinese characters - Преобразования между упрощёнными и классическими китайскими иероглифами - - - - Chinese Con&version - Преобразования китайских иероглифов - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - Преобразование упрощённых иероглифов в класические (Тайваньский вариант) - - - - SC to TC (Taiwan variant) - Упрощённые в класические (Тайваньский вариант) - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - Преобразование упрощённых иероглифов в класические (Гонконгский вариант) - - - - SC to TC (Hong Kong variant) - Упрощённые в класические (Гонконгский вариант) - - - - Enable conversion from traditional characters to simplified characters - Преобразование классических иероглифов в упрощённые - - - - TC to SC - Классические в упрощённые - - - - Simplified to traditional Chinese (Taiwan variant) conversion - Преобразование упрощённых иероглифов в класические (Тайваньский вариант) - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - Преобразование упрощённых иероглифов в класические (Гонконгский вариант) - - - - Traditional to simplified Chinese conversion - Преобразование классических иероглифов в упрощённые - - - - Dialog - - - Proxy authentication required - Прокси-сервер требует авторизацию - - - - You need to supply a Username and a Password to access via proxy - Для доступа к прокси-серверу необходимо ввести имя и пароль - - - - Username: - Имя: - - - - Password: - Пароль: - - - - DictGroupWidget - - - Form - Form - - - - Group icon: - Значок группы: - - - - Shortcut: - Горячая клавиша: - - - - None - Нет - - - - From file... - Из файла... - - - - Choose a file to use as group icon - Выберите файл для использования в качестве значка группы - - - - Images - Изображения - - - - All files - Все файлы - - - - Error - Ошибка - - - - Can't read the specified image file. - Невозможно прочитать выбранный файл изображения. - - - - DictGroupsWidget - - - - - - Dictionaries: - Словарей: - - - - Confirmation - Подтверждение - - - - Are you sure you want to generate a set of groups based on language pairs? - Вы уверены, что хотите создать набор групп на основе языковых пар? - - - - Unassigned - Прочие - - - - Combine groups by source language to "%1->" - Собрать группу "%1->" по исходному языку - - - - Combine groups by target language to "->%1" - Собрать группу "->%1" по целевому языку - - - - Make two-side translate group "%1-%2-%1" - Собрать группу двустороннего перевода "%1-%2-%1" - - - - - Combine groups with "%1" - Собрать группу "%1" - - - - DictHeadwords - - - Search mode - Режим поиска - - - - This element determines how filter string will be interpreted - Этот элемент определяет, как будет интерпретироваться строка фильтра - - - - If checked on the symbols case will be take in account when filtering - Если этот флажок установлен, фильтрация будет -осуществляться с учётом регистра символов - - - - Match case - Учитывать регистр - - - - Exports headwords to file - Экспортировать заголовки в файл - - - - Export - Экспорт - - - - Help - Справка - - - - OK - OK - - - - Press this button to apply filter to headwords list - Нажмите эту кнопку чтобы применить фильтр к списку заголовков - - - - Apply - Применить - - - - If checked any filter changes will we immediately applied to headwords list - Если этот флажок установлен, любые изменения фильтра -будут применяться к списку заголовков немедленно - - - - Auto apply - Автоприменение - - - - Filter: - Фильтр: - - - - Filter string (fixed string, wildcards or regular expression) - Строка фильтра (простой текст, шаблон или регулярное выражение) - - - - Text - Текст - - - - Wildcards - Шаблон - - - - RegExp - Рег. выражение - - - - Unique headwords total: %1, filtered: %2 - Неповторяющихся заголовков всего: %1, отфильтрованых: %2 - - - - Save headwords to file - Сохранить заголовки в файл - - - - Text files (*.txt);;All files (*.*) - Текстовые файлы (*.txt);;Все файлы (*.*) - - - - Export headwords... - Экспортируются заголовки... - - - - Cancel - Отмена - - - - DictInfo - - - Total articles: - Количество статей: - - - - Translates from: - Исходный язык: - - - - Total words: - Количество слов: - - - - Translates to: - Целевой язык: - - - - Open folder - Открыть папку - - - - Edit dictionary - Редактировать словарь - - - - Files comprising this dictionary: - Файлы, из которых состоит словарь: - - - - Description: - Описание: - - - - Show all unique dictionary headwords - Показать все неповторяющиеся заголовки словаря - - - - Headwords - Заголовки - - - - Edit the dictionary via command: -%1 - Редактировать словарь, команда: %1 - - - - DictListModel - - - %1 entries - %1 статей - - - - DictServer - - - Url: - Адрес: - - - - Databases: - Базы данных: - - - - Search strategies: - Стратегии поиска: - - - - Server databases - Базы данных сервера - - - - DictServersModel - - - Enabled - Включено - - - - Name - Название - - - - Address - Адрес - - - - Databases - Базы - - - - Strategies - Стратегии - - - - Icon - Значок - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - Список баз, разделённый запятыми -(пустая строка или "*" соответствует всем базам сервера) - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - Список стратегий поиска, разделённый запятыми -(пустая строка означает стратегию "prefix") - - - - DictionaryBar - - - &Dictionary Bar - &Панель словарей - - - - Extended menu with all dictionaries... - Расширенное меню со всеми словарями... - - - - Edit this group - Изменить эту группу - - - - Dictionary info - Информация о словаре - - - - Dictionary headwords - Заголовки словаря - - - - Open dictionary folder - Открыть папку словаря - - - - Edit dictionary - Редактировать словарь - - - - EditDictionaries - - - &Sources - &Источники - - - - - &Dictionaries - &Словари - - - - - &Groups - &Группы - - - - Sources changed - Источники изменены - - - - Some sources were changed. Would you like to accept the changes? - Источники были изменены. Принять внесенные изменения? - - - - Accept - Принять - - - - Cancel - Отмена - - - - Dictionaries - Словари - - - - ExternalViewer - - - the viewer program name is empty - Внешний просмотрщик не указан - - - - FTS::FullTextSearchDialog - - - Full-text search - Полнотекстовый поиск - - - - Whole words - Слова точно - - - - Plain text - Простой текст - - - - Wildcards - Шаблоны - - - - RegExp - Рег. выр. - - - - Max distance between words (%1-%2): - Промежуточных слов, не более (%1-%2): - - - - Max articles per dictionary (%1-%2): - Статей на словарь, не более (%1-%2): - - - - - - Articles found: - Статей найдено: - - - - Now indexing: - Индексируется: - - - - None - Нет - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - Символы CJK в строке поиска несовместимы с режимами поиска "Слова точно" и "Простой текст" - - - - The search line must contains at least one word containing - Строка поиска должна включать как минимум одно слово из - - - - or more symbols - или более символов - - - - No dictionaries for full-text search - Нет словарей для полнотекстового поиска - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Ошибка разбора XML: %1 на строке %2, столбце %3 - - - - Added %1 - Добавлено %1 - - - - by - от - - - - Male - Мужчина - - - - Female - Женщина - - - - from - из - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Перейдите в Правка|Словари|Источники|Forvo и подайте заявку на свой собственный ключ API, чтобы устранить данную проблему. - - - - FullTextSearchDialog - - - - Search - Искать - - - - Match case - Учитывать регистр - - - - Mode: - Режим: - - - - Articles found: - Статей найдено: - - - - Available dictionaries in group: - Доступных словарей в группе: - - - - Wait for indexing: - Ожидают индексации: - - - - Total: - Всего: - - - - Indexed: - Проиндексированных: - - - - Now indexing: None - Индексируется: Нет - - - - Cancel - Отмена - - - - Help - Справка - - - - GermanTranslit - - - German Transliteration - Транслитерация (Немецкий) - - - - GreekTranslit - - - Greek Transliteration - Транслитерация (Греческий) - - - - GroupComboBox - - - Choose a Group (Alt+G) - Выбор группы (Alt+G) - - - - GroupSelectorWidget - - - Form - Form - - - - Look in - Поиск в - - - - Groups - - - Group tabs - Группы - - - - Open groups list - Открыть список групп - - - - Add group - Добавить группу - - - - Give a name for the new group: - Введите название новой группы: - - - - Rename group - Переименовать группу - - - - Give a new name for the group: - Введите новое название группы: - - - - Remove group - Удалить группу - - - - Are you sure you want to remove the group <b>%1</b>? - Удалить группу <b>%1</b>? - - - - - Remove all groups - Удалить все - - - - Are you sure you want to remove all the groups? - Удалить все группы? - - - - Dictionaries available: - Доступные словари: - - - - Add selected dictionaries to group (Ins) - Добавить выбранные словари в группу (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Удалить выбранные словари из группы (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Группы: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Создать новую группу - - - - &Add group - &Добавить - - - - Create language-based groups - Создать группы, базирующиеся на языковых парах - - - - Auto groups - Авто группы - - - - Rename current dictionary group - Переименовать редактируемую группу - - - - Re&name group - &Переименовать - - - - Remove current dictionary group - Удалить редактируемую группу - - - - &Remove group - &Удалить - - - - Remove all dictionary groups - Удалить все существующие группы - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Перетаскивайте словари в группы из списка доступных словарей, изменяйте порядок групп, используя мышь. - - - - Help::HelpWindow - - - GoldenDict help - Справка GoldenDict - - - - Home - Домой - - - - Back - Назад - - - - Forward - Вперёд - - - - Zoom In - Увеличить - - - - Zoom Out - Уменьшить - - - - Normal Size - Обычный размер - - - - Content - Содержание - - - - Index - Индекс - - - - HistoryPaneWidget - - - &Delete Selected - Удалить выбранные - - - - Copy Selected - Копировать выбранные - - - - History: - Журнал: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Размер журнала: %1 записей из %2 максимально допустимых - - - - Hunspell - - - Spelling suggestions: - Варианты написания: - - - - %1 Morphology - %1 (морфология) - - - - HunspellDictsModel - - - Enabled - Включено - - - - Name - Название - - - - Initializing - - - Please wait... - Подождите... - - - - - Please wait while indexing dictionary - Создаются индексы словарей - - - - GoldenDict - Initializing - Запуск GoldenDict - - - - Dictionary Name - Название словаря - - - - Language - - - Afar - Афарский - - - - Abkhazian - Абхазский - - - - Avestan - Авестийский - - - - Afrikaans - Африкаанс - - - - Akan - Аканский - - - - Amharic - Амхарский - - - - Aragonese - Арагонский - - - - Arabic - Арабский - - - - Assamese - Ассамский - - - - Avaric - Аварский - - - - Aymara - Аймарский - - - - Azerbaijani - Азербайджанский - - - - Bashkir - Башкирский - - - - Belarusian - Белорусский - - - - Bulgarian - Болгарский - - - - Bihari - Бихарский - - - - Bislama - Бислама - - - - Bambara - Бамана - - - - Bengali - Бенгали - - - - Tibetan - Тибетский - - - - Breton - Бретонский - - - - Bosnian - Боснийский - - - - Catalan - Каталонский - - - - Chechen - Чеченский - - - - Chamorro - Чаморро - - - - Corsican - Корсиканский - - - - Cree - Кри - - - - Czech - Чешский - - - - Church Slavic - Церковно-славянский - - - - Chuvash - Чувашский - - - - Welsh - Уэльский - - - - Danish - Датский - - - - German - Немецкий - - - - Divehi - Мальдивский - - - - Dzongkha - Дзонгка (Бутан) - - - - Ewe - Эве - - - - Greek - Греческий - - - - English - Английский - - - - Esperanto - Эсперанто - - - - Spanish - Испанский - - - - Estonian - Эстонский - - - - Basque - Баскский - - - - Persian - Персидский - - - - Fulah - Фула - - - - Finnish - Финский - - - - Fijian - Фиджи - - - - Faroese - Фарерский - - - - French - Французский - - - - Western Frisian - Фризийский - - - - Irish - Галльский (Ирландия) - - - - Scottish Gaelic - Галльский (Шотландия) - - - - Galician - Галицийский - - - - Guarani - Гуарани - - - - Gujarati - Гуджарати - - - - Manx - Манкс - - - - Hausa - Хауса - - - - Hebrew - Иврит - - - - Hindi - Хинди - - - - Hiri Motu - Хири-моту - - - - Croatian - Хорватский - - - - Haitian - Гаитянский - - - - Hungarian - Венгерский - - - - Armenian - Армянский - - - - Herero - Эреро - - - - Interlingua - Интерлингва - - - - Indonesian - Индонезийский - - - - Interlingue - Окциденталь - - - - Igbo - Ибо - - - - Sichuan Yi - Сычуаньский И - - - - Inupiaq - Инупиак - - - - Ido - Идо - - - - Icelandic - Исландский - - - - Italian - Итальянский - - - - Inuktitut - Инуктитут - - - - Japanese - Японский - - - - Javanese - Яванский - - - - Georgian - Грузинский - - - - Kongo - Конго - - - - Kikuyu - Кикую - - - - Kwanyama - Кваньяма - - - - Kazakh - Казахский - - - - Kalaallisut - Калаалисут - - - - Khmer - Кхмерский - - - - Kannada - Каннада - - - - Korean - Корейский - - - - Kanuri - Канури - - - - Kashmiri - Кашмирский - - - - Kurdish - Курдский - - - - Komi - Коми - - - - Cornish - Корнуольский - - - - Kirghiz - Киргизский - - - - Latin - Латинский - - - - Luxembourgish - Люксембургский - - - - Ganda - Ганда - - - - Limburgish - Лимбуржский - - - - Lingala - Лингала - - - - Lao - Лао - - - - Lithuanian - Литовский - - - - Luba-Katanga - Луба-Катанга - - - - Latvian - Латышский - - - - Malagasy - Мальгашский - - - - Marshallese - Маршалльский - - - - Maori - Маори - - - - Macedonian - Македонский - - - - Malayalam - Малайялам - - - - Mongolian - Монгольский - - - - Marathi - Марати - - - - Malay - Малайский - - - - Maltese - Мальтийский - - - - Burmese - Бирманский - - - - Nauru - Науру - - - - Norwegian Bokmal - Норвежский букмол - - - - North Ndebele - Сев. Ндебеле - - - - Nepali - Непальский - - - - Ndonga - Ндонга - - - - Dutch - Голландский - - - - Norwegian Nynorsk - Новонорвежский (нюнорск) - - - - Norwegian - Норвежский - - - - South Ndebele - Юж. Ндебеле - - - - Navajo - Навахо - - - - Chichewa - Чичева - - - - Occitan - Французский (диалект Occitan) - - - - Ojibwa - Оджибва - - - - Oromo - Оромо - - - - Oriya - Ория - - - - Ossetian - Осетинский - - - - Panjabi - Панджаби - - - - Pali - Пали - - - - Polish - Польский - - - - Pashto - Пуштунский - - - - Portuguese - Португальский - - - - Quechua - Кечуа - - - - Raeto-Romance - Романшский - - - - Kirundi - Рунди - - - - Romanian - Румынский - - - - Russian - Русский - - - - Kinyarwanda - Киньяруанда - - - - Sanskrit - Санскрит - - - - Sardinian - Сардинийский - - - - Sindhi - Синдхи - - - - Northern Sami - Северное Саами - - - - Sango - Санго - - - - Serbo-Croatian - Сербо-хорватский - - - - Sinhala - Сингальский - - - - Slovak - Словацкий - - - - Slovenian - Словенский - - - - Samoan - Самоа - - - - Shona - Схона - - - - Somali - Сомалийский - - - - Albanian - Албанский - - - - Serbian - Сербский - - - - Swati - Свати - - - - Southern Sotho - Юж. Сото - - - - Sundanese - Сунданский - - - - Swedish - Шведский - - - - Swahili - Суахили - - - - Tamil - Тамильский - - - - Telugu - Телугу - - - - Tajik - Таджикский - - - - Thai - Тайский - - - - Tigrinya - Тигринья - - - - Turkmen - Туркменский - - - - Tagalog - Тагалог - - - - Tswana - Тсвана - - - - Tonga - Тонга - - - - Turkish - Турецкий - - - - Tsonga - Тсонга - - - - Tatar - Татарский - - - - Twi - Тви - - - - Tahitian - Таитянский - - - - Uighur - Уйгурский - - - - Ukrainian - Украинский - - - - Urdu - Урду - - - - Uzbek - Узбекский - - - - Venda - Венда - - - - Vietnamese - Вьетнамский - - - - Volapuk - Волапюк - - - - Walloon - Валлонский - - - - Wolof - Уолоф - - - - Xhosa - Кшоса - - - - Yiddish - Идиш - - - - Yoruba - Йоруба - - - - Zhuang - Чжуанг - - - - Chinese - Китайский - - - - Zulu - Зулусский - - - - Lojban - Ложбан - - - - Traditional Chinese - Китайский - - - - Simplified Chinese - Упрощённый китайский - - - - Other - Другой - - - - Other Simplified Chinese dialects - Диалекты упрощённого китайского - - - - Other Traditional Chinese dialects - Диалекты китайского - - - - Other Eastern-European languages - Другие восточноевропейские языки - - - - Other Western-European languages - Другие западноевропейские языки - - - - Other Russian languages - Диалекты русского - - - - Other Japanese languages - Диалекты японского - - - - Other Baltic languages - Другие прибалтийские языки - - - - Other Greek languages - Диалекты греческого - - - - Other Korean dialects - Диалекты корейского - - - - Other Turkish dialects - Диалекты турецкого - - - - Other Thai dialects - Диалекты тайского - - - - Tamazight - Берберские языки - - - - LoadDictionaries - - - Error loading dictionaries - Ошибка при загрузке словарей - - - - Main - - - Error in configuration file. Continue with default settings? - Ошибка в файле конфигурации. Продолжить с настройками по умолчанию? - - - - MainWindow - - - Back - Назад - - - - Forward - Вперёд - - - - Scan Popup - Сканировать - - - - Show &Main Window - Показать &основное окно - - - - - &Quit - В&ыход - - - - Loading... - Загрузка... - - - - Skip This Release - Пропустить данную версию - - - - You have chosen to hide a menubar. Use %1 to show it back. - Вы скрыли главное меню. Чтобы вернуть его, используйте %1. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Параметры страницы - - - - No printer is available. Please install one first. - В системе не установлено ни одного принтера. - - - - Print Article - Печать статьи - - - - Save Article As - Сохранить статью как - - - - Error - Ошибка - - - - Can't save article: %1 - Невозможно сохранить статью: %1 - - - - %1 dictionaries, %2 articles, %3 words - Словарей: %1, статей: %2, слов: %3 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Ошибка инициализации механизма отслеживания горячих клавиш.<br>Убедитесь, что ваш XServer поддерживает расширение RECORD. - - - - New Release Available - Доступна новая версия - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Версия <b>%1</b> программы GoldenDict доступа для загрузки.<br> -Нажмите <b>Загрузить</b>, чтобы перейти на страницу загрузки. - - - - Download - Загрузить - - - - - Look up in: - Поиск в: - - - - &Menubar - &Главное меню - - - - Found in Dictionaries: - Найдено в словарях: - - - - Pronounce Word (Alt+S) - Произнести слово (Alt+S) - - - - Show Names in Dictionary &Bar - По&казывать названия в панели словарей - - - - Show Small Icons in &Toolbars - &Маленькие значки в панели инструментов - - - - &Navigation - &Навигация - - - - Zoom In - Увеличить - - - - Zoom Out - Уменьшить - - - - Normal Size - Обычный размер - - - - Words Zoom In - Увеличить список слов - - - - Words Zoom Out - Уменьшить список слов - - - - Words Normal Size - Обычный размер для списка слов - - - - Close current tab - Закрыть текущую вкладку - - - - Close all tabs - Закрыть все вкладки - - - - Close all tabs except current - Закрыть все вкладки, кроме текущей - - - - Look up: - Искать: - - - - All - Все - - - - Now indexing for full-text search: - Индексируется для полнотекстового поиска: - - - - - Accessibility API is not enabled - Интерфейс Accessibility не включён - - - - The main window is set to be always on top. - Главное окно всегда поверх других окон. - - - - Import history from file - Импорт журнала из файла - - - - Import error: invalid data in file - Ошибка импорта: некорректные данные в файле - - - - History import complete - Импорт журнала завершён - - - - Import error: - Ошибка импорта: - - - - Dictionary info - Информация о словаре - - - - Dictionary headwords - Заголовки словаря - - - - Open dictionary folder - Открыть папку словаря - - - - Edit dictionary - Редактировать словарь - - - - Opened tabs - Открытые вкладки - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - Строка для поиска в словарях. Можно использовать шаблоны '*', '?' и диапазоны символов '[...]'. -Чтобы найти сами символы '*', '?', '[', ']', используйте '\*', '\?', '\[', '\]' соответственно. - - - - Open Tabs List - Открыть список вкладок - - - - (untitled) - (без имени) - - - - %1 - %2 - %1 - %2 - - - - Article, Complete (*.html) - Статья полностью (*.html) - - - - Article, HTML Only (*.html) - Статья, только HTML (*.html) - - - - Saving article... - Сохранение статьи... - - - - &Hide - &Спрятать - - - - Export history to file - Экспорт журнала в файл - - - - - Text files (*.txt);;All files (*.*) - Текстовые файлы (*.txt);;Все файлы (*.*) - - - - History export complete - Экспорт журнала завершён - - - - Export error: - Ошибка при экспорте: - - - - - Welcome! - Добро пожаловать! - - - - &File - &Файл - - - - &Edit - &Правка - - - - &Help - &Справка - - - - &Search Pane - Панель по&иска - - - - &Results Navigation Pane - Панель на&вигации по переводу - - - - &Preferences... - &Параметры... - - - - F2 - F2 - - - - &View - &Вид - - - - &Zoom - &Масштаб - - - - H&istory - &Журнал - - - - Search - Поиск - - - - &History Pane - Панель журнала - - - - &Dictionaries... - &Словари... - - - - F3 - F3 - - - - F4 - F4 - - - - &Homepage - &Веб-сайт - - - - &About - &О программе - - - - About GoldenDict - О программе GoldenDict - - - - GoldenDict reference - Справка GoldenDict - - - - F1 - F1 - - - - Quit from application - Выйти из приложения - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Форум - - - - &Close To Tray - &Свернуть в лоток - - - - Minimizes the window to tray - Свёртывает окно в лоток - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Сохранить статью - - - - Save Article - Сохранить статью - - - - &Print - &Печатать - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - П&араметры страницы - - - - Print Pre&view - Пр&едварительный просмотр - - - - &Rescan Files - Пе&ресканировать файлы - - - - &New Tab - &Новая вкладка - - - - &Always on Top - П&оверх других окон - - - - Always on Top - Поверх других окон - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Кнопка меню - - - - Search in page - Поиск на странице - - - - Ctrl+F - Ctrl+F - - - - Full-text search - Полнотекстовый поиск - - - - Ctrl+Shift+F - Ctrl+Shift+F - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - О&чистить - - - - New Tab - Новая вкладка - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Папка конфигурации - - - - - &Show - &Показать - - - - Ctrl+H - Ctrl+H - - - - &Export - &Экспортировать - - - - &Import - &Импортировать - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Файл словаря искажён или повреждён - - - - Failed loading article from %1, reason: %2 - Ошибка загрузки статьи из %1, причина: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Ошибка разбора XML: %1 на строке %2, столбце %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Ошибка разбора XML: %1 на строке %2, столбце %3 - - - - MediaWikisModel - - - Enabled - Включено - - - - Name - Название - - - - Address - Адрес - - - - Icon - Значок - - - - OrderAndProps - - - Form - Form - - - - Dictionary order: - Порядок словарей: - - - - Inactive (disabled) dictionaries: - Неактивные (отключенные) словари: - - - - Dictionary information - Информация о словаре - - - - Name: - Название: - - - - Total articles: - Количество статей: - - - - Total words: - Количество слов: - - - - Translates from: - Исходный язык: - - - - Translates to: - Целевой язык: - - - - Description: - Описание: - - - - Files comprising this dictionary: - Файлы, из которых состоит словарь: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Изменяйте порядок словарей, перетаскивая словари мышкой. Для отключения словаря перетащите его в неактивную группу снизу. - - - - Sort by name - Сортировать по имени - - - - Sort by languages - Сортировать по языкам - - - - Dictionary headwords - Заголовки словаря - - - - Dictionaries active: %1, inactive: %2 - Словарей активных: %1, неактивных: %2 - - - - PathsModel - - - Path - Путь - - - - Recursive - Рекурсивно - - - - Preferences - - - Preferences - Параметры - - - - &Interface - &Интерфейс - - - - Tabbed browsing - Работа со вкладками - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Обычно при открытии новой вкладки переключение на неё происходит -сразу же. Однако при включенной данной опции новые вкладки будут -открываться в фоне, без переключения на них. - - - - Open new tabs in background - Открывать новые вкладки в фоне - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Если данная опция включена, новые вкладки будут -открываться сразу за текущей, вместо того чтобы -добавляться в конец.. - - - - Open new tabs after the current one - Открывать новые вкладки за текущей - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - При включении этого параметра в системном лотке появится значок, -который можно использовать для вызова основного окна и других -действий. - - - - Enable system tray icon - Показывать значок в системном лотке - - - - With this on, the application starts directly to system tray without showing -its main window. - При включении этого параметра приложение будет запущено в системном лотке -без показа основного окна. - - - - Start to system tray - Запустить в системном лотке - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - При включении этого параметра закрытие основного окна свернёт его в -системный лоток. - - - - Close to system tray - Сворачивать в системный лоток - - - - Startup - Запуск - - - - Start with system - Автозапуск программы - - - - Interface language: - Язык программы: - - - - Display style: - Стиль интерфейса: - - - - Double-click translates the word clicked - Переводить выбранное слово по двойному щелчку - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Включать или нет режим всплывающего окна при запуске программы. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Может быть, лучше так: -Обычно, всплывающее окно активируется, только если выбранные -клавиши были зажаты в процессе выделения. Если включён данный режим, -выбранные клавиши можно нажать после того, как текст выделен. - В обычном состоянии, чтобы активизировать всплывающее -окно, необходимо удерживать выбранные клавиши в процессе -выделения слова. Однако, если включить данный режим, клавиши -могут быть нажаты также и в течение некоторого времени после -того, как слово было выделено. - - - - Hotkeys - Горячие клавиши - - - - Use the following hotkey to show or hide the main window: - Использовать следующую комбинацию для показа/скрытия основного окна: - - - - Use the following hotkey to translate a word from clipboard: - Использовать следующую комбинацию для перевода слова из буфера обмена: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Горячие клавиши являются глобальными и работают из любой программы и в любом состоянии, до тех пор пока GoldenDict работает в фоне. - - - - &Scan Popup - &Всплывающее окно - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Включите эту опцию, если не хотите видеть панель закладок -при единственной открытой вкладке. - - - - Hide single tab - Скрывать закладки - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab переключает закладки в порядке использования - - - - Automatically starts GoldenDict after operation system bootup. - Автоматически запускать GoldenDict при старте операционной системы. - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - В обычном режиме клавиша ESC переключает фокус на строку ввода -Если включить эту опцию, она будет прятать главное окно. - - - - ESC key hides main window - Прятать главное окно по клавише ESC - - - - Turn this option on if you want to select words by single mouse click - Включите эту опцию, если хотите выделять слова одиночным щелчком мыши - - - - Select word by single click - Выделять слово одиночным щелчком - - - - Add-on style: - Дополнительный стиль: - - - - Help language - Язык справки - - - - Adjust this value to avoid huge context menus. - Устанавливайте эту величину, чтобы избежать слишком больших контекстных меню - - - - Context menu dictionaries limit: - Предел количества словарей в контекстном меню: - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - При включении этого параметра при наведении курсора мыши (в Windows) -или при выделении текста (в Linux) в любом приложении будет показано -всплывающее окно с переводом или значением этого слова. Этот параметр можно -включить или отключить в основном окне и в контекстом меню значка в системном лотке. - - - - Enable scan popup functionality - Разрешить всплывающее окно - - - - Start with scan popup turned on - Включить режим всплывающего окна при запуске - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Показывать всплывающее окно, только если все выбранные клавиши -находятся в зажатом состоянии в момент выделения слова. - - - - Only show popup when all selected keys are kept pressed: - Показывать всплывающее окно только при зажатых клавишах: - - - - Left Ctrl only - При зажатии левой клавиши Ctrl - - - - Left Ctrl - Левый Ctrl - - - - Right Shift only - При зажатии правой клавиши Shift - - - - Right Shift - Правый Shift - - - - Alt key - При зажатии любой клавиши Alt - - - - Alt - Alt - - - - Ctrl key - При зажатии любой клавиши Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - При зажатии левой клавиши Alt - - - - Left Alt - Левый Alt - - - - Shift key - При зажатии любой клавиши Shift - - - - Shift - Shift - - - - Right Alt only - При зажатии правой клавиши Alt - - - - Right Alt - Правый Alt - - - - Right Ctrl only - При зажатии правой клавиши Ctrl - - - - Right Ctrl - Правый Ctrl - - - - Left Shift only - При зажатии левой клавиши Shift - - - - Left Shift - Левый Shift - - - - Windows key or Meta key - При зажатии клавиши Windows или Meta - - - - Win/Meta - Win или Meta - - - - Keys may also be pressed afterwards, within - Задержка проверки модификаторов - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Чтобы избежать ложных срабатываний, после выделения слова -клавиши опрашиваются только в течение ограниченного -промежутка времени, который и задается здесь. - - - - secs - секунд(ы) - - - - Send translated word to main window instead of to show it in popup window - Отправлять переводимое слово в главное окно программы вместо перевода его во всплывающем окне - - - - Send translated word to main window - Отправлять переводимое слово в главное окно - - - - Play audio files via FFmpeg(libav) and libao - Воспроизведение звуков через FFmpeg(libav) и libao - - - - Use internal player - Использовать встроенный движок - - - - System proxy - Использовать системные настройки - - - - Custom proxy - Использовать свои настройки - - - - Custom settings - Свои настройки - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Некоторые сайты опознают GoldenDict по заголовкам HTTP и блокируют запросы. -Включите эту опцию, чтобы обойти проблему. - - - - Do not identify GoldenDict in HTTP headers - Не указывать GoldenDict в заголовках HTTP - - - - Full-text search - Полнотекстовый поиск - - - - Allow full-text search for: - Разрешить полнотекстовый поиск для: - - - - Don't search in dictionaries containing more than - Не искать в словарях, содержащих более чем - - - - articles (0 - unlimited) - статей (0 - неограниченно) - - - - Ad&vanced - Дополнительно - - - - ScanPopup extra technologies - Дополнительные методы определения слова под курсором - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Использовать интерфейс IAccessibleEx для поиска слова под курсором. -Эта технология работает лишь с теми программами, что поддерживают её -(например Internet Explorer 9). -Если вы не пользуетесь такими программами, включать эту опцию не нужно. - - - - Use &IAccessibleEx - Использовать &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Использовать технологию UI Automation для поиска слова под курсором. -Эта технология работает лишь с теми программами, что поддерживают её. -Если вы не пользуетесь такими программами, включать эту опцию не нужно. - - - - Use &UIAutomation - Использовать &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Использовать специальный запрос GoldenDict для поиска слова под курсором. -Эта технология работает лишь с теми программами, что поддерживают её. -Если вы не пользуетесь такими программами, включать эту опцию не нужно. - - - - Use &GoldenDict message - Использовать запрос &GoldenDict - - - - History - Журнал - - - - Turn this option on to store history of the translated words - Включите эту опцию, чтобы вести журнал переведённых слов - - - - Store &history - Вести журнал - - - - Specify the maximum number of entries to keep in history. - Определяет максимальное количество записей в журнале - - - - Maximum history size: - Максимальный размер журнала: - - - - History saving interval. If set to 0 history will be saved only during exit. - Интервал сохранения журнала. Если он установлен в 0, -журнал будет сохраняться только при выходе из программы. - - - - Save every - Сохранять каждые - - - - minutes - минут - - - - Articles - Статьи - - - - Turn this option on to always expand optional parts of articles - Включите эту опцию, если хотите всегда раскрывать дополнительные области статей - - - - Expand optional &parts - Раскрывать дополнительные области - - - - Select this option to automatic collapse big articles - Включите эту опцию чтобы автоматически сворачивать большие статьи - - - - Collapse articles more than - Сворачивать статьи более чем - - - - Articles longer than this size will be collapsed - Статьи размером более этой величины будут свёрнуты - - - - symbols - символов - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Замечание: Кажется, Вы используете версию X.Org XServer, в которой отсутствует поддержка расширения RECORD. Вероятно, горячие клавиши в GoldenDict не заработают. Эта проблема должна быть исправлена на стороне XServer. Более подробную информацию смотрите на </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> и, если хотите, оставляйте там свои пожелания.</span></p></body></html> - - - - &Audio - &Аудио - - - - Pronunciation - Произношение - - - - Auto-pronounce words in main window - Автоматически произносить слова в главном окне - - - - Auto-pronounce words in scan popup - Автоматически произносить слова во всплывающем окне - - - - Playback - Воспроизведение - - - - Use any external program to play audio files - Использовать любую внешнюю программу для проигрывания аудио-файлов - - - - Use external program: - Воспроизведение через внешнее приложение: - - - - &Network - &Сеть - - - - Enable if you wish to use a proxy server -for all program's network requests. - Включите, если хотите использовать прокси-сервер -для всех сетевых запросов программы. - - - - Use proxy server - Использовать прокси-сервер - - - - Type: - Тип: - - - - Host: - Сервер: - - - - Port: - Порт: - - - - User: - Имя пользователя: - - - - Password: - Пароль: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Включение этой опции позволяет GoldenDict блокировать большую часть -рекламы путём запрещения определённых данных (картинок, фреймов итп), -не находящихся на исходном сайте. Если некоторые сайты перестанут -из-за этого функционировать, попробуйте запретить эту опцию. - - - - Disallow loading content from other sites (hides most advertisements) - Запретить загрузку информации с других сайтов (убирает большую часть рекламы) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Включение этой опции позволит вам прослушивать произношение с внешних -сайтов, которые требуют наличия Flash или других плагинов. -Чтобы это работало, плагины должны быть установлены. - - - - Enable web plugins - Разрешить веб-плагины - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Если эта опция включена, программа будет время от -времени проверять, не появилась ли новая версия -GoldenDict. Если новая версия появилась, программа -проинформирует об этом и предложит перейти на -страницу загрузки. - - - - Check for new program releases periodically - Проверять наличие новой версии - - - - System default - По умолчанию - - - - - Default - По умолчанию - - - - Modern - Modern - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - - Changing Language - Смена языка - - - - Restart the program to apply the language change. - Перезапустите программу, чтобы изменение языка вошло в силу. - - - - ProgramTypeEditor - - - Audio - Аудио - - - - Plain Text - Текст - - - - Html - Html - - - - Prefix Match - По префиксу - - - - Unknown - Неизвестно - - - - Programs::RunInstance - - - No program name was given. - Программа не указана. - - - - The program has crashed. - Программа завершилась с ошибкой - - - - The program has returned exit code %1. - Программа вернула значение %1. - - - - ProgramsModel - - - Enabled - Включено - - - - Type - Тип - - - - Name - Имя программы - - - - Command Line - Командная строка - - - - Icon - Значок - - - - QObject - - - - Article loading error - Ошибка загрузки статьи - - - - - Article decoding error - Ошибка декодирования статьи - - - - avformat_alloc_context() failed. - Ошибка avformat_alloc_context(). - - - - av_malloc() failed. - Ошибка av_malloc(). - - - - avio_alloc_context() failed. - Ошибка avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Ошибка avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - Ошибка avformat_find_stream_info(): %1. - - - - Could not find audio stream. - Аудиопоток не найден - - - - Codec [id: %1] not found. - Декодер [id: %1] не найден. - - - - avcodec_open2() failed: %1. - Ошибка avcodec_open2(): %1. - - - - Cannot find usable audio output device. - Не найдено устройство для вывода звука. - - - - Unsupported sample format. - Неподдерживаемый звуковой формат. - - - - ao_open_live() failed: - Ошибка ao_open_live(). - - - - No driver. - Нет драйвера. - - - - This driver is not a live output device. - Данный драйвер не является устройством вывода. - - - - A valid option key has an invalid value. - Невалидное значение параметра. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Невозможно открыть устройство: %1, каналов: %2, частота дискретизации: %3, бит: %4. - - - - Unknown error. - Неизвестная ошибка. - - - - avcodec_alloc_frame() failed. - Ошибка avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Поиск по названию словарей (Ctrl+F) - - - - Quick Search - Быстрый поиск - - - - Clear Search - Очистить - - - - ResourceToSaveHandler - - - - ERROR: %1 - ОШИБКА: %1 - - - - Resource saving error: - Ошибка записи данных: - - - - The referenced resource failed to download. - Невозможно загрузить указанный ресурс. - - - - Romaji - - - Hepburn Romaji for Hiragana - Система Хэпбёрна (Хирагана) - - - - Hepburn Romaji for Katakana - Система Хэпбёрна (Катакана) - - - - RussianTranslit - - - Russian Transliteration - Транслитерация (Русский) - - - - ScanPopup - - - Dialog - Диалог - - - - Back - Назад - - - - Forward - Вперёд - - - - Pronounce Word (Alt+S) - Произнести слово (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Отправить слово в главное окно (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Показать или спрятать словарную панель - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Нажмите, чтобы закрепить окно на экране, изменить его размер -или какие-либо другие свойства. - - - - - - - - ... - ... - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Путь - - - - Name - Название - - - - Icon - Значок - - - - Sources - - - Text to Speech - Синтез речи - - - - (not available in portable version) - (не реализовано в переносимой версии) - - - - - - Choose a directory - Выбор пути - - - - - - - - - Confirm removal - Подтверждение удаления - - - - - Remove directory <b>%1</b> from the list? - Удалить путь <b>%1</b> из списка? - - - - - - Remove site <b>%1</b> from the list? - Удалить веб-сайт <b>%1</b> из списка? - - - - Remove program <b>%1</b> from the list? - Удалить программу <b>%1</b> из списка? - - - - Files - Файлы - - - - Paths to search for the dictionary files: - Пути для поиска файлов словарей: - - - - - - - - - &Add... - &Добавить... - - - - - - - - - &Remove - &Удалить - - - - Re&scan now - Пере&сканировать - - - - Sound Dirs - Папки со звуками - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Все найденные звуковые файлы каждой папки компонуются в словари: - - - - Morphology - Морфология - - - - Path to a directory with Hunspell/Myspell dictionaries: - Путь к словарям Hunspell/Myspell: - - - - &Change... - &Изменить... - - - - Available morphology dictionaries: - Доступные морфологические словари: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Каждый морфологический словарь -представляется в виде отдельного -вспомогательного словаря, -предоставляющего корни слов при -поиске, а также варианты написания -неправильно написанных слов. -Для использования словарей -добавляйте соответствующие словари -в конец соответствующих групп. - - - - Websites - Веб-сайты - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Любые веб-сайты. Строка %GDWORD% будет заменена на запрашиваемое слово: - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Также можно использовать %GD1251% для кодировки CP1251, %GDISO1%...%GDISO16% для ISO 8859-1...ISO 8859-16 соответственно, -%GDBIG5% для Big-5, %GDBIG5HKSCS% для Big5-HKSCS, %GDGBK% для GBK и GB18030, %GDSHIFTJIS% для Shift-JIS. - - - - DICT servers - Серверы DICT - - - - DICT servers: - Серверы DICT: - - - - Programs - Программы - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Любые внешние программы. Строка %GDWORD% будет заменена на запрашиваемое слово. Если такой строки нет, слово будет отправлено в стандартный входной поток. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Живое произношение с сайта <a href="http://www.forvo.com/">forvo.com</a>. Сайт позволяет людям записывать и обмениваться произношениями слов. Вы можете прослушивать их из GoldenDict. - - - - Enable pronunciations from Forvo - Включить произношения с Forvo - - - - API Key: - Ключ API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Использования сайта Forvo требует наличие ключа API. Оставьте -данное поле пустым, чтобы использовать ключ по умолчанию, который -может перестать работать в будущем, или же зарегистрируйтесь на -сайте, чтобы получить свой собственный ключ. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Получите ваш ключ <a href="http://api.forvo.com/key/">здесь</a>, или оставьте пустым для использования ключа по умолчанию. - - - - Language codes (comma-separated): - Список языковых кодов (через запятую): - - - - List of language codes you would like to have. Example: "en, ru". - Список кодов для языков, которые вы хотели бы использовать. Пример: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Полный список языковых кодов доступен <a href="http://www.forvo.com/languages-codes/">здесь</a>. - - - - Transliteration - Транслитерация - - - - Russian transliteration - Транслитерация (Русский) - - - - Greek transliteration - Транслитерация (Греческий) - - - - German transliteration - Транслитерация (Немецкий) - - - - Belarusian transliteration - Транслитерация (Белорусский) - - - - Enables to use the Latin alphabet to write the Japanese language - Позволяет использовать латинский алфавит для ввода на Японском - - - - Japanese Romaji - Ромадзи (Японский) - - - - Systems: - Системы: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Наиболее популярный метод транскрибирования Японского, -основанный на Английской фонологии - - - - Hepburn - Хэпбёрн - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Система, передающая отображения на знаки каны наиболее точно. -Стандартизована в ISO 3602. - -В GoldenDict пока не реализована. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Основана на системе Nihon-shiki, но модицирована в соответствии с -современным Японским. Стандартизована в ISO 3602. - -В GoldenDict пока не реализована. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Слоговые азбуки: - - - - Hiragana Japanese syllabary - Слоговая азбука "Хирагана" - - - - Hiragana - Хирагана - - - - Katakana Japanese syllabary - Слоговая азбука "Катакана" - - - - Katakana - Катакана - - - - Wikipedia - Пишется по-русски, источник: ru.wikipedia.org - Википедия - - - - Wikipedia (MediaWiki) sites: - Веб-сайты Википедии (MediaWiki): - - - - StylesComboBox - - - None - Нет - - - - TextToSpeechSource - - - Selected voice engines: - Выбранные голоса: - - - - &Add - Добавить - - - - &Remove - Убрать - - - - Preferences - Параметры - - - - Volume: - Громкость: - - - - Rate: - Темп: - - - - Preview - Прослушивание - - - - Available voice engines: - Доступные голоса: - - - - Text to be previewed: - Текст для прослушивания: - - - - Type text to be previewed here. - Введите сюда текст для прослушивания. - - - - &Preview - Прослушать - - - - No TTS voice available - Нет доступных голосов - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Нет доступных голосов.<br>Убедитесь, что на комьпютере установлен хотя бы один голосовой движок. - - - - Confirm removal - Подтверждение удаления - - - - Remove voice engine <b>%1</b> from the list? - Удалить голос <b>%1</b> из списка? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Введите слово или словосочетание для поиска в словарях - - - - Drop-down - Выпадающий список - - - - VoiceEnginesModel - - - Enabled - Включено - - - - Name - Название - - - - Id - Id - - - - Icon - Значок - - - - WebSitesModel - - - Enabled - Включено - - - - Name - Название - - - - Address - Адрес - - - - Icon - Значок - - - - WordFinder - - - Failed to query some dictionaries. - Ошибка поиска в некоторых словарях. - - - - WordList - - - WARNING: %1 - Внимание: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sk_SK.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sk_SK.ts deleted file mode 100644 index 7140c715f3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sk_SK.ts +++ /dev/null @@ -1,4856 +0,0 @@ - - - - - About - - - About - O programe - - - - GoldenDict dictionary lookup program, version - GoldenDict - prehliadač slovníkov, verzia - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - Vydané pod licenciou GNU GPLv3 alebo novšou - - - - Credits: - Poďakovanie: - - - - [Unknown] - [Neznámy] - - - - Based on Qt %1 (%2, %3 bit) - Založené na Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Rozbaliť článok - - - - Collapse article - Skrátiť článok - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - V skupine <b>%2</b> nebol nájdený preklad pre <b>%1</b>. - - - - No translation was found in group <b>%1</b>. - V skupine <b>%1</b> nebol nájdený preklad. - - - - Welcome! - Vitajte! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Vitajte v programe <b>GoldenDict</b>!</h3><p>Prácu v programe začnite v <b>Upraviť|Slovníky</b>, kde môžete pridať cesty k priečinkom v ktorých budú vyhľadané slovníky, nastaviť rôzne stránky Wikipedie a iné zdroje, upraviť poradenie poradenie slovníkov alebo vytvoriť slovníkové skupiny.</p><p>Potom budete môcť začať vyhľadať slová! Môžete tak robiť v tomto okne s použitím panela vľavo, alebo môžete <a href="Working with popup">vyhľadávať slová z iných aktívnych aplikácií</a>.</p><p>Úpravu vlastností programu môžete urobiť <b>Upraviť|Nastavenia…</b>. Všetky nastavenia majú popisy, ktoré vám pomôžu, pokiaľ si nebudete niečim istý.</p><p>Pokiaľ budete potrebovať ďalšiu pomoc, máte nejaké návrhy, alebo len chcete vedieť, čo si myslia iný, tak ste vítaní na <a href="http://goldendict.org/forum/">diskusnom fóre</a>.</p><p>Aktualizácie hľadajte na <a href="http://goldendict.org/">stránkach GoldenDict</a>.</p><p>(c) 2008-2013 Konstantin Isakov. Licencované pod GPLv3 alebo novšou. - - - - Working with popup - Práca s vyskakovacím oknom - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Práca s vyskakovacím oknom</h3>Aby ste mohli vyhľadávať slová z iných aplikácií, potrebujete si najskôr aktivovať <i>„Vyskakovacie okno“</i> v položke <b>Nastavenia</b> a potom ju kedykoľvek povoľte kliknutím na 'Vyskakovaciu' ikonu, alebo kliknutím na ikonu v systémovom panely cez pravé tlačidlo myši a následným výberom z ponuky. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Potom sa len nastavte kurzor nad slovom v inej aplikácií, ktoré chcete vyhľadať, a vyskočí okno, ktoré vám ho popíše. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Potom len vyberte akékoľvek slovo v inej aplikácií, ktoré chcete vyhľadať (dvojklikom alebo označením pomocou ťahania myšou) a vyskočí okno, ktoré vám to slovo popíše. - - - - (untitled) - (Bez názvu) - - - - (picture) - (obrázok) - - - - ArticleRequest - - - Expand article - Rozbaliť článok - - - - From - Z - - - - Collapse article - Skrátiť článok - - - - Query error: %1 - Chyba požiadavky: %1 - - - - Close words: - Blízke slová: - - - - Compound expressions: - Zložené výrazy: - - - - Individual words: - Jednotlivé slová: - - - - ArticleView - - - Form - Formulár - - - - about:blank - about: blank - - - - x - x - - - - Find: - Hľadať: - - - - - &Previous - &Predchádzajúci - - - - - &Next - Ď&alší - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Citlivý na veľkosť písmen - - - - Highlight &all - Zvýr&azniť všetko - - - - Resource - Zdroj - - - - Audio - Audio - - - - TTS Voice - TTS Hlas - - - - Picture - Obrázok - - - - Video - Video - - - - Video: %1 - Video: %1 - - - - Definition from dictionary "%1": %2 - Definícia zo slovníka "%1": %2 - - - - Definition: %1 - Definícia: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - Referencovaný zdroj neexistuje. - - - - The referenced audio program doesn't exist. - Odkazovaný audio program neexistuje. - - - - - ERROR: %1 - CHYBA: %1 - - - - Save sound - Uložiť zvuk - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Zvukové súbory (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Všetky súbory (*.*) - - - - Save image - Uložiť obrázok - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Uložiť obrázky (*.bmp *.jpg *.png *.tif);;Všetky súbory (*.*) - - - Resource saving error: - Chyba ukladania zdroja: - - - - &Open Link - &Otvoriť odkaz - - - - Open Link in New &Tab - Otvoriť odkaz v nove kar&te - - - - Open Link in &External Browser - Otvoriť odkaz v &externom prehliadači - - - - Save &image... - Uložiť &obrázok… - - - - Save s&ound... - Uložiť &zvuk… - - - - &Look up "%1" - &Hľadať "%1" - - - - Look up "%1" in &New Tab - Hľadať "%1" v &novej karte - - - - Send "%1" to input line - Odoslať "%1" do vstupného riadku - - - - - &Add "%1" to history - Prid&ať "%1" do histórie - - - - Look up "%1" in %2 - Hľadať "%1" v %2 - - - - Look up "%1" in %2 in &New Tab - Hľadať "%1" v %2 v &novej karte - - - - WARNING: FFmpeg Audio Player: %1 - VAROVANIE: FFmpeg Audio Player: %1 - - - Playing a non-WAV file - Prehrávanie ne-WAV súboru - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Pre povolenie prehrávania oných súborov ako WAV, choďte do Upraviť|Nastavenia, vyberte kartu Audio a zvoľte „Prehrávať cez DirectShow“. - - - Bass library not found. - Knižnica Bass nebola nájdená. - - - Bass library can't play this sound. - Knižnica Bass nevie prehrať tento zvuk. - - - - Failed to run a player to play sound file: %1 - Nepodarilo sa spustiť prehrávač pre prehrávanie zvukových súborov: %1 - - - - Failed to create temporary file. - Nepodarilo sa vytvoriť dočasný súbor. - - - - Failed to auto-open resource file, try opening manually: %1. - Nepodarilo sa automaticky otvoriť súbor so zdrojmi. Pokúste sa ho otvoriť ručne: %1. - - - - WARNING: %1 - VAROVANIE: %1 - - - - Select Current Article - Označiť aktuálny článok - - - - Copy as text - Kopírovať ako text - - - - Inspect - Kontrolovať - - - - The referenced resource failed to download. - Referencovaný zdroj sa nepodarilo stiahnuť. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Bieloruský prepis z latinky do azbuky (klasická ortografia) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Bieloruský prepis z latinky do azbuky (školská ortografia) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Bieloruský prepis (vyhladzuje rozdiely -medzi klasickou a školskou ortografiou v azbuke) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Heslo: - - - - DictGroupWidget - - - Form - Formulár - - - - Group icon: - Ikona skupiny: - - - - Shortcut: - Skratky: - - - - None - Žiadny - - - - From file... - Zo súboru ... - - - - Choose a file to use as group icon - Vyberte súbor, ktorý chcete použiť ako ikonu skupiny - - - - Images - Obrázky - - - - All files - Všetky súbory - - - - Error - Chyba - - - - Can't read the specified image file. - Nemožno prečítať zadaný súbor s obrázkom. - - - - DictGroupsWidget - - - - - - Dictionaries: - Slovníky: - - - - Confirmation - Potvrdenie - - - - Are you sure you want to generate a set of groups based on language pairs? - Ste si istí, že chcete vytvoriť sadu skupín na základe jazykových párov? - - - - Unassigned - Nepriradené - - - - Combine groups by source language to "%1->" - Kombinovať skupiny podľa zdrojového jazyka do "%1->" - - - - Combine groups by target language to "->%1" - Kombinovať skupiny podľa cieľového jazyka do "%1->" - - - - Make two-side translate group "%1-%2-%1" - Urobiť dvojstrannú prekladovú skupinu "%1-%2-%1" - - - - - Combine groups with "%1" - Kombinovať skupiny s "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Textové súbory (*.txt);;Všetky súbory (*.*) - - - - Export headwords... - - - - - Cancel - Zrušiť - - - - DictInfo - - - Total articles: - Počet článkov: - - - - Translates from: - Prekladá z: - - - - Total words: - Počet slov: - - - - Translates to: - Prekladá do: - - - - Open folder - Otvoriť priečinok - - - - Edit dictionary - Upraviť slovník - - - - Files comprising this dictionary: - Súbory obsiahnuté v slovníku: - - - - Description: - Popis: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Upraviť slovník cez príkaz: -%1 - - - - DictListModel - - - %1 entries - %1 položiek - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Povolené - - - - Name - - - - - Address - Adresa - - - - Databases - - - - - Strategies - - - - - Icon - Ikona - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Panel slovníkov - - - - &Dictionary Bar - Panel s&lovníkov - - - - Extended menu with all dictionaries... - Rozšírená ponuka so všetkými slovníkmi… - - - - Edit this group - Upraviť túto skupinu - - - - Dictionary info - Info o slovníku - - - - Dictionary headwords - - - - - Open dictionary folder - Otvoriť slovníkový priečinok - - - - Edit dictionary - Upraviť slovník - - - - EditDictionaries - - - Dictionaries - Slovníky - - - - &Sources - &Zdroje - - - - - &Dictionaries - S&lovníky - - - - - &Groups - S&kupiny - - - - Sources changed - Zdroje sa zmenili - - - - Some sources were changed. Would you like to accept the changes? - Niektoré zdroje boli zmenené. Chcete akceptovať zmeny? - - - - Accept - Prijať - - - - Cancel - Zrušiť - - - - ExternalViewer - - - the viewer program name is empty - názvu programu na prezeranie je prázdny - - - - FTS::FtsIndexing - - None - Žiadny - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Žiadny - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Žiadny - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Chyba spracovania XML: %1 v %2,%3 - - - - Added %1 - Pridané %1 - - - - by - od - - - - Male - Muž - - - - Female - Žena - - - - from - z - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Prejsť na Upraviť | Slovníky | Zdroje | Forvo a aplikovať náš vlastný API kľúč, aby táto chyba zmizla. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Zrušiť - - - - Help - - - - - GermanTranslit - - - German Transliteration - Nemecký prepis - - - - GreekTranslit - - - Greek Transliteration - Grécky prepis - - - - GroupComboBox - - - Choose a Group (Alt+G) - Vyberte skupinu (Alt + G) - - - - GroupSelectorWidget - - - Form - Formulár - - - - Look in - Hľadať v - - - - Groups - - - Dictionaries available: - Slovníky k dispozícii: - - - - Add selected dictionaries to group (Ins) - Pridať vybrané slovníkov skupiny (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Odstrániť vybrané slovníky zo skupiny (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Skupiny: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Vytvoriť novú skupinu slovníkov - - - - &Add group - Prid&ať skupinu - - - - Create language-based groups - Vytvoriť skupiny založené na jazykoch - - - - Auto groups - Auto skupiny - - - - Rename current dictionary group - Premenovať aktuálnu slovníkovú skupinu - - - - Re&name group - Preme&novať skupinu - - - - Remove current dictionary group - Odstrániť aktuálnu slovníkovú skupinu - - - - &Remove group - Odst&rániť skupinu - - - - Remove all dictionary groups - Odstrániť všetky slovníkové skupiny - - - - - Remove all groups - Odstrániť všetky skupiny - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Chyťte a pretiahnite slovníky do a zo skupín, posuňte ich dovnútra skupiny a meňte ich poradenie pomocou myši. - - - - Group tabs - - - - - Open groups list - - - - - Add group - Pridať skupinu - - - - Give a name for the new group: - Zadajte názov novej skupiny: - - - - Rename group - Premenovať skupinu - - - - Give a new name for the group: - Zadajte nový názov skupine: - - - - Remove group - Odstrániť skupinu - - - - Are you sure you want to remove the group <b>%1</b>? - Ste si istí, že chcete odstrániť skupinu <b>%1</b>? - - - - Are you sure you want to remove all the groups? - Ste si istí, že chcete odstrániť všetky skupiny? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Späť - - - - Forward - Vpred - - - - Zoom In - Priblížiť - - - - Zoom Out - Oddialiť - - - - Normal Size - Normálna veľkosť - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Zmazať označené - - - - Copy Selected - Kopírovať označené - - - - History: - História: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Veľkosť histórie: %1 položiek z maxima %2 - - - - Hunspell - - - Spelling suggestions: - Návrhy k preklepom: - - - - %1 Morphology - %1 morfológia - - - - HunspellDictsModel - - - Enabled - Povolené - - - - Name - Meno - - - - Initializing - - - GoldenDict - Initializing - GoldenDict - Inicializácia - - - - - Please wait while indexing dictionary - Počkajte prosím, indexovanie slovníka - - - - Dictionary Name - Názov slovníka - - - - Please wait... - Čakajte prosím ... - - - - Language - - - Afar - Afar - - - - Abkhazian - Abcházsky - - - - Avestan - Avestan - - - - Afrikaans - Afrikánsky - - - - Akan - Akan - - - - Amharic - Amharic - - - - Aragonese - Aragonese - - - - Arabic - Arabsky - - - - Assamese - Assamese - - - - Avaric - Avaric - - - - Aymara - Aymara - - - - Azerbaijani - Azerbajdžanský - - - - Bashkir - Bashkir - - - - Belarusian - Bieloruský - - - - Bulgarian - Bulharský - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengálsky - - - - Tibetan - Tibetský - - - - Breton - Breton - - - - Bosnian - Bosnianský - - - - Catalan - Katalánsky - - - - Chechen - Čečenský - - - - Chamorro - Chamorro - - - - Corsican - Korzický - - - - Cree - Cree - - - - Czech - Čeština - - - - Church Slavic - Staroslovianský - - - - Chuvash - Chuvash - - - - Welsh - Welský - - - - Danish - Dánsky - - - - German - Nemčina - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Grécky - - - - English - Angličtina - - - - Esperanto - Esperanto - - - - Spanish - Španielský - - - - Estonian - Estónsky - - - - Basque - Baskitský - - - - Persian - Perzský - - - - Fulah - Fulah - - - - Finnish - Fínsky - - - - Fijian - Fidži - - - - Faroese - Faerský - - - - French - Francúzsky - - - - Western Frisian - Západná frýština - - - - Irish - Írsky - - - - Scottish Gaelic - Škótska gaelština - - - - Galician - Galicijský - - - - Guarani - Guarani - - - - Gujarati - Gujarati - - - - Manx - Manský - - - - Hausa - Hausa - - - - Hebrew - Hebrejský - - - - Hindi - Hindský - - - - Hiri Motu - Hiri Motu - - - - Croatian - Chorvátsky - - - - Haitian - Haitský - - - - Hungarian - Maďarský - - - - Armenian - Armémsky - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonézsky - - - - Interlingue - Interlingue - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuan Yi - - - - Inupiaq - Inupiaq - - - - Ido - Ido - - - - Icelandic - Islandský - - - - Italian - Talianský - - - - Inuktitut - Inuktitut - - - - Japanese - Japonský - - - - Javanese - Jávsky - - - - Georgian - Gruzínsky - - - - Kongo - Kongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kwanyama - - - - Kazakh - Kazašsky - - - - Kalaallisut - Kalaallisut - - - - Khmer - Kmérsky - - - - Kannada - Kannada - - - - Korean - Kórejsky - - - - Kanuri - Kanuri - - - - Kashmiri - Kashmiri - - - - Kurdish - Kurdsky - - - - Komi - Komi - - - - Cornish - Cornwallsky - - - - Kirghiz - Kirgizský - - - - Latin - Latinčina - - - - Luxembourgish - Luxemburský - - - - Ganda - Ganda - - - - Limburgish - Limburgish - - - - Lingala - Lingala - - - - Lao - Lao - - - - Lithuanian - Litovský - - - - Luba-Katanga - Luba-Katanga - - - - Latvian - Lotyšský - - - - Malagasy - Malgašský - - - - Marshallese - Maršálsky - - - - Maori - Maorský - - - - Macedonian - Macedónsky - - - - Malayalam - Malayalam - - - - Mongolian - Mongolský - - - - Marathi - Marathi - - - - Malay - Malajzijský - - - - Maltese - Maltézsky - - - - Burmese - Barmský - - - - Nauru - Nauru - - - - Norwegian Bokmal - Nórsky (Bokmal) - - - - North Ndebele - Severný Ndebele - - - - Nepali - Nepálsky - - - - Ndonga - Ndonga - - - - Dutch - Holandský - - - - Norwegian Nynorsk - Nórsky (Nynorsk) - - - - Norwegian - Nórsky - - - - South Ndebele - Južný Ndebele - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitan - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Urijština - - - - Ossetian - Osetčina - - - - Panjabi - Pandžábsky - - - - Pali - Pali - - - - Polish - Poľský - - - - Pashto - Pashto - - - - Portuguese - Portugalčina - - - - Quechua - Quechua - - - - Raeto-Romance - Raeto-Románčina - - - - Kirundi - Kirundi - - - - Romanian - Rumunčina - - - - Russian - Ruština - - - - Kinyarwanda - Kinyarwanda - - - - Sanskrit - Sanskrit - - - - Sardinian - Sardínčina - - - - Sindhi - Sindhi - - - - Northern Sami - Severný Sami - - - - Sango - Sango - - - - Serbo-Croatian - Srbochorvátčina - - - - Sinhala - Sinhala - - - - Slovak - Slovenčina - - - - Slovenian - Slovinčina - - - - Samoan - Samoánsky - - - - Shona - Shona - - - - Somali - Somálsky - - - - Albanian - Albánsky - - - - Serbian - Srbčina - - - - Swati - Swati - - - - Southern Sotho - Južný Sotho - - - - Sundanese - Sundánčína - - - - Swedish - Švédčina - - - - Swahili - Svahilsky - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tajisky - - - - Thai - Thajsky - - - - Tigrinya - Tigrinya - - - - Turkmen - Turkménsky - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Turecky - - - - Tsonga - Tsonga - - - - Tatar - Tatársky - - - - Twi - Twi - - - - Tahitian - Tahitsky - - - - Uighur - Ujgursky - - - - Ukrainian - Ukrajinsky - - - - Urdu - Urdu - - - - Uzbek - Uzbecky - - - - Venda - Venda - - - - Vietnamese - Vietnamsky - - - - Volapuk - Volapuk - - - - Walloon - Valónsky - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Jidiš - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Čínsky - - - - Zulu - Zulu - - - - Lojban - Lojban - - - - Traditional Chinese - Tradičná čínština - - - - Simplified Chinese - Zjednodušená čínština - - - - Other - Iný - - - - Other Simplified Chinese dialects - Ostatné dialekty zjednodušenej čínštiny - - - - Other Traditional Chinese dialects - Ostatné dialekty tradičnej čínštiny - - - - Other Eastern-European languages - Ostatné východoeurópske jazyky - - - - Other Western-European languages - Ostatné západoeurópske jazyky - - - - Other Russian languages - Ostatné ruské jazyky - - - - Other Japanese languages - Ostatné japonské jazyky - - - - Other Baltic languages - Ostatné baltické jazyky - - - - Other Greek languages - Ostatné grécke jazyky - - - - Other Korean dialects - Ostatné kórejské jazyky - - - - Other Turkish dialects - Ostatné turecké jazyky - - - - Other Thai dialects - Ostatné thajské dialekty - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Chyba pri načítavaní slovníkov - - - - Main - - - Error in configuration file. Continue with default settings? - Chyba v konfiguračnom súbore. Pokračovať so štandardnými nastaveniami? - - - - MainWindow - - GoldenDict - GoldenDict - - - - - Welcome! - Vitajte! - - - - &File - &Súbor - - - - &Edit - &Upraviť - - - - &Help - &Pomocník - - - - &View - &Zobrazenie - - - - &Zoom - &Zväčšenie - - - - H&istory - H&istória - - - Search Pane - Vyhľadávací panel - - - Results Navigation Pane - Výsledky navigačného panela - - - - &Search Pane - Vy&hľadávací panel - - - - &Results Navigation Pane - &Panel výsledkov - - - - &History Pane - Panel &histórie - - - &Dictionaries... F3 - &Slovníky… F3 - - - - Search - - - - - &Dictionaries... - &Slovníky... - - - - F3 - F3 - - - - &Preferences... - &Nastavenia... - - - - F4 - F4 - - - - &Homepage - &Domovská stránka - - - - &About - &O programe - - - - About GoldenDict - O GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Koniec - - - - Quit from application - Odísť z aplikácie - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Fórum - - - - &Close To Tray - &Minimalizovať do lišty - - - - Minimizes the window to tray - Minimalizuje okno do lišty okien - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Uložiť článok - - - - Save Article - Uložiť článok - - - - F2 - F2 - - - - &Print - &Tlač - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Nastavenie s&trany - - - - Print Pre&view - Náhľad pred &tlačou - - - - &Rescan Files - &Znovu vyhľadať súbory - - - - &New Tab - &Nová karta - - - - &Always on Top - &Vždy na vrchu - - - - Always on Top - Vždy na vrchu - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Tlačidlo Menu - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Náhľad pred tlačou - - - Rescan Files - Znovu vyhľadať súbory - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Vymazať - - - - New Tab - Nová karta - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Konfiguračný priečinok - - - - - &Show - &Zobraziť - - - - Ctrl+H - Ctrl+H - - - - &Export - &Exportovať - - - - &Import - &Importovať - - - Show Names in Dictionary Bar - Zobraziť názvy v panely slovníkov - - - Show Small Icons in Toolbars - Zobraziť malé ikony v paneloch - - - - &Menubar - &Panel s ponukou - - - - - Look up in: - Hľadať v: - - - - Found in Dictionaries: - Nájdené v slovníkoch: - - - Navigation - Navigácia - - - - Back - Späť - - - - Forward - Vpred - - - - Scan Popup - Vyskakovanie okno - - - - Pronounce Word (Alt+S) - Vysloviť slovo (Alt + S) - - - - Zoom In - Priblížiť - - - - Zoom Out - Oddialiť - - - - Normal Size - Normálna veľkosť - - - - Words Zoom In - Zväčšiť slová - - - - Words Zoom Out - Zmenšiť slová - - - - Words Normal Size - Bežná veľkosť slov - - - - Show &Main Window - Zobraziť &hlavné okno - - - - Close current tab - Zatvoriť aktuálnu kartu - - - - Close all tabs - Zatvoriť všetky karty - - - - Close all tabs except current - Zatvoriť všetky karty okrem aktuálnej - - - - Loading... - Načítavanie ... - - - - %1 dictionaries, %2 articles, %3 words - Slovníky: %1, články: %2, slová: %3 - - - - Look up: - Hľadať: - - - - All - Všetko - - - - Now indexing for full-text search: - - - - - Opened tabs - Otvorené karty - - - - Show Names in Dictionary &Bar - Zobraziť názvy v &panely slovníka - - - - Show Small Icons in &Toolbars - Zobraziť malé ikony v panely nás&trojov - - - - &Navigation - &Navigácia - - - - Open Tabs List - Otvorí zoznam kariet - - - - (untitled) - (Bez názvu) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - VAROVANIE: %1 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Nepodarilo sa inicializovať monitorovací mechanizmus klávesových skratiek.<br> Uistite sa, že X server má zapnuté rozšírenie RECORD. - - - - New Release Available - Je dostupná nová verzia - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - GoldenDict verzia <b>%1</b> je dostupná na stiahnutie. -<br>Kliknutím na <b>Stiahnuť</b> sa dostane na stránku, kde je možné program stiahnuť. - - - - Download - Stiahnuť - - - - Skip This Release - Preskočiť toto vydanie - - - - - Accessibility API is not enabled - API Dostupnosti nie je povolené - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - You have chosen to hide a menubar. Use %1 to show it back. - Vybrali ste si skrytie panelu s ponukou. Použite %1 ak ho chcete znova zobraziť. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Nastavenie strany - - - - No printer is available. Please install one first. - Žiadna tlačiareň nie je k dispozícii. Prosím, nainštalujte aspoň jednu. - - - - Print Article - Vytlačiť článok - - - - Article, Complete (*.html) - Článok, Kompletný (*.html) - - - - Article, HTML Only (*.html) - Článok, iba HTML (*.html) - - - - Save Article As - Uložiť článok ako - - - Html files (*.html *.htm) - Html súbory (*.html *.htm) - - - - Error - Chyba - - - - Can't save article: %1 - Nie je možné uložiť článok: %1 - - - - Saving article... - Ukladanie článku… - - - - The main window is set to be always on top. - Hlavné okno je nastavené, aby bolo vždy na vrchu. - - - - &Hide - S&kryť - - - - Export history to file - Exportovať históriu do súboru - - - - - Text files (*.txt);;All files (*.*) - Textové súbory (*.txt);;Všetky súbory (*.*) - - - - History export complete - Export histórie ukončený - - - - Export error: - Chyba exportu: - - - - Import history from file - Import histórie zo súboru - - - - Import error: invalid data in file - Chyba importu: neplatné dáta v súbore - - - - History import complete - Import histórie je ukončený - - - - Import error: - Chyba importu: - - - - Dictionary info - Info o slovníku - - - - Dictionary headwords - - - - - Open dictionary folder - Otvoriť slovníkový priečinok - - - - Edit dictionary - Upraviť slovník - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Slovníkový súbor bol poškodený alebo sfalšovaný - - - - Failed loading article from %1, reason: %2 - Nepodarilo sa načítať článok z %1; dôvod: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Chyba spracovania XML: %1 v %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Chyba spracovania XML: %1 v %2,%3 - - - - MediaWikisModel - - - Enabled - Povolené - - - - Name - Meno - - - - Address - Adresa - - - - Icon - Ikona - - - - OrderAndProps - - - Form - Formulár - - - - Dictionary order: - Poradie slovníkov: - - - ... - … - - - - Inactive (disabled) dictionaries: - Neaktívne (nepovolené) slovníky: - - - - Dictionary information - Informácie o slovníku - - - - Name: - Meno: - - - - Total articles: - Počet článkov: - - - - Total words: - Počet slov: - - - - Translates from: - Prekladá z: - - - - Translates to: - Prekladá do: - - - - Description: - Popis: - - - - Files comprising this dictionary: - Súbory obsiahnuté v slovníku: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Upravte poradie uchopením a presunutím položky na požadované miesto. Presuňte slovníky do neaktívnej skupiny pre zakázanie ich použitia. - - - - Sort by name - Zoradiť podľa názvu - - - - Sort by languages - Zoradiť podľa jazyka - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Cesta - - - - Recursive - Rekurzívne - - - - Preferences - - - Preferences - Nastavenia - - - - &Interface - &Rozhranie - - - - Tabbed browsing - Prezeranie v kartách - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normálne sa otvorením novej karty do nej automaticky presuniete. S týmto nastavení sa nová karta otvorí bez toho, aby ste do nej presunuli. - - - - Open new tabs in background - Otvárať nové karty na pozadí - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - S touto voľbou sú nové karty -otvorené za aktívnou kartou. -Inak sú pridané za poslednú kartu. - - - - Open new tabs after the current one - Otvoriť nové karty za aktívnou kartou - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Vyberte si túto možnosť, pokiaľ nechcete vidieť panel s kartami, keď je otvorená len jedna karta. - - - - Hide single tab - Skryť hlavičku pri jednej karte - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab prepína karty podľa MRU - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Ak je povolené, zobrazí sa ikona v systémového panelu, ktorú je možné použiť na otvorenie hlavného okna a ďalšie úlohy. - - - - Enable system tray icon - Povoliť ikonu v systémovom panely - - - - With this on, the application starts directly to system tray without showing -its main window. - S touto voľbou sa aplikácia spustí priamo do systémového panelu bez zobrazenia hlavného okna. - - - - Start to system tray - Spustiť do systémového panelu - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - S touto voľbou pokus o zatvorenie hlavného okna -skryje program namiesto jeho ukončenia. - - - - Close to system tray - Minimalizovať do systémového panela - - - - Startup - Spustenie - - - - Automatically starts GoldenDict after operation system bootup. - Automaticky spustí GoldenDict pri štarte operačného systému. - - - - Start with system - Spustiť pri štarte systému - - - - Interface language: - Jazyk rozhrania: - - - - Display style: - Štýl zobrazenia: - - - - Double-click translates the word clicked - Dvojklik preloží označené slovo - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Zvyčajne stlačenie klávesa ESC presunie zameranie do prekladateľského riadku. V touto voľbou však skryje hlavné okno. - - - - ESC key hides main window - ESC kláves skryje hlavné okno - - - - Turn this option on if you want to select words by single mouse click - Zapnite túto voľbu, ak chcete označiť slovo pomocou jedného kliknutia myšou - - - - Select word by single click - Označiť slovo jedným kliknutím - - - - Add-on style: - Štýl rozšírenia: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Upravte túto hodnotu pre zabránenie veľkej kontextovej ponuky. - - - - Context menu dictionaries limit: - Limit slovníkov pre kontextovú ponuku: - - - - &Scan Popup - Vy&skakovacie okno - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Pokiaľ je povolené, prekladové vyskakovacie okno sa vždy zobrazí, -keď sa postavíte s myšou nad slovo (Windows) alebo ho označíte (Linux). Ak je povolené, môžete ho zapnúť a vypnúť z hlavného okna alebo ikony v systémovej oblasti. - - - - Enable scan popup functionality - Povoliť vyskakovacie okno - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Určuje, či vyskakovacie okno je automaticky povolené, alebo zakázané. Pokiaľ je zaškrtnuté, -program sa bude spúšťať s automaticky aktivovaným vyskakovacím oknom. - - - - Start with scan popup turned on - Spustiť s povoleným vyskakovacím oknom - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Pokiaľ toto povolíte, vyskakovacie okno sa zobrazí iba v prípade, keď budú stlačené zvolené klávesy počas výberu slova. - - - - Only show popup when all selected keys are kept pressed: - Zobraziť vyskakovacie okno iba pokiaľ sú stlačené vybrané klávesy: - - - - Left Ctrl only - Left Ctrl only - - - - Left Ctrl - Left Ctrl - - - - Right Shift only - Iba pravý Shift - - - - Right Shift - Pravý Shift - - - - Alt key - Kláves Alt - - - - Alt - Alt - - - - Ctrl key - Kláves Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Iba ľavý Alt - - - - Left Alt - Ľavý Alt - - - - Shift key - Kláves Shift - - - - Shift - Shift - - - - Right Alt only - Iba pravý Alt - - - - Right Alt - Pravý Alt - - - - Right Ctrl only - Iba pravý Ctrl - - - - Right Ctrl - Pravý Ctrl - - - - Left Shift only - Iba ľavý Shift - - - - Left Shift - Ľavý Shift - - - - Windows key or Meta key - Klávesa Windows alebo Meta - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normálne musíte pre aktivovanie vyskakovacieho okna -držať klávesovú skratku počas vyberania slova. -Takto stačí, aby ste túto klávesovú skratku stlačili -až po označení slova. - - - - Keys may also be pressed afterwards, within - Klávesy môžu byť stlačené postupne po - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Aby ste sa vyhli neúmyselnému spusteniu, klávesy sú monitorované iba niekoľko sekúnd (tu môžete nastaviť ich počet), potom čo označíte text. - - - - secs - sek - - - - Send translated word to main window instead of to show it in popup window - Odoslať preložené slovo do hlavného okna namiesto jeho zobrazenia vo vyskakovacom okne - - - - Send translated word to main window - Odoslať preložené slovo do hlavného okna - - - - Hotkeys - Klávesové skratky - - - - Use the following hotkey to show or hide the main window: - Použite nasledujúcu klávesovú skratku pre zobrazenie alebo skrytie hlavného okna: - - - - Use the following hotkey to translate a word from clipboard: - Použite nasledujúcu klávesovú skratku pre preklad slova zo schránky: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Klávesové skratky sú globálne a fungujú z akéhokoľvek programu a akomkoľvek kontexte pokiaľ GoldenDict beží na pozadí. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Poznámka: Zdá sa, že používate X.Org XServer verziu, ktorá má poškodené rozšírenie RECORD. Klávesové skratky v Goldendict preto nebudú pravdepodobne fungovať. Toto musí byť najskôr vyriešené v samotnom XServeri. Prosím pozrite sa na následujúce </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">chybové hlásenie</span></a><span style=" color:#ff0000;"> a keď chcete, tak tam dajte svoj komentár.</span></p></body></html> - - - - &Audio - &Audio - - - - Pronunciation - Výslovnosť - - - - Auto-pronounce words in main window - Automaticky vysloviť slová v hlavnom okne - - - - Auto-pronounce words in scan popup - Automaticky vysloviť slová vo vyskakovacom okne - - - - Playback - Prehrávanie - - - - Play audio files via FFmpeg(libav) and libao - Prehra audio súbory cez FFmpeg(libav) a libao - - - - Use internal player - Použiť interný prehrávač - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Vyberte túto ponuku pre automatické skrátenie dlhých článkov - - - - Collapse articles more than - Skrátiť články väčšie než - - - - Articles longer than this size will be collapsed - Články dlhšie než je táto veľkosť budú skrátené - - - - symbols - symboly - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Použiť natívne Windows API pre prehrávanie. Podporuje iba .WAV súbory, ale funguje veľmi dobre. - - - Play via Windows native API - Hrať cez natívne Windows API - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Prehrať audio pomocou Phononu. Môže to byť trochu nestabilné, ale malo by podporovať väčšinu audio formátov. - - - Play via Phonon - Hrať cez Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Prehrať audio cez Bass knižnicu. Optimálna voľba. Ak ju chcete použiť -musíte umiestniť bass.dll (http://www.un4seen.com) do priečinka GoldenDict. - - - Play via Bass library - Prehrať cez Bass knižnicu - - - - Use any external program to play audio files - Použiť pre prehrávanie audio súborov externý program - - - - Use external program: - Použiť externý program: - - - - &Network - &Sieť - - - - Enable if you wish to use a proxy server -for all program's network requests. - Povoliť pokiaľ chcete použiť proxy server -pre všetky sieťové požiadavky programu. - - - - Use proxy server - Použiť proxy server - - - - Type: - Typ: - - - - Host: - Hostiteľ: - - - - Port: - Port: - - - - User: - Používateľ: - - - - Password: - Heslo: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Toto umožní GoldenDictu blokovať väčšinu reklám nepovolením obsahu (obrázky, rámce), ktoré pochádzajú z inej stránky, než je tá, ktorú prezeráte. Pokiaľ sa kvôli tomuto niektoré stránky pokazia, skúste túto voľbu zakázať. - - - - Disallow loading content from other sites (hides most advertisements) - Zakázať načítanie obsahu z iných webov (skryje väčšinu reklám) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Ak je toto povolené, tak sa umožní výslovnosť z online slovníkov, ktoré potrebujú Flash alebo iný web zásuvný modul. -Zásuvný modul musí byť nainštalovaný, aby táto voľba fungovala. - - - - Enable web plugins - Povoliť web zásuvné moduly - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Niektoré stránky odhalia GoldenDict cez HTTP hlavičky a blokujú jeho požiadavky. -Povoľte toto nastavenie na obídenie problému. - - - - Do not identify GoldenDict in HTTP headers - Neidentifikovať GoldenDict v HTTP hlavičke - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Pokiaľ je toto povolené, tak program pravidelne -kontroluje dostupnosť novej verzie GoldenDict -na stiahnutie. Následne program informuje používateľa -a ponúkne mu možnosť otvoriť stánku s programom -na stiahnutie. - - - - Check for new program releases periodically - Pravidelne kontrolovať dostupnosť nových verzií - - - - Ad&vanced - &Pokročilé - - - - ScanPopup extra technologies - Extra technológie pre vyskakovacie okno - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Pokúsi sa získať slovo pod kurzorom pomocou technológie IAccessibleEx. -Táto technológia funguje len s niektorými programami, ktoré ju podporujú -(napríklad Internet Explorer 9). -Nie je potrebné použiť túto voľbu, ak nepoužívate takéto programy. - - - - Use &IAccessibleEx - Použiť &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Pokúsi sa získať slovo pod kurzorom pomocou technológie UI Automation. -Táto technológia funguje len s niektorými programami, ktoré ju podporujú. -Nie je potrebné použiť túto voľbu, ak nepoužívate takéto programy. - - - - Use &UIAutomation - Použiť &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Pokúsi sa získať slovo pod kurzorom pomocou špeciálnej GoldenDict správy. -Táto technológia funguje len s niektorými programami, ktoré ju podporujú. -Nie je potrebné použiť túto voľbu, ak nepoužívate takéto programy. - - - - Use &GoldenDict message - Použiť &GoldenDict správu - - - - History - História - - - - Turn this option on to store history of the translated words - Zapnite túto voľbu pre uchovanie histórie preložených slov - - - - Store &history - Uchovať &históriu - - - - Specify the maximum number of entries to keep in history. - Nastaví maximálny počet položiek pre uchovanie v histórií. - - - - Maximum history size: - Maximálna veľkosť histórie: - - - - History saving interval. If set to 0 history will be saved only during exit. - Interval ukladania histórie. Ak je nastavený na 0, história sa bude ukladať pri ukončení. - - - - Save every - Uložiť každých - - - - minutes - minút - - - - Articles - Články - - - - Turn this option on to always expand optional parts of articles - Zapnite túto voľbu, aby sa vždy vždy rozbalili voliteľné časti článkov - - - - Expand optional &parts - Rozbaliť voliteľné &časti - - - - System default - Systémové nastavenie - - - - - Default - Štandardné - - - - Modern - Moderné - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Hrať cez DirectShow - - - - Changing Language - Zmena jazyka - - - - Restart the program to apply the language change. - Reštartovať program pre aplikovanie zmeny jazyka. - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Obyčajný text - - - - Html - Html - - - - Prefix Match - Zhoda predpony - - - - Unknown - Neznámy - - - - Programs::RunInstance - - - No program name was given. - Názov programu nebol zadaný. - - - - The program has crashed. - Program spadol. - - - - The program has returned exit code %1. - Program vrátil návratový kód %1. - - - - ProgramsModel - - - Enabled - Povolené - - - - Type - Typ - - - - Name - Meno - - - - Command Line - Príkazový riadok - - - - Icon - Ikona - - - - QObject - - - - Article loading error - Chyba načítania článku - - - - - Article decoding error - Chyba dekódovania článku - - - - avformat_alloc_context() failed. - avformat_alloc_context() zlyhal. - - - - av_malloc() failed. - av_malloc() zlyhal. - - - - avio_alloc_context() failed. - avio_alloc_context() zlyhal. - - - - avformat_open_input() failed: %1. - avformat_open_input() zlyhal: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() zlyhal: %1. - - - - Could not find audio stream. - Nie je možné nájsť audio prúd. - - - - Codec [id: %1] not found. - Kodek [id: %1] nebol nájdený. - - - - avcodec_open2() failed: %1. - avcodec_open2() zlyhal: %1. - - - - Cannot find usable audio output device. - Nie je možné nájsť použiteľný audio výstup. - - - - Unsupported sample format. - Nepodporovaný vzorkový formát. - - - - ao_open_live() failed: - ao_open_live() zlyhal: - - - - No driver. - Ovládač neexistuje. - - - - This driver is not a live output device. - Tento ovládač nie je živým výstupný zariadením. - - - - A valid option key has an invalid value. - Platná možnosť kľúča má neplatnú hodnotu. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Nie je možné otvoriť zariadenie: %1, kanály: %2, tempo: %3, bity: %4. - - - - Unknown error. - Neznáma chyba. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() zlyhal. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Vyhľadávanie/filter v slovníku (Ctrl+F) - - - - Quick Search - Rýchle hľadanie - - - - Clear Search - Vymazať hľadanie - - - - ResourceToSaveHandler - - - - ERROR: %1 - CHYBA: %1 - - - - Resource saving error: - Chyba ukladania zdroja: - - - - The referenced resource failed to download. - Referencovaný zdroj sa nepodarilo stiahnuť. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji pre Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji pre Katakana - - - - RussianTranslit - - - Russian Transliteration - Ruský prepis - - - - ScanPopup - - - Dialog - Dialóg - - - word - slovo - - - List Matches (Alt+M) - Zoznam zhôd (Alt + M) - - - - - - - - ... - … - - - - Back - Späť - - - - Forward - Vpred - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Vysloviť slovo (Alt + S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Poslať slovo do hlavného okna (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Zobrazí alebo skryje panel slovníkov - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Pomocou tohto môžete prišpendliť okno, tak že zostane na obrazovke, -môžete mu zmeniť veľkosť, alebo ho inak spravovať. - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Cesta - - - - Name - Meno - - - - Icon - Ikona - - - - Sources - - - Files - Súbory - - - - Paths to search for the dictionary files: - Cesty pre hľadanie slovníkových súborov: - - - - - - - - - &Add... - &Pridať ... - - - - - - - - - &Remove - Odst&rániť - - - - Re&scan now - Znovu &prejsť - - - - Sound Dirs - Zvukové prieč. - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Vytvoriť slovníky zo skupiny zvukových súborov pridaním cesty: - - - - Morphology - Morfológia - - - - Path to a directory with Hunspell/Myspell dictionaries: - Cesta k priečinku s Hunspell/MySpell slovníkmi: - - - - &Change... - &Zmeniť... - - - - Available morphology dictionaries: - Dostupné morfologické slovníky: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Každý morfologický slovník sa zobrazí ako oddelený pomocný slovník, -ktorý poskytuje kľúčové slová pre hľadanie a návrhy hláskovania -pre slová s preklepmi. Aby ste ich mohli použiť, tak si pridajte -vhodné slovníky dole k vhodným skupinám. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikipedia (MediaWiki) stránky: - - - - Websites - Webové stránky - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Akákoľvek webová stránka. Reťazec %GDWORD% bude nahradený hľadaným slovom: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Prípadne môžete použiť %GD1251% pre CP1251, %GDISO1% pre ISO 8859-1. - - - - Programs - Programy - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Akýkoľvek externý program. Reťazec %GDWORD% bude nahradený so slovom z požiadavky. Slovo bude tiež prevedené do štandardného vstupu. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Živá výslovnosť z <a href="http://www.forvo.com/">forvo.com</a>. Stánky umožňujú ľuďom nahrávať a zdieľa výslovnosť slov. V GoldenDicte si ich môžete vypočuť. - - - - Enable pronunciations from Forvo - Povoliť výslovnosť z Forvo - - - - API Key: - API kľúč: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Použitie Forvo aktuálne požaduje API kľúč. Ponechajte toto pole -prázdne pre použitie štandardného kľúča, ktorý sa po čase môže stať nedostupný, -alebo sa na stránkach zaregistrujte a získajte vlastný kľúč. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Získajte svoj vlastný kľuč <a href="http://api.forvo.com/key/">tu</a>, alebo ponechajte prázdne pre použitie štandardného kľúča. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">Tu</span></a> môžete získať vlastný kľúč, alebo ponechajte prázdne pre použitie štandardného.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Alternatívne použite %GD1251% pre CP1251, %GDISO1%...%GDISO16% pre ISO 8859-1...ISO 8859-16 respektíve -%GDBIG5% pre Big-5, %GDBIG5HKSCS% pre Big5-HKSCS, %GDGBK% pre GBK a GB18030, %GDSHIFTJIS% pre Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Akýkoľvek externý program. Reťazec %GDWORD% bude nahradený so slovom požiadavky. Ak taký reťazec nebude nájdený, slovo bude vložené do štandardného vstupu. - - - - Language codes (comma-separated): - Jazykové kódy (oddelené čiarkou): - - - - List of language codes you would like to have. Example: "en, ru". - Zoznam kódov jazykov, ktoré by ste chceli mať. Príklad: "en, sk". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Úplný zoznam jazykových kódov je k dispozícii <a href="http://www.forvo.com/languages-codes/">tu</a>. - - - - Transliteration - Prepis - - - - Russian transliteration - Ruský prepis - - - - Greek transliteration - Grécky prepis - - - - German transliteration - Nemecký prepis - - - - Belarusian transliteration - Bieloruský prepis - - - - Enables to use the Latin alphabet to write the Japanese language - Umožňuje využívať latinku v japončine - - - - Japanese Romaji - Japonské Romaji - - - - Systems: - Systémy: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Najrozšírenejší spôsob japonskej transkripcie, -založený na anglickej fonológií - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Najobvyklejší systém majúci vzťah jedna ku jednej -k systému písania kana. Štandardizovaný ako ISO 3602. - -Zatiaľ nie je implementovaný v GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Na základe Nihon-Shiki systému, ale upravený pre štandardnú modernú japončinu. -Štandardizovaný ako ISO 3602 - -Zatiaľ nie je implementovaný v GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Šlabikáre: - - - - Hiragana Japanese syllabary - Japonský šlabikár Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Japonský šlabikár Katakana - - - - Katakana - Katakana - - - - Text to Speech - Text na reč - - - - (not available in portable version) - (Nie je k dispozícii v prenosnej verzií) - - - - - - Choose a directory - Vyberte si priečinok - - - - - - - - - Confirm removal - Potvrdiť odstránenie - - - - - Remove directory <b>%1</b> from the list? - Odstrániť priečinok <b>%1</b> zo zoznamu? - - - - - - Remove site <b>%1</b> from the list? - Odstrániť stránku <b>%1</b> zo zoznamu? - - - - Remove program <b>%1</b> from the list? - Odobrať program <b>%1</b> zo zoznamu? - - - - StylesComboBox - - - None - Žiadny - - - - TextToSpeechSource - - - Selected voice engines: - Vyberte hlasový systém: - - - - &Add - Prid&ať - - - - &Remove - Odst&rániť - - - - Preferences - Nastavenia - - - - Volume: - Hlasitosť: - - - - Rate: - Tempo: - - - - Preview - Test - - - - Available voice engines: - Dostupné hlasové systémy: - - - - Text to be previewed: - Text na otestovanie: - - - - Type text to be previewed here. - Sem na píšte text na otestovanie. - - - - &Preview - &Test - - - - No TTS voice available - Nie je dostupný žiadny TTS hlas - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Nie je možné nájsť dostupný TTS hlas.<br>Uistite sa, že minimálne jeden TTS systém máte nainštalovaný v počítači. - - - - Confirm removal - Potvrdiť odstránenie - - - - Remove voice engine <b>%1</b> from the list? - Odstrániť hlasový systém <b>%1</b> zo zoznamu? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Napíšte slovo alebo frázu pre vyhľadanie v slovníkoch - - - - Drop-down - Rozbaliť - - - - VoiceEnginesModel - - - Enabled - Povolené - - - - Name - Názov - - - - Id - Id - - - - Icon - Ikona - - - - WebSitesModel - - - Enabled - Povolené - - - - Name - Meno - - - - Address - Adresa - - - - Icon - Ikona - - - - WordFinder - - - Failed to query some dictionaries. - Nepodarilo sa dať požiadavku niektorým slovníkom. - - - - WordList - - - WARNING: %1 - VAROVANIE: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sq_AL.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sq_AL.ts deleted file mode 100644 index a24bbaa6e6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sq_AL.ts +++ /dev/null @@ -1,4713 +0,0 @@ - - - - - About - - - About - Për - - - - GoldenDict dictionary lookup program, version - GoldenDict, programi i fjalorëve, versioni - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Meritat: - - - - Licensed under GNU GPLv3 or later - Licencuar sipas GNU GPLv3 a më i vonë - - - - [Unknown] - [E panjohur] - - - - Based on Qt %1 (%2, %3 bit) - Bazuar në Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - Expand article - Zgjeroj artikullin - - - - Collapse article - Mbledh artikullin - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Nuk gjen përkthimin për <b>%1</b> te grupi <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Nuk gjen përkthimin te grupi <b>%1</b>. - - - - Welcome! - Mirë se erdhët! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Mirë se erdhët te <b>GoldenDict</b>!</h3><p>Për të përdorur programin, së pari vizitoni <b>Editoj|Fjalorët</b> dhe përcaktoni vendndodhjen e direktorisë ku janë skedat e fjalorit, sistemoni faqet për Wikipedia-n ose burimet e tjera, radhitni fjalorët e krijoni grupe me ta.<p>Pastaj jeni gati të studioni fjalët! Kryeni këtë duke përdorur panelin në të majtë, ose duke <a href="Working with popup">parë nga aplikacionet e tjera aktive</a>. <p>Për të porositur programin, kontrolloni parametrat e mundshëm te <b>Editoj|Preferencat</b>. Parametrat kanë këshilla ndihmëse: sigurohuni që t'i lexoni nëse keni dyshime për diçka.<p>Nëse kërkoni ndihmë, keni pyetje, sugjerime ose doni të dini se ç'mendojnë të tjerët për programin, jeni të mirëpritur te <a href="http://goldendict.org/forum/">forumi</a>.<p>Kontrolloni edhe <a href="http://goldendict.org/">faqen në internet</a> për t'u azhurnuar. <p>(c) 2008-2013 Konstantin Isakov. Licencuar sipas GPLv3 a më i vonë. - - - - Working with popup - Working with popup - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Skanimi i jashtëm</h3>Për të parë fjalët nga aplikacionet aktive, së pari aktivizoni <i>"funksionin Skanimi i jashtëm"</i> te <b>Preferencat</b>. Më tej e aktivizoni kurdoherë duke ndezur ikonën e 'Skanimit', ose duke klikuar me të djathtën ikonën te shiriti i sistemit. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Thjesht ndaleni kursorin te fjala që doni të shikoni nga aplikacioni tjetër, dhe do ju shfaqet një dritare me fjalën e treguar. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Thjesht seleksiononi me maus fjalën që doni të shikoni nga aplikacioni tjetër (klikojeni dy herë ose visheni me butonin e shtypur të miut), dhe do ju shfaqet një dritare me fjalën e treguar. - - - - (untitled) - (pa titull) - - - - (picture) - (figurë) - - - - ArticleRequest - - - Expand article - Zgjeroj artikullin - - - - From - Nga - - - - Collapse article - Mbledh artikullin - - - - Query error: %1 - Gabimi i kërkimit: %1 - - - - Close words: - Fjalët e përafërta: - - - - Compound expressions: - Shprehjet e përbëra: - - - - Individual words: - Fjalët e ndara: - - - - ArticleView - - - Select Current Article - Seleksionoj këtë artikullin - - - - Copy as text - Kopjoj tekstin - - - - Inspect - Inspektoj - - - - Resource - Resursi - - - - Audio - Audio - - - - TTS Voice - TTS Voice - - - - Picture - Figura - - - - Definition from dictionary "%1": %2 - Përkufizimi nga fjalori "%1": %2 - - - - Definition: %1 - Përkufizimi: %1 - - - - - The referenced resource doesn't exist. - Nuk ekziston resursi i referuar. - - - - The referenced audio program doesn't exist. - Programi audio i referuar nuk ekziston. - - - - - ERROR: %1 - GABIM: %1 - - - - Save sound - Ruaj tingullin - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Skeda zanore (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Të gjitha skedat (*.*) - - - - Save image - Ruaj imazhin - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Skeda imazhe (*.bmp *.jpg *.png *.tif);;Të gjitha skedat (*.*) - - - - &Open Link - &Hap lidhësin - - - - Video - Video - - - - Video: %1 - Video: %1 - - - - Open Link in New &Tab - Hap lidhësin në fushën e &re - - - - Open Link in &External Browser - Hap lidhësin në &shfletuesin e jashtëm - - - - &Look up "%1" - &Shikoj "%1" - - - - Look up "%1" in &New Tab - Shikoj "%1" në fushën e &re - - - - Send "%1" to input line - Dërgoj "%1"te radha e inputit - - - - - &Add "%1" to history - &Shtoj "%1" te historiku - - - - Look up "%1" in %2 - Shikoj "%1" në %2 - - - - Look up "%1" in %2 in &New Tab - Shikoj "%1" në %2 në fushën e &re - - - - WARNING: FFmpeg Audio Player: %1 - KUJDEs: FFmpeg Audio Player: %1 - - - - Failed to run a player to play sound file: %1 - Dështoi ekzekutimi i lexuesit për skedën zanore: %1 - - - - Failed to create temporary file. - Dështoi krijimi i skedës kohëshkurtër. - - - - Failed to auto-open resource file, try opening manually: %1. - Dështoi vetëhapja e skedës burimore, provojeni vetë: %1. - - - - The referenced resource failed to download. - Dështoi shkarkimi i resursit të referuar. - - - - Save &image... - Ruaj &imazhin... - - - - Save s&ound... - Ruaj t&ingullin... - - - - WARNING: %1 - KUJDES: %1 - - - - Form - Form - - - - about:blank - about:blank - - - - x - x - - - - Find: - Gjej: - - - - - &Previous - &Kaluar - - - - - &Next - &Tjetër - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - Krahasoj &shkrimin - - - - Highlight &all - Theksoj &të gjitha - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Përkthimi bjellorusisht nga latinishtja në cirilik (ortografi klasike) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Përkthimi bjellorusisht nga latinishtja në cirilik (ortografi shkollore) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Përkthimi bjellorusisht (zvogëlon diferencat mes ortografisë klasike dhe shkollore në cirilik) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Fjalëkalimi: - - - - DictGroupWidget - - - Form - Form - - - - Group icon: - Ikona e grupit: - - - - Shortcut: - Shkurtore: - - - - None - Asnjë - - - - From file... - Nga skeda... - - - - Choose a file to use as group icon - Zgjedh skedën për ta përdorur si ikonën e grupit - - - - Images - Imazhe - - - - All files - Tërë skedat - - - - Error - Gabim - - - - Can't read the specified image file. - Nuk lexon skedën e imazhit të përcaktuar. - - - - DictGroupsWidget - - - - - - Dictionaries: - Fjalorët: - - - - Confirmation - Miratimi - - - - Are you sure you want to generate a set of groups based on language pairs? - Jeni i sigurt për prodhimin e disa grupeve sipas gjuhëve të çiftuara? - - - - Unassigned - I pacaktuar - - - - Combine groups by source language to "%1->" - Kombinoj grupet sipas gjuhës së burimit në "%1->" - - - - Combine groups by target language to "->%1" - Kombinoj grupet sipas gjuhës së synuar në "%1->" - - - - Make two-side translate group "%1-%2-%1" - Krijoj grup përkthimi dyanësh "%1-%2-%1" - - - - - Combine groups with "%1" - Kombinoj grupet me "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Skeda tekst (*.txt);;Të gjitha skedat (*.*) - - - - Export headwords... - - - - - Cancel - Anuloj - - - - DictInfo - - - Total articles: - Artikujt totalë: - - - - Translates from: - Përkthen nga: - - - - Total words: - Totali i fjalëve: - - - - Translates to: - Përkthen në: - - - - Open folder - Hap dosjen - - - - Edit dictionary - Editoj fjalorin - - - - Files comprising this dictionary: - Skedat që përbëjnë fjalorin: - - - - Description: - Përshkrimi: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Editoj fjalorin me komandën: -%1 - - - - DictListModel - - - %1 entries - %1 artikuj - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Aktiv - - - - Name - Emri - - - - Address - - - - - Databases - - - - - Strategies - - - - - Icon - Ikona - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - - &Dictionary Bar - &Brezi i fjalorëve - - - - Extended menu with all dictionaries... - Meny e zgjeruar me të gjithë fjalorët... - - - - Edit this group - Editoj grupin - - - - Dictionary info - Info për fjalorin - - - - Dictionary headwords - - - - - Open dictionary folder - Hap dosjen e fjalorit - - - - Edit dictionary - Editoj fjalorin - - - - EditDictionaries - - - &Sources - &Burimet - - - - - &Dictionaries - &Fjalorët - - - - - &Groups - &Grupet - - - - Sources changed - Burimet e ndryshuara - - - - Some sources were changed. Would you like to accept the changes? - Disa burime u ndryshuan. Do i pranoni ndryshimet? - - - - Accept - Pranoj - - - - Cancel - Anuloj - - - - Dictionaries - Fjalorët - - - - ExternalViewer - - - the viewer program name is empty - emri i programit është bosh - - - - FTS::FtsIndexing - - None - Asnjë - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Asnjë - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Asnjë - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Gabim në analizimin e XML: %1 në %2,%3 - - - - Added %1 - Shtoi %1 - - - - by - nga - - - - Male - Mashkull - - - - Female - Femër - - - - from - nga - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Shkon te Editoj|Fjalorët|Burime|Forvo dhe zbaton kodin tonë API për ta zhdukur këtë gabimin. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Anuloj - - - - Help - - - - - GermanTranslit - - - German Transliteration - Përkthimi Gjermanisht - - - - GreekTranslit - - - Greek Transliteration - Përkthimi Greqisht - - - - GroupComboBox - - - Choose a Group (Alt+G) - Zgjedh Grupin (Alt+G) - - - - GroupSelectorWidget - - - Form - Form - - - - Look in - Shikoj në - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Shtoj grupin - - - - Give a name for the new group: - Vini emrin e grupit të ri: - - - - Rename group - Riemërtoj grupin - - - - Give a new name for the group: - Vini emrin e ri të grupit: - - - - Remove group - Heq grupin - - - - Are you sure you want to remove the group <b>%1</b>? - Jeni i sigurt për heqjen e grupit <b>%1</b>? - - - - - Remove all groups - Heq tërë grupet - - - - Are you sure you want to remove all the groups? - Jeni i sigurt për heqjen e të gjitha grupeve? - - - - Dictionaries available: - Fjalorët e gatshëm: - - - - Add selected dictionaries to group (Ins) - Shtoj fjalorët e përzgjedhur te grupi (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Heq fjalorët e përzgjedhur nga grupi (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Grupet: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Krijoj grupin e ri të fjalorëve - - - - &Add group - &Shtoj grupin - - - - Create language-based groups - Krijoj grupet sipas gjuhës - - - - Auto groups - Autogrupoj - - - - Rename current dictionary group - Riemërtoj grupin aktual të fjalorëve - - - - Re&name group - Ri&emërtoj grupin - - - - Remove current dictionary group - Heq grupin aktual të fjalorëve - - - - &Remove group - &Heq grupin - - - - Remove all dictionary groups - Heq tërë grupet e fjalorëve - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Kapini e lëshojini fjalorët midis grupeve, lëvizini, radhitini duke përdorur mausin. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Pas - - - - Forward - Para - - - - Zoom In - Zmadhoj - - - - Zoom Out - Zvogëloj - - - - Normal Size - Përmasat normale - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Fshij përzgjedhjen - - - - Copy Selected - Kopjoj përzgjedhjen - - - - History: - Historiku: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Masa e historikut: %1 njësi jashtë maksimumit %2 - - - - Hunspell - - - Spelling suggestions: - Sugjerimet e rrokjezimit: - - - - %1 Morphology - %1 Morfologjia - - - - HunspellDictsModel - - - Enabled - Aktiv - - - - Name - Emri - - - - Initializing - - - Please wait... - Lutemi të prisni... - - - - - Please wait while indexing dictionary - Prisni, fjalori po indeksohet - - - - GoldenDict - Initializing - GoldenDict - Nis - - - - Dictionary Name - Emri i fjalorit - - - - Language - - - Afar - Afar - - - - Abkhazian - Abkhazian - - - - Avestan - Avestan - - - - Afrikaans - Afrikanisht - - - - Akan - Аkan - - - - Amharic - Amharic - - - - Aragonese - Aragonese - - - - Arabic - Arabisht - - - - Assamese - Ассамский - - - - Avaric - Аварский - - - - Aymara - Аймарский - - - - Azerbaijani - Азербайджанский - - - - Bashkir - Башкирский - - - - Belarusian - Bjellorusisht - - - - Bulgarian - Bullgarisht - - - - Bihari - Бихарский - - - - Bislama - Бислама - - - - Bambara - Бамана - - - - Bengali - Бенгали - - - - Tibetan - Тибетский - - - - Breton - Бретонский - - - - Bosnian - Боснийский - - - - Catalan - Каталонский - - - - Chechen - Чеченский - - - - Chamorro - Чаморро - - - - Corsican - Корсиканский - - - - Cree - Кри - - - - Czech - Çekisht - - - - Church Slavic - Церковно-славянский - - - - Chuvash - Чувашский - - - - Welsh - Уэльский - - - - Danish - Danisht - - - - German - Gjermanisht - - - - Divehi - Мальдивский - - - - Dzongkha - Дзонгка (Бутан) - - - - Ewe - Эве - - - - Greek - Greqisht - - - - English - Anglisht - - - - Esperanto - Эсперанто - - - - Spanish - Spanjisht - - - - Estonian - Estonisht - - - - Basque - Баскский - - - - Persian - Persisht - - - - Fulah - Фула - - - - Finnish - Finlandisht - - - - Fijian - Фиджи - - - - Faroese - Фарерский - - - - French - Frëngjisht - - - - Western Frisian - Фризийский - - - - Irish - Irlandisht - - - - Scottish Gaelic - Галльский (Шотландия) - - - - Galician - Галицийский - - - - Guarani - Гуарани - - - - Gujarati - Гуджарати - - - - Manx - Манкс - - - - Hausa - Хауса - - - - Hebrew - Hebraisht - - - - Hindi - Хинди - - - - Hiri Motu - Хири-моту - - - - Croatian - Kroatisht - - - - Haitian - Гаитянский - - - - Hungarian - Hungarisht - - - - Armenian - Armenisht - - - - Herero - Эреро - - - - Interlingua - Интерлингва - - - - Indonesian - Indonezisht - - - - Interlingue - Окциденталь - - - - Igbo - Ибо - - - - Sichuan Yi - Сычуаньский И - - - - Inupiaq - Инупиак - - - - Ido - Идо - - - - Icelandic - Islandisht - - - - Italian - Italisht - - - - Inuktitut - Инуктитут - - - - Japanese - Japonisht - - - - Javanese - Яванский - - - - Georgian - Gjeorgjisht - - - - Kongo - Конго - - - - Kikuyu - Кикую - - - - Kwanyama - Кваньяма - - - - Kazakh - Казахский - - - - Kalaallisut - Калаалисут - - - - Khmer - Кхмерский - - - - Kannada - Каннада - - - - Korean - Korean - - - - Kanuri - Канури - - - - Kashmiri - Кашмирский - - - - Kurdish - Курдский - - - - Komi - Коми - - - - Cornish - Корнуольский - - - - Kirghiz - Киргизский - - - - Latin - Latinisht - - - - Luxembourgish - Люксембургский - - - - Ganda - Ганда - - - - Limburgish - Лимбуржский - - - - Lingala - Лингала - - - - Lao - Лао - - - - Lithuanian - Lituanisht - - - - Luba-Katanga - Луба-Катанга - - - - Latvian - Латышский - - - - Malagasy - Мальгашский - - - - Marshallese - Маршалльский - - - - Maori - Маори - - - - Macedonian - Maqedonisht - - - - Malayalam - Малайялам - - - - Mongolian - Mongolisht - - - - Marathi - Марати - - - - Malay - Малайский - - - - Maltese - Мальтийский - - - - Burmese - Бирманский - - - - Nauru - Науру - - - - Norwegian Bokmal - Норвежский букмол - - - - North Ndebele - Сев. Ндебеле - - - - Nepali - Непальский - - - - Ndonga - Ндонга - - - - Dutch - Holandisht - - - - Norwegian Nynorsk - Новонорвежский (нюнорск) - - - - Norwegian - Norvegjisht - - - - South Ndebele - Юж. Ндебеле - - - - Navajo - Навахо - - - - Chichewa - Чичева - - - - Occitan - Французский (диалект Occitan) - - - - Ojibwa - Оджибва - - - - Oromo - Оромо - - - - Oriya - Ория - - - - Ossetian - Осетинский - - - - Panjabi - Панджаби - - - - Pali - Пали - - - - Polish - Polonisht - - - - Pashto - Пуштунский - - - - Portuguese - Portugalisht - - - - Quechua - Кечуа - - - - Raeto-Romance - Романшский - - - - Kirundi - Рунди - - - - Romanian - Rumanisht - - - - Russian - Rusisht - - - - Kinyarwanda - Киньяруанда - - - - Sanskrit - Sanskritisht - - - - Sardinian - Сардинийский - - - - Sindhi - Синдхи - - - - Northern Sami - Северное Саами - - - - Sango - Санго - - - - Serbo-Croatian - Serbokroatisht - - - - Sinhala - Сингальский - - - - Slovak - Sllovakisht - - - - Slovenian - Sllovenisht - - - - Samoan - Самоа - - - - Shona - Схона - - - - Somali - Сомалийский - - - - Albanian - Shqip - - - - Serbian - Serbisht - - - - Swati - Swati - - - - Southern Sotho - Souther Sotho - - - - Sundanese - Sundanisht - - - - Swedish - Suedisht - - - - Swahili - Swahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tajik - - - - Thai - Tailandisht - - - - Tigrinya - Tigrinya - - - - Turkmen - Turkmen - - - - Tagalog - Тагалог - - - - Tswana - Тсвана - - - - Tonga - Тонга - - - - Turkish - Turqisht - - - - Tsonga - Тсонга - - - - Tatar - Татарский - - - - Twi - Тви - - - - Tahitian - Таитянский - - - - Uighur - Уйгурский - - - - Ukrainian - Ukrainisht - - - - Urdu - Урду - - - - Uzbek - Узбекский - - - - Venda - Венда - - - - Vietnamese - Vietnamisht - - - - Volapuk - Волапюк - - - - Walloon - Валлонский - - - - Wolof - Уолоф - - - - Xhosa - Кшоса - - - - Yiddish - Идиш - - - - Yoruba - Йоруба - - - - Zhuang - Чжуанг - - - - Chinese - Kinezisht - - - - Zulu - Zulu - - - - Lojban - Lojban - - - - Traditional Chinese - Kinezisht tradicionale - - - - Simplified Chinese - Kinezisht e thjeshtuar - - - - Other - Tjetër - - - - Other Simplified Chinese dialects - Dialekte të tjera të kinezishtes së thjeshtuar - - - - Other Traditional Chinese dialects - Dialekte të tjera të kinezishtes tradicionale - - - - Other Eastern-European languages - Gjuhë të tjera evropiano-lindore - - - - Other Western-European languages - Gjuhë të tjera evropiano-perëndimore - - - - Other Russian languages - Gjuhë të tjera ruse - - - - Other Japanese languages - Gjuhë të tjera japoneze - - - - Other Baltic languages - Gjuhë të tjera baltike - - - - Other Greek languages - Gjuhë të tjera greke - - - - Other Korean dialects - Dialekte të tjera koreane - - - - Other Turkish dialects - Dialekte të tjera turke - - - - Other Thai dialects - Dialekte të tjera tajlandeze - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Gabim në ngarkimin e fjalorëve - - - - Main - - - Error in configuration file. Continue with default settings? - Gabim në skedën e konfiguracionit.Do vijoni me parametrat standardë? - - - - MainWindow - - - Back - Pas - - - - Forward - Para - - - - Scan Popup - Skanimi i jashtëm - - - - Show &Main Window - Shfaq dritaren &kryesore - - - - - &Quit - &Dal - - - - Loading... - Hap... - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Skip This Release - Kaloj këtë versionin - - - - You have chosen to hide a menubar. Use %1 to show it back. - Zgjodhët të fshehni menynë.Përdorni %1 për ta rishfaqur. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Sistemimi i faqes - - - - No printer is available. Please install one first. - Nuk ka asnjë printer. Lutemi e instaloni më parë. - - - - Print Article - Printoj artikullin - - - - Article, Complete (*.html) - Artikull, i plotë (*.html) - - - - Article, HTML Only (*.html) - Artikull, vetëm HTML (*.html) - - - - Save Article As - Ruaj artikullin si - - - - Error - Gabim - - - - Can't save article: %1 - Nuk ruan artikullin: %1 - - - - %1 dictionaries, %2 articles, %3 words - %1 fjalorë, %2 artikuj, %3 fjalë - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Dështoi nisja e mekanizmit monitorues të tasteve kryesore.<br>Sigurohuni që XServer e ka të ndezur zgjatimin RECORD. - - - - New Release Available - Ka dalë version i ri - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Versioni <b>%1</b> për GoldenDict është gati për t'u shkarkuar.<br>Klikoni <b>Shkarkoj</b>, që të hapni faqen e shkarkimit. - - - - Download - Shkarkoj - - - - - Look up in: - Shikoj në: - - - - &Menubar - Brezi i &menysë - - - - Found in Dictionaries: - Gjetjet në fjalorë: - - - - Pronounce Word (Alt+S) - Shqiptoj fjalën (Alt+S) - - - - Show Names in Dictionary &Bar - Tregoj emrat e &fjalorëve - - - - Show Small Icons in &Toolbars - Tregoj ikonat e &vogla - - - - &Navigation - &Lundrimi - - - - Zoom In - Zmadhoj - - - - Zoom Out - Zvogëloj - - - - Normal Size - Përmasat normale - - - - Words Zoom In - Zmadhoj fjalët - - - - Words Zoom Out - Zvogëloj fjalët - - - - Words Normal Size - Fjalët në përmasat normale - - - - Close current tab - Mbyll fushën - - - - Close all tabs - Mbyll të gjitha fushat - - - - Close all tabs except current - Mbyll të gjitha fushat veç kësaj - - - - Look up: - Shikoj: - - - - All - Të gjithë - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - Accessibility API është joaktiv - - - - Saving article... - Ruan artikullin... - - - - The main window is set to be always on top. - Dritarja kryesore qëndron gjithmonë në krye. - - - - Import history from file - Importoj historikun nga skeda - - - - Import error: invalid data in file - Gabim importi: skedë me të dhëna të pasakta - - - - History import complete - Përfundoi importi i historikut - - - - Import error: - Gabim importi: - - - - Dictionary info - Info për fjalorin - - - - Dictionary headwords - - - - - Open dictionary folder - Hap dosjen e fjalorit - - - - Edit dictionary - Editoj fjalorin - - - - Opened tabs - Fushat e hapura - - - - Open Tabs List - Hap listën e fushave - - - - (untitled) - (pa titull) - - - - %1 - %2 - %1 - %2 - - - - &Hide - &Fsheh - - - - Export history to file - Eksportoj historikun në skedë - - - - - Text files (*.txt);;All files (*.*) - Skeda tekst (*.txt);;Të gjitha skedat (*.*) - - - - History export complete - Përfundoi eksporti i historikut - - - - Export error: - Gabim eksporti: - - - - - Welcome! - Mirë se erdhët! - - - - &File - &Skedar - - - - &Edit - &Editoj - - - - &Help - &Ndihmë - - - - &Preferences... - &Preferencat... - - - - F2 - F2 - - - - &View - &Pamje - - - - &Zoom - &Zmadhimi - - - - H&istory - H&istorik - - - - &Dictionaries... - &Fjalorët... - - - - F3 - F3 - - - - &Search Pane - Paneli i &kërkimit - - - - Search - - - - - &Results Navigation Pane - Paneli i &rezultateve - - - - &History Pane - Paneli i &historikut - - - - F4 - F4 - - - - &Homepage - &Faqja zyrtare - - - - &About - &Për - - - - About GoldenDict - Për GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Mbyll aplikacionin - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forumi - - - - &Close To Tray - &Mbyll në shirit - - - - Minimizes the window to tray - Minimizon dritaren në shiritin e sistemit - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Ruaj artikullin - - - - Save Article - Ruaj artikullin - - - - &Print - &Printoj - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Sistem&oj faqen - - - - Print Pre&view - Parashikoj &shtypjen - - - - &Rescan Files - &Riskanoj skedat - - - - &New Tab - &Fushë e re - - - - &Always on Top - &Gjithmonë në krye - - - - Always on Top - Gjithmonë në krye - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Butoni i menysë - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Pastroj - - - - New Tab - Fushë e re - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Dosja e &konfiguracionit - - - - - &Show - &Shfaq - - - - Ctrl+H - Ctrl+H - - - - &Export - &Eksportoj - - - - &Import - &Importoj - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Skeda e fjalorit u manipulua ose u dëmtua - - - - Failed loading article from %1, reason: %2 - Dështoi hapja e artikullit nga %1, arsyeja: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Gabim në analizimin e XML: %1 në %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Gabim në analizimin e XML: %1 në %2,%3 - - - - MediaWikisModel - - - Enabled - Aktiv - - - - Name - Emri - - - - Address - Аdresa - - - - Icon - Ikona - - - - OrderAndProps - - - Form - Form - - - - Dictionary order: - Radha e fjalorëve: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Fjalorët joaktivë (e çaktivizuar): - - - - Dictionary information - Informacion për fjalorin - - - - Name: - Emri: - - - - Total articles: - Artikujt totalë: - - - - Total words: - Totali i fjalëve: - - - - Translates from: - Përkthen nga: - - - - Translates to: - Përkthen në: - - - - Description: - Përshkrimi: - - - - Files comprising this dictionary: - Skedat që përbëjnë fjalorin: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Ndreqeni radhën duke kapur e lëshuar elementet. Kalojini fjalorët te grupi joaktiv për t'i çaktivizuar. - - - - Sort by name - Radhit sipas emrit - - - - Sort by languages - Radhit sipas gjuhëve - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Shtegu - - - - Recursive - Brendësia - - - - Preferences - - - Preferences - Preferencat - - - - &Interface - &Grafika - - - - Tabbed browsing - Shfletimi me fusha - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalisht, kur hapet një fushë e re kaloni menjëherë te ajo. -Por, kur e ndez këtë, fushat e reja hapen pa kaluar te to. - - - - Open new tabs in background - Hap fushat e reja në sfond - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Kur e ndez, fushat e reja hapen direkt pas aktuales, -asaj aktive. Përndryshe ato i shtohen më të fundit. - - - - Open new tabs after the current one - Hap fushat e reja pas aktuales - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Kur e aktivizon, në shiritin e sistemit shfaqet një ikonë që mund të përdoret -për të hapur dritaren kryesore dhe për të kryer detyra të tjera. - - - - Enable system tray icon - Aktivizoj ikonën në shiritin e sistemit - - - - With this on, the application starts directly to system tray without showing -its main window. - Kur e ndez, aplikacioni nis direkt në shiritin e sistemit, pa e shfaqur dritaren kryesore. - - - - Start to system tray - Nis në shiritin e sistemit - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Kur e ndez, dritarja kryesore e aplikacionit nuk mbyllet por do të fshehet. - - - - Close to system tray - Mbyll në shiritin e sistemit - - - - Startup - Nisja - - - - Start with system - Nis me sistemin - - - - Interface language: - Gjuha e grafikës: - - - - Display style: - Stili i pamjes: - - - - Double-click translates the word clicked - Përkthej fjalën me dy klikime - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Zgjedh nëse mënyra standarde e skanimit të jashtëm është ndezur apo jo. -Kur e zgjedh, programi nis gjithmonë me skanimin e jashtëm aktiv. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normalisht, skanimi aktivizohet duke mbajtur shtypur tastet -e zgjedhura gjatë përzgjedhjes së fjalës. Kur e aktivizon, -tastet e zgjedhura mund të shtypen shkurt pas përzgjedhjes. - - - - Hotkeys - Tastet kryesore - - - - Use the following hotkey to show or hide the main window: - Përdor një tast për të shfaqur a fshehur dritaren kryesore: - - - - Use the following hotkey to translate a word from clipboard: - Përdor një tast për të përkthyer fjalën në kujtesën e kompjuterit: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Tastet kryesore punojnë përgjithësisht në çdo program, për aq kohë sa GoldenDict vepron në sfond. - - - - &Scan Popup - &Skanimi i jashtëm - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Zgjedh a duhet shfaqur brezi i fushave kur është hapur vetëm një fushë. - - - - Hide single tab - Fsheh fushën e vetme - - - - Ctrl-Tab navigates tabs in MRU order - Kaloj fushat me Ctrl+Tab sipas rendit MRU - - - - Automatically starts GoldenDict after operation system bootup. - Nis automatikisht GoldenDict pas hapjes së sistemit. - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normalisht, shtypja e tastit ESC e çon fokusin te vija e përkthimit. Kur e ndez këtë, ai fsheh dritaren kryesore. - - - - ESC key hides main window - Tasti ESC fsheh dritaren kryesore - - - - Turn this option on if you want to select words by single mouse click - Aktivizoni opsionin nëse doni të seleksiononi fjalët me një klikim - - - - Select word by single click - Seleksionoj fjalën me një klikim - - - - Add-on style: - Stili i shtesave: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Ndreq vlerën për të shmangur menytë e gjata të kontekstit. - - - - Context menu dictionaries limit: - Limiti i fjalorëve në meny: - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Kur e aktivizon, çdo herë që e drejtoni mausin në ndonjë fjalë mbi ekran (Windows) -ose kur seleksiononi një fjalë me mausin (Linux), ju shfaqet një dritare e jashtme -me përkthimin. Mund të ndizet e të fiket në ikonën e dritares kryesore -ose nga shiriti i sistemit. - - - - Enable scan popup functionality - Aktivizoj skanimin e jashtëm - - - - Start with scan popup turned on - Nis me skanuesin e ndezur - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Kur e aktivizon, skanimi do funksionojë vetëm kur tërë tastet e përzgjedhura -janë në gjendjen e shtypur. - - - - Only show popup when all selected keys are kept pressed: - Shfaq skanuesin vetëm kur shtyp tastet e përzgjedhura: - - - - Left Ctrl only - Vetëm Ctrl majtas - - - - Left Ctrl - Ctrl majtas - - - - Right Shift only - Vetëm Shift djathtas - - - - Right Shift - Shift djathtas - - - - Alt key - Tasti Alt - - - - Alt - Alt - - - - Ctrl key - Tasti Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Vetëm Alt majtas - - - - Left Alt - Alt majtas - - - - Shift key - Tasti Shift - - - - Shift - Shift - - - - Right Alt only - Vetëm Alt djathtas - - - - Right Alt - Alt djathtas - - - - Right Ctrl only - Vetëm Ctrl djathtas - - - - Right Ctrl - Ctrl djathtas - - - - Left Shift only - Vetëm Shift majtas - - - - Left Shift - Shift majtas - - - - Windows key or Meta key - Tasti Windows ose Meta - - - - Win/Meta - Win/Meta - - - - Keys may also be pressed afterwards, within - Tastet mund të shtypen edhe më pas, brenda - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Për të shmangur përzgjedhjet false, tastet monitorohen vetëm -kur e kryen përzgjedhjen brenda një sasie të kufizuar sekondash, -e përcaktuar këtu. - - - - secs - sek - - - - Send translated word to main window instead of to show it in popup window - Dërgon fjalën e përkthyer te dritarja kryesore, jo te dritarja kërcyese - - - - Send translated word to main window - Dërgoj fjalën e përkthyer te dritarja kryesore - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Shënim: Duket sikur po punoni me një version të X.Org XServer që e ka të prishur zgjatimin RECORD. Ka mundësi që tastet kryesore në GoldenDict të mos funksionojnë. Kjo duhet ndrequr te vetë serveri. Ju lutem, raportojeni </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">këtë të metë</span></a><span style=" color:#ff0000;"> dhe lini një koment nëse doni.</span></p></body></html> - - - - &Audio - &Audio - - - - Pronunciation - Shqiptimi - - - - Auto-pronounce words in main window - Autoshqiptoj fjalët në dritaren kryesore - - - - Auto-pronounce words in scan popup - Autoshqiptoj fjalët e skanuara - - - - Playback - Riprodhimi - - - - Play audio files via FFmpeg(libav) and libao - Riprodhon skedat zanore me FFmpeg(libav) dhe libao - - - - Use internal player - Përdor lexuesin e brendshëm - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Kur e ndez, artikujt e mëdhenj do të mblidhen automatikisht. - - - - Collapse articles more than - Mbledh artikujt me më shumë se - - - - Articles longer than this size will be collapsed - Artikujt mbi këtë përmasë do të mblidhen - - - - symbols - simbole - - - - Use any external program to play audio files - Riprodhon skedat zanore me një program tjetër - - - - Use external program: - Përdor programin e jashtëm: - - - - &Network - &Rrjeti - - - - Enable if you wish to use a proxy server -for all program's network requests. - Aktivizojeni kur dëshironi të përdorni një server proxy -për tërë kërkesat e programit për internet. - - - - Use proxy server - Përdor server proxy - - - - Type: - Lloji: - - - - Host: - Hosti: - - - - Port: - Porti: - - - - User: - Përdoruesi: - - - - Password: - Fjalëkalimi: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Kur e aktivizon, GoldenDict bllokon shumicën e reklamave duke mohuar -përmbajtjen (imazhe, korniza) jashtë faqes që shfleton. Nëse ndonjë -faqe shfaq probleme prej kësaj, çaktivizojeni. - - - - Disallow loading content from other sites (hides most advertisements) - Mohoj përmbajtjen nga faqet e tjera (fsheh shumicën e reklamave) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Kur e aktivizon, mund të dëgjohen shqiptimet nga fjalorët -online që varen nga Flash ose spinat e tjera të internetit. -Spina duhet instaluar që të funksionojë. - - - - Enable web plugins - Aktivizoj spinat e internetit - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Disa faqe e njohin GoldenDict me anë të kokëve HTTP, dhe i bllokojnë kërkesat. -Ky opsion e anashkalon problemin. - - - - Do not identify GoldenDict in HTTP headers - Nuk identifikoj GoldenDict në kokët HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Kur e aktivizon, programi verifikon periodikisht kur del një version i ri, -i azhurnuar, i GoldenDict. Atëherë, programi informon rreth tij dhe -kërkon ta shkarkojë. - - - - Check for new program releases periodically - Verifikoj periodikisht versionet e reja të programit - - - - Ad&vanced - Av&ancuar - - - - ScanPopup extra technologies - Teknologji shtesë për Skanimin e jashtëm - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Përdorni teknologjinë IAccessibleEx për të gjetur fjalën nën kursor. -Teknologjia punon vetëm me disa programe që e garantojnë atë -(për shembull, Internet Explorer 9). -Nuk keni pse ta aktivizoni nëse nuk i përdorni këto programe. - - - - Use &IAccessibleEx - Përdor &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Përdorni teknologjinë UI Automation për të gjetur fjalën nën kursor. -Teknologjia punon vetëm me disa programe që e garantojnë atë. -Nuk keni pse ta aktivizoni nëse nuk i përdorni këto programe. - - - - Use &UIAutomation - Përdor &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Përdorni mesazhet e GoldenDict për të gjetur fjalën nën kursor. -Teknologjia punon vetëm me disa programe që e garantojnë atë. -Nuk keni pse ta aktivizoni nëse nuk i përdorni këto programe. - - - - Use &GoldenDict message - Përdor mesazhet e &GoldenDict - - - - History - Historiku - - - - Turn this option on to store history of the translated words - Kur e ndez, depozitohet historiku i fjalëve të përkthyera. - - - - Store &history - Depozitoj &historikun - - - - Specify the maximum number of entries to keep in history. - Specifikoni numrin maksimal të njësive që ruhen në historik. - - - - Maximum history size: - Masa maksimale e historikut: - - - - History saving interval. If set to 0 history will be saved only during exit. - Intervali i ruajtjes së historikut. Kur vendoset 0, historiku ruhet vetëm gjatë mbylljes së programit. - - - - Save every - Ruaj çdo - - - - minutes - minuta - - - - Articles - Artikujt - - - - Turn this option on to always expand optional parts of articles - Kur e ndez, pjesët fakultative të artikujve zgjerohen gjithmonë. - - - - Expand optional &parts - Zgjeroj &pjesët fakultative - - - - System default - Standardi i sistemit - - - - - Default - Standard - - - - Modern - Modern - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes Blu - - - - Changing Language - Ndryshimi i Gjuhës - - - - Restart the program to apply the language change. - Riniseni programin për të zbatuar ndryshimin e gjuhës. - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Tekst i thjeshtë - - - - Html - Html - - - - Prefix Match - Krahasoj parashtesën - - - - Unknown - E panjohur - - - - Programs::RunInstance - - - No program name was given. - Nuk u dha emri i programit. - - - - The program has crashed. - Programi u prish. - - - - The program has returned exit code %1. - Programi ktheu kodin e daljes %1. - - - - ProgramsModel - - - Enabled - Aktiv - - - - Type - Lloji - - - - Name - Emri - - - - Command Line - Vija e komandës - - - - Icon - Ikona - - - - QObject - - - - Article loading error - Gabim në hapjen e artikullit - - - - - Article decoding error - Gabim në deshifrimin e artikullit - - - - avformat_alloc_context() failed. - Dështoi avformat_alloc_context(). - - - - av_malloc() failed. - Dështoi av_malloc(). - - - - avio_alloc_context() failed. - Dështoi avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Dështoi avformat_open_input(): %1. - - - - avformat_find_stream_info() failed: %1. - Dështoi avformat_find_stream_info(): %1. - - - - Could not find audio stream. - Nuk gjen rrymën audio. - - - - Codec [id: %1] not found. - Nuk gjen kodekun [id: %1]. - - - - avcodec_open2() failed: %1. - Dështoi avcodec_open2(): %1. - - - - Cannot find usable audio output device. - Nuk gjen pajisje output të përdorshme për zërin. - - - - Unsupported sample format. - Format i pagarantuar. - - - - ao_open_live() failed: - Dështoi ao_open_live(): - - - - No driver. - Nuk ka drejtues. - - - - This driver is not a live output device. - Drejtuesi nuk është pajisje output e drejtërdrejtë. - - - - A valid option key has an invalid value. - Një tast i duhur ka vlerë të pasaktë. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Nuk mund të hapë pajisjen: %1, kanalet: %2, raporti: %3, bitet: %4. - - - - Unknown error. - Gabim i panjohur. - - - - avcodec_alloc_frame() failed. - Dështoi avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Kërkoj/filtroj fjalorët (Ctrl+F) - - - - Quick Search - Kërkim i shpejtë - - - - Clear Search - Pastroj kërkimin - - - - ResourceToSaveHandler - - - - ERROR: %1 - GABIM: %1 - - - - Resource saving error: - Gabim në ruajtjen e resursit: - - - - The referenced resource failed to download. - Dështoi shkarkimi i resursit të referuar. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hepburn Romaji për Hiragana - - - - Hepburn Romaji for Katakana - Hepburn Romaji për Katakana - - - - RussianTranslit - - - Russian Transliteration - Përkthimi Rusisht - - - - ScanPopup - - - Dialog - Dialog - - - - Back - Pas - - - - Forward - Para - - - - Pronounce Word (Alt+S) - Shqiptoj Fjalën (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Dërgoj fjalën te dritarja kryesore (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Shfaq ose fsheh brezin e fjalorit - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Këtë e përdor për të piketuar dritaren që të qëndrojë mbi ekran, -që të marrë një përmasë të re ose për mënyrat e tjera. - - - - - - - - ... - ... - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Shtegu - - - - Name - Emri - - - - Icon - Ikona - - - - Sources - - - Text to Speech - Tekst në tinguj - - - - (not available in portable version) - (nuk mundësohet në versionin portabël) - - - - - - Choose a directory - Zgjedh direktorinë - - - - - - - - - Confirm removal - Miratoj heqjen - - - - - Remove directory <b>%1</b> from the list? - Do e hiqni direktorinë <b>%1</b> nga lista? - - - - - - Remove site <b>%1</b> from the list? - Do e hiqni faqen <b>%1</b> nga lista? - - - - Remove program <b>%1</b> from the list? - Do e hiqni programin <b>%1</b> nga lista? - - - - Files - Skeda - - - - Paths to search for the dictionary files: - Shtigjet ku do të kërkohen skedat e fjalorëve: - - - - - - - - - &Add... - &Shtoj... - - - - - - - - - &Remove - &Heq - - - - Re&scan now - Ri&skanoj tani - - - - Sound Dirs - Direktoritë audio - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Krijoni fjalorë me disa skeda zanore duke e shtuar shtegun këtu: - - - - Morphology - Morfologjia - - - - Path to a directory with Hunspell/Myspell dictionaries: - Shtegu i direktorisë me fjalorët Hunspell/Myspell: - - - - &Change... - &Ndryshoj... - - - - Available morphology dictionaries: - Fjalorët morfologjikë të gatshëm: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Çdo fjalor morfologjik duket si një fjalor i dytë -ndihmës që jep fjalët rrënjë për kërkimet dhe -sugjeron rrokjet për fjalët e shkruara gabim. -Shtojini fjalorët e duhur te fundi i grupeve -të caktuara për t'i përdorur. - - - - Websites - Faqet në internet - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Çdo faqe në internet. Radha %GDWORD% do zëvendësohet me fjalën e kërkuar: - - - - Programs - Programet - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Shqiptimet direkte nga <a href="http://www.forvo.com/">forvo.com</a>. Kjo faqe lejon individët të regjistrojnë shqiptimet e fjalëve dhe t'i ndajnë ato me të tjerët. Mund të dëgjohen në GoldenDict. - - - - Enable pronunciations from Forvo - Aktivizoj shqiptimet nga Forvo - - - - API Key: - Кodi API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Tani, përdorimi i Forvo-s kërkon një kod API. Lëreni bosh fushën për të përdorur atë standard, -që mund të mos lejohet në të ardhmen, ose regjistrohuni te faqja për të marrë kodin tuaj. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Merrni kodin tuaj <a href="http://api.forvo.com/key/">këtu</a>, ose lëreni bosh për të përdorur standardin. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Ndryshe, përdorni %GD1251% për CP1251, %GDISO1%...%GDISO16% për ISO 8859-1...ISO 8859-16 përkatësisht, -%GDBIG5% për Big-5, %GDBIG5HKSCS% për Big5-HKSCS, %GDGBK% për GBK and GB18030, %GDSHIFTJIS% për Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Çdo program i jashtëm. Vargu %GDWORD% do zëvendësohet me fjalën e kërkuar. Kur vargu nuk shkruhet, fjala jepet si input standard. - - - - Language codes (comma-separated): - Kodet e gjuhëve (të ndara me presje): - - - - List of language codes you would like to have. Example: "en, ru". - Lista e kodeve të gjuhëve që doni të keni. Shembull: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Lista e plotë e kodeve të gjuhëve jepet <a href="http://www.forvo.com/languages-codes/">këtu</a>. - - - - Transliteration - Përkthimi - - - - Russian transliteration - Përkthimi Rusisht - - - - Greek transliteration - Përkthimi Greqisht - - - - German transliteration - Përkthimi Gjermanisht - - - - Belarusian transliteration - Përkthimi bjellorusisht - - - - Enables to use the Latin alphabet to write the Japanese language - Lejon përdorimin e alfabetit latin për të shkruar japonishten - - - - Japanese Romaji - Japonishtja Romaji - - - - Systems: - Sistemi: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Metoda më e përhapur e tejshkrimit të japonishtes, -e bazuar në fonologjinë japoneze - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Sistemi më i rregullt, që ka rrotullimin e veçantë për sistemet e shkrimit kana. -I standardizuar si ISO 3602. - -Akoma i pafutur në GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Bazohet në sistemin Nihon-shiki, por është modifikuar për japonishten standarde moderne. -I standardizuar si ISO 3602. - -Akoma i pafutur në GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Rrokjezimi: - - - - Hiragana Japanese syllabary - Rrokjezimi i Japonishtes Hiragana - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Rrokjezimi i Japonishtes Katakana - - - - Katakana - Katakana - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Faqet në Wikipedia (MediaWiki): - - - - StylesComboBox - - - None - Asnjë - - - - TextToSpeechSource - - - Selected voice engines: - Motorët e përzgjedhur të zërit: - - - - &Add - &Shtoj - - - - &Remove - &Heq - - - - Preferences - Preferencat - - - - Volume: - Volumi: - - - - Rate: - Vlerësimi: - - - - Preview - Parashikoj - - - - Available voice engines: - Motorët e gatshëm të zërit: - - - - Text to be previewed: - Teksti që parashikohet: - - - - Type text to be previewed here. - Shkruani tekstin që do të parashikohet. - - - - &Preview - &Parashikoj - - - - No TTS voice available - Nuk ka zë TTS - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Nuk gjen zërin TTS të gatshëm. <br>Lutemi të siguroheni që keni instaluar të paktën një motor TTS në kompjuter. - - - - Confirm removal - Miratoj heqjen - - - - Remove voice engine <b>%1</b> from the list? - Do e hiqni motorin e zërit <b>%1</b> nga lista? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Kërkoni një fjalë a frazë në fjalor - - - - Drop-down - Ul poshtë - - - - VoiceEnginesModel - - - Enabled - Aktiv - - - - Name - Emri - - - - Id - Id - - - - Icon - Ikona - - - - WebSitesModel - - - Enabled - Aktiv - - - - Name - Emri - - - - Address - Adresa - - - - Icon - Ikona - - - - WordFinder - - - Failed to query some dictionaries. - Dështoi kërkimi në disa fjalorë. - - - - WordList - - - WARNING: %1 - KUJDES: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sr_SR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sr_SR.ts deleted file mode 100644 index f4e8169a63..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sr_SR.ts +++ /dev/null @@ -1,4858 +0,0 @@ - - - - - About - - - About - О програму - - - - GoldenDict dictionary lookup program, version - Речник GoldenDict, издање - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © Константин Исаков (ikm@goldendict.org), 2008-2011 {2008-2013 ?} - - - (c) 2008-2011 Konstantin Isakov (ikm@goldendict.org) - © Константин Исаков (ikm@goldendict.org), 2008-2011 - - - - Credits: - Заслуге: - - - - Licensed under GNU GPLv3 or later - Лиценца: GNU GPLv3 или новија - - - - [Unknown] - [Непознато] - - - - Based on Qt %1 (%2, %3 bit) - На основу Qt %1 (%2, %3 бита) - - - - ArticleMaker - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Нема превода <b>%2</b> пронађеног у групи <b>%1</b>. - - - - No translation was found in group <b>%1</b>. - У групи <b>%1</b> превод није пронађен. - - - - Welcome! - Добро дошли! - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2011 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Добро дошли у <b>GoldenDict</b>!</h3><p>Ако покренете програм по први пут, одредите путању до речника у <b>Уреди|Речник</b>. Ту можете да наведете разне сајтове Википедије или другe изворe података, подесите редослед у коме су речници или направите речник.<p>Након тога, можете да почнете да тражите речи. Речи се могу наћи у левом окну прозора. Када радите у другим апликацијама, можете да тражите речи, користећи <a href="Рад са искачућим прозором">искачући прозор</a>. <p>У изборнику <b>Уреди|Поставке</b>.Можете да подесите апликацију по свом укусу. Сви параметри су наговештаји који се приказују када пређете преко њих. Обратите пажњу на њих, када имате проблема са конфигурацијом.<p>Ако вам је потребна помоћ,било каква питања, захтеве, итд, погледајте<a href="http://goldendict.org/forum/"> Форум програма</a>.<p>Ажурирање софтвера доступно на <a href="http://goldendict.org/">веб сајту</a>.<p>© Константин Исаков (ikm@goldendict.org), 2008-2011. Лиценца: GNU GPLv3 или новија. - - - - Expand article - Прошири чланак - - - - Collapse article - Скупи чланак - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Добро дошли у <b>GoldenDict</b>!</h3><p>Ако покренете програм по први пут, одредите путању до речника у <b>Уреди|Речник</b>. Ту можете да наведете разне сајтове Википедије или другe изворe података, подесите редослед у коме су речници или направите речник.<p>Након тога, можете да почнете да тражите речи. Речи се могу наћи у левом окну прозора. Када радите у другим апликацијама, можете да тражите речи, користећи <a href="Рад са искачућим прозором">искачући прозор</a>. <p>У изборнику <b>Уреди|Поставке</b>.Можете да подесите апликацију по свом укусу. Сви параметри су наговештаји који се приказују када пређете преко њих. Обратите пажњу на њих, када имате проблема са конфигурацијом.<p>Ако вам је потребна помоћ,било каква питања, захтеве, итд, погледајте<a href="http://goldendict.org/forum/"> Форум програма</a>.<p>Ажурирање софтвера доступно на <a href="http://goldendict.org/">веб сајту</a>.<p>© Константин Исаков (ikm@goldendict.org), 2008-2011. Лиценца: GNU GPLv3 или новија. {3 ?} {3>?} {2008-2013 ?} {3 ?} - - - - Working with popup - Рад са искачућим прозором - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Искачући прозор</h3>Да бисте пронашли речи из друге апликације, потребно је да укључите <i>«Омогући искачући прозор»</i> у <b>Поставке</b> и након тога омогућити искачуће дугме «Прегледај» у главном прозору или у пливајућем изборнику на икони у системској палети. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Сада померите курсор на било коју реч и појавиће се искачући прозор са преводом или описом речи. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Сада изаберите реч у додатку (Дупли клик, или држећи миша преко њих док држите леви тастер), и искаче прозор са преводом или описом речи. - - - - (untitled) - (без имена) - - - - (picture) - (слика) - - - - ArticleRequest - - - Expand article - Прошири чланак - - - - From - Из: - - - - Collapse article - Скупи чланак - - - - Query error: %1 - Упит грешке: %1 - - - - Close words: - Затвори речи: - - - - Compound expressions: - Сложени изрази: - - - - Individual words: - Поједине речи: - - - - ArticleView - - - Resource - Ресурс - - - - Audio - Аудио - - - - Definition: %1 - Одређење: %1 - - - GoldenDict - GoldenDict - - - - Select Current Article - Изаберите тренутни чланак - - - - Copy as text - Умножи као текст - - - - Inspect - Прегледај - - - - TTS Voice - TTS глас - - - - Picture - Слика - - - - Video - Видео - - - - Video: %1 - Видео: %1 - - - - Definition from dictionary "%1": %2 - Дефиниција из речника "%1": %2 - - - - - The referenced resource doesn't exist. - Тражени ресурс није пронађен. - - - - The referenced audio program doesn't exist. - Одређени аудио програм није пронађен. - - - - - ERROR: %1 - ГРЕШКА: %1 - - - - &Open Link - &Отворите ову везу - - - - Open Link in New &Tab - Отворите ову везу у новој &картици - - - - Open Link in &External Browser - Отворите ову везу у спољнем &прегледачу - - - - Save &image... - Сачувај &слику... - - - - Save s&ound... - Сачувај з&вук... - - - - &Look up "%1" - &Претражи "%1" - - - - Look up "%1" in &New Tab - Претражи «%1» у &новој картици - - - - Send "%1" to input line - Пошаљи "%1" на ред за унос - - - - - &Add "%1" to history - &Додај "%1" у историју - - - - Look up "%1" in %2 - Претражи «%1» у %2 - - - - Look up "%1" in %2 in &New Tab - Претражи «%1» у %2 в &новој картици - - - - Save sound - Сачувај звук - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Звучне датотеке (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Све датотеке (*.*) - - - - Save image - Сачувај слику - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Сликовне датотеке (*.bmp *.jpg *.png *.tif);;Све датотеке (*.*) - - - - WARNING: FFmpeg Audio Player: %1 - УПОЗОРЕЊЕ: FFmpeg Audio Player: %1 - - - Playing a non-WAV file - Репродукуј не WAV датотеку - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Да бисте омогућили могућност да репродукујете датотеке типа, различитих од WAV, посетите Уреди|Поставке, изаберите картицу Аудио, а затим изаберите "излаз звука преко DirectShow". - - - - Failed to run a player to play sound file: %1 - Није могуће пустити аудио датотеку: %1 - - - - Failed to create temporary file. - Није успело да створи привремену датотеку. - - - - Failed to auto-open resource file, try opening manually: %1. - Грешка при отварању ресурс датотеке, покушајте ручно да отворите: %1. - - - - The referenced resource failed to download. - Није могуће учитати повезане ресурсе. - - - - WARNING: %1 - ОПРЕЗ: %1 - - - - Form - Form - - - - about:blank - about:blank - - - - x - x - - - - Find: - Претражи: - - - - - &Previous - &Претходно - - - - - &Next - &Следеће - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Мала и велика слова - - - - Highlight &all - Истакни &све - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Белоруска транслитерација са латинице на ћирилицу (класичан правопис) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Белоруска транслитерација са латинице на ћирилицу (школски правопис) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Белоруска транслитерација (изједначава разлике -између класичних и школског правописа на ћирилици) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Лозинка: - - - - DictGroupWidget - - - Form - Form - - - - Group icon: - Икина групе: - - - - Shortcut: - Пречица: - - - - None - Ништа - - - - From file... - Из датотеке... - - - - Choose a file to use as group icon - Изаберите датотеку да користе као икону групе - - - - Images - Слика - - - - All files - Све датотеке - - - - Error - Грешка - - - - Can't read the specified image file. - Не можете да читате одабрану слику - - - - DictGroupsWidget - - - - - - Dictionaries: - Речници: - - - - Confirmation - Потврда - - - - Are you sure you want to generate a set of groups based on language pairs? - Да ли сте сигурни да желите да креирате скуп група на основу језичких парова? - - - - Unassigned - Недодељено - - - - Combine groups by source language to "%1->" - Комбинујте група из изворног језика у "%1->" - - - - Combine groups by target language to "->%1" - Комбинујте група из циљног језика у "->%1" - - - - Make two-side translate group "%1-%2-%1" - Направите двострану групу превођења "%1-%2-%1" - - - - - Combine groups with "%1" - Комбинујте група са "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Текстуалне датотеке (*.txt);;Све датотеке (*.*) - - - - Export headwords... - - - - - Cancel - Откажи - - - - DictInfo - - - Total articles: - Укупно чланака: - - - - Translates from: - Изворни језик: - - - - Total words: - Укупно речи: - - - - Translates to: - Циљни језик: - - - - Open folder - Отвори фасциклу - - - - Edit dictionary - Уреди речник - - - - Files comprising this dictionary: - Датотеке које чине речник: - - - - Description: - Опис: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Уреди речник преко командне: -%1 - - - - DictListModel - - - %1 entries - %1 уноса - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Укључено - - - - Name - Назив - - - - Address - Адреса - - - - Databases - - - - - Strategies - - - - - Icon - Икона - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Картица речника - - - - &Dictionary Bar - &Картица речника - - - - Extended menu with all dictionaries... - Проширени изборник са свим речницима... - - - - Edit this group - Уреди ову групу - - - - Dictionary info - Подаци о речнику - - - - Dictionary headwords - - - - - Open dictionary folder - Отвори фасциклу речника - - - - Edit dictionary - Уреди речник - - - - EditDictionaries - - - &Sources - &Извори - - - - - &Dictionaries - &Речници - - - - - &Groups - &Групе - - - - Sources changed - Извори промена - - - - Some sources were changed. Would you like to accept the changes? - Неки извори су промењени. Прихвати измене? - - - - Accept - Прихвати - - - - Cancel - Откажи - - - - Dictionaries - Речници - - - - ExternalViewer - - - the viewer program name is empty - Спољни гледалац - непознат - - - - FTS::FtsIndexing - - None - Ништа - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Ништа - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Ништа - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Анализа грешке XML: %1 на линији %2, колона %3 - - - - Added %1 - Додато %1 - - - - by - из - - - - Male - Човек - - - - Female - Жена - - - - from - из - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Иди на Уреди|Речници|Извори|Forvo и примени на ваш кључ API, да бисте решили овај проблем. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Откажи - - - - Help - - - - - GermanTranslit - - - German Transliteration - Транскрипција (Немачки) - - - - GreekTranslit - - - Greek Transliteration - Транскрипција (Грчки) - - - - GroupComboBox - - - Choose a Group (Alt+G) - Изаберите групу (Alt+G) - - - - GroupSelectorWidget - - - Form - Form - - - - Look in - Претражи - - - - Groups - - - Group tabs - - - - - Open groups list - - - - - Add group - Додај групу - - - - Give a name for the new group: - Унесите име нове групе: - - - - Rename group - Преименуј групу - - - - Give a new name for the group: - Унесите ново име групе: - - - - Remove group - Уклоните групу - - - - Are you sure you want to remove the group <b>%1</b>? - Желите да уклоните групу <b>%1</b>? - - - - - Remove all groups - Уклоните све групе - - - - Are you sure you want to remove all the groups? - Уклоните све групе? - - - - Dictionaries available: - Доступни речници: - - - - Add selected dictionaries to group (Ins) - Додај изабране речнике у групу (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Уклоните изабрани речнике из групе (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Групе: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Направи нову групу - - - - &Add group - &Додај групу - - - - Create language-based groups - Направи групе на основу језичких парова - - - - Auto groups - Ауто групе - - - - Rename current dictionary group - Преименуј тренутну групу речника - - - - Re&name group - &Преименуј групу - - - - Remove current dictionary group - Уклони тренутну групу речника - - - - &Remove group - &Уклоните групу - - - - Remove all dictionary groups - Уклоните све групе речника - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Превуците речнике у групи са списка доступних речника, промените редослед група, помоћу миша. - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Назад - - - - Forward - Напред - - - - Zoom In - Увећај - - - - Zoom Out - Умањи - - - - Normal Size - Уобичајена величина - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - Избриши изабрано - - - - Copy Selected - Умножи изабрано - - - - History: - Историјат: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Величина историје: %1 уноса од максималних %2 - - - - Hunspell - - - Spelling suggestions: - Предлога за правопис: - - - - %1 Morphology - %1 (морфологија) - - - - HunspellDictsModel - - - Enabled - Укључено - - - - Name - Назив - - - - Initializing - - - Please wait... - Сачекајте... - - - - - Please wait while indexing dictionary - Сачекајте док индексира речник - - - - GoldenDict - Initializing - Покрени GoldenDict - - - - Dictionary Name - Назив речника - - - - Language - - - Afar - Афарски - - - - Abkhazian - Абхазија - - - - Avestan - Авестан - - - - Afrikaans - Афрички - - - - Akan - Акански - - - - Amharic - Амхарски - - - - Aragonese - Арагонски - - - - Arabic - Арапски - - - - Assamese - Асамски - - - - Avaric - Аварски - - - - Aymara - Аимаран - - - - Azerbaijani - Азербејџански - - - - Bashkir - Башкирски - - - - Belarusian - Белоруски - - - - Bulgarian - Бугарски - - - - Bihari - Бихарски - - - - Bislama - Бислама - - - - Bambara - Бамана - - - - Bengali - Бенгалски - - - - Tibetan - Тибетански - - - - Breton - Бретонски - - - - Bosnian - Боснийский - - - - Catalan - Каталонски - - - - Chechen - Чеченски - - - - Chamorro - Чаморо - - - - Corsican - Корсикански - - - - Cree - Кри - - - - Czech - Чешки - - - - Church Slavic - Црквено-словенски - - - - Chuvash - Чувашски - - - - Welsh - Велшки - - - - Danish - Датски - - - - German - Немачки - - - - Divehi - Малдиви - - - - Dzongkha - Џонга (Бутан) - - - - Ewe - Еве - - - - Greek - Грчки - - - - English - Енглески - - - - Esperanto - Есперанто - - - - Spanish - Шпански - - - - Estonian - Естонски - - - - Basque - Баскијски - - - - Persian - Персијски - - - - Fulah - Фула - - - - Finnish - Фински - - - - Fijian - Фиџи - - - - Faroese - Фарски - - - - French - Француски - - - - Western Frisian - Фризииски - - - - Irish - Галски (Ирска) - - - - Scottish Gaelic - Галски (Шкотска) - - - - Galician - Галицијски - - - - Guarani - Гварани - - - - Gujarati - Гуџарати - - - - Manx - Манкс - - - - Hausa - Хауса - - - - Hebrew - Јеврејски - - - - Hindi - Хинди - - - - Hiri Motu - Хири-моту - - - - Croatian - Хрватски - - - - Haitian - Хаићански - - - - Hungarian - Мађарски - - - - Armenian - Јерменски - - - - Herero - Ереро - - - - Interlingua - Интерлингва - - - - Indonesian - Индонезијски - - - - Interlingue - Интерлингве - - - - Igbo - Ибо - - - - Sichuan Yi - Сечуан И - - - - Inupiaq - Инупиак - - - - Ido - Идо - - - - Icelandic - Исландски - - - - Italian - Италијански - - - - Inuktitut - Инуктитут - - - - Japanese - Јапански - - - - Javanese - Јаванац - - - - Georgian - Грузијски - - - - Kongo - Конго - - - - Kikuyu - Кикују - - - - Kwanyama - Кваниама - - - - Kazakh - Казак - - - - Kalaallisut - Калаалисут - - - - Khmer - Кмерски - - - - Kannada - Канада - - - - Korean - Корејски - - - - Kanuri - Канури - - - - Kashmiri - Кашмирски - - - - Kurdish - Курдски - - - - Komi - Коми - - - - Cornish - Корнвалски - - - - Kirghiz - Киргизски - - - - Latin - Латински - - - - Luxembourgish - Луксембургшки - - - - Ganda - Ганда - - - - Limburgish - Лимбурзхски - - - - Lingala - Лингала - - - - Lao - Лао - - - - Lithuanian - Литвански - - - - Luba-Katanga - Луба-Катанга - - - - Latvian - Летонски - - - - Malagasy - Мадагаскарац - - - - Marshallese - Маршалски - - - - Maori - Маори - - - - Macedonian - Македонски - - - - Malayalam - Малаиалам - - - - Mongolian - Монголски - - - - Marathi - Марати - - - - Malay - Малајски - - - - Maltese - Малтешки - - - - Burmese - Бурмански - - - - Nauru - Науру - - - - Norwegian Bokmal - Норвешки букмол - - - - North Ndebele - Сев. Ндебеле - - - - Nepali - Непалски - - - - Ndonga - Ндонга - - - - Dutch - Холандски - - - - Norwegian Nynorsk - Норвешки (нинорск) - - - - Norwegian - Норвешки - - - - South Ndebele - Јуж. Ндебеле - - - - Navajo - Навахо - - - - Chichewa - Чичева - - - - Occitan - Французски (диалект Occitan) - - - - Ojibwa - Оджибва - - - - Oromo - Оромо - - - - Oriya - Орија - - - - Ossetian - Осетински - - - - Panjabi - Панџаби - - - - Pali - Пали - - - - Polish - Пољски - - - - Pashto - Пуштунски - - - - Portuguese - Португалски - - - - Quechua - Кечуа - - - - Raeto-Romance - Романшски - - - - Kirundi - Кирунди - - - - Romanian - Румынски - - - - Russian - Руски - - - - Kinyarwanda - Кињаруанда - - - - Sanskrit - Санскрит - - - - Sardinian - Сардинијски - - - - Sindhi - Синдхи - - - - Northern Sami - Северна Сами - - - - Sango - Санго - - - - Serbo-Croatian - Српско-Хрватски - - - - Sinhala - Синхала - - - - Slovak - Словачки - - - - Slovenian - Словеначки - - - - Samoan - Самоа - - - - Shona - Схона - - - - Somali - Сомалиски - - - - Albanian - Албански - - - - Serbian - Српски - - - - Swati - Свати - - - - Southern Sotho - Јуж. Сото - - - - Sundanese - Судански - - - - Swedish - Шведски - - - - Swahili - Суахили - - - - Tamil - Тамилски - - - - Telugu - Телугу - - - - Tajik - Таџикски - - - - Thai - Тајландски - - - - Tigrinya - Тигриња - - - - Turkmen - Туркменски - - - - Tagalog - Тагалог - - - - Tswana - Тсвана - - - - Tonga - Тонга - - - - Turkish - Турски - - - - Tsonga - Тсонга - - - - Tatar - Татарски - - - - Twi - Тви - - - - Tahitian - Тахитиан - - - - Uighur - Ујгурски - - - - Ukrainian - Украјински - - - - Urdu - Урду - - - - Uzbek - Узбекски - - - - Venda - Венда - - - - Vietnamese - Вијетнамски - - - - Volapuk - Волапук - - - - Walloon - Валонски - - - - Wolof - Волоф - - - - Xhosa - Кхоса - - - - Yiddish - Јидиш - - - - Yoruba - Јоруба - - - - Zhuang - Чжуанг - - - - Chinese - Кинески - - - - Zulu - Зулу - - - - Lojban - Lojban - - - - Traditional Chinese - Традиционални кинески - - - - Simplified Chinese - Поједностављени кинески - - - - Other - Остали - - - - Other Simplified Chinese dialects - Остали поједностављеном кинеском дијалекти - - - - Other Traditional Chinese dialects - Остали традиционални кинески дијалекти - - - - Other Eastern-European languages - Остали источно-европски језици - - - - Other Western-European languages - Остали западно-европски језици - - - - Other Russian languages - Остали руски језици - - - - Other Japanese languages - Остали јапански језици - - - - Other Baltic languages - Остали балтички језици - - - - Other Greek languages - Остали грчки језици - - - - Other Korean dialects - Остали корејски дијалекти - - - - Other Turkish dialects - Остали турски дијалекти - - - - Other Thai dialects - Остали тајландски дијалекти - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Грешка при учитавању - - - - Main - - - Error in configuration file. Continue with default settings? - Грешка у поставци датотеке. Наставити са подразумеваним подешавањима? - - - - MainWindow - - Navigation - Навигација - - - - Back - Назад - - - - Forward - Напред - - - - Scan Popup - Прегледај - - - - Show &Main Window - Прикажи &главни прозор - - - - - &Quit - И&злаз - - - - Loading... - Учитавање... - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Skip This Release - Прескочи ову верзију - - - - You have chosen to hide a menubar. Use %1 to show it back. - Сакрили сте главни мени. Да га вратите, користите %1. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Подешавање странице - - - - No printer is available. Please install one first. - Нема доступног тампач. Молимо вас, инсталирајте прво. - - - - Print Article - Штампај чланак - - - - Article, Complete (*.html) - Чланак, целовит (*.html) - - - - Article, HTML Only (*.html) - Чланак, само HTML (*.html) - - - - Save Article As - Сачувајте овај чланак као - - - Html files (*.html *.htm) - Датотека Html (*.html *.htm) - - - - Error - Грешка - - - - Can't save article: %1 - Није могуће сачувати чланак: %1 - - - - %1 dictionaries, %2 articles, %3 words - Речник: %1, чланци: %2, речи: %3 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Није успело да покрене механизам надгледања пречица.<br>Проверите да ли ваш XServer подржава проширење RECORD. - - - - New Release Available - Доступна је нова верзија - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Издање <b>%1</b> програма GoldenDict доступно је за преузимање.<br> -Притисни <b>Преузми</b>, да оде на страницу за преузимање. - - - - Download - Преузми - - - - - Look up in: - Претражи у: - - - Show Names in Dictionary Bar - Прикажи име у картици речника - - - Show Small Icons in Toolbars - Прикажи мале иконе на траци са алаткама - - - - &Menubar - Главни мени - - - - Found in Dictionaries: - Пронађено у речницима: - - - - Pronounce Word (Alt+S) - Изговори реч (Alt+S) - - - - Show Names in Dictionary &Bar - Прикажи називе у картици &речника - - - - Show Small Icons in &Toolbars - Прикажи малу икону у &алатној траци - - - - &Navigation - &Навигација - - - - Zoom In - Увећај - - - - Zoom Out - Умањи - - - - Normal Size - Уобичајена величина - - - - Words Zoom In - Увећај листу речи - - - - Words Zoom Out - Умањи листу речи - - - - Words Normal Size - Уобичајена величина слова - - - - Close current tab - Затвори тренутну картицу - - - - Close all tabs - Затворите све картице - - - - Close all tabs except current - Затворите све картице осим тренутне - - - - - Accessibility API is not enabled - Приступачност API није омогућено - - - - Look up: - Претражи: - - - - All - Све - - - - Saving article... - Чување чланка... - - - - The main window is set to be always on top. - Главни прозор је подешен да увек буде на врху. - - - - &Hide - &Сакривен - - - - Export history to file - Извоз историе у датотеку - - - - - Text files (*.txt);;All files (*.*) - Текстуалне датотеке (*.txt);;Све датотеке (*.*) - - - - History export complete - Извоз историје је завршен - - - - Export error: - Извоз грешке: - - - - Import history from file - Увоз историје из датотеке - - - - Import error: invalid data in file - Увоз грешке: неважећи подаци у датотеци - - - - History import complete - Увоз историје је завршен - - - - Import error: - Грешка при увозу: - - - - Dictionary info - Подаци о речнику - - - - Dictionary headwords - - - - - Open dictionary folder - Отвори фасциклу речника - - - - Edit dictionary - Уреди речник - - - - Now indexing for full-text search: - - - - - Opened tabs - Отворених картица - - - - Open Tabs List - Отвори листу картица - - - - (untitled) - (неименован) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - Пажња: %1 - - - GoldenDict - GoldenDict - - - - - Welcome! - Добро дошли! - - - - &File - &Датотека - - - - &Edit - &Уреди - - - - &Help - &Пимоћ - - - &Dictionaries... F3 - &Речници... F3 - - - - &Preferences... - &Поставке... - - - - F2 - F2 - - - - &View - &Приказ - - - - &Zoom - &Увећај - - - - H&istory - &Историјат - - - Results Navigation Pane - Окно навигације за резуктате - - - - Search - - - - - &Search Pane - &Претражи окно - - - - &Results Navigation Pane - &Резултати окна за навигацију - - - - &History Pane - &Окно историје - - - - &Dictionaries... - &Речници... - - - - F3 - F3 - - - - F4 - F4 - - - - &Homepage - &Почетна страница - - - - &About - &О програму - - - - About GoldenDict - О GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - Quit from application - Затворите апликацију - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Форум - - - - &Close To Tray - &Умањи у палету - - - - Minimizes the window to tray - Умањи прозор у палету - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Сачувајте овај чланак - - - - Save Article - Сачувајте овај чланак - - - - &Print - &Штампај - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - П&оставке странице - - - - Print Pre&view - Преглед пре шта&мпања - - - - &Rescan Files - &Поново прегледа датотеке - - - - &New Tab - &Нова картица - - - - - &Show - &Прикажи - - - - Ctrl+H - Ctrl+H - - - - &Export - &Извоз - - - - &Import - &Увоз - - - - &Always on Top - &Увек на врху - - - - Always on Top - Увек на врху - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Дугме изборника - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Преглед пре штампања - - - Rescan Files - Поново прегледа датотеке - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - О&чисти - - - - New Tab - Нова картица - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - Фастикла подешавања - - - Search Pane - Окно претраге - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Речник датотека је покварен или оштећен - - - - Failed loading article from %1, reason: %2 - Неуспешно учитавање чланка из %1, разлог: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Анализа грешке XML: %1 у %2, колони %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Анализа грешке XML: %1 у %2, колони %3 - - - - MediaWikisModel - - - Enabled - Укључено - - - - Name - Назив - - - - Address - Адреса - - - - Icon - Икона - - - - OrderAndProps - - - Form - Form - - - - Dictionary order: - Редослед речника: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Неактиван (онемогућени) речници: - - - - Dictionary information - Информације о речнику - - - - Name: - Назив: - - - - Total articles: - Укупно чланака: - - - - Total words: - Укупно речи: - - - - Translates from: - Изворни језик: - - - - Translates to: - Циљни језик: - - - - Description: - Опис: - - - - Files comprising this dictionary: - Датотеке које чине речник: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Промена редоследа речника, превлачењем миша. Да бисте онемогућили речник превуците га на дно неактивне групе. - - - - Sort by name - Разврстај по имену - - - - Sort by languages - Разврстај по језицима - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Путања - - - - Recursive - Рекурзивно - - - - Preferences - - - Preferences - Поставке - - - - &Interface - &Сучеље - - - - Tabbed browsing - Прегледање помоћу картица - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Обично када отворите нову картицу, пребаците се на њега -одмах. Међутим, када је ова опција омогућена, нова картица ће бити -отворена, без њиховог пребацивања. - - - - Open new tabs in background - Отварање нове картице у позадини - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Ако је ова опција омогућена, нова картица ће бити -отворена одмах након тренутне, у супротном -додаје се на крају. - - - - Open new tabs after the current one - Отварање нове картице након тренутне - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Када је омогућено, појављује се икона у палети која се може користити, -да отвори главни прозор и врши друге послове. - - - - Enable system tray icon - Прикажи икону у системској палети - - - - With this on, the application starts directly to system tray without showing -its main window. - Када омогућите ову опцију, апликација ће радити у системској палети -не показујући главни прозор. - - - - Start to system tray - Покрени у системској палети - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Када је ова опција укључена затвара се главни прозор и биће у -системској палети. - - - - Close to system tray - Затвори у системску палету - - - - Startup - Подизање - - - - Start with system - Покрени са системом - - - - Interface language: - Језик сучеља: - - - - Display style: - Приказ стила: - - - - Double-click translates the word clicked - Преведи изабрану реч дуплим кликом - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Укључите или не укључити искачући прозор када програм почиње. - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Можда је боље овако: -Обично искакање прозора активира се само ако су изабрани -тастери притиснути док бирате реч. Ако је ова опција укључена, -одабрани тастери могу да се притисну и текст је истакнут. - У нормалном стању, да бисте активирали искачући -прозор, морате да држите изабрани тастер у процесу -истицања речи. Међутим, ако користите овај режим, тастер -може да се притисне одређено време после -тога, како би се реч издвојила. - - - - Hotkeys - Пречице - - - - Use the following hotkey to show or hide the main window: - Користите следећу пречицу за приказивање/сакривање главног прозора: - - - - Use the following hotkey to translate a word from clipboard: - Користите следећу пречицу за превођење речи из оставе: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Пречице су глобалне и раде за сваки програм и све контексте, све док GoldenDict ради у позадини. - - - - &Scan Popup - &Искачући прозор - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Омогућите ову опцију ако не желите да видите траку са обележивачима -у јединој отвореној картици. - - - - Hide single tab - Сакриј једну картицу - - - - Automatically starts GoldenDict after operation system bootup. - Аутоматски покрени GoldenDict када се покрене оперативни систем. - - - - Add-on style: - Додатак стилу: - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - У нормалном режиму рада, тастер ESC помера фокус на линију превода. -Ако омогућите ову опцију, она ће сакрити главни прозор. - - - - ESC key hides main window - Сакриј главни прозор притиском ESC - - - - Turn this option on if you want to select words by single mouse click - Укључите ову могућност ако желите да изаберете речи једним кликом миша - - - - Select word by single click - Изаберите реч једним кликом - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab навигација картица у MRU редоследу - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Подесите ову вредност да бисте избегли огромне падајуће изборнике - - - - Context menu dictionaries limit: - Ограничи падајући изборник речника: - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Када је омогућена, искачући прозор превода ће бити приказан сваки пут -кад поставите показивач миша на било коју реч на екрану(у Windows) или изаберите -било коју реч са мишем (у Linux). Када је омогућена, можете да је укључите и -искључите из главног прозора или иконице. - - - - Enable scan popup functionality - Омогући искачући прозор - - - - Start with scan popup turned on - Омогући искачући прозор при покретању - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Овим је омогућено, искакање би се појавило ако су сви тастери изабрани -у притиснутом стању, када се избор речи промени. - - - - Only show popup when all selected keys are kept pressed: - Само покажи искакање када сви одабрани тастери су непрестано притиснути: - - - - Left Ctrl only - Само леви Ctrl - - - - Left Ctrl - Леви Ctrl - - - - Right Shift only - Само десни Shift - - - - Right Shift - Десни Shift - - - - Alt key - Тастер Alt - - - - Alt - Alt - - - - Ctrl key - Тастер Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Само леви Alt - - - - Left Alt - Леви Alt - - - - Shift key - Тастер Shift - - - - Shift - Shift - - - - Right Alt only - Само десни Alt - - - - Right Alt - Десни Alt - - - - Right Ctrl only - Само десни Ctrl - - - - Right Ctrl - Десни Ctrl - - - - Left Shift only - Само леви Shift - - - - Left Shift - Леви Shift - - - - Windows key or Meta key - Тастер Windows или Meta - - - - Win/Meta - Win или Meta - - - - Keys may also be pressed afterwards, within - Тастери могу бити накнадно притиснути, у оквиру - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Да бисте избегли лажне резултате, тастери се само прате -након што је урађен избор у ограниченом обиму -временског периода, који је овде одређен. - - - - secs - секунд - - - - Send translated word to main window instead of to show it in popup window - Пошаљите преведену реч на главни прозор уместо да га прикаже у искачућем прозору - - - - Send translated word to main window - Пошаљите преведену реч у главни прозор - - - - Play audio files via FFmpeg(libav) and libao - Пусти звучне датотеке преко FFmpeg(libav) и libao - - - - Use internal player - Користи уграђени пуштач - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Неки сајтови откривају GoldenDict преко HTTP заглавља и блок захтева. -Омогућите ову могућност да бисте решили тај проблем. - - - - Do not identify GoldenDict in HTTP headers - Немојте да идентификујете GoldenDict у HTTP заглављима - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Ad&vanced - Напредно - - - - ScanPopup extra technologies - Додатне методе за одређивање речи под курсором - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Користите интерфејс IAccessibleEx да тражи речи под курсором. -Ова технологија ради само са програмима који га подржавају -(например Internet Explorer 9). -Ако не користите такве програме не треба да укључи ову опцију. - - - - Use &IAccessibleEx - Користи &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Користи технологију UI Automation да тражи речи под курсором. -Ова технологија ради само са програмима који га подржавају. -Ако не користите такве програме не треба да укључи ову опцију. - - - - Use &UIAutomation - Користи &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Користите посебан захтев GoldenDict да тражи речи под показивачом. -Ова технологија ради само са програмима, који га подржавају. -Ако не користите такве програме да укључи ову опцију не треба. - - - - Use &GoldenDict message - Користи захтев &GoldenDict - - - - History - Историјат - - - - Turn this option on to store history of the translated words - Укључите ову могућност за чување историје преведених речи - - - - Store &history - Складиште &историје - - - - Specify the maximum number of entries to keep in history. - Одредите највећи број ставки задржат у историји - - - - Maximum history size: - Максимална величина историје: - - - - History saving interval. If set to 0 history will be saved only during exit. - Раздобље чувања историје. Ако се подеси на 0 у историји ће бити сачувана само током излаза. - - - - Save every - Сачувај сваких - - - - minutes - минута - - - - Articles - Чланци - - - - Turn this option on to always expand optional parts of articles - Укључите ову могућност да увек прошири необавезне делове чланака - - - - Expand optional &parts - Могућност проширења &делова - - - - Select this option to automatic collapse big articles - Изаберите ову могућност да бисте аутоматски урушити велике чланке - - - - Collapse articles more than - Уруши чланке опширније од - - - - Articles longer than this size will be collapsed - Чланци дужи него ове величине ће бити срушени - - - - symbols - симболи - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Напомена: Чини се да користите верзију X.Org XServer, у којој не постоји подршка за проширење RECORD. Вероватно пречице GoldenDict не раде. Овај проблем би требало да буде исправљен на страни XServer. За више информација погледајте </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> а ако желите, поставите своје коментаре.</span></p></body></html> - - - - &Audio - &Аудио - - - - Pronunciation - Изговор - - - - Auto-pronounce words in main window - Аутоматски изговари речи у главном прозору - - - - Auto-pronounce words in scan popup - Аутоматски изговорити речи у искачућем прозору - - - - Playback - Репродукција - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Коришћење интерних фондова Windows за репродукцију. Подржава -само датотеке типа .wav, али репродукција увек ради добро. - - - Play via Windows native API - Репродукуј унутрашњим ресурсима Windows-а - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Репродукуј кроз систем Phonon. Понекад ради нестабилно, -али подржава већину аудио формате. - - - Play via Phonon - Репродукуј преко Phonon - - - - Use any external program to play audio files - Користите неку спољну апликацију за репродукцију аудио датотека - - - - Use external program: - Користи спољни програм: - - - - &Network - &Мрежа - - - - Enable if you wish to use a proxy server -for all program's network requests. - Омогући ако користите прокси сервер -за све мрежне захтеве програма. - - - - Use proxy server - Користи прокси-сервер - - - - Type: - Тип: - - - - Host: - Сервер: - - - - Port: - Порт: - - - - User: - Корисничко име: - - - - Password: - Лозинка: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Ова опција омогућава GoldenDict блокирају већину -рекламирање одређених садржаја (слике, кадрови, и тако даље), -не на оригиналном сајту. Ако неки сајтови се кваре -због ове функције, покушајте да онемогућите ову опцију. - - - - Disallow loading content from other sites (hides most advertisements) - Онемогући учитавање садржаја са других сајтова (уклања већи део оглашавања) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Ова опција вам омогућава да слушају изговора спољних -сајтова, који захтевају Flash или друге додатке. -Да би ово функционисало, додатке треба инсталирати. - - - - Enable web plugins - Омогући додатаке сајтовима - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Ако је ова опција омогућена, програм ће, с времена на -време да проверите за најновију верзију -GoldenDict. Ако се појавила нова верзија, програма -обавестиће о томе и понудити да преузме -са сајта. - - - - Check for new program releases periodically - Проверите нову верзију - - - - System default - Систем - подразумевано - - - - - Default - Подразумевано - - - - Modern - Модеран - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Репродукуј преко DirectShow - - - - Changing Language - Промена језика - - - - Restart the program to apply the language change. - Поново покрените програм за промену језика. - - - - ProgramTypeEditor - - - Audio - Аудио - - - - Plain Text - Текст - - - - Html - Html - - - - Prefix Match - По префиксима - - - - Unknown - Непознато - - - - Programs::RunInstance - - - No program name was given. - Програм није наведен. - - - - The program has crashed. - Програм је завршио са грешком - - - - The program has returned exit code %1. - Програм је вратио излазни код %1. - - - - ProgramsModel - - - Enabled - Укључено - - - - Type - Тип - - - - Name - Назив - - - - Command Line - Командна линија - - - - Icon - Икона - - - - QObject - - - - Article loading error - Грешка при учитавању чланка - - - - - Article decoding error - Грешка декодирања чланка - - - - avformat_alloc_context() failed. - avformat_alloc_context() није успело. - - - - av_malloc() failed. - av_malloc() није успело. - - - - avio_alloc_context() failed. - avio_alloc_context() није успело. - - - - avformat_open_input() failed: %1. - avformat_open_input() није успело: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() није успело: %1. - - - - Could not find audio stream. - Није могуће пронаћи аудио ток. - - - - Codec [id: %1] not found. - Кодек [id: %1] није пронађен. - - - - avcodec_open2() failed: %1. - avcodec_open2() није успело: %1. - - - - Cannot find usable audio output device. - Не можете да пронађете употребљив уређај за звучни излаз. - - - - Unsupported sample format. - Неподржан је пробни формат. - - - - ao_open_live() failed: - ao_open_live() није успело: - - - - No driver. - Нема управљача. - - - - This driver is not a live output device. - Овај управљач нема активан излазни уређај. - - - - A valid option key has an invalid value. - Важећи избор тастера има неважећу вредност. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Не могу да отворим уређај: %1, канали: %2, мера: %3, бита: %4. - - - - Unknown error. - Непозната грешка. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() није успело. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Речник - претрага/филтер (Ctrl+F) - - - - Quick Search - Брза претрага - - - - Clear Search - Очисти претрагу - - - - ResourceToSaveHandler - - - - ERROR: %1 - ГРЕШКА: %1 - - - - Resource saving error: - Грешка чувања ресурса: - - - - The referenced resource failed to download. - Није могуће учитати повезане ресурсе. - - - - Romaji - - - Hepburn Romaji for Hiragana - Хепберн Ромаји (Хирагана) - - - - Hepburn Romaji for Katakana - Хепберн Ромаји (Катакана) - - - - RussianTranslit - - - Russian Transliteration - Транслитерација (Руски) - - - - ScanPopup - - - Dialog - Диалог - - - word - реч - - - List Matches (Alt+M) - Списак подударности (Alt+M) - - - Alt+M - Alt+M - - - - Back - Назад - - - - Forward - Напред - - - - Pronounce Word (Alt+S) - Изговори реч (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Пошаљите реч у главни прозор (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Приказивање или скривање траке речника - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Кликните да усидрите прозор на екрану, промените величину -или било које друге особине. - - - - - - - - ... - ... - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Путања - - - - Name - Назив - - - - Icon - Икона - - - - Sources - - - Text to Speech - Текст у говор - - - - (not available in portable version) - (није доступан у преносној верзији) - - - - - - Choose a directory - Изабери фасциклу - - - - - - - - - Confirm removal - Потврди уклањање - - - - - Remove directory <b>%1</b> from the list? - Уклони фасциклу <b>%1</b> из списка? - - - - - - Remove site <b>%1</b> from the list? - Уклони сајт <b>%1</b> из списка? - - - - Remove program <b>%1</b> from the list? - Уклони програм <b>%1</b> из списка? - - - - Files - Датотеке - - - - Paths to search for the dictionary files: - Путања за тражење датотеке речника: - - - - - - - - - &Add... - &Додај... - - - - - - - - - &Remove - &Уклони - - - - Re&scan now - Пон&ово прегледај - - - - Sound Dirs - Фасцикла са звуковима - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Направите речнике из гомиле звучних датотека додавањем путање овде: - - - - Morphology - Морфологија - - - - Path to a directory with Hunspell/Myspell dictionaries: - Путања до речника са Hunspell/Myspell речницима: - - - - &Change... - &Промени... - - - - Available morphology dictionaries: - Доступни морфолошки речници: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Сваки морфолошки речник -је посебан помоћни речник који -обезбеђује матичне речи за претраге и -даје предлоге за правопис -за погрешне речи. -За коришћење речника -додајте одговарајуће речнике -на крају појединих група. - - - - Websites - Веб-сајт - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Било који веб-сајт. Низ %GDWORD% биће замењен речју упита: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Такође је могуће користити %GD1251% за кодирање CP1251, %GDISO1% за ISO 8859-1. - - - - Programs - Програми - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Сваки екстерни програм. Низ %GDWORD% ће бити замењена траженом речју. Иста реч ће бити послата у стандардни улазни ток. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Уживо изговор са сајта <a href="http://www.forvo.com/">forvo.com</a>. Овај сајт омогућава корисницима да снимају и деле изговорене речи. Можете да их слушам из GoldenDict. - - - - Enable pronunciations from Forvo - Укључи изговор из Forvo - - - - API Key: - Кључ API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Користећи сајт Forvo захтева кључ API. Оставите -ово поље празно, да бисте користили подразумевани кључ, који -не може да ради у будућности, или се пријавите на -сајт, да бисте добили свој кључ. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - Узмите ваш кључ <a href="http://api.forvo.com/key/">овде</a>, или оставите празно да бисте користили подразумевани кључ. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Алтернативно, користите %GD1251% за CP1251, %GDISO1%...%GDISO16% за ISO 8859-1...ISO 8859-16 односно, -%GDBIG5% за Big-5, %GDBIG5HKSCS% за Big5-HKSCS, %GDGBK% за GBK и GB18030, %GDSHIFTJIS% за Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Неки спољни програми. Низ %GDWORD% биће замењен речју упита. Ако такав низ није представљен, реч ће се учитати у стандардни улаз. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Набавите свој кључ <a href="http://api.forvo.com/key/">here</a>, или оставите празно да бисте користили подразумевани. - - - - Language codes (comma-separated): - Листа језичких кодова (раздвојене зарезима): - - - - List of language codes you would like to have. Example: "en, ru". - Листа кодова за језике које желите да користите. Пример: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Комплетан списак језичких кодова је доступан <a href="http://www.forvo.com/languages-codes/">овде</a>. - - - - Transliteration - Транслитерација - - - - Russian transliteration - Транслитерација (Руски) - - - - Greek transliteration - Транслитерација (Грчки) - - - - German transliteration - Транслитерација (Немачки) - - - - Belarusian transliteration - Белоруска транслитерација - - - - Enables to use the Latin alphabet to write the Japanese language - Омогућава коришћење латинице за писање јапанског - - - - Japanese Romaji - Ромаји (Јапански) - - - - Systems: - Системи: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Најпопуларнији метод преписивања Јапанског је, -заснован на енглеској фонологији - - - - Hepburn - Хепберн - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Систем, пренос приказа знакова кана је најтачније. -Стандардизовани у ISO 3602. - -В GoldenDict пока не реализована. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - На основу система Nihon-shiki, али модификован за модерне стандарде -савременог јапанског. Стандардизован у ISO 3602. - -В GoldenDict пока не реализована. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Слоговна азбука: - - - - Hiragana Japanese syllabary - Слоговна азбука "Хирагана" - - - - Hiragana - Хирагана - - - - Katakana Japanese syllabary - Слоговна азбука "Катакана" - - - - Katakana - Катакана - - - - Wikipedia - Написан на руском, извор: ru.wikipedia.org - Википедија - - - - Wikipedia (MediaWiki) sites: - Веб-сајт Википедија (MediaWiki): - - - - StylesComboBox - - - None - Ништа - - - - TextToSpeechSource - - - Selected voice engines: - Изабрани погон гласа: - - - - &Add - &Додај - - - - &Remove - &Уклони - - - - Preferences - Поставке - - - - Volume: - Величина: - - - - Rate: - Мера: - - - - Preview - Преглед - - - - Available voice engines: - Доступни гласовни погони: - - - - Text to be previewed: - Текст се може погледати: - - - - Type text to be previewed here. - Укуцајте текст да буде прегледан овде. - - - - &Preview - &Преглед - - - - No TTS voice available - Нема доступног TTS гласа - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Не можете да пронађете доступне TTS гласове.<br>Уверите се да је најмање један TTS погон већ инсталиран на рачунару. - - - - Confirm removal - Потврди уклањање - - - - Remove voice engine <b>%1</b> from the list? - Уклоните гласовну погон <b>%1</b> са списка? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Откуцајте реч или фразу за претрагу речника - - - - Drop-down - Падајући - - - - VoiceEnginesModel - - - Enabled - Укључено - - - - Name - Назив - - - - Id - Id - - - - Icon - Икона - - - - WebSitesModel - - - Enabled - Укључено - - - - Name - Назив - - - - Address - Адреса - - - - Icon - Икона - - - - WordFinder - - - Failed to query some dictionaries. - Претрага није успео у неким речницима. - - - - WordList - - - WARNING: %1 - УПОЗОРЕЊЕ: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sv_SE.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sv_SE.ts deleted file mode 100644 index b27031514d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/sv_SE.ts +++ /dev/null @@ -1,4733 +0,0 @@ - - - - - About - - - About - Om - - - - GoldenDict dictionary lookup program, version - Ordliste- och uppslagsverksprogrammet GoldenDict, version - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - Licensierat under GNU GPLv3 eller senare - - - - Credits: - Tack till: - - - - [Unknown] - [Okänd] - - - - Based on Qt %1 (%2, %3 bit) - Baserat på Qt %1 (%2, %3 bitar) - - - - ArticleMaker - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Ingen översättning för <b>%1</b> hittades i gruppen <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Ingen översättning hittades i gruppen <b>%1</b>. - - - - Welcome! - Välkommen! - - - - Expand article - Visa artikel - - - - Collapse article - Dölj artikel - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Välkommen till <b>GoldenDict</b>!</h3><p>För att komma igång med programmet måste du först gå till <b>Redigera|Ordlistor</b> för att lägga till mappsökvägar där programmet skall söka efter dina ordlistefiler. Där kan du även konfigurera olika Wikipedia-webbplatser eller andra källor, ändra ordning på ordlistor och skapa ordlistegrupper.<p>När det är avklarat kan du börja slå upp ord! Du kan göra detta i det här fönstret genom att använda sökpanelen till vänster, eller genom att <a href="Arbeta med popuprutor">slå upp ord inifrån andra öppna program</a>. <p>Vill du anpassa programmet hittar du alla tillgängliga inställningsalternativ i <b>Redigera|Inställningar</b>. Alla inställningar där har verktygstips, läs dem om det är något du undrar över.<p>Om du behöver ytterligare hjälp, behöver ställa en fråga, har förslag eller bara undrar vad andra tycker, så är du välkommen till programmets <a href="http://goldendict.org/forum/">forum</a>.<p>Gå till programmets <a href="http://goldendict.org/">webbplats</a> för att hitta uppdateringar. <p>(c) 2008-2013 Konstantin Isakov. Licensierat under GNU GPLv3 eller senare. - - - - Working with popup - Arbeta med popuprutor - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Arbeta med popuprutor</h3>För att slå upp ord inifrån andra öppna program, så måste du först aktivera alternativet <i>"Använd sökning med popupruta"</i> i <b>Inställningar</b>. Därefter kan du slå på/stänga av funktionen vid behov genom att antingen klicka på popuprutefunktionens ikon här ovan eller genom att högerklicka på ikonen i meddelandefältet och välja alternativet i menyn som visas. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Håll sedan muspekaren över det ord som du vill slå upp i det andra programmet, så visas en popupruta med sökresultat från de ordlistor du använder. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Använd sedan musen för att markera det ord som du vill slå upp i det andra programmet (dubbelklicka eller klicka och dra med musknappen nedtryckt), så visas en popupruta med sökresultat från de ordlistor du använder. - - - - (untitled) - (namnlös) - - - - (picture) - (bild) - - - - ArticleRequest - - - Expand article - Visa artikel - - - - From - Från - - - - Collapse article - Dölj artikel - - - - Query error: %1 - Frågefel: %1 - - - - Close words: - Närliggande ord: - - - - Compound expressions: - Sammansättningar: - - - - Individual words: - Enskilda ord: - - - - ArticleView - - - Form - Formulär - - - - about:blank - about:blank - - - - x - x - - - - Find: - Sök: - - - - - &Previous - &Föregående - - - - - &Next - &Nästa - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Skiftlägeskänslig - - - - Highlight &all - Färgmarkera &alla - - - - Select Current Article - Markera aktuell artikel - - - - Copy as text - Kopiera som oformaterad text - - - - Inspect - Granska källkod - - - - Resource - Resurs - - - - Audio - Ljud - - - - TTS Voice - Text till tal-modul - - - - Picture - Bild - - - - Video - Video - - - - Video: %1 - Video: %1 - - - - Definition from dictionary "%1": %2 - Definition ur ordlistan "%1": %2 - - - - Definition: %1 - Definition: %1 - - - - - The referenced resource doesn't exist. - Den refererade resursen finns inte. - - - - The referenced audio program doesn't exist. - Det refererade ljudprogrammet finns inte. - - - - - ERROR: %1 - FEL: %1 - - - - Save sound - Spara ljud - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Ljudfiler (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Alla filer (*.*) - - - - Save image - Spara bild - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Bildfiler (*.bmp *.jpg *.png *.tif);;Alla filer (*.*) - - - - &Open Link - Öppna &länk - - - - Open Link in New &Tab - Öppna länk i ny &flik - - - - Open Link in &External Browser - Öppna länk i extern &webbläsare - - - - Save &image... - Spara &bild … - - - - Save s&ound... - Spara l&jud … - - - - &Look up "%1" - &Slå upp "%1" - - - - Look up "%1" in &New Tab - Slå upp "%1" i &ny flik - - - - Send "%1" to input line - Skicka "%1" till sökfältet - - - - - &Add "%1" to history - &Lägg till "%1" i historiken - - - - Look up "%1" in %2 - Slå upp "%1" i %2 - - - - Look up "%1" in %2 in &New Tab - Slå upp "%1" i %2 i &ny flik - - - - WARNING: FFmpeg Audio Player: %1 - VARNING: Ljudspelare för FFmpeg: %1 - - - - WARNING: %1 - VARNING: %1 - - - - Failed to run a player to play sound file: %1 - Det gick inte att köra en spelare när en ljudfil skulle spelas upp: %1 - - - - Failed to create temporary file. - Det gick inte att skapa en tillfällig fil. - - - - Failed to auto-open resource file, try opening manually: %1. - Det gick inte att automatiskt öppna en resursfil. Försök att öppna den manuellt: %1. - - - - The referenced resource failed to download. - Det gick inte att hämta den refererade resursen. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Translitterering av vitryska från latinska till kyrilliska tecken (klassisk rättstavning) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Translitterering av vitryska från latinska till kyrilliska tecken (skolrättstavning) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Translitterering av vitryska (jämnar ut skillnaden mellan -klassisk rättstavning och skolrättstavning i kyrillisk skrift) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Lösenord: - - - - DictGroupWidget - - - Form - Formulär - - - - Group icon: - Gruppikon: - - - - Shortcut: - Kortkommando: - - - - None - Ingen - - - - From file... - Från fil … - - - - Choose a file to use as group icon - Välj en fil att använda som gruppikon - - - - Images - Bilder - - - - All files - Alla filer - - - - Error - Fel - - - - Can't read the specified image file. - Det gick inte att läsa den angivna bildfilen. - - - - DictGroupsWidget - - - - - - Dictionaries: - Ordlistor: - - - - Confirmation - Bekräftelse - - - - Are you sure you want to generate a set of groups based on language pairs? - Är du säker på att du vill skapa en uppsättning grupper baserade på språkpar? - - - - Unassigned - Ej tilldelad - - - - Combine groups by source language to "%1->" - Kombinera grupper efter källspråk till "%1 >" - - - - Combine groups by target language to "->%1" - Kombinera grupper efter målspråk till "> %1" - - - - Make two-side translate group "%1-%2-%1" - Skapa den dubbelsidiga språkgruppen "%1-%2-%1" - - - - - Combine groups with "%1" - Kombinera grupper med "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Textfiler (*.txt);;Alla filer (*.*) - - - - Export headwords... - - - - - Cancel - Avbryt - - - - DictInfo - - - Total articles: - Antal artiklar: - - - - Translates from: - Källspråk: - - - - Total words: - Antal ord: - - - - Translates to: - Målspråk: - - - - Open folder - Öppna mapp - - - - Edit dictionary - Redigera ordlista - - - - Files comprising this dictionary: - Filer som omfattas av ordlistan: - - - - Description: - Beskrivning: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Redigera ordlistan via kommando: -%1 - - - - DictListModel - - - %1 entries - %1 poster - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Aktiverad - - - - Name - Namn - - - - Address - Adress - - - - Databases - - - - - Strategies - - - - - Icon - Ikon - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - - &Dictionary Bar - &Ordlistefältet - - - - Extended menu with all dictionaries... - Visa alla ordlistor i en utökad meny … - - - - Edit this group - Redigera denna grupp - - - - Dictionary info - Ordlisteinformation - - - - Dictionary headwords - - - - - Open dictionary folder - Öppna ordlistans lagringsmapp - - - - Edit dictionary - Redigera ordlista - - - - EditDictionaries - - - Dictionaries - Ordlistor - - - - &Sources - &Källor - - - - - &Dictionaries - &Ordlistor - - - - - &Groups - &Grupper - - - - Sources changed - Källor har ändrats - - - - Some sources were changed. Would you like to accept the changes? - Några källor har ändrats. Godkänner du ändringarna? - - - - Accept - Godkänn - - - - Cancel - Avbryt - - - - ExternalViewer - - - the viewer program name is empty - fältet för visningsprogrammets namn är tomt - - - - FTS::FtsIndexing - - None - Ingen - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Ingen - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Ingen - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XML-tolkningsfel: %1 vid %2,%3 - - - - Added %1 - Lade till %1 - - - - by - av - - - - Male - Man - - - - Female - Kvinna - - - - from - från - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Gå till Redigera|Ordlistor|Källor|Forvo och ansök om att få vår egen API-nyckel för att få problemet att försvinna. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Avbryt - - - - Help - - - - - GermanTranslit - - - German Transliteration - Translitterering av tyska - - - - GreekTranslit - - - Greek Transliteration - Translitterering av grekiska - - - - GroupComboBox - - - Choose a Group (Alt+G) - Välj en grupp (Alt+G) - - - - GroupSelectorWidget - - - Form - Formulär - - - - Look in - Sök i - - - - Groups - - - Dictionaries available: - Tillgängliga ordlistor: - - - - Add selected dictionaries to group (Ins) - Lägg till markerade ordlistor i gruppen (Insert) - - - - > - > - - - - Ins - Insert - - - - Remove selected dictionaries from group (Del) - Ta bort markerade ordlistor ur gruppen (Delete) - - - - < - < - - - - Del - Delete - - - - Groups: - Grupper: - - - - Tab 2 - Flik 2 - - - - Create new dictionary group - Skapa en ny ordlistegrupp - - - - &Add group - &Lägg till grupp - - - - Create language-based groups - Skapa språkbaserade grupper - - - - Auto groups - Autogruppering - - - - Rename current dictionary group - Byt namn på den aktuella ordlistegruppen - - - - Re&name group - Byt &namn på grupp - - - - Remove current dictionary group - Ta bort den aktuella ordlistegruppen - - - - &Remove group - Ta &bort grupp - - - - Remove all dictionary groups - Ta bort alla ordlistegrupper - - - - - Remove all groups - Ta bort alla grupper - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - "&" is not an accelerator here, should be replaced by &amp; in the source file - Använd musen för att dra och släppa ordlistor till och från grupperna, ändra ordlistornas ordning inom grupperna samt ändra gruppernas inbördes ordning. - - - - Group tabs - - - - - Open groups list - - - - - Add group - Lägg till grupp - - - - Give a name for the new group: - Ange ett namn på den nya gruppen: - - - - Rename group - Byt namn på grupp - - - - Give a new name for the group: - Ange ett nytt namn på gruppen: - - - - Remove group - Ta bort grupp - - - - Are you sure you want to remove the group <b>%1</b>? - Är du säker på att du vill ta bort gruppen <b>%1</b>? - - - - Are you sure you want to remove all the groups? - Är du säker på att du vill ta bort alla grupper? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Bakåt - - - - Forward - Framåt - - - - Zoom In - Zooma in - - - - Zoom Out - Zooma ut - - - - Normal Size - Normal storlek - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - Ta &bort markerade - - - - Copy Selected - Kopiera markerade - - - - History: - Historik: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Historikstorlek: %1 poster av maximalt %2 - - - - Hunspell - - - Spelling suggestions: - Stavningsförslag: - - - - %1 Morphology - Morfologi för %1 - - - - HunspellDictsModel - - - Enabled - Aktiverad - - - - Name - Namn - - - - Initializing - - - GoldenDict - Initializing - GoldenDict - Initierar - - - - - Please wait while indexing dictionary - Var god vänta medan ordlistan indexeras - - - - Dictionary Name - Ordlistans namn - - - - Please wait... - Var god vänta … - - - - Language - - - Afar - Afar - - - - Abkhazian - Abchaziska - - - - Avestan - Avestiska - - - - Afrikaans - Afrikaans - - - - Akan - Akan - - - - Amharic - Amhariska - - - - Aragonese - Aragonska - - - - Arabic - Arabiska - - - - Assamese - Assamesiska - - - - Avaric - Avariska - - - - Aymara - Aymara - - - - Azerbaijani - Azerbajdzjanska - - - - Bashkir - Basjkiriska - - - - Belarusian - Vitryska - - - - Bulgarian - Bulgariska - - - - Bihari - Bihari - - - - Bislama - Bislama - - - - Bambara - Bambara - - - - Bengali - Bengali - - - - Tibetan - Tibetanska - - - - Breton - Bretonska - - - - Bosnian - Bosniska - - - - Catalan - Katalanska - - - - Chechen - Tjetjenska - - - - Chamorro - Chamorro - - - - Corsican - Korsikanska - - - - Cree - Cree - - - - Czech - Tjeckiska - - - - Church Slavic - Kyrkoslaviska - - - - Chuvash - Tjuvasjiska - - - - Welsh - Kymriska - - - - Danish - Danska - - - - German - Tyska - - - - Divehi - Divehi - - - - Dzongkha - Dzongkha - - - - Ewe - Ewe - - - - Greek - Grekiska - - - - English - Engelska - - - - Esperanto - Esperanto - - - - Spanish - Spanska - - - - Estonian - Estniska - - - - Basque - Baskiska - - - - Persian - Persiska - - - - Fulah - Fula - - - - Finnish - Finska - - - - Fijian - Fijianska - - - - Faroese - Färöiska - - - - French - Franska - - - - Western Frisian - Västfrisiska - - - - Irish - Iriska - - - - Scottish Gaelic - Skotsk gäliska - - - - Galician - Galiciska - - - - Guarani - Guarani - - - - Gujarati - Gujarati - - - - Manx - Manx - - - - Hausa - Hausa - - - - Hebrew - Hebreiska - - - - Hindi - Hindi - - - - Hiri Motu - Hiri motu - - - - Croatian - Kroatiska - - - - Haitian - Haitiska - - - - Hungarian - Ungerska - - - - Armenian - Armeniska - - - - Herero - Herero - - - - Interlingua - Interlingua - - - - Indonesian - Indonesiska - - - - Interlingue - Occidental - - - - Igbo - Igbo - - - - Sichuan Yi - Sichuanesisk yi - - - - Inupiaq - Iñupiaq - - - - Ido - Ido - - - - Icelandic - Isländska - - - - Italian - Italienska - - - - Inuktitut - Inuktitut - - - - Japanese - Japanska - - - - Javanese - Javanesiska - - - - Georgian - Georgiska - - - - Kongo - Kikongo - - - - Kikuyu - Kikuyu - - - - Kwanyama - Kwanyama - - - - Kazakh - Kazakiska - - - - Kalaallisut - Grönländska - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Koreanska - - - - Kanuri - Kanuri - - - - Kashmiri - Kashmiri - - - - Kurdish - Kurdiska - - - - Komi - Komi - - - - Cornish - Korniska - - - - Kirghiz - Kirgiziska - - - - Latin - Latin - - - - Luxembourgish - Luxemburgiska - - - - Ganda - Luganda - - - - Limburgish - Limburgiska - - - - Lingala - Lingala - - - - Lao - Lao - - - - Lithuanian - Litauiska - - - - Luba-Katanga - Luba-katanga - - - - Latvian - Lettiska - - - - Malagasy - Malagassiska - - - - Marshallese - Marshallesiska - - - - Maori - Maori - - - - Macedonian - Makedonska - - - - Malayalam - Malayalam - - - - Mongolian - Mongoliska - - - - Marathi - Marathi - - - - Malay - Malajiska - - - - Maltese - Maltesiska - - - - Burmese - Burmesiska - - - - Nauru - Nauruanska - - - - Norwegian Bokmal - Norska (bokmål) - - - - North Ndebele - Nordndebele - - - - Nepali - Nepali - - - - Ndonga - Ndonga - - - - Dutch - Nederländska - - - - Norwegian Nynorsk - Norska (nynorsk) - - - - Norwegian - Norska - - - - South Ndebele - Sydndebele - - - - Navajo - Navajo - - - - Chichewa - Chichewa - - - - Occitan - Occitanska - - - - Ojibwa - Ojibwa - - - - Oromo - Oromo - - - - Oriya - Oriya - - - - Ossetian - Ossetiska - - - - Panjabi - Punjabi - - - - Pali - Pali - - - - Polish - Polska - - - - Pashto - Pashto - - - - Portuguese - Portugisiska - - - - Quechua - Quechua - - - - Raeto-Romance - Rätoromanska - - - - Kirundi - Kirundi - - - - Romanian - Rumänska - - - - Russian - Ryska - - - - Kinyarwanda - Rwanda - - - - Sanskrit - Sanskrit - - - - Sardinian - Sardiska - - - - Sindhi - Sindhi - - - - Northern Sami - Nordsamiska - - - - Sango - Sango - - - - Serbo-Croatian - Serbokroatiska - - - - Sinhala - Singalesiska - - - - Slovak - Slovakiska - - - - Slovenian - Slovenska - - - - Samoan - Samoanska - - - - Shona - Shona - - - - Somali - Somaliska - - - - Albanian - Albanska - - - - Serbian - Serbiska - - - - Swati - SiSwati - - - - Southern Sotho - Sesotho - - - - Sundanese - Sundanesiska - - - - Swedish - Svenska - - - - Swahili - Swahili - - - - Tamil - Tamil - - - - Telugu - Telugu - - - - Tajik - Tadzjikiska - - - - Thai - Thailändska - - - - Tigrinya - Tigrinska - - - - Turkmen - Turkmeniska - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Turkiska - - - - Tsonga - Tsonga - - - - Tatar - Tatariska - - - - Twi - Twi - - - - Tahitian - Tahitiska - - - - Uighur - Uiguriska - - - - Ukrainian - Ukrainska - - - - Urdu - Urdu - - - - Uzbek - Uzbekiska - - - - Venda - Venda - - - - Vietnamese - Vietnamesiska - - - - Volapuk - Volapük - - - - Walloon - Vallonska - - - - Wolof - Wolof - - - - Xhosa - Xhosa - - - - Yiddish - Jiddisch - - - - Yoruba - Yoruba - - - - Zhuang - Zhuang - - - - Chinese - Kinesiska - - - - Zulu - Zulu - - - - Lojban - Lojban - - - - Traditional Chinese - Kinesiska (traditionell) - - - - Simplified Chinese - Kinesiska (förenklad) - - - - Other - Annat - - - - Other Simplified Chinese dialects - Andra förenklade kinesiska dialekter - - - - Other Traditional Chinese dialects - Andra traditionella kinesiska dialekter - - - - Other Eastern-European languages - Andra östeuropeiska språk - - - - Other Western-European languages - Andra västeuropeiska språk - - - - Other Russian languages - Andra ryska språk - - - - Other Japanese languages - Andra japanska språk - - - - Other Baltic languages - Andra baltiska språk - - - - Other Greek languages - Andra grekiska språk - - - - Other Korean dialects - Andra koreanska dialekter - - - - Other Turkish dialects - Andra turkiska dialekter - - - - Other Thai dialects - Andra thailändska dialekter - - - - Tamazight - Tamazight - - - - LoadDictionaries - - - Error loading dictionaries - Fel vid inläsning av ordlistorna - - - - Main - - - Error in configuration file. Continue with default settings? - Fel i konfigurationsfilen. Vill du använda standardinställningarna istället? - - - - MainWindow - - - - Welcome! - Välkommen! - - - - &File - &Arkiv - - - - &Edit - &Redigera - - - - &Help - &Hjälp - - - - &View - &Visa - - - - &Zoom - &Zooma - - - - H&istory - &Historik - - - - Search - - - - - &Search Pane - &Sökpanel - - - - &Results Navigation Pane - &Resultatpanel - - - - &History Pane - &Historikpanel - - - - &Dictionaries... - &Ordlistor … - - - - F3 - F3 - - - - &Preferences... - &Inställningar … - - - - F4 - F4 - - - - &Homepage - &Webbplats - - - - &About - &Om - - - - About GoldenDict - Om GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Avsluta - - - - Quit from application - Avslutar programmet - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forum - - - - &Close To Tray - &Stäng till meddelandefältet - - - - Minimizes the window to tray - Minimerar programfönstret till meddelandefältet - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Spara artikel - - - - Save Article - Spara artikel - - - - F2 - F2 - - - - &Print - Skriv &ut - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Utskrifts&format - - - - Print Pre&view - Förhands&granska - - - - &Rescan Files - Sök igenom filer &igen - - - - &New Tab - &Ny flik - - - - &Always on Top - &Alltid överst - - - - Always on Top - Alltid överst - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Menyknapp - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Rensa - - - - New Tab - Ny flik - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Konfigurationsfilmapp - - - - - &Show - &Visa - - - - Ctrl+H - Ctrl+H - - - - &Export - &Exportera - - - - &Import - &Importera - - - - &Menubar - &Menyrad - - - - Show Names in Dictionary &Bar - Visa namn i ordliste&fältet - - - - Show Small Icons in &Toolbars - Visa små ikoner i &verktygsfält - - - - &Navigation - &Navigeringsfältet - - - - Back - Bakåt - - - - Forward - Framåt - - - - Scan Popup - Sökpopupruta - - - - Pronounce Word (Alt+S) - Läs upp ord (Alt+S) - - - - Zoom In - Zooma in - - - - Zoom Out - Zooma ut - - - - Normal Size - Normal storlek - - - - - Look up in: - Slå upp i: - - - - Found in Dictionaries: - Träffar hittades i följande ordlistor: - - - - Words Zoom In - Zooma in ord - - - - Words Zoom Out - Zooma ut ord - - - - Words Normal Size - Normal storlek på ord - - - - Show &Main Window - Visa &huvudfönstret - - - - Opened tabs - Öppnade flikar - - - - Close current tab - Stäng aktuell flik - - - - Close all tabs - Stäng alla flikar - - - - Close all tabs except current - Stäng alla flikar utom aktuell flik - - - - Loading... - Läser in … - - - - %1 dictionaries, %2 articles, %3 words - %1 ordlistor, %2 artiklar, %3 ord - - - - Look up: - Slå upp: - - - - All - Alla - - - - Open Tabs List - Öppna lista över flikar - - - - (untitled) - (namnlös) - - - - %1 - %2 - %1 - %2 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Det gick inte att initiera övervakningsmekanismen för kortkommandon.<br>Säkerställ att tillägget RECORD för din XServer är aktiverat. - - - - New Release Available - Ny version tillgänglig - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Version <b>%1</b> av GoldenDict finns nu tillgänglig för hämtning.<br>Klicka på <b>Hämta</b> för att gå till hämtningssidan. - - - - Download - Hämta - - - - Skip This Release - Hoppa över denna version - - - - Now indexing for full-text search: - - - - - - Accessibility API is not enabled - API för hjälpmedel har inte aktiverats - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - You have chosen to hide a menubar. Use %1 to show it back. - Du har valt att dölja en menyrad. Använd %1 för att visa den igen. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Utskriftsformat - - - - No printer is available. Please install one first. - Inga tillgängliga skrivare. Du måste installera eller ansluta dig till en. - - - - Print Article - Skriv ut artikel - - - - Article, Complete (*.html) - Artikel, fullständig (*.html) - - - - Article, HTML Only (*.html) - Artikel, endast HTML (*.html) - - - - Save Article As - Spara artikel som - - - - Error - Fel - - - - Can't save article: %1 - Det gick inte att spara artikeln: %1 - - - - Saving article... - Sparar artikel … - - - - The main window is set to be always on top. - Huvudfönstret har ställts in att alltid ligga överst. - - - - &Hide - &Dölj - - - - Export history to file - Exportera historik till fil - - - - - Text files (*.txt);;All files (*.*) - Textfiler (*.txt);;Alla filer (*.*) - - - - History export complete - Historiken har exporterats - - - - Export error: - Fel vid export: - - - - Import history from file - Importera historik från fil - - - - Import error: invalid data in file - Fel vid import: felaktiga data i fil - - - - History import complete - Historiken har importerats - - - - Import error: - Fel vid import: - - - - Dictionary info - Information om ordlista - - - - Dictionary headwords - - - - - Open dictionary folder - Öppna ordlistans mapp - - - - Edit dictionary - Redigera ordlista - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Ordlistefilen har manipulerats eller är skadad - - - - Failed loading article from %1, reason: %2 - Det gick inte att läsa in en artikel från %1, orsak: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XML-tolkningsfel: %1 på %2, %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XML-tolkningsfel: %1 på %2, %3 - - - - MediaWikisModel - - - Enabled - Aktiverad - - - - Name - Namn - - - - Address - Adress - - - - Icon - Ikon - - - - OrderAndProps - - - Form - Formulär - - - - Dictionary order: - Ordlisteordning: - - - ... - … - - - - Inactive (disabled) dictionaries: - Inaktiverade ordlistor: - - - - Dictionary information - Information om ordlista - - - - Name: - Namn: - - - - Total articles: - Antal artiklar: - - - - Total words: - Antal ord: - - - - Translates from: - Källspråk: - - - - Translates to: - Målspråk: - - - - Description: - Beskrivning: - - - - Files comprising this dictionary: - Filer som omfattas av ordlistan: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Ändra ordningen genom att dra och släppa objekten i listan. Släpp ordlistor i gruppen "Inaktiverade ordlistor" för att inaktivera dem. - - - - Sort by name - Sortera efter namn - - - - Sort by languages - Sortera efter språk - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Sökväg - - - - Recursive - Rekursiv - - - - Preferences - - - Preferences - Inställningar - - - - &Interface - &Gränssnitt - - - - Tabbed browsing - Flikar - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - I vanliga fall fokuseras en nyöppnad flik omedelbart. -Aktivera detta alternativ för att öppna nya flikar utan -att växla till dem på en gång. - - - - Open new tabs in background - Öppna nya flikar i bakgrunden - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Aktivera detta alternativ för att öppna nya flikar -bredvid den aktuella, aktiva fliken. Annars öppnas -de efter den sista fliken i flikfältet. - - - - Open new tabs after the current one - Öppna nya flikar bredvid den aktuella fliken - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Välj detta alternativ om du inte fill se flikfältet när endast en flik är öppen. - - - - Hide single tab - Dölj fliken och flikfältet om endast en flik är öppen - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl+Tabb bläddrar igenom flikarna i den ordning de senast användes - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - När detta alternativ är aktiverat visas en ikon i meddelandefältet, som kan -användas för att öppna huvudfönstret och utföra andra uppgifter. - - - - Enable system tray icon - Visa ikon i meddelandefältet - - - - With this on, the application starts directly to system tray without showing -its main window. - Aktivera detta alternativ för att öppna programmet direkt i meddelande- -fältet, utan att visa huvudfönstret. - - - - Start to system tray - Starta programmet minimerat i meddelandefältet - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - När detta alternativ är aktiverat kommer ett klick på stängknappen (X) att -minimera fönstret till meddelandefältet istället för att avsluta programmet. - - - - Close to system tray - Stäng till meddelandefältet - - - - Turn this option on if you want to select words by single mouse click - Aktivera detta alternativ om du vill markera ord med ett enkelklick. - - - - Select word by single click - Markera ord med enkelklick - - - - Startup - Programstart - - - - Automatically starts GoldenDict after operation system bootup. - Startar GoldenDict automatiskt efter att operativsystemet har startats. - - - - Start with system - Starta automatiskt när datorn startar - - - - Interface language: - Språk för användargränssnittet: - - - - Display style: - Visningsformat: - - - - Double-click translates the word clicked - Dubbelklick översätter det klickade ordet - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Vanligtvis flyttar ett tryck på Esc-tangenten fokus till sökfältet. -Med detta alternativ aktiverat döljer den istället huvudfönstret. - - - - ESC key hides main window - Esc-tangenten döljer huvudfönstert - - - - Add-on style: - Tilläggsformat: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Justera detta värde för att undvika alltför stora snabbmenyer. - - - - Context menu dictionaries limit: - Högsta antal ordlistor i snabbmenyer: - - - - &Scan Popup - &Sökpopupruta - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - När detta är aktiverat visas en popupruta varje gång som du hovrar -med musspekaren över ett ord på skärmen (Windows) eller markerar -ett ord med musen (Linux). Är alternativet aktiverat kan det slås på -och stängas av från huvudfönstret eller ikonen i meddelandefältet. - - - - Enable scan popup functionality - Aktivera sökpopuprutefunktionen - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Avgör om sökpopuprutelägets standardinställning är PÅ eller AV. Om kryss- -rutan är markerad startar programmet alltid med sökpopuprutan påslagen. - - - - Start with scan popup turned on - Starta med sökpopuprutan påslagen - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - När alternativet är aktiverat visas sökpopuprutan endast om alla de -angivna tangenterna är nedtryckta när ordet markeras. - - - - Only show popup when all selected keys are kept pressed: - Visa endast sökpopuprutan när följande tangenter hålls nedtryckta: - - - - Left Ctrl only - Endast vänster Ctrl-tangent - - - - Left Ctrl - Vänster Ctrl - - - - Right Shift only - Endast höger Skift-tangent - - - - Right Shift - Höger Skift - - - - Alt key - Alt-tangenten - - - - Alt - Alt - - - - Ctrl key - Ctrl-tangenten - - - - Ctrl - Ctrl - - - - Left Alt only - Endast vänster Alt-tangent - - - - Left Alt - Vänster Alt - - - - Shift key - Skift-tangenten - - - - Shift - Skift - - - - Right Alt only - Endast höger Alt-tangent - - - - Right Alt - Höger Alt - - - - Right Ctrl only - Endast höger Ctrl-tangent - - - - Right Ctrl - Höger Ctrl - - - - Left Shift only - Endast vänster Skift-tangent - - - - Left Shift - Vänster Skift - - - - Windows key or Meta key - Windows- eller Meta-tangenten - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - I normala fall kan du bara aktivera en popupruta om -du håller de angivna tangenterna nedtryckta medan -du markerar ett ord. Med detta alternativ aktiverat kan -tangenterna även tryckas ned strax efter att ordet har -markerats. - - - - Keys may also be pressed afterwards, within - Tillåt att tangenter trycks ned efter markering, inom - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - För att undvika falska positiva identifieringar övervakas -tangenterna endast under ett begränsat antal sekunder -efter slutförd markering. Här anges den tidsperioden. - - - - secs - s - - - - Send translated word to main window instead of to show it in popup window - Skicka översatta ord till huvudfönstret istället för att visa dem i popuprutan. - - - - Send translated word to main window - Skicka översatta ord till huvudfönstret - - - - Hotkeys - Kortkommandon - - - - Use the following hotkey to show or hide the main window: - Använd följande kortkommando för att visa eller dölja huvudfönstret: - - - - Use the following hotkey to translate a word from clipboard: - Använd följande kortkommando för att översätta ett ord från Urklipp: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Kortkommandona är globala och fungerar inifrån alla program och i alla sammanhang, förutsatt att GoldenDict körs i bakgrunden. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Obs: Det verkar som att du kör en XServer-version (från X.Org) vars tillägg <b>Record</b> är skadat. Kortkommandon kommer antagligen inte att fungera i GoldenDict. Problemet måste åtgärdas i själva servern. Gå till följande </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">buggrapport</span></a><span style=" color:#ff0000;"> och lämna en kommentar där om du så önskar.</span></p></body></html> - - - - &Audio - L&jud - - - - Pronunciation - Text till tal - - - - Auto-pronounce words in main window - Läs automatiskt upp ord i huvudfönstret - - - - Auto-pronounce words in scan popup - Läs automatiskt upp ord i popuprutan - - - - Playback - Uppspelning - - - - Play audio files via FFmpeg(libav) and libao - Spela upp ljudfiler via FFmpeg(libav) och libao. - - - - Use internal player - Använd intern spelare - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Välj detta alternativ för att automatiskt dölja stora artiklar. - - - - Collapse articles more than - Dölj artiklar längre än - - - - Articles longer than this size will be collapsed - Artiklar som är längre än följande antal tecken kommer att komprimeras. - - - - symbols - tecken - - - - Use any external program to play audio files - Använd ett externt program för att spela upp ljudfiler. - - - - Use external program: - Använd externt program: - - - - &Network - &Nätverk - - - - Enable if you wish to use a proxy server -for all program's network requests. - Aktivera detta alternativ om du vill använda -en proxyserver för programmets alla nätverks- -förfrågningar. - - - - Use proxy server - Använd proxyserver - - - - Type: - Typ: - - - - Host: - Värd: - - - - Port: - Port: - - - - User: - Användare: - - - - Password: - Lösenord: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Om du aktiverar detta alternativ blockerar GoldenDict de flesta av de -annonser som finns på olika sidor genom att blockera innehåll (bilder, ramar) -som inte ursprungligen kommer från webbplatsen du surfar på. Om en -webbplats slutar fungera p.g.a. det här, testa att inaktivera alternativet. - - - - Disallow loading content from other sites (hides most advertisements) - Blockera inläsning av innehåll från andra webbplatser (döljer merparten av annonserna) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Detta alternativ låter dig lyssna till ljudfiler, där uppslagsordet -uttalas, från webbordlistor som använder Flash eller andra webb- -insticksmoduler. Insticksmodulerna måste vara installerade för att -detta alternativ skall fungera. - - - - Enable web plugins - Aktivera webbinsticksmoduler - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Vissa webbplatser identifierar GoldenDict m.h.a. HTTP-huvuden och -blockerar alla förfrågningar. Aktivera detta alternativ för att lösa -det problemet. - - - - Do not identify GoldenDict in HTTP headers - Identifiera inte GoldenDict i HTTP-huvuden - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - När detta alternativ är aktiverat kontrollerar -programmet med jämna mellanrum om det finns -en ny, uppdaterad version av GoldenDict. Om så -är fallet informerar programmet användaren om -saken och ber denna att öppna en hämtningssida. - - - - Check for new program releases periodically - Sök med jämna mellanrum efter nya programversioner - - - - Ad&vanced - A&vancerat - - - - ScanPopup extra technologies - Ytterligare teknologier för sökpopuprutan - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Försök att använda IAccessibleEx-teknologi för att hämta ett ord -under muspekaren. Denna teknologi fungerar endast med program -som stöder den (t.ex. Internet Explorer 9). Om du inte använder -sådana program, så behöver du inte aktivera det här alternativet. - - - - Use &IAccessibleEx - Använd &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Försök att använda UI Automation-teknologi för att hämta ett ord -under muspekaren. Denna teknologi fungerar endast med program -som stöder den. Om du inte använder sådana program, så behöver -du inte aktivera det här alternativet. - - - - Use &UIAutomation - Använd &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Försök att använda ett särskilt GoldenDict-meddelandei för att hämta -ett ord under muspekaren. Denna teknologi fungerar endast med program -som stöder den. Om du inte använder sådana program, så behöver -du inte aktivera det här alternativet. - - - - Use &GoldenDict message - Använd &GoldenDict-meddelande - - - - History - Historik - - - - Turn this option on to store history of the translated words - Aktivera detta alternativ för att lagra en historik över översatta ord. - - - - Store &history - Lagra &historik - - - - Specify the maximum number of entries to keep in history. - Ange det maximala antalet poster som får behållas i historiken. - - - - Maximum history size: - Största historikstorlek: - - - - History saving interval. If set to 0 history will be saved only during exit. - Sparintervall för historiken. Ange till 0 för att endast spara historiken vid programavslut. - - - - Save every - Spara var - - - - minutes - minut - - - - Articles - Artiklar - - - - Turn this option on to always expand optional parts of articles - Aktivera detta alternativ för att alltid visa valfria delar av artiklar. - - - - Expand optional &parts - Visa valfria &delar - - - - System default - Systemstandard - - - - - Default - Standard - - - - Modern - Modernt - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes (blå) - - - - Changing Language - Språkbyte - - - - Restart the program to apply the language change. - Starta om programmet för att verkställa bytet av språk. - - - - ProgramTypeEditor - - - Audio - Ljud - - - - Plain Text - Oformaterad text - - - - Html - HTML - - - - Prefix Match - Prefixmatchning - - - - Unknown - Okänd - - - - Programs::RunInstance - - - No program name was given. - Inget programnamn har angivits. - - - - The program has crashed. - Programmet har kraschat. - - - - The program has returned exit code %1. - Programmet returnerade avslutningskoden %1. - - - - ProgramsModel - - - Enabled - Aktiverad - - - - Type - Typ - - - - Name - Namn - - - - Command Line - Kommandorad - - - - Icon - Ikon - - - - QObject - - - - Article loading error - Artikelinläsningsfel - - - - - Article decoding error - Artikelavkodningsfel - - - - avformat_alloc_context() failed. - avformat_alloc_context() misslyckades. - - - - av_malloc() failed. - av_malloc() misslyckades. - - - - avio_alloc_context() failed. - avio_alloc_context() misslyckades. - - - - avformat_open_input() failed: %1. - avformat_open_input() misslyckades: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() misslyckades: %1. - - - - Could not find audio stream. - Det gick inte att hitta ljudströmmen. - - - - Codec [id: %1] not found. - Det gick inte att hitta kodeken [id: %1]. - - - - avcodec_open2() failed: %1. - avcodec_open2() misslyckades: %1. - - - - Cannot find usable audio output device. - Det gick inte att hitta en användbar utdataenhet för ljud. - - - - Unsupported sample format. - Sampelformatet stöds inte. - - - - ao_open_live() failed: - ao_open_live() misslyckades: - - - - No driver. - Ingen drivrutin. - - - - This driver is not a live output device. - Denna drivrutin är inte en ansluten utdataenhet. - - - - A valid option key has an invalid value. - En giltig alternativnyckel har ett ogiltigt värde. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Det gick inte att öppna enheten: %1, kanaler: %2, hastighet: %3, bitar: %4. - - - - Unknown error. - Okänt fel. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() misslyckades. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Sök i/filtrera ordlista (Ctrl+F) - - - - Quick Search - Snabbsökning - - - - Clear Search - Rensa sökning - - - - ResourceToSaveHandler - - - - ERROR: %1 - FEL: %1 - - - - Resource saving error: - Fel när resurs skulle sparas: - - - - The referenced resource failed to download. - Det gick inte att hämta den refererade resursen. - - - - Romaji - - - Hepburn Romaji for Hiragana - Romanisering för hiragana enl. Hepburn-systemet - - - - Hepburn Romaji for Katakana - Romanisering för katakana enl. Hepburn-systemet - - - - RussianTranslit - - - Russian Transliteration - Translitterering av ryska - - - - ScanPopup - - - Dialog - Dialog - - - - Back - Bakåt - - - - - - - - ... - … - - - - Forward - Framåt - - - - Pronounce Word (Alt+S) - Läs upp ord (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Skicka ord till huvudfönstret (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Visar/döljer ordlistefältet - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Klicka här för att nåla fast rutan så att den stannar kvar på skärmen. -Rutan kan storleksändras och hanteras på andra sätt. - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Sökväg - - - - Name - Namn - - - - Icon - Ikon - - - - Sources - - - Files - Filer - - - - Paths to search for the dictionary files: - Sökvägar där programmet skall söka efter ordlistefiler: - - - - - - - - - &Add... - &Lägg till … - - - - - - - - - &Remove - Ta &bort - - - - Re&scan now - &Sök igenom - - - - Sound Dirs - Ljudmappar - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Skapa ordlistor från samlingar av ljudfiler genom att lägga till sökvägar här: - - - - Morphology - Morfologi - - - - Path to a directory with Hunspell/Myspell dictionaries: - Sökväg till mapp som inehåller Hunspell-/Myspell-ordlistor: - - - - &Change... - &Bläddra … - - - - Available morphology dictionaries: - Tillgängliga mofologiska ordlistor: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Varje mofologisk ordlista visas som en -separat hjälpordlista, som tillhandahåller -ordstammar för sök- och stavningsförslag -till felstavade ord. Lägg till ordlistorna -nederst i därtill passande grupper för att -använda dem. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikiwebbplatser (MediaWiki): - - - - Websites - Webbplatser - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Ange de webbplatser du vill använda. Strängen %GDWORD% ersätts av sökordet vid sökning: - - - - Programs - Program - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Uppläsning av ord från <a href="http://www.forvo.com/">forvo.com</a>, en webbplats som låter människor spela in och dela uttal av ord. Du kan lyssna på inspelningarna inifrån GoldenDict. - - - - Enable pronunciations from Forvo - Aktivera orduppläsningar från Forvo - - - - API Key: - API-nyckel: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - För närvarande krävs en API-nyckel för att kunna använda -Forvo. Lämna fältet tomt för att använda standardnyckeln, -som kan komma att bli otillgänglig i framtiden, eller registrera -dig på webbplatsen för att få din egen nyckel. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Skaffa en egen nyckel <a href="http://api.forvo.com/key/">här</a> eller lämna fältet tomt för att använda standardnyckeln. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Du kan också använda %GD1251% för Windows-1251, %GDISO1%-%GDISO16% för ISO 8859-1 till ISO 8859-16, -%GDBIG5% för Big5, %GDBIG5HKSCS% för Big5-HKSCS, %GDGBK% för GBK och GB18030, samt %GDSHIFTJIS% för Shift JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Ange de program du vill använda. Strängen %GDWORD% ersätts av sökordet. Om strängen inte finns kommer sökordet att matas in som standardindata. - - - - Language codes (comma-separated): - Språkkoder: - - - - List of language codes you would like to have. Example: "en, ru". - Lista över språkkoder för de som du vill ha tillgång till. Exempel: "en, fr, sv". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Avgränsa språkkoderna med kommatecken. En fullständig lista över språkkoder finns tillgänglig <a href="http://www.forvo.com/languages-codes/">här</a>. - - - - Transliteration - Translitterering - - - - Russian transliteration - Translitterering av ryska - - - - Greek transliteration - Translitterering av grekiska - - - - German transliteration - Translitterering av tyska - - - - Belarusian transliteration - Translitterering av vitryska - - - - Enables to use the Latin alphabet to write the Japanese language - Låter dig använda det latinska alfabetet för att skriva på japanska - - - - Japanese Romaji - Romanisering av japanska - - - - Systems: - System: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Den mest utbredda metoden för transkribering av japanska, -baserad på engelsk fonologi. - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Det regelbundnaste systemet, med direkta motsvarigheter i -stavelseskriftsystemet kana. Standardiserat som ISO 3602. - -Har ännu inte implementerats i GoldenDict. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Baserat på Nihon-shiki, men anpassat till modern standardjapanska. -Standardiserat som ISO 3602. - -Har ännu inte implementerats i GoldenDict. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Stavelseskrifter: - - - - Hiragana Japanese syllabary - Den japanska stavelseskriften hiragana. - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Den japanska stavelseskriften katakana. - - - - Katakana - Katakana - - - - Text to Speech - Text till tal - - - - (not available in portable version) - (inte tillgängligt i den portabla versionen) - - - - - - Choose a directory - Välj en mapp - - - - - - - - - Confirm removal - Bekräfta borttagning - - - - - Remove directory <b>%1</b> from the list? - Vill du ta bort mappen <b>%1</b> ur listan? - - - - - - Remove site <b>%1</b> from the list? - Vill du ta bort webbplatsen <b>%1</b> ur listan? - - - - Remove program <b>%1</b> from the list? - Vill du ta bort programmet <b>%1</b> ur listan? - - - - StylesComboBox - - - None - Ingen - - - - TextToSpeechSource - - - Selected voice engines: - Valda talmoduler: - - - - &Add - &Lägg till - - - - &Remove - Ta &bort - - - - Preferences - Inställningar - - - - Volume: - Volym: - - - - Rate: - Hastighet: - - - - Preview - Förhandsgranskning - - - - Available voice engines: - Tillgängliga talmoduler: - - - - Text to be previewed: - Text som skall förhandsgranskas: - - - - Type text to be previewed here. - Skriv texten du vill förhandsgranska här. - - - - &Preview - &Förhandsgranska - - - - No TTS voice available - Inga text till tal-moduler tillgängliga - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Det gick inte att hitta någon tillgänglig talmodul.<br>Säkerställ att åtminstone en talmodul finns installerad på din dator. - - - - Confirm removal - Bekräfta borttagning - - - - Remove voice engine <b>%1</b> from the list? - Vill du ta bort talmodulen <b>%1</b> ur listan? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Ange ett ord eller en fras för att söka i ordlistor - - - - Drop-down - Rullgardinsmeny - - - - VoiceEnginesModel - - - Enabled - Aktiverad - - - - Name - Namn - - - - Id - ID - - - - Icon - Ikon - - - - WebSitesModel - - - Enabled - Aktiverad - - - - Name - Namn - - - - Address - Adress - - - - Icon - Ikon - - - - WordFinder - - - Failed to query some dictionaries. - Det gick inte att fråga några av ordlistorna. - - - - WordList - - - WARNING: %1 - VARNING: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tg_TJ.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tg_TJ.ts deleted file mode 100644 index 6113a95868..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tg_TJ.ts +++ /dev/null @@ -1,4893 +0,0 @@ - - - - - About - - - About - Дар бораи барнома - - - - GoldenDict dictionary lookup program, version - Луғати GoldenDict, версияи - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Константин Исаков (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - Иҷозатномаи GNU GPLv3 ё навтар - - - - Credits: - Рӯйхати тарҷумонҳо: - - - - [Unknown] - [Номаълум] - - - - Based on Qt %1 (%2, %3 bit) - Дар Qt %1 (%2, %3 бит) асос меёбад - - - - ArticleMaker - - - Expand article - Баркушодани мақола - - - - Collapse article - Печондани мақола - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Ягон тарҷума барои <b>%1</b> дар гурӯҳи <b>%2</b> ёфт нашудааст. - - - - No translation was found in group <b>%1</b>. - Ягон тарҷума дар гурӯҳи <b>%1</b> ёфт нашудааст. - - - - Welcome! - Хуш омадед! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Хуш омадед ба луғати <b>GoldenDict</b>!</h3><p>Барои оғози кор бо луғат, пеш аз ҳама ба <b>Танзимот|Луғатҳо</b> гузаред ва файлҳои луғатҳои лозимиро илова кунед, сайтҳои Wikipedia ё сайтҳои дигарро насб кунед, тартиби луғатҳоро таъин кунед ё гурӯҳҳои луғатро эҷод кунед.<p>Баъд аз ин шумо метавонед калимаҳоро тарҷума кунед! Шумо метавонед калимаҳоро бо истифодаи лавҳаи чапи ин равзана тарҷума кунед, ё шумо метавонед <a href="Тарҷума бо равзанаи пайдошаванда">калимаҳоро дар барномаҳои дигар тарҷума кунед</a>. <p>Барои насб кардани танзимоти шахсӣ, хусусиятҳои дастрасиро дар <b>Танзимот|Хусусиятҳо</b> истифода баред. Ҳамаи танзимоти ин барнома дорои маслиҳат мебошанд. Агар ягон мушкилӣ дошта бошед, мутмаин шавед, ки он маслиҳатҳоро хонед.<p>Барои маълумоти муфассал, гирифтани кӯмак, ҷавобу саволҳо, маслиҳатҳо ё ҳалли масъалаҳои дигар, шумо метавонед <a href="http://goldendict.org/forum/">форуми луғатро</a> истифода баред.<p>Барои гирифтани навсозиҳои барнома <a href="http://goldendict.org/">вебсайти луғатро</a> истифода баред. <p>(c) 2008-2013 Константин Исаков. Иҷозатномаи GPLv3 ё навтар. - - - - Working with popup - Тарҷума бо равзанаи пайдошаванда - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Тарҷума бо равзанаи пайдошаванда</h3>Барои тарҷума кардани калимаҳо дар барномаҳои дигар, пеш аз ҳама шумо бояд <i>"Хусусияти тарҷумаи пайдошавандаро"</i> дар <b>Хусусиятҳо</b> фаъол кунед. Дар оянда шумо метавонед ин хусусиятро ба воситаи зеркунии тугмаи "Тарҷумаи пайдошаванда" фаъол кунед, ё шумо метавонед ин хусусиятро бо зеркунии нишонаи панел аз менюи пайдошуда фаъол кунед. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Баъд аз фаъол кардани хусусияти тарҷумаи пайдошаванда курсори мушро ба болои калимаи дилхоҳ ҷойгир кунед, ва равзана бо тарҷумаҳо бояд барои шумо пайдо шавад. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Баъд аз фаъол кардани хусусияти тарҷумаи пайдошаванда, калимаи дилхоҳро дар барномаи дигар бо нишондиҳандаи муш интихоб кунед (ба калимаи дилхоҳ дубора зер кунед) ва равзана бо тарҷумаҳо бояд барои шумо пайдо шавад. - - - - (untitled) - (беном) - - - - (picture) - (тасвир) - - - - ArticleRequest - - - Expand article - Баркушодани мақола - - - - From - Аз - - - - Collapse article - Печондани мақола - - - - Query error: %1 - Хатои дархост: %1 - - - - Close words: - Калимаҳои наздик: - - - - Compound expressions: - Ифодаҳои алоқадор: - - - - Individual words: - Калимаҳои шахсӣ: - - - - ArticleView - - - Form - Шакл - - - - about:blank - - - - - x - x - - - - Find: - Ҷустуҷӯ: - - - - - &Previous - &Пешина - - - - - &Next - &Навбатӣ - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Аломатҳои хурду калон - - - - Highlight &all - Ҳамаашро ҷу&до кунед - - - - Resource - Манбаъ - - - - Audio - Аудио - - - - TTS Voice - Овози TTS (Матн ба талаффуз) - - - - Picture - Тасвир - - - - Video - Видео - - - - Video: %1 - Видео: %1 - - - - Definition from dictionary "%1": %2 - Таъриф аз луғати "%1": %2 - - - - Definition: %1 - Маъно: %1 - - - GoldenDict - Луғати GoldenDict - - - - - The referenced resource doesn't exist. - Манбаъи ишорашуда вуҷуд надорад. - - - - The referenced audio program doesn't exist. - Барномаи аудиоии ишорашуда вуҷуд надорад. - - - - - ERROR: %1 - ХАТОГӢ: %1 - - - - Save sound - Захира кардани садо - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Файлҳои садоӣ (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Ҳамаи файлҳо (*.*) - - - - Save image - Захира кардани тасвир - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Файлҳои тасвирӣ (*.bmp *.jpg *.png *.tif);;Ҳамаи файлҳо (*.*) - - - Resource saving error: - Хатои захиракунии манбаъ: - - - - &Open Link - &Пайвандро кушодан - - - - Open Link in New &Tab - Пайвандро дар &варақаи нав кушодан - - - - Open Link in &External Browser - Пайвандро дар &браузер кушодан - - - - Save &image... - Захира &кардани тасвир... - - - - Save s&ound... - Захира &кардани садо... - - - - &Look up "%1" - "%1"-ро &дарёфт кардан - - - - Look up "%1" in &New Tab - "%1"-ро дар варақаи &нав дарёфт кардан - - - - Send "%1" to input line - Фиристодани "%1" ба хати ворида - - - - - &Add "%1" to history - &Илова кардани "%1" ба таърих - - - - Look up "%1" in %2 - "%1"-ро дар %2 дарёфт кардан - - - - Look up "%1" in %2 in &New Tab - "%1"-ро дар %2 дар варақаи &нав дарёфт кардан - - - - WARNING: FFmpeg Audio Player: %1 - ОГОҲӢ: Плеери аудиоии FFmpeg: %1 - - - Playing a non-WAV file - Файли ғайри-WAV иҷро шуда истодааст - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Барои фаъол кардани иҷрои файлҳои ғайри WAV, лутфан ба Танзимот|Хусусиятҳо гузаред, варақаи аудиоро интихоб кунед ва имконоти "Ба воситаи DirectShow иҷро кунед"-ро дар он ҷо интихоб кунед. - - - Bass library not found. - Китобхонаи басс ёфт нашудааст. - - - Bass library can't play this sound. - Китобхои басс ин садоро пахш карда наметавонад. - - - - Failed to run a player to play sound file: %1 - Барои иҷрои файли аудиоӣ кушоиши плеер қатъ карда шуд: %1 - - - - Failed to create temporary file. - Эҷодкунии файли муваққатӣ қатъ карда шуд. - - - - Failed to auto-open resource file, try opening manually: %1. - Кушоиши файл ба таври худкор қатъ карда шуд, кӯшиш кунед, ки онро ба таври дастӣ кушоед: %1. - - - - WARNING: %1 - ОГОҲӢ: %1 - - - - Select Current Article - Интихоб кардани мақолаи ҷорӣ - - - - Copy as text - Нусха бардоштан ҳамчун матн - - - - Inspect - Тафтиш кардан - - - - The referenced resource failed to download. - Боргирии манбаъи ишорашуда қатъ карда шуд. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Транслитератсияи забони белорусӣ аз лотинӣ ба кириликӣ (классикӣ ё дурустнависӣ) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Транслитератсияи забони белорусӣ аз лотинӣ ба кириликӣ (мактабӣ ё дурустнависӣ) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Транслитератсияи белорусӣ (ҳамворкунии фарқият байни -классикӣ ва мактабӣ ё дурустнависӣ дар кириликӣ) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - Санҷиши ҳаққонияти прокси лозим аст - - - - You need to supply a Username and a Password to access via proxy - Барои пайдо кардани дастрасӣ тавассути прокси, шумо бояд номи корбар ва паролро ваорид кунед - - - - Username: - Номи корбар: - - - - Password: - Парол: - - - - DictGroupWidget - - - Form - Шакл - - - - Group icon: - Нишонаи гурӯҳ: - - - - Shortcut: - Миёнбур: - - - - None - Ҳеҷ чиз - - - - From file... - Аз файли... - - - - Choose a file to use as group icon - Файлро барои истифода ҳамчун нишонаи гурӯҳ интихоб кунед - - - - Images - Тасвирҳо - - - - All files - Ҳамаи файлҳо - - - - Error - Хато - - - - Can't read the specified image file. - Файли тасвири интихобшуда кушода нашуд. - - - - DictGroupsWidget - - - - - - Dictionaries: - Луғатҳо: - - - - Confirmation - Тасдиқ - - - - Are you sure you want to generate a set of groups based on language pairs? - Шумо мутмаин ҳастед, ки мехоҳед дастаи гурӯҳҳоро дар асоси ҷуфтҳои забонӣ эҷод кунед? - - - - Unassigned - Азқайдгирифта - - - - Combine groups by source language to "%1->" - Муттаҳид кардани гурӯҳҳо аз рӯи забони аслӣ ба "%1->" - - - - Combine groups by target language to "->%1" - Муттаҳид кардани гурӯҳҳо аз рӯи забони тарҷума ба "%1->" - - - - Make two-side translate group "%1-%2-%1" - Сохтани гурӯҳи тарҷумаи дусамта "%1-%2-%1" - - - - - Combine groups with "%1" - Муттаҳид кардани гурӯҳҳо бо "%1" - - - - DictHeadwords - - - Search mode - Ҳолати ҷустуҷӯ - - - - This element determines how filter string will be interpreted - Ин унсур муайян мекунад, ки чӣ тавр фитри сатр иҷро мешавад - - - - If checked on the symbols case will be take in account when filtering - Агар интихоб кунед, мавриди аломатҳо ҳангоми филтркунӣ ба ҳисоб гирифта мешавад - - - - Match case - Мавриди мутобиқат - - - - Exports headwords to file - Калимаҳои аввалинро ба файл содир мекунад - - - - Export - Содир кардан - - - - Help - - - - - OK - OK - - - - Press this button to apply filter to headwords list - Барои татбиқ кардани филтр ба рӯйхати калимаҳои аввалин, ин тугмаро зер кунед - - - - Apply - Татбиқ кардан - - - - If checked any filter changes will we immediately applied to headwords list - Агар интихоб кунед, тағйироти филтр ба рӯйхати калимаҳои аввалин дарҳол татбиқ карда мешавад - - - - Auto apply - Табиқи худкор - - - - Filter: - Филтр: - - - - Filter string (fixed string, wildcards or regular expression) - Филтркунии сатрҳо (сатрҳои устувор, ифодаҳои оддӣ ва аломатҳои махсус) - - - - Text - Матн - - - - Wildcards - Аломатҳои махсус - - - - RegExp - Ифодаи оддӣ - - - - Unique headwords total: %1, filtered: %2 - Ҳамагӣ калимаҳои аввалини беҳамто: %1, филтршуда: %2 - - - - Save headwords to file - Захира кардани калимаҳои аввалин ба файл - - - - Text files (*.txt);;All files (*.*) - Файлҳои матнӣ (*.txt);;Ҳамаи файлҳо (*.*) - - - - Export headwords... - Содир кардани калимаҳои аввлин... - - - - Cancel - Бекор кардан - - - - DictInfo - - - Total articles: - Ҳамагӣ мақолаҳо: - - - - Translates from: - Тарҷума аз забони: - - - - Total words: - Ҳамагӣ калимаҳо: - - - - Translates to: - Тарҷума ба забони: - - - - Open folder - Кушодани ҷузвдон - - - - Edit dictionary - Таҳрир кардани луғат - - - - Files comprising this dictionary: - Файлҳои ин луғат: - - - - Description: - Тавсиф: - - - - Show all unique dictionary headwords - Намоиш додани ҳамаи калимаҳои аввалини беҳамтои луғат - - - - Headwords - Калимаҳои аввалин - - - - Edit the dictionary via command: -%1 - Таҳрир кардани луғат тавассути фармон: -%1 - - - - DictListModel - - - %1 entries - %1 вуруд - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Фаъолшуда - - - - Name - Ном - - - - Address - Суроға - - - - Databases - - - - - Strategies - - - - - Icon - - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Лавҳаи луғат - - - - &Dictionary Bar - &Лавҳаи луғат - - - - Extended menu with all dictionaries... - Менюи васеъшуда бо ҳамаи луғатҳо... - - - - Edit this group - Гурӯҳи зеринро таҳрир кардан - - - - Dictionary info - Иттилооти луғат - - - - Dictionary headwords - Калимаҳои аввалини луғат - - - - Open dictionary folder - Кушодани ҷузвдони луғат - - - - Edit dictionary - Таҳрир кардани луғат - - - - EditDictionaries - - - Dictionaries - Луғатҳо - - - - &Sources - &Сарчашмаҳо - - - - - &Dictionaries - &Луғатҳо - - - - - &Groups - &Гурӯҳҳо - - - - Sources changed - Сарчашмаҳо тағйир дода шудаанд - - - - Some sources were changed. Would you like to accept the changes? - Баъзе сарчашмаҳо тағйир дода шудаанд. Шумо мехоҳед ин тағйиротро қабул кунед? - - - - Accept - Қабул кардан - - - - Cancel - Бекор кардан - - - - ExternalViewer - - - the viewer program name is empty - номи нишондиҳандаи барнома холӣ аст - - - - FTS::FtsIndexing - - None - Ҳеҷ - - - - FTS::FullTextSearchDialog - - - Full-text search - Ҷустуҷӯ дар тамоми матн - - - - Whole words - Калимаҳои пурра - - - - Plain text - Матни оддӣ - - - - Wildcards - Аломатҳои махсус - - - - RegExp - Ифодаи оддӣ - - - - Max distance between words (%1-%2): - Масофаи ҳадди аксар байни калимаҳо (%1-%2): - - - - Max articles per dictionary (%1-%2): - Ҳадди аксари ифодаҳо дар ҳар як луғат (%1-%2): - - - - - - Articles found: - Мақолаҳои ёфтшуда: - - - - Now indexing: - Мураттабсозӣ: - - - - None - - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - Хати ҷустуҷӯ бояд ақаллан як калимаро бо - - - - or more symbols - ё якчанд аломатро дар бар гирад - - - - No dictionaries for full-text search - Ягон луғат барои ҷустуҷӯи матни пурра вуҷуд надорад - - - - FTS::Indexing - - None - Ҳеҷ - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Хатои таҳлили XML: %1 дар %2,%3 - - - - Added %1 - %1 илова шуд - - - - by - аз - - - - Male - Мард - - - - Female - Зан - - - - from - аз - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Ба Танзимот|Луғатҳо|Сарчашмаҳо||Forvo гузаред ва барои ҳал кардани ин хато калиди API-и худро татбиқ кунед. - - - - FullTextSearchDialog - - - - Search - Ҷустуҷӯ - - - - Match case - Мавриди мутобиқат - - - - Mode: - Ҳолат: - - - - Articles found: - Мақолаҳои ёфтшуда: - - - - Available dictionaries in group: - Луғатҳои дастрас дар гурӯҳ: - - - - Wait for indexing: - Дар ҳоли интизори мураттабсозӣ: - - - - Help - - - - Non-indexable: - Ғайри мураттаб: - - - - Total: - Ҳамагӣ: - - - - Indexed: - Мураттабшуда: - - - - Now indexing: None - Мураттабсозӣ: Ҳеҷ - - - - Cancel - Бекор кардан - - - - GermanTranslit - - - German Transliteration - Транслитератсияи олмонӣ - - - - GreekTranslit - - - Greek Transliteration - Транслитератсияи юнонӣ - - - - GroupComboBox - - - Choose a Group (Alt+G) - Интихоб кардани гурӯҳ (Alt+G) - - - - GroupSelectorWidget - - - Form - Шакл - - - - Look in - Ҷустуҷӯ дар - - - - Groups - - - Dictionaries available: - Луғатҳои дастрас: - - - - Add selected dictionaries to group (Ins) - Луғатҳои интихобшударо ба гурӯҳ илова кардан (тугмаи Ins) - - - - > - > - - - - Ins - Тугмаи Ins - - - - Remove selected dictionaries from group (Del) - Луғатҳои интихобшударо аз гурӯҳ тоза кардан (тугмаи Del) - - - - < - < - - - - Del - Тугмаи Del - - - - Groups: - Гурӯҳҳо: - - - - Tab 2 - Варақаи 2 - - - - Create new dictionary group - Гурӯҳи нави луғатро эҷод кардан - - - - &Add group - &Гурӯҳро илова кардан - - - - Create language-based groups - Гурӯҳи забондонро эҷод кардан - - - - Auto groups - Гурӯҳҳои худкор - - - - Rename current dictionary group - Номи гурӯҳи луғати ҷориро иваз кардан - - - - Re&name group - &Номи гурӯҳро иваз кардан - - - - Remove current dictionary group - Гурӯҳи луғати ҷориро тоза кардан - - - - &Remove group - &Гурӯҳро тоза кардан - - - - Remove all dictionary groups - Ҳамаи гурӯҳҳои луғатро тоза кардан - - - - - Remove all groups - Ҳамаи гурӯҳҳоро тоза кардан - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Луғатҳоро аз гурӯҳҳо ва ба гурӯҳҳо кашида монед, онҳоро дар дохили гурӯҳҳо таҳвил диҳед ва тартиби гурӯҳҳоро тав&ассути муш иваз кунед. - - - - Group tabs - Гурӯҳбандии варақаҳо - - - - Open groups list - Кушодани рӯйхати гурӯҳҳо - - - - Add group - Гурӯҳро илова кардан - - - - Give a name for the new group: - Ба гурӯҳи нав ном гузоштан: - - - - Rename group - Номи гурӯҳро иваз кардан - - - - Give a new name for the group: - Ба гурӯҳ номи нав гузоштан: - - - - Remove group - Гурӯҳро тоза кардан - - - - Are you sure you want to remove the group <b>%1</b>? - Шумо мутмаин ҳастед, ки мехоҳед гурӯҳи <b>%1</b>-ро тоза кунед? - - - - Are you sure you want to remove all the groups? - Шумо мутмаин ҳастед, ки мехоҳед ҳамаи гурӯҳҳоро тоза кунед? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Ба қафо - - - - Forward - Ба пеш - - - - Zoom In - Бузург кардан - - - - Zoom Out - Хурд кардан - - - - Normal Size - Андозаи муқаррарӣ - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Нест кардани интихобшуда - - - - Copy Selected - Нусха бардоштани интихобшуда - - - - History: - Таърих: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Андозаи таърих: %1 аз %2 - - - - Hunspell - - - Spelling suggestions: - Пешниҳоди санҷиши калима: - - - - %1 Morphology - Морфологияи %1 - - - - HunspellDictsModel - - - Enabled - Фаъолшуда - - - - Name - Ном - - - - Initializing - - - GoldenDict - Initializing - Омодасозии GoldenDict - - - - - Please wait while indexing dictionary - Интизор шавед, луғат татбиқ шуда истодааст - - - - Dictionary Name - Номи луғат - - - - Please wait... - Интизор шавед... - - - - Language - - - Afar - Афарӣ - - - - Abkhazian - Абхозӣ - - - - Avestan - Авестоӣ - - - - Afrikaans - Африкаансӣ - - - - Akan - Аконӣ - - - - Amharic - Амхарӣ - - - - Aragonese - Арагонсӣ - - - - Arabic - Арабӣ - - - - Assamese - Ассамесӣ - - - - Avaric - Аварикӣ - - - - Aymara - Аймараӣ - - - - Azerbaijani - Озарбойҷонӣ - - - - Bashkir - Бошқирдӣ - - - - Belarusian - Белорусӣ - - - - Bulgarian - Булғорӣ - - - - Bihari - Бихарӣ - - - - Bislama - Бислама - - - - Bambara - Бамбара - - - - Bengali - Банголӣ - - - - Tibetan - Тибетӣ - - - - Breton - Бретонӣ - - - - Bosnian - Босниягӣ - - - - Catalan - Каталанӣ - - - - Chechen - Чеченӣ - - - - Chamorro - Чаморроӣ - - - - Corsican - Корсикӣ - - - - Cree - Креӣ - - - - Czech - Чехӣ - - - - Church Slavic - Славянии динӣ - - - - Chuvash - Чувашӣ - - - - Welsh - Уэлсӣ - - - - Danish - Даниягӣ - - - - German - Олмонӣ - - - - Divehi - Дивехӣ - - - - Dzongkha - Дзонгкагӣ - - - - Ewe - Ив - - - - Greek - Юнонӣ - - - - English - Англисӣ - - - - Esperanto - Эсперанто - - - - Spanish - Испанӣ - - - - Estonian - Эстонӣ - - - - Basque - Баскӣ - - - - Persian - Форсӣ - - - - Fulah - Фулахӣ - - - - Finnish - Финӣ - - - - Fijian - Фиҷӣ - - - - Faroese - Фароесӣ - - - - French - Франсавӣ - - - - Western Frisian - Фризиани ғарбӣ - - - - Irish - Ирландӣ - - - - Scottish Gaelic - Шотландӣ-галикӣ - - - - Galician - Галисӣ - - - - Guarani - Гуаранӣ - - - - Gujarati - Гуҷаратӣ - - - - Manx - Манксӣ - - - - Hausa - Хаусагӣ - - - - Hebrew - Яҳудӣ - - - - Hindi - Ҳиндӣ - - - - Hiri Motu - Хири моту - - - - Croatian - Хорватӣ - - - - Haitian - Гаитӣ - - - - Hungarian - Венгерӣ - - - - Armenian - Арманӣ - - - - Herero - Хереро - - - - Interlingua - Интерлингва - - - - Indonesian - Индонезӣ - - - - Interlingue - Интерлингуӣ - - - - Igbo - Игбоӣ - - - - Sichuan Yi - Сичуан Юи - - - - Inupiaq - Инупиакӣ - - - - Ido - Идо - - - - Icelandic - Исландӣ - - - - Italian - Итолиёӣ - - - - Inuktitut - Инуктитутӣ - - - - Japanese - Ҷопонӣ - - - - Javanese - Ёвонӣ - - - - Georgian - Гурҷӣ - - - - Kongo - Конго - - - - Kikuyu - Кикуйю - - - - Kwanyama - Кваняма - - - - Kazakh - Қазоқӣ - - - - Kalaallisut - Гренландӣ - - - - Khmer - Хмерӣ - - - - Kannada - Каннадӣ - - - - Korean - Кореягӣ - - - - Kanuri - Канарӣ - - - - Kashmiri - Кашмирӣ - - - - Kurdish - Курдӣ - - - - Komi - Комӣ - - - - Cornish - Корнишӣ - - - - Kirghiz - Қирғизӣ - - - - Latin - Лотинӣ - - - - Luxembourgish - Люксембургӣ - - - - Ganda - Ганд - - - - Limburgish - Лимбургӣ - - - - Lingala - Лингала - - - - Lao - Лао - - - - Lithuanian - Литвонӣ - - - - Luba-Katanga - Луба-Катанга - - - - Latvian - Латишӣ - - - - Malagasy - Малагасӣ - - - - Marshallese - Маршалӣ - - - - Maori - Маорӣ - - - - Macedonian - Мақдунӣ - - - - Malayalam - Малайаламӣ - - - - Mongolian - Муғулӣ - - - - Marathi - Маратхӣ - - - - Malay - Малайӣ - - - - Maltese - Малтӣ - - - - Burmese - Бурмезӣ - - - - Nauru - Науру - - - - Norwegian Bokmal - Норвегӣ-букмалӣ - - - - North Ndebele - Ндебелӣ-шимолӣ - - - - Nepali - Непалӣ - - - - Ndonga - Ндонга - - - - Dutch - Ҳоландӣ - - - - Norwegian Nynorsk - Норвегӣ-нюнорскӣ - - - - Norwegian - Норвегӣ - - - - South Ndebele - Ндебелӣ-ҷанубӣ - - - - Navajo - Наваҷоӣ - - - - Chichewa - Чичевагӣ - - - - Occitan - Окситанӣ - - - - Ojibwa - Оҷибвагӣ - - - - Oromo - Оромоӣ - - - - Oriya - Ориёӣ - - - - Ossetian - Осетинӣ - - - - Panjabi - Панҷабӣ - - - - Pali - Палӣ - - - - Polish - Полякӣ - - - - Pashto - Паштӯ - - - - Portuguese - Португалӣ - - - - Quechua - Кечуа - - - - Raeto-Romance - Рито-романӣ - - - - Kirundi - Кирундӣ - - - - Romanian - Руминӣ - - - - Russian - Русӣ - - - - Kinyarwanda - Киняруанда - - - - Sanskrit - Санскрит - - - - Sardinian - Сардинӣ - - - - Sindhi - Синдхӣ - - - - Northern Sami - Самии-шимолӣ - - - - Sango - Сангоӣ - - - - Serbo-Croatian - Сербӣ-хорватӣ - - - - Sinhala - Синхала - - - - Slovak - Словакӣ - - - - Slovenian - Словенӣ - - - - Samoan - Самоанӣ - - - - Shona - Шонагӣ - - - - Somali - Сомалӣ - - - - Albanian - Албанӣ - - - - Serbian - Сербӣ - - - - Swati - Сватӣ - - - - Southern Sotho - Сотои ҷанубӣ - - - - Sundanese - Сунданезӣ - - - - Swedish - Шведӣ - - - - Swahili - Свахилӣ - - - - Tamil - Тамилӣ - - - - Telugu - Телугӣ - - - - Tajik - Тоҷикӣ - - - - Thai - Тайӣ - - - - Tigrinya - Тигринӣ - - - - Turkmen - Туркманӣ - - - - Tagalog - Тагалогӣ - - - - Tswana - Тсвана - - - - Tonga - Тонга - - - - Turkish - Туркӣ - - - - Tsonga - Тсонга - - - - Tatar - Тоторӣ - - - - Twi - Тви - - - - Tahitian - Таитӣ - - - - Uighur - Уйғурӣ - - - - Ukrainian - Украинӣ - - - - Urdu - Урдӯ - - - - Uzbek - Ӯзбекӣ - - - - Venda - Венда - - - - Vietnamese - Ветнамӣ - - - - Volapuk - Волапук - - - - Walloon - Валлонӣ - - - - Wolof - Волофӣ - - - - Xhosa - Кхоса - - - - Yiddish - Ибрӣ - - - - Yoruba - Йорубӣ - - - - Zhuang - Чжуанӣ - - - - Chinese - Хитоӣ - - - - Zulu - Зулӯ - - - - Lojban - Лоҷбанӣ - - - - Traditional Chinese - Хитои анъанавӣ - - - - Simplified Chinese - Хитои оддӣ - - - - Other - Дигар - - - - Other Simplified Chinese dialects - Лаҳҷаҳои хитои оддии дигар - - - - Other Traditional Chinese dialects - Лаҳҷаҳои хитои анъанавии дигар - - - - Other Eastern-European languages - Забонҳои аврупои шарқии дигар - - - - Other Western-European languages - Забонҳои аврупои ғарбии дигар - - - - Other Russian languages - Дигар забонҳои русӣ - - - - Other Japanese languages - Дигар забонҳои ҷопонӣ - - - - Other Baltic languages - Дигар забонҳои балтикӣ - - - - Other Greek languages - Дигар забонҳои юнонӣ - - - - Other Korean dialects - Лаҳҷаҳои кореягии дигар - - - - Other Turkish dialects - Лаҳҷаҳои туркии дигар - - - - Other Thai dialects - Лаҳҷаҳои тайии дигар - - - - Tamazight - Тамазайт - - - - LoadDictionaries - - - Error loading dictionaries - Ҳангоми боркунии луғатҳо хатогӣ ба вуҷуд омад - - - - Main - - - Error in configuration file. Continue with default settings? - Хатогӣ дар файли танзимӣ. Бо танзимоти пешфарз давом медиҳед? - - - - MainWindow - - GoldenDict - Луғати GoldenDict - - - - - Welcome! - Хуш омадед! - - - - &File - &Файл - - - - &Edit - &Танзимот - - - - &Help - &Кӯмак - - - - &View - &Намоиш - - - - &Zoom - &Танзими андозаи шрифт - - - - H&istory - &Таърих - - - Search Pane - Лавҳаи ҷустуҷӯ - - - Results Navigation Pane - Лавҳаи натиҷаҳои ҷустуҷӯ - - - - &Search Pane - &Лавҳаи ҷустуҷӯ - - - - &Results Navigation Pane - &Лавҳаи натиҷаҳои ҷустуҷӯ - - - - &History Pane - &Лавҳаи таърих - - - &Dictionaries... F3 - &Луғатҳо... F3 - - - - Search - Ҷустуҷӯ - - - - &Dictionaries... - &Луғатҳо... - - - - F3 - F3 - - - - &Preferences... - &Хусусиятҳо... - - - - F4 - F4 - - - - &Homepage - &Вебсайти луғат - - - - &About - &Дар бораи барнома - - - - About GoldenDict - Дар бораи GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Баромад - - - - Quit from application - Аз барнома баромадан - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Форуми луғат - - - - &Close To Tray - &Ба панҷараки огоҳиҳо печондан - - - - Minimizes the window to tray - Равзанаро ба панҷараки огоҳиҳо мепечонад - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Мақоларо захира кардан - - - - Save Article - Мақоларо захира кардан - - - - F2 - F2 - - - - &Print - &Чоп кардан - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - &Танзими саҳифа - - - - Print Pre&view - &Пешнамоиши чоп - - - - &Rescan Files - &Файлҳоро аз нав коркард кардан - - - - &New Tab - &Варақаи нав - - - - &Always on Top - Ҳамеша дар &боло - - - - Always on Top - Ҳамеша дар боло - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Тугмаи меню - - - - Search in page - Ҷустуҷӯ дар саҳифа - - - - Ctrl+F - Ctrl+F - - - - Full-text search - Ҷустуҷӯ дар матни пурра - - - - Ctrl+Shift+F - Ctrl+Shift+F - - - Print Preview - Пешнамоиши чоп - - - Rescan Files - Файлҳоро аз нав коркард кардан - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Пок кардан - - - - New Tab - Варақаи нав - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Ҷузвдони танзимот - - - - - &Show - &Намоиш додан - - - - Ctrl+H - Ctrl+H - - - - &Export - &Содир кардан - - - - &Import - &Ворид кардан - - - Show Names in Dictionary Bar - Номҳоро дар лавҳаи луғат намоиш додан - - - Show Small Icons in Toolbars - Дар наворҳои абзорҳо нишонаҳои хурдро намоиш додан - - - - &Menubar - &Лавҳаи меню - - - - - Look up in: - Тарҷума дар: - - - - Found in Dictionaries: - Натиҷа дар луғатҳои зерин дарёфт шуд: - - - Navigation - Лавҳаи идоракунӣ - - - - Show Names in Dictionary &Bar - Номҳоро дар &лавҳаи луғат намоиш додан - - - - Show Small Icons in &Toolbars - - - - - &Navigation - &Лавҳаи идоракунӣ - - - - Back - Ба қафо - - - - Forward - Ба пеш - - - - Scan Popup - Тарҷумаи пайдошаванда - - - - Pronounce Word (Alt+S) - Калимаро талаффуз кардан (Alt+S) - - - - Zoom In - Бузург кардан - - - - Zoom Out - Хурд кардан - - - - Normal Size - Андозаи муқаррарӣ - - - - Words Zoom In - Калимаҳоро бузург кардан - - - - Words Zoom Out - Калимаҳоро хурд кардан - - - - Words Normal Size - Андозаи муқаррарӣ - - - - Show &Main Window - &Равзанаи асосиро намоиш додан - - - - Opened tabs - Варақаҳои кушодашуда - - - - Close current tab - Варақаи ҷориро пӯшидан - - - - Close all tabs - Ҳамаи варақаҳоро пӯшидан - - - - Close all tabs except current - Ҳамаи варақаҳоро ба ғайр аз ҷорӣ пӯшидан - - - - Loading... - Бор шуда истодааст... - - - - %1 dictionaries, %2 articles, %3 words - %1 луғат, %2 мақола, %3 калима - - - - Look up: - Тарҷума кардан: - - - - All - Умумӣ - - - - Open Tabs List - Рӯйхати варақаҳоро кушодан - - - - (untitled) - (беном) - - - - %1 - %2 - %1 - %2 - - - - Now indexing for full-text search: - - - - WARNING: %1 - ОГОҲӢ: %1 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Омодасозии механизми назорати тугмаҳои зеркор қатъ карда шуд.<br>Мутмаин шавед, ки имконоти RECORD дар XServer фаъол аст. - - - - New Release Available - Версияи барномаи нав дастрас аст - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Версияи навтарини луғати GoldenDict <b>%1</b> барои боргирӣ дастрас аст.<br>Барои кушодани саҳифаи боргирии барнома, тугмаи <b>Боргириро</b> зер кунед. - - - - Download - Боргирӣ кунед - - - - Skip This Release - Ин версияро нодида гузарондан - - - - - Accessibility API is not enabled - Қобилияти API фаъол нашудааст - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - Сатрҳое, ки дар луғатҳо ҷустуҷӯ карда мешаванд. Аломатҳои махсус '*', '?' ма маҷмӯи аломатҳои '[...]' иҷозат дода намешаванд. -Барои ёфтани аломатҳои '*', '?', '[', ']', аз '\*', '\?', '\[', '\]' истифода баред - - - - You have chosen to hide a menubar. Use %1 to show it back. - Шумо пинҳон кардани лавҳаи менюро интихоб кардед. Барои аз нав намоиш додани лавҳаи меню, %1-ро истифода баред. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Танзими саҳифа - - - - No printer is available. Please install one first. - Ягон принтер дастрас нест. Пеш аз ҳама шумо бояд принтерро танзим кунед. - - - - Print Article - Мақоларо чоп кардан - - - - Article, Complete (*.html) - Мақола, Пурра (*.html) - - - - Article, HTML Only (*.html) - Мақола, танҳо HTML (*.html) - - - - Save Article As - Мақоларо захира кардан ҳамчун - - - Html files (*.html *.htm) - Файлҳои html (*.html *.htm) - - - - Error - Хато - - - - Can't save article: %1 - Мақола захира нашуд: %1 - - - - Saving article... - Захиракунии мақола... - - - - The main window is set to be always on top. - Равзанаи асосӣ ҳамеша дар боло ҷойгир мешавад. - - - - &Hide - &Пинҳон кардан - - - History view mode - Ҳолати намоиши таърих - - - - Export history to file - Таърихро ба файл содир кардан - - - - - Text files (*.txt);;All files (*.*) - Файлҳои матнӣ (*.txt);;Ҳамаи файлҳо (*.*) - - - - History export complete - Содиркунии таърих ба анҷом расид - - - - Export error: - Хатои содиркунӣ: - - - - Import history from file - Ворид кардани таърих аз файл - - - Imported from file: - Воридшуда аз файл: - - - - Import error: invalid data in file - Хатои воридот: маълумоти беэътибор дар файл - - - - History import complete - Воридоти таърих ба анҷом расид - - - - Import error: - Хатои воридот: - - - - Dictionary info - Иттилооти луғат - - - - Dictionary headwords - Калимаҳои аввалини луғат - - - - Open dictionary folder - Кушодани ҷузвдони луғат - - - - Edit dictionary - Таҳрир кардани луғат - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Файли луғат тағйир ёфт ё вайрон шуд - - - - Failed loading article from %1, reason: %2 - Боркунии мақола аз %1 қатъ шуд; сабаб: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Хатои таҳлили XML: %1 дар %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Хатои таҳлили XML: %1 дар %2,%3 - - - - MediaWikisModel - - - Enabled - Фаъолшуда - - - - Name - Ном - - - - Address - Суроға - - - - Icon - Аломат - - - - OrderAndProps - - - Form - Шакл - - - - Dictionary order: - Тартиби луғатҳо: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Луғатҳои ғайрифаъол (хомӯшшуда): - - - - Dictionary information - Маълумоти луғат - - - - Name: - Ном: - - - - Total articles: - Ҳамагӣ мақолаҳо: - - - - Total words: - Ҳамагӣ калимаҳо: - - - - Translates from: - Тарҷума аз забони: - - - - Translates to: - Тарҷума ба забони: - - - - Description: - Тавсиф: - - - - Files comprising this dictionary: - Файлҳои луғат: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Ба воситаи ҷойгузин кардани объектҳо тартибро танзим намоед. Барои хомӯш кардани луғатҳо, онҳоро ба гурӯҳи ғайрифаъол интиқол диҳед. - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - - - - Sort by name - Мураттабсозӣ аз рӯи ном - - - - Sort by languages - Мураттабсозӣ аз рӯи забон - - - - Dictionary headwords - Калимаҳои аввалини луғат - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Масир - - - - Recursive - Фаъол/ғайрифаъол кардани луғат - - - - Preferences - - - Preferences - Хусусиятҳо - - - - &Interface - &Интерфейс - - - - Tabbed browsing - Варақаҳои тарҷума - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Одатан, ҳангоми кушодани варақаи нав шумо онро ба воситаи табдилдиҳӣ -дарҳол дидан мекунед. Аммо, фаъол кардани ин имконот варақаҳои -навро бе табдилдиҳӣ кушода мекунад. - - - - Open new tabs in background - Варақаҳои навро дар равзанаи асосӣ кушодан - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Фаъол кардани ин имконот варақаҳои навро пас аз варақаи -кушодашуда мекушояд. Агар ин имконотро фаъол намекунед -варақаҳои нав дар охири рӯйхат кушода мешаванд. - - - - Open new tabs after the current one - Варақаҳои навро пас аз варақаи ҷорӣ кушодан - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Имконоти зеринро интихоб кунед, агар ҳангоми кушода будани варақаи ягона нахоҳед лавҳаи варақаҳоро намоиш диҳед. - - - - Hide single tab - Варақаи ягонаро пинҳон кардан - - - - Ctrl-Tab navigates tabs in MRU order - Тугмабандии Ctrl-Tab варақаҳоро дар тартиби MRU табдил мекунад - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Агар имконоти зерин фаъол бошад, нишонаи луғат дар панели система пайдо мешавад, -ва шумо аз он ҷо метавонед равзанаи асосии барномаро кушоед ва амалҳои дигарро иҷро кунед. - - - - Enable system tray icon - Нишонаи луғатро дар панҷараки огоҳиҳо фаъол кардан - - - - With this on, the application starts directly to system tray without showing -its main window. - Агар имконоти зерин фаъол бошад, ҳангоми кушоиши луғат танҳо нишонаи он дар панҷараки огоҳиҳо -пайдо мешавад ва равзанаи асосии он нишон дода намешавад. - - - - Start to system tray - Баъд аз оғози барнома онро танҳо дар панҷараки огоҳиҳо намоиш додан - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Агар имконоти зерин фаъол бошад, кӯшиши хомушкунӣ барномаро танҳо -пинҳон мекунад. - - - - Close to system tray - Ҳангоми пӯшидани луғат онро ба панҷараки огоҳиҳо пинҳон кардан - - - - Startup - Оғози кор - - - - Automatically starts GoldenDict after operation system bootup. - Луғати GoldenDict-ро ҳангоми боркунии системаи оператсионӣ ба таври худкор оғоз мекунад. - - - - Start with system - Луғатро якҷоя бо системаи оператсионӣ оғоз кардан - - - - Interface language: - Забони интерфейс: - - - - Display style: - Мавзӯи луғат: - - - - Double-click translates the word clicked - Зеркунии дубора калимаи зершударо тарҷума мекунад - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Одатан, бо зеркунии тугмаи ESC нишондиҳандаи муш ба сатри тарҷума гузаронида мешавад. -Вале бо фаъолкунии ин имконот, равзанаи асосӣ пинҳон карда мешавад. - - - - ESC key hides main window - Тугмаи ESC равзанаи асосиро пинҳон мекунад - - - - Turn this option on if you want to select words by single mouse click - Агар шумо мехоҳед калимаҳоро бо зеркунии ягонаи тугмаи муш интихоб намоед, шумо бояд ин имконотро фаъол созед - - - - Select word by single click - Зеркунии ягона калимаро интихоб мекунад - - - - Add-on style: - Сабки иловагӣ: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Танзим кардани ин қимат барои рад кардани менюҳои марбути бузург. - - - - Context menu dictionaries limit: - Ҳудуди луғатҳои менюи марбуд: - - - - &Scan Popup - &Тарҷумаи пайдошаванда - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Агар имконоти зерин фаъол бошад, ҳангоми нишондиҳии ягон калима (дар Windows) -ё интихоб кардани ягон калима (дар Linux) бо муш равзанаи пайдошаванда бо тарҷумаи -он калима намоиш дода мешавад. Агар фаъол бошад, шумо метавонед инро аз равзанаи асосӣ -ё панели система хомӯш кунед ё аз нав фаъол созед. - - - - Enable scan popup functionality - Хусусияти тарҷумаи пайдошавандаро фаъол кардан - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Барои фаъол ё хомӯш кардани тарҷумаи пайдошаванда, имконоти зеринро истифода баред. -Агар ин имконотро интихоб мекунед, тарҷумаи пайдошаванда ба худкор фаъол мешавад. - - - - Start with scan popup turned on - Барномаро бо хусусияти тарҷумаи пайдошаванда оғоз кардан - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Бо имконоти фаъолшудаи зерин, тарҷумаи пайдошаванда намоиш дода мешавад, -агар ҳангоми интихоби калима ҳамаи тугмаҳои интихобшуда зер карда шаванд. - - - - Only show popup when all selected keys are kept pressed: - Тарҷумаи пайдошаваандаро танҳо ҳангоми зеркунии тугмаҳои интихобшуда намоиш додан: - - - - Left Ctrl only - Танҳо Ctrl-и чап - - - - Left Ctrl - Ctrl-и чап - - - - Right Shift only - Танҳо Shift-и рост - - - - Right Shift - Shift-и рост - - - - Alt key - Тугмаи Alt - - - - Alt - Alt - - - - Ctrl key - Тугмаи Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Танҳо Alt-и чап - - - - Left Alt - Alt-и чап - - - - Shift key - Тугмаи Shift - - - - Shift - Shift - - - - Right Alt only - Танҳо Alt-и рост - - - - Right Alt - Alt-и рост - - - - Right Ctrl only - Танҳо Ctrl-и рост - - - - Right Ctrl - Ctrl-и рост - - - - Left Shift only - Танҳо Shift-и чап - - - - Left Shift - Shift-и чап - - - - Windows key or Meta key - Тугмаи Windows ё Meta - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Одатан, барои фаъол кардани тарҷумаи пайдошаванда шумо -бояд тугмаҳои интихобшударо дар баробари интихобкунии калима -зер кунед. Агар шумо имконоти зеринро интихоб мекунед, метавонед -тугмаҳои интихобшударо баъд аз интихобкунии калима зер кунед. - - - - Keys may also be pressed afterwards, within - Зеркунии тугмаҳои интихобшуда баъд аз - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Чтобы избавитӣся ложных срабатываний, после выделения слова -клавиши опрашиваются только в течение ограниченного -промежутка времени, который и задается здесь. - Барои намоиш додани тарҷумаи пайдошаванда баъд аз -интихобкунии калима, шумо бояд тугмаҳои интихобшударо дар -муддати сонияҳои таъйиншуда зер кунед. Агар тугмаҳоро баъд -аз муддати таъйиншуда зер мекунед, тарҷума пайдо намешавад. - - - - secs - сония - - - - Send translated word to main window instead of to show it in popup window - Калимаи тарҷумашударо ба ҷои равзанаи пайдошаванда дар равзанаи асосӣ нишон диҳед - - - - Send translated word to main window - Калимаи тарҷумашударо дар равзанаи нишон диҳед - - - - Hotkeys - Тугмаҳои тезкор - - - - Use the following hotkey to show or hide the main window: - Барои пинҳон ва намоиш додани равзанаи асосӣ тугмаҳои зеринро истифода баред: - - - - Use the following hotkey to translate a word from clipboard: - Барои тарҷума кардани калимаҳо аз ҳофизаи система тугмаҳои зеринро истифода баред: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Тугмаҳои интихобшудаи тезкор ҳамаҷониба мебошанд, вале танҳо ҳангоми фаъол будани луғати GoldenDict бо ягон барнома ё матн кор мекунанд. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Дар хотир доред, ки: Шумо версияи барномаи X.Org XServer-ро истифода мебаред, ки дорои RECORD-и вайроншуда мебошад. Эҳтимол, тугмаҳои тезкор дар GoldenDict кор намекунанд. Ин мушкилӣ бояд дар худи сервер ҳал карда шавад. Гузоришро барои </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">ворид кардани маълумоти хато дар ин ҷо</span></a><span style=" color:#ff0000;"> пайдо кунед ва агар хоҳиш доред маслиҳати худро дар он ҷо пешниҳод кунед.</span></p></body></html> - - - - &Audio - &Аудио - - - - Pronunciation - Талаффуз - - - - Auto-pronounce words in main window - Талаффузи худкори калимаҳо дар равзанаи асосӣ - - - - Auto-pronounce words in scan popup - Талаффузи худкори калимаҳо дар тарҷумаи пайдошаванда - - - - Playback - Иҷрои аудио - - - - Play audio files via FFmpeg(libav) and libao - Пахш кардани файлҳои аудиоӣ тавассути FFmpeg(libav) ва libao - - - - Use internal player - Истифодаи плеери дарунӣ - - - - System proxy - Прокси система - - - - Custom proxy - Прокси фармоишӣ - - - - Custom settings - Танзимоти прокси - - - - Full-text search - Ҷустуҷӯи матни пурра - - - - Allow full-text search for: - Иҷозати матни пурра барои ҷустуҷӯ: - - - - Don't search in dictionaries containing more than - Ҷустуҷӯ накардан дар луғатҳо бо зиёда аз - - - - articles (0 - unlimited) - мақолаҳо (0 - номаҳдуд) - - - - Select this option to automatic collapse big articles - Интихоб кардани ин имконот барои печондани мақолаҳои калон ба таври худкор - - - - Collapse articles more than - Печондани мақолаҳо зиёда аз - - - - Articles longer than this size will be collapsed - Мақалаҳои зиёда аз ин андоза мухтасар мешаванд - - - Artiles longer than this size will be collapsed - Мақолаҳое, ки зиёда аз ин андоза мебошанд, печонида мешаванд - - - - symbols - аломат - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Windows API-ро барои иҷрои аудио истифода баред. Танҳо файлҳои .wav иҷро мешаванд, -вале сифати ин имконот хеле баланд аст. - - - Play via Windows native API - Ба воситаи Windows API иҷро кунед - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Файлҳои аудиоиро ба воситаи барномаи Phonon иҷро кунед. Ин имконот бисёр файлҳои -аудиоиро дастгирӣ мекунад, вале баъзе файлҳо иҷро карда намешаванд. - - - Play via Phonon - Ба воситаи Phonon иҷро кунед - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Файлҳои аудиоиро таввасути Китобхонаи басс пахш кунед. Интихоби беҳтарин: Барои истифодаи ин ҳолат -шумо бояд файли "bass.dll"-ро (http://www.un4seen.com) ба ҷузвдони GoldenDict ҷойгир кунед. - - - Play via Bass library - Ба воситаи Китобхонаи басс иҷро кунед - - - - Use any external program to play audio files - Ягон барномаи беруниро барои иҷрои файлҳои аудиоӣ истифода баред - - - - Use external program: - Ба воситаи барномаи дигар иҷро кунед: - - - - &Network - &Шабака - - - - Enable if you wish to use a proxy server -for all program's network requests. - Агар шумо мехоҳед сервери proxy-ро барои ҳамаи дархостҳои -шабака истифода баред шумо бояд ин имконотиро фаъол кунед. - - - - Use proxy server - Сервери proxy-ро истифода баред - - - - Type: - Намуд: - - - - Host: - Мизбон: - - - - Port: - Порт: - - - - User: - Корбар: - - - - Password: - Парол: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Агар шумо имконоти зеринро фаъол мекунед, луғати GoldenDict намоиши рекламаи -тиҷорие (тасвирҳо, эълонҳо), ки ба вебсайти кушодашуда таалуқ надорад, -қатъ мекунад. Агар бо сабаби фаъолкунии ин имконот кушодани вебсайт -имконпазир нест, кӯшиш кунед, ки ин имконотро ғайрифаъол созед. - - - - Disallow loading content from other sites (hides most advertisements) - Намоиши мӯҳтавои тиҷориро аз вебсайтҳои дигар қатъ кунед (рекламаро пинҳон мекунад) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Агар шумо инро фаъол мекунед, ба шумо имкон пайдо мешавад, ки тавонед -талаффузи калимаҳоро аз луғатҳои онлайн дорои Flash ё дигар плагинҳои веб -гӯш кунед. Барои ин имконот шумо бояд плагини мувофиқро сабт кунед. - - - - Enable web plugins - Ҷузъи иловагии вебро фаъол кардан - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Баъзе вебсайтҳо барномаи GoldenDict-ро тавассути сарварақҳои HTTP муайян мекунанд ва дархостҳои барномаро манъ мекунанд. -Барои ҳал кардани ин мушкилӣ, ин имконотро фаъол кунед. - - - - Do not identify GoldenDict in HTTP headers - Пешгирии муайянкунии барномаи GoldenDict-ро дар сарварақҳои HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Агар шумо инро фаъол мекунед, барномаи шумо мавҷуд будани версияи -навтарини луғати GoldenDict-ро барои боргирӣ такроран тафтиш мекунад. -Вақте, ки версияи навтарин барои боргирӣ дастрас мешавад, имконоти зерин -шуморо огоҳ мекунад ва кушодани сайти луғатро пешниҳод мекунад. - - - - Check for new program releases periodically - Мавҷуд будани версияи навро такроран тафтиш кунед - - - - Ad&vanced - &Иловагӣ - - - - ScanPopup extra technologies - Технологияҳои тарҷумаи пайдошавандаи иловагӣ - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Барои тарҷума кардани калимаҳои зери курсор, технологияи IAccessibleEx-ро истифода баред. -Ин технология танҳо бо баъзе барномаҳои дастгиришаванда кор мекунад (масалан Internet Explorer 9). -Агар шумо чунин барномаҳо истифода намебаред, имконоти зеринро истифода набаред. - - - - Use &IAccessibleEx - &IAccessibleEx-ро истифода баред - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Барои тарҷума кардани калимаҳои зери курсор, технологияи UI Automation-ро истифода баред. -Ин технология танҳо бо баъзе барномаҳои дастгиришаванда кор мекунад. -Агар шумо чунин барномаҳо истифода намебаред, имконоти зеринро истифода набаред. - - - - Use &UIAutomation - &UIAutomation-ро истифода баред - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Барои тарҷума кардани калимаҳои зери курсор, дархости махсуси GoldenDict-ро истифода баред. -Ин технология танҳо бо баъзе барномаҳои дастгиришаванда кор мекунад. -Агар шумо чунин барномаҳо истифода намебаред, имконоти зеринро истифода набаред. - - - - Use &GoldenDict message - &Дархости GoldenDict-ро истифода баред - - - - History - Таърих - - - - Turn this option on to store history of the translated words - Барои захира кардани таърихи калимаҳои тарҷумашуда ин имконотро фаъол созед - - - - Store &history - Захира кардани &таърих - - - - Specify the maximum number of entries to keep in history. - Муайян кардани ҳаҷми иттилооти захирашуда дар таърих. - - - - Maximum history size: - Андозаи калонтарини таърих: - - - - History saving interval. If set to 0 history will be saved only during exit. - Фосилаи вақти захиракунии таърих. Агар ба 0 танзим кунед, таърих танҳо дар хуруҷ захира мешавад. - - - - Save every - Захира кардан баъд аз - - - - minutes - дақиқа - - - - Articles - Мақолаҳо - - - - Turn this option on to always expand optional parts of articles - Барои густариш додани қисмҳои интихобии мақолаҳо ин имконотро фаъол созед - - - - Expand optional &parts - Густариш додани &қисмҳои интихобӣ - - - - System default - Системаи пешфарз - - - - - Default - Пешфарз - - - - Modern - Ҳозира - - - - Lingvo - Луғати Lingvo - - - - Babylon - Луғати Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Ба воситаи DirectShow иҷро кунед - - - - Changing Language - Забонро иваз кунед - - - - Restart the program to apply the language change. - Барои татбиқ кардани забони интихобшуда барномаро аз нав оғоз кунед. - - - - ProgramTypeEditor - - - Audio - Аудио - - - - Plain Text - Матни оддӣ - - - - Html - Html - - - - Prefix Match - Аз рӯи префикс - - - - Unknown - Номаълум - - - - Programs::RunInstance - - - No program name was given. - Ягон номи барнома муайян нашуд. - - - - The program has crashed. - Барнома вайрон шуд. - - - - The program has returned exit code %1. - Барнома маънои %1-ро намоиш дод. - - - - ProgramsModel - - - Enabled - Фаъолшуда - - - - Type - Намуд - - - - Name - Ном - - - - Command Line - Сатри иҷрои фармон - - - - Icon - Аломат - - - - QObject - - - - Article loading error - Хатогии боркунии мақола - - - - - Article decoding error - Хатогии рамзкушоии мақола - - - - avformat_alloc_context() failed. - avformat_alloc_context() қатъ шудааст. - - - - av_malloc() failed. - av_malloc() қатъ шудааст. - - - - avio_alloc_context() failed. - avio_alloc_context() қатъ шудааст. - - - - avformat_open_input() failed: %1. - avformat_open_input() қатъ шудааст: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() қатъ шудааст: %1. - - - - Could not find audio stream. - Ҷараёни аудиоӣ ёфт нашуд. - - - - Codec [id: %1] not found. - Кодеки [id: %1] ёфт нашуд. - - - - avcodec_open2() failed: %1. - avcodec_open2() қатъ шудааст: %1. - - - - Cannot find usable audio output device. - Дастгоҳи аудиоии истифодашаванда ёфт нашуд. - - - - Unsupported sample format. - Формати намунаи дастгиринашаванда. - - - - ao_open_live() failed: - ao_open_live() қатъ шудааст: - - - - No driver. - Драйвер надорад. - - - - This driver is not a live output device. - Ин драйвер дастгоҳи барориши мустақим намебошад. - - - - A valid option key has an invalid value. - Калиди имконоти боэътибор дорои қимати нодуруст мебошад. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Ин дастгоҳ кушода намешавад: %1, каналҳо: %2, суръат: %3, битҳо: %4. - - - - Unknown error. - Хатои номаълум. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() қатъ шудааст. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Ҷустуҷӯ/филтри луғат (Ctrl+F) - - - - Quick Search - Ҷустуҷӯи фаврӣ - - - - Clear Search - Пок кардани ҷустуҷӯ - - - - ResourceToSaveHandler - - - - ERROR: %1 - ХАТОГӢ: %1 - - - - Resource saving error: - Хатои захиракунии манбаъ: - - - - The referenced resource failed to download. - Боргирии манбаъи ишорашуда қатъ карда шуд. - - - - Romaji - - - Hepburn Romaji for Hiragana - Системаи Хэпбёрни Ромаҷӣ барои Хирагана - - - - Hepburn Romaji for Katakana - Системаи Хэпбёрни Ромаҷӣ барои Катакана - - - - RussianTranslit - - - Russian Transliteration - Транслитератсияи русӣ - - - - ScanPopup - - - Dialog - Диалог - - - word - калима - - - List Matches (Alt+M) - Рӯйхати мувофиқатҳо (Alt+M) - - - - - - - - ... - ... - - - - Back - Ба қафо - - - - Forward - Ба пеш - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Калимаро талаффуз кардан (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Калимаро ба равзанаи асосӣ гузоштан (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Лавҳаи луғатро пинҳон ё нишон медиҳад - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Барои мустаҳкам кардан равзана дар экран, иваз кардани ҳаҷм, -ё идоракунии хусусиятҳои дигар инро зер кунед. - - - GoldenDict - Луғати GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Масир - - - - Name - Ном - - - - Icon - Аломат - - - - Sources - - - Files - Файлҳо - - - - Paths to search for the dictionary files: - Масирҳо барои ҷустуҷӯи файлҳои луғат: - - - - - - - - - &Add... - &Илова кардан... - - - - - - - - - &Remove - &Тоза кардан - - - - Re&scan now - &Аз нав коркард кардан - - - - Sound Dirs - Ҷузвдонҳои овозҳо - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Луғатҳоро аз файлҳои аудиоӣ (овоздор) эҷод кунед. Масирҳои файлҳои аудиоиро дар зер илова кунед: - - - - Morphology - Морфология - - - - Path to a directory with Hunspell/Myspell dictionaries: - Масири феҳрист бо луғатҳои Hunspell/Myspel: - - - - &Change... - &Тағйир додан... - - - - Available morphology dictionaries: - Луғатҳои морфологии дастрас: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Ҳар як луғати морфология ҳамчун луғати иловагии -ягона истифода мешавад ва решаҳои калимаҳои -нодуруст воридшуда ва вариантҳои навиштани онро -ҳангоми ҷустуҷӯ намоиш медиҳад. -Барои истифодаи луғатҳои муносиб, онҳоро -ба поёни гурӯҳҳои муносиб илова кунед. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Сайтҳои Wikipedia (MediaWiki): - - - - Websites - Вебсайтҳо - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Тамоми вебсайтҳо. Сатри %GDWORD% бо калимаи воридшуда ҷойгузин карда мешавад: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Шумо ҳамчунин метавонед сатри %GD1251%-ро барои рамзгузории CP1251 ва сатри %GDISO1%-ро барои рамзгузории ISO 8859-1 истифода баред. - - - - Programs - Барномаҳо - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Тамоми барномаҳои берунӣ. Сатри %GDWORD% бо калимаи дархостшуда ҷойгузин карда мешавад. Худи калима низ ба сатри вуруди калимаҳо дохил карда мешавад. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Талаффузи фаврӣ аз <a href="http://www.forvo.com/">forvo.com</a>. Вебсайти зерин ба одамон иҷозат медиҳад, ки онҳо тавонанд талаффузи калимаҳоро сабт ва бо дигарон мубодила намоянд. Шумо метавонед калимаҳои сабтшударо аз луғати GoldenDict гӯш кунед. - - - - Enable pronunciations from Forvo - Талаффузро аз Forvo фаъол кардан - - - - API Key: - Калиди API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Барои истифодабарии хадамоти Forvo калиди API лозим аст. Сатри зеринро холӣ монед, -агар хоҳед, ки калиди пешфарзро истифода баред, ки метавонад дар -оянда дастнорас шавад, ё ки барои дархости калиди шахсӣ дар сайт қайд шавед. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Калиди шахсии худро аз <a href="http://api.forvo.com/key/">ин ҷо</a> гиред, ё барои истифодаи калиди пешфарз ин амалро нодида гузаронед. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Калиди шахсиро аз <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">ин ҷо</span></a> дархост кунед, ё ки ин майдонро холӣ монед, то ки калиди пешфарзро истифода баред.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Шумо инчунин метавонед инҳоро истифода баред: %GD1251% барои CP1251, %GDISO1%...%GDISO16% барои ISO 8859-1...ISO 8859-16 ба таври мувофиқ, -%GDBIG5% барои Big-5, %GDBIG5HKSCS% барои Big5-HKSCS, %GDGBK% барои GBK ва GB18030, %GDSHIFTJIS% барои Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Ягон барномаи берунӣ. Сатри %GDWORD% бо калимаи дархостшуда ҷойгузин мешавад. Агар чунин сатр вуҷуд надошта бошад, калима ба вуруди стандартӣ равона мешавад. - - - - Language codes (comma-separated): - Рамзҳои забон (бо вергул ҷудо мешаванд): - - - - List of language codes you would like to have. Example: "en, ru". - Рӯйхати рамзҳои забоне, ки шумо мехоҳед дар бар гиред. Масалан: "en, tg". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Рӯйхати рамзҳои забонҳои пур дар <a href="http://www.forvo.com/languages-codes/">ин ҷо</a> дастрас аст. - - - - Transliteration - Транслитератсия - - - - Russian transliteration - Транслитератсияи русӣ - - - - Greek transliteration - Транслитератсияи юнонӣ - - - - German transliteration - Транслитератсияи олмонӣ - - - - Belarusian transliteration - Транслитератсияи белорусӣ - - - - Enables to use the Latin alphabet to write the Japanese language - Истифодаи алифбои лотиниро барои навиштан бо забони ҷопонӣ фаъол мекунад - - - - Japanese Romaji - Ромаҷии ҷопонӣ - - - - Systems: - Системаҳо: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Машҳуртарин тарзи транскрипткунонии калимаҳои Ҷопонӣ -дар асоси фонологияи Англисӣ иҷро мешавад - - - - Hepburn - Хэпбёрн - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Системаи мувофиқтарин барои навиштан бо скриптҳои Кана. -Дар асоси стандарти ISO 3602 эҷод шудааст. - -Системаи дар боло зикршуда ҳоло дар луғати GoldenDict вуҷуд надорад. - - - - Nihon-shiki - Ниҳон-шикӣ - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Дорои системаи Нихон-шикӣ мебошад, вале барои забони Ҷопонии стандартии -ҳозиразамон тағйир дода шуд. Дар асоси стандарти ISO 3602 эҷод шудааст. - -Системаи дар боло зикршуда ҳоло дар луғати GoldenDict вуҷуд надорад. - - - - Kunrei-shiki - Канрей-шикӣ - - - - Syllabaries: - Алифбои ҳиҷо: - - - - Hiragana Japanese syllabary - Алифбои ҳиҷои Хираганаи ҷопонӣ - - - - Hiragana - Хирагана - - - - Katakana Japanese syllabary - Алифбои ҳиҷои Катаканаи ҷопонӣ - - - - Katakana - Катакана - - - - Text to Speech - Матн ба талаффуз - - - - (not available in portable version) - (дар версияи кӯчондашаванда дастрас нест) - - - - - - Choose a directory - Ҷузвдонро интихоб кунед - - - - - - - - - Confirm removal - Тозакуниро тасдиқ кунед - - - - - Remove directory <b>%1</b> from the list? - Ҷузвдони <b>%1</b>-ро аз рӯйхат тоза мекунед? - - - - - - Remove site <b>%1</b> from the list? - Вебсайти <b>%1</b>-ро аз рӯйхат тоза мекунед? - - - - Remove program <b>%1</b> from the list? - Барномаи <b>%1</b>-ро аз рӯйхат тоза мекунед? - - - - StylesComboBox - - - None - Ҳеҷ чиз - - - - TextToSpeechSource - - - Selected voice engines: - Системаҳои овозии интихобшуда: - - - - &Add - &Илова кардан - - - - &Remove - &Тоза кардан - - - - Preferences - Хусусиятҳо - - - - Volume: - Баландии садо: - - - - Rate: - Суръат: - - - - Preview - Пешнамоиш - - - - Available voice engines: - Системаҳои овозии дастрас: - - - - Text to be previewed: - Матне, ки талаффуз мешавад: - - - - Type text to be previewed here. - Матне, ки мехоҳед талаффуз кунед, ин ҷо нависед. - - - - &Preview - &Пешнамоиш - - - - No TTS voice available - Ягон овози TTS дастрас нест - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Ягон овози TTS дастрас нест.<br>Лутфан, мутмаин шавед, ки ақаллан як системаи TTS дар компютери шумо аллакай насб шудааст. - - - - Confirm removal - Тозакуниро тасдиқ кунед - - - - Remove voice engine <b>%1</b> from the list? - Системаи овозии <b>%1</b> -ро аз рӯйхат нест мекунед? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Барои ҷустуҷӯ дар луғат, калима ё ибораеро ворид кунед - - - - Drop-down - Зоҳиршаванда - - - - VoiceEnginesModel - - - Enabled - Фаъолшуда - - - - Name - Ном - - - - Id - Рақами мушаххас - - - - Icon - Нишона - - - - WebSitesModel - - - Enabled - Фаъолшуда - - - - Name - Ном - - - - Address - Суроға - - - - Icon - Аломат - - - - WordFinder - - - Failed to query some dictionaries. - Дархости баъзе луғатҳо қатъ карда шуд. - - - - WordList - - - WARNING: %1 - ОГОҲӢ: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tk_TM.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tk_TM.ts deleted file mode 100644 index 833197734b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tk_TM.ts +++ /dev/null @@ -1,4847 +0,0 @@ - - - - - About - - - About - Hakynda - - - - GoldenDict dictionary lookup program, version - GoldenDict - sozlükleri açmak üçin programma, wersiýa - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2011 Konstantin Isakow (ikm@goldendict.org) - - - (c) 2008-2011 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2011 Konstantin Isakow (ikm@goldendict.org) - - - - Licensed under GNU GPLv3 or later - GNU GPLv3 we ondan soňky çykan lisenziýasy boýunça - - - - Credits: - Hormatlar: - - - - [Unknown] - [Näbelli] - - - - Based on Qt %1 (%2, %3 bit) - Esaslanýar Qt %1 (%2, %3 bit) - - - - ArticleMaker - - - No translation for <b>%1</b> was found in group <b>%2</b>. - <b>%1</b> üçin <b>%2</b> toparynda hiç terjime tapylmady. - - - - No translation was found in group <b>%1</b>. - <b>%1</b> toparda hiç terjime tapylmady.. - - - - Welcome! - Hoş geldiňiz! - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2011 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Hoş geldiňiz! <b>GoldenDict</b>!</h3><p>Programany ulanyp başlamak üçin, ilki bilent <b>Redaktrile|Dictionaries menýusyna baryň</b> we şol ýerden sözlük faýllaryň ýerleşýän bukjalaryny görkeziň, Wikipedia ýa-da başga çeşmeleri saýlaň, sözlükleriň görkeziş tertibini sazlaň ýa-da sözlükleriň toparyny dörediň.<p>Şondan soň sözleriň terjimesini gözlemäge başlap bolýar! Ony şu penjiräniň sag tarapynda ýerleşýän meýdançadan edip bolýar ýa-da <a href="Ýüzüne çykýan penjire (popup) bilen işlemek">göni başga programmalaryň içinden hem edip bolýar</a>. <p>Programmany sazlamak üçin, serediň <b>Redaktirle|Saýlamalar menýusyna</b>. Şol ýerde ýerleşen ähli sazlamalaryň gysga düşündirişi bar, bir zat düşünmeseňiz olary okamagy unutmaň.<p>Eger goşmaça soragyňyz bar bolsa,maslahat gerek bolsa, pikiriňizi paýlaşmak isleseňiz ýa-da beýleki ulanyjylaryň pikirlerini bilmek isleseňiz <a href="http://goldendict.org/forum/">foruma giriň</a>.<p>Programmanyň <a href="http://goldendict.org/">websaýtyndan</a> täzelikleri bilip bilersiňiz. <p>(c) 2008-2011 Konstantin Isakow. GPLv3 ýa-da soňky çykan lisenziýasy boýunça. - - - - Expand article - Makalany giňelt - - - - Collapse article - Makalany kiçelt - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Hoş geldiňiz! <b>GoldenDict</b></h3><p>Programany ulanyp başlamak üçin, ilki bilen <b>Redaktrile|Dictionaries menýusyna baryň</b> we şol ýerden sözlük faýllaryň ýerleşýän bukjalaryny görkeziň, Wikipedia ýa-da başga çeşmeleri saýlaň, sözlükleriň görkeziş tertibini goýuň ýa-da sözlükleriň toparyny dörediň.<p>Şondan soň sözleriň terjimesini gözlemäge başlap bolýar! Ony şu penjiräniň sag tarapynda ýerleşýän meýdançasyndan edip bolýar ýa-da <a href="Ýüzüne çykýan penjire (popup) bilen işlemek">göni başga programmalaryň içinden hem edip bolýar</a>. <p>Programmany sazlamak üçin, serediň <b>Redaktirle|Saýlamalar menýusyna</b>. Şol ýerde ýerleşen ähli sazlamalaryň gysga düşündirişi bar, bir zat düşünmeseňiz olary okamagy unutmaň.<p>Eger goşmaça soragyňyz bar bolsa,maslahat gerek bolsa, pikiriňizi paýlaşmak isleseňiz ýa-da beýleki ulanyjylaryň pikirlerini bilmek isleseňiz <a href="http://goldendict.org/forum/">foruma giriň</a>.<p>Programmanyň <a href="http://goldendict.org/">websaýtyndan</a> täzelikleri bilip bilersiňiz. <p>(c) 2008-2013 Konstantin Isakow. GPLv3 ýa-da soňky çykan lisenziýasy boýunça. - - - - Working with popup - Ýüzüne çykýan penjire (popup) bilen işlemek - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Ýüze çykýan penjireler ( popup) bilen işlemegiň düzgünleri</h3>Başga programmalaryň içinden sözleri terjime etmek üçin, şuny açmak gerek: <i>"Skan popup"</i> in <b>Saýlamalar menýusynyň içinde ýerleşýär</b>, soň ony Popup nyşany açyp ýa-da aşakdaky panelden myşkanyň sag düwmesine basyp işe göýbermek bolýar. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Ondan soň, başga programmanyň içinde kursory gyzyklanýan sözüň üstüne getiriň - ýüze çykan penjirede onuň düşündirilişi görkeziler. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Ondan soň, başga programmanyň içinde gyzyklanýan sözüňiziň üstüne myşka bilen iki gezek basyň ýa-da bellik ediň,soň- ýüze çykan penjirede onuň düşündirilişi görkeziler. - - - - (untitled) - (atsyz) - - - - (picture) - (surat) - - - - ArticleRequest - - - Expand article - Makalany giňelt - - - - From - Sözlük - - - - Collapse article - Makalany kiçelt - - - - Query error: %1 - Sorag ýalňyşlygy: %1 - - - - Close words: - Ýakyn sözler: - - - - Compound expressions: - Goşma aňlatmalar: - - - - Individual words: - Aýry sözler: - - - - ArticleView - - - Form - Forma - - - - about:blank - barada: boş - - - - x - x - - - - Find: - Tap: - - - - - &Previous - &Yza - - - - - &Next - &Indiki - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &Uly-kiçi harplara duýgurlyk - - - - Highlight &all - Belle&hemmesini - - - - Resource - Çeşme - - - - Audio - Audio - - - - Definition: %1 - Kesgitleme: %1 - - - GoldenDict - GoldenDict - - - - Select Current Article - Şu makalany saýla - - - - Copy as text - Tekst görnüşinde kopiýa et - - - - Inspect - Gözden geçir - - - - TTS Voice - TTS sesi - - - - Picture - Surat - - - - Video - Wideo - - - - Video: %1 - Wideo: %1 - - - - Definition from dictionary "%1": %2 - Adalga şu sözlükden alyndy - "%1": %2 - - - - - The referenced resource doesn't exist. - Salgylanan çeşme ýok. - - - - The referenced audio program doesn't exist. - Salgylanan audio programa ýok. - - - - - ERROR: %1 - ÝALŇYŞLYK: %1 - - - - &Open Link - &Linki aç - - - - Open Link in New &Tab - Linki täze aç &Tab-dan - - - - Open Link in &External Browser - Linki &Daşky Brauzerden aç - - - - Save &image... - Surady &ýatda sakla - ... - - - - Save s&ound... - Ýatda sakla s&esi - ... - - - - &Look up "%1" - &Tap "%1" - - - - Look up "%1" in &New Tab - Tap "%1" in &New Tab - - - - Send "%1" to input line - Iber "%1" girizme setire - - - - - &Add "%1" to history - &Goş "%1" geçmişe - - - - Look up "%1" in %2 - Tap "%1" in %2 - - - - Look up "%1" in %2 in &New Tab - Tap "%1" in %2 in &New Tab - - - - Save sound - Ýatda sakla sesini - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Ses faýllary (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Ähli faýllar (*.*) - - - - Save image - Surady ýatda sakla - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Surat faýllary (*.bmp *.jpg *.png *.tif);;All files (*.*) - - - - WARNING: FFmpeg Audio Player: %1 - DUÝDURYŞ: FFmpeg Audio Player: %1 - - - Wav - WAV-däl faýly oýnatmak - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - WAV-dan daşaryfaýllaryň oýnadylmagy üçin, Redaktirle|Saýlamalar baryň, Audio wkladkasyny saýlaň we şol ýerden DirectShow arkaly oýnatmagy saýlaň. - - - - Failed to run a player to play sound file: %1 - Şu ses faýly açmak üçin gerek bolan pleýeri işledip bolmady: %1 - - - - Failed to create temporary file. - Wagtlaýyn faýly döredip bolmady. - - - - Failed to auto-open resource file, try opening manually: %1. - Çeşme faýly awtomat açyp bolmady, özbaşdak açmaga synanşyň: %1. - - - - WARNING: %1 - ÄGÄ BOLUŇ %1 - - - - The referenced resource failed to download. - Salgylanýan çeşmäni ýükläp almak bolmady. - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Belarus transliterasiýa - latinden kirilisa (klassyk orfografiýa) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Belarus transliterasiýa - latinden kirillisa (mekdep orfografiýa) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Belarus transliterasiýa (klassyk we mekdep kirillisa orfografiýalary arasynda tapawutlaryny sazlaýar) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Parol: - - - - DictGroupWidget - - - Form - Forma - - - - Group icon: - Toparyň nyşany: - - - - Shortcut: - Çalt açar: - - - - None - Hiç birisi - - - - From file... - Şu faýldan... - - - - Choose a file to use as group icon - Topar nyşany hökmünde ulanyljak faýly saýla - - - - Images - Suratlar - - - - All files - Ähli faýllar - - - - Error - Ýalňyş - - - - Can't read the specified image file. - Bellenen şekiliň faýlyny okap bolanok. - - - - DictGroupsWidget - - - - - - Dictionaries: - Sözlükler: - - - - Confirmation - Tassyklama - - - - Are you sure you want to generate a set of groups based on language pairs? - Çyndan hem toparlary dil jübütleriň esasynda gurmak isleýäýäňizmi? - - - - Unassigned - Bellenmedik - - - - Combine groups by source language to "%1->" - Toparlary çeşme dillere görä utgaşdyr - "%1->" - - - - Combine groups by target language to "->%1" - Toparlary terjime dillere görä utgaşdyr - "->%1" - - - - Make two-side translate group "%1-%2-%1" - Iki-taraplaýyn terjime topary ýasa - "%1-%2-%1" - - - - - Combine groups with "%1" - Utgaşdyr toparlary we "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Tekst faýllary (*.txt);;Ähli faýllar (*.*) - - - - Export headwords... - - - - - Cancel - Yza Gaýtar - - - - DictInfo - - - Total articles: - Jemi makala sany: - - - - Translates from: - Terjime edýär şu dilden: - - - - Total words: - Jemi söz sany: - - - - Translates to: - Terjime edýär şu dile: - - - - Open folder - Aç bukjany - - - - Edit dictionary - Sözlügi üýtget - - - - Files comprising this dictionary: - Şu sözlügiň düzümine girýän faýlllar: - - - - Description: - Häsiýetnama: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Sözlügi şu komanda bilen üýtget: -%1 - - - - DictListModel - - - %1 entries - %1 girizmeler - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Işledilen - - - - Name - Ady - - - - Address - Adres - - - - Databases - - - - - Strategies - - - - - Icon - Nyşan - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Sözlük zolagy - - - - &Dictionary Bar - &Sözlük zolagy - - - - Extended menu with all dictionaries... - Ähli sözlükleri görkezýän giňeldilen menýu... - - - - Edit this group - Şu topary üýtget - - - - Dictionary info - Sözlük barada maglumat - - - - Dictionary headwords - - - - - Open dictionary folder - Sözlügiň bukjasyny aç - - - - Edit dictionary - Sözlügi üýtget - - - - EditDictionaries - - - Dictionaries - Sözlükler - - - - &Sources - &Çeşmeler - - - - - &Dictionaries - &Sözlükler - - - - - &Groups - &Toparlar - - - - Sources changed - Çeşmeler üýtgedildi - - - - Some sources were changed. Would you like to accept the changes? - Käbir çeşmeler üýtgedildi. Üýtgeşmeleri kabul etmek isleýäňmi? - - - - Accept - Kabul et - - - - Cancel - Yza Gaýtar - - - - ExternalViewer - - - the viewer program name is empty - Görmek üçin programanyň ady boş - - - - FTS::FtsIndexing - - None - Hiç birisi - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - Hiç birisi - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - FTS::Indexing - - None - Hiç birisi - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XML analizinde ýalňyşlyk: %1 at %2,%3 - - - - Added %1 - Goşuldy %1 - - - - by - - - - - - Male - Erkek - - - - Female - Aýal - - - - from - kimden - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Redkatirle|Dictionaries|Çeşmeler|Forvo açyň we öz API açaryňyzy soraň, şeýlelikde bu ýalňyşlyk ýok bolar. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Yza Gaýtar - - - - Help - - - - - GermanTranslit - - - German Transliteration - Nemes transliterasiýa - - - - GreekTranslit - - - Greek Transliteration - Grek transliterasiýa - - - - GroupComboBox - - - Choose a Group (Alt+G) - Topary saýla (Alt+G) - - - - GroupSelectorWidget - - - Form - Forma - - - - Look in - Seret - - - - Groups - - - Dictionaries available: - Elýeterli sözlükler: - - - - Add selected dictionaries to group (Ins) - Saýlanan sözlükleri topara goş (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Saýlanan sözlükleri topardan aýyr (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Toparlar: - - - - Tab 2 - Tab 2 - - - - Create new dictionary group - Täze sözlük toparyny döret - - - - &Add group - &Topary goş - - - - Create language-based groups - Dil esasynda toparlary döret - - - - Auto groups - Awto toparlar - - - - Rename current dictionary group - Häzirki sözlük toparynyň adyny üýtget - - - - Re&name group - Toparyň adyny&üýtget - - - - Remove current dictionary group - Häzirki sözlük toparyny aýyr - - - - &Remove group - &Topary aýyr - - - - Remove all dictionary groups - Ähli sözlük toparlaryny aýyr - - - - - Remove all groups - Ähli toparlary aýyr - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Süýre&taşla sözlükleri toparyň içine ýa-da daşyna, myşkanyň kömegi bilen toparyň içinde ýerlerini ýa-da tertibini üýtget. - - - - Group tabs - - - - - Open groups list - - - - - Add group - Topary goş - - - - Give a name for the new group: - Täze topara at ber: - - - - Rename group - Toparyň adyny üýtget - - - - Give a new name for the group: - Topara täze adyny ber: - - - - Remove group - Topary aýyr - - - - Are you sure you want to remove the group <b>%1</b>? - <b>%1</b>? topary çyndan hem aýyrmak isleýäňmi? - - - - Are you sure you want to remove all the groups? - Siz çyndanam ähli toparlary aýyrmak isleýärsiňizmi? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Yza gaýt - - - - Forward - - - - - Zoom In - Ulalt - - - - Zoom Out - Kiçelt - - - - Normal Size - Normal ululygy - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Saýlananlary ýok et - - - - Copy Selected - Saýlananlary kopiýa et - - - - History: - Geçmiş: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Geçmişde görkeziljek terjimeleriň göwrümi: %1 girizmeler maksimum %2 - - - - Hunspell - - - Spelling suggestions: - Dürs ýazuw kadalary hödürlemek: - - - - %1 Morphology - %1 Morfologiýa - - - - HunspellDictsModel - - - Enabled - Işledilen - - - - Name - Ady - - - - Initializing - - - GoldenDict - Initializing - GoldenDict - başlangyç - - - - - Please wait while indexing dictionary - Sözlükler indeksirlenýär, garaşyň - - - - Dictionary Name - Sözlügiň ady - - - - Please wait... - Haýyş garaşyň... - - - - Language - - - Afar - Afar - - - - Abkhazian - Abhaz - - - - Avestan - Awest - - - - Afrikaans - Afrikaans - - - - Akan - Akan - - - - Amharic - Amhar - - - - Aragonese - Aragon - - - - Arabic - Arap - - - - Assamese - Assamen - - - - Avaric - Awar - - - - Aymara - Aýmar - - - - Azerbaijani - Azerbeýjan - - - - Bashkir - Başkir - - - - Belarusian - Belarus - - - - Bulgarian - Bolgar - - - - Bihari - Bengal - - - - Bislama - Bihari - - - - Bambara - Bambara - - - - Bengali - Bengal - - - - Tibetan - Tibet - - - - Breton - Breton - - - - Bosnian - Boşnýak - - - - Catalan - Katalon - - - - Chechen - Çeçen - - - - Chamorro - Çamoro - - - - Corsican - Korsika - - - - Cree - Kri - - - - Czech - Çeh - - - - Church Slavic - Gadymy slawýan - - - - Chuvash - Çuvaş - - - - Welsh - Welş - - - - Danish - Daniýa - - - - German - Nemes - - - - Divehi - Diweli - - - - Dzongkha - Jonka - - - - Ewe - Ewe - - - - Greek - Grek - - - - English - Iňlis - - - - Esperanto - Esperanto - - - - Spanish - Ispan - - - - Estonian - Eston - - - - Basque - Bask - - - - Persian - Pars (Parsça) - - - - Fulah - Fula - - - - Finnish - Fin - - - - Fijian - Fijian - - - - Faroese - Friz - - - - French - Fransuz - - - - Western Frisian - Günbatar Friz - - - - Irish - Irland - - - - Scottish Gaelic - Şotland gall - - - - Galician - Galisiýa - - - - Guarani - Guarani - - - - Gujarati - Gujarat - - - - Manx - Manks - - - - Hausa - Hauza - - - - Hebrew - Yewreý - - - - Hindi - Hindi - - - - Hiri Motu - Hindi - - - - Croatian - Horwat - - - - Haitian - Gaiti - - - - Hungarian - Wenger - - - - Armenian - Ermeni - - - - Herero - Herero - - - - Interlingua - Interlingwa - - - - Indonesian - Endoneziýa - - - - Interlingue - Interlingwe - - - - Igbo - Irland - - - - Sichuan Yi - Syçuan Ýi - - - - Inupiaq - Inupak - - - - Ido - Ido - - - - Icelandic - Island - - - - Italian - italiyan - - - - Inuktitut - Inuktikut - - - - Japanese - Ýapon - - - - Javanese - Ýawa - - - - Georgian - Gruzin - - - - Kongo - Kongo - - - - Kikuyu - Kikuýu - - - - Kwanyama - Kwanýama - - - - Kazakh - Gazak - - - - Kalaallisut - Kalaallisut - - - - Khmer - Khmer - - - - Kannada - Kannada - - - - Korean - Koreý - - - - Kanuri - Kanuri - - - - Kashmiri - Kaşmir - - - - Kurdish - Kürt - - - - Komi - Komi - - - - Cornish - Korniş - - - - Kirghiz - Gyrgyz - - - - Latin - Latyn - - - - Luxembourgish - Lýuksemburg - - - - Ganda - Ganda - - - - Limburgish - Limburg - - - - Lingala - Lingala - - - - Lao - Lao - - - - Lithuanian - Litwanýa - - - - Luba-Katanga - Luba-katanga - - - - Latvian - Latyş - - - - Malagasy - Malagazi - - - - Marshallese - Marşal - - - - Maori - Maori - - - - Macedonian - Makedon - - - - Malayalam - Malaý - - - - Mongolian - Mongol - - - - Marathi - Marati - - - - Malay - Malaý - - - - Maltese - Malta - - - - Burmese - Birma - - - - Nauru - Nauru - - - - Norwegian Bokmal - Norwegiýa bokmal - - - - North Ndebele - Demirgazyk Ndbele - - - - Nepali - Nepal - - - - Ndonga - Ndonga - - - - Dutch - Golland - - - - Norwegian Nynorsk - Norwegiýa Ninorsk - - - - Norwegian - Norweg - - - - South Ndebele - Günorta Ndbele - - - - Navajo - Nawaho - - - - Chichewa - Çiçewa - - - - Occitan - Okkitan - - - - Ojibwa - Ojibwe - - - - Oromo - Oromo - - - - Oriya - Oriwa - - - - Ossetian - Osetin - - - - Panjabi - Panjabi - - - - Pali - Pali - - - - Polish - Polýak - - - - Pashto - Puştu - - - - Portuguese - Portugal - - - - Quechua - Keçua - - - - Raeto-Romance - Rito-Roman - - - - Kirundi - Kirundu - - - - Romanian - Rumyn - - - - Russian - Rus - - - - Kinyarwanda - Kinýarwanda - - - - Sanskrit - Sanskrit - - - - Sardinian - Sardin - - - - Sindhi - Sindhi - - - - Northern Sami - Demirgazyk Sami - - - - Sango - Sango - - - - Serbo-Croatian - Singala - - - - Sinhala - Sinhala - - - - Slovak - Slowak - - - - Slovenian - Slowen - - - - Samoan - Samoa - - - - Shona - Şona - - - - Somali - Somali - - - - Albanian - Alban - - - - Serbian - Serb - - - - Swati - Swati - - - - Southern Sotho - Günorta Soto - - - - Sundanese - Sundan - - - - Swedish - Şwed - - - - Swahili - Swahili - - - - Tamil - Tamil - - - - Telugu - Telügü - - - - Tajik - Täjik - - - - Thai - tayland - - - - Tigrinya - Tigrinýa - - - - Turkmen - Türkmen - - - - Tagalog - Tagalog - - - - Tswana - Tswana - - - - Tonga - Tonga - - - - Turkish - Türki - - - - Tsonga - Tsonga - - - - Tatar - Tatar - - - - Twi - Twi - - - - Tahitian - Taiti - - - - Uighur - Uýgur - - - - Ukrainian - Ukrain - - - - Urdu - Urdu - - - - Uzbek - Özbek - - - - Venda - Wenda - - - - Vietnamese - Vetnam - - - - Volapuk - Wolapuk - - - - Walloon - Walon - - - - Wolof - Wolof - - - - Xhosa - Kosa - - - - Yiddish - Idiş - - - - Yoruba - Ýoruba - - - - Zhuang - Žuang - - - - Chinese - Hytay - - - - Zulu - Zulus - - - - Lojban - Ložban - - - - Traditional Chinese - Adaty Hytaý - - - - Simplified Chinese - Ýönekeýleşdirlen Hytaý - - - - Other - Başgalar - - - - Other Simplified Chinese dialects - Başga ýönekeýleşdirlen Hytaý şiweleri - - - - Other Traditional Chinese dialects - Başga adaty Hytaý şiweleri - - - - Other Eastern-European languages - Başga Gündogar-Ýewropa dilleri - - - - Other Western-European languages - Başga Günbatar-Ýewropa dilleri - - - - Other Russian languages - Başga rus dilleri - - - - Other Japanese languages - Başga ýapon dilleri - - - - Other Baltic languages - Başga baltik dilleri - - - - Other Greek languages - Başga grek dilleri - - - - Other Korean dialects - Başga koreýa dilleri - - - - Other Turkish dialects - Başga türki dilleri - - - - Other Thai dialects - Başga tailand dilleri - - - - Tamazight - Tamazigt - - - - LoadDictionaries - - - Error loading dictionaries - Sözlük ýüklenende ýalňyşlyk çykdy - - - - Main - - - Error in configuration file. Continue with default settings? - Konfigurasiýa faýlynda ýalňyşlyk bar. Başlangyç sazlamalar bilen dowam etjekmi? - - - - MainWindow - - GoldenDict - GoldenDict - - - - - Welcome! - Hoş geldiňiz! - - - - &File - &Faýl - - - - &Edit - &Redaktirle - - - - &Help - &Kömek - - - - &View - &Görnüş - - - - &Zoom - &Ulalt - - - - H&istory - &Geçmiş - - - Search Pane - Gözleg tagtasy - - - Results Navigation Pane - Gözleg tagtasyndaky netijeler - - - &Dictionaries... F3 - &Sözlükler... F3 - - - - Search - - - - - &Search Pane - &Gözleg tagtasy - - - - &Results Navigation Pane - &Nawigasiýa tagtasyndan netijeler - - - - &History Pane - &Geçmiş tagtasy - - - - &Dictionaries... - &Sözlükler... - - - - F3 - F3 - - - - &Preferences... - &Saýlamalar... - - - - F4 - F4 - - - - &Homepage - &Baş sahypa - - - - &About - &Maglumat - - - - About GoldenDict - GoldenDict barada - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Çyk - - - - Quit from application - Programadan çyk - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Forum - - - - &Close To Tray - &Panel içine buk - - - - Minimizes the window to tray - Penjireleri paneliň içinde gizlemek - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Makalany ýatda sakla - - - - Save Article - Ýatda sakla - - - - F2 - F2 - - - - &Print - &Çap et - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - Sahypany &sazla - - - - Print Pre&view - Çap edilen &görnüşi - - - - &Rescan Files - &Faýllary täzeden gözden geçirmek - - - - &New Tab - &Täze wkladka - - - - - &Show - &Görkez - - - - Ctrl+H - Ctrl+H - - - - &Export - &Eksport - - - - &Import - &Import - - - - &Always on Top - &Mydama ýokarda - - - - Always on Top - Mydama ýokarda - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Menýu düwmesi - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Çap edilen görnüşi - - - Rescan Files - Faýllary täzeden skanerlemek - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Arassala - - - - New Tab - Täze wkladka - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Konfigurasiýa bukjasy - - - Show Names in Dictionary Bar - Sözlük tagtasynda atlary görkez - - - Show Small Icons in Toolbars - Gurallar zolagynda nyşanlary kiçi et - - - - &Menubar - &Menýu zolagy - - - - - Look up in: - Tap şu ýerde: - - - - Found in Dictionaries: - Sözlüklerden tapylan: - - - Navigation - Nawigasiýa - - - - Back - Yza gaýt - - - - Forward - Ugrukdyr - - - - Scan Popup - Skan popup - - - - Pronounce Word (Alt+S) - Sözi eşitdirmek (Alt+S) - - - - Zoom In - Ulalt - - - - Zoom Out - Kiçelt - - - - Normal Size - Normal ululygy - - - - Words Zoom In - Sözleri ulalt - - - - Words Zoom Out - Sözleri kiçelt - - - - Words Normal Size - Sözleriň normal ululygy - - - - Show &Main Window - Görkez &Esasy penjiräni - - - - Close current tab - Şu wagtky wkladkany ýap - - - - Close all tabs - Ähli açyk wkladkalary ýap - - - - Close all tabs except current - Şu wagtky açylandan daşary ähli başga wkladkalary ýap - - - - Loading... - Ýüklenip alynýar... - - - - - Accessibility API is not enabled - API elýeterli edilmedik - - - - %1 dictionaries, %2 articles, %3 words - %1 sözlükler, %2 makalalar, %3 sözler - - - - Look up: - Tap: - - - - All - Ählisi - - - - Saving article... - Makala ýatda saklanýar... - - - - The main window is set to be always on top. - Baş penjire mydama ýokarda durar ýaly edilen. - - - - &Hide - &Gizle - - - - Export history to file - Geçmişi faýl görnüşinde eksport et - - - - - Text files (*.txt);;All files (*.*) - Tekst faýllary (*.txt);;Ähli faýllar (*.*) - - - - History export complete - Geşmiş eksport edildi - - - - Export error: - Eksport ýalnyşlygy: - - - - Import history from file - Faýldan geçmişi import et - - - - Import error: invalid data in file - Import ýalňyşlygy: faýlda nädogry maglumatlar bar - - - - History import complete - Geçmiş import edildi - - - - Import error: - Import ýalňyşlygy: - - - - Dictionary info - Sözlük barada maglumat - - - - Dictionary headwords - - - - - Open dictionary folder - Sözlügiň bukjasyny aç - - - - Edit dictionary - Sözlügi üýtget - - - - Now indexing for full-text search: - - - - - Opened tabs - Açyk wkladkalar - - - - Show Names in Dictionary &Bar - Sözlük &tagtasynda atlary görkez - - - - Show Small Icons in &Toolbars - Kiçi nyşanlary görkez &gurallar-tagtasynda - - - - &Navigation - &Nawigasiýa - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Open Tabs List - Açyk wkladkalaryň sanawy - - - - (untitled) - (atsyz) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - ÄGÄ BOLUŇ %1 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - - - - New Release Available - Täze neşir elýeterli - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - - - - Download - Ýükläp almak - - - - Skip This Release - Şu neşiri böküp geç - - - - You have chosen to hide a menubar. Use %1 to show it back. - Siz menýu zolagyny gizlemägi saýladyňyz. %1 ulanyp ýenede çykaryp görkez. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Sahypany sazlamak - - - - No printer is available. Please install one first. - Printer ýok. Ilki bilen gurna ony. - - - - Print Article - Makalany çap et - - - - Article, Complete (*.html) - Makala, taýýar (*.html) - - - - Article, HTML Only (*.html) - Makala, HTML diňe (*.html) - - - - Save Article As - Makalany şular ýaly ýatda sakla - - - Html files (*.html *.htm) - Html faýllar (*.html *.htm) - - - - Error - Ýalňyş - - - - Can't save article: %1 - Makalany ýatda saklap bolmady %1 - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Sözlük faýly bozuldy ýa-da zaýa boldy - - - - Failed loading article from %1, reason: %2 - %1-den/dan makalany ýükläp bolmady, sebäbi: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XML analizinde ýalňyşlyk: %1 at %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XML analizinde ýalňyşlyk: %1 at %2,%3 - - - - MediaWikisModel - - - Enabled - Işledilen - - - - Name - Ady - - - - Address - Adres - - - - Icon - Nyşan - - - - OrderAndProps - - - Form - Forma - - - - Dictionary order: - Sözlügiň tertibi: - - - ... - ... - - - - Inactive (disabled) dictionaries: - Işjeň däl (öçürilen) sözlükler: - - - - Dictionary information - Sözlük barada maglumat - - - - Name: - Ady: - - - - Total articles: - Jemi makala sany: - - - - Total words: - Jemi söz sany: - - - - Translates from: - Terjime edýär şu dilden: - - - - Translates to: - Terjime edýär şu dile: - - - - Description: - Häsiýetnama: - - - - Files comprising this dictionary: - Şu sözlügiň düzümine girýän faýlllar: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Içine zatlary süýräp we taşlap tertibini üýtgedip bolýar. Sözlükleri öçürmek üçin, olary aktiw däl toparyna taşlamaly. - - - - Sort by name - Ady boýunça sortla - - - - Sort by languages - Dili boýunça sorla - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Ýol - - - - Recursive - Rekursiw - - - - Preferences - - - Preferences - Saýlamalar - - - - &Interface - &Interfeýs - - - - Tabbed browsing - Wkladkaly agdaryp seretmek - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - - - - Open new tabs in background - Yzynda täze wkladkalary aç - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - - - - Open new tabs after the current one - Täze wkladkalary şu wagtky wkladkadan soň aç - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Select this option if you don't want to see the main tab bar when only a single tab is opened. - - - - Hide single tab - Ýeke wkladkany gizle - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - - - - Enable system tray icon - Sistema paneli nyşany görkez - - - - With this on, the application starts directly to system tray without showing -its main window. - With this on, the application starts directly to system tray without showing -its main window. - - - - Start to system tray - Sistema panelinden başlat - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - With this on, an attempt to close main window would hide it instead of closing -the application. - - - - Close to system tray - Sistema panelinden ýap - - - - Startup - Başlangyç - - - - Automatically starts GoldenDict after operation system bootup. - Operasion ulgam açylandan soň, GoldenDict öz işini awtomat başlar. - - - - Start with system - Sistema bilen bile b - - - - Interface language: - Interfeýs dili: - - - - Display style: - Görkeziş usuly: - - - - Double-click translates the word clicked - Sözüň üstünde iki gezek basylanda ol terjime edilýär - - - - Add-on style: - Add-on stili: - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - - - - ESC key hides main window - ESC düwmesini basmak bilen baş penjire ýapylýar - - - - Turn this option on if you want to select words by single mouse click - Şuny aç eger-de sözleri bir gezek myşka bilen basyp saýlamak isleseň - - - - Select word by single click - Sözleri bir gezek myşka bilen basyp saýlamak - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab arkaly wkladkalary MRU tertipde nawigasiýa edilýär - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Şu bahany sazlap juda uly kontekst menýularyň öňüni almak mümkin. - - - - Context menu dictionaries limit: - Kontekst menýu sözlükleriň çägi: - - - - &Scan Popup - &Skan popup - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - - - - Enable scan popup functionality - Skan ýüze çykarmagyna rugsat ber - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - - - - Start with scan popup turned on - Skan ýüze çykarmany işledip başlat - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - - - - Only show popup when all selected keys are kept pressed: - Ýüze çykarmagy (popup) görkez diňe ähli saýlanan düwmler basylyp saklananda: - - - - Left Ctrl only - Çep Ctrl diňe - - - - Left Ctrl - Çep Ctrl - - - - Right Shift only - Sag Shift diňe - - - - Right Shift - Sag Shift - - - - Alt key - Alt düwmesi - - - - Alt - Alt - - - - Ctrl key - Ctrl düwmesi - - - - Ctrl - Ctrl - - - - Left Alt only - Çep Alt diňe - - - - Left Alt - Çep Alt - - - - Shift key - Shift düwmesi - - - - Shift - Shift - - - - Right Alt only - Sag Alt diňe - - - - Right Alt - Sag Alt - - - - Right Ctrl only - Sag Alt diňe - - - - Right Ctrl - Sag Alt - - - - Left Shift only - Çep Shift diňe - - - - Left Shift - Çep Shift - - - - Windows key or Meta key - Windows düwme ýa-da Meta düwme - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - - - - Keys may also be pressed afterwards, within - Düwmeleri soň hem basmak bolýar, şu çäklerde - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - - - - secs - sekunt - - - - Send translated word to main window instead of to show it in popup window - Terjime edilen sözleri ýüze çykýan penjireden görkezmän olary baş penjirä iber - - - - Send translated word to main window - Terjime edilen sözleri baş penjirä iber - - - - Hotkeys - Gyzgyn düwmeler - - - - Use the following hotkey to show or hide the main window: - Baş penjiräni görkezmek ýa-da gizlemek üçin şeýle düwmeleri ulan: - - - - Use the following hotkey to translate a word from clipboard: - Buferde saklanan sözi terjime etmek üçin şeýle düwmeleri ulan: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Bu gyzgyn düwmeler globaldyr we GoldenDict açyk duran wagty islendik başga programmada hem ýerlerde işleýärler. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - - - - &Audio - &Audio - - - - Pronunciation - Aýdyş - - - - Auto-pronounce words in main window - Baş penjirede sözleriň awto-aýdylyşy - - - - Auto-pronounce words in scan popup - Skan popup-dan sözleriň awto-aýdylyşy - - - - Playback - Oýnatmak - - - - Play audio files via FFmpeg(libav) and libao - Audio faýllary FFmpeg(libav) we libao arkaly oýnat - - - - Use internal player - Içerki pleýeri ulan - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - History - Geçmiş - - - - Turn this option on to store history of the translated words - Şuny aç eger-de geçmişde terjime edilen sözleri ýatda saklajak bolsaň - - - - Store &history - Saklanma &geçmiş - - - - Specify the maximum number of entries to keep in history. - Geçmişde iň köp saklanjak girizmeleriň sany. - - - - Maximum history size: - Geçmişiň maksimum sany: - - - - History saving interval. If set to 0 history will be saved only during exit. - Geçmişi ýatda saklanmagyň döwri. Eger 0 goýulsa, geçmiş diňe çykan wagty ýatda saklanar. - - - - Save every - Ýatda sakla her - - - - minutes - minut - - - - Articles - makalalar - - - - Turn this option on to always expand optional parts of articles - Makalalaryň goşmaça ýerlerini giňeldip görkezmek üçin şuny saýlaň - - - - Expand optional &parts - Goşmaça &ýerlerini giňeldip görkez - - - - Select this option to automatic collapse big articles - Uly makalalaryň awtomat kiçi edilip görkezilmegi üçin şuny saýlaň - - - - Collapse articles more than - Makalalary kiçelt şundan köp - - - - - Articles longer than this size will be collapsed - Şundan uly bolan makalalar kiçi edilip görkeziljek - - - - symbols - nyşanlar - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Use Windows native playback API. Limited to .wav files only, -but works very well. - - - Play via Windows native API - Windows öz API arkaly oýnatmak - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - - - Play via Phonon - Phonon arkaly oýnatmak - - - - Use any external program to play audio files - Audio faýllary oýnatmak üçin islendik özge programmany ulan - - - - Use external program: - Daşky programmany ulan: - - - - &Network - &Baglanyşyk ulgamy - - - - Enable if you wish to use a proxy server -for all program's network requests. - Enable if you wish to use a proxy server -for all program's network requests. - - - - Use proxy server - Proksi serweri ulan - - - - Type: - Tip: - - - - Host: - Öy eyesi: - - - - Port: - Port: - - - - User: - Ulanyjy: - - - - Password: - Parol: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - - - - Disallow loading content from other sites (hides most advertisements) - Özge saýtlardan zat ýüklemegi gadagan et (köp sanly reklama/mahabt gizlemgegini üpjün edýär) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - - - - Enable web plugins - Web plugin-leri işlet - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Käbir websaýtlar GoldenDict programmany HTTP ady arkaly görýärler we olara ýüz tutmaga rugsat berenoklar. -Şeýle meseläni çözmek üçin, şuny işlediň. - - - - Do not identify GoldenDict in HTTP headers - GoldenDict HTTP ady arkaly görkezme - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - - - - Check for new program releases periodically - Programmanyň täze neşirlerini wagtal-wagtal barlap dur - - - - Ad&vanced - Has &çylşyrymly - - - - ScanPopup extra technologies - SkanPopup goşmaça tehnologiýalary - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - - - - Use &IAccessibleEx - Ulan &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - Use &UIAutomation - Ulan &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - - Use &GoldenDict message - Ulan &GoldenDict habarlary - - - - System default - Sistemanyň başlangyç bahalary - - - - - Default - Ilkibaşky ýagdaýy - - - - Modern - Häzirki zaman - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - DirectShow arkaly oýnatmak - - - - Changing Language - Dili çalşmak - - - - Restart the program to apply the language change. - Diliň çalşmagyny işe girizmek üçin programmany täzeden işlet. - - - - ProgramTypeEditor - - - Audio - Audio - - - - Plain Text - Düz tekst - - - - Html - Html - - - - Prefix Match - Prefiks gabat getirme - - - - Unknown - Näbelli - - - - Programs::RunInstance - - - No program name was given. - Hiç programma ady berilmedi. - - - - The program has crashed. - Programma doňdy. - - - - The program has returned exit code %1. - Programma %1 çykyş koduny çykardy. - - - - ProgramsModel - - - Enabled - Işledilen - - - - Type - Tip - - - - Name - Ady - - - - Command Line - Komanda setiri - - - - Icon - Nyşan - - - - QObject - - - - Article loading error - Makala ýüklenende ýalňyşlyk ýüze çykdy - - - - - Article decoding error - Makala dekodirlenen wagty ýalňyşlyk ýüze çykdy - - - - avformat_alloc_context() failed. - avformat_alloc_context() bolmady. - - - - av_malloc() failed. - av_malloc() bolmady. - - - - avio_alloc_context() failed. - avio_alloc_context() bolmady. - - - - avformat_open_input() failed: %1. - avformat_open_input() bomady: %1. - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() bolmady: %1. - - - - Could not find audio stream. - Audio akymy tapylmady. - - - - Codec [id: %1] not found. - Kodek [id: %1] tapylmady. - - - - avcodec_open2() failed: %1. - avcodec_open2() tapylmady: %1. - - - - Cannot find usable audio output device. - Ulanyp boljak audio çykaryjy enjam tapylanok. - - - - Unsupported sample format. - Nusga format näbelli. - - - - ao_open_live() failed: - ao_open_live() bolmady: - - - - No driver. - Draýwer ýok. - - - - This driver is not a live output device. - Bu draýwer janly çukaryş enjam däl. - - - - A valid option key has an invalid value. - Dogry sazlama açaryň bahasy nädogry. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Şu enjamy açyp bolanok: %1, kanallar: %2, reýt: %3, bit: %4. - - - - Unknown error. - Näbelli ýalňyşlyk. - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() bolmady. - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Sözlük gözlegi/filtri (Ctrl+F) - - - - Quick Search - Tiz gözleg - - - - Clear Search - Gözlegi arassala - - - - ResourceToSaveHandler - - - - ERROR: %1 - ÝALŇYŞLYK: %1 - - - - Resource saving error: - Çeşmäni ýatda saklamagyň ýalňyşlygy: - - - - The referenced resource failed to download. - Salgylanýan çeşmäni ýükläp almak bolmady. - - - - Romaji - - - Hepburn Romaji for Hiragana - Hiragana üçin Hepburn Romaji - - - - Hepburn Romaji for Katakana - Katakana üçin Hepburn Romaji - - - - RussianTranslit - - - Russian Transliteration - Rus transliterasiýa - - - - ScanPopup - - - Dialog - Dialog - - - word - söz - - - List Matches (Alt+M) - Gabat gelýänleriň sanawy (Alt+M) - - - - - - - - ... - ... - - - Alt+M - Alt+M - - - - Back - Yza gaýt - - - - Forward - Öňe geç - - - - Pronounce Word (Alt+S) - Sözi eşitdirmek (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Sözi baş penjirä iber (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Sözlük zolagy görkezýär ýa-da gizleýär - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Ýol - - - - Name - Ady - - - - Icon - Nyşan - - - - Sources - - - Files - Faýllar - - - - Paths to search for the dictionary files: - Sözlük faýllary gözlemegiň ýollary: - - - - - - - - - &Add... - &Goşmak... - - - - - - - - - &Remove - &Aýyr - - - - Re&scan now - Şu wagt &gaýtadan skanerle - - - - Sound Dirs - Sesli bukjalar - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Birtopar audiofaýllardan sözlýkleri ýasamak üçin şu ýerde ýollaryny görkez: - - - - Morphology - Morfologiýa - - - - Path to a directory with Hunspell/Myspell dictionaries: - Hunspell/Myspell sözlükli bukjalar ýol: - - - - &Change... - &Özgertmek... - - - - Available morphology dictionaries: - Bar bolan morfologiýa sözlükler: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Her morfologiýa sözlügi aýry bir goşmaça sözlük ýaly -görkezilip gözleg üçin esasy sözleri üpjün edýär -we ýalňyş ýazylan sözler üçin dogrylary hödürleýär. -Laýyk gelýän sözlükleri degişli toparlaryň aşagyna goşup ulan. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikipedia (MediaWiki) saýtlary: - - - - Websites - Websaýtlar - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Islendik websaýt %GDWORD% setiri soralýan söz bilen çalşyrylar: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Ýogsam, ulan %GD1251% (CP1251 üçin), %GDISO1% (ISO 8859-1 üçin). - - - - Programs - Programmalar - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Janly aýdylyşy şu ýerden alynýar - <a href="http://www.forvo.com/">forvo.com</a>. Bu websaýt adamlar üçin sözleriň aýdyşyny ýazga geçirmäge we paýlaşmaga mümkinçilik berýär. Olary GoldenDict arkaly diňläp bolýar. - - - - Enable pronunciations from Forvo - Forvo-dan aýdyşyny aç - - - - API Key: - API açary: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Forvo häzirki wagtda API açary talap edýär. Özüň üçin täze açary almak üçin, websaýtda hasaba durmak gerek. Eger başdaky berlen açary ulanmak isleseň, şu meýdançany boş galdyr. Ýone başdaky berlen açar wagtyň geçmegi bilen ýiter. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Ýogsam, degişlilikde ulan %GD1251% - CP1251 üçin, %GDISO1%...%GDISO16% - ISO 8859-1...ISO 8859-16 üçin, -%GDBIG5% - Big-5 üçin, %GDBIG5HKSCS% - Big5-HKSCS üçin, %GDGBK% - GBK and GB18030 üçin, %GDSHIFTJIS% - Shift-JIS üçin. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Islendik daşky programma. Setir %GDWORD% gözlenýän sözi bilen çalşyryljak. Eger şeýle setir berilmese, şol söz standart girizmä geçiriler. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Öz açaryňy <a href="http://api.forvo.com/key/">şu ýerden al</a>, ýa-da, başdaky açary ulanmak üçin, boş goý. - - - - Language codes (comma-separated): - Dil kodlary (otur bilen bölünen): - - - - List of language codes you would like to have. Example: "en, ru". - Almak isleýän dil kodlarynyň sanawy: Mysal: "en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Dil kodlarynyň doly sanawy bar <a href="http://www.forvo.com/languages-codes/">here</a>. - - - - Transliteration - Transliterasiýa - - - - Russian transliteration - Rus transliterasiýa - - - - Greek transliteration - Grek transliterasiýa - - - - German transliteration - Nemes transliterasiýa - - - - Belarusian transliteration - Belarus transliterasiýa - - - - Enables to use the Latin alphabet to write the Japanese language - Ýapon dilinde ýazan mahalynda latin harplary ulanmaga rugsat berýär - - - - Japanese Romaji - Ýapon romaji - - - - Systems: - Sistemalar: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Ýapon diliniň iňlis fonologiýasynda iň köp ulanylýan transkripsiýa usuly. - - - - Hepburn - Hepburn - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Iň tertipli sistemasy, kana ýazylyş sistemalara brimeňzeşlik gatnaşygy bar. ISO 3602 boýunça standartlaşdyrlan. - -Entek GoldenDict-de edilmedik. - - - - Nihon-shiki - Nihon-shiki - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Nihon-şiki sistemasyna esaslanýar, ýöne häzirki zaman adaty Ýapon dili üçin üýtgedilen görnüşindedir. -ISO 3602 boýunça standartlaşdyrlan. - -Entek GoldenDict-de edilmedik. - - - - Kunrei-shiki - Kunrei-shiki - - - - Syllabaries: - Bogunlaryň elipbiýi: - - - - Hiragana Japanese syllabary - Hiragana ýapon bogunlaryň elipbiýi - - - - Hiragana - Hiragana - - - - Katakana Japanese syllabary - Katakana ýapon bogunlaryň elipbiýi - - - - Katakana - Katakana - - - - Text to Speech - Teksti gürläp aýtdyrmak - - - - (not available in portable version) - (ykjam/portable wersiýada elýeterli däl) - - - - - - Choose a directory - Bukjany saýla - - - - - - - - - Confirm removal - Aýyrmagy tassykla - - - - - Remove directory <b>%1</b> from the list? - <b>%1</b> bukjasyny sanawdan aýyrmalymy? - - - - - - Remove site <b>%1</b> from the list? - <b>%1</b> saýty sanawdan aýyrmalymy? - - - - Remove program <b>%1</b> from the list? - <b>%1</b> programmany sanawdan aýyrmalymy? - - - - StylesComboBox - - - None - Hiç birisi - - - - TextToSpeechSource - - - Selected voice engines: - Saýlanan ses gurallary: - - - - &Add - &Goş - - - - &Remove - &Aýyr - - - - Preferences - Saýlamalar - - - - Volume: - Sesiň güýçlüligi: - - - - Rate: - Derejesi: - - - - Preview - Öňünden barlamak - - - - Available voice engines: - Bar bolan ses gurallary: - - - - Text to be previewed: - Öňünden görüljek tekst: - - - - Type text to be previewed here. - Öňünden görüljek teksti şu ýerden giriz. - - - - &Preview - &Öňünden görmek - - - - No TTS voice available - TTS ses ýok - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - TTS ses tapylanok.<br> TTS gurallaryň azyndan biri kompýuterde gurnalandygyny barlaň. - - - - Confirm removal - Aýyrmagy tassykla - - - - Remove voice engine <b>%1</b> from the list? - Ses <b>%1</b> guraly sanawdan aýyrmalymy? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Sözlükleri ýa-da söz düzümleri gözlemek üçin söz giriz - - - - Drop-down - Gaçyrma - - - - VoiceEnginesModel - - - Enabled - Işledilen - - - - Name - Ady - - - - Id - Id - - - - Icon - Nyşan - - - - WebSitesModel - - - Enabled - Işledilen - - - - Name - Ady - - - - Address - Adres - - - - Icon - Nyşan - - - - WordFinder - - - Failed to query some dictionaries. - Käbir sözlükleri tapyp bolmady. - - - - WordList - - - WARNING: %1 - ÄGÄ BOLUŇ %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tr_TR.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tr_TR.ts deleted file mode 100644 index 3c8b30cf1a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/tr_TR.ts +++ /dev/null @@ -1,3943 +0,0 @@ - - - - - About - - About - Hakkında - - - GoldenDict dictionary lookup program, version - GoldenDict, sözlük arama programı, sürüm - - - [Unknown] - [Bilinmeyen] - - - Credits: - Teşekkürler: - - - Licensed under GNU GPLv3 or later - GNU GPLv3 veya daha üst lisanslıdır - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - Based on Qt %1 (%2, %3 bit) - - - - - ArticleMaker - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Sonra başka bir uygulamada aramak istediğiniz kelimenin üzerine imleci durdurun ve bir pencere açılır. - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Ekranda Kelime Yakala ile Çalışma</h3>Diğer aktif uygulamalarda kelimeleri aramak için, -ilk önce <b>Tercihler</b>'de <i>"Ekranda Kelime Yakala Özelliğini"</i> etkinleştirmelisiniz ve daha sonra -yukarıda 'Ekranda Kelime Yakala' simgesine tıklayarak veya Görev Çubuğu'ndaki simgesine sağ fare tuşuyla -tıklatarak seçimini değiştirebilirsiniz. - - - No translation for <b>%1</b> was found in group <b>%2</b>. - <b>%2</b> içinde <b>%1</b> sözcüğü bulunamadı. - - - Working with popup - Ekranda Kelime Yakala ile Çalışma - - - (untitled) - (başlıksız) - - - Welcome! - Hoşgeldiniz! - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Başka bir uygulamada sözcük bakmak için farenizle istediğiniz herhangi bir kelimeyi (klavye tuşu ve fare ile çift tıklayarak veya okutarak) seçin ve sözcüğü açıklayan bir pencere açılacaktır. - - - No translation was found in group <b>%1</b>. - <b>%1</b> grubunda hiçbir çeviri bulunamadı. - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">GoldenDict'e <b>Hoşgeldiniz</b>!</h3><p>Program ile çalışmaya başlamak için, -<b>Düzen|Sözlükler</b> menüsünden, çeşitli Wikipedia siteleri ya da diğer kaynaklardan sözlük dosyaları -aramak için bazı dizin yollarını seçerek, sözlük sırasını ayarlayıp sözlük grupları -oluşturabilirsiniz.<p>Ve sonra kelimelere bakmak için hazırsınız! Bu pencerenin sol bölmesini kullanarak -burada <a href="Working with popup">ya da diğer aktif uygulamalarda kelime arayabilirsiniz</a>. <p> Programı -özelleştirmek için, <b>Düzen|Tercihler</b> menüsünden mevcut tercihleri kontrol edin. Oradaki tüm ayarların -araç ipuçları var, eğer herhangi bir şey hakkında kararsızsanız (imleci üzerinde bekletip) ipuçlarını okuyarak -fikir sahibi olabilirsiniz.<p>Eğer herhangi bir soru, öneri ya da sadece başkalarının ne düşündüğünü merak -ediyorsanız veya daha fazla yardıma ihtiyacınız varsa, programın <a -href="http://goldendict.org/forum/">forumu</a> açıktır.<p>Güncellemeler için programın <a -href="http://goldendict.org/">web sitesinden</a> güncellemelere bakın. <p>(c) 2008-2013 Konstantin İsakov. -GPLv3 veya daha üst lisanslıdır. - - - (picture) - - - - Expand article - - - - Collapse article - - - - - ArticleRequest - - From - - - - Compound expressions: - Bileşik ifadeler: - - - Query error: %1 - Sorgulama hatası: %1 - - - Close words: - Benzer kelimeler: - - - Individual words: - Ayrı kelimeler: - - - Expand article - - - - Collapse article - - - - - ArticleView - - x - x - - - Form - Form - - - Failed to run a player to play sound file: %1 - Ses dosyasını oynatmak için oynatıcı çalıştırılamadı: %1 - - - &Next - &Sonraki - - - Find: - Bul: - - - Playing a non-WAV file - Olmayan bir WAV dosyası oynatma - - - Open Link in &External Browser - Bağlantıyı Harici &Tarayıcıda Aç - - - The referenced resource failed to download. - İlgili kaynak indirilmesi başarısız oldu. - - - Failed to create temporary file. - Geçici dosya oluşturulması başarısız. - - - Ctrl+G - Ctrl+G - - - &Look up "%1" - &Ara "%1" - - - about:blank - about:blank - - - &Previous - Ö&nceki - - - Look up "%1" in &New Tab - "%1" &yeni sekmede ara - - - GoldenDict - GoldenDict - - - The referenced resource doesn't exist. - İlgili kaynak yok. - - - &Open Link - &Bağlantıyı Aç - - - &Case Sensitive - Büyük/küçük &harfe duyarlı - - - Failed to auto-open resource file, try opening manually: %1. - Kaynak, otomatik olarak açılamadı, elle deneyin: %1. - - - Look up "%1" in %2 - "%2" içinde %1 ara - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - WAV dosyalarını oynatmayı etkinleştirmek için,Düzen|Tercihler'e gidin -Ses sekmesinden "DirectShow ile çal" seçeneğini seçin. - - - Look up "%1" in %2 in &New Tab - "%2" içinde %1 yeni &sekmede ara - - - Open Link in New &Tab - Bağlantıyı Yeni &Sekmede Aç - - - Highlight &all - Tümünü vurgul&ayın - - - Resource - Kaynağı yenile - - - Audio - Ses - - - Definition: %1 - Tanım: %1 - - - The referenced audio program doesn't exist. - Referans gösterilen ses programı yok. - - - WARNING: %1 - UYARI: %1 - - - &Add "%1" to history - - - - Definition from dictionary "%1": %2 - - - - Send "%1" to input line - - - - Picture - - - - Select Current Article - - - - ERROR: %1 - - - - Save sound - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - - - - Save image - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - - - - Save &image... - - - - Save s&ound... - - - - TTS Voice - - - - WARNING: FFmpeg Audio Player: %1 - - - - Copy as text - - - - Inspect - - - - Video - - - - Video: %1 - - - - - BelarusianTranslit - - Belarusian transliteration from latin to cyrillic (classic orthography) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - - - - - ChineseConversion - - GroupBox - - - - Enable conversion between simplified and traditional Chinese characters - - - - Chinese Con&version - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - SC to TC (Taiwan variant) - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - SC to TC (Hong Kong variant) - - - - Enable conversion from traditional characters to simplified characters - - - - TC to SC - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - Proxy authentication required - - - - You need to supply a Username and a Password to access via proxy - - - - Username: - - - - Password: - Parola: - - - - DictGroupWidget - - Form - Form - - - None - Yok - - - Error - Hata - - - Group icon: - Grup simgesi: - - - Can't read the specified image file. - Belirtilen görüntü dosyası okunamadı. - - - Images - Resimler - - - Shortcut: - Kısayol: - - - From file... - Dosyadan... - - - All files - Tüm Dosyalar - - - Choose a file to use as group icon - Grup simgesi olarak kullanmak için bir dosya seçin - - - - DictGroupsWidget - - Are you sure you want to generate a set of groups based on language pairs? - Dil çiftlerine dayalı bir takım gruplar oluşturmak istediğiniz emin misiniz? - - - Confirmation - Onayla - - - Dictionaries: - - - - Combine groups by source language to "%1->" - - - - Combine groups by target language to "->%1" - - - - Make two-side translate group "%1-%2-%1" - - - - Combine groups with "%1" - - - - Unassigned - - - - - DictHeadwords - - Search mode - - - - This element determines how filter string will be interpreted - - - - If checked on the symbols case will be take in account when filtering - - - - Match case - - - - Exports headwords to file - - - - Export - - - - OK - - - - Press this button to apply filter to headwords list - - - - Apply - - - - If checked any filter changes will we immediately applied to headwords list - - - - Auto apply - - - - Filter: - - - - Filter string (fixed string, wildcards or regular expression) - - - - Text - - - - Wildcards - - - - RegExp - - - - Unique headwords total: %1, filtered: %2 - - - - Save headwords to file - - - - Text files (*.txt);;All files (*.*) - Metin Dosyaları (*.txt);;Tüm Dosyalar (*.*) - - - Export headwords... - - - - Cancel - İptal - - - Help - - - - - DictInfo - - Total articles: - Toplam Madde: - - - Translates from: - Bu Dilden: - - - Total words: - Toplam sözcük: - - - Translates to: - Bu Dile: - - - Files comprising this dictionary: - Bu sözlüğü içeren dosyalar: - - - Description: - - - - Open folder - - - - Edit dictionary - - - - Edit the dictionary via command: -%1 - - - - Show all unique dictionary headwords - - - - Headwords - - - - - DictListModel - - %1 entries - %1 Madde - - - - DictServer - - Url: - - - - Databases: - - - - Search strategies: - - - - Server databases - - - - - DictServersModel - - Enabled - Etkin - - - Name - İsim - - - Address - Adres - - - Databases - - - - Icon - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - Strategies - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Edit this group - Grubu düzenle - - - Dictionary Bar - Sözlük Çubuğu - - - Dictionary info - - - - Edit dictionary - - - - &Dictionary Bar - - - - Open dictionary folder - - - - Extended menu with all dictionaries... - - - - Dictionary headwords - - - - - EditDictionaries - - &Dictionaries - &Sözlükler - - - Dictionaries - Sözlükler - - - Accept - Onayla - - - Cancel - İptal - - - Sources changed - Kaynaklar değişti - - - &Sources - &Kaynaklar - - - &Groups - &Gruplar - - - Some sources were changed. Would you like to accept the changes? - Bazı kaynaklar değiştirildi. Değişiklikleri kabul etmek ister misiniz? - - - - ExternalViewer - - the viewer program name is empty - görüntüleyici program ismi boş - - - - FTS::FtsIndexing - - None - Yok - - - - FTS::FullTextSearchDialog - - Full-text search - - - - Whole words - - - - Plain text - - - - Wildcards - - - - RegExp - - - - Max distance between words (%1-%2): - - - - Max articles per dictionary (%1-%2): - - - - Articles found: - - - - Now indexing: - - - - The search line must contains at least one word containing - - - - or more symbols - - - - No dictionaries for full-text search - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - None - Yok - - - - FTS::Indexing - - None - Yok - - - - Forvo::ForvoArticleRequest - - by - tarafından - - - Male - Bay - - - from - bundan - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Düzen|Sözlükler|Kaynaklar|Forvo seçeneğine gidin ve bu hatayı yok etmek için kendi API anahtarınızı uygulayın. - - - Female - Bayan - - - Added %1 - Eklendi %1 - - - XML parse error: %1 at %2,%3 - XML ayrıştırma hatası: %1 içinde %2,%3 - - - - FullTextSearchDialog - - Search - - - - Match case - - - - Mode: - - - - Articles found: - - - - Available dictionaries in group: - - - - Wait for indexing: - - - - Total: - - - - Indexed: - - - - Now indexing: None - - - - Cancel - İptal - - - Help - - - - - GermanTranslit - - German Transliteration - Almanca Harf Çevirisi - - - - GreekTranslit - - Greek Transliteration - Yunanca Harf Çevirisi - - - - GroupComboBox - - Choose a Group (Alt+G) - Grup Seç (Alt+G) - - - - GroupSelectorWidget - - Form - Form - - - Look in - Ara - - - - Groups - - < - < - - - > - > - - - Del - Sil (Delete) - - - Ins - Ekle (Insert) - - - Tab 2 - Sekme 2 - - - Are you sure you want to remove all the groups? - Bütün grupları kaldırmak istiyor musunuz? - - - Are you sure you want to remove the group <b>%1</b>? - <b>%1</b> isimli grubu kaldırmak istiyor musunuz? - - - Remove group - Grubu kaldır - - - Rename group - Grubu adlandır - - - Give a new name for the group: - Gruba yeni bir isim verin: - - - Dictionaries available: - Kullanılabilir Sözlükler: - - - &Add group - Grup &Ekle - - - Add group - Grup ekle - - - Create new dictionary group - Yeni sözlük grubu oluştur - - - Auto groups - Otomatik gruplar - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Sözlükleri, grupların içine sürükleyin ve &bırakın. - - - Create language-based groups - Dil-tabanlı grupları oluştur - - - Rename current dictionary group - Geçerli grubu adlandır - - - Remove current dictionary group - Geçerli grubu sil - - - Give a name for the new group: - Yeni gruba bir isim verin: - - - Remove all groups - Tüm grupları kaldır - - - Remove selected dictionaries from group (Del) - Seçili sözlükleri gruptan kaldır (Delete) - - - Add selected dictionaries to group (Ins) - Seçili sözlükleri gruba ekle (Insert) - - - &Remove group - Grubu &Kaldır - - - Groups: - Gruplar: - - - Re&name group - Grubu &Adlandır - - - Remove all dictionary groups - Tüm sözlük gruplarını kaldır - - - Group tabs - - - - Open groups list - - - - - Help::HelpWindow - - GoldenDict help - - - - Home - - - - Back - Önceki - - - Forward - Sonraki - - - Zoom In - Yaklaş - - - Zoom Out - Uzaklaş - - - Normal Size - Normal Boyut - - - Content - - - - Index - - - - - HistoryPaneWidget - - &Delete Selected - - - - Copy Selected - - - - History: - - - - %1/%2 - - - - History size: %1 entries out of maximum %2 - - - - - Hunspell - - Spelling suggestions: - Yazım Önerileri: - - - %1 Morphology - %1 Morfoloji - - - - HunspellDictsModel - - Name - İsim - - - Enabled - Etkin - - - - Initializing - - Dictionary Name - Sözlük İsmi - - - GoldenDict - Initializing - GoldenDict - Başlatılıyor - - - Please wait while indexing dictionary - Lütfen sözlükler indekslenirken bekleyin - - - Please wait... - Lütfen bekleyin... - - - - Language - - Ewe - Ewe - - - Ido - Ido - - - Lao - Laotisch - - - Twi - Twi - - - Afar - Afar - - - Akan - Akan - - - Cree - Cree - - - Igbo - Igbo - - - Komi - Komi - - - Manx - Manx - - - Pali - Pali - - - Thai - Thailändisch - - - Urdu - Urdu - - - Zulu - Zulu - - - Czech - Tschechisch - - - Dutch - Holländisch - - - Ganda - Ganda - - - Fulah - Fulfulde - - - Greek - Griechisch - - - Hausa - Hausa - - - Hindi - Hindi - - - Irish - Irisch - - - Khmer - Khmer - - - Kongo - Kongo - - - Latin - Latein - - - Malay - Malaysisch - - - Maori - Maori - - - Nauru - Nauru - - - Oriya - Oriya - - - Oromo - Oromo - - - Sango - Sango - - - Shona - Shona - - - Tajik - Tadschikisch - - - Tamil - Tamil - - - Tatar - Tatar - - - Swati - Swati - - - Tonga - Tongaisch - - - Inupiaq - Inupiaq - - - Venda - Tshivenda - - - Uzbek - Usbekisch - - - Welsh - Walisisch - - - Wolof - Wolof - - - Xhosa - Xhosa - - - Italian - Italienisch - - - Raeto-Romance - Rätoromanisch - - - Dzongkha - Dzongkha - - - Kannada - Kannada - - - North Ndebele - Nord-Ndebele - - - Abkhazian - Abkhazisch - - - Kirghiz - Kirghizstan - - - Kirundi - Kirundi - - - Scottish Gaelic - Schottisch-Gälisch - - - Albanian - Albanisch - - - Latvian - Litauisch - - - Malayalam - Malajalam - - - Kurdish - Kurdisch - - - Bulgarian - Bulgarisch - - - Lingala - Lingala - - - Maltese - Maltesisch - - - Marathi - Marathi - - - Arabic - Arabisch - - - Basque - Baskisch - - - Avaric - Avarisch - - - Bihari - Magahi - - - Aymara - Aymara - - - Breton - Bretonisch - - - Sundanese - Sundanesisch - - - Danish - Dänisch - - - Divehi - Divehi - - - Luba-Katanga - Kiluba - - - Fijian - Fijianisch - - - Hungarian - Ungarisch - - - French - Französisch - - - German - Deutsch - - - Mongolian - Mongolisch - - - Hebrew - Hebräisch - - - Herero - Herero - - - Luxembourgish - Luxemburgisch - - - Kanuri - Kanuri - - - Kazakh - Kasachisch - - - Kikuyu - Kikuyu - - - Korean - Koreanisch - - - Navajo - Navajo - - - Ndonga - Ndonga - - - Nepali - Nepali - - - Ojibwa - Ojibwe - - - Pashto - Paschto - - - Polish - Polnisch - - - Samoan - Samoanisch - - - Occitan - Okzitanisch - - - Sindhi - Sindhi - - - Slovak - Slowakisch - - - Somali - Somali - - - Telugu - Telugu - - - Tsonga - Xitsonga - - - Tswana - Setswana - - - Uighur - Uigurisch - - - Serbo-Croatian - Serbokroatisch - - - Yoruba - Yoruba - - - Zhuang - Zhuang - - - Romanian - Rumänisch - - - Indonesian - Indonesisch - - - Panjabi - Punjabi - - - Southern Sotho - Süd-Sotho - - - Corsican - Korsisch - - - Esperanto - Esperanto - - - Persian - Persisch - - - Slovenian - Slovenisch - - - Western Frisian - Westfriesisch - - - Aragonese - Aragonesisch - - - Tahitian - Tahitianisch - - - Malagasy - Madagassisch - - - Galician - Galizisch - - - Azerbaijani - Aserbaijanisch - - - Amharic - Amharisch - - - Sanskrit - Sanskrit - - - Japanese - Japanisch - - - Ukrainian - Ukrainisch - - - Bambara - Bambara - - - Kalaallisut - Kalaallisut - - - Bashkir - Baschkir - - - Belarusian - Weißrussisch - - - Kashmiri - Kashmiri - - - Sardinian - Sardinisch - - - Hiri Motu - Hiri Motu - - - Quechua - Quechua - - - Bengali - Bengali - - - Javanese - Javanisch - - - Avestan - Avestan - - - Kinyarwanda - Kinyarwanda - - - Afrikaans - Afrikaans - - - Bislama - Bislama - - - Armenian - Armenisch - - - Norwegian Bokmal - Bokmål - - - Croatian - Kroatisch - - - Bosnian - Bosnisch - - - Interlingua - Interlingua - - - Interlingue - Interlingue - - - Catalan - Katalanisch - - - Serbian - Serbisch - - - Burmese - Burmesisch - - - Russian - Russisch - - - Limburgish - Limburgisch - - - Norwegian - Norwegisch - - - Chechen - Tschetschenisch - - - Chinese - Chinesisch - - - Chuvash - Tschuwasch - - - Sinhala - Singhalesisch - - - Spanish - Spanisch - - - Cornish - Cornisch - - - Tagalog - Tagalog - - - Assamese - Assamesisch - - - Ossetian - Ossetisch - - - Estonian - Estnisch - - - Swahili - Swahili - - - Swedish - Schwedisch - - - Tibetan - Tibetanisch - - - Vietnamese - Vietnamesisch - - - Macedonian - Mazedonisch - - - Portuguese - Portugiesisch - - - Turkish - Türkçe - - - Turkmen - Turkmenisch - - - Gujarati - Gujarati - - - Icelandic - Isländisch - - - Inuktitut - Inuktitut - - - English - Englisch - - - Georgian - Georgisch - - - Church Slavic - Kirchenslawisch - - - Faroese - Färöisch - - - Finnish - Finnisch - - - Volapuk - Volapük - - - Walloon - Wallonisch - - - Kwanyama - Oshivambo - - - Marshallese - Marshallesisch - - - Northern Sami - Nordsamisch - - - Haitian - Haitianisch - - - Chamorro - Chamorro - - - Norwegian Nynorsk - Nynorsk - - - Guarani - Guaraní - - - South Ndebele - Süd-Ndebele - - - Chichewa - Chichewa - - - Lithuanian - Litauisch - - - Sichuan Yi - Sichuan Yi - - - Tigrinya - Tigrinya - - - Yiddish - Jiddisch - - - Traditional Chinese - - - - Simplified Chinese - - - - Other - - - - Other Simplified Chinese dialects - - - - Other Traditional Chinese dialects - - - - Other Eastern-European languages - - - - Other Western-European languages - - - - Other Russian languages - - - - Other Japanese languages - - - - Other Baltic languages - - - - Other Greek languages - - - - Other Korean dialects - - - - Other Turkish dialects - - - - Other Thai dialects - - - - Tamazight - - - - Lojban - - - - - LoadDictionaries - - Error loading dictionaries - Sözlük yükleme hatası - - - - Main - - Error in configuration file. Continue with default settings? - - - - - MainWindow - - F1 - F1 - - - F2 - F2 - - - F4 - F4 - - - All - Tüm Sözlükler - - - Back - Önceki - - - Print Preview - Baskı Önizleme - - - %1 dictionaries, %2 articles, %3 words - %1 Sözlük, %2 Madde, %3 Sözcük - - - &Edit - &Düzen - - - &File - &Dosya - - - &Help - &Yardım - - - &Quit - Ç&ıkış - - - &View - &Görünüm - - - &Zoom - &Yaklaş - - - Error - Hata - - - Scan Popup - Ekranda Kelime Yakala - - - Quit from application - Uygulamadan çık - - - &Close To Tray - Kapatıldığında &Görev Çubuğu'na yerleş - - - Can't save article: %1 - Kurtarılmamış yazı: %1 - - - Zoom In - Yaklaş - - - Close all tabs - Tüm Sekmeleri Kapat - - - &About - &Hakkında - - - &Clear - &Temizle - - - &Forum - &Forum - - - &Print - &Yazdır - - - Words Normal Size - Normal Sözcük Boyutu - - - &Save Article - Yazıyı Ka&ydet - - - Save Article As - Yazıyı Farklı Kaydet - - - Ctrl+P - Ctrl+P - - - Ctrl+Q - Ctrl+Q - - - Minimizes the window to tray - Küçültüldüğünde Görev Çubuğu'na yerleş - - - Words Zoom Out - Sözcükleri Küçült - - - Rescan Files - Dosyaları Tekrar Tara - - - Page Set&up - Sayfa Ya&pısı - - - &Homepage - &Anasayfa - - - New Release Available - Yeni Sürüm Var - - - Look up: - Ara: - - - Zoom Out - Uzaklaş - - - Show &Main Window - &Ana Pencereyi Göster - - - About GoldenDict - GoldenDict Hakkında - - - Download - İndir - - - Page Setup - Sayfa Yapısı - - - Look up in: - Bunda Ara: - - - Normal Size - Normal Boyut - - - Close all tabs except current - Bu sekmenin dışındaki tüm sekmeleri kapat - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Kısayol tuşları izleme mekanizması başlatılamadı. <br> XServer RECORD uzantısının açık olduğundan emin olun. - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - GoldenDict, Sürüm <b>%1</b> indirilmeye hazır.<br> <b>İndirme</b> sayfasına ulaşmak için tıklayın. - - - Search Pane - Pencerede Ara - - - Ctrl+F4 - Ctrl+F4 - - - Ctrl+F5 - Ctrl+F5 - - - GoldenDict - GoldenDict - - - Loading... - Yükleniyor... - - - (untitled) - (başlıksız) - - - Show Names in Dictionary Bar - Sözlük Çubuğu'nda İsimleri Göster - - - Opened tabs - Açık Sekmeler - - - &Preferences... - &Tercihler... - - - Html files (*.html *.htm) - Html Dosyaları (*.html *.htm) - - - Welcome! - Hoşgeldiniz! - - - Pronounce Word (Alt+S) - Sözcüğü Seslendir (Alt+S) - - - Save Article - Yazıyı Kaydet - - - H&istory - &Geçmiş - - - Skip This Release - Bu Sürümü Geç - - - Forward - Sonraki - - - Close current tab - Bu Sekmeyi Kapat - - - WARNING: %1 - UYARI: %1 - - - Print Article - Yazıyı Yazdır - - - No printer is available. Please install one first. - Hiçbir yazıcı kullanılabilir değil. Lütfen önce bir yazıcı yükleyin. - - - Words Zoom In - Sözcükleri Büyült - - - Navigation - Gezinti - - - Results Navigation Pane - Gezinti Panelinde Sonuçlar - - - &Dictionaries... F3 - &Sözlükler... F3 - - - New Tab - Yeni Sekme - - - Ctrl+T - Ctrl+T - - - &Configuration Folder - &Yapılandırma Klasörü - - - &Show - &Göster - - - &Export - Gön&nder - - - Show Small Icons in Toolbars - Araç Çubuklarında Küçük İkonları Göster - - - &Menubar - &Menü Çubuğu - - - Found in Dictionaries: - Sözlükler Bulundu: - - - Open Tabs List - Sekmeler Listesini Aç - - - %1 - %2 - %1 - %2 - - - You have chosen to hide a menubar. Use %1 to show it back. - Bir menü çubuğunu gizlemeyi seçtiniz. Geri göstermek için %1 kullanın. - - - Ctrl+M - Ctrl+M - - - &Hide - G&izle - - - History view mode - Geçmişi görüntüleme modu - - - Export history to file - Geçmiş dosyasını gönder - - - Text files (*.txt);;All files (*.*) - Metin Dosyaları (*.txt);;Tüm Dosyalar (*.*) - - - History export complete - Geçmiş gönderimi tamam - - - Export error: - Göndermede hata: - - - Ctrl+H - - - - &Import - - - - Import history from file - - - - Import error: invalid data in file - - - - History import complete - - - - Import error: - - - - Dictionary info - - - - Edit dictionary - - - - &Search Pane - - - - &Results Navigation Pane - - - - Print Pre&view - - - - &Rescan Files - - - - &New Tab - - - - &Always on Top - - - - Always on Top - - - - Ctrl+O - - - - Menu Button - - - - Show Names in Dictionary &Bar - - - - Show Small Icons in &Toolbars - - - - &Navigation - - - - The main window is set to be always on top. - - - - &History Pane - - - - &Dictionaries... - &Sözlükler... - - - F3 - F3 - - - Accessibility API is not enabled - - - - Article, Complete (*.html) - - - - Article, HTML Only (*.html) - - - - Saving article... - - - - Open dictionary folder - - - - Dictionary headwords - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - Search - - - - Search in page - - - - Ctrl+F - - - - Full-text search - - - - Ctrl+Shift+F - - - - GoldenDict reference - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - Dictionary file was tampered or corrupted - - - - Failed loading article from %1, reason: %2 - - - - - MediaWiki::MediaWikiArticleRequest - - XML parse error: %1 at %2,%3 - XML ayrıştırma hatası: %1 içinde %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - XML parse error: %1 at %2,%3 - XML ayrıştırma hatası: %1 içinde %2,%3 - - - - MediaWikisModel - - Name - İsim - - - Address - Adres - - - Enabled - Etkin - - - Icon - - - - - OrderAndProps - - ... - ... - - - Form - Form - - - Inactive (disabled) dictionaries: - Pasifleştirilmiş (etkin olmayan) sözlükler: - - - Name: - İsim: - - - Total articles: - Toplam Madde: - - - Translates from: - Bu Dilden: - - - Translates to: - Bu Dile: - - - Total words: - Toplam sözcük: - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Öğeleri sürükleyip bırakarak sırasını ayarlayın. İstediğiniz sözlüklerin kullanımı devre dışı bırakmak için Pasifleştirilmiş Sözlükler Grubu'na bırakın. - - - Dictionary order: - Sözlük Sırası: - - - Files comprising this dictionary: - Bu sözlüğü içeren dosyalar: - - - Dictionary information - Sözlük Bilgisi - - - Description: - - - - Sort by name - - - - Sort by languages - - - - Dictionary headwords - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - Path - Yol - - - Recursive - Klasör Değişikliklerini İzle - - - - Preferences - - Alt - Alt - - - Start to system tray - Görev Çubuğu'nda başlat - - - Left Shift only - Sadece Sol Shift - - - Ctrl - Ctrl - - - secs - sn - - - Win/Meta - Win/Meta - - - Enable system tray icon - Görev Çubuğu simgesini etkinleştir - - - Host: - Host: - - - Port: - Port: - - - Shift - Shift - - - Type: - Tür: - - - User: - Kullanıcı: - - - &Scan Popup - &Ekranda Kelime Yakala - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Normalde, yeni bir sekme açmadan hemen gelir. -Ancak, yeni sekmeler onlar gelmeden açılmış olacak. - - - Use proxy server - Proxy Sunucusu - - - Use the following hotkey to translate a word from clipboard: - Aşağıdaki kısayolu panodan bir kelime çevirmek için kullanın: - - - Windows key or Meta key - Windows/Meta-Tuşu - - - Double-click translates the word clicked - Çift tıklandığında sözcüğü seslendirir - - - Only show popup when all selected keys are kept pressed: - Sadece seçilen tüm tuşlar basılı tutulduğu zaman Açılır Pencere gösterilir -(Sol Fare Tuşu ile kullanılacak tuşu seçin): - - - Auto-pronounce words in main window - Otomatik olarak ana pencerede sözcükleri seslendir - - - Start with system - Açılışta otomatik olarak başlat - - - Left Alt only - Sadece Sol Alt - - - Tabbed browsing - Sekmeli Gözatma - - - Right Shift only - Sadece Sağ Shift - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Uygulama kapatıldığında ana pencereyi gizler. - - - Playback - Oynat - - - &Audio - &Ses - - - Enable if you wish to use a proxy server -for all program's network requests. - Eğer tüm programın ağ istekleri için bir -proxy sunucusu kullanmak istiyorsanız etkinleştirin. - - - Interface language: - Arayüz Dili: - - - Left Ctrl only - Sadece Sol Ctrl - - - Play via Windows native API - Windows yerel uygulamasıyla çal - - - Play via DirectShow - DirectShow ile oynat - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text- -indent:0px;"><span style=" color:#ff0000;">Uyarı: RECORD uzantısı düzgün çalışmayan bir X.Org-XServer sürümünü -kullanmasını istiyor. Bu nedenle kısayolları büyük olasılıkla çalışmayacaktır. Bu, sunucunun kendisini düzeltilmiş -olması gerekir. Bu, aşağıdaki </span><ahref="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" -text-decoration: underline; color:#0000ff;">hata girişine</span></a><span style=" color:#ff0000;">, isterseniz, -yorum yapabilirsiniz.</span></p></body></html> - - - Open new tabs in background - Arka planda yeni sekme aç - - - &Network - &Ağ - - - Right Ctrl only - Sadece Sağ Ctrl - - - Lingvo - Lingvo - - - Right Shift - Sağ Shift - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Ekranda Kelime Yakala modunun varsayılan olarak etkin olup olmadığını gösterir. -Etkinse, program her zaman aktif mod ile başlar. - - - Left Shift - Sol Shift - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Sadece seçilen tüm tuşlar basılı durumdayken Açılır Pencere'de gösterecektir. -Aksi halde fare, sözcüğün üzerine geldiğinde çeviri yapılır. - - - Display style: - Görünüm: - - - Auto-pronounce words in scan popup - Ekranda Kelime Yakala'rken kelimeleri otomatik seslendir - - - Enable scan popup functionality - Ekranda Kelime Yakala özelliğini etkinleştir - - - Open new tabs after the current one - Geçerli sekmeden sonra yeni sekme aç - - - Restart the program to apply the language change. - Dil değişikliğini tamamlamak için programı yeniden başlatın. - - - Alt key - Alt Tuşu - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Bunun etkinleştirilmesi birçok reklamları, içeriği (resim, kare) GoldenDict tarafından engellemeyi sağlar. -Bazı siteler bu nedenle bozulursa, bunu devre dışı bırakmayı deneyin. - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Etkinleştirildinde, çeviri her zaman Açılır Pencere'de görüntülenir, ekranda -bir kelimenin üzerine tutun (Windows) veya fare ile bir kelime seçin (Linux). -Eğer etkinleştirilmiş ise ana pencere ve araç çubuğunundan açıp kapatabilirsiniz. - - - Check for new program releases periodically - Düzenli olarak yeni sürümleri kontrol et - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Bu seçenekle, yeni sekmeler etkin sekmede açılır. -Aksi takdirde sekmelerin sonuna eklenecektir. - - - Use external program: - Harici program kullanın: - - - Close to system tray - Kapatılınca Görev Çubuğu'na yerleş - - - System default - Sistem Varsayılanı - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Etkinleştirildiğinde, ana pencereyi açın, diğer görevleri gerçekleştirmek -ve kullanabilmek için sistem tepsisinde bir simge belirir. - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Etkinse, program yeni sürümü denetler -Yeni sürüm varsa GoldenDict kullanıcıyı bilgilendirir, -ve muhtemelen indirme sayfasını açar. - - - Startup - Başlangıç - - - Password: - Parola: - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Windows yerel çalma programını kullanın. -Sınırlıdır, (sadece Wav dosyaları) ama çok iyi çalışmakta. - - - Default - Varsayılan - - - &Interface - &Arayüz - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Hataları önlemek için tuşlar sadece belirtilen -saniye boyunca izlenmektedir. - - - Changing Language - Dilinizi Seçin - - - Ctrl key - Ctrl Tuşu - - - Use the following hotkey to show or hide the main window: - Aşağıdaki kısayolu ana pencereyi göstermek ya da gizlemek için kullanın: - - - Left Alt - Sol Alt - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Tuşlara belirtilen süre içinde olmak şartıyla -daha sonra da basılabilir. - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Ses dosyalarını Phonon Framework ile oynat. Bu pek çok ses -formatlarını destekler, ancak kararsız olabilir. - - - Right Alt only - Sadece Sağ Alt - - - Preferences - Tercihler - - - Keys may also be pressed afterwards, within - Tuşlara basmak için gereken süre - - - Left Ctrl - Sol Ctrl - - - Play via Phonon - Phonon ile oynat - - - Right Alt - Sağ Alt - - - Disallow loading content from other sites (hides most advertisements) - Diğer sitelere (gizli birçok reklamlar) içerik yüklemeye izin verme - - - Pronunciation - Telaffuz (Seslendirme) - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Klavye kısayolları geneldir ve GoldenDict arka planda çalışıyorsa tüm işletim sistemi kapsamında çalışmaktadır. - - - Use any external program to play audio files - Ses dosyalarını oynatmak için harici bir program kullan - - - Right Ctrl - Sağ Ctrl - - - Hotkeys - Kısayollar - - - Start with scan popup turned on - Ekranda Kelime Yakala'mayı etkinleştir - - - With this on, the application starts directly to system tray without showing -its main window. - Uygulama, ana penceresini göstermeden, doğrudan Görev Çubuğu'nda başlar. - - - Shift key - Shift Tuşu - - - Automatically starts GoldenDict after operation system bootup. - GoldenDict her açılışta otomatik olarak başlar. - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Yalnızca tek bir sekme açtığınızda ana sekme çubuğunun görmek istemiyorsanız bu seçeneği seçin. - - - Hide single tab - Tek sekmeyi gizle - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Normalde, ESC tuşuna basarak odak çeviri satırına geçer. -Bununla birlikte ilgili ana pencere gizlenmiş olacaktır. - - - ESC key hides main window - ESC tuşu ana pencereyi gizler - - - Send translated word to main window instead of to show it in popup window - Ana pencereye çevrilmiş kelime göndermek yerine açılır pencerede göster - - - Send translated word to main window - Ana pencereye çevrilmiş kelime gönder - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Etkinleştirildiğinde, güvenilen Flash veya diğer web eklentileri -çevrimiçi sözlüklerden telaffuzlar dinlemek için izin verecek. -Eklenti, bu seçeneğin çalışması için yüklü olmalıdır. - - - Enable web plugins - Web eklentilerini etkinleştir - - - Ad&vanced - Geli&şmiş - - - ScanPopup extra technologies - Açılır Pencerede Ekstra Tarama teknolojileri - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Imlecin altındaki kelimeyi almak için IAccessibleEx teknolojisini - kullanmayı deneyin. -Bu teknoloji onu destekleyen (örneğin Internet Explorer 9 için) - bazı programlar ile çalışır. -Siz bu tür programları kullanmak istemiyorsanız bu seçeneği - seçmeyebilirsiniz. - - - Use &IAccessibleEx - &IAccessibleEx Teknolojisini Kullan - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Imlecin altındaki kelimeyi almak için UI Automation teknolojisini - kullanmayı deneyin. -Bu teknoloji onu destekleyen bazı programlar ile çalışır. -Siz bu tür programları kullanmak istemiyorsanız bu seçeneği - seçmeyebilirsiniz. - - - Use &UIAutomation - &UIAutomation Teknolojisini Kullan - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Imlecin altındaki kelimeyi almak için özel GoldenDict mesaj teknolojisini - kullanmayı deneyin. -Bu teknoloji onu destekleyen bazı programlar ile çalışır. -Siz bu tür programları kullanmak istemiyorsanız bu seçeneği - seçmeyebilirsiniz. - - - Use &GoldenDict message - &GoldenDict Mesaj Teknolojisini Kullan - - - Ctrl-Tab navigates tabs in MRU order - - - - Babylon - - - - History - - - - Turn this option on to store history of the translated words - - - - Store &history - - - - Articles - - - - Turn this option on to always expand optional parts of articles - - - - Expand optional &parts - - - - Turn this option on if you want to select words by single mouse click - - - - Select word by single click - - - - Add-on style: - - - - Specify the maximum number of entries to keep in history. - - - - Maximum history size: - - - - History saving interval. If set to 0 history will be saved only during exit. - - - - Save every - - - - minutes - - - - Modern - - - - Lingoes - - - - Lingoes-Blue - - - - Play audio files via FFmpeg(libav) and libao - - - - Use internal player - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - - - - Do not identify GoldenDict in HTTP headers - - - - Select this option to automatic collapse big articles - - - - Collapse articles more than - - - - symbols - - - - Adjust this value to avoid huge context menus. - - - - Context menu dictionaries limit: - - - - Articles longer than this size will be collapsed - - - - System proxy - - - - Custom proxy - - - - Custom settings - - - - Full-text search - - - - Allow full-text search for: - - - - Don't search in dictionaries containing more than - - - - articles (0 - unlimited) - - - - Help language - - - - - ProgramTypeEditor - - Audio - Ses - - - Plain Text - Düz Metin - - - Html - Html - - - Prefix Match - ÖnEk Eşleme - - - Unknown - Bilinmeyen - - - - Programs::RunInstance - - No program name was given. - Hiçbir program ismi, verilmedi. - - - The program has crashed. - Program çöktü. - - - The program has returned exit code %1. - Program %1 çıkış koduna geri döndü. - - - - ProgramsModel - - Enabled - Etkin - - - Type - Tip - - - Name - İsim - - - Command Line - Komut Satırı - - - Icon - - - - - QObject - - Article loading error - - - - Article decoding error - - - - avformat_alloc_context() failed. - - - - av_malloc() failed. - - - - avio_alloc_context() failed. - - - - avformat_open_input() failed: %1. - - - - avformat_find_stream_info() failed: %1. - - - - Could not find audio stream. - - - - Codec [id: %1] not found. - - - - avcodec_open2() failed: %1. - - - - Cannot find usable audio output device. - - - - Unsupported sample format. - - - - ao_open_live() failed: - - - - No driver. - - - - This driver is not a live output device. - - - - A valid option key has an invalid value. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - - - - Unknown error. - - - - avcodec_alloc_frame() failed. - - - - - QuickFilterLine - - Dictionary search/filter (Ctrl+F) - - - - Quick Search - - - - Clear Search - - - - - ResourceToSaveHandler - - ERROR: %1 - - - - Resource saving error: - - - - The referenced resource failed to download. - İlgili kaynak indirilmesi başarısız oldu. - - - - Romaji - - Hepburn Romaji for Katakana - Katakana için Hepburn Romaji - - - Hepburn Romaji for Hiragana - Hiragana için Hepburn Romaji - - - - RussianTranslit - - Russian Transliteration - Rusça Harf Çevirisi - - - - ScanPopup - - ... - ... - - - word - Sözcük - - - Alt+M - Alt+M - - - Alt+S - Alt+S - - - Shows or hides the dictionary bar - Sözlükler Çubuğu'nu Göster/Gizle - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Bu ekranda kalır ve böylece bu pencere, sabitlenebilir. -Yeniden boyutlandırma, ya da başka bir şekilde yönetilebilir. - - - Dialog - İletişim - - - List Matches (Alt+M) - Eşlenenler Listesi (Alt+M) - - - Pronounce Word (Alt+S) - Sözcüğü Seslendir (Alt+S) - - - Send word to main window (Alt+W) - Ana pencereye kelimeyi gönder (Alt+W) - - - Alt+W - Alt+W - - - Back - Önceki - - - Forward - Sonraki - - - GoldenDict - GoldenDict - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - Name - İsim - - - Path - Yol - - - Icon - - - - - Sources - - Files - Dosyalar - - - Forvo - Forvo - - - Hiragana - Hiragana - - - Systems: - Sistemler: - - - Nihon-shiki - Nippon - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Alternatif olarak %GD1251% için CP1251, %GDISO1% için ISO 8859-1 kullanılabilir. - - - Greek transliteration - Yunanca Harf Çevirisi - - - Remove site <b>%1</b> from the list? - Listeden <b>%1 </b> sitesi kaldırılsın mı? - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text- -indent:0px;"> Kendi Anahtarınızı <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">buradan</span></a> alın, ya da varsayılan olarak kullanmak için boş -bırakın.</p></td></tr></table></body></html> - - - Wikipedia - Vikipedi - - - Katakana Japanese syllabary - Japon Katakana Yazım Denetimi Tablosu - - - Make dictionaries from bunches of audiofiles by adding paths here: - Ses dosyalarının dizinlerini buraya ekleyin: - - - Remove directory <b>%1</b> from the list? - Listeden <b>%1 </b> dizini kaldırılsın mı? - - - Japanese Romaji - Japon Romaji - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Nippon sistemine dayalı, çağdaş Japon için değiştirilmiş. -ISO 3602 gibi standart - -Henüz GoldenDict uygulanmadı. - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Dil kodlarının tam listesi için <a href="http://www.forvo.com/languages-codes/">buraya tıklayın</a>. - - - Wikipedia (MediaWiki) sites: - Vikipedia (MediaWiki) Siteleri: - - - Sound Dirs - Ses Dizini - - - API Key: - API Anahtarı: - - - The most widely used method of transcription of Japanese, -based on English phonology - İngilizce telaffuza göre, Japon harf çevirisinde -en yaygın olarak kullanılan yöntem - - - Hiragana Japanese syllabary - Japon Hiragana Yazım Denetimi Tablosu - - - Transliteration - Harf Çevirisi - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - En düzenli sistem, kana yazı sistemleri için bire bir -ISO 3602 gibi standart. - -GoldenDict için henüz uygulanmadı. - - - Russian transliteration - Rusça Harf Çevisiri - - - Morphology - Morfoloji - - - Enable pronunciations from Forvo - Forvo ile telaffuzu etkinleştir - - - &Change... - D&eğiştir... - - - Katakana - Katakana - - - Path to a directory with Hunspell/Myspell dictionaries: - Hunspell / Myspell sözlükler ile dizin yolu: - - - Re&scan now - Yenide&n Tara - - - German transliteration - Almanca Harf Çevirisi - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - <a href="http://www.forvo.com/">Forvo.com</a> dan canlı telafuzlar. Bu site, insanların kelime telaffuzlarını kaydetmeye ve paylaşmaya izin verir. GoldenDict ile onları dinleyebilirsiniz. - - - Any websites. A string %GDWORD% will be replaced with the query word: - Herhangi bir web sitesi. Metin, %GDWORD% arama kelimesi ile değiştirilecektir: - - - (not available in portable version) - (taşınabilir bir versiyon değil) - - - &Add... - &Ekle... - - - Choose a directory - Dizin seç - - - &Remove - &Kaldır - - - Websites - Web Siteleri - - - Paths to search for the dictionary files: - Sözlük dosyalarının aranacağı yer: - - - List of language codes you would like to have. Example: "en, ru". - Kullanmak istediğiniz dil kodlarının listesi. Örneğin, 'tr, en ". - - - Confirm removal - Kaldırmayı Onayla - - - Language codes (comma-separated): - Dil kodları (virgülle ayrılmış): - - - Syllabaries: - Yazım Denetimi Tablosu: - - - Available morphology dictionaries: - Kullanılabilir Morfoloji Sözlükleri: - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Forvo kullanımı için şu an bir API anahtarı gerekmektedir. -İlerde kullanılamayabilir bundan dolayı kendi anahtarınızı almak için -siteye kaydolun, varsayılan olarak kullanmak için bu alanı boş bırakın. - - - Enables to use the Latin alphabet to write the Japanese language - Japonca yazmak için Latin alfabesinin kullanılmasını sağlar - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Her bir morfoloji, sözlükte yanlış yazılan kelime/ -kelimeleri arar ve yazım önerileri için kök -sağlamaktadır. Ayrı bir yardımcı sözlük olarak -görünür.Bunları kullanmak için uygun sözlükleri -uygun grupların altlarına ekleyin. - - - Hepburn - Hepburn - - - Kunrei-shiki - Kunrei-shiki - - - Programs - Programlar - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Her türlü harici programlar. Metin %GDWORD% arama kelimesi ile değiştirilecektir. Bu kelime de standart girişten girecektir. - - - Remove program <b>%1</b> from the list? - Programı <b>%1</b> listeden çıkar? - - - Belarusian transliteration - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - - - - Text to Speech - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - - - - DICT servers - - - - DICT servers: - - - - - StylesComboBox - - None - Yok - - - - TextToSpeechSource - - Selected voice engines: - - - - &Add - - - - &Remove - &Kaldır - - - Preview - - - - Available voice engines: - - - - Text to be previewed: - - - - Type text to be previewed here. - - - - &Preview - - - - No TTS voice available - - - - Confirm removal - Kaldırmayı Onayla - - - Remove voice engine <b>%1</b> from the list? - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - - - - Preferences - Tercihler - - - Volume: - - - - Rate: - - - - - TranslateBox - - Type a word or phrase to search dictionaries - - - - Drop-down - - - - - VoiceEnginesModel - - Enabled - Etkin - - - Name - İsim - - - Id - - - - Icon - - - - - WebSitesModel - - Name - İsim - - - Address - Adres - - - Enabled - Etkin - - - Icon - - - - - WordFinder - - Failed to query some dictionaries. - Bazı sözlükler sorgulamak için başarısız oldu. - - - - WordList - - WARNING: %1 - UYARI: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/uk_UA.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/uk_UA.ts deleted file mode 100644 index 68c5e907b8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/uk_UA.ts +++ /dev/null @@ -1,4848 +0,0 @@ - - - - - About - - - About - Про програму - - - - GoldenDict dictionary lookup program, version - GoldenDict — програма для роботи зі словниками, версія - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © 2008-2013 Konstantin Isakov (ikm@goldendict.org) - © 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - Credits: - Подяки: - - - #.# - #.# - - - - Licensed under GNU GPLv3 or later - Ліцензовано за GNU GPLv3 або пізніше - - - - [Unknown] - [Невідомий] - - - - Based on Qt %1 (%2, %3 bit) - Основано наQt %1 (%2, %3 біт) - - - - ArticleMaker - - - Expand article - Розкрити статтю - - - - Collapse article - Згорнути статтю - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - Нема перекладу для <b>%1</b> в групі <b>%2</b>. - - - - No translation was found in group <b>%1</b>. - Нема перекладу в групі <b>%1</b>. - - - - Welcome! - Ласкаво просимо! - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Ласкаво просимо до <b>GoldenDict</b>!</h3><p>Щоб розпочати роботу з програмою, спочатку відвідайте <b>Зміни|Словники</b>, та додайте деякі шляхи до словників, де їх можна знайти, вкажіть варіанти сайтів Wikipedia або інших джерел, встановити порядок словників або згрупувати словники.<p>І тоді ви зможете шукати самі слова! Ви можете це здійснити в цьому вікні, використовуючи панель зліва, або можете через <a href="Контекстні вікна">шукати слова з інших запущених програм</a>. <p>Щоб налаштувати програму, перевірте доступність налаштувань в <b>Зміни|Налаштування</b>. Всі параметри мають підказки, переконайтесь, що прочитали їх, якщо в чомусь не впевнені.<p>Якщо потрібна допомога, маєте якісь запитання, поради або просто бажаєте поділитись враженнями, ми будемо раді кожному на <a href="http://goldendict.org/forum/">форумі</a> програми.<p>Відвідайте <a href="http://goldendict.org/">сайт</a> програми щодо оновлень. <p>© 2008–2013 Konstantin Isakov. Ліцензовано за GPLv3 або пізнішої версії. - - - - Working with popup - Контекстні вікна - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Контекстні вікна</h3>Для пошуку слів з інших запущених програм вам потрібно ввімкнути <i>«Контекстні вікна»</i> в меню <b>Налаштування</b> і потім може увімкнути його в будь-який момент натиснувши піктограму «Контекстне вікно» вище, або натиснувши піктограму в лотку нижче правим клацом мишки і вибравши його в контекстному меню. - - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Потім наведіть курсор миші на слово, котре ви бажаєте перекласти, у сторонній програмі, тоді появиться контекстне вікно з потрібним описом слова. - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Тепер виберіть будь-яке слово,котре ви бажаєте перекласти, у сторонній програмі за допомогою мишки (подвійний клац або підвівши курсор при затиснутій лівій кнопці), тоді появиться контекстне вікно з потрібним описом слова. - - - - (untitled) - (без назви) - - - - (picture) - (зображення) - - - - ArticleRequest - - - Expand article - Розкрити статтю - - - - From - Зі словника - - - - Collapse article - Згорнути статтю - - - - Query error: %1 - Помилка запиту: %1 - - - - Close words: - Близькі за значенням: - - - - Compound expressions: - Словосполучення: - - - - Individual words: - Окремі слова: - - - - ArticleView - - - Form - Форма - - - - about:blank - about:blank - - - - x - x - - - - Find: - Знайти: - - - - - &Previous - &Попереднє - - - - - &Next - &Наступне - - - - Ctrl+G - Ctrl+G - - - - &Case Sensitive - &З урахуванням регістру - - - - Highlight &all - Виділити &все - - - - Select Current Article - Вибрати поточний об'єкт - - - - Copy as text - Скопіювати як текст - - - - Inspect - Дослідити - - - - Resource - Ресурс - - - - Audio - Аудіо - - - - TTS Voice - Голос TTS - - - - Picture - Зображення - - - - Definition from dictionary "%1": %2 - Визначення зі словника "%1": %2 - - - - Definition: %1 - Визначення: %1 - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - Вказаного ресурсу не існує. - - - - The referenced audio program doesn't exist. - Вказана аудіо програма не існує. - - - - - ERROR: %1 - Помилка:%1 - - - - Save sound - Зберегти звук - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Звукові файли(*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Усі файли (*.*) - - - - Save image - Зберегти малюнок - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Графічні файли (*.bmp *.jpg *.png *.tif);;Усі файли (*.*) - - - - &Open Link - &Відкрити посилання - - - - Video - Відеозапис - - - - Video: %1 - Відеозапис: %1 - - - - Open Link in New &Tab - Відкрити посилання в новій в&кладці - - - - Open Link in &External Browser - Відкрити посилання у &зовнішньому переглядачі - - - - &Look up "%1" - &Пошук «%1» - - - - Look up "%1" in &New Tab - Пошук «%1» в &новій вкладці - - - - Send "%1" to input line - Послати "%1" до стрічки введення - - - - - &Add "%1" to history - &Додати "%1" до історії - - - - Look up "%1" in %2 - Пошук «%1» в %2 - - - - Look up "%1" in %2 in &New Tab - Пошук «%1»в %2 в &новій вкладці - - - - WARNING: FFmpeg Audio Player: %1 - Попередження: звуковий програвач FFmpeg: %1 - - - Playing a non-WAV file - Програти файл в форматі, який не є WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Щоб увімкнути відтворення файлів відмінних від WAV, будь ласка, перейдіть до меню <b>Зміни|Налаштування</b>, натисніть на вкладку <b>Аудіо</b> та виберіть <b>Програвати через DirectShow</b>. - - - Bass library not found. - Басова бібліотека не знайдена. - - - Bass library can't play this sound. - Басова бібліотека не взмозі відтворити цей звук. - - - - Failed to run a player to play sound file: %1 - Не вдалось запустити програвач для відтворення звукового файла: %1 - - - - Failed to create temporary file. - Не вдалось створити тимчасовий файл. - - - - Failed to auto-open resource file, try opening manually: %1. - Не вдалось відкрити файл ресурсу, спробуйте відкрити вручну: %1. - - - - The referenced resource failed to download. - Не вдалось звантажити вказаний ресурс. - - - - Save &image... - Зберегти &зображення… - - - - Save s&ound... - Зберегти з&вук - - - - WARNING: %1 - УВАГА: %1s - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - Білоруська транслітерація з латиницю у кирилицю (класична орфографія) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - Білоруська транслітерація з латиницю у кирилицю (шкільна орфографія) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Білоруська транслітерація (пом'якшує різницю -між класично та шкільною кириличною орфографією) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - - - - - You need to supply a Username and a Password to access via proxy - - - - - Username: - - - - - Password: - Пароль: - - - - DictGroupWidget - - - Form - Форма - - - - Group icon: - Піктограма групи: - - - - Shortcut: - Скорочення: - - - - None - Нема - - - - From file... - З файла… - - - - Choose a file to use as group icon - Виберіть файл, з якого братиметься групова піктограма - - - - Images - Зображення - - - - All files - Усі файли - - - - Error - Помилка - - - - Can't read the specified image file. - Неможливо прочитати вказане зображення. - - - - DictGroupsWidget - - - - - - Dictionaries: - Словники: - - - - Confirmation - Підтвердження - - - - Are you sure you want to generate a set of groups based on language pairs? - Бажаєте створити групи, впорядковані за різними мовами? - - - - Unassigned - Не призначений - - - - Combine groups by source language to "%1->" - Об'єднати групи за основною мовою у "%1->" - - - - Combine groups by target language to "->%1" - Об'єднати групи за бажаною мовою у "->%1" - - - - Make two-side translate group "%1-%2-%1" - Зробити двох-бокову групу перекладу "%1-%2-%1" - - - - - Combine groups with "%1" - Об'єднати групи з "%1" - - - - DictHeadwords - - - Search mode - - - - - This element determines how filter string will be interpreted - - - - - If checked on the symbols case will be take in account when filtering - - - - - Match case - - - - - Exports headwords to file - - - - - Export - - - - - Help - - - - - OK - - - - - Press this button to apply filter to headwords list - - - - - Apply - - - - - If checked any filter changes will we immediately applied to headwords list - - - - - Auto apply - - - - - Filter: - - - - - Filter string (fixed string, wildcards or regular expression) - - - - - Text - - - - - Wildcards - - - - - RegExp - - - - - Unique headwords total: %1, filtered: %2 - - - - - Save headwords to file - - - - - Text files (*.txt);;All files (*.*) - Текстові файли (*.txt);;Всі файли (*.*) - - - - Export headwords... - - - - - Cancel - Скасувати - - - - DictInfo - - - Total articles: - Статей загалом: - - - - Translates from: - Перекладає з: - - - - Total words: - Слів загалом: - - - - Translates to: - Перекладає на: - - - - Open folder - Відкрити теку - - - - Edit dictionary - Редагувати словник - - - - Files comprising this dictionary: - Файли,що містяться в цьому словнику: - - - - Description: - Опис: - - - - Show all unique dictionary headwords - - - - - Headwords - - - - - Edit the dictionary via command: -%1 - Редагувати словник через команду: -%1 - - - - DictListModel - - - %1 entries - %1 статей - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - Увімкнено - - - - Name - Назва - - - - Address - Адреса - - - - Databases - - - - - Strategies - - - - - Icon - - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - Панель словника - - - - &Dictionary Bar - &Панель словника - - - - Extended menu with all dictionaries... - Розширене меню з усіма словниками - - - - Edit this group - Редагувати цю групу - - - - Dictionary info - Інфа словника - - - - Dictionary headwords - - - - - Open dictionary folder - Відкрити словникову теку - - - - Edit dictionary - Редагувати словник - - - - EditDictionaries - - - Dictionaries - Словники - - - - &Sources - &Джерела - - - - - &Dictionaries - &Словники - - - - - &Groups - &Групи - - - - Sources changed - Джерела змінено - - - - Some sources were changed. Would you like to accept the changes? - Деякі джерела змінено. Бажаєте прийняти ці зміни? - - - - Accept - Прийняти - - - - Cancel - Скасувати - - - - ExternalViewer - - - the viewer program name is empty - назва програми перегляду порожнє - - - - FTS::FullTextSearchDialog - - - Full-text search - - - - - Whole words - - - - - Plain text - - - - - Wildcards - - - - - RegExp - - - - - Max distance between words (%1-%2): - - - - - Max articles per dictionary (%1-%2): - - - - - - - Articles found: - - - - - Now indexing: - - - - - None - - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - - - - - The search line must contains at least one word containing - - - - - or more symbols - - - - - No dictionaries for full-text search - - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - Помилка аналізу XML: %1 в %2,%3 - - - - Added %1 - Додано %1 - - - - by - - - - - Male - чоловіком - - - - Female - жінкою - - - - from - з - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Перейдіть до меню <b>Зміни|Словники|Джерела|Forvo</b> та застосуйте наш власний ключ API, щоб усунути цю проблему. - - - - FullTextSearchDialog - - - - Search - - - - - Match case - - - - - Mode: - - - - - Articles found: - - - - - Available dictionaries in group: - - - - - Wait for indexing: - - - - - Total: - - - - - Indexed: - - - - - Now indexing: None - - - - - Cancel - Скасувати - - - - Help - - - - - GermanTranslit - - - German Transliteration - Німецька транслітерація - - - - GreekTranslit - - - Greek Transliteration - Грецька транслітерація - - - - GroupComboBox - - - Choose a Group (Alt+G) - Вибрати групу (Alt+G) - - - - GroupSelectorWidget - - - Form - Форма - - - - Look in - Пошук в - - - - Groups - - - Dictionaries available: - Доступні словники: - - - - Add selected dictionaries to group (Ins) - І додати вибрані словники у групу (Ins) - - - - > - > - - - - Ins - Ins - - - - Remove selected dictionaries from group (Del) - Вилучити вибрані словники з групи (Del) - - - - < - < - - - - Del - Del - - - - Groups: - Групи: - - - - Tab 2 - Вкладка 2 - - - - Create new dictionary group - Створити нову групу словників - - - - &Add group - &Додати групу - - - - Create language-based groups - Створити групи, впорядковані за мовою - - - - Auto groups - Автоматичне групування - - - - Rename current dictionary group - Перейменувати поточну групу - - - - Re&name group - &Перейменувати - - - - Remove current dictionary group - Вилучити поточну групу - - - - &Remove group - &Вилучити групу - - - - Remove all dictionary groups - Вилучити всі групи - - - - - Remove all groups - Вилучити всі групи - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Перено&сьте словники з/в групи, переміщайте їх усередині групи, впорядковуйте використовуючи мишку. - - - - Group tabs - - - - - Open groups list - - - - - Add group - Додати групу - - - - Give a name for the new group: - Надайте назву новій групі: - - - - Rename group - Перейменуйте групу - - - - Give a new name for the group: - Надайте нову назву групі: - - - - Remove group - Вилучити групу - - - - Are you sure you want to remove the group <b>%1</b>? - Бажаєте вилучити групу <b>%1</b>? - - - - Are you sure you want to remove all the groups? - Бажаєте вилучити всі групи? - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - Назад - - - - Forward - Вперед - - - - Zoom In - Зблизити - - - - Zoom Out - Віддалити - - - - Normal Size - Нормальний розмір - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - &Вилучити виділене - - - - Copy Selected - Скопіювати виділене - - - - History: - Історія: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - Розмір історії: %1 статей з максимальних %2 - - - - Hunspell - - - Spelling suggestions: - Орфографічні підказки: - - - - %1 Morphology - Морфологія %1 - - - - HunspellDictsModel - - - Enabled - Увімкнено - - - - Name - Назва - - - - Initializing - - - GoldenDict - Initializing - Запуск GoldenDict - - - - - Please wait while indexing dictionary - Заждіть, будь ласка, поки розпізнаються словники - - - - Dictionary Name - Назва словника - - - - Please wait... - Зачекайте, будь ласка… - - - - Language - - - Afar - Афар - - - - Abkhazian - Абхазька - - - - Avestan - Авестан - - - - Afrikaans - Африкаанс - - - - Akan - Акан - - - - Amharic - Амхарська - - - - Aragonese - Арагонська - - - - Arabic - Арабська - - - - Assamese - Асамійська - - - - Avaric - Аварська - - - - Aymara - Аймарська - - - - Azerbaijani - Азербайджанська - - - - Bashkir - Башкирська - - - - Belarusian - Білоруська - - - - Bulgarian - Болгарська - - - - Bihari - Біхарі - - - - Bislama - Біслама - - - - Bambara - Бенгальська - - - - Bengali - Бенгальська - - - - Tibetan - Тибетська - - - - Breton - Бретонська - - - - Bosnian - Боснійська - - - - Catalan - Каталонська - - - - Chechen - Чеченська - - - - Chamorro - Чаморо - - - - Corsican - Корсиканська - - - - Cree - Крі - - - - Czech - Чеська - - - - Church Slavic - Церковнослов'янська - - - - Chuvash - Чуваська - - - - Welsh - Уельська - - - - Danish - Данська - - - - German - Німецька - - - - Divehi - Дівехі - - - - Dzongkha - Дзонг-ке - - - - Ewe - Еве - - - - Greek - Грецька - - - - English - Англійська - - - - Esperanto - Есперанто - - - - Spanish - Іспанська - - - - Estonian - Естонська - - - - Basque - Баскська - - - - Persian - Перська - - - - Fulah - Фула - - - - Finnish - Фінська - - - - Fijian - Фіджійська - - - - Faroese - Фарерська - - - - French - Французька - - - - Western Frisian - Фризька - - - - Irish - Ірландська - - - - Scottish Gaelic - Гаельська (Шотландія) - - - - Galician - Галісійська - - - - Guarani - Гуарані - - - - Gujarati - Гуджараті - - - - Manx - Манкс - - - - Hausa - Гауса - - - - Hebrew - Єврейська - - - - Hindi - Хінді - - - - Hiri Motu - Хірімоту - - - - Croatian - Хорватська - - - - Haitian - Гаїтянська - - - - Hungarian - Угорська - - - - Armenian - Вірменська - - - - Herero - Гереро - - - - Interlingua - Інтерлінгва - - - - Indonesian - Індонезійська - - - - Interlingue - Окциденталь - - - - Igbo - Ігбо - - - - Sichuan Yi - Сичуань - - - - Inupiaq - Інупіак - - - - Ido - Ідо - - - - Icelandic - Ісландська - - - - Italian - Італійська - - - - Inuktitut - Інуктітут - - - - Japanese - Японська - - - - Javanese - Яванська - - - - Georgian - Грузинська - - - - Kongo - Конґолезька - - - - Kikuyu - Кікуйю - - - - Kwanyama - Кваньяма - - - - Kazakh - Казахська - - - - Kalaallisut - Калаалісут - - - - Khmer - Кхмерська - - - - Kannada - Каннада - - - - Korean - Корейська - - - - Kanuri - Канурі - - - - Kashmiri - Кашмірська - - - - Kurdish - Курдська - - - - Komi - Комі - - - - Cornish - Корнійська - - - - Kirghiz - Киргизька - - - - Latin - Латинська - - - - Luxembourgish - Люксембурзька - - - - Ganda - Ганда - - - - Limburgish - Лімбурганська - - - - Lingala - Лінгала - - - - Lao - Лаоська - - - - Lithuanian - Литовська - - - - Luba-Katanga - Луба-катанга - - - - Latvian - Латвійська - - - - Malagasy - Малагасійська - - - - Marshallese - Маршальська - - - - Maori - Маорі - - - - Macedonian - Македонська - - - - Malayalam - Малайська - - - - Mongolian - Монгольська - - - - Marathi - Мараті - - - - Malay - Малайська - - - - Maltese - Мальтійська - - - - Burmese - Бірманська - - - - Nauru - Науру - - - - Norwegian Bokmal - Норвезька (Букмол) - - - - North Ndebele - Північна Ндебелє - - - - Nepali - Непальська - - - - Ndonga - Ндонга - - - - Dutch - Голландська - - - - Norwegian Nynorsk - Норвезька (Нюношк) - - - - Norwegian - Норвезька - - - - South Ndebele - Південна Ндебелє - - - - Navajo - Навахо - - - - Chichewa - Чічеванська - - - - Occitan - Оксітанська - - - - Ojibwa - Оджібва - - - - Oromo - Оромо - - - - - Oriya - Орія - - - - Ossetian - Осетинська - - - - Panjabi - Панджабська - - - - Pali - Палі - - - - Polish - Польська - - - - Pashto - Пуштунська - - - - Portuguese - Португальська - - - - Quechua - Кечуа - - - - Raeto-Romance - Ретороманська - - - - Kirundi - Рунді - - - - Romanian - Румунська - - - - Russian - Російська - - - - Kinyarwanda - Кіньяруанда - - - - Sanskrit - Санскрит - - - - Sardinian - Сардинська - - - - Sindhi - Синдхі - - - - Northern Sami - Північна Саамі - - - - Sango - Санго - - - - Serbo-Croatian - Сербсько-хорватська - - - - Sinhala - Сингала - - - - Slovak - Словацька - - - - Slovenian - Словенська - - - - Samoan - Самоанська - - - - Shona - Шона - - - - Somali - Сомалійська - - - - Albanian - Албанська - - - - Serbian - Сербська - - - - Swati - Свазі - - - - Southern Sotho - Південна Сото - - - - Sundanese - Сунданська - - - - Swedish - Шведська - - - - Swahili - Суахілі - - - - Tamil - Тамільська - - - - Telugu - Телугу - - - - Tajik - Таджицька - - - - Thai - Тайська - - - - Tigrinya - Тигринійська - - - - Turkmen - Туркменська - - - - Tagalog - Тсвана - - - - Tswana - Тсвана - - - - Tonga - Тонга - - - - Turkish - Турецька - - - - Tsonga - Цонґа - - - - Tatar - Татарська - - - - Twi - Тві - - - - Tahitian - Таїтянська - - - - Uighur - Уйгур - - - - Ukrainian - Українська - - - - Urdu - Урду - - - - Uzbek - Узбецька - - - - Venda - Венда - - - - Vietnamese - В'єтнамська - - - - Volapuk - Волапюк - - - - Walloon - Валлонська - - - - Wolof - Волоф - - - - Xhosa - Хоза - - - - Yiddish - Ідиш - - - - Yoruba - Йоруба - - - - Zhuang - Чжуань - - - - Chinese - Китайська - - - - Zulu - Зулуська - - - - Lojban - Ложбан - - - - Traditional Chinese - Традиційна китайська - - - - Simplified Chinese - Спрощена китайська - - - - Other - Інша - - - - Other Simplified Chinese dialects - Інша спрощена китайська - - - - Other Traditional Chinese dialects - Інша традиційна китайська - - - - Other Eastern-European languages - Інші східно-європейські мови - - - - Other Western-European languages - Інші західно-європейські мови - - - - Other Russian languages - Інші слов'яньські мови - - - - Other Japanese languages - Інш японські мови - - - - Other Baltic languages - Інші балтійські мови - - - - Other Greek languages - Інші грецькі мови - - - - Other Korean dialects - Інші корейські мови - - - - Other Turkish dialects - Інші турецькі мови - - - - Other Thai dialects - Інші тайські мови - - - - Tamazight - Тамазит - - - - LoadDictionaries - - - Error loading dictionaries - Помилка завантаження словників - - - - Main - - - Error in configuration file. Continue with default settings? - Помилка в файлі налаштувань. Продовжити з типовими параметрами? - - - - MainWindow - - GoldenDict - GoldenDict - - - - - Welcome! - Ласкаво просимо! - - - - &File - &Файл - - - - &Edit - З&міни - - - - &Help - &Довідка - - - - &View - П&ерегляд - - - - &Zoom - &Масштаб - - - - H&istory - &Журнал - - - Search Pane - Панель пошуку - - - - &Dictionaries... - &Словники… - - - - F3 - F3 - - - &Groups... - &Групи… - - - - Search - - - - - &Search Pane - &Лоток пошуку - - - - &Results Navigation Pane - &Лоток результатів - - - - &History Pane - &Лоток історії - - - - &Preferences... - &Налаштування… - - - - F4 - F4 - - - - &Homepage - &Сторінка проекту - - - - &About - П&ро програму - - - - About GoldenDict - Про GoldenDict - - - - GoldenDict reference - - - - - F1 - F1 - - - - - &Quit - &Вихід - - - - Quit from application - Вийти з програми - - - - Ctrl+Q - Ctrl+Q - - - - &Forum - &Форум - - - - &Close To Tray - &Сховати в лоток - - - - Minimizes the window to tray - Сховати вікно в лоток - - - - Ctrl+F4 - Ctrl+F4 - - - - &Save Article - &Зберегти статтю - - - - Save Article - Зберегти статтю - - - - F2 - F2 - - - - &Print - &Надрукувати - - - - Ctrl+P - Ctrl+P - - - - Page Set&up - &Параметри сторінки - - - - Print Pre&view - Попередній перегляд дру&ку - - - - &Rescan Files - &Повт. просканувати файли - - - - &New Tab - &Нова вкладка - - - - &Always on Top - &Завжди зверху - - - - Always on Top - Завжди зверху - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - Кнопка меню - - - - Search in page - - - - - Ctrl+F - - - - - Full-text search - - - - - Ctrl+Shift+F - - - - Print Preview - Перегляд друку - - - Rescan Files - Переглянути файли - - - - Ctrl+F5 - Ctrl+F5 - - - - &Clear - &Очистити - - - - New Tab - Нова вкладка - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - &Тека конфігурації - - - - - &Show - &Показати - - - - Ctrl+H - Ctrl+H - - - - &Export - &Експортувати - - - - &Import - &Імпортувати - - - Show Names in Dictionary Bar - Показувати назви в панелі словника - - - - &Menubar - &Лоток меню - - - - - Look up in: - Пошук в: - - - - Found in Dictionaries: - Знайдено у словниках: - - - Navigation - Навігація - - - - Back - Назад - - - - Forward - Вперед - - - - Scan Popup - Переглянути - - - - Pronounce Word (Alt+S) - Вимовити слово (Alt+S) - - - - Zoom In - Зблизити - - - - Zoom Out - Віддалити - - - - Normal Size - Нормальний розмір - - - - Words Zoom In - Зблизити слова - - - - Words Zoom Out - Віддалити слова - - - - Words Normal Size - Звичайний розмір слів - - - - Show &Main Window - Показати &головне вікно - - - - Close current tab - Закрити поточну вкладку - - - - Close all tabs - Закрити всі вкладки - - - - Close all tabs except current - Закрити всі вкладки заодно з поточною - - - - Loading... - Завантаження… - - - - %1 dictionaries, %2 articles, %3 words - %1 словників, %2 статей, %3 слів - - - - Look up: - Шукати: - - - - All - Усьому - - - - Now indexing for full-text search: - - - - - Opened tabs - Відкриті вкладки - - - - Show Names in Dictionary &Bar - Відображувати назви у &Рядку словника - - - - Show Small Icons in &Toolbars - Показувати малі налички у &тулбарі - - - - &Navigation - &Навігація - - - - Open Tabs List - Відчинити список вкладок - - - - (untitled) - (без назви) - - - - %1 - %2 - %1 - %2 - - - WARNING: %1 - Попередження: %1 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Не вдалось запустити механізм стеження за гарячими клавішами.<br>Переконайтесь, що ваш XServer має розширення RECORD увімкнутим. - - - - New Release Available - Доступний новий випуск - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Версія <b>%1</b> GoldenDict доступна до звантаження.<br>Натисніть <b>Звантажити</b>, щоб перейти до сторінки звантаження. - - - - Download - Звантажити - - - - Skip This Release - Пропустити цей випуск - - - - - Accessibility API is not enabled - API доступності не ввімкнено - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - You have chosen to hide a menubar. Use %1 to show it back. - Ви вирішили сховати лоток меню. Викор. %1 аби показувати його знову. - - - - Ctrl+M - Ctrl+M - - - - Page Setup - Параметри сторінки - - - - No printer is available. Please install one first. - Не знайдено жодного принтера. Будь ласка, спершу встановіть хоч якийсь. - - - - Print Article - Надрукувати статтю - - - - Article, Complete (*.html) - Стаття, Повна (*.html) - - - - Article, HTML Only (*.html) - Стаття, тільки HTML (*.html) - - - - Save Article As - Зберегти статтю як - - - Html files (*.html *.htm) - Файли HTML (*.html *.htm) - - - - Error - Помилка - - - - Can't save article: %1 - Неможливо зберегти статтю: %1 - - - - Saving article... - Збередення статті… - - - - The main window is set to be always on top. - Головне меню налаштовано аби завжди бути зверху. - - - - &Hide - &Сховати - - - - Export history to file - Експортувати файл історії - - - - - Text files (*.txt);;All files (*.*) - Текстові файли (*.txt);;Всі файли (*.*) - - - - History export complete - Експорти історії завершено - - - - Export error: - Помилка експортування: - - - - Import history from file - Імпортувати історію з файлу - - - - Import error: invalid data in file - Помилка імпорту: недійсна дата у файлі - - - - History import complete - Імпорти історії завершено - - - - Import error: - Помилка імпортування: - - - - Dictionary info - Інфа про словник - - - - Dictionary headwords - - - - - Open dictionary folder - Відкрити словникову теку - - - - Edit dictionary - Редагувати словник - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - Словниковий файл пошкоджено - - - - Failed loading article from %1, reason: %2 - Не вдалося завантажити статтю з%1, причина: %2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - Помилка аналізу XML: %1 в %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - Помилка аналізу XML: %1 в %2,%3 - - - - MediaWikisModel - - - Enabled - Увімкнено - - - - Name - Назва - - - - Address - Адреса - - - - Icon - Наличка - - - - OrderAndProps - - - Form - Форма - - - - Dictionary order: - Порядок словників: - - - ... - … - - - - Inactive (disabled) dictionaries: - Вимкнені словники: - - - - Dictionary information - Інформація про словник - - - - Name: - Назва: - - - - Total articles: - Статей загалом: - - - - Total words: - Слів загалом: - - - - Translates from: - Переклад з: - - - - Translates to: - Переклад на: - - - - Description: - Опис: - - - - Files comprising this dictionary: - Файли, які охоплює словник: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Впорядковуйте словники, переміщуючи пункти словників. Вимикайте словники, переносячи їх у відповідну групу. - - - - Sort by name - Сортувати за іменем - - - - Sort by languages - Сортувати за мовою - - - - Dictionary headwords - - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - Шлях - - - - Recursive - Рекурсивно - - - - Preferences - - - Preferences - Налаштування - - - - &Interface - &Інтерфейс - - - - Tabbed browsing - Вкладки - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Зазвичай при відкритті нової вкладки перемикається на -неї моментально. Однак, коли це ввімкнено, нові вкладки -відкриватимуться без перемикання на них. - - - - Open new tabs in background - Відкрити нові вкладки фоново - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Коли це ввімкнено, нові вкладки відкриватимуть -одразу за поточною. Інакше вони додаватимуться -до останніх. - - - - Open new tabs after the current one - Відкрити нові вкладки за поточною - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Оберіть цю опцію якщови не хочете бачити головну вкладку, у випадку якщо відкрито лише одну вкладку. - - - - Hide single tab - Сховати єдину вкладку - - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab керує вкладками у MRU порядку - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Коли це ввімкнено, піктограма з'явиться в системному лотку, якою можна -буде відкривати головне вікно і здійснювати інші задачі. - - - - Enable system tray icon - Увімкнути піктограму системного лотка - - - - With this on, the application starts directly to system tray without showing -its main window. - Коли це ввімкнено, програма запускається відразу в системному лотку без -запуску головного вікна. - - - - Start to system tray - Запускати в системному лотку - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Коли це ввімкнено, закриття головного вікна сховає програму в лоток. - - - - Close to system tray - Згорнути до системного лотка - - - - Startup - Запуск - - - - Automatically starts GoldenDict after operation system bootup. - Автоматично запускати GoldenDict при завантаженні системи. - - - - Start with system - Запускати разом із системою - - - - Interface language: - Мова інтерфейсу: - - - - Display style: - Стиль інтерфейсу: - - - - Double-click translates the word clicked - Подвійний клац перекладе слово натиснувши - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Зазвичай, коли ви натискаєте клавішу ESC то цим ви переміщуєте фокус рядка перекладу. - З цією ж опцією, ви просто сховаєте основне вікно. - - - - ESC key hides main window - Кнопка ESC приховує основне вікно - - - - Turn this option on if you want to select words by single mouse click - Оберіть цю опцію, якщо ви волієте обирати слова одним кліком миші - - - - Select word by single click - Обрати слово одним кліком миші - - - - Add-on style: - Стиль додатку: - - - - Help language - - - - - Adjust this value to avoid huge context menus. - Скоригуйте це значення, щоб уникнути величезних контекстних меню. - - - - Context menu dictionaries limit: - Обмеження контекстного меню для словників: - - - - &Scan Popup - &Контекстне вікно - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Коли це ввімкнено, контекстне вікно перекладу буде показуватись кожного -разу, коли ви наводите мишку на яке-небудь слово на екрані (у Windows) -або виділіть якесь слово мишкою (в Linux). Коли це ввімкнено, ви зможете -вимкнути/ввімкнути це з головного меню або піктограми лотку. - - - - Enable scan popup functionality - Увімкнути контекстні вікна - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Визначає, чи типово ввімкнуті контекстні вікна, чи ні. Якщо це відмічено, -програма завжди запускатиметься з контекстними меню. - - - - Start with scan popup turned on - Увімкнути контекстні меню при запуску - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Коли це ввімкнено, контекстні вікна будуть появлятись лише при затисненні -всіх вибраних клавіш з виділеним словом. - - - - Only show popup when all selected keys are kept pressed: - Показувати контекстні вікна лише, коли затиснено всі ці вибрані клавіші: - - - - Left Ctrl only - Лише лівий Ctrl - - - - Left Ctrl - Лівий Ctrl - - - - Right Shift only - Лише правий Shift - - - - Right Shift - Правий Shift - - - - Alt key - Будь-який Alt - - - - Alt - Alt - - - - Ctrl key - Будь-яка Ctrl - - - - Ctrl - Ctrl - - - - Left Alt only - Лише лівий Alt - - - - Left Alt - Лівий Alt - - - - Shift key - Будь-який Shift - - - - Shift - Shift - - - - Right Alt only - Лише правий Alt - - - - Right Alt - Правий Alt - - - - Right Ctrl only - Лише правий Ctrl - - - - Right Ctrl - Правий Ctrl - - - - Left Shift only - Лише лівий Shift - - - - Left Shift - Лівий Shift - - - - Windows key or Meta key - Будь-яка Windows або Meta - - - - Win/Meta - Win/Meta - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Зазвичай, для того, щоб увімкнути контекстні вікна, -вам потрібно утримувати вибрані клавіші затиснутими -протягом виділення слова. Коли це ввімкнено, вибрані -клавіші можуть бути затиснуті й опісля виділення. - - - - Keys may also be pressed afterwards, within - Клавіші можна натиснути згодом - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Щоб уникнути хибностей роботи, клавіші будуть -обмежені в часі опісля того, як слово виділено. -Значення в секундах вказується тут. - - - - secs - секунд - - - - Send translated word to main window instead of to show it in popup window - Послилати перекладене слово до головного вікна, замість того аби показувати його у виринаючому вікні - - - - Send translated word to main window - Послилати перекладене слово до головного вікна - - - - Hotkeys - Гарячі клавіші - - - - Use the following hotkey to show or hide the main window: - Щоб показувати і ховати головне вікно, використовується така комбінація клавіш: - - - - Use the following hotkey to translate a word from clipboard: - Щоб перекладати слово з кишені, використовується така комбінація клавіш: - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Гарячі клавіші — загальні та працюють з будь-якої програми і з будь-яким текстом, поки GoldenDict працює фоново. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Майте на увазі: ви використовуєте випуск X.Org XServer, який не підтримує розширення RECORD. Гарячі клавіші в GoldenDict, імовірно, не працюватимуть. Це має бути виправлено сервером. Будь ласка, зверніться за </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">інформацію про ваду</span></a><span style=" color:#ff0000;"> та залиште коментарі, якщо бажаєте.</span></p></body></html> - - - - &Audio - &Аудіо - - - - Pronunciation - Вимова - - - - Auto-pronounce words in main window - Автоматично вимовляти слово в головному меню - - - - Auto-pronounce words in scan popup - Автоматично вимовляти слова в контекстному меню - - - - Playback - Відтворення - - - - Play audio files via FFmpeg(libav) and libao - Програвати аудіофайли через FFmpeg(libav) та libao - - - - Use internal player - Використовувати внутрішній програвач - - - - System proxy - - - - - Custom proxy - - - - - Custom settings - - - - - Full-text search - - - - - Allow full-text search for: - - - - - Don't search in dictionaries containing more than - - - - - articles (0 - unlimited) - - - - - Select this option to automatic collapse big articles - Виберіть це, щоб автоматично згортати великі статті - - - - Collapse articles more than - Згортати статті з понад - - - - Articles longer than this size will be collapsed - Статті довші за цей розмір буде згорнуто - - - - symbols - символів - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Використовувати рідне відтворення для Windows. Обмежений « .wav» файлами, -але працює справно. - - - Play via Windows native API - Програвати через рідний API для Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Програвати звук через Phonon. Може інколи бути несправним, -але підтримує більшість звукових форматів. - - - Play via Phonon - Програвати через Phonon - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - Програти аудіо з допомогою Бас бібліотекаи. Оптимальний вибір. Аби використати цю опцію -ви мусити помістити bass.dll (http://www.un4seen.com) у теку GoldenDict. - - - Play via Bass library - Програти за допомогою Бас бібліотеки - - - - Use any external program to play audio files - Використовувати якусь сторонню програму для відтворення звукових файлів - - - - Use external program: - Використовувати сторонню програму: - - - - &Network - &Мережа - - - - Enable if you wish to use a proxy server -for all program's network requests. - Увімкніть, якщо ви бажаєте використовувати -проксі-сервер для всіх мережевих запитів. - - - - Use proxy server - Використати проксі-сервер - - - - Type: - Тип: - - - - Host: - Вузол: - - - - Port: - Порт: - - - - User: - Користувач: - - - - Password: - Пароль: - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Увімкнувши це, GoldenDict буде блокувати більшість реклами -забороняючи вмісту (малюнки, рамки) зображатись на сайті. -Якщо деякі сайти не працюють, вимкніть це. - - - - Disallow loading content from other sites (hides most advertisements) - Заборонити завантажувати вміст з інших сайтів (ховає більшість реклами) - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Увімкнувши це, ви зможете прослуховувати аудіо випову з -онлайн словників, що використовують Flash або ж інші веб плагіни. -Плагін мусить бути інстальованим аби ця опція працювала. - - - - Enable web plugins - Увімкнути веб плагіни - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Деякі сайти виявлять GoldenDict через загловок HTTP і блокують запити. -Щоб обійти цю проблему, ввімкніть цей параметр. - - - - Do not identify GoldenDict in HTTP headers - Не отожнювати GoldenDict в заголовках HTTP - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Якщо це ввімкнено, програма періодично -перевірятиме наявність нової версії GoldenDict -для звантаження. Якщо це так, то програма -повідомлятиме користувача про це й запропонує -відкрити сторінку звантаження. - - - - Check for new program releases periodically - Періодично перевіряти на випуски нової версії - - - - Ad&vanced - До&даткові - - - - ScanPopup extra technologies - Нові технології ScanPopup - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Спробуйте використовувати технологію IAccessibleEx аби дістати слово під курсором. -Ця технологія працює лише з деякими програмамиЮ що підтримують її. -(напр. Internet Explorer 10). -Ви не мусите обирати цю опцію, якщо ви не користуєтесь такими програмами. - - - - Use &IAccessibleEx - Використовувати &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Спробуйте використовувати технологію UIAutomation аби дістати слово під курсором. -Ця технологія працює лише з деякими програмами, що підтримують її. -Ви не мусите обирати цю опцію, якщо ви не користуєтесь такими програмами. - - - - Use &UIAutomation - Використовувати &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Спробуйте використовувати технологію GoldenDict аби дістати слово під курсором. -Ця технологія працює лише з деякими програмами, що підтримують її. -Ви не мусите обирати цю опцію, якщо ви не користуєтесь такими програмами. - - - - Use &GoldenDict message - Використовувати &GoldenDict повідомлення - - - - History - Історія - - - - Turn this option on to store history of the translated words - Увімкніть цю опцію аби зберігати історію перекладених слів - - - - Store &history - Зберегти &Історію - - - - Specify the maximum number of entries to keep in history. - Зазначте максимальну кількість статей, що зберігають в історії. - - - - Maximum history size: - Максимальний розмір історії: - - - - History saving interval. If set to 0 history will be saved only during exit. - Проміжок збереження історії. Якщо вказати 0, то історія зберігатиметься тільки після виходу з програми. - - - - Save every - Зберігати кожні - - - - minutes - хвилин - - - - Articles - Статей - - - - Turn this option on to always expand optional parts of articles - Увімкніть цю опцію аби завжди додаткові частини статтей - - - - Expand optional &parts - Показувати додаткові &частини - - - - System default - Системна - - - - - Default - Типово - - - - Modern - Modern - - - - Lingvo - Lingvo - - - - Babylon - Babylon - - - - Lingoes - Lingoes - - - - Lingoes-Blue - Lingoes-Blue - - - Play via DirectShow - Програвати через DirectShow - - - - Changing Language - Зміна мови - - - - Restart the program to apply the language change. - Перезапустіть програму, щоб змінити мову. - - - - ProgramTypeEditor - - - Audio - Аудіо - - - - Plain Text - Звичайний текст - - - - Html - Html - - - - Prefix Match - Співпадання префіксу - - - - Unknown - Невідомий - - - - Programs::RunInstance - - - No program name was given. - Назва програми не була надана. - - - - The program has crashed. - Програма зламалася. - - - - The program has returned exit code %1. - Програма повідомила про код виходу %1. - - - - ProgramsModel - - - Enabled - Увімкнено - - - - Type - Тип - - - - Name - Назва - - - - Command Line - Командний рядок - - - - Icon - Наличка - - - - QObject - - - - Article loading error - Помилка завантаження статті - - - - - Article decoding error - Помилка розкодування статті - - - - avformat_alloc_context() failed. - Помилка: avformat_alloc_context(). - - - - av_malloc() failed. - Помилка: av_malloc(). - - - - avio_alloc_context() failed. - Помилка: avio_alloc_context(). - - - - avformat_open_input() failed: %1. - Помилка: avformat_open_input() %1. - - - - avformat_find_stream_info() failed: %1. - Помилка: avformat_find_stream_info() %1. - - - - Could not find audio stream. - Неможливо знайти аудіопотік. - - - - Codec [id: %1] not found. - Кодек [ід: %1] не знайдено. - - - - avcodec_open2() failed: %1. - Помилка: avcodec_open2() %1. - - - - Cannot find usable audio output device. - Неможливо знайти зручний пристрій для аудіовиходу. - - - - Unsupported sample format. - Непідтримуваний формат проби. - - - - ao_open_live() failed: - Помилка: ao_open_live(): - - - - No driver. - Немає носія. - - - - This driver is not a live output device. - Цей носій не є пристроєм потокового аудіовиходу. - - - - A valid option key has an invalid value. - Дійсний ключ має недійсне значення. - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Неможливо відкрити пристрій: %1, канали: %2, частота: %3, бітів: %4. - - - - Unknown error. - Невідома помилка. - - - - avcodec_alloc_frame() failed. - Помилка: avcodec_alloc_frame(). - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - Словниковий пошук/фільтр (Ctrl+F) - - - - Quick Search - Швидкий пошук - - - - Clear Search - Очистити пошук - - - - ResourceToSaveHandler - - - - ERROR: %1 - Помилка: %1 - - - - Resource saving error: - Помилка зберігання ресурсів: - - - - The referenced resource failed to download. - Не вдалось звантажити поданий ресурс. - - - - Romaji - - - Hepburn Romaji for Hiragana - Система романізації Хепбьорна для хіраґани - - - - Hepburn Romaji for Katakana - Система романізації Хепбьорна для катакани - - - - RussianTranslit - - - Russian Transliteration - Російська транслітерація - - - - ScanPopup - - - Dialog - Діалог - - - word - слово - - - List Matches (Alt+M) - Перелік збігів (Alt+M) - - - - - - - - ... - … - - - - Back - Назад - - - - Forward - Вперед - - - Alt+M - Alt+M - - - - Pronounce Word (Alt+S) - Вимовити слово (Alt+S) - - - - Alt+S - Alt+S - - - - Send word to main window (Alt+W) - Послати слово до основного вікна (Alt+W) - - - - Alt+W - Alt+W - - - - Shows or hides the dictionary bar - Показує або ховає панель словника - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Використайте шпильку, щоб вікно залишалось на екрані, -можна змінювати розмір або керувати ним у зручний вам спосіб. - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Path - Шлях - - - - Name - Назва - - - - Icon - Піктограма - - - - Sources - - - Files - Файли - - - - Paths to search for the dictionary files: - Шляхи для пошуку файлів словника: - - - - - - - - - &Add... - &Додати… - - - - - - - - - &Remove - &Вилучити - - - - Re&scan now - Пере&глянути зараз же - - - - Sound Dirs - Теки зі звуками - - - - Make dictionaries from bunches of audiofiles by adding paths here: - Зробіть словники зі зв'язки аудіофайлів, додавши шляхи сюди: - - - - Morphology - Морфологія - - - - Path to a directory with Hunspell/Myspell dictionaries: - Шлях до тезаурусів Hunspell/Myspell: - - - - &Change... - &Змінити… - - - - Available morphology dictionaries: - Доступні морфологічні словники: - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Кожен морфрологічний словник з'являється як -окремий допоміжний словник, який забезпечує -корінь слів для пошуку і орфографічні підказки -для некоректно введених слів. Додайте відповідні -словники до низу відповідних груп. - - - - Wikipedia - Wikipedia - - - - Wikipedia (MediaWiki) sites: - Wikipedia (MediaWiki): - - - - Websites - Сайти - - - - Any websites. A string %GDWORD% will be replaced with the query word: - Будь-які сайти. Рядок %GDWORD% буде замінено на потрібне слово: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Також використовуйте %GD1251% для CP1251 та %GDISO1% для ISO 8859-1. - - - - Programs - Програми - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - Будь які зовнішні програми. %GWORD% рядок буде замінено запитуваним словом. Слово також буде поміщено до стандартного уведення. - - - - Forvo - Forvo - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Жива вимова від <a href="http://www.forvo.com/">forvo.com</a>. Цей сайт дозволяє людям записувати і ділитись вимовою слів. Ви можете прослухати їх за допомогою GoldenDict. - - - - Enable pronunciations from Forvo - Увімкнути вимову з Forvo - - - - API Key: - Ключ API: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Використання Forvo зараз вимагає ключ API. Залиште це поле порожнім, щоб використовувати типовий ключ, який може стати недоступний з часом, або зареєструйтесь на сайті, щоб одержати власний ключ. - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Дістаньте власний ключ <a href="http://api.forvo.com/key/">тут</a>, або залиште поле порожнім, щоб скористатись типовим. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Одержайте ваш власний ключ <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">тут</span></a>, або залиште порожнім, щоб використовувати типовий.</p></td></tr></table></body></html> - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Інакше, використовуйте %GD1251% для CP1251, %GDISO1%...%GDISO16% для ISO 8859-1...ISO 8859-16 відповідно, -%GDBIG5% для Big-5, %GDBIG5HKSCS% для Big5-HKSCS, %GDGBK% для GBK та GB18030, %GDSHIFTJIS% для Shift-JIS. - - - - DICT servers - - - - - DICT servers: - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Будь-яка стороння програма. Рядок %GDWORD% буде замінено на запитуване слово. Якщо такого рядка немає, слово буде підбиратись зі стандартного джерела. - - - - Language codes (comma-separated): - Коди мов (виділяючи комою): - - - - List of language codes you would like to have. Example: "en, ru". - Перелік кодів мов, які б ви воліли мати. Наприклад: "en, uk". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Повний перелік кодів мов <a href="http://www.forvo.com/languages-codes/">тут</a>. - - - - Transliteration - Транслітерація - - - - Russian transliteration - Російська транслітерація - - - - Greek transliteration - Грецька транслітерація - - - - German transliteration - Німецька транслітерація - - - - Belarusian transliteration - Білоруська транслітерація - - - - Enables to use the Latin alphabet to write the Japanese language - Вмикає латинську абетку для японського письма - - - - Japanese Romaji - Японська романдзі - - - - Systems: - Системи: - - - - The most widely used method of transcription of Japanese, -based on English phonology - Найпоширеніший спосіб транскрибування японської, -яка ґрунтується на англійській фонології - - - - Hepburn - Хепбьорн - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Найуживаніша система, яка має точне зображення -силабічної абетки кана. Стандартизовано як ISO 3602 - -Поки що не підтримується в GoldenDict. - - - - Nihon-shiki - Ніхон-сікі - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Ґрунтується на системі ніхон-сікі, але вдосконалено відповідно до стандартів сучасної японської. -Стандартизовано як ISO 3602 - -Ще не реалізовано в GoldenDict. - - - - Kunrei-shiki - Кунрей-сікі - - - - Syllabaries: - Складові азбуки: - - - - Hiragana Japanese syllabary - Складова азбука японської хіраґани - - - - Hiragana - Хіраґана - - - - Katakana Japanese syllabary - Складова азбука японської катакани - - - - Katakana - Катакана - - - - Text to Speech - Текст для вимови - - - - (not available in portable version) - (не доступно в портативній версії) - - - - - - Choose a directory - Вибрати теку - - - - - - - - - Confirm removal - Підтвердження вилучення - - - - - Remove directory <b>%1</b> from the list? - Вилучити теку <b>%1</b> з переліку? - - - - - - Remove site <b>%1</b> from the list? - Вилучити сайт <b>%1</b> з переліку? - - - - Remove program <b>%1</b> from the list? - Вилучити програму <b>%1</b> зі списку? - - - - StylesComboBox - - - None - Жоден - - - - TextToSpeechSource - - - Selected voice engines: - Вибрані голосові рушії: - - - - &Add - &Додати - - - - &Remove - &Вилучити - - - - Preferences - Параметри - - - - Volume: - Гучність: - - - - Rate: - Частота: - - - - Preview - Огляд - - - - Available voice engines: - Доступні голосові рушії: - - - - Text to be previewed: - Текст для огляду: - - - - Type text to be previewed here. - Введіть текст, щоб його оглянути тут. - - - - &Preview - &Огляд - - - - No TTS voice available - Немає доступного голосу TTS - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Неможливо знайти доступний голос TTS.<br>Переконайтесь, що рушій TTS хоча би встановлено на комп'ютері. - - - - Confirm removal - Підтвердити вилучення - - - - Remove voice engine <b>%1</b> from the list? - Вилучити голосовий рушій<b>%1</b> з цього переліку? - - - - TranslateBox - - - Type a word or phrase to search dictionaries - Введіть слово або словосполучення шоб шукати у словниках - - - - Drop-down - Виринаючи - - - - VoiceEnginesModel - - - Enabled - Увімкнено - - - - Name - Назва - - - - Id - Ідентифікатор - - - - Icon - Піктограма - - - - WebSitesModel - - - Enabled - Увімкнено - - - - Name - Назва - - - - Address - Адреса - - - - Icon - Наличка - - - - WordFinder - - - Failed to query some dictionaries. - Не вдалось здійснити пошук по деяких словниках. - - - - WordList - - - WARNING: %1 - УВАГА: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/vi_VN.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/vi_VN.ts deleted file mode 100644 index adba9dcbf9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/vi_VN.ts +++ /dev/null @@ -1,3912 +0,0 @@ - - - - - About - - About - Giới thiệu - - - GoldenDict dictionary lookup program, version - Chương trình tra từ điển Từ điển Vàng, phiên bản - - - #.# - #.# - - - Licensed under GNU GPLv3 or later - Cấp phép theo GNU GPLv3 hoặc mới hơn - - - Credits: - Công trạng: - - - [Unknown] - [Không biết] - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - Bản quyền 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - Based on Qt %1 (%2, %3 bit) - Dựa trên Qt %1 (%2, %3 bit) - - - - ArticleMaker - - No translation for <b>%1</b> was found in group <b>%2</b>. - Không có dịch nghĩa cho <b>%1</b> được tìm thấy trong nhóm <b>%2</b>. - - - No translation was found in group <b>%1</b>. - Không có dịch nghĩa được tìm thấy trong nhóm <b>%1</b>. - - - Welcome! - Chào mừng! - - - Working with popup - Làm việc với popup - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">Làm việc với popup</h3>Để tra từ trong các ứng dụng đang hoạt động khác, bạn cần kích hoạt <i>"Chức năng quét popup"</i> trong <b>Tùy thích</b>, sau đó bật lên bất cứ lúc nào bằng cách nhấn biểu tượng 'Popup' , hay kích chuột phải vào biểu tượng trên khay hệ thống và chọn trong trình đơn hiện lên. - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - Sau đó chỉ cần dừng chuột trên từ mà bạn muốn tra trong ứng dụng khác, và một cửa sổ sẽ bật ra để dịch nghĩa cho bạn. - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - Sau đó chỉ cần dùng chuột chọn từ bạn muốn tra trong ứng dụng khác (nhấp đúp chuột lên từ hay nhấn giữ chuột bôi đen), và một cửa sổ sẽ bật ra để dịch nghĩa cho bạn. - - - (untitled) - (chưa đặt tên) - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">Chào mừng đến với <b>Từ điển Vàng</b>!</h3><p>Để bắt đầu làm việc với chương trình, hãy mở <b>Biên tập|Từ điển</b> để thêm đường dẫn chứa các tệp từ điển, thiết lập các trang Wikipedia và các nguồn khác, sắp xếp hay tạo các nhóm từ điển.<p>Bạn đã sẵn sàng tra nghĩa của từ rồi đấy! Bạn có thể tra trong cửa sổ này bằng cách sử dụng ô bên trái, hoặc bạn có thể <a href="Working with popup">tra từ trong các ứng dụng khác</a>. <p>Để tùy chỉnh chương trình, hãy thử các tùy chọn khác nhau trong <b>Biên tập|Tùy thích</b>. Tất cả các cài đặt đều có các mẹo hiện lên, hãy đọc chúng nếu bạn đang phân vân về một chức năng nào đó.<p>Nếu như bạn cần thêm giúp đỡ, có một vài câu hỏi, gợi ý hay chỉ là thắc mắc xem những người khác đang nghĩ gì, bạn đều được chào mừng đến với <a href="http://goldendict.org/forum/">diễn đàn</a> của chương trình.<p>Hãy kiểm tra <a href="http://goldendict.org/">trang chủ</a> của chương trình để cập nhật nếu muốn. <p>(c) 2008-2013 Konstantin Isakov. Cấp phép theo GPLv3 hoặc mới hơn. - - - (picture) - (hình ảnh) - - - Expand article - Mở rộng bài viết - - - Collapse article - Thu gọn bài viết - - - - ArticleRequest - - From - Từ - - - Query error: %1 - Lỗi truy vấn: %1 - - - Close words: - Các từ tương tự: - - - Compound expressions: - Các từ phức: - - - Individual words: - Các từ đơn: - - - Expand article - Mở rộng bài viết - - - Collapse article - Thu gọn bài viết - - - - ArticleView - - Form - Mẫu - - - about:blank - about:blank - - - x - x - - - Find: - Tìm kiếm: - - - &Previous - &Trước - - - &Next - Tiế&p - - - Ctrl+G - Ctrl+G - - - &Case Sensitive - Phân biệt &hoa thường - - - GoldenDict - Từ điển Vàng - - - The referenced resource doesn't exist. - Nguồn tham chiếu không tồn tại. - - - &Open Link - Mở &Liên kết - - - Open Link in New &Tab - Mở liên kết trong &Thẻ mới - - - Open Link in &External Browser - Mở liên kết trong &Trình duyệt - - - &Look up "%1" - T&ra từ "%1" - - - Look up "%1" in &New Tab - Tra từ "%1" trong &Thẻ mới - - - Look up "%1" in %2 - Tra từ "%1" trong%2 - - - Look up "%1" in %2 in &New Tab - Tra từ "%1" trong %2 trong &Thẻ mới - - - Failed to run a player to play sound file: %1 - Lỗi chạy trình chơi nhạc khi chơi tệp âm thanh: %1 - - - Failed to create temporary file. - Lỗi tạo tệp tạm. - - - Failed to auto-open resource file, try opening manually: %1. - Lỗi tự động mở tệp nguồn, thử mở thủ công: %1. - - - The referenced resource failed to download. - Nguồn tham chiếu lỗi tải xuống. - - - Playing a non-WAV file - Chơi một tệp không phải WAV - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - Để bật khả năng chơi các tệp không phải WAV, hãy vào Biên tập|Tùy thích, mở thẻ Âm thanh và chọn "Chơi qua DirectShow" ở đó. - - - Highlight &all - Tô &sáng từ cần tìm - - - Resource - Nguồn - - - Audio - Âm thanh - - - Definition: %1 - Định nghĩa: %1 - - - The referenced audio program doesn't exist. - Chương trình âm thanh tham chiếu không có. - - - WARNING: %1 - CẢNH BÁO: %1 - - - &Add "%1" to history - &Thêm "%1" vào lược sử - - - Definition from dictionary "%1": %2 - Định nghĩa trong từ điển "%1": %2 - - - Send "%1" to input line - Gửi "%1" đến dòng đầu vào - - - Picture - Hình ảnh - - - Select Current Article - Chọn bài viết hiện tại - - - ERROR: %1 - LỖI: %1 - - - Save sound - Lưu âm thanh - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - Các tệp âm thanh (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;Tất cả tệp (*.*) - - - Save image - Lưu hình ảnh - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - Các tệp hình ảnh (*.bmp *.jpg *.png *.tif);;Tất cả tệp (*.*) - - - Save &image... - Lưu &hình ảnh... - - - Save s&ound... - Lưu â&m thanh... - - - TTS Voice - Giọng nói TTS - - - WARNING: FFmpeg Audio Player: %1 - CẢNH BÁO: Trình chơi âm thanh FFmpeg: %1 - - - Copy as text - Chỉ sao chữ - - - Inspect - Inspect - - - Video - Video - - - Video: %1 - Video: %1 - - - - BelarusianTranslit - - Belarusian transliteration from latin to cyrillic (classic orthography) - Chuyển tự sang chữ Belarus từ ký tự Latin sang ký tự Kirin (kiểu chính tả cổ điển) - - - Belarusian transliteration from latin to cyrillic (school orthography) - Chuyển tự sang chữ Belarus từ ký tự Latin sang ký tự Kirin (kiểu chính tả chính thức) - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - Chuyển tự sang chữ Belarus (pha trộn giữa kiểu chính tả cổ điển và chính thức trong ký tự Kirin) - - - - ChineseConversion - - GroupBox - - - - Enable conversion between simplified and traditional Chinese characters - - - - Chinese Con&version - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - SC to TC (Taiwan variant) - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - SC to TC (Hong Kong variant) - - - - Enable conversion from traditional characters to simplified characters - - - - TC to SC - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - Proxy authentication required - Yêu cầu xác thực proxy - - - You need to supply a Username and a Password to access via proxy - Cung cấp Tài khoản và Mật khẩu truy cập proxy - - - Username: - Tài khoản: - - - Password: - Mật khẩu: - - - - DictGroupWidget - - Form - Mẫu - - - Group icon: - Biểu tượng nhóm: - - - Shortcut: - Lối tắt: - - - None - Không - - - From file... - Từ tệp... - - - Choose a file to use as group icon - Chọn tệp để sử dụng làm biểu tượng nhóm - - - Images - Ảnh - - - All files - Tất cả tệp - - - Error - Lỗi - - - Can't read the specified image file. - Không thể đọc tệp ảnh được chỉ định. - - - - DictGroupsWidget - - Confirmation - Xác nhận - - - Are you sure you want to generate a set of groups based on language pairs? - Bạn có muốn tạo một bộ các nhóm dựa trên các cặp ngôn ngữ? - - - Dictionaries: - Từ điển: - - - Combine groups by source language to "%1->" - Kết hợp nhóm theo ngôn ngữ nguồn "%1->" - - - Combine groups by target language to "->%1" - Kết hợp nhóm theo ngôn ngữ đích "->%1" - - - Make two-side translate group "%1-%2-%1" - Tạo nhóm dịch song ngữ "%1-%2-%1" - - - Combine groups with "%1" - Kết hợp nhóm với "%1" - - - Unassigned - Không xác định - - - - DictHeadwords - - Search mode - Kiểu tìm kiếm - - - This element determines how filter string will be interpreted - Xác định cách thức chuỗi bộ lọc sẽ được thể hiện - - - If checked on the symbols case will be take in account when filtering - Phân biệt hoa thường khi lọc - - - Match case - Khớp hoa thường - - - Exports headwords to file - Trích xuất danh sách từ ra tệp - - - Export - Trích xuất - - - OK - OK - - - Press this button to apply filter to headwords list - Áp dụng kiểu lọc danh sách từ - - - Apply - Áp dụng - - - If checked any filter changes will we immediately applied to headwords list - Bộ lọc sẽ được áp dụng ngay vào danh sách từ - - - Auto apply - Tự động áp dụng - - - Filter: - Bộ lọc: - - - Filter string (fixed string, wildcards or regular expression) - wildcard hoặc regular expression - Chuỗi bộ lọc (chuỗi cố định, ký tự đại diện hoặc biểu thức chính quy) - - - Text - Chữ - - - Wildcards - Wildcard - - - RegExp - RegExp - - - Unique headwords total: %1, filtered: %2 - Tổng danh sách từ: %1, đã lọc: %2 - - - Save headwords to file - Lưu danh sách từ vào tệp - - - Text files (*.txt);;All files (*.*) - Các tệp văn bản (*.txt);;Tất cả tệp (*.*) - - - Export headwords... - Trích xuất danh sách từ... - - - Cancel - Hủy bỏ - - - Help - Trợ giúp - - - - DictInfo - - Total articles: - Tổng số bài viết: - - - Translates from: - Dịch từ: - - - Total words: - Tổng số từ: - - - Translates to: - Dịch sang: - - - Files comprising this dictionary: - Tệp chứa từ điển này: - - - Description: - Mô tả: - - - Open folder - Mở thư mục - - - Edit dictionary - Chỉnh sửa từ điển - - - Edit the dictionary via command: -%1 - Chỉnh sửa từ điển với lệnh: -%1 - - - Show all unique dictionary headwords - Hiện tất cả danh sách từ của từ điển - - - Headwords - Danh sách từ - - - - DictListModel - - %1 entries - %1 mục từ - - - - DictServer - - Url: - Địa chỉ: - - - Databases: - Cơ sở dữ liệu: - - - Search strategies: - Cách tìm kiếm: - - - Server databases - Máy chủ cơ sở dữ liệu - - - - DictServersModel - - Enabled - Bật - - - Name - Tên - - - Address - Địa chỉ - - - Databases - Cơ sở dữ liệu - - - Icon - Biểu tượng - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - Ngăn cách cơ sở dữ liệu bằng dấu phẩy -(để trống hoặc "*" khớp mọi cơ sở dữ liệu) - - - Strategies - Cách thức - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - prefix - Ngăn cách các cách thức tìm kiếm bằng dấu phẩy -(để trống nghĩa là tìm theo "tiền tố") - - - - DictionaryBar - - Dictionary Bar - Thanh từ điển - - - Edit this group - Chỉnh sửa nhóm này - - - Dictionary info - Thông tin từ điển - - - Edit dictionary - Sửa đổi từ điển - - - &Dictionary Bar - Thanh Từ đ&iển - - - Open dictionary folder - Mở thư mục từ điển - - - Extended menu with all dictionaries... - Mở trình đơn với tất cả từ điển... - - - Dictionary headwords - Danh sách từ của từ điển - - - - EditDictionaries - - Dictionaries - Từ điển - - - &Sources - &Nguồn - - - &Dictionaries - Từ đ&iển - - - &Groups - N&hóm - - - Sources changed - Nguồn đã thay đổi - - - Some sources were changed. Would you like to accept the changes? - Một vài nguồn đã được thay đổi. Bạn có muốn chấp nhận các thay đổi không? - - - Accept - Chấp nhận - - - Cancel - Hủy bỏ - - - - ExternalViewer - - the viewer program name is empty - tên chương xem đang trống - - - - FTS::FtsIndexing - - None - Không - - - - FTS::FullTextSearchDialog - - Full-text search - Tìm toàn văn - - - Whole words - Toàn bộ từ - - - Plain text - Văn bản thuần - - - Wildcards - Ký tự đại diện - - - RegExp - RegExp - - - Max distance between words (%1-%2): - Khoảng cách tối đa giữa các từ (%1-%2): - - - Max articles per dictionary (%1-%2): - Số bài viết tối đa trên một từ điển (%1-%2): - - - Articles found: - Số bài viết tìm thấy: - - - Now indexing: - Đang chỉ mục: - - - The search line must contains at least one word containing - Dòng tìm kiếm phải chứa tối thiểu một từ có nhiều hơn - - - or more symbols - ký tự - - - No dictionaries for full-text search - Không có từ điển để tìm toàn văn - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - Ký tự CJK trong chuỗi tìm không tương thích với kiểu tìm "Toàn từ" và "Văn bản thuần" - - - None - Không - - - - FTS::Indexing - - None - Không - - - - Forvo::ForvoArticleRequest - - XML parse error: %1 at %2,%3 - Lỗi phân tích XML: %1 tại %2,%3 - - - Added %1 - Đã thêm %1 - - - by - bởi - - - Male - Nam - - - Female - Nữ - - - from - từ - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - Hãy vào Biên tập|Từ điển|Nguồn|Forvo và nhập khóa API riêng để tắt lỗi này. - - - - FullTextSearchDialog - - Search - Tìm - - - Match case - Khớp hoa thường - - - Mode: - Kiểu: - - - Articles found: - Số bài viết tìm thấy: - - - Available dictionaries in group: - Từ điển có trong nhóm: - - - Wait for indexing: - Chờ chỉ mục: - - - Total: - Tổng: - - - Indexed: - Đã chỉ mục: - - - Now indexing: None - Đang chỉ mục: Không - - - Cancel - Hủy bỏ - - - Help - Trợ giúp - - - - GermanTranslit - - German Transliteration - Chuyển tự sang chữ Đức - - - - GreekTranslit - - Greek Transliteration - Chuyển tự sang chữ Hy Lạp - - - - GroupComboBox - - Choose a Group (Alt+G) - Chọn một Nhóm (Alt+G) - - - - GroupSelectorWidget - - Form - Mẫu - - - Look in - Tìm trong - - - - Groups - - Dictionaries available: - Các từ điển đã có: - - - Add selected dictionaries to group (Ins) - Thêm những từ điển đã chọn vào nhóm (Ins) - - - > - > - - - Ins - Ins - - - Remove selected dictionaries from group (Del) - Xóa những từ điển đã chọn ra khỏi nhóm (Del) - - - < - < - - - Del - Del - - - Groups: - Nhóm: - - - Tab 2 - Thẻ 2 - - - Create new dictionary group - Tạo một nhóm từ điển mới - - - &Add group - Thê&m nhóm - - - Rename current dictionary group - Đổi tên nhóm từ điển hiện tại - - - Re&name group - Đổi tên &nhóm - - - Remove current dictionary group - Xóa nhóm hiện tại - - - &Remove group - &Xóa nhóm - - - Remove all dictionary groups - Xóa hết các nhóm từ điển - - - Remove all groups - Xóa hết nhóm - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - Sử dụng chuột kéo & thả các từ điển vào nhóm, khỏi nhóm và sắp sếp thứ tự trong nhóm. - - - Add group - Thêm nhóm - - - Give a name for the new group: - Đặt tên cho nhóm mới: - - - Rename group - Đổi tên nhóm - - - Give a new name for the group: - Đặt một tên mới cho nhóm: - - - Remove group - Xóa nhóm - - - Are you sure you want to remove the group <b>%1</b>? - Bạn có muốn xóa nhóm <b>%1</b>? - - - Are you sure you want to remove all the groups? - Bạn có muốn xóa hết các nhóm? - - - Create language-based groups - Tạo các nhóm dựa-trên-ngôn-ngữ - - - Auto groups - Tự động nhóm - - - Group tabs - Thẻ nhóm - - - Open groups list - Mở danh sách nhóm - - - - Help::HelpWindow - - GoldenDict help - Trợ giúp Từ điển Vàng - - - Home - Trang chủ - - - Back - Trở lại - - - Forward - Tiếp tục - - - Zoom In - Phóng to - - - Zoom Out - Thu nhỏ - - - Normal Size - Kích thước bình thường - - - Content - Nội dung - - - Index - Chỉ mục - - - - HistoryPaneWidget - - &Delete Selected - &Xoá - - - Copy Selected - Sao chép - - - History: - Lược sử: - - - %1/%2 - %1/%2 - - - History size: %1 entries out of maximum %2 - Số lược sử: %1 mục trên tối đa %2 - - - - Hunspell - - Spelling suggestions: - Gợi ý chính tả: - - - %1 Morphology - Hình thái học %1 - - - - HunspellDictsModel - - Enabled - Bật - - - Name - Tên - - - - Initializing - - GoldenDict - Initializing - Từ điển Vàng - Đang khởi chạy - - - Please wait while indexing dictionary - Xin chờ trong khi đang lập chỉ mục từ điển - - - Dictionary Name - Tên Từ điển - - - Please wait... - Xin chờ... - - - - Language - - Afar - - - - Abkhazian - - - - Avestan - - - - Afrikaans - - - - Akan - - - - Amharic - - - - Aragonese - - - - Arabic - - - - Assamese - - - - Avaric - - - - Aymara - - - - Azerbaijani - - - - Bashkir - - - - Belarusian - - - - Bulgarian - - - - Bihari - - - - Bislama - - - - Bambara - - - - Bengali - - - - Tibetan - - - - Breton - - - - Bosnian - - - - Catalan - - - - Chechen - - - - Chamorro - - - - Corsican - - - - Cree - - - - Czech - - - - Church Slavic - - - - Chuvash - - - - Welsh - - - - Danish - - - - German - - - - Divehi - - - - Dzongkha - - - - Ewe - - - - Greek - - - - English - - - - Esperanto - - - - Spanish - - - - Estonian - - - - Basque - - - - Persian - - - - Fulah - - - - Finnish - - - - Fijian - - - - Faroese - - - - French - - - - Western Frisian - - - - Irish - - - - Scottish Gaelic - - - - Galician - - - - Guarani - - - - Gujarati - - - - Manx - - - - Hausa - - - - Hebrew - - - - Hindi - - - - Hiri Motu - - - - Croatian - - - - Haitian - - - - Hungarian - - - - Armenian - - - - Herero - - - - Interlingua - - - - Indonesian - - - - Interlingue - - - - Igbo - - - - Sichuan Yi - - - - Inupiaq - - - - Ido - - - - Icelandic - - - - Italian - - - - Inuktitut - - - - Japanese - - - - Javanese - - - - Georgian - - - - Kongo - - - - Kikuyu - - - - Kwanyama - - - - Kazakh - - - - Kalaallisut - - - - Khmer - - - - Kannada - - - - Korean - - - - Kanuri - - - - Kashmiri - - - - Kurdish - - - - Komi - - - - Cornish - - - - Kirghiz - - - - Latin - - - - Luxembourgish - - - - Ganda - - - - Limburgish - - - - Lingala - - - - Lao - - - - Lithuanian - - - - Luba-Katanga - - - - Latvian - - - - Malagasy - - - - Marshallese - - - - Maori - - - - Macedonian - - - - Malayalam - - - - Mongolian - - - - Marathi - - - - Malay - - - - Maltese - - - - Burmese - - - - Nauru - - - - Norwegian Bokmal - - - - North Ndebele - - - - Nepali - - - - Ndonga - - - - Dutch - - - - Norwegian Nynorsk - - - - Norwegian - - - - South Ndebele - - - - Navajo - - - - Chichewa - - - - Occitan - - - - Ojibwa - - - - Oromo - - - - Oriya - - - - Ossetian - - - - Panjabi - - - - Pali - - - - Polish - - - - Pashto - - - - Portuguese - - - - Quechua - - - - Raeto-Romance - - - - Kirundi - - - - Romanian - - - - Russian - - - - Kinyarwanda - - - - Sanskrit - - - - Sardinian - - - - Sindhi - - - - Northern Sami - - - - Sango - - - - Serbo-Croatian - - - - Sinhala - - - - Slovak - - - - Slovenian - - - - Samoan - - - - Shona - - - - Somali - - - - Albanian - - - - Serbian - - - - Swati - - - - Southern Sotho - - - - Sundanese - - - - Swedish - - - - Swahili - - - - Tamil - - - - Telugu - - - - Tajik - - - - Thai - - - - Tigrinya - - - - Turkmen - - - - Tagalog - - - - Tswana - - - - Tonga - - - - Turkish - - - - Tsonga - - - - Tatar - - - - Twi - - - - Tahitian - - - - Uighur - - - - Ukrainian - - - - Urdu - - - - Uzbek - - - - Venda - - - - Vietnamese - Tiếng Việt - - - Volapuk - - - - Walloon - - - - Wolof - - - - Xhosa - - - - Yiddish - - - - Yoruba - - - - Zhuang - - - - Chinese - - - - Zulu - - - - Traditional Chinese - - - - Simplified Chinese - - - - Other - Khác - - - Other Simplified Chinese dialects - - - - Other Traditional Chinese dialects - - - - Other Eastern-European languages - - - - Other Western-European languages - - - - Other Russian languages - - - - Other Japanese languages - - - - Other Baltic languages - - - - Other Greek languages - - - - Other Korean dialects - - - - Other Turkish dialects - - - - Other Thai dialects - - - - Tamazight - - - - Lojban - - - - - LoadDictionaries - - Error loading dictionaries - Lỗi nạp từ điển - - - - Main - - Error in configuration file. Continue with default settings? - Tệp cấu hình lỗi. Tiếp tục với thiết lập mặc định? - - - - MainWindow - - GoldenDict - Từ điển Vàng - - - Welcome! - Chào mừng! - - - &File - &Tệp - - - &Edit - &Biên tập - - - &Help - &Giúp đỡ - - - &View - &Hiển thị - - - &Zoom - Thu &Phóng - - - H&istory - &Lược sử - - - Search Pane - Ô tìm kiếm - - - &Dictionaries... - &Từ điển... - - - F3 - F3 - - - &Groups... - Nhó&m... - - - &Preferences... - Tùy thí&ch... - - - F4 - F4 - - - &Homepage - T&rang chủ - - - &About - &Giới thiệu - - - About GoldenDict - Về Từ điển Vàng - - - F1 - F1 - - - &Quit - Th&oát - - - Quit from application - Thoát khỏi ứng dụng - - - Ctrl+Q - Ctrl+Q - - - &Forum - &Diễn đàn - - - &Close To Tray - Đóng &xuống khay hệ thống - - - Minimizes the window to tray - Thu gọn cửa sổ xuống khay hệ thống - - - Ctrl+F4 - Ctrl+F4 - - - &Save Article - &Lưu Bài viết - - - Save Article - Lưu Bài viết - - - F2 - F2 - - - &Print - &In - - - Ctrl+P - Ctrl+P - - - Page Set&up - &Thiết lập Trang - - - Print Preview - Xem trước khi in - - - Rescan Files - Quét lại các tệp - - - Ctrl+F5 - Ctrl+F5 - - - &Clear - Xóa sạ&ch - - - Show Names in Dictionary Bar - Hiện tên trên Thanh Từ điển - - - Look up in: - Tra từ trong: - - - Navigation - Điều hướng - - - Back - Trở lại - - - Forward - Tiếp tục - - - Scan Popup - Quét Popup - - - Pronounce Word (Alt+S) - Phát âm (Alt+S) - - - Zoom In - Phóng to - - - Zoom Out - Thu nhỏ - - - Normal Size - Cỡ bình thường - - - Words Zoom In - Phóng to Từ - - - Words Zoom Out - Thu nhỏ Từ - - - Words Normal Size - Cỡ Từ bình thường - - - Show &Main Window - Hiện cử&a sổ chính - - - Loading... - Đang tải... - - - %1 dictionaries, %2 articles, %3 words - %1 từ điển, %2 bài viết, %3 từ - - - Look up: - Tra từ: - - - All - Tất cả - - - (untitled) - (chưa đặt tên) - - - WARNING: %1 - CẢNH BÁO: %1 - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - Lỗi khởi chạy cơ chế quản lý phím tắt. <br>Hãy kiểm tra XServer đã bật phần mở rộng RECORD. - - - New Release Available - Phiên bản mới đã có - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - Phiên bản <b>%1</b> của Từ điển Vàng đã sẵn sàng để tải về.<br>Nhấn <b>Tải về</b> để tới trang tải. - - - Download - Tải về - - - Skip This Release - Bỏ qua phiên bản này - - - [Unknown] - [Không biết] - - - Page Setup - Thiết lập Trang - - - No printer is available. Please install one first. - Không có máy in. Hãy cài máy in trước. - - - Print Article - In Bài viết - - - Save Article As - Lưu Bài viết như - - - Html files (*.html *.htm) - Tệp Html (*.html *.htm) - - - Error - Lỗi - - - Can't save article: %1 - Không thể lưu Bài viết: %1 - - - Close current tab - Đóng thẻ hiện tại - - - Close all tabs - Đóng tất cả các thẻ - - - Close all tabs except current - Đóng tất cả thẻ trừ thẻ hiện tại - - - Opened tabs - Các thẻ đã mở - - - New Tab - Thẻ mới - - - Ctrl+T - Ctrl+T - - - &Configuration Folder - Thư mục &cấu hình - - - &Menubar - Thanh Trì&nh đơn - - - Found in Dictionaries: - Từ điển tìm thấy: - - - Open Tabs List - Mở danh sách Thẻ - - - %1 - %2 - %1 - %2 - - - You have chosen to hide a menubar. Use %1 to show it back. - Bạn đã chọn ẩn thanh trình đơn. Dùng %1 để hiển thị lại. - - - Ctrl+M - Ctrl+M - - - &Show - &Hiện - - - &Export - &Xuất - - - &Hide - Ẩ&n - - - Export history to file - Xuất lược sử sang tệp - - - Text files (*.txt);;All files (*.*) - Tệp văn bản (*.txt);;Tất cả tệp (*.*) - - - History export complete - Hoàn tất xuất lược sử - - - Export error: - Lỗi trích xuất: - - - Ctrl+H - Ctrl+H - - - &Import - Nhậ&p - - - Import history from file - Nhập lược sử từ tệp - - - Import error: invalid data in file - Lỗi nhập: dữ liệu tệp không đúng - - - History import complete - Hoàn tất nhập lược sử - - - Import error: - Lỗi nhập: - - - Dictionary info - Thông tin từ điển - - - Edit dictionary - Chỉnh sửa từ điển - - - &Search Pane - Ô Tìm &kiếm - - - &Results Navigation Pane - Ô Điều hướng Kết &quả - - - Print Pre&view - X&em trước khi In - - - &Rescan Files - Q&uét lại các tệp - - - &New Tab - Thẻ &mới - - - &Always on Top - &Luôn hiện - - - Always on Top - Luôn hiện - - - Ctrl+O - Ctrl+O - - - Menu Button - Nút Trình đơn - - - Show Names in Dictionary &Bar - Hiện tên từ điển trên Thanh &Từ điển - - - Show Small Icons in &Toolbars - Hiện &biểu tượng nhỏ trên Thanh công cụ - - - &Navigation - Điều hướn&g - - - The main window is set to be always on top. - Cửa sổ chính luôn hiện trên các trình khác. - - - &History Pane - Thanh Lược &sử - - - Accessibility API is not enabled - API Khả năng truy cập không được bật - - - Article, Complete (*.html) - Bài viết, Toàn bộ (*.html) - - - Article, HTML Only (*.html) - Bài viết, chỉ HTML (*.html) - - - Saving article... - Lưu bài viết... - - - Open dictionary folder - Mở thư mục từ điển - - - Dictionary headwords - Danh sách từ của từ điển - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - Chuỗi tìm trong từ điển. Ký tự đại diện '*', '?' và bộ ký tự '[...] được sử dụng. -Để tìm '*', '?', '[', ']' dùng tách riêng '\*', '\?', '\[', '\]' - - - Search - Tìm kiếm - - - Search in page - Tìm trong trang - - - Ctrl+F - Ctrl+F - - - Full-text search - Tìm toàn văn - - - Ctrl+Shift+F - Ctrl+Shift+F - - - GoldenDict reference - Trợ giúp Từ điển Vàng - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - Dictionary file was tampered or corrupted - Tệp từ điển đã bị xáo trộn hoặc hỏng - - - Failed loading article from %1, reason: %2 - Lỗi nạp bài viết từ %1, nguyên nhân: %2 - - - - MediaWiki::MediaWikiArticleRequest - - XML parse error: %1 at %2,%3 - Lỗi phân tích XML: %1 ở %2,%3 - - - - MediaWiki::MediaWikiWordSearchRequest - - XML parse error: %1 at %2,%3 - Lỗi phân tích XML: %1 ở %2,%3 - - - - MediaWikisModel - - Enabled - Bật - - - Name - Tên - - - Address - Địa chỉ - - - Icon - Biểu tượng - - - - OrderAndProps - - Form - Mẫu - - - Dictionary order: - Sắp xếp Từ điển: - - - Inactive (disabled) dictionaries: - Các từ điển không hoạt động (đã vô hiệu hoá): - - - Dictionary information - Thông tin từ điển - - - Name: - Tên: - - - Total articles: - Tổng số bài viết: - - - Total words: - Tổng số từ: - - - Translates from: - Dịch từ: - - - Translates to: - Dịch sang: - - - Files comprising this dictionary: - Tệp chứa từ điển này: - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - Điều chỉnh thứ tự bằng cách kéo và thả các từ điển để di chuyển vị trí. Thả vào ô không hoạt động để vô hiệu hoá từ điển. - - - Description: - Mô tả: - - - Sort by name - Sắp xếp theo tên - - - Sort by languages - Sắp xếp theo ngôn ngữ - - - Dictionary headwords - Danh sách từ của từ điển - - - Dictionaries active: %1, inactive: %2 - Từ điển hoạt động:%1, không hoạt động: %2 - - - - PathsModel - - Path - Đường dẫn - - - Recursive - Đệ quy - - - - Preferences - - Preferences - Tùy thích - - - &Interface - G&iao diện - - - Tabbed browsing - Duyệt theo thẻ - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - Mặc định, bạn sẽ chuyển sang thẻ mới ngay khi nó -được mở. Với tùy chọn này, các thẻ mới sẽ được mở mà -không cần chuyển ngay sang chúng. - - - Open new tabs in background - Mở thẻ mới dưới nền - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - Với tùy chọn này, các thẻ mới sẽ được mở ngay sau -thẻ hiện tại (thẻ đang mở). Nếu không chúng sẽ được -thêm vào sau cùng. - - - Open new tabs after the current one - Mở thẻ mới ngay sau thẻ hiện tại - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - Biểu tượng Từ điển Vàng sẽ hiện trên khay hệ thống dùng để mở cửa sổ chính -và thực hiện một số tác vụ khác. - - - Enable system tray icon - Bật biểu tượng trên khay hệ thống - - - With this on, the application starts directly to system tray without showing -its main window. - Khi khởi chạy, ứng dụng sẽ thu gọn xuống khay hệ thống mà không hiện cửa sổ chính. - - - Start to system tray - Khởi động xuống khay hệ thống - - - With this on, an attempt to close main window would hide it instead of closing -the application. - Ứng dụng sẽ thu gọn xuống khay hệ thống khi đóng cửa sổ chính. - - - Close to system tray - Đóng xuống khay hệ thống - - - Startup - Khởi động - - - Automatically starts GoldenDict after operation system bootup. - Tự động khởi chạy Từ điển Vàng sau khi hệ điều hành khởi động. - - - Start with system - Khởi động cùng hệ thống - - - Interface language: - Ngôn ngữ giao diện: - - - Display style: - Kiểu hiển thị: - - - Double-click translates the word clicked - Nhấp đúp chuột sẽ dịch từ được chọn - - - &Scan Popup - &Quét Popup - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - Khi đã kích hoạt, một cửa sổ popup dịch nghĩa sẽ được hiện ra mỗi lần bạn -đưa chuột chỉ vào bất cứ từ nào trên màn hình (Windows) hay chọn bất cứ -từ nào với chuột (Linux). Khi đã kích hoạt, bạn có thể bật tắt nó từ cửa sổ -chính hay biểu tượng trên khay hệ thống. - - - Enable scan popup functionality - Kích hoạt chức năng quét popup - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - Chọn bật chế độ quét popup mặc định. Nếu chọn, chương trình sẽ khởi động -với tính năng quét popup được bật. - - - Start with scan popup turned on - Khởi động với quét popup được bật - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - Khi chọn từ cần tra nghĩa, nhấn phím tắt đã chọn để hiện popup. - - - Only show popup when all selected keys are kept pressed: - Chỉ hiện popup khi nhấn giữ phím tắt: - - - Left Ctrl only - Phím Ctrl trái - - - Left Ctrl - Ctrl trái - - - Right Shift only - Phím Shift phải - - - Right Shift - Shift phải - - - Alt key - Phím Alt - - - Alt - Alt - - - Ctrl key - Phím Ctrl - - - Ctrl - Ctrl - - - Left Alt only - Phím Alt trái - - - Left Alt - Alt trái - - - Shift key - Phím Shift - - - Shift - Shift - - - Right Alt only - Phím Alt phải - - - Right Alt - Alt phải - - - Right Ctrl only - Phím Ctrl phải - - - Right Ctrl - Ctrl phải - - - Left Shift only - Phím Shift trái - - - Left Shift - Shift trái - - - Windows key or Meta key - Phím Windows hoặc phím Meta - - - Win/Meta - Win/Meta - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - Mặc định, để bật popup bạn phải nhấn giữ phím tắt -khi bạn chọn từ cần tra. Tùy chọn này xác định thời -gian phím tắt được nhấn sau khi chọn từ để bật popup. - - - Keys may also be pressed afterwards, within - Phím tắt có thể được nhấn sau khi chọn từ - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - Để tránh xác định nhầm, phím tắt chỉ được giám sát -sau khi chọn từ hoàn tất trong vài giây giới hạn được -xác định ở đây. - - - secs - giây - - - Hotkeys - Phím tắt - - - Use the following hotkey to show or hide the main window: - Sử dụng phím tắt sau đây để ẩn hiện cửa sổ chính: - - - Use the following hotkey to translate a word from clipboard: - Sử dụng phím tắt sau đây để dịch từ clipboard: - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - Phím tắt hoạt động toàn cục từ bất kỳ chương trình nào hay trong ngữ cảnh nào khi Từ điển Vàng đang chạy nền. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Chú ý: Có vẻ như bạn đang chạy một phiên bản X.Org X.Server có phần mở rộng RECORD bị lỗi. phím tắt trong Từ điển Vàng có thể không hoạt động được. Điều này phải được sửa bên trong server. Hãy ghé thăm </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">mục bug</span></a><span style=" color:#ff0000;"> và để lại một phản hồi nếu bạn muốn.</span></p></body></html> - - - &Audio - Âm th&anh - - - Pronunciation - Phát âm - - - Auto-pronounce words in main window - Tự động phát âm trong cửa sổ chính - - - Auto-pronounce words in scan popup - Tự động phát âm trong quét popup - - - Playback - Phát lại - - - Play via Phonon - Phát qua Phonon - - - Use external program: - Sử dụng chương trình ngoài: - - - &Network - Mạ&ng - - - Enable if you wish to use a proxy server -for all program's network requests. - Bật nếu bạn muốn sử dụng một máy chủ proxy -cho tất cả các yêu cầu mạng của chương trình. - - - Use proxy server - Sử dụng máy chủ proxy - - - Type: - Kiểu: - - - Host: - Máy chủ: - - - Port: - Cổng: - - - User: - Người dùng: - - - Password: - Mật khẩu: - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - Với tùy chọn này, Từ điển Vàng sẽ chặn các quảng cáo bằng cách - không cho phép nội dung (ảnh, khung) không bắt nguồn từ trang -đang xem. Nếu một vài trang bị lỗi bởi tùy chọn này, hãy thử tắt đi. - - - Disallow loading content from other sites (hides most advertisements) - Không cho phép tải nội dung từ các trang khác (tắt các quảng cáo) - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - Chương trình sẽ kiểm tra định kỳ phiên bản cập nhật mới. - Nếu có, chương trình sẽ thông báo và gợi ý mở trang tải về. - - - Check for new program releases periodically - Kiểm tra định kỳ phiên bản mới - - - System default - Mặc định hệ thống - - - Default - Mặc định - - - Lingvo - Lingvo - - - Play via DirectShow - Phát qua DirectShow - - - Changing Language - Thay đổi ngôn ngữ - - - Restart the program to apply the language change. - Khởi động lại chương trình để áp dụng thay đổi ngôn ngữ. - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - Sử dụng API phát lại của Windows. Giới hạn chỉ cho các tệp .wav, -nhưng hoạt động rất tốt. - - - Play via Windows native API - Chơi bằng API của Windows - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - Phát âm thanh qua nền tảng Phonon. Có thể sẽ không ổn định một chút, -nhưng hỗ trợ nhiều định dạng âm thanh nhất. - - - Use any external program to play audio files - Sử dụng bất cứ chương trình ngoài nào để phát tệp âm thanh - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - Ẩn thẻ trên thanh thẻ chính nếu chỉ duy nhất một thẻ được mở. - - - Hide single tab - Ẩn thẻ đơn nhất - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - Mặc định, nhấn phím ESC dùng để chuyển vào ô tìm kiếm. -Tuỳ chọn này sẽ ẩn cửa sổ chính khi nhấn phím ESC. - - - ESC key hides main window - Nhấn phím ESC để ẩn cửa sổ chính - - - Send translated word to main window instead of to show it in popup window - Hiện từ đã dịch trên cửa sổ chính thay vì cửa sổ popup - - - Send translated word to main window - Hiện từ đã dịch trên cửa sổ chính - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - Cho phép nghe phát âm từ các từ điển trực tuyến dựa trên Flash -hay các bổ trợ web khác. Phần bổ trợ phải được cài đặt. - - - Enable web plugins - Bật bổ trợ web - - - Ad&vanced - &Nâng cao - - - ScanPopup extra technologies - Kỹ thuật Quét Popup bổ sung - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - Dùng kỹ thuật IAccessibleEx để đọc từ dưới con trỏ. -Kỹ thuật này chỉ làm việc với một vài chương trình hỗ trợ -(VD: Internet Explorer 9). -Không cần bật chức năng này nếu bạn không cần dùng. - - - Use &IAccessibleEx - Dùng &IAccessibleEx - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Dùng kỹ thuật UI Automation để đọc từ dưới con trỏ. -Kỹ thuật này chỉ làm việc với một vài chương trình hỗ trợ. -Không cần bật chức năng này nếu bạn không cần dùng. - - - Use &UIAutomation - Dùng &UIAutomation - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - Dùng thông điệp Từ điển Vàng đặc biệt để đọc từ dưới con trỏ. -Kỹ thuật này chỉ làm việc với một vài chương trình hỗ trợ. -Không cần bật chức năng này nếu bạn không cần dùng. - - - Use &GoldenDict message - Dùng thông điệp Từ điển &Vàng - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab điều hướng các thẻ theo trình tự MRU - - - Babylon - Babylon - - - History - Lược sử - - - Turn this option on to store history of the translated words - Lưu lược sử các từ đã tra - - - Store &history - Lưu &Lược sử - - - Articles - Bài viết - - - Turn this option on to always expand optional parts of articles - Luôn mở rộng phần tuỳ chọn của bài viết - - - Expand optional &parts - Mở rộng phần tuỳ &chọn - - - Turn this option on if you want to select words by single mouse click - Chọn từ bằng cách nhấp chuột đơn - - - Select word by single click - Chọn từ với nhấp chuột đơn - - - Add-on style: - Kiểu bổ sung: - - - Specify the maximum number of entries to keep in history. - Xác định tối đa số mục lưu trong lược sử. - - - Maximum history size: - Số lược sử tối đa: - - - History saving interval. If set to 0 history will be saved only during exit. - Tần suất lưu lược sử. Nếu đặt giá trị 0, lược sử sẽ được lưu khi thoát chương trình. - - - Save every - Lưu mỗi - - - minutes - phút - - - Modern - Modern - - - Lingoes - Lingoes - - - Lingoes-Blue - Lingoes-Blue - - - Play audio files via FFmpeg(libav) and libao - Phát các tệp âm thanh thông qua FFmpeg(libav) và libao - - - Use internal player - Dùng trình phát âm thanh tích hợp - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - Một vài trang mạng nhận ra Từ điển Vàng thông qua phần đầu giao thức HTTP -và chặn truy vấn. Bật tính năng này để không chèn định danh vào truy vấn HTTP. - - - Do not identify GoldenDict in HTTP headers - Không định danh Từ điển Vàng trong phần đầu giao thức HTTP - - - Select this option to automatic collapse big articles - Tự động thu gọn các bài viết dài - - - Collapse articles more than - Thu gọn bài viết dài hơn - - - symbols - ký tự - - - Adjust this value to avoid huge context menus. - Điều chỉnh giá trị này để tránh các trình đơn ngữ cảnh dài. - - - Context menu dictionaries limit: - Trình đơn ngữ cảnh các từ điển giới hạn: - - - Articles longer than this size will be collapsed - Bài viết dài hơn cỡ này sẽ được thu gọn - - - System proxy - Proxy của hệ thống - - - Custom proxy - Proxy tuỳ chỉnh - - - Custom settings - Thiết lập tuỳ chỉnh - - - Full-text search - Tìm toàn văn - - - Allow full-text search for: - Các dạng cho phép tìm toàn văn: - - - Don't search in dictionaries containing more than - Không tìm trong từ điển chứa nhiều hơn - - - articles (0 - unlimited) - bài viết (0 - không giới hạn) - - - Help language - Ngôn ngữ trợ giúp - - - - ProgramTypeEditor - - Audio - Âm thanh - - - Plain Text - Văn bản thuần - - - Html - Html - - - Prefix Match - Khớp Tiền tố - - - Unknown - Không biết - - - - Programs::RunInstance - - No program name was given. - Không tên chương trình nào được gán. - - - The program has crashed. - Chương trình đã bị hỏng. - - - The program has returned exit code %1. - Chương trình trả về mã thoát %1. - - - - ProgramsModel - - Enabled - Bật - - - Type - Loại - - - Name - Tên - - - Command Line - Dòng lệnh - - - Icon - Biểu tượng - - - - QObject - - Article loading error - Lỗi nạp bài viết - - - Article decoding error - Lỗi giải mã bài viết - - - avformat_alloc_context() failed. - avformat_alloc_context() đã lỗi. - - - av_malloc() failed. - av_malloc() đã lỗi. - - - avio_alloc_context() failed. - avio_alloc_context() đã lỗi. - - - avformat_open_input() failed: %1. - avformat_open_input() đã lỗi: %1. - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() đã lỗi: %1. - - - Could not find audio stream. - Không thể tìm luồng âm thanh. - - - Codec [id: %1] not found. - Bộ giải nén [id: %1] không tìm thấy. - - - avcodec_open2() failed: %1. - avcodec_open2() đã lỗi: %1. - - - Cannot find usable audio output device. - Không tìm thấy thiết bị xuất âm thanh. - - - Unsupported sample format. - Định dạng mẫu không hỗ trợ. - - - ao_open_live() failed: - ao_open_live() đã lỗi: - - - No driver. - Không có bộ điều khiển. - - - This driver is not a live output device. - Bộ điều khiển này không phải là thiết bị xuất trực tiếp. - - - A valid option key has an invalid value. - Khoá tuỳ chọn đúng có một giá trị không xác định. - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - Không thể mở thiết bị: %1, kênh: %2, rate: %3, bits: %4. - - - Unknown error. - Lỗi không biết. - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() đã lỗi. - - - - QuickFilterLine - - Dictionary search/filter (Ctrl+F) - Tìm/lọc từ điển (Ctrl+F) - - - Quick Search - Tìm Nhanh - - - Clear Search - Xoá ô Tìm kiếm - - - - ResourceToSaveHandler - - ERROR: %1 - LỖI: %1 - - - Resource saving error: - Nguồn lưu lỗi: - - - The referenced resource failed to download. - Nguồn tham chiếu lỗi tải xuống. - - - - Romaji - - Hepburn Romaji for Hiragana - Hệ Latinh hoá Hepburn của bảng chữ Hiragana - - - Hepburn Romaji for Katakana - Hệ Latinh hoá Hepburn của bảng chữ Katakana - - - - RussianTranslit - - Russian Transliteration - Chuyển tự sang chữ Nga - - - - ScanPopup - - Dialog - Hộp thoại - - - word - từ - - - List Matches (Alt+M) - Danh sách từ phù hợp (Alt+M) - - - ... - ... - - - Alt+M - Alt+M - - - Pronounce Word (Alt+S) - Phát âm (Alt+S) - - - Alt+S - Alt+S - - - Shows or hides the dictionary bar - Ẩn/Hiện thanh Từ điển - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - Đính cửa sổ trên màn hình, có thể thay đổi kích thước hay -quản lý theo nhiều cách khác. - - - Send word to main window (Alt+W) - Hiện từ đã tra trên cửa sổ chính (Atl+W) - - - Alt+W - Atl+W - - - Back - Trở lại - - - Forward - Tiếp tục - - - GoldenDict - Từ điển Vàng - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - Path - Đường dẫn - - - Name - Tên - - - Icon - Biểu tượng - - - - Sources - - Files - Tệp - - - Paths to search for the dictionary files: - Đường dẫn chứa tệp từ điển: - - - &Add... - T&hêm... - - - &Remove - Xóa &bỏ - - - Re&scan now - &Quét lại - - - Sound Dirs - Thư mục âm thanh - - - Make dictionaries from bunches of audiofiles by adding paths here: - Thêm đường dẫn chứa các tệp âm thanh để tạo từ điển âm thanh: - - - Morphology - Hình thái học - - - Path to a directory with Hunspell/Myspell dictionaries: - Đường dẫn đến thư mục chứa từ điển Hunspell/Myspell: - - - &Change... - &Thay đổi... - - - Available morphology dictionaries: - Các từ điển hình thái học sẵn sàng: - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - Mỗi từ điển hình thái học sẽ hiển thị như một -từ điển bổ trợ riêng rẽ cung cấp thân từ cho - tìm kiếm và gợi ý chính tả cho những từ viết sai. -Thêm các từ điển phù hợp vào cuối những nhóm -phù hợp để sử dụng chúng. - - - Wikipedia - Wikipedia - - - Wikipedia (MediaWiki) sites: - Trang Wikipedia (MediaWiki): - - - Websites - Trang mạng - - - Any websites. A string %GDWORD% will be replaced with the query word: - Có thể dùng bất kỳ trang nào. Chuỗi %GDWORD% sẽ được thay thế bởi từ truy vấn: - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - Như một sự lựa chọn, sử dụng %GD1251% cho mã CP1251, %GDISO1% cho mã ISO 8859-1. - - - Forvo - Forvo - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - Phát âm trực tuyến qua <a href="http://www.forvo.com/">forvo.com</a>. Trang này cho phép mọi người ghi lại và chia sẻ phát âm của các từ. Bạn có thể nghe chúng qua Từ điển Vàng. - - - Enable pronunciations from Forvo - Bật phát âm từ Forvo - - - API Key: - Khóa API: - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - Sử dụng Forvo yêu cầu một khóa API. Để trống ô này để sử -dụng khóa mặc định mà có thể không còn hiệu lực trong tương -lai, đăng ký trên trang chủ để lấy khóa của chính bạn. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Lấy khóa của riêng bạn <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">ở đây</span></a>,hay để trống để dùng khóa mặc định.</p></td></tr></table></body></html> - - - Language codes (comma-separated): - Mã ngôn ngữ (phân cách bởi dấu phẩy): - - - List of language codes you would like to have. Example: "en, ru". - Danh sách mã ngôn ngữ mà bạn muốn có. Ví dụ: "en, ru". - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - Danh sách toàn bộ mã ngôn ngữ có tại <a href="http://www.forvo.com/languages-codes/">đây</a>. - - - Transliteration - Chuyển tự - - - Russian transliteration - Chuyển tự sang chữ Nga - - - Greek transliteration - Chuyển tự sang chữ Hy Lạp - - - German transliteration - Chuyển tự sang chữ Đức - - - Enables to use the Latin alphabet to write the Japanese language - Bật để sử dụng bảng chữ cái La-Tinh để viết tiếng Nhật - - - Japanese Romaji - Phiên âm Latinh tiếng Nhật - - - Systems: - Hệ: - - - The most widely used method of transcription of Japanese, -based on English phonology - Phương pháp được sử dụng rộng rãi nhất để phiên âm tiếng -Nhật, dựa trên hệ thống âm vị Anh ngữ - - - Hepburn - Hepburn - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Hệ thống thông dụng nhất, có mối quan hệ tương ứng tới hệ viết kana. Tiêu chuẩn ISO 3602 - -Chưa được bổ sung trong Từ điển Vàng. - - - Nihon-shiki - Nihon-shiki - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - Dựa trên hệ Nihon-shiki, nhưng đã thay đổi cho tiếng Nhật chuẩn hiện đại. -Tiêu chuẩn ISO 3602 - -Chưa được bổ sung trong Từ điển Vàng. - - - Kunrei-shiki - Kunrei-shiki - - - Syllabaries: - Bảng chữ cái: - - - Hiragana Japanese syllabary - Bảng chữ cái tiếng Nhật Hiragana - - - Hiragana - Hiragana - - - Katakana Japanese syllabary - Bảng chữ cái tiếng Nhật Katakana - - - Katakana - Katakana - - - (not available in portable version) - (không có trong phiên bản di động - portable) - - - Choose a directory - Chọn một thư mục - - - Confirm removal - Xác nhận xóa bỏ - - - Remove directory <b>%1</b> from the list? - Xóa bỏ thư mục <b>%1</b> khỏi danh sách? - - - Remove site <b>%1</b> from the list? - Xóa bỏ trang <b>%1</b> khỏi danh sách? - - - Programs - Chương trình - - - Remove program <b>%1</b> from the list? - Xoá chương trình <b>%1</b> khỏi danh sách? - - - Belarusian transliteration - Chuyển tự sang tiếng Belarus - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - Lấy khoá của bạn <a href="http://api.forvo.com/key/">tại đây</a> hoặc để trống để dùng mặc định. - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - Lựa chọn dùng %GD1251% for CP1251, %GDISO1%...%GDISO16% với ISO 8859-1...ISO 8859-16 tương ứng, -%GDBIG5% với Big-5, %GDBIG5HKSCS% với Big5-HKSCS, %GDGBK% với GBK và GB18030, %GDSHIFTJIS% với Shift-JIS. - - - Text to Speech - Text to Speech - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - Dùng mọi chương trình ngoài. Chuỗi %GDWORD% thay từ truy vấn. Nếu chuỗi không có, từ sẽ được đưa vào đầu vào tiêu chuẩn. - - - DICT servers - Máy chủ DICT - - - DICT servers: - Máy chủ DICT: - - - - StylesComboBox - - None - Không - - - - TextToSpeechSource - - Selected voice engines: - Thêm vào phương tiện giọng nói đã chọn: - - - &Add - &Thêm - - - &Remove - Xóa &bỏ - - - Preview - Xem trước - - - Available voice engines: - Các phương tiện giọng nói có thể: - - - Text to be previewed: - Xem trước văn bản: - - - Type text to be previewed here. - Nhập văn bản ở đây. - - - &Preview - &Xem trước - - - No TTS voice available - Không có giọng nói TTS - - - Confirm removal - Xác nhận xóa bỏ - - - Remove voice engine <b>%1</b> from the list? - Xoá phương tiện giọng nói <b>%1</b> khỏi danh sách? - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - Không tìm thấy giọng nói TTS. <br>Hãy kiểm tra tối thiểu một phương tiện TTS được cài đặt. - - - Preferences - Tùy thích - - - Volume: - Âm lượng: - - - Rate: - Tốc độ: - - - - TranslateBox - - Type a word or phrase to search dictionaries - Nhập một từ hoặc cụm từ để tra từ điển - - - Drop-down - Nút xổ - - - - VoiceEnginesModel - - Enabled - Bật - - - Name - Tên - - - Id - Id - - - Icon - Biểu tượng - - - - WebSitesModel - - Enabled - Bật - - - Name - Tên - - - Address - Địa chỉ - - - Icon - Biểu tượng - - - - WordFinder - - Failed to query some dictionaries. - Lỗi truy vấn một vài từ điểni. - - - - WordList - - WARNING: %1 - CẢNH BÁO: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/zh_CN.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/zh_CN.ts deleted file mode 100644 index 77c51e5c1e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/zh_CN.ts +++ /dev/null @@ -1,4858 +0,0 @@ - - - - - About - - - About - 关于 - - - - GoldenDict dictionary lookup program, version - GoldenDict 电子词典程序,版本 - - - - Licensed under GNU GPLv3 or later - 授权基于 GNU 公共授权 GPLv3 或更高版本 - - - - Credits: - 致谢名单: - - - - [Unknown] - [未知] - - - - Based on Qt %1 (%2, %3 bit) - 基于 Qt %1 (%2, %3 位) - - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - - ArticleMaker - - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - 然后只要将鼠标指针停留在你想要进行抓词查询的单词上,程序就会在弹出式窗口中显示释义。 - - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">使用屏幕取词功能</h3><p style="text-indent:2em">如要从其它程序中直接进行抓词查询,需要首先在<b>首选项</b>中启用“屏幕取词功能”,然后点击上面的“弹出菜单”图标,或者右键点击系统托盘图标后从弹出菜单中选定“屏幕取词”以激活此功能。 - - - - Expand article - 展开文章 - - - - Collapse article - 收起文章 - - - - No translation for <b>%1</b> was found in group <b>%2</b>. - 在 <b>%2</b> 群组中找不到 <b>%1</b> 的可用翻译。 - - - - Working with popup - 使用屏幕取词功能 - - - - (untitled) - (未命名) - - - - Welcome! - 欢迎使用! - - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - 然后只要用鼠标指针选定你要进行抓词查询的词(双击单词或者用鼠标拖拉选定),程序就会在弹出式窗口中显示释义。 - - - - No translation was found in group <b>%1</b>. - 在 <b>%1</b> 群组中找不到可用的翻译。 - - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">欢迎使用 <b>GoldenDict</b> 词典程序!</h3><p style="text-indent:2em">使用时请首先打开<b>编辑 | 词典</b>菜单以添加并扫描含有词典文件的目录,添加维基百科网站查询或其它资源,调整词典排序或创建新的词典群组。<p style="text-indent:2em">这些设置都完成以后,就可以开始使用了。你可以使用左侧的查询面板,或者<a href="使用屏幕取词功能">直接从其它程序中抓词查询</a>。<p style="text-indent:2em">如需要改变设置,可以在<b>编辑 | 首选项</b>菜单中查看一下可用的系统设置。所有的设置都有鼠标指针提示信息,如果有不明之处,请仔细阅读提示信息。<p style="text-indent:2em">如果你需要更多帮助,有任何疑问、建议,或者仅仅想了解其他人的想法,欢迎访问此程序的<a href="http://goldendict.org/forum/">官方论坛</a>。<p style="text-indent:2em">访问此程序的<a href="http://goldendict.org/">官方网站</a>以获取更新。<p style="text-indent:2em">(c) 2008-2013 Konstantin Isakov. 授权基于 GPLv3 或更高版本。 - - - - (picture) - (图片) - - - - ArticleRequest - - - Expand article - 展开文章 - - - - From - 来自 - - - - Collapse article - 收起文章 - - - - Query error: %1 - 查询错误:%1 - - - - Close words: - 相近词条: - - - - Compound expressions: - 复合短语: - - - - Individual words: - 单个词汇: - - - - ArticleView - - - x - x - - - - Form - 表单 - - - - Failed to run a player to play sound file: %1 - 没有可用的播放器,无法打开音频文件:%1 - - - - - &Next - 后一个(&N) - - - - Find: - 查找: - - - - The referenced resource failed to download. - 所引用的资源下载失败。 - - - - Failed to create temporary file. - 创建临时文件失败。 - - - - Ctrl+G - Ctrl+G - - - - &Look up "%1" - 查找 "%1"(&L) - - - - about:blank - about:blank - - - - - &Previous - 前一个(&P) - - - - Look up "%1" in &New Tab - 在新标签页中查找 "%1"(&N) - - - GoldenDict - GoldenDict - - - - - The referenced resource doesn't exist. - 所引用的资源不存在。 - - - - &Open Link - 打开链接(&O) - - - - &Case Sensitive - 区分大小写(&C) - - - - Failed to auto-open resource file, try opening manually: %1. - 自动打开资源文件时失败,请尝试手动打开:%1. - - - - Look up "%1" in %2 - 在 %2 中查找 "%1" - - - - Select Current Article - 选择当前文章 - - - - Copy as text - 复制为文本 - - - - Inspect - 审查元素 - - - - Look up "%1" in %2 in &New Tab - 在 %2 中查找 "%1" 并使用新标签页(&N) - - - - Open Link in New &Tab - 在新标签页中打开链接(&T) - - - - Open Link in &External Browser - 在外部浏览器中打开链接(&E) - - - Playing a non-WAV file - 播放非 wav 文件 - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - 要播放非 WAV 文件,请进入 编辑|首选项,选取音频选项卡,选择“通过 DirectShow 播放”。 - - - - Highlight &all - 高亮所有结果(&a) - - - - Resource - 资源 - - - - Audio - 音频 - - - - TTS Voice - TTS 音频 - - - - Picture - 图片 - - - - Video - 视频: %1 - 视频 - - - - Video: %1 - - - - - Definition from dictionary "%1": %2 - 定义:"%1": %2 - - - - Definition: %1 - 定义:%1 - - - - The referenced audio program doesn't exist. - 引用的音频播放程序不存在。 - - - - - ERROR: %1 - 错误: %1 - - - - Save sound - 保存音频文件 - - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - 音频文件 (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;所有文件 (*.*) - - - - Save image - 保存图片 - - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - 图片文件 (*.bmp *.jpg *.png *.tif);;所有文件 (*.*) - - - Resource saving error: - 资源保存失败: - - - - Save &image... - 保存图片(&I)... - - - - Save s&ound... - 保存音频文件(&O)... - - - - Send "%1" to input line - 将 "%1" 发送到输入框 - - - - - &Add "%1" to history - 将 "%1" 添加到历史(&A) - - - - WARNING: %1 - 警告: %1 - - - - WARNING: FFmpeg Audio Player: %1 - 警告: 内置播放器:%1 - - - - BelarusianTranslit - - - Belarusian transliteration from latin to cyrillic (classic orthography) - 白俄罗斯文转写(拉丁到西里尔字母,传统正字法) - - - - Belarusian transliteration from latin to cyrillic (school orthography) - 白俄罗斯文转写(拉丁到西里尔字母,官方正字法) - - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - 白俄罗斯文转写(西里尔字母,官方正字法到传统正字法) - - - - ChineseConversion - - - GroupBox - - - - - Enable conversion between simplified and traditional Chinese characters - - - - - Chinese Con&version - - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - - SC to TC (Taiwan variant) - - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - - SC to TC (Hong Kong variant) - - - - - Enable conversion from traditional characters to simplified characters - - - - - TC to SC - - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - - Proxy authentication required - 代理服务器要求身份验证 - - - - You need to supply a Username and a Password to access via proxy - 您需要提供代理服务器的用户名和密码 - - - - Username: - 用户名: - - - - Password: - 密码: - - - - DictGroupWidget - - - Form - 表单 - - - - Group icon: - 群组图标: - - - - Shortcut: - 快捷键: - - - - None - 无 - - - - From file... - 来自文件... - - - - Choose a file to use as group icon - 选择一个文件作为群组图标 - - - - Images - 图像 - - - - All files - 所有文件 - - - - Error - 错误 - - - - Can't read the specified image file. - 无法读取指定的图像文件。 - - - - DictGroupsWidget - - - Confirmation - 确定 - - - - Are you sure you want to generate a set of groups based on language pairs? - 你确定要产生基于语言配对的群组吗? - - - - Combine groups by source language to "%1->" - 根据源语言合并群组"%1->" - - - - Combine groups by target language to "->%1" - 根据目标语言合并群组"->%1" - - - - Make two-side translate group "%1-%2-%1" - 建立双向群组"%1-%2-%1" - - - - - Combine groups with "%1" - 与群组"%1"合并 - - - - - - - Dictionaries: - 词典: - - - - Unassigned - 未分配 - - - - DictHeadwords - - - Search mode - 搜索模式 - - - - This element determines how filter string will be interpreted - 在这里可以选择过滤器字符串的执行方式 - - - - If checked on the symbols case will be take in account when filtering - 若勾选则大小写不同的词条均计入总数 - - - - Match case - 区分大小写 - - - - Exports headwords to file - 将词条导出至文件 - - - - Export - 导出 - - - - Help - - - - - OK - 确定 - - - - Press this button to apply filter to headwords list - 点击此按钮启用词条列表过滤器 - - - - Apply - 过滤 - - - - If checked any filter changes will we immediately applied to headwords list - 若勾选则词条列表过滤器的修改即时生效 - - - - Auto apply - 自动过滤 - - - - Filter: - 过滤器: - - - - Filter string (fixed string, wildcards or regular expression) - 过滤器字符串(可以是固定的字符串、通配符或者正则表达式) - - - - Text - 纯文本 - - - - Wildcards - 通配符 - - - - RegExp - 正则表达式 - - - - Unique headwords total: %1, filtered: %2 - 总共有%1个不同的词条,已过滤%2个 - - - - Save headwords to file - 保存词条至文件 - - - - Text files (*.txt);;All files (*.*) - 文本文件 (*.txt);;所有文件 (*.*) - - - - Export headwords... - 导出词条... - - - - Cancel - 取消 - - - - DictInfo - - - Total articles: - 文章总数: - - - - Translates from: - 词条语言: - - - - Total words: - 词条总数: - - - - Translates to: - 释义语言: - - - - Open folder - 打开文件夹 - - - - Edit dictionary - 编辑词典信息 - - - - Files comprising this dictionary: - 此词典包含的文件: - - - - Description: - 描述: - - - - Show all unique dictionary headwords - 显示所有不同的词条 - - - - Headwords - 词条 - - - - Edit the dictionary via command: -%1 - 编辑词典信息的命令行:%1 - - - - DictListModel - - - %1 entries - %1 条记录 - - - - DictServer - - - Url: - - - - - Databases: - - - - - Search strategies: - - - - - Server databases - - - - - DictServersModel - - - Enabled - 已启用 - - - - Name - 名称 - - - - Address - 地址 - - - - Databases - - - - - Strategies - - - - - Icon - 图标 - - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - - - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - - - - - DictionaryBar - - Dictionary Bar - 词典栏 - - - - Extended menu with all dictionaries... - 展开菜单以包含所有词典…… - - - - Edit this group - 编辑此群组 - - - - Dictionary info - 词典信息 - - - - Dictionary headwords - 词典词条 - - - - Open dictionary folder - 打开词典文件夹 - - - - Edit dictionary - 编辑词典信息 - - - - &Dictionary Bar - 词典栏(&D) - - - - EditDictionaries - - - - &Dictionaries - 词典(&D) - - - - Dictionaries - 词典 - - - - Accept - 接受 - - - - Cancel - 取消 - - - - Sources changed - 词典文件所在目录已变更 - - - - &Sources - 词典来源(&S) - - - - - &Groups - 群组(&G) - - - - Some sources were changed. Would you like to accept the changes? - 某些词典文件的所在目录已变更,是否接受变更? - - - - ExternalViewer - - - the viewer program name is empty - 外部播放程序名为空 - - - - FTS::FtsIndexing - - None - 无 - - - - FTS::FullTextSearchDialog - - - Full-text search - 全文搜索 - - - - Whole words - 全字匹配 - - - - Plain text - 纯文本 - - - - Wildcards - 通配符 - - - - RegExp - 正则表达式 - - - - Max distance between words (%1-%2): - 最大词间距 (%1-%2): - - - - Max articles per dictionary (%1-%2): - 每个词典最大词条数 (%1-%2): - - - - - - Articles found: - 搜索到的词条: - - - - Now indexing: - 正在索引: - - - - None - 无 - - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - 不能使用“全字匹配”模式或者“纯文本”模式搜索包含CJK字符的字符串 - - - - The search line must contains at least one word containing - 搜索关键词至少包含 - - - - or more symbols - 个或更多字符 - - - - No dictionaries for full-text search - 没有可供全文搜索的词典 - - - - FTS::Indexing - - None - 无 - - - - Forvo::ForvoArticleRequest - - - XML parse error: %1 at %2,%3 - XML 语法错误:%1 于 %2, %3 - - - - Added %1 - 添加 %1 - - - - by - 由 - - - - Male - 男 - - - - Female - 女 - - - - from - 来自 - - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - 进入 编辑|词典|词典来源|Forvo, 申请自己的 API-key 来消除此错误。 - - - - FullTextSearchDialog - - - - Search - 搜索 - - - - Match case - 区分大小写 - - - - Mode: - 模式: - - - - Articles found: - 搜索到的词条: - - - - Available dictionaries in group: - 群组中的可用词典: - - - - Wait for indexing: - 等候索引: - - - - Help - - - - Non-indexable: - 不可索引: - - - - Total: - 总计: - - - - Indexed: - 已索引: - - - - Now indexing: None - 正在索引:无 - - - - Cancel - 取消 - - - - GermanTranslit - - - German Transliteration - 德语转写 - - - - GreekTranslit - - - Greek Transliteration - 希腊文转写 - - - - GroupComboBox - - - Choose a Group (Alt+G) - 选择一个群组(Alt+G) - - - - GroupSelectorWidget - - - Form - 表单 - - - - Look in - 查找于 - - - - Groups - - - < - < - - - - > - > - - - - Del - Del - - - - Ins - Ins - - - - Tab 2 - 标签页 2 - - - - Are you sure you want to remove all the groups? - 确定移除全部群组吗? - - - - Are you sure you want to remove the group <b>%1</b>? - 确定要移除<b>%1</b>群组吗? - - - - Group tabs - 群组标签页 - - - - Open groups list - 打开群组列表 - - - - Remove group - 移除群组 - - - - Rename group - 重命名群组 - - - - Give a new name for the group: - 为群组起一个新名字: - - - - Dictionaries available: - 可用词典: - - - - &Add group - 添加群组(&A) - - - - Add group - 添加群组 - - - - Create new dictionary group - 创建新的词典群组 - - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - 可以用鼠标拖拽词典以改变其群组设置或排序(&D)。 - - - - Rename current dictionary group - 重命名当前词典群组 - - - - Remove current dictionary group - 移除词典群组 - - - - Give a name for the new group: - 为新群组命名: - - - - - Remove all groups - 移除全部群组 - - - - Remove selected dictionaries from group (Del) - 将所选词典从群组中移除(Del) - - - - Add selected dictionaries to group (Ins) - 将所选词典添加进群组(Ins) - - - - &Remove group - 移除群组(&R) - - - - Groups: - 群组: - - - - Re&name group - 重命名群组(&N) - - - - Remove all dictionary groups - 移除全部词典群组 - - - - Create language-based groups - 创建基于语言的群组 - - - - Auto groups - 自动分组 - - - - Help::HelpWindow - - - GoldenDict help - - - - - Home - - - - - Back - 回退 - - - - Forward - 前进 - - - - Zoom In - 放大 - - - - Zoom Out - 缩小 - - - - Normal Size - 正常大小 - - - - Content - - - - - Index - - - - - HistoryPaneWidget - - - &Delete Selected - 删除(&D) - - - - Copy Selected - 复制 - - - - History: - 历史: - - - - %1/%2 - %1/%2 - - - - History size: %1 entries out of maximum %2 - 历史条数:%1/%2 - - - - Hunspell - - - Spelling suggestions: - 拼写建议: - - - - %1 Morphology - %1 构词法 - - - - HunspellDictsModel - - - Name - 名称 - - - - Enabled - 已启用 - - - - Initializing - - - Dictionary Name - 词典名称 - - - - GoldenDict - Initializing - 初始化 GoldenDict - - - - - Please wait while indexing dictionary - 正在索引词典,请稍候 - - - - Please wait... - 请稍候... - - - - Language - - - Ewe - 埃维语 - - - - Ido - 伊多语 - - - - Lao - 老挝语 - - - - Twi - 维特语(加纳) - - - - Afar - 阿法尔语 - - - - Akan - 阿肯语 - - - - Cree - 克里语 - - - - Igbo - 伊博语 - - - - Komi - 科米语 - - - - Manx - 曼岛语 - - - - Pali - 巴利语 - - - - Thai - 泰语 - - - - Urdu - 乌尔都语 - - - - Zulu - 祖鲁语 - - - - Czech - 捷克语 - - - - Dutch - 荷兰语 - - - - Ganda - 卢甘达语 - - - - Fulah - 富拉语 - - - - Greek - 希腊语 - - - - Hausa - 豪萨语 - - - - Hindi - 印地语 - - - - Irish - 爱尔兰语 - - - - Khmer - 高棉语(柬埔寨语) - - - - Kongo - 刚果语 - - - - Latin - 拉丁语 - - - - Malay - 马来语 - - - - Maori - 毛利语 - - - - Nauru - 瑙鲁语 - - - - Oriya - 奥里亚语 - - - - Oromo - 奥洛莫语 - - - - Sango - 桑戈语 - - - - Shona - 绍纳语 - - - - Tajik - 塔吉克语 - - - - Tamil - 泰米尔语 - - - - Tatar - 鞑靼语 - - - - Swati - 斯瓦特语 - - - - Tonga - 东加语 - - - - Inupiaq - 伊努庇克语 - - - - Venda - 文达语 - - - - Uzbek - 乌兹别克语 - - - - Welsh - 威尔士语 - - - - Wolof - 沃洛夫语 - - - - Xhosa - 科萨语 - - - - Italian - 意大利语 - - - - Raeto-Romance - 罗曼斯语 - - - - Dzongkha - 宗喀语(不丹语) - - - - Kannada - 卡纳达语 - - - - North Ndebele - 北恩德贝勒语 - - - - Abkhazian - 阿布哈西亚语 - - - - Kirghiz - 吉尔吉斯语 - - - - Kirundi - 科隆地语 - - - - Scottish Gaelic - 苏格兰语 - - - - Albanian - 阿尔巴尼亚语 - - - - Latvian - 拉脱维亚语 - - - - Malayalam - 马拉雅拉姆语 - - - - Kurdish - 库尔德语 - - - - Bulgarian - 保加利亚语 - - - - Lingala - 林加拉语 - - - - Maltese - 马耳他语 - - - - Marathi - 马拉地语 - - - - Arabic - 阿拉伯语 - - - - Basque - 巴斯克语 - - - - Avaric - 阿瓦尔语 - - - - Bihari - 比哈尔语 - - - - Aymara - 艾马拉语 - - - - Breton - 布列塔尼语 - - - - Sundanese - 巽他语 - - - - Danish - 丹麦语 - - - - Divehi - 迪维希语 - - - - Luba-Katanga - 卢巴卡丹加语 - - - - Fijian - 斐济语 - - - - Hungarian - 匈牙利语 - - - - French - 法语 - - - - German - 德语 - - - - Mongolian - 蒙古语 - - - - Hebrew - 希伯来语 - - - - Herero - 赫雷罗语 - - - - Luxembourgish - 卢森堡语 - - - - Kanuri - 卡努里语 - - - - Kazakh - 哈萨克语 - - - - Kikuyu - 基库尤语 - - - - Korean - 韩国语(朝鲜语) - - - - Navajo - 纳瓦霍语 - - - - Ndonga - 恩敦加语 - - - - Nepali - 尼泊尔语 - - - - Ojibwa - 奥吉布瓦语 - - - - Pashto - 普什图语 - - - - Polish - 波兰语 - - - - Samoan - 萨摩亚语 - - - - Occitan - 奥西坦语 - - - - Sindhi - 信德语 - - - - Slovak - 斯洛伐克语 - - - - Somali - 索马里语 - - - - Telugu - 泰卢固语 - - - - Tsonga - 颂加语 - - - - Tswana - 茨瓦纳语 - - - - Uighur - 维吾尔语 - - - - Serbo-Croatian - 塞尔维亚-克罗地亚语 - - - - Yoruba - 约鲁巴语 - - - - Zhuang - 壮语 - - - - Romanian - 罗马尼亚语 - - - - Indonesian - 印度尼西亚语 - - - - Panjabi - 旁遮普语 - - - - Southern Sotho - 梭托语 - - - - Corsican - 科西嘉语 - - - - Esperanto - 世界语 - - - - Persian - 波斯语 - - - - Slovenian - 斯洛文尼亚语 - - - - Western Frisian - 西弗里西语 - - - - Aragonese - 阿拉贡语 - - - - Tahitian - 塔希提语 - - - - Malagasy - 马达加斯加语 - - - - Galician - 加利西亚语 - - - - Azerbaijani - 阿塞拜疆语 - - - - Amharic - 阿姆哈拉语 - - - - Sanskrit - 梵语 - - - - Japanese - 日语 - - - - Ukrainian - 乌克兰语 - - - - Bambara - 班巴拉语 - - - - Kalaallisut - 格陵兰语 - - - - Bashkir - 巴什基尔语 - - - - Belarusian - 白俄罗斯语 - - - - Kashmiri - 克什米尔语 - - - - Sardinian - 撒丁语 - - - - Hiri Motu - 希里莫图语 - - - - Quechua - 科察语 - - - - Bengali - 孟加拉语 - - - - Javanese - 爪哇语 - - - - Avestan - 阿维斯陀语 - - - - Kinyarwanda - 卢旺达语 - - - - Afrikaans - 南非语 - - - - Bislama - 比斯拉马语 - - - - Armenian - 亚美尼亚语 - - - - Norwegian Bokmal - 波克默尔语(挪威) - - - - Croatian - 克罗地亚语 - - - - Bosnian - 波斯尼亚语 - - - - Interlingua - 国际语 - - - - Interlingue - 西方国际语 - - - - Catalan - 加泰罗尼亚语 - - - - Serbian - 塞尔维亚语 - - - - Burmese - 缅甸语 - - - - Russian - 俄语 - - - - Limburgish - 林堡语 - - - - Norwegian - 挪威语 - - - - Chechen - 车臣语 - - - - Chinese - 汉语 - - - - Chuvash - 楚瓦什语 - - - - Sinhala - 僧加罗语 - - - - Spanish - 西班牙语 - - - - Cornish - 凯尔特语 - - - - Tagalog - 他加禄语(菲律宾) - - - - Assamese - 阿萨姆语 - - - - Ossetian - 奥塞梯语 - - - - Estonian - 爱沙尼亚语 - - - - Swahili - 斯瓦希里语 - - - - Swedish - 瑞典语 - - - - Tibetan - 西藏语 - - - - Vietnamese - 越南语 - - - - Macedonian - 马其顿语 - - - - Portuguese - 葡萄牙语 - - - - Turkish - 土耳其语 - - - - Turkmen - 土库曼语 - - - - Gujarati - 古吉拉特语 - - - - Icelandic - 冰岛语 - - - - Inuktitut - 因纽特语 - - - - English - 英语 - - - - Georgian - 格鲁吉亚语 - - - - Church Slavic - 教会斯拉夫语 - - - - Faroese - 法罗语 - - - - Finnish - 芬兰语 - - - - Volapuk - 沃拉普克语 - - - - Walloon - 华隆语 - - - - Kwanyama - 宽亚玛语 - - - - Marshallese - 马绍尔语 - - - - Northern Sami - 北萨莫斯语 - - - - Haitian - 海地语 - - - - Chamorro - 查莫罗语 - - - - Norwegian Nynorsk - 尼诺斯克语(挪威) - - - - Guarani - 瓜拉尼语 - - - - South Ndebele - 南恩德贝勒语 - - - - Chichewa - 奇契瓦语 - - - - Lithuanian - 立陶宛语 - - - - Sichuan Yi - 四川彝语 - - - - Tigrinya - 提格里尼亚语 - - - - Yiddish - 意第绪语 - - - - Traditional Chinese - 繁体中文 - - - - Simplified Chinese - 简体中文 - - - - Other - 其它 - - - - Other Simplified Chinese dialects - 简体中文其它方言 - - - - Other Traditional Chinese dialects - 繁体中文其它方言 - - - - Other Eastern-European languages - 东欧其它语言 - - - - Other Western-European languages - 西欧其它语言 - - - - Other Russian languages - 俄罗斯其它语言 - - - - Other Japanese languages - 日本其它语言 - - - - Other Baltic languages - 波罗地海其它语言 - - - - Other Greek languages - 希腊其它语言 - - - - Other Korean dialects - 韩国其它语言 - - - - Other Turkish dialects - 土尔其其它语言 - - - - Other Thai dialects - 泰国其它语言 - - - - Tamazight - 塔马塞特语 - - - - Lojban - 逻辑语 - - - - LoadDictionaries - - - Error loading dictionaries - 读取词典出错 - - - - Main - - - Error in configuration file. Continue with default settings? - 配置文件错误,使用默认配置并继续? - - - - MainWindow - - - F1 - F1 - - - - F2 - F2 - - - - F3 - F3 - - - - F4 - F4 - - - - All - 全部 - - - - Back - 回退 - - - Print Preview - 打印预览 - - - - %1 dictionaries, %2 articles, %3 words - 词典数:%1,文章数:%2,词条数:%3 - - - - &Edit - 编辑(&E) - - - - &File - 文件(&F) - - - - &Help - 帮助(&H) - - - - Search - 搜索 - - - - - &Quit - 退出(&Q) - - - - Error - 错误 - - - - Scan Popup - 屏幕取词 - - - - Quit from application - 退出程序 - - - - &Close To Tray - 关闭至系统托盘(&C) - - - - Can't save article: %1 - 无法保存文章:%1 - - - - Zoom In - 放大 - - - - &Dictionaries... - 词典(&D)... - - - - &About - 关于(&A) - - - - &Forum - 论坛(&F) - - - - &Print - 打印(&P) - - - - &Save Article - 保存文章(&S) - - - - Save Article As - 文章另存为 - - - - Ctrl+P - Ctrl+P - - - - Ctrl+Q - Ctrl+Q - - - - Minimizes the window to tray - 最小化窗口至系统托盘 - - - Rescan Files - 重新扫描文件 - - - - Page Set&up - 页面设置(&U) - - - - &Homepage - 主页(&H) - - - - New Release Available - 有新版本可用 - - - - Look up: - 查找: - - - - Zoom Out - 缩小 - - - &Groups... - 群组...(&G) - - - - Show &Main Window - 显示主窗口(&M) - - - - About GoldenDict - 关于 GoldenDict - - - - Download - 下载 - - - - Page Setup - 页面设置 - - - - - Look up in: - 查找于: - - - - Normal Size - 正常大小 - - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - 初始化热键监视机制失败。<br>请确保你的 XServer 已启用 RECORD 扩展。 - - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - 有新版 GoldenDict 可用,版本为 <b>%1</b>。<br> -点击<b>下载</b>,打开下载页面。 - - - Search Pane - 查询面板 - - - - Ctrl+F4 - Ctrl+F4 - - - - Ctrl+F5 - Ctrl+F5 - - - GoldenDict - GoldenDict - - - - Loading... - 加载中…… - - - - (untitled) - (未命名) - - - - &Preferences... - 首选项(&P)... - - - Html files (*.html *.htm) - Html 文件(*.html *.htm) - - - - - Welcome! - 欢迎使用! - - - - Pronounce Word (Alt+S) - 朗读词条(Alt+S) - - - - Save Article - 保存文章 - - - - Skip This Release - 忽略此次升级 - - - - Forward - 前进 - - - WARNING: %1 - 警告: %1 - - - - Print Article - 打印文章 - - - - No printer is available. Please install one first. - 找不到可用的打印机,请先安装一个打印机。 - - - Navigation - 导航栏 - - - - &View - 查看(&V) - - - Show Names in Dictionary Bar - 在词典栏中显示词典名称 - - - - H&istory - 历史(&I) - - - - &Clear - 清除(&C) - - - - &Zoom - 缩放(&Z) - - - - Words Zoom In - 单词列表 - 放大 - - - - Words Zoom Out - 单词列表 - 缩小 - - - - Words Normal Size - 单词列表 - 正常大小 - - - - Close current tab - 关闭当前标签页 - - - - Close all tabs - 关闭所有标签页 - - - - Close all tabs except current - 关闭其它标签页 - - - - Opened tabs - 已打开的标签页 - - - Results Navigation Pane - 查询结果导航面板 - - - &Dictionaries... F3 - 词典...(&D) F3 - - - - New Tab - 新建标签页 - - - - Ctrl+T - Ctrl+T - - - - &Configuration Folder - 配置文件夹(&C) - - - Show Small Icons in Toolbars - 在工具栏上显示小图标 - - - - &Menubar - 菜单栏(&M) - - - - Found in Dictionaries: - 在以下词典中找到: - - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - - - - - Open Tabs List - 打开标签页列表 - - - - %1 - %2 - %1 - %2 - - - - You have chosen to hide a menubar. Use %1 to show it back. - 你选择了隐藏菜单栏,使用 %1 再次显示。 - - - - Ctrl+M - Ctrl+M - - - - - &Show - 显示(&S) - - - - &Export - 导出(&E) - - - - &Hide - 隐藏(&H) - - - History view mode - 历史记录查看模式 - - - - Export history to file - 导出历史记录到文件 - - - - - Text files (*.txt);;All files (*.*) - 文本文件 (*.txt);;所有文件 (*.*) - - - - History export complete - 历史记录导出完成 - - - - Export error: - 导出错误: - - - - Ctrl+H - Ctrl+H - - - - &Import - 导入(&I) - - - - Import history from file - 导入历史文件 - - - - Import error: invalid data in file - 导入失败:无效数据 - - - - History import complete - 历史导入成功 - - - - Import error: - 导入错误: - - - - Dictionary info - 词典信息 - - - - Dictionary headwords - 词典词条 - - - - Open dictionary folder - 打开词典文件夹 - - - - Edit dictionary - 编辑词典信息 - - - - Now indexing for full-text search: - - - - - &Search Pane - 查询面板(&S) - - - - &Results Navigation Pane - 查询结果导航面板(&R) - - - - Print Pre&view - 打印预览(&V) - - - - &Rescan Files - 重新扫描文件(&R) - - - - &New Tab - 新建标签页(&N) - - - - &Always on Top - 总在最前(&A) - - - - Always on Top - 总在最前 - - - - Ctrl+O - Ctrl+O - - - - - - Menu Button - 菜单按钮 - - - - Search in page - 页内搜索 - - - - Ctrl+F - Ctrl+F - - - - Full-text search - 全文搜索 - - - - Ctrl+Shift+F - Ctrl+Shift+F - - - - GoldenDict reference - - - - - Show Names in Dictionary &Bar - 在词典栏中显示词典名称(&B) - - - - Show Small Icons in &Toolbars - 在工具栏上显示小图标(&T) - - - - &Navigation - 导航栏(&N) - - - - Article, Complete (*.html) - 文章, 完整 (*.html) - - - - Article, HTML Only (*.html) - 文章, 仅 HTML (*.html) - - - - Saving article... - 文章保存中…… - - - - The main window is set to be always on top. - 主窗口已设置为总在最前。 - - - - &History Pane - 历史面板(&H) - - - - - Accessibility API is not enabled - 无障碍API未启用 - - - - Mdx::MdxArticleRequest - - - Dictionary file was tampered or corrupted - 词典文件被修改或已损坏 - - - - Failed loading article from %1, reason: %2 - 从 %1 加载文章失败:%2 - - - - MediaWiki::MediaWikiArticleRequest - - - XML parse error: %1 at %2,%3 - XML 解析失败:%1 于 %2, %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - - XML parse error: %1 at %2,%3 - XML 解析失败:%1 于 %2, %3 - - - - MediaWikisModel - - - Name - 名称 - - - - Address - 地址 - - - - Enabled - 已启用 - - - - Icon - 图标 - - - - OrderAndProps - - ... - ... - - - - Form - 表单 - - - - Inactive (disabled) dictionaries: - 未启用(已禁用)的词典: - - - - Name: - 名称: - - - - Total articles: - 文章总数: - - - - Translates from: - 词条语言: - - - - Translates to: - 释义语言: - - - - Total words: - 词条总数: - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - 可以通过拖拽改变项目的排序。将词典放入未启用的群组以禁用。 - - - - Dictionary order: - 词典排序: - - - - Files comprising this dictionary: - 此词典包含的文件: - - - - Dictionary information - 词典信息 - - - - Description: - 描述: - - - - Sort by name - 按名称排序 - - - - Sort by languages - 按语言排序 - - - - Dictionary headwords - 词典词条 - - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - - Path - 路径 - - - - Recursive - 递归搜索 - - - - Preferences - - - Alt - Alt - - - - Start to system tray - 启动至系统托盘 - - - - Left Shift only - 仅限左 Shift - - - - Ctrl - Ctrl - - - - secs - 秒 - - - - Win/Meta - Win/Meta - - - - Enable system tray icon - 启用系统托盘图标 - - - - Host: - 主机: - - - - Port: - 端口: - - - - Shift - Shift - - - - Type: - 类型: - - - - User: - 用户名: - - - - &Scan Popup - 屏幕取词(&S) - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - 在正常情况下,打开一个新标签页将会自动将其选定。 -启用此选项将会在打开新标签页时不自动选定。 - - - - Use proxy server - 使用代理服务器 - - - - Use the following hotkey to translate a word from clipboard: - 使用下列热键翻译剪贴板中的单词: - - - - Windows key or Meta key - Windows 键或 Meta 键 - - - - Only show popup when all selected keys are kept pressed: - 仅在按住下列特定的按键时屏幕取词才会启动: - - - - Auto-pronounce words in main window - 自动朗读主窗口中的词条 - - - - Start with system - 随系统启动 - - - - Left Alt only - 仅限左 Alt - - - - Tabbed browsing - 标签页浏览 - - - - Right Shift only - 仅限右 Shift - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - 启用此选项,关闭窗口将使程序最小化至系统托盘, -而不是退出程序。 - - - - &Audio - 音频(&A) - - - - Enable if you wish to use a proxy server -for all program's network requests. - 如果你希望通过代理服务器执行程序的网络查 -询功能,启用此选项。 - - - - Interface language: - 界面语言: - - - - Left Ctrl only - 仅限左 Ctrl - - - - Open new tabs in background - 在后台打开新标签页 - - - - &Network - 网络(&N) - - - - Right Ctrl only - 仅限右 Ctrl - - - - Lingvo - Lingvo - - - - Right Shift - 右 Shift - - - - Left Shift - 左 Shift - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - 启用后,屏幕取词窗口只有在按住特定按键时才会弹出。 - - - - Display style: - 显示风格: - - - - Auto-pronounce words in scan popup - 自动朗读屏幕取词弹出窗口中的词条 - - - - Enable scan popup functionality - 启用屏幕取词功能 - - - - Open new tabs after the current one - 在当前页之后打开新标签页 - - - - Restart the program to apply the language change. - 变更界面语言需要重新启动程序才能生效。 - - - - Alt key - Alt 键 - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - 启用后,用鼠标指针指向一个单词(Windows下),或者 -选定一个单词(Linux下)的时候,都会出现一个弹出式 -窗口来显示释义。启用此功能后,可以从主窗口或系统 -托盘菜单中选择是否激活屏幕取词功能。 - - - - Check for new program releases periodically - 定期检查可用版本 - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - 打开此选项,新标签页将会在当前页面后打开;不 -打开此选项,新标签页将会自动添加到末尾。 - - - - Close to system tray - 关闭至系统托盘 - - - - System default - 系统默认 - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - 启用此选项,将会启用系统托盘图标。 - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - 当启用此选项时,程序将会自动检查 GoldenDict 的可 -用更新。如有新版本,程序将会提醒用户打开下载 -页面。 - - - - Startup - 开机自动启动 - - - - Password: - 密码: - - - - - Default - 默认 - - - - &Interface - 界面(&I) - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - 为了防止误按,仅仅在鼠标选词后的几秒之内才会 -被监视。热键监视的秒数可以在这里设置。 - - - - Changing Language - 变更界面语言 - - - - Ctrl key - Ctr l键 - - - - Use the following hotkey to show or hide the main window: - 使用下列热键显示或隐藏主窗口: - - - - Left Alt - 左 Alt - - - - Right Alt only - 仅限右 Alt - - - - Preferences - 首选项 - - - - Keys may also be pressed afterwards, within - 按键取词容许的延迟时间: - - - - Left Ctrl - 左 Ctrl - - - - Right Alt - 右 Alt - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - 热键均为全局键,只要 GoldenDict 在后台运行,热键就可以在任何程序中使用。 - - - - Right Ctrl - 右 Ctrl - - - - Hotkeys - 热键 - - - - Start with scan popup turned on - 启动程序时同时启动屏幕取词 - - - - With this on, the application starts directly to system tray without showing -its main window. - 启用此选项,程序启动时将直接最小化至系统托盘。 - - - - Shift key - Shift 键 - - - - Automatically starts GoldenDict after operation system bootup. - 开机自动启动 GoldenDict. - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - 选择是否默认启用屏幕取词模式。如果选中,程序启动时将会自动激活屏幕取词功能。 - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - 通常,为了弹出屏幕取词窗口,在选择单词的同时需要一直 -按住选定的按键。启用此选项后,只需在选择单词以后指定 -的一小段时间内按下键即可。 - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:2em;"><span style=" color:#ff0000;">注意: 你正在运行的 X.Org XServer 版本 RECORD 扩展功能不能正常工作。GoldenDict 中的热键可能因此而失效。问题的解决依赖于 xserver 自身的恢复。请参照如下链接: </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug 记录</span></a><span style=" color:#ff0000;"> 并留下评论。</span></p></body></html> - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - 启用此选项后,GoldenDict 将会禁止载入你所浏览的站点中来自其它站点的 -内容(图片,框架)以便封杀广告。如果某些网点因此而出现错误,尝试禁 -用此选项。 - - - - Disallow loading content from other sites (hides most advertisements) - 禁止载入来自其它站点的内容(封杀广告) - - - - Pronunciation - 朗读 - - - - Playback - 播放 - - - Play via Phonon - 通过 Phonon 播放 - - - - Use external program: - 使用外部程序播放: - - - Play via DirectShow - 通过 DirectShow 播放 - - - - Double-click translates the word clicked - 双击翻译词条(在主界面中) - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - 使用 Windows 原生 API 播放。仅支持 .wav 文件,但稳定可靠。 - - - Play via Windows native API - 通过 Windows 原生 API 播放 - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - 通过 Phonon 框架播放音频。有时不太稳定,但支持大多数音频文件格式。 - - - - Use any external program to play audio files - 使用外部程序播放音频文件 - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - 通常,按下 ESC 键会将焦点移至翻译输入框,若启用此选项则会隐藏主窗口。 - - - - ESC key hides main window - ESC 键隐藏主窗口 - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - 启用此选项后允许听依赖 Flash 或其它 web 插件的在线词典的发音。必须 -安装相应插件才能使此选项正常工作。 - - - - Enable web plugins - 启用 web 插件 - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - 如果你不想在单标签页时见到主标签栏,请启用此选项。 - - - - Hide single tab - 隐藏单标签页 - - - - Help language - - - - - Adjust this value to avoid huge context menus. - 避免右键菜单出现过多词典条目。 - - - - Context menu dictionaries limit: - 右键菜单词典数目限制: - - - - Send translated word to main window instead of to show it in popup window - 将翻译词条发送至主窗口,而非在取词窗口中显示 - - - - Send translated word to main window - 发送翻译词条到主窗口 - - - - Play audio files via FFmpeg(libav) and libao - 使用 FFmpeg(libav) 及 libao 播放音频文件 - - - - Use internal player - 使用内置播放器 - - - - System proxy - 系统代理 - - - - Custom proxy - 自定义代理 - - - - Custom settings - 自定义设置 - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - 部分网站屏蔽了使用 GoldenDict 浏览器标识(UA)的请求,启用此选项以绕过该问题。 - - - - Do not identify GoldenDict in HTTP headers - 不使用 GoldenDict 浏览器标识(UA) - - - - Full-text search - 全文搜索 - - - - Allow full-text search for: - 允许对以下格式词典进行全文搜索: - - - - Don't search in dictionaries containing more than - 不要在词条数多于 - - - - articles (0 - unlimited) - 个 (0 - 无限制) 的词典中进行搜索 - - - - Ad&vanced - 高级(&v) - - - - ScanPopup extra technologies - 附加取词技术 - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - 尝试使用 IAccessibleEx 技术取词。此技术仅对某些支持它的 -程序有效(比如 Internet Explorer 9)。 -如果你不使用此类程序,则不需要启用此选项。 - - - - Use &IAccessibleEx - 使用 &IAccessibleEx - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - 尝试使用 UI Automation 技术取词。此技术仅对某些支持它的 -程序有效。 -如果你不使用此类程序,则不需要启用此选项。 - - - - Use &UIAutomation - 使用 &UIAutomation - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - 尝试使用 special GoldenDict message 技术取词。此技术仅对 -某些支持它的程序有效。 -如果你不使用此类程序,则不需要启用此选项。 - - - - Use &GoldenDict message - 使用 &GoldenDict message - - - - Turn this option on to always expand optional parts of articles - 开启此选项以自动展开文章的可选部分 - - - - Expand optional &parts - 展开可选部分(&P) - - - - Select this option to automatic collapse big articles - 开启此选项以自动收起过长的文章 - - - - Collapse articles more than - 收起大于 - - - - Articles longer than this size will be collapsed - 大于此大小的文章将被收起 - - - Artiles longer than this size will be collapsed - 大于此大小的文章将被收起 - - - - symbols - 字符的文章 - - - - Ctrl-Tab navigates tabs in MRU order - 用 Ctrl-tab 浏览标签页时,以“最近使用”为序 - - - - Babylon - Babylon - - - - History - 历史 - - - - Turn this option on to store history of the translated words - 开启此选项已保存查询历史 - - - - Store &history - 保存历史(&H) - - - - Articles - 文章 - - - - Turn this option on if you want to select words by single mouse click - 开启此选项以启用单击选择单词功能 - - - - Select word by single click - 单击选择单词 - - - Play audio via Bass library. Optimal choice. To use this mode -you must place bass.dll (http://www.un4seen.com) into GoldenDict folder. - 使用 Bass 库播放音频文件(推荐)。使用该选项需要将 bass.dll (http://www.un4seen.com) 放入 GoldenDict 目录中。 - - - Play via Bass library - 通过 Bass 库播放 - - - - Add-on style: - 附加样式: - - - - Specify the maximum number of entries to keep in history. - 指定历史最大条数。 - - - - Maximum history size: - 最大历史条数: - - - - History saving interval. If set to 0 history will be saved only during exit. - 历史保存周期。若为 0 则只在程序退出时保存。 - - - - Save every - 保存周期: - - - - minutes - 分钟 - - - - Modern - 现代 - - - - Lingoes - 灵格斯 - - - - Lingoes-Blue - 灵格斯-蓝色调 - - - - ProgramTypeEditor - - - Audio - 音频 - - - - Plain Text - 纯文本 - - - - Html - Html - - - - Prefix Match - 匹配前缀 - - - - Unknown - 未知 - - - - Programs::RunInstance - - - No program name was given. - 未指定程序名。 - - - - The program has crashed. - 程序已崩溃。 - - - - The program has returned exit code %1. - 程序返回,退出代码为 %1. - - - - ProgramsModel - - - Enabled - 已启用 - - - - Type - 类型 - - - - Name - 名称 - - - - Command Line - 命令行 - - - - Icon - 图标 - - - - QObject - - - - Article loading error - 文章加载错误 - - - - - Article decoding error - 文章解码错误 - - - - avformat_alloc_context() failed. - avformat_alloc_context() 调用失败。 - - - - av_malloc() failed. - av_malloc() 调用失败。 - - - - avio_alloc_context() failed. - avio_alloc_context() 调用失败。 - - - - avformat_open_input() failed: %1. - avformat_open_input() 调用失败:%1。 - - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() 调用失败:%1。 - - - - Could not find audio stream. - 未找到有效的音频流数据。 - - - - Codec [id: %1] not found. - 未找到有效的解码器 [id: %1]。 - - - - avcodec_open2() failed: %1. - avcodec_open2() 调用失败:%1。 - - - - Cannot find usable audio output device. - 未找到有效的音频输出设备。 - - - - Unsupported sample format. - 不支持的采样格式。 - - - - ao_open_live() failed: - ao_open_live() 调用失败: - - - - No driver. - 无驱动程序。 - - - - This driver is not a live output device. - 该驱动程序不是有效的输出设备。 - - - - A valid option key has an invalid value. - 配置键值不匹配。 - - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - 无法打开设备:%1,声道:%2,采样率:%3,位:%4。 - - - - Unknown error. - 未知错误。 - - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() 调用失败。 - - - - QuickFilterLine - - - Dictionary search/filter (Ctrl+F) - 词典查询/过滤 (Ctrl+F) - - - - Quick Search - 快速查询 - - - - Clear Search - 清除查询结果 - - - - ResourceToSaveHandler - - - - ERROR: %1 - 错误: %1 - - - - Resource saving error: - 资源保存失败: - - - - The referenced resource failed to download. - 所引用的资源下载失败。 - - - - Romaji - - - Hepburn Romaji for Katakana - 黑本式罗马字(片假名) - - - - Hepburn Romaji for Hiragana - 黑本式罗马字(平假名) - - - - RussianTranslit - - - Russian Transliteration - 俄语转写 - - - - ScanPopup - - - - - - - ... - ... - - - word - 词条 - - - Alt+M - Alt+M - - - - Alt+S - Alt+S - - - - Dialog - 对话框 - - - List Matches (Alt+M) - 列出符合条件的词条(Alt+M) - - - - Pronounce Word (Alt+S) - 朗读词条(Alt+S) - - - - Shows or hides the dictionary bar - 显示或隐藏词典栏 - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - 使用此按钮可以固定窗口,以便它能停留在屏幕上进行改变大小等相关窗口管理操作。 - - - - Send word to main window (Alt+W) - 将词条发送到主窗口 (Alt+W) - - - - Alt+W - Alt+W - - - - Back - 回退 - - - - Forward - 前进 - - - GoldenDict - GoldenDict - - - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - - Name - 名称 - - - - Path - 路径 - - - - Icon - 图标 - - - - Sources - - - Files - 文件 - - - - Hiragana - 平假名 - - - - Systems: - 方案: - - - - Nihon-shiki - 日本式 - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - 作为替代选项,使用 %GD1251% 代替 CP1251,%GDISO1% 代替 ISO 8859-1. - - - - - - Remove site <b>%1</b> from the list? - 确定要将<b>%1</b>网站从列表中移除吗? - - - - Wikipedia - 维基百科 - - - - Katakana Japanese syllabary - 日语的片假名 - - - - Make dictionaries from bunches of audiofiles by adding paths here: - 如果要批量添加音频文件,请把路径添加在这里: - - - - - Remove directory <b>%1</b> from the list? - 确定要将<b>%1</b>目录从列表中移除吗? - - - - Japanese Romaji - 日文罗马字 - - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 以日本式为基础,针对现代日语做了一些修改。 -标准化为 ISO 3602。 - -GoldenDict 尚不支持此方案。 - - - - Wikipedia (MediaWiki) sites: - 维基百科(MediaWik)站点: - - - - Sound Dirs - 音频文件目录 - - - - The most widely used method of transcription of Japanese, -based on English phonology - 以英文语音学为基础建立的,最常用的日文转写方案 - - - - Hiragana Japanese syllabary - 日语的平假名 - - - - Transliteration - 转写 - - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 最常用的方案,跟假名系统一一对应。 -标准化 为ISO 3602。 - -GoldenDict 尚不支持此方案。 - - - - Russian transliteration - 俄文转写 - - - - Morphology - 构词法规则库 - - - - &Change... - 变更...(&C) - - - - Katakana - 片假名 - - - - Path to a directory with Hunspell/Myspell dictionaries: - 储存 Hunspell/Myspell 拼写检查词库文件的路径: - - - - Re&scan now - 重新扫描(&S) - - - - German transliteration - 德文转写 - - - - Any websites. A string %GDWORD% will be replaced with the query word: - 任意网站。%GDWORD% 字符串将会被搜索关键词替换: - - - - - - - - - &Add... - 添加(&A)... - - - - - - Choose a directory - 选择目录 - - - - - - - - - &Remove - 移除(&R) - - - - Websites - 网站 - - - - Paths to search for the dictionary files: - 词典文件所在目录: - - - - - - - - - Confirm removal - 确认移除 - - - - Syllabaries: - 音节: - - - - Available morphology dictionaries: - 可用的构词法规则库: - - - - Enables to use the Latin alphabet to write the Japanese language - 启用日文罗马字转写 - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - 每个构词法规则库都会显示为独立的辅助 -词典。拼写检查和拼写建议需要使用这些 -构词法规则库,请将其添加至相应群组的 -最下面。 - - - - Hepburn - 黑本式 - - - - Kunrei-shiki - 训令式 - - - - Forvo - Forvo - - - - DICT servers - 词典服务器 - - - - DICT servers: - 词典服务器: - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - 任意外部程序。字符串 %GDWORD% 会被所查词条替换。若 %GDWORD% 不存在,该词条会写入标准输入。 - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - 从 <a href="http://www.forvo.com/">forvo.com</a> 获取即时发音。这个网站使得人们可以记录并分享单词发音。你可以从 GoldenDict 中听这些发音。 - - - - Enable pronunciations from Forvo - 启用来自 Forvo 的发音功能 - - - - API Key: - API 密钥: - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - 当前,使用 Forvo 需要一个 API key. 若此处空白将使用以后可能 -失效的默认 key,否则请在该网站注册以获取你自己的 key. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:2em;">从<a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">这里</span></a>获取属于你的 key, 或者保持空白以使用默认 key.</p></td></tr></table></body></html> - - - - Language codes (comma-separated): - 语言代码(用逗号分隔): - - - - List of language codes you would like to have. Example: "en, ru". - 你所需要的语言代码列表。例如:"en, ru". - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - 语言代码的完整列表可以从<a href="http://www.forvo.com/languages-codes/">这里</a>获取。 - - - - Greek transliteration - 希腊文转写 - - - - (not available in portable version) - (便携版中不可用) - - - - Programs - 程序 - - - Any external programs. A string %GDWORD% will be replaced with the query word. The word will also be fed into standard input. - 任意外部程序均可。字符串 %GDWORD% 会被所查词条替换,词条会写入标准输入。 - - - - Remove program <b>%1</b> from the list? - 从列表中删除程序 <b>%1</b>? - - - - Belarusian transliteration - 白俄罗斯语转写 - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - 从<a href="http://api.forvo.com/key/">这里</a>获取自己的API Key,或留空以使用默认API Key。 - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - %GD1251% 对应 CP1251, %GDISO1%...%GDISO16% 依次对应 ISO 8859-1...ISO 8859-16, -%GDBIG5% 对应 Big-5, %GDBIG5HKSCS% 对应 Big5-HKSCS, %GDGBK% 对应 GBK 及 GB18030, %GDSHIFTJIS% 对应 Shift-JIS. - - - - Text to Speech - 语音合成 - - - - StylesComboBox - - - None - 无 - - - - TextToSpeechSource - - - Selected voice engines: - 语音引擎列表: - - - - &Add - 添加(&A) - - - - &Remove - 移除(&R) - - - - Preview - 预览 - - - - Available voice engines: - 可用语音引擎: - - - - Text to be previewed: - 预览以下文本: - - - - Type text to be previewed here. - Type text to be previewed here. - - - - &Preview - 预览(&P) - - - - No TTS voice available - 无可用 TTS 引擎 - - - - Confirm removal - 确认移除 - - - - Remove voice engine <b>%1</b> from the list? - 确定要将<b>%1</b>引擎从列表中移除吗? - - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - 无可用 TTS 引擎。<br>请确保 TTS 引擎已正确安装在计算机上。 - - - - Preferences - 选项 - - - - Volume: - 音量: - - - - Rate: - 频率: - - - - TranslateBox - - - Type a word or phrase to search dictionaries - - - - - Drop-down - 下拉菜单 - - - - VoiceEnginesModel - - - Enabled - 已启用 - - - - Name - 名称 - - - - Id - Id - - - - Icon - 图标 - - - - WebSitesModel - - - Name - 名称 - - - - Address - 地址 - - - - Enabled - 已启用 - - - - Icon - 图标 - - - - WordFinder - - - Failed to query some dictionaries. - 在某些词典中进行查询时失败。 - - - - WordList - - - WARNING: %1 - 警告: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/zh_TW.ts b/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/zh_TW.ts deleted file mode 100644 index 75a6a0c243..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/locale/zh_TW.ts +++ /dev/null @@ -1,3899 +0,0 @@ - - - - - About - - About - 關於 - - - GoldenDict dictionary lookup program, version - GoldenDict 查字典程式,版本 - - - Licensed under GNU GPLv3 or later - 授權基於 GNU 公共授權 GPLv3 或更高版本 - - - Credits: - 致謝名單: - - - [Unknown] - [未知] - - - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - (c) 2008-2013 Konstantin Isakov (ikm@goldendict.org) - - - Based on Qt %1 (%2, %3 bit) - 基於 QT %1(%2, %3 bit) - - - - ArticleMaker - - Then just stop the cursor over the word you want to look up in another application, and a window would pop up which would describe it to you. - 然後只要將滑鼠游標停留在你想要進行查詢的單字上,程式就會在彈出式視窗中顯示釋義。 - - - <h3 align="center">Working with the popup</h3>To look up words from other active applications, you would need to first activate the <i>"Scan popup functionality"</i> in <b>Preferences</b>, and then enable it at any time either by triggering the 'Popup' icon above, or by clicking the tray icon down below with your right mouse button and choosing so in the menu you've popped. - <h3 align="center">使用螢幕取詞功能</h3><p style="text-indent:2em">如要從其它程式中直接抓詞查詢,請先在<b>偏好設定</b>中啟用「螢幕取詞功能」,接著按一下主視窗的「螢幕取詞」圖示,或在系統匣圖示上按右鍵,從選單中選定「螢幕取詞」以啟動此功能。 - - - No translation for <b>%1</b> was found in group <b>%2</b>. - 在 <b>%2</b> 群組中找不到 <b>%1</b> 的可用翻譯。 - - - Working with popup - 使用螢幕取詞功能 - - - (untitled) - (未命名) - - - Welcome! - 歡迎使用! - - - Then just select any word you want to look up in another application by your mouse (double-click it or swipe it with mouse with the button pressed), and a window would pop up which would describe the word to you. - 然後只要用滑鼠游標選定你要進行抓詞查詢的詞(按兩下單字或是用滑鼠拖拉選定),程式就會在彈出式視窗中顯示釋義。 - - - No translation was found in group <b>%1</b>. - 在 <b>%1</b> 群組中找不到可用的翻譯。 - - - <h3 align="center">Welcome to <b>GoldenDict</b>!</h3><p>To start working with the program, first visit <b>Edit|Dictionaries</b> to add some directory paths where to search for the dictionary files, set up various Wikipedia sites or other sources, adjust dictionary order or create dictionary groups.<p>And then you're ready to look up your words! You can do that in this window by using a pane to the left, or you can <a href="Working with popup">look up words from other active applications</a>. <p>To customize program, check out the available preferences at <b>Edit|Preferences</b>. All settings there have tooltips, be sure to read them if you are in doubt about anything.<p>Should you need further help, have any questions, suggestions or just wonder what the others think, you are welcome at the program's <a href="http://goldendict.org/forum/">forum</a>.<p>Check program's <a href="http://goldendict.org/">website</a> for the updates. <p>(c) 2008-2013 Konstantin Isakov. Licensed under GPLv3 or later. - <h3 align="center">歡迎使用 <b>GoldenDict</b> 查字典程式!</h3><p style="text-indent:2em">使用時請首先開啟<b>編輯 | 字典</b>功能表以新增並掃描含有字典檔案的資料夾,然後新增維基百科網站查詢或其它資源,再調整字典排序或建立新的字典群組。<p style="text-indent:2em">這些設定都完成以後,就可以開始使用了。你可以使用左側的查詢面板,或是<a href="使用螢幕取詞功能">直接從其它程式中抓詞查詢</a>。<p style="text-indent:2em">如需自訂本程式,可以在<b>編輯 | 偏好設定</b>功能表中檢視可用的設定。所有的設定都有滑鼠游標提示資訊,如果有不明之處,請看一下提示。<p style="text-indent:2em">如果你需要更多說明、有任何疑問、建議,或是想了解其他人的想法,歡迎拜訪此程式的<a href="http://goldendict.org/forum/">官方論壇</a>。<p style="text-indent:2em">如需要取得程式更新,歡迎拜訪此程式的<a href="http://goldendict.org/">官方網站</a>。<p style="text-indent:2em">(c) 2008-2013 Konstantin Isakov. 授權基於 GPLv3 或更高版本。 - - - (picture) - (圖片) - - - Expand article - 展開條目 - - - Collapse article - 收縮條目 - - - - ArticleRequest - - From - 來自 - - - Query error: %1 - 查詢錯誤:%1 - - - Close words: - 相近詞條: - - - Compound expressions: - 複合片語: - - - Individual words: - 單個詞彙: - - - Expand article - 展開條目 - - - Collapse article - 收縮條目 - - - - ArticleView - - x - x - - - Form - 表單 - - - Failed to run a player to play sound file: %1 - 沒有可用的播放器,無法開啟音訊檔案:%1 - - - &Next - 後一個(&N) - - - Find: - 尋找: - - - The referenced resource failed to download. - 所引用的資源下載失敗。 - - - Failed to create temporary file. - 建立暫存檔失敗。 - - - Ctrl+G - Ctrl+G - - - &Look up "%1" - 尋找 "%1"(&L) - - - about:blank - about:blank - - - &Previous - 前一個(&P) - - - Look up "%1" in &New Tab - 在新分頁中尋找 "%1"(&N) - - - GoldenDict - GoldenDict - - - The referenced resource doesn't exist. - 所引用的資源不存在。 - - - &Open Link - 開啟連結(&O) - - - &Case Sensitive - 大小寫視為相異(&C) - - - Failed to auto-open resource file, try opening manually: %1. - 自動開啟資源檔時失敗,請嘗試手動開啟:%1. - - - Look up "%1" in %2 - 在 %2 中尋找 "%1" - - - Look up "%1" in %2 in &New Tab - 在 %2 中尋找 "%1" 並使用新分頁(&N) - - - Open Link in New &Tab - 在新分頁中開啟連結(&T) - - - Open Link in &External Browser - 在外部瀏覽器中開啟連結(&E) - - - Playing a non-WAV file - 播放非 wav 檔案 - - - To enable playback of files different than WAV, please go to Edit|Preferences, choose the Audio tab and select "Play via DirectShow" there. - 要播放非 WAV 檔案,請進入 編輯|偏好設定,選取音訊標籤,選擇「透過 DirectShow 播放」。 - - - Highlight &all - 全部醒目提示(&a) - - - Resource - 資源 - - - Audio - 音訊 - - - Definition: %1 - 定義: %1 - - - The referenced audio program doesn't exist. - 引用的音訊程式不存在。 - - - WARNING: %1 - 警告: %1 - - - &Add "%1" to history - 將 "%1" 新增至歷史紀錄(&A) - - - Definition from dictionary "%1": %2 - 字典 "%1" 的定義: %2 - - - Send "%1" to input line - 把 "%1" 傳送到輸入列 - - - Picture - 圖片 - - - Select Current Article - 選擇目前條目 - - - ERROR: %1 - 錯誤:%1 - - - Save sound - 儲存發音 - - - Sound files (*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;All files (*.*) - 發音檔(*.wav *.ogg *.mp3 *.mp4 *.aac *.flac *.mid *.wv *.ape);;所有檔案 (*.*) - - - Save image - 儲存圖片 - - - Image files (*.bmp *.jpg *.png *.tif);;All files (*.*) - 圖片檔(*.bmp *.jpg *.png *.tif);;所有檔案 (*.*) - - - Save &image... - 儲存圖片...(&i) - - - Save s&ound... - 儲存發音...(&o) - - - TTS Voice - 文字轉語音聲音 - - - WARNING: FFmpeg Audio Player: %1 - 警告: FFmpeg 音訊撥放程式: %1 - - - Copy as text - 以純文字複製 - - - Inspect - 檢查原始碼 - - - Video - 影像 - - - Video: %1 - 影像: %1 - - - - BelarusianTranslit - - Belarusian transliteration from latin to cyrillic (classic orthography) - 白俄羅斯語轉寫──拉丁文至斯拉夫字母(傳統正字法) - - - Belarusian transliteration from latin to cyrillic (school orthography) - 白俄羅斯語轉寫──拉丁文至斯拉夫字母(學院正字法) - - - Belarusian transliteration (smoothes out the difference -between classic and school orthography in cyrillic) - 白俄羅斯語轉寫(消弭傳統正字法和學院正字法之間的差異) - - - - ChineseConversion - - GroupBox - - - - Enable conversion between simplified and traditional Chinese characters - - - - Chinese Con&version - - - - Enable conversion from simplified characters to traditional (Taiwan variant) characters - - - - SC to TC (Taiwan variant) - - - - Enable conversion from simplified characters to traditional (Hong Kong variant) characters - - - - SC to TC (Hong Kong variant) - - - - Enable conversion from traditional characters to simplified characters - - - - TC to SC - - - - Simplified to traditional Chinese (Taiwan variant) conversion - - - - Simplified to traditional Chinese (Hong Kong variant) conversion - - - - Traditional to simplified Chinese conversion - - - - - Dialog - - Proxy authentication required - 必須提供代理伺服器的驗證 - - - You need to supply a Username and a Password to access via proxy - 如果你要透過代理伺服器來存取,需要提供用戶名和密碼 - - - Username: - 用戶名: - - - Password: - 密碼: - - - - DictGroupWidget - - Form - 表單 - - - Group icon: - 群組圖示: - - - Shortcut: - 快速鍵: - - - None - 無 - - - From file... - 來自檔案... - - - Choose a file to use as group icon - 選擇一個檔案作為群組圖示 - - - Images - 影像 - - - All files - 所有檔案 - - - Error - 錯誤 - - - Can't read the specified image file. - 無法讀取指定的影像檔案。 - - - - DictGroupsWidget - - Confirmation - 確定 - - - Are you sure you want to generate a set of groups based on language pairs? - 你確定要產生基於語言配對的群組嗎? - - - Dictionaries: - 字典: - - - Combine groups by source language to "%1->" - 依來源語言合併分組至 "%1->" - - - Combine groups by target language to "->%1" - 依目標語言合併分組至 "->%1" - - - Make two-side translate group "%1-%2-%1" - 製作雙向翻譯組 "%1-%2-%1" - - - Combine groups with "%1" - 與 "%1" 合併分組 - - - Unassigned - 未指定 - - - - DictHeadwords - - Search mode - 搜尋模式 - - - This element determines how filter string will be interpreted - 此部份決定如何解釋欲篩選的字串 - - - If checked on the symbols case will be take in account when filtering - 勾選後,大小寫就會視為不同 - - - Match case - 符合大小寫 - - - Exports headwords to file - 將標題字匯出至檔案 - - - Export - 匯出 - - - OK - OK - - - Press this button to apply filter to headwords list - 按下此按鈕,將篩選器套用至標題字列表 - - - Apply - 套用 - - - If checked any filter changes will we immediately applied to headwords list - 假如勾選的話,如果篩選器有任何變動,都會立即套用至標題字列表 - - - Auto apply - 自動套用 - - - Filter: - 篩選器: - - - Filter string (fixed string, wildcards or regular expression) - 篩選字串(固定字串、萬用字元或正規表達式) - - - Text - 文字 - - - Wildcards - 萬用字元 - - - RegExp - 正規表達式 - - - Unique headwords total: %1, filtered: %2 - 獨特標題字總數: %1,已篩選: %2 - - - Save headwords to file - 將標題字儲存成檔案 - - - Text files (*.txt);;All files (*.*) - 文字檔 (*.txt);;所有檔案 (*.*) - - - Export headwords... - 匯出標題字... - - - Cancel - 取消 - - - Help - - - - - DictInfo - - Total articles: - 條目總數: - - - Translates from: - 翻譯自: - - - Total words: - 總字數: - - - Translates to: - 翻譯至: - - - Files comprising this dictionary: - 此字典包含的檔案: - - - Description: - 描述: - - - Open folder - 打開資料夾 - - - Edit dictionary - 編輯字典 - - - Edit the dictionary via command: -%1 - 以指令編輯字典: -%1 - - - Show all unique dictionary headwords - 顯示所有獨特的字典標題字 - - - Headwords - 標題字 - - - - DictListModel - - %1 entries - %1 條記錄 - - - - DictServer - - Url: - Url: - - - Databases: - 資料庫: - - - Search strategies: - 搜尋策略: - - - Server databases - - - - - DictServersModel - - Enabled - 已啟用 - - - Name - 名稱 - - - Address - 位址 - - - Databases - 資料庫 - - - Icon - 圖示 - - - Comma-delimited list of databases -(empty string or "*" matches all databases) - 資料庫的逗號分隔列表 -(空字串或"*"複合所有的資料庫) - - - Strategies - 策略 - - - Comma-delimited list of search strategies -(empty string mean "prefix" strategy) - 搜尋策略的的逗號分隔列表 -(空字串代表 "prefix" 策略) - - - - DictionaryBar - - Dictionary Bar - 字典欄 - - - Edit this group - 編輯此群組 - - - Dictionary info - 字典資訊 - - - Edit dictionary - 編輯字典 - - - &Dictionary Bar - 字典欄(&D) - - - Open dictionary folder - 打開字典資料夾 - - - Extended menu with all dictionaries... - 展開所有字典的選單... - - - Dictionary headwords - 字典標頭 - - - - EditDictionaries - - &Dictionaries - 字典(&D) - - - Dictionaries - 字典 - - - Accept - 接受 - - - Cancel - 取消 - - - Sources changed - 字典檔案所在資料夾已變更 - - - &Sources - 字典來源(&S) - - - &Groups - 群組(&G) - - - Some sources were changed. Would you like to accept the changes? - 某些字典檔案的所在資料夾已變更,是否接受變更? - - - - ExternalViewer - - the viewer program name is empty - 檢視程式的名稱是空白的 - - - - FTS::FtsIndexing - - None - 無 - - - - FTS::FullTextSearchDialog - - Full-text search - 全文搜尋 - - - Whole words - 全字(Whoe words) - - - Plain text - 純文字 - - - Wildcards - 萬用字元 - - - RegExp - 正規表達式 - - - Max distance between words (%1-%2): - 文字間最大距離 (%1-%2) - - - Max articles per dictionary (%1-%2): - 每個字典的條目上限(%1-%2): - - - Articles found: - 找到的條目: - - - Now indexing: - 索引中: - - - The search line must contains at least one word containing - 搜尋列至少必須包括 - - - or more symbols - 或更多文字 - - - No dictionaries for full-text search - 沒有字典可用於全文搜尋 - - - CJK symbols in search string are not compatible with search modes "Whole words" and "Plain text" - 搜尋的字串中,如果有中日韓(CJK)字母,就無法相容"全字(Whole words)" 和 "純文字"的搜尋模式 - - - None - 無 - - - - FTS::Indexing - - None - 無 - - - - Forvo::ForvoArticleRequest - - XML parse error: %1 at %2,%3 - XML 語法錯誤:%1 於 %2, %3 - - - Added %1 - 新增 %1 - - - by - 由 - - - Male - 男 - - - Female - 女 - - - from - 來自 - - - Go to Edit|Dictionaries|Sources|Forvo and apply for our own API key to make this error disappear. - 進入 編輯|字典|字典來源|Forvo, 申請自己的 API-key 來消除此錯誤。 - - - - FullTextSearchDialog - - Search - 搜尋 - - - Match case - 符合大小寫 - - - Mode: - 模式: - - - Articles found: - 找到條目: - - - Available dictionaries in group: - 群組中可用的字典: - - - Wait for indexing: - 等候索引: - - - Total: - 總共: - - - Indexed: - 已索引: - - - Now indexing: None - 正在索引:無 - - - Cancel - 取消 - - - Help - - - - - GermanTranslit - - German Transliteration - 德文轉寫 - - - - GreekTranslit - - Greek Transliteration - 希臘文轉寫 - - - - GroupComboBox - - Choose a Group (Alt+G) - 選擇一個群組(Alt+G) - - - - GroupSelectorWidget - - Form - 表單 - - - Look in - 尋找於 - - - - Groups - - < - < - - - > - > - - - Del - Del - - - Ins - Ins - - - Tab 2 - 分頁 2 - - - Are you sure you want to remove all the groups? - 確定移除全部群組嗎? - - - Are you sure you want to remove the group <b>%1</b>? - 確定要移除<b>%1</b>群組嗎? - - - Remove group - 移除群組 - - - Rename group - 重新命名群組 - - - Give a new name for the group: - 為群組起一個新名字: - - - Dictionaries available: - 可用字典: - - - &Add group - 新增群組(&A) - - - Add group - 新增群組 - - - Create new dictionary group - 建立新的字典群組 - - - Drag&drop dictionaries to and from the groups, move them inside the groups, reorder the groups using your mouse. - 可以用滑鼠拖曳字典以改變其群組設定或排序(&D)。 - - - Rename current dictionary group - 重新命名當前字典群組 - - - Remove current dictionary group - 移除字典群組 - - - Give a name for the new group: - 為新群組命名: - - - Remove all groups - 移除全部群組 - - - Remove selected dictionaries from group (Del) - 將所選字典從群組中移除(Del) - - - Add selected dictionaries to group (Ins) - 將所選字典新增進群組(Ins) - - - &Remove group - 移除群組(&R) - - - Groups: - 群組: - - - Re&name group - 重新命名群組(&N) - - - Remove all dictionary groups - 移除全部字典群組 - - - Create language-based groups - 建立基於語言的群組 - - - Auto groups - 自動分組 - - - Group tabs - 群組分頁 - - - Open groups list - 打開字典群組列表 - - - - Help::HelpWindow - - GoldenDict help - - - - Home - - - - Back - - - - Forward - - - - Zoom In - 放大 - - - Zoom Out - 縮小 - - - Normal Size - 正常大小 - - - Content - - - - Index - - - - - HistoryPaneWidget - - &Delete Selected - 刪除選擇的部分(&D) - - - Copy Selected - 複製選擇的部分 - - - History: - 歷史紀錄: - - - %1/%2 - %1/%2 - - - History size: %1 entries out of maximum %2 - 歷史紀錄的大小: %1 個條目,最多 %2 個 - - - - Hunspell - - Spelling suggestions: - 拼字建議: - - - %1 Morphology - %1 構詞法 - - - - HunspellDictsModel - - Name - 名稱 - - - Enabled - 已啟用 - - - - Initializing - - Dictionary Name - 字典名稱 - - - GoldenDict - Initializing - 初始化 GoldenDict - - - Please wait while indexing dictionary - 正在索引字典,請稍候 - - - Please wait... - 請稍候... - - - - Language - - Ewe - 埃維語 - - - Ido - 伊多語 - - - Lao - 寮國語 - - - Twi - 維特語(迦納) - - - Afar - 阿法爾語 - - - Akan - 阿肯語 - - - Cree - 克里語 - - - Igbo - 伊博語 - - - Komi - 科米語 - - - Manx - 曼島語 - - - Pali - 巴利語 - - - Thai - 泰文 - - - Urdu - 烏爾都語 - - - Zulu - 祖魯語 - - - Czech - 捷克文 - - - Dutch - 荷蘭文 - - - Ganda - 盧甘達語 - - - Fulah - 富拉語 - - - Greek - 希臘文 - - - Hausa - 豪薩語 - - - Hindi - 印地語 - - - Irish - 愛爾蘭文 - - - Khmer - 高棉語(柬埔寨語) - - - Kongo - 剛果語 - - - Latin - 拉丁文 - - - Malay - 馬來文 - - - Maori - 毛利語 - - - Nauru - 諾魯語 - - - Oriya - 奧裡亞語 - - - Oromo - 奧洛莫語 - - - Sango - 桑戈語 - - - Shona - 紹納語 - - - Tajik - 塔吉克語 - - - Tamil - 泰米爾語 - - - Tatar - 韃靼文 - - - Swati - 斯瓦特語 - - - Tonga - 東加語 - - - Inupiaq - 伊努庇克語 - - - Venda - 文達語 - - - Uzbek - 烏茲別克語 - - - Welsh - 威爾士語 - - - Wolof - 沃洛夫語 - - - Xhosa - 科薩語 - - - Italian - 義大利文 - - - Raeto-Romance - 羅曼斯語 - - - Dzongkha - 宗喀語(不丹文) - - - Kannada - 卡納達語 - - - North Ndebele - 北恩德貝勒語 - - - Abkhazian - 阿布哈西亞語 - - - Kirghiz - 吉爾吉斯語 - - - Kirundi - 科隆地語 - - - Scottish Gaelic - 蘇格蘭語 - - - Albanian - 阿爾巴尼亞文 - - - Latvian - 拉脫維亞文 - - - Malayalam - 馬拉雅拉姆語 - - - Kurdish - 庫爾德文 - - - Bulgarian - 保加利亞文 - - - Lingala - 林加拉語 - - - Maltese - 馬爾他語 - - - Marathi - 馬拉地語 - - - Arabic - 阿拉伯文 - - - Basque - 巴斯克文 - - - Avaric - 阿瓦爾語 - - - Bihari - 比哈爾語 - - - Aymara - 艾馬拉語 - - - Breton - 布列塔尼語 - - - Sundanese - 巽他語 - - - Danish - 丹麥文 - - - Divehi - 迪維希語 - - - Luba-Katanga - 盧巴卡丹加語 - - - Fijian - 斐濟語 - - - Hungarian - 匈牙利文 - - - French - 法文 - - - German - 德文 - - - Mongolian - 蒙古文 - - - Hebrew - 希伯來文 - - - Herero - 赫雷羅語 - - - Luxembourgish - 盧森堡語 - - - Kanuri - 卡努裡語 - - - Kazakh - 哈薩克語 - - - Kikuyu - 基庫尤語 - - - Korean - 韓國語(韓文) - - - Navajo - 納瓦霍語 - - - Ndonga - 恩敦加語 - - - Nepali - 尼泊爾文 - - - Ojibwa - 奧吉布瓦語 - - - Pashto - 普什圖語 - - - Polish - 波蘭文 - - - Samoan - 薩摩亞語 - - - Occitan - 奧西坦語 - - - Sindhi - 信德文 - - - Slovak - 斯洛伐克文 - - - Somali - 索馬利亞語 - - - Telugu - 泰盧固語 - - - Tsonga - 頌加語 - - - Tswana - 茨瓦納語 - - - Uighur - 維吾爾語 - - - Serbo-Croatian - 塞爾維亞-克羅埃西亞語 - - - Yoruba - 約魯巴語 - - - Zhuang - 壯語 - - - Romanian - 羅馬尼亞文 - - - Indonesian - 印度尼西亞語 - - - Panjabi - 旁遮普語 - - - Southern Sotho - 梭托語 - - - Corsican - 科西嘉語 - - - Esperanto - 世界語 - - - Persian - 波斯文 - - - Slovenian - 斯洛維尼亞語 - - - Western Frisian - 西弗裡西語 - - - Aragonese - 阿拉貢語 - - - Tahitian - 塔希提語 - - - Malagasy - 馬達加斯加語 - - - Galician - 加利西亞語 - - - Azerbaijani - 亞塞拜然語 - - - Amharic - 阿姆哈拉語 - - - Sanskrit - 梵語 - - - Japanese - 日文 - - - Ukrainian - 烏克蘭文 - - - Bambara - 班巴拉語 - - - Kalaallisut - 格陵蘭語 - - - Bashkir - 巴什基爾語 - - - Belarusian - 白俄羅斯語 - - - Kashmiri - 克什米爾語 - - - Sardinian - 撒丁語 - - - Hiri Motu - 希里莫圖語 - - - Quechua - 科察語 - - - Bengali - 孟加拉文 - - - Javanese - 爪哇語 - - - Avestan - 阿維斯陀語 - - - Kinyarwanda - 盧安達語 - - - Afrikaans - 南非語 - - - Bislama - 比斯拉馬語 - - - Armenian - 亞美尼亞文 - - - Norwegian Bokmal - 波克默爾語(挪威) - - - Croatian - 克羅埃西亞語 - - - Bosnian - 波士尼亞語 - - - Interlingua - 國際語 - - - Interlingue - 西方國際語 - - - Catalan - 加泰羅尼亞文 - - - Serbian - 塞爾維亞文 - - - Burmese - 緬甸文 - - - Russian - 俄文 - - - Limburgish - 林堡語 - - - Norwegian - 挪威文 - - - Chechen - 車臣語 - - - Chinese - 中文 - - - Chuvash - 楚瓦什語 - - - Sinhala - 僧加羅語 - - - Spanish - 西班牙文 - - - Cornish - 凱爾特語 - - - Tagalog - 他加祿語(菲律賓) - - - Assamese - 阿薩姆語 - - - Ossetian - 奧塞梯語 - - - Estonian - 愛沙尼亞文 - - - Swahili - 斯瓦希里語 - - - Swedish - 瑞典文 - - - Tibetan - 西藏語 - - - Vietnamese - 越南文 - - - Macedonian - 馬其頓文 - - - Portuguese - 葡萄牙文 - - - Turkish - 土耳其文 - - - Turkmen - 土庫曼語 - - - Gujarati - 古吉拉特語 - - - Icelandic - 冰島文 - - - Inuktitut - 因紐特語 - - - English - 英文 - - - Georgian - 喬治亞語 - - - Church Slavic - 教會斯拉夫語 - - - Faroese - 法羅語 - - - Finnish - 芬蘭文 - - - Volapuk - 沃拉普克語 - - - Walloon - 華隆語 - - - Kwanyama - 寬亞瑪語 - - - Marshallese - 馬紹爾語 - - - Northern Sami - 北薩莫斯語 - - - Haitian - 海地語 - - - Chamorro - 查莫羅語 - - - Norwegian Nynorsk - 尼諾斯克語(挪威) - - - Guarani - 瓜拉尼語 - - - South Ndebele - 南恩德貝勒語 - - - Chichewa - 奇契瓦語 - - - Lithuanian - 立陶宛文 - - - Sichuan Yi - 四川彝語 - - - Tigrinya - 提格里尼亞語 - - - Yiddish - 意第緒語 - - - Traditional Chinese - 繁體中文 - - - Simplified Chinese - 簡體中文 - - - Other - 其他 - - - Other Simplified Chinese dialects - 其他簡體中文方言 - - - Other Traditional Chinese dialects - 其他繁體中文方言 - - - Other Eastern-European languages - 其他東歐語言 - - - Other Western-European languages - 其他西歐語言 - - - Other Russian languages - 其他俄羅斯文 - - - Other Japanese languages - 其他日文 - - - Other Baltic languages - 其他波羅的海語言 - - - Other Greek languages - 其他希臘文 - - - Other Korean dialects - 其他韓文方言 - - - Other Turkish dialects - 其他土耳其方言 - - - Other Thai dialects - 其他泰文方言 - - - Tamazight - 塔馬齊格特語 - - - Lojban - 邏輯語 - - - - LoadDictionaries - - Error loading dictionaries - 讀取字典時出錯 - - - - Main - - Error in configuration file. Continue with default settings? - 設定檔有問題,要使用預設的設定嗎? - - - - MainWindow - - F1 - F1 - - - F2 - F2 - - - F3 - F3 - - - F4 - F4 - - - All - 全部 - - - Back - 回退 - - - Print Preview - 列印預覽 - - - %1 dictionaries, %2 articles, %3 words - 字典數:%1,條目數:%2,單字數:%3 - - - &Edit - 編輯(&E) - - - &File - 檔案(&F) - - - &Help - 說明(&H) - - - &Quit - 結束(&Q) - - - Error - 錯誤 - - - Scan Popup - 螢幕取詞 - - - Quit from application - 結束程式 - - - &Close To Tray - 關閉至系統匣(&C) - - - Can't save article: %1 - 無法儲存條目:%1 - - - Zoom In - 放大 - - - &Dictionaries... - 字典...(&D) - - - &About - 關於(&A) - - - &Forum - 論壇(&F) - - - &Print - 列印(&P) - - - &Save Article - 儲存條目(&S) - - - Save Article As - 條目另存新檔 - - - Ctrl+P - Ctrl+P - - - Ctrl+Q - Ctrl+Q - - - Minimizes the window to tray - 最小化視窗至系統匣 - - - Rescan Files - 重新掃描檔案 - - - Page Set&up - 頁面設定(&U) - - - &Homepage - 首頁(&H) - - - New Release Available - 有新版本可用 - - - Look up: - 尋找: - - - Zoom Out - 縮小 - - - &Groups... - 群組...(&G) - - - Show &Main Window - 顯示主視窗(&M) - - - About GoldenDict - 關於 GoldenDict - - - Download - 下載 - - - Page Setup - 頁面設定 - - - Look up in: - 尋找於: - - - Normal Size - 正常大小 - - - Failed to initialize hotkeys monitoring mechanism.<br>Make sure your XServer has RECORD extension turned on. - 初始化熱鍵監視機制失敗。<br>請確保你的 XServer 已啟用 RECORD 延伸。 - - - Version <b>%1</b> of GoldenDict is now available for download.<br>Click <b>Download</b> to get to the download page. - 有新版 GoldenDict 可用,版本為 <b>%1</b>。<br> -按<b>下載</b>,開啟下載頁面。 - - - Search Pane - 查詢面板 - - - Ctrl+F4 - Ctrl+F4 - - - Ctrl+F5 - Ctrl+F5 - - - GoldenDict - GoldenDict - - - Loading... - 載入中 - - - - - (untitled) - (未命名) - - - &Preferences... - 偏好設定...(&P) - - - Html files (*.html *.htm) - Html 檔案(*.html *.htm) - - - Welcome! - 歡迎使用! - - - Pronounce Word (Alt+S) - 朗讀詞條(Alt+S) - - - Save Article - 儲存條目 - - - Skip This Release - 略過此次升級 - - - Forward - 前進 - - - WARNING: %1 - 警告: %1 - - - Print Article - 列印條目 - - - No printer is available. Please install one first. - 找不到可用的印表機,請先安裝一個印表機。 - - - Navigation - 導航列 - - - &View - 檢視(&V) - - - Show Names in Dictionary Bar - 在字典欄中顯示字典名稱 - - - H&istory - 歷史(&I) - - - &Clear - 清除(&C) - - - &Zoom - 縮放(&Z) - - - Words Zoom In - 單字清單 - 放大 - - - Words Zoom Out - 單字清單 - 縮小 - - - Words Normal Size - 單字清單 - 正常大小 - - - Close current tab - 關閉當前分頁 - - - Close all tabs - 關閉所有分頁 - - - Close all tabs except current - 關閉其它分頁 - - - Opened tabs - 已開啟的分頁 - - - New Tab - 新分頁 - - - Ctrl+T - Ctrl+T - - - &Configuration Folder - 設定檔資料夾(&C) - - - &Menubar - 選單列(&M) - - - Found in Dictionaries: - 在下列字典中找到: - - - Open Tabs List - 打開分頁列表 - - - %1 - %2 - %1 - %2 - - - You have chosen to hide a menubar. Use %1 to show it back. - 您已隱藏選單列,可使用 %1 來顯示選單列。 - - - Ctrl+M - Ctrl+M - - - &Show - 顯示(&S) - - - &Export - 匯出(&E) - - - &Hide - 隱藏(&H) - - - Export history to file - 匯出歷史紀錄 - - - Text files (*.txt);;All files (*.*) - 文字檔 (*.txt);;所有檔案 (*.*) - - - History export complete - 成功匯出歷史紀錄 - - - Export error: - 匯出失敗: - - - Ctrl+H - Ctrl+H - - - &Import - 匯入(&I) - - - Import history from file - 匯入歷史紀錄 - - - Import error: invalid data in file - 匯入失敗: 檔案中無效的日期 - - - History import complete - 成功匯入歷史紀錄 - - - Import error: - 匯入失敗: - - - Dictionary info - 字典資訊 - - - Edit dictionary - 編輯字典 - - - &Search Pane - 搜尋列(&S) - - - &Results Navigation Pane - 結果導覽列(&R) - - - Print Pre&view - 預覽列印(&v) - - - &Rescan Files - 重新掃描檔案(&R) - - - &New Tab - 新分頁(&N) - - - &Always on Top - 最上層顯示(&A) - - - Always on Top - 最上層顯示 - - - Ctrl+O - Ctrl+O - - - Menu Button - 選單按鈕 - - - Show Names in Dictionary &Bar - 在字典列中顯示字典名稱(&B) - - - Show Small Icons in &Toolbars - 在工具列中顯示小圖示(&T) - - - &Navigation - 導覽(&N) - - - The main window is set to be always on top. - 主視窗設定為最上層顯示。 - - - &History Pane - 歷史紀錄(&H) - - - Accessibility API is not enabled - 未啟用協助存取 API - - - Article, Complete (*.html) - 條目,完整 (*.html) - - - Article, HTML Only (*.html) - 條目,僅HTML部分 (*.html) - - - Saving article... - 儲存條目... - - - Open dictionary folder - 打開字典資料夾 - - - Dictionary headwords - 字典標頭 - - - String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed. -To find '*', '?', '[', ']' symbols use '\*', '\?', '\[', '\]' respectively - 欲搜尋的字串。可使用萬用字元 '*','?' 和字元集合'[...]'。 -若想尋找'*'、'?'、'['、']'等符號,請分別使用 '*'、'?'、'['、']' - - - Search - 搜尋 - - - Search in page - 在頁面中尋找 - - - Ctrl+F - Ctrl+F - - - Full-text search - 全文搜尋 - - - Ctrl+Shift+F - Ctrl+Shift+F - - - GoldenDict reference - - - - Now indexing for full-text search: - - - - - Mdx::MdxArticleRequest - - Dictionary file was tampered or corrupted - 字典檔案已遭竄改或已損壞 - - - Failed loading article from %1, reason: %2 - 從 %1 讀取條目時失敗,原因是: %2 - - - - MediaWiki::MediaWikiArticleRequest - - XML parse error: %1 at %2,%3 - XML 語法錯誤:%1 於 %2, %3 - - - - MediaWiki::MediaWikiWordSearchRequest - - XML parse error: %1 at %2,%3 - XML 語法錯誤:%1 於 %2, %3 - - - - MediaWikisModel - - Name - 名稱 - - - Address - 位址 - - - Enabled - 已啟用 - - - Icon - 圖示 - - - - OrderAndProps - - ... - ... - - - Form - 表單 - - - Inactive (disabled) dictionaries: - 未啟用(已禁用)的字典: - - - Name: - 名稱: - - - Total articles: - 條目總數: - - - Translates from: - 詞條語言: - - - Translates to: - 釋義語言: - - - Total words: - 詞條總數: - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - 可以透過拖曳改變項目的排序。將字典放入未啟用的群組以禁用。 - - - Dictionary order: - 字典排序: - - - Files comprising this dictionary: - 此字典包含的檔案: - - - Dictionary information - 字典資訊 - - - Description: - 描述 - - - Sort by name - 依名稱排序 - - - Sort by languages - 依語言排序 - - - Dictionary headwords - 字典標頭 - - - Dictionaries active: %1, inactive: %2 - - - - - PathsModel - - Path - 路徑 - - - Recursive - 遞迴搜尋 - - - - Preferences - - Alt - Alt - - - Start to system tray - 啟動至系統匣 - - - Left Shift only - 僅限左 Shift - - - Ctrl - Ctrl - - - secs - 秒 - - - Win/Meta - Win/Meta - - - Enable system tray icon - 啟用系統匣圖示 - - - Host: - 主機: - - - Port: - 連接埠: - - - Shift - Shift - - - Type: - 類型: - - - User: - 使用者名稱: - - - &Scan Popup - 螢幕取詞(&S) - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - 在正常情況下,會自動跳到開啟的新分頁。 -啟用此選項後,不會自動跳至開啟的新分頁。 - - - Use proxy server - 使用Proxy伺服器 - - - Use the following hotkey to translate a word from clipboard: - 使用下列熱鍵翻譯剪貼簿中的單字: - - - Windows key or Meta key - Windows 鍵或 Meta 鍵 - - - Only show popup when all selected keys are kept pressed: - 僅在按住下列特定的按鍵時螢幕取詞才會啟動: - - - Auto-pronounce words in main window - 自動朗讀主視窗中的單字 - - - Start with system - 隨系統啟動 - - - Left Alt only - 僅限左 Alt - - - Tabbed browsing - 分頁瀏覽 - - - Right Shift only - 僅限右 Shift - - - With this on, an attempt to close main window would hide it instead of closing -the application. - 啟用此選項,關閉視窗將使程式最小化至系統匣, -而不是結束程式。 - - - &Audio - 音訊(&A) - - - Enable if you wish to use a proxy server -for all program's network requests. - 如果你希望透過Proxy伺服器執行程式的網路查 -詢功能,啟用此選項。 - - - Interface language: - 介面語言: - - - Left Ctrl only - 僅限左 Ctrl - - - Open new tabs in background - 在背景開啟新分頁 - - - &Network - 網路(&N) - - - Right Ctrl only - 僅限右 Ctrl - - - Lingvo - Lingvo - - - Right Shift - 右 Shift - - - Left Shift - 左 Shift - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - 啟用後,螢幕取詞視窗只有在按住特定按鍵時才會彈出。 - - - Display style: - 顯示風格: - - - Auto-pronounce words in scan popup - 自動朗讀螢幕取詞彈出視窗中的單字 - - - Enable scan popup functionality - 啟用螢幕取詞功能 - - - Open new tabs after the current one - 在當前頁之後開啟新分頁 - - - Restart the program to apply the language change. - 變更介面語言需要重新啟動程式才能生效。 - - - Alt key - Alt 鍵 - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - 啟用後,用滑鼠游標指向一個單字(Windows下),或是 -選定一個單字(Linux下)的時候,都會出現一個彈出式 -視窗來顯示釋義。啟用此功能後,可以從主視窗或系統 -匣功能表中選擇是否啟動螢幕取詞功能。 - - - Check for new program releases periodically - 定期檢查更新的版本 - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - 開啟此選項,新分頁將會在當前頁面後開啟;不 -開啟此選項,新分頁將會自動新增到末尾。 - - - Close to system tray - 關閉至系統匣 - - - System default - 系統預設 - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - 啟用此選項,將會啟用系統匣圖示。 - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - 當啟用此選項時,程式將會自動檢查 GoldenDict 的可 -用更新。如有新版本,程式將會提醒使用者開啟下載 -頁面。 - - - Startup - 開機自動啟動 - - - Password: - 密碼: - - - Default - 預設 - - - &Interface - 介面(&I) - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - 為了防止誤按,僅僅在滑鼠選詞後的幾秒之內才會 -被監視。熱鍵監視的秒數可以在這裡設定。 - - - Changing Language - 變更介面語言 - - - Ctrl key - Ctr l鍵 - - - Use the following hotkey to show or hide the main window: - 使用下列熱鍵顯示或隱藏主視窗: - - - Left Alt - 左 Alt - - - Right Alt only - 僅限右 Alt - - - Preferences - 偏好設定 - - - Keys may also be pressed afterwards, within - 按鍵取詞容許的延遲時間: - - - Left Ctrl - 左 Ctrl - - - Right Alt - 右 Alt - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - 熱鍵均為全域鍵,只要 GoldenDict 在背景執行,熱鍵就可以在任何程式中使用。 - - - Right Ctrl - 右 Ctrl - - - Hotkeys - 熱鍵 - - - Start with scan popup turned on - 啟動程式時同時啟動螢幕取詞 - - - With this on, the application starts directly to system tray without showing -its main window. - 啟用此選項,程式啟動時將直接最小化至系統匣。 - - - Shift key - Shift 鍵 - - - Automatically starts GoldenDict after operation system bootup. - 開機自動啟動 GoldenDict. - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - 選擇是否預設啟用螢幕取詞模式。如果選用,程式啟動時將會自動啟用螢幕取詞功能。 - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - 通常,為了彈出螢幕取詞視窗,在選擇單字的同時需要一直 -按住選定的按鍵。啟用此選項後,只需在選擇單字以後指定 -的一小段時間內按下鍵即可。 - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:2em;"><span style=" color:#ff0000;">注意: 你正在執行的 X.Org XServer 版本 RECORD 延伸功能不能正常工作。GoldenDict 中的熱鍵可能因此而失效。問題的解決依賴於 xserver 自身的恢復。請參照如下連結: </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug 記錄</span></a><span style=" color:#ff0000;"> 並留下評論。</span></p></body></html> - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - 啟用此選項後,GoldenDict 將會阻擋你所瀏覽的站台中來自其它站台的 -內容(圖片、框架)以便封殺廣告。如果某些網站因此而出現錯誤,可以試著禁 -用此選項。 - - - Disallow loading content from other sites (hides most advertisements) - 禁止載入來自其它站台的內容(封殺廣告) - - - Pronunciation - 朗讀 - - - Playback - 播放 - - - Play via Phonon - 透過 Phonon 播放 - - - Use external program: - 使用外部程式播放: - - - Play via DirectShow - 透過 DirectShow 播放 - - - Double-click translates the word clicked - 按兩下翻譯詞條(在主介面中) - - - Use Windows native playback API. Limited to .wav files only, -but works very well. - 使用 Windows 原生 API 播放。僅支援 .wav 檔案,但穩定可靠。 - - - Play via Windows native API - 透過 Windows 原生 API 播放 - - - Play audio via Phonon framework. May be somewhat unstable, -but should support most audio file formats. - 透過 Phonon 框架播放音訊。有時不太穩定,但支援大多數音訊檔案格式。 - - - Use any external program to play audio files - 使用外部程式播放音訊檔案。 - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - 啟用此選項會使主視窗在只有一個分頁時隱藏分頁列。 - - - Hide single tab - 隱藏單一分頁 - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - 一般而言,按下 ESC 鍵會將游標移至翻譯列。啟用此選項後,按下 ESC 鍵會隱藏主視窗。 - - - ESC key hides main window - 使用 ESC 鍵隱藏主視窗 - - - Send translated word to main window instead of to show it in popup window - 將翻譯的文字傳送至主視窗,而非顯示在彈出式視窗中 - - - Send translated word to main window - 將翻譯傳送至主視窗 - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - 啟用此選項後才能聆聽需要 Flash 或其他網路擴充程式才能撥放的線上字典的發音。 -需先安裝擴充程式,本選項才能順利運作。 - - - Enable web plugins - 啟用網路擴充程式 - - - Ad&vanced - 進階設定(&v) - - - ScanPopup extra technologies - 額外的螢幕取詞技術 - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - 嘗試使用 IAccessibleEx 技術來取得滑鼠游標下的單字。 -本技術僅適用支援該技術的程式(如 Internet Explorer 9 )。 -若您不使用這類程式的話,就不須勾選此選項。 - - - Use &IAccessibleEx - 啟用 &IAccessibleEx - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - 嘗試使用 UI Automation 技術來取得滑鼠游標下的單字。 -本技術僅適用支援該技術的程式。 -若您不使用這類程式的話,就不須勾選此選項。 - - - Use &UIAutomation - 啟用 &UIAutomation - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - 嘗試使用特別的 GoldenDict 訊息來取得滑鼠游標下的單字。 -本技術僅適用支援該技術的程式。 -若您不使用這類程式的話,就不須勾選此選項。 - - - Use &GoldenDict message - 啟用 &GoldenDict 訊息 - - - Ctrl-Tab navigates tabs in MRU order - Ctrl-Tab 依照 MRU 順序瀏覽分頁 - - - Babylon - Babylon - - - History - 歷史紀錄 - - - Turn this option on to store history of the translated words - 啟用此選項以儲存查詢單字的歷史紀錄 - - - Store &history - 儲存歷史紀錄(&h) - - - Articles - 條目 - - - Turn this option on to always expand optional parts of articles - 啟用此選項以後會打開條目額外的部分 - - - Expand optional &parts - 展開額外的部分(&p) - - - Turn this option on if you want to select words by single mouse click - 啟用此選項後只要按一下滑鼠左鍵就可選擇單字 - - - Select word by single click - 按一下就選字 - - - Add-on style: - 擴充風格: - - - Specify the maximum number of entries to keep in history. - 設定歷史紀錄的最大條目數量。 - - - Maximum history size: - 歷史紀錄最大為: - - - History saving interval. If set to 0 history will be saved only during exit. - 多久一次儲存歷史紀錄。如果設定為 0 就代表只在離開時儲存。 - - - Save every - 每 - - - minutes - 分鐘儲存一次 - - - Modern - 現代 - - - Lingoes - Lingoes - - - Lingoes-Blue - Lingoes-Blue - - - Play audio files via FFmpeg(libav) and libao - 使用 FFmpeg(libav) 和 libao 播放音訊檔案。 - - - Use internal player - 使用內部播放器 - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - 有些網站會偵測 GoldenDict 的HTTP 標頭檔,所以阻擋其請求。 -啟用此選項能應付此問題。 - - - Do not identify GoldenDict in HTTP headers - 在 HTTP 標頭檔中不要顯示 GoldenDict - - - Select this option to automatic collapse big articles - 啟用此選項能自動收縮較長的條目 - - - Collapse articles more than - 收縮超過 - - - symbols - 個符號的條目 - - - Adjust this value to avoid huge context menus. - 調整此數值來避免超長的字典選單。 - - - Context menu dictionaries limit: - 內文選單的字典上限: - - - Articles longer than this size will be collapsed - 超過此大小的條目將被收縮 - - - System proxy - 系統的代理伺服器 - - - Custom proxy - 自訂代理伺服器 - - - Custom settings - 自訂設定 - - - Full-text search - 全文搜尋 - - - Allow full-text search for: - 允許下列的全文搜尋: - - - Don't search in dictionaries containing more than - 不要在超過 - - - articles (0 - unlimited) - 條項目的字典中尋找(0 - 不限) - - - Help language - - - - - ProgramTypeEditor - - Audio - 音訊 - - - Plain Text - 純文字 - - - Html - Html - - - Prefix Match - 前綴符合 - - - Unknown - 未知 - - - - Programs::RunInstance - - No program name was given. - 未提供程式名稱。 - - - The program has crashed. - 該程式已當掉。 - - - The program has returned exit code %1. - 該程式 returned exit code %1。 - - - - ProgramsModel - - Enabled - 已啟用 - - - Type - 類型 - - - Name - 名稱 - - - Command Line - 命令列 - - - Icon - 圖示 - - - - QObject - - Article loading error - 條目讀取失敗 - - - Article decoding error - 條目解碼失敗 - - - avformat_alloc_context() failed. - avformat_alloc_context() failed. - - - av_malloc() failed. - av_malloc() failed. - - - avio_alloc_context() failed. - avio_alloc_context() failed. - - - avformat_open_input() failed: %1. - avformat_open_input() failed: %1. - - - avformat_find_stream_info() failed: %1. - avformat_find_stream_info() failed: %1. - - - Could not find audio stream. - 找不到音訊串流。 - - - Codec [id: %1] not found. - 找不到 Codec [id: %1] - - - avcodec_open2() failed: %1. - avcodec_open2() failed: %1. - - - Cannot find usable audio output device. - 找不到可用的音訊輸出裝置。 - - - Unsupported sample format. - 不支援的樣本格式。 - - - ao_open_live() failed: - ao_open_live() failed: - - - No driver. - 沒有驅動程式。 - - - This driver is not a live output device. - 本驅動程式不是有效的輸出裝置。 - - - A valid option key has an invalid value. - A valid option key has an invalid value. - - - Cannot open the device: %1, channels: %2, rate: %3, bits: %4. - 無法開啟裝置: %1, 頻道: %2, rate: %3, bits: %4. - - - Unknown error. - 未知的錯誤。 - - - avcodec_alloc_frame() failed. - avcodec_alloc_frame() failed. - - - - QuickFilterLine - - Dictionary search/filter (Ctrl+F) - 字典搜尋/篩選(Ctrl+F) - - - Quick Search - 快速搜尋 - - - Clear Search - 清除搜尋 - - - - ResourceToSaveHandler - - ERROR: %1 - 錯誤: %1 - - - Resource saving error: - 資源儲存錯誤: - - - The referenced resource failed to download. - 所引用的資源下載失敗。 - - - - Romaji - - Hepburn Romaji for Katakana - 黑本式羅馬字(片假名) - - - Hepburn Romaji for Hiragana - 黑本式羅馬字(平假名) - - - - RussianTranslit - - Russian Transliteration - 俄文轉寫 - - - - ScanPopup - - ... - ... - - - word - 詞條 - - - Alt+M - Alt+M - - - Alt+S - Alt+S - - - Dialog - 對話方塊 - - - List Matches (Alt+M) - 列出符合條件的詞條(Alt+M) - - - Pronounce Word (Alt+S) - 單字發音(Alt+S) - - - Shows or hides the dictionary bar - 顯示或隱藏字典欄 - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - 使用此按鈕可以固定視窗,以便它能停留在螢幕上進行改變大小等相關視窗管理操作。 - - - Send word to main window (Alt+W) - 將單字傳送到主視窗 (Alt+W) - - - Alt+W - Alt+W - - - Back - 上一頁 - - - Forward - 下一頁 - - - GoldenDict - GoldenDict - - - %1 - %2 - %1 - %2 - - - - SoundDirsModel - - Name - 名稱 - - - Path - 路徑 - - - Icon - 圖示 - - - - Sources - - Files - 檔案 - - - Hiragana - 平假名 - - - Systems: - 方案: - - - Nihon-shiki - 日本式 - - - Alternatively, use %GD1251% for CP1251, %GDISO1% for ISO 8859-1. - 作為取代選項,使用 %GD1251% 代替 CP1251,%GDISO1% 代替 ISO 8859-1. - - - Remove site <b>%1</b> from the list? - 確定要將<b>%1</b>網站從清單中移除嗎? - - - Wikipedia - 維基百科 - - - Katakana Japanese syllabary - 日文的片假名 - - - Make dictionaries from bunches of audiofiles by adding paths here: - 如果要批量新增音訊檔案,請把路徑新增在這裡: - - - Remove directory <b>%1</b> from the list? - 確定要將<b>%1</b>資料夾從清單中移除嗎? - - - Japanese Romaji - 日文羅馬字 - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 以日本式為基礎,針對現代日文做了一些修改。 -標準化為 ISO 3602。 - -GoldenDict 尚不支援此方案。 - - - Wikipedia (MediaWiki) sites: - 維基百科(MediaWik)站台: - - - Sound Dirs - 音訊檔案資料夾 - - - The most widely used method of transcription of Japanese, -based on English phonology - 以英文語音學為基礎所建立的最常用日文轉寫方案 - - - Hiragana Japanese syllabary - 日文的平假名 - - - Transliteration - 轉寫 - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - 最常用的方案,跟假名系統一一對應。 -標準化 為ISO 3602。 - -GoldenDict 尚不支援此方案。 - - - Russian transliteration - 俄文轉寫 - - - Morphology - 構詞法規則庫 - - - &Change... - 變更...(&C) - - - Katakana - 片假名 - - - Path to a directory with Hunspell/Myspell dictionaries: - 儲存 Hunspell/Myspell 拼字檢查詞庫檔案的路徑: - - - Re&scan now - 重新掃描(&S) - - - German transliteration - 德文轉寫 - - - Any websites. A string %GDWORD% will be replaced with the query word: - 任意網站。%GDWORD% 字串將會被搜尋關鍵詞取代: - - - &Add... - 新增...(&A) - - - Choose a directory - 選擇資料夾 - - - &Remove - 移除(&R) - - - Websites - 網站 - - - Paths to search for the dictionary files: - 字典檔案所在資料夾: - - - Confirm removal - 確認移除 - - - Syllabaries: - 音節: - - - Available morphology dictionaries: - 可用的構詞法規則庫: - - - Enables to use the Latin alphabet to write the Japanese language - 啟用日文羅馬字轉寫 - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - 每個構詞法規則庫都會顯示為獨立的協助 -字典。拼字檢查和拼字建議需要使用這些 -構詞法規則庫,請將其新增至相應群組的 -最下面。 - - - Hepburn - 黑本式 - - - Kunrei-shiki - 訓令式 - - - Forvo - Forvo - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - 從 <a href="http://www.forvo.com/">forvo.com</a> 獲取即時發音。這個網站使得人們可以記錄並分享單字發音。你可以從 GoldenDict 中聽這些發音。 - - - Enable pronunciations from Forvo - 啟用來自 Forvo 的發音功能 - - - API Key: - API Key: - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - 當前,使用 Forvo 需要一個 API key。若此處空白將使用以後可能 -失效的預設 key,否則請在該網站註冊以獲取你自己的 key. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Get your own key <a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">here</span></a>, or leave blank to use the default one.</p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:2em;">從<a href="http://api.forvo.com/key/"><span style=" text-decoration: underline; color:#0057ae;">這裡</span></a>獲取屬於你的 key, 或是保持空白以使用預設 key.</p></td></tr></table></body></html> - - - Language codes (comma-separated): - 語言程式碼(用逗號分隔): - - - List of language codes you would like to have. Example: "en, ru". - 你所需要的語言程式碼清單。例如:"en, ru". - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - 語言程式碼的完整清單可以從<a href="http://www.forvo.com/languages-codes/">這裡</a>獲取。 - - - Greek transliteration - 希臘文轉寫 - - - (not available in portable version) - (免安裝版中不可用) - - - Programs - 程式 - - - Remove program <b>%1</b> from the list? - 將程式<b>%1</b> 從清單移除? - - - Belarusian transliteration - 白俄羅斯文轉寫 - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - 在<a href="http://api.forvo.com/key/">此</a>取得個人金鑰,或是留白以使用預設值。 - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - 此外,CP1251也可使用 %GD1251%, ISO 8859-1...ISO 8859-16 分別可使用 %GDISO1%...%GDISO16% -Big-5 使用%GDBIG5%,Big5-HKSCS 使用 %GDBIG5HKSCS% ,GBK 和 GB18030 使用 %GDGBK%,Shift-JIS 使用 %GDSHIFTJIS%。 - - - Text to Speech - 文字轉語音 - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - 可使用任何外部程式。字串 %GDWORD% 代表查詢的單字。若未輸入該字串(即:只輸入程式名而未輸入 %GDWORD%),則會用查詢的單字當作程式的標準輸入。 - - - DICT servers - Dict 伺服器 - - - DICT servers: - DICT 伺服器 - - - - StylesComboBox - - None - 無 - - - - TextToSpeechSource - - Selected voice engines: - 選擇音訊引擎: - - - &Add - 新增(&A) - - - &Remove - 移除(&R) - - - Preview - 預覽 - - - Available voice engines: - 可用的音訊引擎: - - - Text to be previewed: - 預覽的文字: - - - Type text to be previewed here. - 請在此輸入預覽的文字。 - - - &Preview - 預覽(&P) - - - No TTS voice available - 沒有可用的文字轉語音聲音 - - - Confirm removal - 確認移除 - - - Remove voice engine <b>%1</b> from the list? - 確定要將<b>%1</b>音訊引擎從清單中移除嗎? - - - Cannot find available TTS voice.<br>Please make sure that at least one TTS engine installed on your computer already. - 找不到可用的文字轉語音聲音。<br>請檢查您的電腦是否已經安裝文字轉語音引擎。 - - - Preferences - 偏好設定 - - - Volume: - 音量: - - - Rate: - 速度: - - - - TranslateBox - - Type a word or phrase to search dictionaries - 輸入單字或片語來查字典 - - - Drop-down - 下拉 - - - - VoiceEnginesModel - - Enabled - 已啟用 - - - Name - 名稱 - - - Id - Id - - - Icon - 圖示 - - - - WebSitesModel - - Name - 名稱 - - - Address - 位址 - - - Enabled - 已啟用 - - - Icon - 圖示 - - - - WordFinder - - Failed to query some dictionaries. - 在某些字典中進行查詢時失敗。 - - - - WordList - - WARNING: %1 - 警告: %1 - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lsa.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/lsa.cc deleted file mode 100644 index 1f2e692de6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lsa.cc +++ /dev/null @@ -1,645 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "lsa.hh" -#include "file.hh" -#include "iconv.hh" -#include "folding.hh" -#include "utf8.hh" -#include "btreeidx.hh" -#include "fsencoding.hh" -#include "audiolink.hh" -#include "gddebug.hh" - -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#define OV_EXCLUDE_STATIC_CALLBACKS -#include -#include -#include -#include -#include - -#include "qt4x5.hh" - -namespace Lsa { - -using std::string; -using gd::wstring; -using std::map; -using std::multimap; -using std::set; -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX( exInvalidData, "Invalid data encountered", Dictionary::Ex ) -DEF_EX( exFailedToOpenVorbisData, "Failed to open Vorbis data", Dictionary::Ex ) -DEF_EX( exFailedToSeekInVorbisData, "Failed to seek in Vorbis data", Dictionary::Ex ) -DEF_EX( exFailedToRetrieveVorbisInfo, "Failed to retrieve Vorbis info", Dictionary::Ex ) - -enum -{ - Signature = 0x5841534c, // LSAX on little-endian, XASL on big-endian - CurrentFormatVersion = 5 -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, BGLX - uint32_t formatVersion; // File format version, currently 1. - uint32_t soundsCount; // Total number of sounds, for informative purposes only - uint32_t vorbisOffset; // Offset of the vorbis file which contains all snds - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -string stripExtension( string const & str ) -{ - if ( str.size() > 3 && - ( strcasecmp( str.c_str() + ( str.size() - 4 ), ".wav" ) == 0 ) ) - return string( str, 0, str.size() - 4 ); - else - return str; -} - -struct Entry -{ - string name; - - uint32_t samplesLength; - uint32_t samplesOffset; -public: - - // Reads an entry from the file's current position - Entry( File::Class & f ); -}; - -Entry::Entry( File::Class & f ) -{ - bool firstEntry = ( f.tell() == 13 ); - // Read the entry's filename - size_t read = 0; - - vector< uint16_t > filenameBuffer( 64 ); - - for( ; ; ++read ) - { - if ( filenameBuffer.size() <= read ) - filenameBuffer.resize( read + 64 ); - - f.read( &filenameBuffer[ read ], 2 ); - - if ( filenameBuffer[ read ] == 0xD ) - { - if ( f.read< uint16_t >() != 0xA ) - throw exInvalidData(); - - // Filename ending marker - break; - } - } - - // Skip zero or ff, or just ff. - - if ( uint8_t x = f.read< uint8_t >() ) - { - if ( x != 0xFF ) - throw exInvalidData(); - } - else - if ( f.read< uint8_t >() != 0xFF ) - throw exInvalidData(); - - - if ( !firstEntry ) - { - // For all entries but the first one, read its offset in - // samples. - samplesOffset = f.read< uint32_t >(); - - if ( f.read< uint8_t >() != 0xFF ) - throw exInvalidData(); - } - else - samplesOffset = 0; - - // Read the size of the recording, in samples - samplesLength = f.read< uint32_t >(); - - name = Iconv::toUtf8( Iconv::Utf16Le, &filenameBuffer.front(), - read * sizeof( uint16_t ) ); -} - -class LsaDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - -public: - - LsaDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - virtual string getName() throw(); - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.soundsCount; } - - virtual unsigned long getWordCount() throw() - { return getArticleCount(); } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - -protected: - - virtual void loadIcon() throw(); -}; - -string LsaDictionary::getName() throw() -{ - string result = FsEncoding::basename( getDictionaryFilenames()[ 0 ] ); - - // Strip the extension - result.erase( result.rfind( '.' ) ); - - return result; -} - -LsaDictionary::LsaDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ) -{ - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); -} - -sptr< Dictionary::DataRequest > LsaDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - vector< WordArticleLink > chain = findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, string > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ); - - multimap< wstring, string > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( std::pair< wstring, string >( - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ), chain[ x ].word ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - return new Dictionary::DataRequestInstant( false ); // No such word - - string result; - - multimap< wstring, string >::const_iterator i; - - result += ""; - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - result += ""; - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( i->second.c_str() ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += ""; - result += ""; - result += ""; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - result += ""; - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( i->second.c_str() ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += ""; - result += ""; - result += ""; - } - - result += "
\"Play\"/" + i->second + "
\"Play\"/" + i->second + "
"; - - Dictionary::DataRequestInstant * ret = - new Dictionary::DataRequestInstant( true ); - - ret->getData().resize( result.size() ); - - memcpy( &(ret->getData().front()), result.data(), result.size() ); - - return ret; -} - -/// This wraps around file operations -struct ShiftedVorbis -{ - QFile & f; - size_t shift; - - ShiftedVorbis( QFile & f_, size_t shift_ ): f( f_ ), shift( shift_ ) - {} - - static size_t read( void * ptr, size_t size, size_t nmemb, void * datasource ); - static int seek( void * datasource, ogg_int64_t offset, int whence ); - static long tell( void * datasource ); - - static ov_callbacks callbacks; -}; - -size_t ShiftedVorbis::read( void * ptr, size_t size, size_t nmemb, - void * datasource ) -{ - ShiftedVorbis * sv = ( ShiftedVorbis * ) datasource; - - return sv->f.read( reinterpret_cast( ptr ), size * nmemb ); -} - -int ShiftedVorbis::seek( void * datasource, ogg_int64_t offset, int whence ) -{ - ShiftedVorbis * sv = ( ShiftedVorbis * ) datasource; - - if ( whence == SEEK_SET ) - offset += sv->shift; - - if( whence == SEEK_CUR ) - offset += sv->f.pos(); - - if( whence == SEEK_END ) - offset += sv->f.size(); - - return sv->f.seek( offset ); -} - -long ShiftedVorbis::tell( void * datasource ) -{ - ShiftedVorbis * sv = ( ShiftedVorbis * ) datasource; - long result = sv->f.pos(); - - if ( result != -1 ) - result -= sv->shift; - - return result; -} - -ov_callbacks ShiftedVorbis::callbacks = { ShiftedVorbis::read, - ShiftedVorbis::seek, - NULL, - ShiftedVorbis::tell }; - -// A crude .wav header which is sufficient for our needs -struct WavHeader -{ - char riff[ 4 ]; // RIFF - uint32_t riffLength; - char waveAndFmt[ 8 ]; // WAVEfmt%20 - uint32_t fmtLength; // 16 - uint16_t formatTag; // 1 - uint16_t channels; // 1 or 2 - uint32_t samplesPerSec; - uint32_t bytesPerSec; - uint16_t blockAlign; - uint16_t bitsPerSample; // 16 - char data[ 4 ]; // data - uint32_t dataLength; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -sptr< Dictionary::DataRequest > LsaDictionary::getResource( string const & name ) - throw( std::exception ) -{ - // See if the name ends in .wav. Remove that extension then - - string strippedName = - ( name.size() > 3 && ( name.compare( name.size() - 4, 4, ".wav" ) == 0 ) ) ? - string( name, 0, name.size() - 4 ) : name; - - vector< WordArticleLink > chain = findArticles( Utf8::decode( strippedName ) ); - - if ( chain.empty() ) - return new Dictionary::DataRequestInstant( false ); // No such resource - - File::Class f( getDictionaryFilenames()[ 0 ], "rb" ); - - f.seek( chain[ 0 ].articleOffset ); - Entry e( f ); - - f.seek( idxHeader.vorbisOffset ); - - ShiftedVorbis sv( f.file(), idxHeader.vorbisOffset ); - - OggVorbis_File vf; - - int result = ov_open_callbacks( &sv, &vf, 0, 0, ShiftedVorbis::callbacks ); - - if ( result ) - throw exFailedToOpenVorbisData(); - - if ( ov_pcm_seek( &vf, e.samplesOffset ) ) - throw exFailedToSeekInVorbisData(); - - vorbis_info * vi = ov_info( &vf, -1 ); - - if ( !vi ) - { - ov_clear( &vf ); - - throw exFailedToRetrieveVorbisInfo(); - } - - sptr< Dictionary::DataRequestInstant > dr = new - Dictionary::DataRequestInstant( true ); - - vector< char > & data = dr->getData(); - - data.resize( sizeof( WavHeader ) + e.samplesLength * 2 ); - - WavHeader * wh = (WavHeader *)&data.front(); - - memset( wh, 0, sizeof( *wh ) ); - - memcpy( wh->riff, "RIFF", 4 ); - wh->riffLength = data.size() - 8; - - memcpy( wh->waveAndFmt, "WAVEfmt ", 8 ); - wh->fmtLength = 16; - wh->formatTag = 1; - wh->channels = vi->channels; - wh->samplesPerSec = vi->rate; - wh->bytesPerSec = vi->channels * vi->rate * 2; - wh->blockAlign = vi->channels * 2; - wh->bitsPerSample = 16; - memcpy( wh->data, "data", 4 ); - wh->dataLength = data.size() - sizeof( *wh ); - - // Now decode vorbis to the rest of the block - - char * ptr = &data.front() + sizeof( *wh ); - int left = data.size() - sizeof( *wh ); - int bitstream = 0; - - while( left ) - { - long result = ov_read( &vf, ptr, left, 0, 2, 1, &bitstream ); - - if ( result <= 0 ) - { - qWarning( "Warning: failed to read Vorbis data (code = %ld)\n", result ); - memset( ptr, 0, left ); - break; - } - - if ( result > left ) - { - GD_FDPRINTF( stderr, "Warning: Vorbis decode returned more data than requested.\n" ); - - result = left; - } - - ptr += result; - left -= result; - } - - ov_clear( &vf ); - - return dr; -} - -void LsaDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/playsound.png"); - } - - dictionaryIconLoaded = true; -} - -} - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - /// Only allow .dat and .lsa extensions to save scanning time - if ( i->size() < 4 || - ( strcasecmp( i->c_str() + ( i->size() - 4 ), ".dat" ) != 0 && - strcasecmp( i->c_str() + ( i->size() - 4 ), ".lsa" ) != 0 ) ) - continue; - - try - { - File::Class f( *i, "rb" ); - - /// Check the signature - - char buf[ 9 ]; - - if ( f.readRecords( buf, 9, 1 ) != 1 || memcmp( buf, "L\09\0S\0A\0\xff", 9 ) != 0 ) - { - // The file is too short or the signature doesn't match -- skip this - // file - continue; - } - - vector< string > dictFiles( 1, *i ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || indexIsOldOrBad( indexFile ) ) - { - // Building the index - - gdDebug( "Lsa: Building the index for dictionary: %s\n", i->c_str() ); - - initializing.indexingDictionary( FsEncoding::basename( *i ) ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - IndexedWords indexedWords; - - /// XXX handle big-endian machines here! - uint32_t entriesCount = f.read< uint32_t >(); - - GD_DPRINTF( "%s: %u entries\n", i->c_str(), entriesCount ); - - idxHeader.soundsCount = entriesCount; - - vector< uint16_t > filenameBuffer; - - while( entriesCount-- ) - { - uint32_t offset = f.tell(); - - Entry e( f ); - - - // Remove the extension, no need for that in the index - e.name = stripExtension( e.name ); - - GD_DPRINTF( "Read filename %s (%u at %u)<\n", e.name.c_str(), e.samplesLength, e.samplesOffset ); - - // Insert new entry into an index - - indexedWords.addWord( Utf8::decode( e.name ), offset ); - } - - idxHeader.vorbisOffset = f.tell(); - - // Make sure there's really some vobis data there - - char buf[ 4 ]; - - f.read( buf, sizeof( buf ) ); - - if ( strncmp( buf, "OggS", 4 ) != 0 ) - throw exInvalidData(); - - // Build the index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - - dictionaries.push_back( new LsaDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Lingvo's LSA reading failed: %s, error: %s\n", - i->c_str(), e.what() ); - } - } - - return dictionaries; -} - - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lsa.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/lsa.hh deleted file mode 100644 index 357edcbaeb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/lsa.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __L9SA_HH_INCLUDED__ -#define __L9SA_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for LSA (.dat, .lsa) audio archives of the Lingo program. -namespace Lsa { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/machotkeywrapper.mm b/office/misc/goldendict/files/goldendict-1.5.0-RC2/machotkeywrapper.mm deleted file mode 100644 index 9b8f53cdd4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/machotkeywrapper.mm +++ /dev/null @@ -1,284 +0,0 @@ -/* This file is (c) 2013 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "hotkeywrapper.hh" -#include - -namespace MacKeyMapping -{ -// Convert Qt key codes to Mac OS X native codes - -struct ReverseMapEntry -{ - UniChar character; - UInt16 keyCode; -}; - -static struct ReverseMapEntry * mapping; -static int mapEntries = 0; - -void createMapping() -{ - if( mapping == NULL ) - { - TISInputSourceRef inputSourceRef = TISCopyInputSourceForLanguage( CFSTR( "en" ) ); - if ( !inputSourceRef ) - inputSourceRef = TISCopyCurrentKeyboardInputSource(); - if ( !inputSourceRef ) - return; - - CFDataRef dataRef = ( CFDataRef )TISGetInputSourceProperty( inputSourceRef, - kTISPropertyUnicodeKeyLayoutData ); - if( !dataRef ) - return; - - const UCKeyboardLayout * keyboardLayoutPtr = ( const UCKeyboardLayout * )CFDataGetBytePtr( dataRef ); - if( !keyboardLayoutPtr ) - return; - - mapping = ( struct ReverseMapEntry * )calloc( 128 , sizeof(struct ReverseMapEntry) ); - if( !mapping ) - return; - - mapEntries = 0; - - for( int i = 0; i < 128; i++ ) - { - UInt32 theDeadKeyState = 0; - UniCharCount theLength = 0; - if( UCKeyTranslate( keyboardLayoutPtr, i, kUCKeyActionDisplay, 0, LMGetKbdType(), - kUCKeyTranslateNoDeadKeysBit, &theDeadKeyState, 1, &theLength, - &mapping[ mapEntries ].character ) == noErr && theLength > 0 ) - { - if( isprint( mapping[ mapEntries ].character ) ) - { - mapping[ mapEntries++ ].keyCode = i; - } - } - } - } -} - -quint32 qtKeyToNativeKey( quint32 key ) -{ - createMapping(); - if( mapping == NULL ) - return 0; - - for( int i = 0; i < mapEntries; i++ ) - { - if( mapping[ i ].character == key ) - return mapping[ i ].keyCode; - } - - return 0; -} - -} // namespace MacKeyMapping - -static pascal OSStatus hotKeyHandler( EventHandlerCallRef /* nextHandler */, EventRef theEvent, void * userData ) -{ - EventHotKeyID hkID; - GetEventParameter( theEvent, kEventParamDirectObject, typeEventHotKeyID, NULL, sizeof(EventHotKeyID), NULL, &hkID ); - static_cast< HotkeyWrapper * >( userData )->activated( hkID.id ); - return noErr; -} - -HotkeyWrapper::HotkeyWrapper( QObject *parent ) -{ -(void) parent; - hotKeyFunction = NewEventHandlerUPP( hotKeyHandler ); - EventTypeSpec type; - type.eventClass = kEventClassKeyboard; - type.eventKind = kEventHotKeyPressed; - InstallApplicationEventHandler( hotKeyFunction, 1, &type, this, &handlerRef ); - keyC = nativeKey( 'c' ); -} - -HotkeyWrapper::~HotkeyWrapper() -{ - unregister(); - RemoveEventHandler( handlerRef ); -} - -void HotkeyWrapper::waitKey2() -{ - state2 = false; -} - -void HotkeyWrapper::activated( int hkId ) -{ - if ( state2 ) - { // wait for 2nd key - - waitKey2(); // Cancel the 2nd-key wait stage - - if ( hkId == state2waiter.id + 1 || - ( hkId == state2waiter.id && state2waiter.key == state2waiter.key2 ) ) - { - emit hotkeyActivated( state2waiter.handle ); - return; - } - } - - for ( int i = 0; i < hotkeys.count(); i++ ) - { - HotkeyStruct &hs = hotkeys[ i ]; - if( hkId == hs.id ) - { - if( hs.key == keyC && hs.modifier == cmdKey ) - { - // If that was a copy-to-clipboard shortcut, re-emit it back so it could - // reach its original destination so it could be acted upon. - UnregisterEventHotKey( hs.hkRef ); - - sendCmdC(); - - EventHotKeyID hotKeyID; - hotKeyID.signature = 'GDHK'; - hotKeyID.id = hs.id; - - RegisterEventHotKey( hs.key, hs.modifier, hotKeyID, GetApplicationEventTarget(), 0, &hs.hkRef ); - } - - if ( hs.key2 == 0 ) { - emit hotkeyActivated( hs.handle ); - return; - } - - state2 = true; - state2waiter = hs; - QTimer::singleShot( 500, this, SLOT( waitKey2() ) ); - return; - } - } - - state2 = false; - return; -} - -void HotkeyWrapper::unregister() -{ - for ( int i = 0; i < hotkeys.count(); i++ ) - { - HotkeyStruct const & hk = hotkeys.at( i ); - - UnregisterEventHotKey( hk.hkRef ); - - if ( hk.key2 && hk.key2 != hk.key ) - UnregisterEventHotKey( hk.hkRef2 ); - } - - (static_cast< QHotkeyApplication * >( qApp ))->unregisterWrapper( this ); -} - -bool HotkeyWrapper::setGlobalKey( int key, int key2, Qt::KeyboardModifiers modifier, int handle ) -{ - if ( !key ) - return false; // We don't monitor empty combinations - - quint32 vk = nativeKey( key ); - - if( vk == 0 ) - return false; - - quint32 vk2 = key2 ? nativeKey( key2 ) : 0; - - static int nextId = 1; - if( nextId > 0xBFFF - 1 ) - nextId = 1; - - quint32 mod = 0; - if( modifier & Qt::CTRL ) - mod |= cmdKey; - if( modifier & Qt::ALT ) - mod |= optionKey; - if( modifier & Qt::SHIFT ) - mod |= shiftKey; - if( modifier & Qt::META ) - mod |= controlKey; - - hotkeys.append( HotkeyStruct( vk, vk2, mod, handle, nextId ) ); - HotkeyStruct &hk = hotkeys.last(); - - EventHotKeyID hotKeyID; - hotKeyID.signature = 'GDHK'; - hotKeyID.id = nextId; - - OSStatus ret = RegisterEventHotKey( vk, mod, hotKeyID, GetApplicationEventTarget(), 0, &hk.hkRef ); - if ( ret != 0 ) - return false; - - if ( vk2 && vk2 != vk ) - { - hotKeyID.id = nextId + 1; - ret = RegisterEventHotKey( vk2, mod, hotKeyID, GetApplicationEventTarget(), 0, &hk.hkRef2 ); - } - - nextId += 2; - - return ret == 0; -} - -quint32 HotkeyWrapper::nativeKey( int key ) -{ - switch( key ) { - case Qt::Key_Escape: return 0x35; - case Qt::Key_Tab: return 0x30; - case Qt::Key_Backspace: return 0x33; - case Qt::Key_Return: return 0x24; - case Qt::Key_Enter: return 0x4c; - case Qt::Key_Delete: return 0x75; - case Qt::Key_Clear: return 0x47; - case Qt::Key_Home: return 0x73; - case Qt::Key_End: return 0x77; - case Qt::Key_Left: return 0x7b; - case Qt::Key_Up: return 0x7e; - case Qt::Key_Right: return 0x7c; - case Qt::Key_Down: return 0x7d; - case Qt::Key_PageUp: return 0x74; - case Qt::Key_PageDown: return 0x79; - case Qt::Key_CapsLock: return 0x57; - case Qt::Key_F1: return 0x7a; - case Qt::Key_F2: return 0x78; - case Qt::Key_F3: return 0x63; - case Qt::Key_F4: return 0x76; - case Qt::Key_F5: return 0x60; - case Qt::Key_F6: return 0x61; - case Qt::Key_F7: return 0x62; - case Qt::Key_F8: return 0x64; - case Qt::Key_F9: return 0x65; - case Qt::Key_F10: return 0x6d; - case Qt::Key_F11: return 0x67; - case Qt::Key_F12: return 0x6f; - case Qt::Key_F13: return 0x69; - case Qt::Key_F14: return 0x6b; - case Qt::Key_F15: return 0x71; - case Qt::Key_Help: return 0x72; - default:; - } - return MacKeyMapping::qtKeyToNativeKey( QChar( key ).toLower().toLatin1() ); -} - -void HotkeyWrapper::sendCmdC() -{ - CGEventFlags flags = kCGEventFlagMaskCommand; - CGEventRef ev; - CGEventSourceRef source = CGEventSourceCreate( kCGEventSourceStateCombinedSessionState ); - - //press down - ev = CGEventCreateKeyboardEvent( source, keyC, true ); - CGEventSetFlags( ev, flags | CGEventGetFlags( ev ) ); //combine flags - CGEventPost( kCGAnnotatedSessionEventTap, ev ); - CFRelease( ev ); - - //press up - ev = CGEventCreateKeyboardEvent( source, keyC, false ); - CGEventSetFlags( ev, flags | CGEventGetFlags( ev ) ); //combine flags - CGEventPost( kCGAnnotatedSessionEventTap, ev ); - CFRelease( ev ); - - CFRelease( source ); -} - -EventHandlerUPP HotkeyWrapper::hotKeyFunction = NULL; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/ao.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/ao.h deleted file mode 100644 index cb8c0356fd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/ao.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * - * ao.h - * - * Original Copyright (C) Aaron Holtzman - May 1999 - * Modifications Copyright (C) Stan Seibert - July 2000, July 2001 - * More Modifications Copyright (C) Jack Moffitt - October 2000 - * - * This file is part of libao, a cross-platform audio outputlibrary. See - * README for a history of this source code. - * - * libao is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * libao is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ -#ifndef __AO_H__ -#define __AO_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include -#include -#include "os_types.h" - -/* --- Constants ---*/ - -#define AO_TYPE_LIVE 1 -#define AO_TYPE_FILE 2 - - -#define AO_ENODRIVER 1 -#define AO_ENOTFILE 2 -#define AO_ENOTLIVE 3 -#define AO_EBADOPTION 4 -#define AO_EOPENDEVICE 5 -#define AO_EOPENFILE 6 -#define AO_EFILEEXISTS 7 -#define AO_EBADFORMAT 8 - -#define AO_EFAIL 100 - - -#define AO_FMT_LITTLE 1 -#define AO_FMT_BIG 2 -#define AO_FMT_NATIVE 4 - -/* --- Structures --- */ - -typedef struct ao_info { - int type; /* live output or file output? */ - char *name; /* full name of driver */ - char *short_name; /* short name of driver */ - char *author; /* driver author */ - char *comment; /* driver comment */ - int preferred_byte_format; - int priority; - char **options; - int option_count; -} ao_info; - -typedef struct ao_functions ao_functions; -typedef struct ao_device ao_device; - -typedef struct ao_sample_format { - int bits; /* bits per sample */ - int rate; /* samples per second (in a single channel) */ - int channels; /* number of audio channels */ - int byte_format; /* Byte ordering in sample, see constants below */ - char *matrix; /* input channel location/ordering */ -} ao_sample_format; - -typedef struct ao_option { - char *key; - char *value; - struct ao_option *next; -} ao_option; - -#if defined(AO_BUILDING_LIBAO) -#include "ao_private.h" -#endif - -/* --- Functions --- */ - -/* library setup/teardown */ -void ao_initialize(void); -void ao_shutdown(void); - -/* device setup/playback/teardown */ -int ao_append_global_option(const char *key, - const char *value); -int ao_append_option(ao_option **options, - const char *key, - const char *value); -void ao_free_options(ao_option *options); -ao_device* ao_open_live(int driver_id, - ao_sample_format *format, - ao_option *option); -ao_device* ao_open_file(int driver_id, - const char *filename, - int overwrite, - ao_sample_format *format, - ao_option *option); - -int ao_play(ao_device *device, - char *output_samples, - uint_32 num_bytes); -int ao_close(ao_device *device); - -/* driver information */ -int ao_driver_id(const char *short_name); -int ao_default_driver_id(void); -ao_info *ao_driver_info(int driver_id); -ao_info **ao_driver_info_list(int *driver_count); -char *ao_file_extension(int driver_id); - -/* miscellaneous */ -int ao_is_big_endian(void); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __AO_H__ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/os_types.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/os_types.h deleted file mode 100644 index 8a5655353c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/os_types.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - * os_types.h - * - * Original Copyright (C) Aaron Holtzman - May 1999 - * Modifications Copyright (C) Stan Seibert - July 2000 - * - * This file is part of libao, a cross-platform audio output library. See - * README for a history of this source code. - * - * libao is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * libao is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -/* Set type sizes for this platform (Requires Autoconf) */ - -#ifndef __OS_TYPES_H__ -#define __OS_TYPES_H__ - -typedef unsigned char uint_8; -typedef unsigned short uint_16; -typedef unsigned int uint_32; -typedef signed char sint_8; -typedef signed short sint_16; -typedef signed int sint_32; - -#endif /* __OS_TYPES_H__ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/plugin.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/plugin.h deleted file mode 100644 index 29a3d96939..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ao/plugin.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * plugin.h - function declarations for libao plugins - * - * Copyright (C) Stan Seibert - June 2001 - * - * This file is part of libao, a cross-platform audio outputlibrary. See - * README for a history of this source code. - * - * libao is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * libao is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ -#ifndef __PLUGIN_H__ -#define __PLUGIN_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include "os_types.h" - -int ao_plugin_test(); -ao_info *ao_plugin_driver_info(); -int ao_plugin_device_init(ao_device *device); -int ao_plugin_set_option(ao_device *device, const char *key, const char *value); -int ao_plugin_open(ao_device *device, ao_sample_format *format); -int ao_plugin_play(ao_device *device, const char *output_samples, - uint_32 num_bytes); -int ao_plugin_close(ao_device *device); -void ao_plugin_device_clear(ao_device *device); -char *ao_plugin_file_extension(); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __PLUGIN_H__ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/appendix.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/appendix.h deleted file mode 100644 index 9cef1a5d1d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/appendix.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_APPENDIX_H -#define EB_APPENDIX_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "eb.h" -#else -#include -#endif - -/* - * Function declarations. - */ -/* appendix.c */ -void eb_initialize_appendix(EB_Appendix *appendix); -void eb_finalize_appendix(EB_Appendix *appendix); -EB_Error_Code eb_bind_appendix(EB_Appendix *appendix, const char *path); -int eb_is_appendix_bound(EB_Appendix *appendix); -EB_Error_Code eb_appendix_path(EB_Appendix *appendix, char *path); - -/* appsub.c */ -EB_Error_Code eb_load_all_appendix_subbooks(EB_Appendix *appendix); -EB_Error_Code eb_appendix_subbook_list(EB_Appendix *appendix, - EB_Subbook_Code *subbook_list, int *subbook_count); -EB_Error_Code eb_appendix_subbook(EB_Appendix *appendix, - EB_Subbook_Code *subbook_code); -EB_Error_Code eb_appendix_subbook_directory(EB_Appendix *appendix, - char *directory); -EB_Error_Code eb_appendix_subbook_directory2(EB_Appendix *appendix, - EB_Subbook_Code subbook_code, char *directory); -EB_Error_Code eb_set_appendix_subbook(EB_Appendix *appendix, - EB_Subbook_Code subbook_code); -void eb_unset_appendix_subbook(EB_Appendix *appendix); - -/* narwalt.c */ -int eb_have_narrow_alt(EB_Appendix *appendix); -EB_Error_Code eb_narrow_alt_start(EB_Appendix *appendix, int *start); -EB_Error_Code eb_narrow_alt_end(EB_Appendix *appendix, int *end); -EB_Error_Code eb_narrow_alt_character_text(EB_Appendix *appendix, - int character_number, char *text); -EB_Error_Code eb_forward_narrow_alt_character(EB_Appendix *appendix, - int n, int *character_number); -EB_Error_Code eb_backward_narrow_alt_character(EB_Appendix *appendix, - int n, int *character_number); - -/* stopcode.c */ -int eb_have_stop_code(EB_Appendix *appendix); -EB_Error_Code eb_stop_code(EB_Appendix *appendix, int *); - -/* widealt.c */ -int eb_have_wide_alt(EB_Appendix *appendix); -EB_Error_Code eb_wide_alt_start(EB_Appendix *appendix, int *start); -EB_Error_Code eb_wide_alt_end(EB_Appendix *appendix, int *end); -EB_Error_Code eb_wide_alt_character_text(EB_Appendix *appendix, - int character_number, char *text); -EB_Error_Code eb_forward_wide_alt_character(EB_Appendix *appendix, int n, - int *character_number); -EB_Error_Code eb_backward_wide_alt_character(EB_Appendix *appendix, int n, - int *character_number); - -/* for backward compatibility */ -#define eb_suspend_appendix eb_unset_appendix_subbook -#define eb_initialize_all_appendix_subbooks eb_load_all_appendix_subbooks - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_APPENDIX_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/binary.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/binary.h deleted file mode 100644 index 031ca46898..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/binary.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- C -*- - * Copyright (c) 2001-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_BINARY_H -#define EB_BINARY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Function declarations. - */ -/* binary.c */ -EB_Error_Code eb_set_binary_mono_graphic(EB_Book *book, - const EB_Position *position, int width, int height); -EB_Error_Code eb_set_binary_gray_graphic(EB_Book *book, - const EB_Position *position, int width, int height); -EB_Error_Code eb_set_binary_wave(EB_Book *book, - const EB_Position *start_position, const EB_Position *end_position); -EB_Error_Code eb_set_binary_color_graphic(EB_Book *book, - const EB_Position *position); -EB_Error_Code eb_set_binary_mpeg(EB_Book *book, const unsigned int *argv); -EB_Error_Code eb_read_binary(EB_Book *book, size_t binary_max_length, - char *binary, ssize_t *binary_length); -void eb_unset_binary(EB_Book *book); - -/* filename.c */ -EB_Error_Code eb_compose_movie_file_name(const unsigned int *argv, - char *composed_file_name); -EB_Error_Code eb_compose_movie_path_name(EB_Book *book, - const unsigned int *argv, char *composed_path_name); -EB_Error_Code eb_decompose_movie_file_name(unsigned int *argv, - const char *composed_file_name); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_BINARY_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/booklist.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/booklist.h deleted file mode 100644 index e239414e39..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/booklist.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_BOOKLIST_H -#define EB_BOOKLIST_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "eb.h" -#else -#include -#endif - -/* - * Function declarations. - */ -/* booklist.c */ -void eb_initialize_booklist(EB_BookList *booklist); -void eb_finalize_booklist(EB_BookList *booklist); -EB_Error_Code eb_bind_booklist(EB_BookList *booklist, const char *path); -EB_Error_Code eb_booklist_book_count(EB_BookList *booklist, int *book_count); -EB_Error_Code eb_booklist_book_name(EB_BookList *booklist, int book_index, - char **book_name); -EB_Error_Code eb_booklist_book_title(EB_BookList *booklist, int book_index, - char **book_title); - - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_BOOKLIST_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/defs.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/defs.h deleted file mode 100644 index bd63cfeeb6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/defs.h +++ /dev/null @@ -1,1040 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_DEFS_H -#define EB_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#ifdef EB_BUILD_LIBRARY -#include "sysdefs.h" -#include "zio.h" -#else -#include -#include -#endif - -#ifdef EB_ENABLE_PTHREAD -#include -#endif - -/* - * Disc code - */ -#define EB_DISC_EB 0 -#define EB_DISC_EPWING 1 -#define EB_DISC_INVALID -1 - -/* - * Character codes. - */ -#define EB_CHARCODE_ISO8859_1 1 -#define EB_CHARCODE_JISX0208 2 -#define EB_CHARCODE_JISX0208_GB2312 3 -#define EB_CHARCODE_INVALID -1 - -/* - * Special book ID for cache to represent "no cache data for any book". - */ -#define EB_BOOK_NONE -1 - -/* - * Special disc code, subbook code, multi search ID, and multi search - * entry ID, for representing error state. - */ -#define EB_SUBBOOK_INVALID -1 -#define EB_MULTI_INVALID -1 - -/* - * Size of a page (The term `page' means `block' in JIS X 4081). - */ -#define EB_SIZE_PAGE 2048 - -/* - * Maximum length of a word to be searched. - */ -#define EB_MAX_WORD_LENGTH 255 - -/* - * Maximum length of an EB* book title. - */ -#define EB_MAX_EB_TITLE_LENGTH 30 - -/* - * Maximum length of an EPWING book title. - */ -#define EB_MAX_EPWING_TITLE_LENGTH 80 - -/* - * Maximum length of a book title. - */ -#define EB_MAX_TITLE_LENGTH 80 - -/* - * Maximum length of a word to be searched. - */ -#if defined(PATH_MAX) -#define EB_MAX_PATH_LENGTH PATH_MAX -#elif defined(MAXPATHLEN) -#define EB_MAX_PATH_LENGTH MAXPATHLEN -#else -#define EB_MAX_PATH_LENGTH 1024 -#endif - -/* - * Maximum length of a directory name. - */ -#define EB_MAX_DIRECTORY_NAME_LENGTH 8 - -/* - * Maximum length of a file name under a certain directory. - * prefix(8 chars) + '.' + suffix(3 chars) + ';' + digit(1 char) - */ -#define EB_MAX_FILE_NAME_LENGTH 14 - -/* - * Maximum length of a label for multi-search entry. - */ -#define EB_MAX_MULTI_LABEL_LENGTH 30 - -/* - * Maximum length of alternation text string for a private character. - */ -#define EB_MAX_ALTERNATION_TEXT_LENGTH 31 - -/* - * Maximum length of title for multi search. - */ -#define EB_MAX_MULTI_TITLE_LENGTH 32 - -/* - * Maximum number of font heights in a subbok. - */ -#define EB_MAX_FONTS 4 - -/* - * Maximum number of subbooks in a book. - */ -#define EB_MAX_SUBBOOKS 50 - -/* - * Maximum number of multi-search types in a subbook. - */ -#define EB_MAX_MULTI_SEARCHES 10 - -/* - * Maximum number of entries in a multi-search. - */ -#define EB_MAX_MULTI_ENTRIES 5 - -/* - * Maximum number of entries in a keyword search. - */ -#define EB_MAX_KEYWORDS EB_MAX_MULTI_ENTRIES - -/* - * Maximum number of entries in a cross search. - */ -#define EB_MAX_CROSS_ENTRIES EB_MAX_MULTI_ENTRIES - -/* - * Maximum number of characters for alternation cache. - */ -#define EB_MAX_ALTERNATION_CACHE 16 - -/* - * The number of text hooks. - */ -#define EB_NUMBER_OF_HOOKS 54 - -/* - * The number of search contexts required by a book. - */ -#define EB_NUMBER_OF_SEARCH_CONTEXTS EB_MAX_MULTI_ENTRIES - -/* - * Types for various codes. - */ -typedef int EB_Error_Code; -typedef int EB_Book_Code; -typedef int EB_Disc_Code; -typedef int EB_Case_Code; -typedef int EB_Suffix_Code; -typedef int EB_Character_Code; -typedef int EB_Font_Code; -typedef int EB_Word_Code; -typedef int EB_Subbook_Code; -typedef int EB_Index_Style_Code; -typedef int EB_Search_Code; -typedef int EB_Text_Code; -typedef int EB_Text_Status_Code; -typedef int EB_Multi_Search_Code; -typedef int EB_Hook_Code; -typedef int EB_Binary_Code; - -/* - * Typedef for Structures. - */ -#ifdef EB_ENABLE_PTHREAD -typedef struct EB_Lock_Struct EB_Lock; -#endif -typedef struct EB_Position_Struct EB_Position; -typedef struct EB_Alternation_Cache_Struct EB_Alternation_Cache; -typedef struct EB_Appendix_Subbook_Struct EB_Appendix_Subbook; -typedef struct EB_Appendix_Struct EB_Appendix; -typedef struct EB_Font_Struct EB_Font; -typedef struct EB_Search_Struct EB_Search; -typedef struct EB_Multi_Search_Struct EB_Multi_Search; -typedef struct EB_Subbook_Struct EB_Subbook; -typedef struct EB_Text_Context_Struct EB_Text_Context; -typedef struct EB_Binary_Context_Struct EB_Binary_Context; -typedef struct EB_Search_Context_Struct EB_Search_Context; -typedef struct EB_Book_Struct EB_Book; -typedef struct EB_Hit_Struct EB_Hit; -typedef struct EB_Hook_Struct EB_Hook; -typedef struct EB_Hookset_Struct EB_Hookset; -typedef struct EB_BookList_Entry EB_BookList_Entry; -typedef struct EB_BookList EB_BookList; - -/* - * Pthreads lock. - */ -#ifdef EB_ENABLE_PTHREAD -struct EB_Lock_Struct { - /* - * Lock count. (For emulating recursive lock). - */ - int lock_count; - - /* - * Mutex for `lock_count'. - */ - pthread_mutex_t lock_count_mutex; - - /* - * Mutex for struct entity. - */ - pthread_mutex_t entity_mutex; -}; -#endif /* EB_ENABLE_PTHREAD */ - -/* - * A pair of page and offset. - */ -struct EB_Position_Struct { - /* - * Page. (1, 2, 3 ...) - */ - int page; - - /* - * Offset in `page'. (0 ... 2047) - */ - int offset; -}; - -/* - * Chace of aternation text. - */ -struct EB_Alternation_Cache_Struct { - /* - * Character number. - */ - int character_number; - - /* - * Alternation string for `char_no'. - */ - char text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; -}; - -/* - * An appendix for a subbook. - */ -struct EB_Appendix_Subbook_Struct { - - /* - * Initialization flag. - */ - int initialized; - - /* - * Subbook ID. - */ - EB_Subbook_Code code; - - /* - * Directory name. - */ - char directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * Sub-directory name. (EPWING only) - */ - char data_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * File name. - */ - char file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - - /* - * Character code of the book. - */ - EB_Character_Code character_code; - - /* - * Start character number of the narrow/wide font. - */ - int narrow_start; - int wide_start; - - /* - * End character number of the narrow/wide font. - */ - int narrow_end; - int wide_end; - - /* - * Start page number of the narrow/wide font. - */ - int narrow_page; - int wide_page; - - /* - * Stop code (first and second characters). - */ - int stop_code0; - int stop_code1; - - /* - * Compression Information for appendix file. - */ - Zio zio; -}; - -/* - * Additional resources for a book. - */ -struct EB_Appendix_Struct { - /* - * Book ID. - */ - EB_Book_Code code; - - /* - * Path of the book. - */ - char *path; - - /* - * The length of the path. - */ - size_t path_length; - - /* - * Disc type. EB (EB/EBG/EBXA/EBXA-C/S-EBXA) or EPWING. - */ - EB_Disc_Code disc_code; - - /* - * The number of subbooks the book has. - */ - int subbook_count; - - /* - * Subbook list. - */ - EB_Appendix_Subbook *subbooks; - - /* - * Current subbook. - */ - EB_Appendix_Subbook *subbook_current; - - /* - * ebnet socket file. - */ -#ifdef EB_ENABLE_EBNET - int ebnet_file; -#endif - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif - - /* - * Cache table for alternation text. - */ - EB_Alternation_Cache narrow_cache[EB_MAX_ALTERNATION_CACHE]; - EB_Alternation_Cache wide_cache[EB_MAX_ALTERNATION_CACHE]; -}; - -/* - * A font in a subbook. - */ -struct EB_Font_Struct { - /* - * Font Code. - * This font is not available, if the code is EB_FONT_INVALID. - */ - EB_Font_Code font_code; - - /* - * Whether the object has been initialized. - */ - int initialized; - - /* - * Character numbers of the start and end of the font. - */ - int start; - int end; - - /* - * Page number of the start page of the font data. - * Used in EB* only. (In EPWING, it is alyways 1). - */ - int page; - - /* - * File name of the font. (EPWING only) - */ - char file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - - /* - * Font data cache. - */ - char *glyphs; - - /* - * Compression Information. - */ - Zio zio; -}; - -/* - * Search methods in a subbook. - */ -struct EB_Search_Struct { - /* - * Index ID. - */ - int index_id; - - /* - * Page number of the start page of an index. - * This search method is not available, if `start_page' is 0, - */ - int start_page; - int end_page; - - /* - * Page number of the start page of candidates. - * (for multi search entry) - */ - int candidates_page; - - /* - * Index style flags. - */ - EB_Index_Style_Code katakana; - EB_Index_Style_Code lower; - EB_Index_Style_Code mark; - EB_Index_Style_Code long_vowel; - EB_Index_Style_Code double_consonant; - EB_Index_Style_Code contracted_sound; - EB_Index_Style_Code voiced_consonant; - EB_Index_Style_Code small_vowel; - EB_Index_Style_Code p_sound; - EB_Index_Style_Code space; - - /* - * Label. (for an entry in multi search) - */ - char label[EB_MAX_MULTI_LABEL_LENGTH + 1]; -}; - -/* - * A multi-search entry in a subbook. - */ -struct EB_Multi_Search_Struct { - /* - * Search method information. - */ - EB_Search search; - - /* - * Search title. (EPWING only) - */ - char title[EB_MAX_MULTI_TITLE_LENGTH + 1]; - - /* - * The number of entries the multi search has. - */ - int entry_count; - - /* - * List of Word entry information. - */ - EB_Search entries[EB_MAX_MULTI_ENTRIES]; -}; - -/* - * A subbook in a book. - */ -struct EB_Subbook_Struct { - /* - * Whether the object has been initialized. - */ - int initialized; - - /* - * Index page. - */ - int index_page; - - /* - * Subbook ID. - * This subbook is not available, if the code is EB_SUBBOOK_INVALID. - */ - EB_Subbook_Code code; - - /* - * File descriptor and compression information for text file. - */ - Zio text_zio; - - /* - * File descriptor and compression information for graphic file. - */ - Zio graphic_zio; - - /* - * File descriptor and compression information for sound file. - */ - Zio sound_zio; - - /* - * File descriptor and compression information for movie file. - */ - Zio movie_zio; - - /* - * Title of the subbook. - */ - char title[EB_MAX_TITLE_LENGTH + 1]; - - /* - * Subbook directory name. - */ - char directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * Sub-directory names. (EPWING only) - */ - char data_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - char gaiji_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - char movie_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * File names. - */ - char text_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - char graphic_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - char sound_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - - /* - * Compression hints of Text, graphic and sound files. - * (temporary need, EPWING only). - */ - Zio_Code text_hint_zio_code; - Zio_Code graphic_hint_zio_code; - Zio_Code sound_hint_zio_code; - - /* - * Page number where search method titles are stored. - * (temporary need, EPWING only). - */ - int search_title_page; - - /* - * The top page of search methods. - */ - EB_Search word_alphabet; - EB_Search word_asis; - EB_Search word_kana; - EB_Search endword_alphabet; - EB_Search endword_asis; - EB_Search endword_kana; - EB_Search keyword; - EB_Search menu; - EB_Search image_menu; - EB_Search cross; - EB_Search copyright; - EB_Search text; - EB_Search sound; - - /* - * The number of multi-search methods the subbook has. - */ - int multi_count; - - /* - * The top page of multi search methods. - */ - EB_Multi_Search multis[EB_MAX_MULTI_SEARCHES]; - - /* - * Font list. - */ - EB_Font narrow_fonts[EB_MAX_FONTS]; - EB_Font wide_fonts[EB_MAX_FONTS]; - - /* - * Current narrow and wide fonts. - */ - EB_Font *narrow_current; - EB_Font *wide_current; -}; - -/* - * Length of cache buffer in a binary context. - * It must be greater than 38, size of GIF preamble. - * It must be greater than 44, size of WAVE sound header. - * It must be greater than 118, size of BMP header + info + 16 rgbquads. - */ -#define EB_SIZE_BINARY_CACHE_BUFFER 128 - -/* - * Context parameters for binary data. - */ -struct EB_Binary_Context_Struct { - /* - * Binary type ID. - * The context is not active, if this code is EB_BINARY_INVALID. - */ - EB_Binary_Code code; - - /* - * Compress information. - */ - Zio *zio; - - /* - * Location of the the binary data, relative to the start of the file. - */ - off_t location; - - /* - * Data size. - * Size zero means that the binary has no size information. - */ - size_t size; - - /* - * The current offset of binary data. - */ - size_t offset; - - /* - * Cache buffer. - */ - char cache_buffer[EB_SIZE_BINARY_CACHE_BUFFER]; - - /* - * Length of cached data. - */ - size_t cache_length; - - /* - * Current offset of cached data. - */ - size_t cache_offset; - - /* - * Width of Image. (monochrome graphic only) - */ - int width; -}; - -/* - * Context parameters for text reading. - */ -struct EB_Text_Context_Struct { - /* - * Current text content type. - * The context is not active, if this code is EB_TEXT_INVALID. - */ - EB_Text_Code code; - - /* - * Current offset pointer of the START or HONMON file. - */ - off_t location; - - /* - * The current point of a buffer on which text is written. - */ - char *out; - - /* - * Length of `out'. - */ - size_t out_rest_length; - - /* - * Unprocessed string that a hook function writes on text. - */ - char *unprocessed; - - /* - * Size of `unprocessed'. - */ - size_t unprocessed_size; - - /* - * Length of the current output text phrase. - */ - size_t out_step; - - /* - * Narrow character region flag. - */ - int narrow_flag; - - /* - * Whether a printable character has been appeared in the current - * text content. - */ - int printable_count; - - /* - * EOF flag of the current subbook. - */ - int file_end_flag; - - /* - * Status of the current text processing. - */ - EB_Text_Status_Code text_status; - - /* - * Skip until `skipcode' appears. - */ - int skip_code; - - /* - * Stop-code automatically set by EB Library. - */ - int auto_stop_code; - - /* - * The current candidate word for multi search. - */ - char candidate[EB_MAX_WORD_LENGTH + 1]; - - /* - * Whether the current text point is in the candidate word or not. - */ - int is_candidate; - - /* - * Whether the current text point is in EBXA-C gaiji area. - */ - int ebxac_gaiji_flag; -}; - -/* - * Context parameters for word search. - */ -struct EB_Search_Context_Struct { - /* - * Current search method type. - * The context is not active, if this code is EB_SEARCH_NONE. - */ - EB_Search_Code code; - - /* - * Function which compares word to search and pattern in an index page. - */ - int (*compare_pre)(const char *word, const char *pattern, - size_t length); - int (*compare_single)(const char *word, const char *pattern, - size_t length); - int (*compare_group)(const char *word, const char *pattern, - size_t length); - - /* - * Result of comparison by `compare'. - */ - int comparison_result; - - /* - * Word to search. - */ - char word[EB_MAX_WORD_LENGTH + 1]; - - /* - * Canonicalized word to search. - */ - char canonicalized_word[EB_MAX_WORD_LENGTH + 1]; - - /* - * Page which is searched currently. - */ - int page; - - /* - * Offset which is searched currently in the page. - */ - int offset; - - /* - * Page ID of the current page. - */ - int page_id; - - /* - * How many entries in the current page. - */ - int entry_count; - - /* - * Entry index pointer. - */ - int entry_index; - - /* - * Length of the current entry. - */ - int entry_length; - - /* - * Arrangement style of entries in the current page (fixed or variable). - */ - int entry_arrangement; - - /* - * In a group entry or not. - */ - int in_group_entry; - - /* - * Current heading position (for keyword search). - */ - EB_Position keyword_heading; -}; - -/* - * A book. - */ -struct EB_Book_Struct { - /* - * Book ID. - */ - EB_Book_Code code; - - /* - * Disc type. EB* or EPWING. - */ - EB_Disc_Code disc_code; - - /* - * Character code of the book. - */ - EB_Character_Code character_code; - - /* - * Path of the book. - */ - char *path; - - /* - * The length of the path. - */ - size_t path_length; - - /* - * The number of subbooks the book has. - */ - int subbook_count; - - /* - * Subbook list. - */ - EB_Subbook *subbooks; - - /* - * Current subbook. - */ - EB_Subbook *subbook_current; - - /* - * Context parameters for text reading. - */ - EB_Text_Context text_context; - - /* - * Context parameters for binary reading. - */ - EB_Binary_Context binary_context; - - /* - * Context parameters for text reading. - */ - EB_Search_Context search_contexts[EB_NUMBER_OF_SEARCH_CONTEXTS]; - - /* - * ebnet socket file. - */ -#ifdef EB_ENABLE_EBNET - int ebnet_file; -#endif - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif -}; - -/* - * In a word search, heading and text locations of a matched entry - * are stored. - */ -struct EB_Hit_Struct { - /* - * Heading position. - */ - EB_Position heading; - - /* - * Text position. - */ - EB_Position text; -}; - -/* - * A text hook. - */ -struct EB_Hook_Struct { - /* - * Hook code. - */ - EB_Hook_Code code; - - /* - * Hook function for the hook code `code'. - */ - EB_Error_Code (*function)(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -}; - -/* - * A set of text hooks. - */ -struct EB_Hookset_Struct { - /* - * List of hooks. - */ - EB_Hook hooks[EB_NUMBER_OF_HOOKS]; - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif -}; - -/* - * An entry of book list. - */ -struct EB_BookList_Entry { - /* - * name. - */ - char *name; - - /* - * Title. - */ - char *title; -}; - -/* - * Book list. - */ -struct EB_BookList { - /* - * Book List ID. - */ - EB_Book_Code code; - - /* - * The number of book entries this list has. - */ - int entry_count; - - /* - * The maximum number of book entries that `entries' can memory. - */ - int max_entry_count; - - /* - * Book entries. - */ - EB_BookList_Entry *entries; - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif -}; - -/* for backward compatibility */ -#define EB_Multi_Entry_Code int - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_DEFS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/eb.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/eb.h deleted file mode 100644 index 9adf57a9e4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/eb.h +++ /dev/null @@ -1,155 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_EB_H -#define EB_EB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -#include - -/* - * Function declarations. - */ -/* book.c */ -void eb_initialize_book(EB_Book *book); -EB_Error_Code eb_bind(EB_Book *book, const char *path); -void eb_finalize_book(EB_Book *book); -int eb_is_bound(EB_Book *book); -EB_Error_Code eb_path(EB_Book *book, char *path); -EB_Error_Code eb_disc_type(EB_Book *book, EB_Disc_Code *disc_code); -EB_Error_Code eb_character_code(EB_Book *book, - EB_Character_Code *character_code); - -/* copyright.h */ -int eb_have_copyright(EB_Book *book); -EB_Error_Code eb_copyright(EB_Book *book, EB_Position *position); -EB_Error_Code eb_search_cross(EB_Book *book, - const char * const input_words[]); - -/* cross.c */ -int eb_have_cross_search(EB_Book *book); - -/* eb.c */ -EB_Error_Code eb_initialize_library(void); -void eb_finalize_library(void); - -/* endword.c */ -int eb_have_endword_search(EB_Book *book); -EB_Error_Code eb_search_endword(EB_Book *book, const char *input_word); - -/* exactword.c */ -int eb_have_exactword_search(EB_Book *book); -EB_Error_Code eb_search_exactword(EB_Book *book, const char *input_word); - -/* graphic.c */ -int eb_have_graphic_search(EB_Book *book); - -/* keyword.c */ -int eb_have_keyword_search(EB_Book *book); -EB_Error_Code eb_search_keyword(EB_Book *book, - const char * const input_words[]); - -/* lock.c */ -int eb_pthread_enabled(void); - -/* log.c */ -void eb_set_log_function(void (*function)(const char *message, va_list ap)); -void eb_enable_log(void); -void eb_disable_log(void); -void eb_log(const char *message, ...); -void eb_log_stderr(const char *message, va_list ap); - -/* menu.c */ -int eb_have_menu(EB_Book *book); -EB_Error_Code eb_menu(EB_Book *book, EB_Position *position); -int eb_have_image_menu(EB_Book *book); -EB_Error_Code eb_image_menu(EB_Book *book, EB_Position *position); - -/* multi.c */ -int eb_have_multi_search(EB_Book *book); -EB_Error_Code eb_multi_title(EB_Book *book, EB_Multi_Search_Code multi_id, - char *title); -EB_Error_Code eb_multi_search_list(EB_Book *book, - EB_Multi_Search_Code *search_list, int *search_count); -EB_Error_Code eb_multi_entry_count(EB_Book *book, - EB_Multi_Search_Code multi_id, int *entry_count); -EB_Error_Code eb_multi_entry_list(EB_Book *book, - EB_Multi_Search_Code multi_id, int *entry_list, int *entry_count); -EB_Error_Code eb_multi_entry_label(EB_Book *book, - EB_Multi_Search_Code multi_id, int entry_index, char *label); -int eb_multi_entry_have_candidates(EB_Book *book, - EB_Multi_Search_Code multi_id, int entry_index); -EB_Error_Code eb_multi_entry_candidates(EB_Book *book, - EB_Multi_Search_Code multi_id, int entry_index, EB_Position *position); -EB_Error_Code eb_search_multi(EB_Book *book, EB_Multi_Search_Code multi_id, - const char * const input_words[]); - -/* text.c */ -int eb_have_text(EB_Book *book); -EB_Error_Code eb_text(EB_Book *book, EB_Position *position); - -/* search.c */ -EB_Error_Code eb_hit_list(EB_Book *book, int max_hit_count, EB_Hit *hit_list, - int *hit_count); - -/* subbook.c */ -EB_Error_Code eb_load_all_subbooks(EB_Book *book); -EB_Error_Code eb_subbook_list(EB_Book *book, EB_Subbook_Code *subbook_list, - int *subbook_count); -EB_Error_Code eb_subbook(EB_Book *book, EB_Subbook_Code *subbook_code); -EB_Error_Code eb_subbook_title(EB_Book *book, char *title); -EB_Error_Code eb_subbook_title2(EB_Book *book, EB_Subbook_Code subbook_code, - char *title); -EB_Error_Code eb_subbook_directory(EB_Book *book, char *directory); -EB_Error_Code eb_subbook_directory2(EB_Book *book, - EB_Subbook_Code subbook_code, char *directory); -EB_Error_Code eb_set_subbook(EB_Book *book, EB_Subbook_Code subbook_code); -void eb_unset_subbook(EB_Book *book); - -/* word.c */ -int eb_have_word_search(EB_Book *book); -EB_Error_Code eb_search_word(EB_Book *book, const char *input_word); - -/* for backward compatibility */ -#define eb_suspend eb_unset_subbook -#define eb_initialize_all_subbooks eb_load_all_subbooks - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_EB_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/error.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/error.h deleted file mode 100644 index b2f2b392e5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/error.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_ERROR_H -#define EB_ERROR_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Error codes. - */ -#define EB_SUCCESS 0 -#define EB_ERR_MEMORY_EXHAUSTED 1 -#define EB_ERR_EMPTY_FILE_NAME 2 -#define EB_ERR_TOO_LONG_FILE_NAME 3 -#define EB_ERR_BAD_FILE_NAME 4 - -#define EB_ERR_BAD_DIR_NAME 5 -#define EB_ERR_TOO_LONG_WORD 6 -#define EB_ERR_BAD_WORD 7 -#define EB_ERR_EMPTY_WORD 8 -#define EB_ERR_FAIL_GETCWD 9 - -#define EB_ERR_FAIL_OPEN_CAT 10 -#define EB_ERR_FAIL_OPEN_CATAPP 11 -#define EB_ERR_FAIL_OPEN_TEXT 12 -#define EB_ERR_FAIL_OPEN_FONT 13 -#define EB_ERR_FAIL_OPEN_APP 14 - -#define EB_ERR_FAIL_OPEN_BINARY 15 -#define EB_ERR_FAIL_READ_CAT 16 -#define EB_ERR_FAIL_READ_CATAPP 17 -#define EB_ERR_FAIL_READ_TEXT 18 -#define EB_ERR_FAIL_READ_FONT 19 - -#define EB_ERR_FAIL_READ_APP 20 -#define EB_ERR_FAIL_READ_BINARY 21 -#define EB_ERR_FAIL_SEEK_CAT 22 -#define EB_ERR_FAIL_SEEK_CATAPP 23 -#define EB_ERR_FAIL_SEEK_TEXT 24 - -#define EB_ERR_FAIL_SEEK_FONT 25 -#define EB_ERR_FAIL_SEEK_APP 26 -#define EB_ERR_FAIL_SEEK_BINARY 27 -#define EB_ERR_UNEXP_CAT 28 -#define EB_ERR_UNEXP_CATAPP 29 - -#define EB_ERR_UNEXP_TEXT 30 -#define EB_ERR_UNEXP_FONT 31 -#define EB_ERR_UNEXP_APP 32 -#define EB_ERR_UNEXP_BINARY 33 -#define EB_ERR_UNBOUND_BOOK 34 - -#define EB_ERR_UNBOUND_APP 35 -#define EB_ERR_NO_SUB 36 -#define EB_ERR_NO_APPSUB 37 -#define EB_ERR_NO_FONT 38 -#define EB_ERR_NO_TEXT 39 - -#define EB_ERR_NO_STOPCODE 40 -#define EB_ERR_NO_ALT 41 -#define EB_ERR_NO_CUR_SUB 42 -#define EB_ERR_NO_CUR_APPSUB 43 -#define EB_ERR_NO_CUR_FONT 44 - -#define EB_ERR_NO_CUR_BINARY 45 -#define EB_ERR_NO_SUCH_SUB 46 -#define EB_ERR_NO_SUCH_APPSUB 47 -#define EB_ERR_NO_SUCH_FONT 48 -#define EB_ERR_NO_SUCH_CHAR_BMP 49 - -#define EB_ERR_NO_SUCH_CHAR_TEXT 50 -#define EB_ERR_NO_SUCH_SEARCH 51 -#define EB_ERR_NO_SUCH_HOOK 52 -#define EB_ERR_NO_SUCH_BINARY 53 -#define EB_ERR_DIFF_CONTENT 54 - -#define EB_ERR_NO_PREV_SEARCH 55 -#define EB_ERR_NO_SUCH_MULTI_ID 56 -#define EB_ERR_NO_SUCH_ENTRY_ID 57 -#define EB_ERR_TOO_MANY_WORDS 58 -#define EB_ERR_NO_WORD 59 - -#define EB_ERR_NO_CANDIDATES 60 -#define EB_ERR_END_OF_CONTENT 61 -#define EB_ERR_NO_PREV_SEEK 62 -#define EB_ERR_EBNET_UNSUPPORTED 63 -#define EB_ERR_EBNET_FAIL_CONNECT 64 - -#define EB_ERR_EBNET_SERVER_BUSY 65 -#define EB_ERR_EBNET_NO_PERMISSION 66 -#define EB_ERR_UNBOUND_BOOKLIST 67 -#define EB_ERR_NO_SUCH_BOOK 68 - - -/* - * The number of error codes. - */ -#define EB_NUMBER_OF_ERRORS 69 - -/* - * The maximum length of an error message. - */ -#define EB_MAX_ERROR_MESSAGE_LENGTH 127 - -/* - * Function declarations. - */ -/* error.c */ -const char *eb_error_string(EB_Error_Code error_code); -const char *eb_error_message(EB_Error_Code error_code); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_ERROR_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/font.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/font.h deleted file mode 100644 index bd4d675802..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/font.h +++ /dev/null @@ -1,200 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_FONT_H -#define EB_FONT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Font types. - */ -#define EB_FONT_16 0 -#define EB_FONT_24 1 -#define EB_FONT_30 2 -#define EB_FONT_48 3 -#define EB_FONT_INVALID -1 - -/* - * Font sizes. - */ -#define EB_SIZE_NARROW_FONT_16 16 -#define EB_SIZE_WIDE_FONT_16 32 -#define EB_SIZE_NARROW_FONT_24 48 -#define EB_SIZE_WIDE_FONT_24 72 -#define EB_SIZE_NARROW_FONT_30 60 -#define EB_SIZE_WIDE_FONT_30 120 -#define EB_SIZE_NARROW_FONT_48 144 -#define EB_SIZE_WIDE_FONT_48 288 - -/* - * Font width. - */ -#define EB_WIDTH_NARROW_FONT_16 8 -#define EB_WIDTH_WIDE_FONT_16 16 -#define EB_WIDTH_NARROW_FONT_24 16 -#define EB_WIDTH_WIDE_FONT_24 24 -#define EB_WIDTH_NARROW_FONT_30 16 -#define EB_WIDTH_WIDE_FONT_30 32 -#define EB_WIDTH_NARROW_FONT_48 24 -#define EB_WIDTH_WIDE_FONT_48 48 - -/* - * Font height. - */ -#define EB_HEIGHT_FONT_16 16 -#define EB_HEIGHT_FONT_24 24 -#define EB_HEIGHT_FONT_30 30 -#define EB_HEIGHT_FONT_48 48 - -/* - * Bitmap image sizes. - */ -#define EB_SIZE_NARROW_FONT_16_XBM 184 -#define EB_SIZE_WIDE_FONT_16_XBM 284 -#define EB_SIZE_NARROW_FONT_16_XPM 266 -#define EB_SIZE_WIDE_FONT_16_XPM 395 -#define EB_SIZE_NARROW_FONT_16_GIF 186 -#define EB_SIZE_WIDE_FONT_16_GIF 314 -#define EB_SIZE_NARROW_FONT_16_BMP 126 -#define EB_SIZE_WIDE_FONT_16_BMP 126 -#define EB_SIZE_NARROW_FONT_16_PNG 131 -#define EB_SIZE_WIDE_FONT_16_PNG 147 - -#define EB_SIZE_NARROW_FONT_24_XBM 383 -#define EB_SIZE_WIDE_FONT_24_XBM 533 -#define EB_SIZE_NARROW_FONT_24_XPM 555 -#define EB_SIZE_WIDE_FONT_24_XPM 747 -#define EB_SIZE_NARROW_FONT_24_GIF 450 -#define EB_SIZE_WIDE_FONT_24_GIF 642 -#define EB_SIZE_NARROW_FONT_24_BMP 158 -#define EB_SIZE_WIDE_FONT_24_BMP 158 -#define EB_SIZE_NARROW_FONT_24_PNG 171 -#define EB_SIZE_WIDE_FONT_24_PNG 195 - -#define EB_SIZE_NARROW_FONT_30_XBM 458 -#define EB_SIZE_WIDE_FONT_30_XBM 833 -#define EB_SIZE_NARROW_FONT_30_XPM 675 -#define EB_SIZE_WIDE_FONT_30_XPM 1155 -#define EB_SIZE_NARROW_FONT_30_GIF 552 -#define EB_SIZE_WIDE_FONT_30_GIF 1032 -#define EB_SIZE_NARROW_FONT_30_BMP 182 -#define EB_SIZE_WIDE_FONT_30_BMP 182 -#define EB_SIZE_NARROW_FONT_30_PNG 189 -#define EB_SIZE_WIDE_FONT_30_PNG 249 - -#define EB_SIZE_NARROW_FONT_48_XBM 983 -#define EB_SIZE_WIDE_FONT_48_XBM 1883 -#define EB_SIZE_NARROW_FONT_48_XPM 1419 -#define EB_SIZE_WIDE_FONT_48_XPM 2571 -#define EB_SIZE_NARROW_FONT_48_GIF 1242 -#define EB_SIZE_WIDE_FONT_48_GIF 2394 -#define EB_SIZE_NARROW_FONT_48_BMP 254 -#define EB_SIZE_WIDE_FONT_48_BMP 446 -#define EB_SIZE_NARROW_FONT_48_PNG 291 -#define EB_SIZE_WIDE_FONT_48_PNG 435 - -#define EB_SIZE_FONT_IMAGE EB_SIZE_WIDE_FONT_48_XPM - -/* - * Function declarations. - */ -/* bitmap.c */ -EB_Error_Code eb_narrow_font_xbm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_xpm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_gif_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_bmp_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_png_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_xbm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_xpm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_gif_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_bmp_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_png_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_bitmap_to_xbm(const char *bitmap, int width, int height, - char *xbm, size_t *xbm_length); -EB_Error_Code eb_bitmap_to_xpm(const char *bitmap, int width, int height, - char *xpm, size_t *xpm_length); -EB_Error_Code eb_bitmap_to_gif(const char *bitmap, int width, int height, - char *gif, size_t *gif_length); -EB_Error_Code eb_bitmap_to_bmp(const char *bitmap, int width, int height, - char *bmp, size_t *bmp_length); -EB_Error_Code eb_bitmap_to_png(const char *bitmap, int width, int height, - char *png, size_t *png_length); - -/* font.c */ -EB_Error_Code eb_font(EB_Book *book, EB_Font_Code *font_code); -EB_Error_Code eb_set_font(EB_Book *book, EB_Font_Code font_code); -void eb_unset_font(EB_Book *book); -EB_Error_Code eb_font_list(EB_Book *book, EB_Font_Code *font_list, - int *font_count); -int eb_have_font(EB_Book *book, EB_Font_Code font_code); -EB_Error_Code eb_font_height(EB_Book *book, int *height); -EB_Error_Code eb_font_height2(EB_Font_Code font_code, int *height); - -/* narwfont.c */ -int eb_have_narrow_font(EB_Book *book); -EB_Error_Code eb_narrow_font_width(EB_Book *book, int *width); -EB_Error_Code eb_narrow_font_width2(EB_Font_Code font_code, int *width); -EB_Error_Code eb_narrow_font_size(EB_Book *book, size_t *size); -EB_Error_Code eb_narrow_font_size2(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_start(EB_Book *book, int *start); -EB_Error_Code eb_narrow_font_end(EB_Book *book, int *end); -EB_Error_Code eb_narrow_font_character_bitmap(EB_Book *book, int, char *); -EB_Error_Code eb_forward_narrow_font_character(EB_Book *book, int, int *); -EB_Error_Code eb_backward_narrow_font_character(EB_Book *book, int, int *); - -/* widefont.c */ -int eb_have_wide_font(EB_Book *book); -EB_Error_Code eb_wide_font_width(EB_Book *book, int *width); -EB_Error_Code eb_wide_font_width2(EB_Font_Code font_code, int *width); -EB_Error_Code eb_wide_font_size(EB_Book *book, size_t *size); -EB_Error_Code eb_wide_font_size2(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_start(EB_Book *book, int *start); -EB_Error_Code eb_wide_font_end(EB_Book *book, int *end); -EB_Error_Code eb_wide_font_character_bitmap(EB_Book *book, - int character_number, char *bitmap); -EB_Error_Code eb_forward_wide_font_character(EB_Book *book, int n, - int *character_number); -EB_Error_Code eb_backward_wide_font_character(EB_Book *book, int n, - int *character_number); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_FONT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/sysdefs.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/sysdefs.h deleted file mode 100644 index e66f8776ca..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/sysdefs.h +++ /dev/null @@ -1,4 +0,0 @@ -/* automatically generated by Makefile. */ -#define EB_VERSION_STRING "4.4.3" -#define EB_VERSION_MAJOR 4 -#define EB_VERSION_MINOR 4 diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/text.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/text.h deleted file mode 100644 index caba03eab1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/text.h +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_TEXT_H -#define EB_TEXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Hook codes. - * (When you add or remove a hook, update EB_NUMER_OF_HOOKS in defs.h.) - */ -#define EB_HOOK_NULL -1 -#define EB_HOOK_INITIALIZE 0 -#define EB_HOOK_BEGIN_NARROW 1 -#define EB_HOOK_END_NARROW 2 -#define EB_HOOK_BEGIN_SUBSCRIPT 3 -#define EB_HOOK_END_SUBSCRIPT 4 - -#define EB_HOOK_SET_INDENT 5 -#define EB_HOOK_NEWLINE 6 -#define EB_HOOK_BEGIN_SUPERSCRIPT 7 -#define EB_HOOK_END_SUPERSCRIPT 8 -#define EB_HOOK_BEGIN_NO_NEWLINE 9 - -#define EB_HOOK_END_NO_NEWLINE 10 -#define EB_HOOK_BEGIN_EMPHASIS 11 -#define EB_HOOK_END_EMPHASIS 12 -#define EB_HOOK_BEGIN_CANDIDATE 13 -#define EB_HOOK_END_CANDIDATE_GROUP 14 - -#define EB_HOOK_END_CANDIDATE_LEAF 15 -#define EB_HOOK_BEGIN_REFERENCE 16 -#define EB_HOOK_END_REFERENCE 17 -#define EB_HOOK_BEGIN_KEYWORD 18 -#define EB_HOOK_END_KEYWORD 19 - -#define EB_HOOK_NARROW_FONT 20 -#define EB_HOOK_WIDE_FONT 21 -#define EB_HOOK_ISO8859_1 22 -#define EB_HOOK_NARROW_JISX0208 23 -#define EB_HOOK_WIDE_JISX0208 24 - -#define EB_HOOK_GB2312 25 -#define EB_HOOK_BEGIN_MONO_GRAPHIC 26 -#define EB_HOOK_END_MONO_GRAPHIC 27 -#define EB_HOOK_BEGIN_GRAY_GRAPHIC 28 -#define EB_HOOK_END_GRAY_GRAPHIC 29 - -#define EB_HOOK_BEGIN_COLOR_BMP 30 -#define EB_HOOK_BEGIN_COLOR_JPEG 31 -#define EB_HOOK_BEGIN_IN_COLOR_BMP 32 -#define EB_HOOK_BEGIN_IN_COLOR_JPEG 33 -#define EB_HOOK_END_COLOR_GRAPHIC 34 - -#define EB_HOOK_END_IN_COLOR_GRAPHIC 35 -#define EB_HOOK_BEGIN_WAVE 36 -#define EB_HOOK_END_WAVE 37 -#define EB_HOOK_BEGIN_MPEG 38 -#define EB_HOOK_END_MPEG 39 - -#define EB_HOOK_BEGIN_GRAPHIC_REFERENCE 40 -#define EB_HOOK_END_GRAPHIC_REFERENCE 41 -#define EB_HOOK_GRAPHIC_REFERENCE 42 -#define EB_HOOK_BEGIN_DECORATION 43 -#define EB_HOOK_END_DECORATION 44 - -#define EB_HOOK_BEGIN_IMAGE_PAGE 45 -#define EB_HOOK_END_IMAGE_PAGE 46 -#define EB_HOOK_BEGIN_CLICKABLE_AREA 47 -#define EB_HOOK_END_CLICKABLE_AREA 48 - -#define EB_HOOK_BEGIN_UNICODE 49 -#define EB_HOOK_END_UNICODE 50 -#define EB_HOOK_BEGIN_EBXAC_GAIJI 51 -#define EB_HOOK_END_EBXAC_GAIJI 52 -#define EB_HOOK_EBXAC_GAIJI 53 - -/* - * Function declarations. - */ -/* hook.c */ -void eb_initialize_hookset(EB_Hookset *hookset); -void eb_finalize_hookset(EB_Hookset *hookset); -EB_Error_Code eb_set_hook(EB_Hookset *hookset, const EB_Hook *hook); -EB_Error_Code eb_set_hooks(EB_Hookset *hookset, const EB_Hook *hook); -EB_Error_Code eb_hook_euc_to_ascii(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_stop_code(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_narrow_character_text(EB_Book *book, - EB_Appendix *appendix, void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_wide_character_text(EB_Book *book, - EB_Appendix *appendix, void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_newline(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_empty(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); - -/* readtext.c */ -EB_Error_Code eb_seek_text(EB_Book *book, const EB_Position *position); -EB_Error_Code eb_tell_text(EB_Book *book, EB_Position *position); -EB_Error_Code eb_read_text(EB_Book *book, EB_Appendix *appendix, - EB_Hookset *hookset, void *container, size_t text_max_length, char *text, - ssize_t *text_length); -EB_Error_Code eb_read_heading(EB_Book *book, EB_Appendix *appendix, - EB_Hookset *hookset, void *container, size_t text_max_length, char *text, - ssize_t *text_length); -EB_Error_Code eb_read_rawtext(EB_Book *book, size_t text_max_length, - char *text, ssize_t *text_length); -int eb_is_text_stopped(EB_Book *book); -EB_Error_Code eb_write_text_byte1(EB_Book *book, int byte1); -EB_Error_Code eb_write_text_byte2(EB_Book *book, int byte1, int byte2); -EB_Error_Code eb_write_text_string(EB_Book *book, const char *string); -EB_Error_Code eb_write_text(EB_Book *book, const char * stream, - size_t stream_length); -const char *eb_current_candidate(EB_Book *book); -EB_Error_Code eb_forward_text(EB_Book *book, EB_Appendix *appendix); -EB_Error_Code eb_backward_text(EB_Book *book, EB_Appendix *appendix); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_TEXT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/zio.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/zio.h deleted file mode 100644 index 0cb7bbd80a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/eb/zio.h +++ /dev/null @@ -1,237 +0,0 @@ -/* -*- C -*- - * Copyright (c) 2001-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef ZIO_H -#define ZIO_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* - * Header size of the ebzip compression file. - */ -#define ZIO_SIZE_EBZIP_HEADER 22 - -/* - * Margin size for ebzip compression buffer. - * (Since compressed data is larger than original in the worst case, - * we must add margin to a compression buffer.) - */ -#define ZIO_SIZE_EBZIP_MARGIN 1024 - -/* - * Maximum ebzio compression level. - */ -#define ZIO_MAX_EBZIP_LEVEL 5 - -/* - * Huffman node types. - */ -#define ZIO_HUFFMAN_NODE_INTERMEDIATE 0 -#define ZIO_HUFFMAN_NODE_EOF 1 -#define ZIO_HUFFMAN_NODE_LEAF8 2 -#define ZIO_HUFFMAN_NODE_LEAF16 3 -#define ZIO_HUFFMAN_NODE_LEAF32 4 - -/* - * Compression type codes. - */ -#define ZIO_PLAIN 0 -#define ZIO_EBZIP1 1 -#define ZIO_EPWING 2 -#define ZIO_EPWING6 3 -#define ZIO_SEBXA 4 -#define ZIO_INVALID -1 -#define ZIO_REOPEN -2 - -/* - * Compression type. - */ -typedef int Zio_Code; - -/* - * A node of static Huffman tree. - */ -typedef struct Zio_Huffman_Node_Struct Zio_Huffman_Node; - -struct Zio_Huffman_Node_Struct { - /* - * node type (ITNERMEDIATE, LEAF8, LEAF16, LEAF32 or EOF). - */ - int type; - - /* - * Value of a leaf node. - */ - unsigned int value; - - /* - * Frequency of a node. - */ - int frequency; - - /* - * Left child. - */ - Zio_Huffman_Node *left; - - /* - * Right child. - */ - Zio_Huffman_Node *right; -}; - -/* - * Compression information of a book. - */ -typedef struct Zio_Struct Zio; - -struct Zio_Struct { - /* - * ID. - */ - int id; - - /* - * Zio type. (PLAIN, EBZIP, EPWING, EPWING6 or SEBXA) - */ - Zio_Code code; - - /* - * File descriptor. - */ - int file; - - /* - * Current location. - */ - off_t location; - - /* - * Size of an uncompressed file. - */ - off_t file_size; - - /* - * Slice size of an EBZIP compressed file. - */ - size_t slice_size; - - /* - * Compression level. (EBZIP compression only) - */ - int zip_level; - - /* - * Length of an index. (EBZIP compression only) - */ - int index_width; - - /* - * Adler-32 check sum of an uncompressed file. (EBZIP compression only) - */ - unsigned int crc; - - /* - * mtime of an uncompressed file. (EBZIP compression only) - */ - time_t mtime; - - /* - * Location of an index table. (EPWING and S-EBXA compression only) - */ - off_t index_location; - - /* - * Length of an index table. (EPWING and S-EBXA compression only) - */ - size_t index_length; - - /* - * Location of a frequency table. (EPWING compression only) - */ - off_t frequencies_location; - - /* - * Length of a frequency table. (EPWING compression only) - */ - size_t frequencies_length; - - /* - * Huffman tree nodes. (EPWING compression only) - */ - Zio_Huffman_Node *huffman_nodes; - - /* - * Root node of a Huffman tree. (EPWING compression only) - */ - Zio_Huffman_Node *huffman_root; - - /* - * Region of compressed pages. (S-EBXA compression only) - */ - off_t zio_start_location; - off_t zio_end_location; - - /* - * Add this value to offset written in index. (S-EBXA compression only) - */ - off_t index_base; - - /* - * ebnet mode flag. - */ - int is_ebnet; -}; - -/* - * Function declarations. - */ -/* zio.c */ -int zio_initialize_library(void); -void zio_finalize_library(void); -void zio_initialize(Zio *zio); -void zio_finalize(Zio *zio); -int zio_set_sebxa_mode(Zio *zio, off_t index_location, off_t index_base, - off_t zio_start_location, off_t zio_end_location); -int zio_open(Zio *zio, const char *file_name, Zio_Code zio_code); -void zio_close(Zio *zio); -int zio_file(Zio *zio); -Zio_Code zio_mode(Zio *zio); -off_t zio_lseek(Zio *zio, off_t offset, int whence); -ssize_t zio_read(Zio *zio, char *buffer, size_t length); - -#ifdef __cplusplus -} -#endif - -#endif /* not ZIO_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/affentry.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/affentry.hxx deleted file mode 100644 index eaf361fcce..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/affentry.hxx +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef _AFFIX_HXX_ -#define _AFFIX_HXX_ - -#include "hunvisapi.h" - -#include "atypes.hxx" -#include "baseaffix.hxx" -#include "affixmgr.hxx" - -/* A Prefix Entry */ - -class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected AffEntry -{ - AffixMgr* pmyMgr; - - PfxEntry * next; - PfxEntry * nexteq; - PfxEntry * nextne; - PfxEntry * flgnxt; - -public: - - PfxEntry(AffixMgr* pmgr, affentry* dp ); - ~PfxEntry(); - - inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); } - struct hentry * checkword(const char * word, int len, char in_compound, - const FLAG needflag = FLAG_NULL); - - struct hentry * check_twosfx(const char * word, int len, char in_compound, const FLAG needflag = NULL); - - char * check_morph(const char * word, int len, char in_compound, - const FLAG needflag = FLAG_NULL); - - char * check_twosfx_morph(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - - inline FLAG getFlag() { return aflag; } - inline const char * getKey() { return appnd; } - char * add(const char * word, int len); - - inline short getKeyLen() { return appndl; } - - inline const char * getMorph() { return morphcode; } - - inline const unsigned short * getCont() { return contclass; } - inline short getContLen() { return contclasslen; } - - inline PfxEntry * getNext() { return next; } - inline PfxEntry * getNextNE() { return nextne; } - inline PfxEntry * getNextEQ() { return nexteq; } - inline PfxEntry * getFlgNxt() { return flgnxt; } - - inline void setNext(PfxEntry * ptr) { next = ptr; } - inline void setNextNE(PfxEntry * ptr) { nextne = ptr; } - inline void setNextEQ(PfxEntry * ptr) { nexteq = ptr; } - inline void setFlgNxt(PfxEntry * ptr) { flgnxt = ptr; } - - inline char * nextchar(char * p); - inline int test_condition(const char * st); -}; - - - - -/* A Suffix Entry */ - -class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected AffEntry -{ - AffixMgr* pmyMgr; - char * rappnd; - - SfxEntry * next; - SfxEntry * nexteq; - SfxEntry * nextne; - SfxEntry * flgnxt; - - SfxEntry * l_morph; - SfxEntry * r_morph; - SfxEntry * eq_morph; - -public: - - SfxEntry(AffixMgr* pmgr, affentry* dp ); - ~SfxEntry(); - - inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); } - struct hentry * checkword(const char * word, int len, int optflags, - PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, -// const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound=IN_CPD_NOT); - const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, const FLAG badflag = 0); - - struct hentry * check_twosfx(const char * word, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = NULL); - - char * check_twosfx_morph(const char * word, int len, int optflags, - PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); - struct hentry * get_next_homonym(struct hentry * he); - struct hentry * get_next_homonym(struct hentry * word, int optflags, PfxEntry* ppfx, - const FLAG cclass, const FLAG needflag); - - - inline FLAG getFlag() { return aflag; } - inline const char * getKey() { return rappnd; } - char * add(const char * word, int len); - - - inline const char * getMorph() { return morphcode; } - - inline const unsigned short * getCont() { return contclass; } - inline short getContLen() { return contclasslen; } - inline const char * getAffix() { return appnd; } - - inline short getKeyLen() { return appndl; } - - inline SfxEntry * getNext() { return next; } - inline SfxEntry * getNextNE() { return nextne; } - inline SfxEntry * getNextEQ() { return nexteq; } - - inline SfxEntry * getLM() { return l_morph; } - inline SfxEntry * getRM() { return r_morph; } - inline SfxEntry * getEQM() { return eq_morph; } - inline SfxEntry * getFlgNxt() { return flgnxt; } - - inline void setNext(SfxEntry * ptr) { next = ptr; } - inline void setNextNE(SfxEntry * ptr) { nextne = ptr; } - inline void setNextEQ(SfxEntry * ptr) { nexteq = ptr; } - inline void setFlgNxt(SfxEntry * ptr) { flgnxt = ptr; } - - inline char * nextchar(char * p); - inline int test_condition(const char * st, const char * begin); - -}; - -#endif - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/affixmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/affixmgr.hxx deleted file mode 100644 index d9c625aed0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/affixmgr.hxx +++ /dev/null @@ -1,250 +0,0 @@ -#ifndef _AFFIXMGR_HXX_ -#define _AFFIXMGR_HXX_ - -#include "hunvisapi.h" - -#include - -#include "atypes.hxx" -#include "baseaffix.hxx" -#include "hashmgr.hxx" -#include "phonet.hxx" -#include "replist.hxx" - -// check flag duplication -#define dupSFX (1 << 0) -#define dupPFX (1 << 1) - -class PfxEntry; -class SfxEntry; - -class LIBHUNSPELL_DLL_EXPORTED AffixMgr -{ - - PfxEntry * pStart[SETSIZE]; - SfxEntry * sStart[SETSIZE]; - PfxEntry * pFlag[SETSIZE]; - SfxEntry * sFlag[SETSIZE]; - HashMgr * pHMgr; - HashMgr ** alldic; - int * maxdic; - char * keystring; - char * trystring; - char * encoding; - struct cs_info * csconv; - int utf8; - int complexprefixes; - FLAG compoundflag; - FLAG compoundbegin; - FLAG compoundmiddle; - FLAG compoundend; - FLAG compoundroot; - FLAG compoundforbidflag; - FLAG compoundpermitflag; - int checkcompounddup; - int checkcompoundrep; - int checkcompoundcase; - int checkcompoundtriple; - int simplifiedtriple; - FLAG forbiddenword; - FLAG nosuggest; - FLAG nongramsuggest; - FLAG needaffix; - int cpdmin; - int numrep; - replentry * reptable; - RepList * iconvtable; - RepList * oconvtable; - int nummap; - mapentry * maptable; - int numbreak; - char ** breaktable; - int numcheckcpd; - patentry * checkcpdtable; - int simplifiedcpd; - int numdefcpd; - flagentry * defcpdtable; - phonetable * phone; - int maxngramsugs; - int maxcpdsugs; - int maxdiff; - int onlymaxdiff; - int nosplitsugs; - int sugswithdots; - int cpdwordmax; - int cpdmaxsyllable; - char * cpdvowels; - w_char * cpdvowels_utf16; - int cpdvowels_utf16_len; - char * cpdsyllablenum; - const char * pfxappnd; // BUG: not stateless - const char * sfxappnd; // BUG: not stateless - FLAG sfxflag; // BUG: not stateless - char * derived; // BUG: not stateless - SfxEntry * sfx; // BUG: not stateless - PfxEntry * pfx; // BUG: not stateless - int checknum; - char * wordchars; - unsigned short * wordchars_utf16; - int wordchars_utf16_len; - char * ignorechars; - unsigned short * ignorechars_utf16; - int ignorechars_utf16_len; - char * version; - char * lang; - int langnum; - FLAG lemma_present; - FLAG circumfix; - FLAG onlyincompound; - FLAG keepcase; - FLAG forceucase; - FLAG warn; - int forbidwarn; - FLAG substandard; - int checksharps; - int fullstrip; - - int havecontclass; // boolean variable - char contclasses[CONTSIZE]; // flags of possible continuing classes (twofold affix) - -public: - - AffixMgr(const char * affpath, HashMgr** ptr, int * md, - const char * key = NULL); - ~AffixMgr(); - struct hentry * affix_check(const char * word, int len, - const unsigned short needflag = (unsigned short) 0, - char in_compound = IN_CPD_NOT); - struct hentry * prefix_check(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - inline int isSubset(const char * s1, const char * s2); - struct hentry * prefix_check_twosfx(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - inline int isRevSubset(const char * s1, const char * end_of_s2, int len); - struct hentry * suffix_check(const char * word, int len, int sfxopts, - PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, - const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, - char in_compound = IN_CPD_NOT); - struct hentry * suffix_check_twosfx(const char * word, int len, - int sfxopts, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); - - char * affix_check_morph(const char * word, int len, - const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); - char * prefix_check_morph(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - char * suffix_check_morph (const char * word, int len, int sfxopts, - PfxEntry * ppfx, const FLAG cclass = FLAG_NULL, - const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); - - char * prefix_check_twosfx_morph(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - char * suffix_check_twosfx_morph(const char * word, int len, - int sfxopts, PfxEntry * ppfx, const FLAG needflag = FLAG_NULL); - - char * morphgen(char * ts, int wl, const unsigned short * ap, - unsigned short al, char * morph, char * targetmorph, int level); - - int expand_rootword(struct guessword * wlst, int maxn, const char * ts, - int wl, const unsigned short * ap, unsigned short al, char * bad, - int, char *); - - short get_syllable (const char * word, int wlen); - int cpdrep_check(const char * word, int len); - int cpdpat_check(const char * word, int len, hentry * r1, hentry * r2, - const char affixed); - int defcpd_check(hentry *** words, short wnum, hentry * rv, - hentry ** rwords, char all); - int cpdcase_check(const char * word, int len); - inline int candidate_check(const char * word, int len); - void setcminmax(int * cmin, int * cmax, const char * word, int len); - struct hentry * compound_check(const char * word, int len, short wordnum, - short numsyllable, short maxwordnum, short wnum, hentry ** words, - char hu_mov_rule, char is_sug, int * info); - - int compound_check_morph(const char * word, int len, short wordnum, - short numsyllable, short maxwordnum, short wnum, hentry ** words, - char hu_mov_rule, char ** result, char * partresult); - - struct hentry * lookup(const char * word); - int get_numrep() const; - struct replentry * get_reptable() const; - RepList * get_iconvtable() const; - RepList * get_oconvtable() const; - struct phonetable * get_phonetable() const; - int get_nummap() const; - struct mapentry * get_maptable() const; - int get_numbreak() const; - char ** get_breaktable() const; - char * get_encoding(); - int get_langnum() const; - char * get_key_string(); - char * get_try_string() const; - const char * get_wordchars() const; - unsigned short * get_wordchars_utf16(int * len) const; - char * get_ignore() const; - unsigned short * get_ignore_utf16(int * len) const; - int get_compound() const; - FLAG get_compoundflag() const; - FLAG get_compoundbegin() const; - FLAG get_forbiddenword() const; - FLAG get_nosuggest() const; - FLAG get_nongramsuggest() const; - FLAG get_needaffix() const; - FLAG get_onlyincompound() const; - FLAG get_compoundroot() const; - FLAG get_lemma_present() const; - int get_checknum() const; - const char * get_prefix() const; - const char * get_suffix() const; - const char * get_derived() const; - const char * get_version() const; - int have_contclass() const; - int get_utf8() const; - int get_complexprefixes() const; - char * get_suffixed(char ) const; - int get_maxngramsugs() const; - int get_maxcpdsugs() const; - int get_maxdiff() const; - int get_onlymaxdiff() const; - int get_nosplitsugs() const; - int get_sugswithdots(void) const; - FLAG get_keepcase(void) const; - FLAG get_forceucase(void) const; - FLAG get_warn(void) const; - int get_forbidwarn(void) const; - int get_checksharps(void) const; - char * encode_flag(unsigned short aflag) const; - int get_fullstrip() const; - -private: - int parse_file(const char * affpath, const char * key); - int parse_flag(char * line, unsigned short * out, FileMgr * af); - int parse_num(char * line, int * out, FileMgr * af); - int parse_cpdsyllable(char * line, FileMgr * af); - int parse_reptable(char * line, FileMgr * af); - int parse_convtable(char * line, FileMgr * af, RepList ** rl, const char * keyword); - int parse_phonetable(char * line, FileMgr * af); - int parse_maptable(char * line, FileMgr * af); - int parse_breaktable(char * line, FileMgr * af); - int parse_checkcpdtable(char * line, FileMgr * af); - int parse_defcpdtable(char * line, FileMgr * af); - int parse_affix(char * line, const char at, FileMgr * af, char * dupflags); - - void reverse_condition(char *); - void debugflag(char * result, unsigned short flag); - int condlen(char *); - int encodeit(affentry &entry, char * cs); - int build_pfxtree(PfxEntry* pfxptr); - int build_sfxtree(SfxEntry* sfxptr); - int process_pfx_order(); - int process_sfx_order(); - PfxEntry * process_pfx_in_order(PfxEntry * ptr, PfxEntry * nptr); - SfxEntry * process_sfx_in_order(SfxEntry * ptr, SfxEntry * nptr); - int process_pfx_tree_to_list(); - int process_sfx_tree_to_list(); - int redundant_condition(char, char * strip, int stripl, - const char * cond, int); -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/atypes.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/atypes.hxx deleted file mode 100644 index df27c4d1cb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/atypes.hxx +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef _ATYPES_HXX_ -#define _ATYPES_HXX_ - -#ifndef HUNSPELL_WARNING -#include -#ifdef HUNSPELL_WARNING_ON -#define HUNSPELL_WARNING fprintf -#else -// empty inline function to switch off warnings (instead of the C99 standard variadic macros) -static inline void HUNSPELL_WARNING(FILE *, const char *, ...) {} -#endif -#endif - -// HUNSTEM def. -#define HUNSTEM - -#include "hashmgr.hxx" -#include "w_char.hxx" - -#define SETSIZE 256 -#define CONTSIZE 65536 -#define MAXWORDLEN 100 -#define MAXWORDUTF8LEN 256 - -// affentry options -#define aeXPRODUCT (1 << 0) -#define aeUTF8 (1 << 1) -#define aeALIASF (1 << 2) -#define aeALIASM (1 << 3) -#define aeLONGCOND (1 << 4) - -// compound options -#define IN_CPD_NOT 0 -#define IN_CPD_BEGIN 1 -#define IN_CPD_END 2 -#define IN_CPD_OTHER 3 - -// info options -#define SPELL_COMPOUND (1 << 0) -#define SPELL_FORBIDDEN (1 << 1) -#define SPELL_ALLCAP (1 << 2) -#define SPELL_NOCAP (1 << 3) -#define SPELL_INITCAP (1 << 4) -#define SPELL_ORIGCAP (1 << 5) -#define SPELL_WARN (1 << 6) - -#define MAXLNLEN 8192 - -#define MINCPDLEN 3 -#define MAXCOMPOUND 10 -#define MAXCONDLEN 20 -#define MAXCONDLEN_1 (MAXCONDLEN - sizeof(char *)) - -#define MAXACC 1000 - -#define FLAG unsigned short -#define FLAG_NULL 0x00 -#define FREE_FLAG(a) a = 0 - -#define TESTAFF( a, b , c ) flag_bsearch((unsigned short *) a, (unsigned short) b, c) - -struct affentry -{ - char * strip; - char * appnd; - unsigned char stripl; - unsigned char appndl; - char numconds; - char opts; - unsigned short aflag; - unsigned short * contclass; - short contclasslen; - union { - char conds[MAXCONDLEN]; - struct { - char conds1[MAXCONDLEN_1]; - char * conds2; - } l; - } c; - char * morphcode; -}; - -struct guessword { - char * word; - bool allow; - char * orig; -}; - -struct mapentry { - char ** set; - int len; -}; - -struct flagentry { - FLAG * def; - int len; -}; - -struct patentry { - char * pattern; - char * pattern2; - char * pattern3; - FLAG cond; - FLAG cond2; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/baseaffix.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/baseaffix.hxx deleted file mode 100644 index ed64f3d84f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/baseaffix.hxx +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _BASEAFF_HXX_ -#define _BASEAFF_HXX_ - -#include "hunvisapi.h" - -class LIBHUNSPELL_DLL_EXPORTED AffEntry -{ -protected: - char * appnd; - char * strip; - unsigned char appndl; - unsigned char stripl; - char numconds; - char opts; - unsigned short aflag; - union { - char conds[MAXCONDLEN]; - struct { - char conds1[MAXCONDLEN_1]; - char * conds2; - } l; - } c; - char * morphcode; - unsigned short * contclass; - short contclasslen; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/csutil.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/csutil.hxx deleted file mode 100644 index 7bd0b919be..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/csutil.hxx +++ /dev/null @@ -1,220 +0,0 @@ -#ifndef __CSUTILHXX__ -#define __CSUTILHXX__ - -#include "hunvisapi.h" - -// First some base level utility routines - -#include -#include "w_char.hxx" -#include "htypes.hxx" - -#ifdef MOZILLA_CLIENT -#include "nscore.h" // for mozalloc headers -#endif - -// casing -#define NOCAP 0 -#define INITCAP 1 -#define ALLCAP 2 -#define HUHCAP 3 -#define HUHINITCAP 4 - -// default encoding and keystring -#define SPELL_ENCODING "ISO8859-1" -#define SPELL_KEYSTRING "qwertyuiop|asdfghjkl|zxcvbnm" - -// default morphological fields -#define MORPH_STEM "st:" -#define MORPH_ALLOMORPH "al:" -#define MORPH_POS "po:" -#define MORPH_DERI_PFX "dp:" -#define MORPH_INFL_PFX "ip:" -#define MORPH_TERM_PFX "tp:" -#define MORPH_DERI_SFX "ds:" -#define MORPH_INFL_SFX "is:" -#define MORPH_TERM_SFX "ts:" -#define MORPH_SURF_PFX "sp:" -#define MORPH_FREQ "fr:" -#define MORPH_PHON "ph:" -#define MORPH_HYPH "hy:" -#define MORPH_PART "pa:" -#define MORPH_FLAG "fl:" -#define MORPH_HENTRY "_H:" -#define MORPH_TAG_LEN strlen(MORPH_STEM) - -#define MSEP_FLD ' ' -#define MSEP_REC '\n' -#define MSEP_ALT '\v' - -// default flags -#define DEFAULTFLAGS 65510 -#define FORBIDDENWORD 65510 -#define ONLYUPCASEFLAG 65511 - -// convert UTF-16 characters to UTF-8 -LIBHUNSPELL_DLL_EXPORTED char * u16_u8(char * dest, int size, const w_char * src, int srclen); - -// convert UTF-8 characters to UTF-16 -LIBHUNSPELL_DLL_EXPORTED int u8_u16(w_char * dest, int size, const char * src); - -// sort 2-byte vector -LIBHUNSPELL_DLL_EXPORTED void flag_qsort(unsigned short flags[], int begin, int end); - -// binary search in 2-byte vector -LIBHUNSPELL_DLL_EXPORTED int flag_bsearch(unsigned short flags[], unsigned short flag, int right); - -// remove end of line char(s) -LIBHUNSPELL_DLL_EXPORTED void mychomp(char * s); - -// duplicate string -LIBHUNSPELL_DLL_EXPORTED char * mystrdup(const char * s); - -// strcat for limited length destination string -LIBHUNSPELL_DLL_EXPORTED char * mystrcat(char * dest, const char * st, int max); - -// duplicate reverse of string -LIBHUNSPELL_DLL_EXPORTED char * myrevstrdup(const char * s); - -// parse into tokens with char delimiter -LIBHUNSPELL_DLL_EXPORTED char * mystrsep(char ** sptr, const char delim); -// parse into tokens with char delimiter -LIBHUNSPELL_DLL_EXPORTED char * mystrsep2(char ** sptr, const char delim); - -// parse into tokens with char delimiter -LIBHUNSPELL_DLL_EXPORTED char * mystrrep(char *, const char *, const char *); - -// append s to ends of every lines in text -LIBHUNSPELL_DLL_EXPORTED void strlinecat(char * lines, const char * s); - -// tokenize into lines with new line -LIBHUNSPELL_DLL_EXPORTED int line_tok(const char * text, char *** lines, char breakchar); - -// tokenize into lines with new line and uniq in place -LIBHUNSPELL_DLL_EXPORTED char * line_uniq(char * text, char breakchar); -LIBHUNSPELL_DLL_EXPORTED char * line_uniq_app(char ** text, char breakchar); - -// change oldchar to newchar in place -LIBHUNSPELL_DLL_EXPORTED char * tr(char * text, char oldc, char newc); - -// reverse word -LIBHUNSPELL_DLL_EXPORTED int reverseword(char *); - -// reverse word -LIBHUNSPELL_DLL_EXPORTED int reverseword_utf(char *); - -// remove duplicates -LIBHUNSPELL_DLL_EXPORTED int uniqlist(char ** list, int n); - -// free character array list -LIBHUNSPELL_DLL_EXPORTED void freelist(char *** list, int n); - -// character encoding information -struct cs_info { - unsigned char ccase; - unsigned char clower; - unsigned char cupper; -}; - -LIBHUNSPELL_DLL_EXPORTED int initialize_utf_tbl(); -LIBHUNSPELL_DLL_EXPORTED void free_utf_tbl(); -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetoupper(unsigned short c, int langnum); -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetolower(unsigned short c, int langnum); -LIBHUNSPELL_DLL_EXPORTED int unicodeisalpha(unsigned short c); - -LIBHUNSPELL_DLL_EXPORTED struct cs_info * get_current_cs(const char * es); - -// get language identifiers of language codes -LIBHUNSPELL_DLL_EXPORTED int get_lang_num(const char * lang); - -// get characters of the given 8bit encoding with lower- and uppercase forms -LIBHUNSPELL_DLL_EXPORTED char * get_casechars(const char * enc); - -// convert null terminated string to all caps using encoding -LIBHUNSPELL_DLL_EXPORTED void enmkallcap(char * d, const char * p, const char * encoding); - -// convert null terminated string to all little using encoding -LIBHUNSPELL_DLL_EXPORTED void enmkallsmall(char * d, const char * p, const char * encoding); - -// convert null terminated string to have initial capital using encoding -LIBHUNSPELL_DLL_EXPORTED void enmkinitcap(char * d, const char * p, const char * encoding); - -// convert null terminated string to all caps -LIBHUNSPELL_DLL_EXPORTED void mkallcap(char * p, const struct cs_info * csconv); - -// convert null terminated string to all little -LIBHUNSPELL_DLL_EXPORTED void mkallsmall(char * p, const struct cs_info * csconv); - -// convert null terminated string to have initial capital -LIBHUNSPELL_DLL_EXPORTED void mkinitcap(char * p, const struct cs_info * csconv); - -// convert first nc characters of UTF-8 string to little -LIBHUNSPELL_DLL_EXPORTED void mkallsmall_utf(w_char * u, int nc, int langnum); - -// convert first nc characters of UTF-8 string to capital -LIBHUNSPELL_DLL_EXPORTED void mkallcap_utf(w_char * u, int nc, int langnum); - -// get type of capitalization -LIBHUNSPELL_DLL_EXPORTED int get_captype(char * q, int nl, cs_info *); - -// get type of capitalization (UTF-8) -LIBHUNSPELL_DLL_EXPORTED int get_captype_utf8(w_char * q, int nl, int langnum); - -// strip all ignored characters in the string -LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars_utf(char * word, unsigned short ignored_chars[], int ignored_len); - -// strip all ignored characters in the string -LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars(char * word, char * ignored_chars); - -LIBHUNSPELL_DLL_EXPORTED int parse_string(char * line, char ** out, int ln); - -LIBHUNSPELL_DLL_EXPORTED int parse_array(char * line, char ** out, unsigned short ** out_utf16, - int * out_utf16_len, int utf8, int ln); - -LIBHUNSPELL_DLL_EXPORTED int fieldlen(const char * r); -LIBHUNSPELL_DLL_EXPORTED char * copy_field(char * dest, const char * morph, const char * var); - -LIBHUNSPELL_DLL_EXPORTED int morphcmp(const char * s, const char * t); - -LIBHUNSPELL_DLL_EXPORTED int get_sfxcount(const char * morph); - -// conversion function for protected memory -LIBHUNSPELL_DLL_EXPORTED void store_pointer(char * dest, char * source); - -// conversion function for protected memory -LIBHUNSPELL_DLL_EXPORTED char * get_stored_pointer(const char * s); - -// hash entry macros -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_DATA(struct hentry *h) -{ - char *ret; - if (!h->var) - ret = NULL; - else if (h->var & H_OPT_ALIASM) - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); - else - ret = HENTRY_WORD(h) + h->blen + 1; - return ret; -} - -// NULL-free version for warning-free OOo build -LIBHUNSPELL_DLL_EXPORTED inline const char* HENTRY_DATA2(const struct hentry *h) -{ - const char *ret; - if (!h->var) - ret = ""; - else if (h->var & H_OPT_ALIASM) - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); - else - ret = HENTRY_WORD(h) + h->blen + 1; - return ret; -} - -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_FIND(struct hentry *h, const char *p) -{ - return (HENTRY_DATA(h) ? strstr(HENTRY_DATA(h), p) : NULL); -} - -#define w_char_eq(a,b) (((a).l == (b).l) && ((a).h == (b).h)) - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/dictmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/dictmgr.hxx deleted file mode 100644 index bb197f84fb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/dictmgr.hxx +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _DICTMGR_HXX_ -#define _DICTMGR_HXX_ - -#include "hunvisapi.h" - -#define MAXDICTIONARIES 100 -#define MAXDICTENTRYLEN 1024 - -struct dictentry { - char * filename; - char * lang; - char * region; -}; - - -class LIBHUNSPELL_DLL_EXPORTED DictMgr -{ - - int numdict; - dictentry * pdentry; - -public: - - DictMgr(const char * dictpath, const char * etype); - ~DictMgr(); - int get_list(dictentry** ppentry); - -private: - int parse_file(const char * dictpath, const char * etype); - char * mystrsep(char ** stringp, const char delim); - char * mystrdup(const char * s); - void mychomp(char * s); - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/filemgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/filemgr.hxx deleted file mode 100644 index 94cb7233d8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/filemgr.hxx +++ /dev/null @@ -1,25 +0,0 @@ -/* file manager class - read lines of files [filename] OR [filename.hz] */ -#ifndef _FILEMGR_HXX_ -#define _FILEMGR_HXX_ - -#include "hunvisapi.h" - -#include "hunzip.hxx" -#include - -class LIBHUNSPELL_DLL_EXPORTED FileMgr -{ -protected: - FILE * fin; - Hunzip * hin; - char in[BUFSIZE + 50]; // input buffer - int fail(const char * err, const char * par); - int linenum; - -public: - FileMgr(const char * filename, const char * key = NULL); - ~FileMgr(); - char * getline(); - int getlinenum(); -}; -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hashmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hashmgr.hxx deleted file mode 100644 index 341b08131c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hashmgr.hxx +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef _HASHMGR_HXX_ -#define _HASHMGR_HXX_ - -#include "hunvisapi.h" - -#include - -#include "htypes.hxx" -#include "filemgr.hxx" - -enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI }; - -class LIBHUNSPELL_DLL_EXPORTED HashMgr -{ - int tablesize; - struct hentry ** tableptr; - int userword; - flag flag_mode; - int complexprefixes; - int utf8; - unsigned short forbiddenword; - int langnum; - char * enc; - char * lang; - struct cs_info * csconv; - char * ignorechars; - unsigned short * ignorechars_utf16; - int ignorechars_utf16_len; - int numaliasf; // flag vector `compression' with aliases - unsigned short ** aliasf; - unsigned short * aliasflen; - int numaliasm; // morphological desciption `compression' with aliases - char ** aliasm; - - -public: - HashMgr(const char * tpath, const char * apath, const char * key = NULL); - ~HashMgr(); - - struct hentry * lookup(const char *) const; - int hash(const char *) const; - struct hentry * walk_hashtable(int & col, struct hentry * hp) const; - - int add(const char * word); - int add_with_affix(const char * word, const char * pattern); - int remove(const char * word); - int decode_flags(unsigned short ** result, char * flags, FileMgr * af); - unsigned short decode_flag(const char * flag); - char * encode_flag(unsigned short flag); - int is_aliasf(); - int get_aliasf(int index, unsigned short ** fvec, FileMgr * af); - int is_aliasm(); - char * get_aliasm(int index); - -private: - int get_clen_and_captype(const char * word, int wbl, int * captype); - int load_tables(const char * tpath, const char * key); - int add_word(const char * word, int wbl, int wcl, unsigned short * ap, - int al, const char * desc, bool onlyupcase); - int load_config(const char * affpath, const char * key); - int parse_aliasf(char * line, FileMgr * af); - int add_hidden_capitalized_word(char * word, int wbl, int wcl, - unsigned short * flags, int al, char * dp, int captype); - int parse_aliasm(char * line, FileMgr * af); - int remove_forbidden_flag(const char * word); - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/htypes.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/htypes.hxx deleted file mode 100644 index 5b6c90966b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/htypes.hxx +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef _HTYPES_HXX_ -#define _HTYPES_HXX_ - -#define ROTATE_LEN 5 - -#define ROTATE(v,q) \ - (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q))-1)); - -// hentry options -#define H_OPT (1 << 0) -#define H_OPT_ALIASM (1 << 1) -#define H_OPT_PHON (1 << 2) - -// see also csutil.hxx -#define HENTRY_WORD(h) &(h->word[0]) - -// approx. number of user defined words -#define USERWORD 1000 - -struct hentry -{ - unsigned char blen; // word length in bytes - unsigned char clen; // word length in characters (different for UTF-8 enc.) - short alen; // length of affix flag vector - unsigned short * astr; // affix flag vector - struct hentry * next; // next word with same hash code - struct hentry * next_homonym; // next homonym word (with same hash code) - char var; // variable fields (only for special pronounciation yet) - char word[1]; // variable-length word (8-bit or UTF-8 encoding) -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunspell.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunspell.h deleted file mode 100644 index 627968a3da..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunspell.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef _MYSPELLMGR_H_ -#define _MYSPELLMGR_H_ - -#include "hunvisapi.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct Hunhandle Hunhandle; - -LIBHUNSPELL_DLL_EXPORTED Hunhandle *Hunspell_create(const char * affpath, const char * dpath); - -LIBHUNSPELL_DLL_EXPORTED Hunhandle *Hunspell_create_key(const char * affpath, const char * dpath, - const char * key); - -LIBHUNSPELL_DLL_EXPORTED void Hunspell_destroy(Hunhandle *pHunspell); - -/* spell(word) - spellcheck word - * output: 0 = bad word, not 0 = good word - */ -LIBHUNSPELL_DLL_EXPORTED int Hunspell_spell(Hunhandle *pHunspell, const char *); - -LIBHUNSPELL_DLL_EXPORTED char *Hunspell_get_dic_encoding(Hunhandle *pHunspell); - -/* suggest(suggestions, word) - search suggestions - * input: pointer to an array of strings pointer and the (bad) word - * array of strings pointer (here *slst) may not be initialized - * output: number of suggestions in string array, and suggestions in - * a newly allocated array of strings (*slts will be NULL when number - * of suggestion equals 0.) - */ -LIBHUNSPELL_DLL_EXPORTED int Hunspell_suggest(Hunhandle *pHunspell, char*** slst, const char * word); - - /* morphological functions */ - - /* analyze(result, word) - morphological analysis of the word */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_analyze(Hunhandle *pHunspell, char*** slst, const char * word); - - /* stem(result, word) - stemmer function */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem(Hunhandle *pHunspell, char*** slst, const char * word); - - /* stem(result, analysis, n) - get stems from a morph. analysis - * example: - * char ** result, result2; - * int n1 = Hunspell_analyze(result, "words"); - * int n2 = Hunspell_stem2(result2, result, n1); - */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem2(Hunhandle *pHunspell, char*** slst, char** desc, int n); - - /* generate(result, word, word2) - morphological generation by example(s) */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate(Hunhandle *pHunspell, char*** slst, const char * word, - const char * word2); - - /* generate(result, word, desc, n) - generation by morph. description(s) - * example: - * char ** result; - * char * affix = "is:plural"; // description depends from dictionaries, too - * int n = Hunspell_generate2(result, "word", &affix, 1); - * for (int i = 0; i < n; i++) printf("%s\n", result[i]); - */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate2(Hunhandle *pHunspell, char*** slst, const char * word, - char** desc, int n); - - /* functions for run-time modification of the dictionary */ - - /* add word to the run-time dictionary */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_add(Hunhandle *pHunspell, const char * word); - - /* add word to the run-time dictionary with affix flags of - * the example (a dictionary word): Hunspell will recognize - * affixed forms of the new word, too. - */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_add_with_affix(Hunhandle *pHunspell, const char * word, const char * example); - - /* remove word from the run-time dictionary */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_remove(Hunhandle *pHunspell, const char * word); - - /* free suggestion lists */ - -LIBHUNSPELL_DLL_EXPORTED void Hunspell_free_list(Hunhandle *pHunspell, char *** slst, int n); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunspell.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunspell.hxx deleted file mode 100644 index 9b6c388108..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunspell.hxx +++ /dev/null @@ -1,172 +0,0 @@ -#include "hunvisapi.h" - -#include "hashmgr.hxx" -#include "affixmgr.hxx" -#include "suggestmgr.hxx" -#include "langnum.hxx" - -#define SPELL_XML "" - -#define MAXDIC 20 -#define MAXSUGGESTION 15 -#define MAXSHARPS 5 - -#define HUNSPELL_OK (1 << 0) -#define HUNSPELL_OK_WARN (1 << 1) - -#ifndef _MYSPELLMGR_HXX_ -#define _MYSPELLMGR_HXX_ - -class LIBHUNSPELL_DLL_EXPORTED Hunspell -{ - AffixMgr* pAMgr; - HashMgr* pHMgr[MAXDIC]; - int maxdic; - SuggestMgr* pSMgr; - char * affixpath; - char * encoding; - struct cs_info * csconv; - int langnum; - int utf8; - int complexprefixes; - char** wordbreak; - -public: - - /* Hunspell(aff, dic) - constructor of Hunspell class - * input: path of affix file and dictionary file - */ - - Hunspell(const char * affpath, const char * dpath, const char * key = NULL); - ~Hunspell(); - - /* load extra dictionaries (only dic files) */ - int add_dic(const char * dpath, const char * key = NULL); - - /* spell(word) - spellcheck word - * output: 0 = bad word, not 0 = good word - * - * plus output: - * info: information bit array, fields: - * SPELL_COMPOUND = a compound word - * SPELL_FORBIDDEN = an explicit forbidden word - * root: root (stem), when input is a word with affix(es) - */ - - int spell(const char * word, int * info = NULL, char ** root = NULL); - - /* suggest(suggestions, word) - search suggestions - * input: pointer to an array of strings pointer and the (bad) word - * array of strings pointer (here *slst) may not be initialized - * output: number of suggestions in string array, and suggestions in - * a newly allocated array of strings (*slts will be NULL when number - * of suggestion equals 0.) - */ - - int suggest(char*** slst, const char * word); - - /* deallocate suggestion lists */ - - void free_list(char *** slst, int n); - - char * get_dic_encoding(); - - /* morphological functions */ - - /* analyze(result, word) - morphological analysis of the word */ - - int analyze(char*** slst, const char * word); - - /* stem(result, word) - stemmer function */ - - int stem(char*** slst, const char * word); - - /* stem(result, analysis, n) - get stems from a morph. analysis - * example: - * char ** result, result2; - * int n1 = analyze(&result, "words"); - * int n2 = stem(&result2, result, n1); - */ - - int stem(char*** slst, char ** morph, int n); - - /* generate(result, word, word2) - morphological generation by example(s) */ - - int generate(char*** slst, const char * word, const char * word2); - - /* generate(result, word, desc, n) - generation by morph. description(s) - * example: - * char ** result; - * char * affix = "is:plural"; // description depends from dictionaries, too - * int n = generate(&result, "word", &affix, 1); - * for (int i = 0; i < n; i++) printf("%s\n", result[i]); - */ - - int generate(char*** slst, const char * word, char ** desc, int n); - - /* functions for run-time modification of the dictionary */ - - /* add word to the run-time dictionary */ - - int add(const char * word); - - /* add word to the run-time dictionary with affix flags of - * the example (a dictionary word): Hunspell will recognize - * affixed forms of the new word, too. - */ - - int add_with_affix(const char * word, const char * example); - - /* remove word from the run-time dictionary */ - - int remove(const char * word); - - /* other */ - - /* get extra word characters definied in affix file for tokenization */ - const char * get_wordchars(); - unsigned short * get_wordchars_utf16(int * len); - - struct cs_info * get_csconv(); - const char * get_version(); - - int get_langnum() const; - - /* experimental and deprecated functions */ - -#ifdef HUNSPELL_EXPERIMENTAL - /* suffix is an affix flag string, similarly in dictionary files */ - int put_word_suffix(const char * word, const char * suffix); - char * morph_with_correction(const char * word); - - /* spec. suggestions */ - int suggest_auto(char*** slst, const char * word); - int suggest_pos_stems(char*** slst, const char * word); -#endif - -private: - int cleanword(char *, const char *, int * pcaptype, int * pabbrev); - int cleanword2(char *, const char *, w_char *, int * w_len, int * pcaptype, int * pabbrev); - void mkinitcap(char *); - int mkinitcap2(char * p, w_char * u, int nc); - int mkinitsmall2(char * p, w_char * u, int nc); - void mkallcap(char *); - int mkallcap2(char * p, w_char * u, int nc); - void mkallsmall(char *); - int mkallsmall2(char * p, w_char * u, int nc); - struct hentry * checkword(const char *, int * info, char **root); - char * sharps_u8_l1(char * dest, char * source); - hentry * spellsharps(char * base, char *, int, int, char * tmp, int * info, char **root); - int is_keepcase(const hentry * rv); - int insert_sug(char ***slst, char * word, int ns); - void cat_result(char * result, char * st); - char * stem_description(const char * desc); - int spellml(char*** slst, const char * word); - int get_xml_par(char * dest, const char * par, int maxl); - const char * get_xml_pos(const char * s, const char * attr); - int get_xml_list(char ***slst, char * list, const char * tag); - int check_xml_par(const char * q, const char * attr, const char * value); - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunvisapi.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunvisapi.h deleted file mode 100644 index 4712280ad2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunvisapi.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _HUNSPELL_VISIBILITY_H_ -#define _HUNSPELL_VISIBILITY_H_ - -#if defined(HUNSPELL_STATIC) -# define LIBHUNSPELL_DLL_EXPORTED -#elif defined(_MSC_VER) -# if defined(BUILDING_LIBHUNSPELL) -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport) -# else -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport) -# endif -#elif BUILDING_LIBHUNSPELL && 1 -# define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default"))) -#else -# define LIBHUNSPELL_DLL_EXPORTED -#endif - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunzip.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunzip.hxx deleted file mode 100644 index b58e3ab1dc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/hunzip.hxx +++ /dev/null @@ -1,45 +0,0 @@ -/* hunzip: file decompression for sorted dictionaries with optional encryption, - * algorithm: prefix-suffix encoding and 16-bit Huffman encoding */ - -#ifndef _HUNZIP_HXX_ -#define _HUNZIP_HXX_ - -#include "hunvisapi.h" - -#include - -#define BUFSIZE 65536 -#define HZIP_EXTENSION ".hz" - -#define MSG_OPEN "error: %s: cannot open\n" -#define MSG_FORMAT "error: %s: not in hzip format\n" -#define MSG_MEMORY "error: %s: missing memory\n" -#define MSG_KEY "error: %s: missing or bad password\n" - -struct bit { - unsigned char c[2]; - int v[2]; -}; - -class LIBHUNSPELL_DLL_EXPORTED Hunzip -{ - -protected: - char * filename; - FILE * fin; - int bufsiz, lastbit, inc, inbits, outc; - struct bit * dec; // code table - char in[BUFSIZE]; // input buffer - char out[BUFSIZE + 1]; // Huffman-decoded buffer - char line[BUFSIZE + 50]; // decoded line - int getcode(const char * key); - int getbuf(); - int fail(const char * err, const char * par); - -public: - Hunzip(const char * filename, const char * key = NULL); - ~Hunzip(); - const char * getline(); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/langnum.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/langnum.hxx deleted file mode 100644 index 1d140a701b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/langnum.hxx +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef _LANGNUM_HXX_ -#define _LANGNUM_HXX_ - -/* - language numbers for language specific codes - see http://l10n.openoffice.org/languages.html -*/ - -enum { -LANG_ar=96, -LANG_az=100, // custom number -LANG_bg=41, -LANG_ca=37, -LANG_cs=42, -LANG_da=45, -LANG_de=49, -LANG_el=30, -LANG_en=01, -LANG_es=34, -LANG_eu=10, -LANG_fr=02, -LANG_gl=38, -LANG_hr=78, -LANG_hu=36, -LANG_it=39, -LANG_la=99, // custom number -LANG_lv=101, // custom number -LANG_nl=31, -LANG_pl=48, -LANG_pt=03, -LANG_ru=07, -LANG_sv=50, -LANG_tr=90, -LANG_uk=80, -LANG_xx=999 -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/phonet.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/phonet.hxx deleted file mode 100644 index f91d3b02b8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/phonet.hxx +++ /dev/null @@ -1,52 +0,0 @@ -/* phonetic.c - generic replacement aglogithms for phonetic transformation - Copyright (C) 2000 Bjoern Jacke - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License version 2.1 as published by the Free Software Foundation; - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; If not, see - . - - Changelog: - - 2000-01-05 Bjoern Jacke - Initial Release insprired by the article about phonetic - transformations out of c't 25/1999 - - 2007-07-26 Bjoern Jacke - Released under MPL/GPL/LGPL tri-license for Hunspell - - 2007-08-23 Laszlo Nemeth - Porting from Aspell to Hunspell using C-like structs -*/ - -#ifndef __PHONETHXX__ -#define __PHONETHXX__ - -#define HASHSIZE 256 -#define MAXPHONETLEN 256 -#define MAXPHONETUTF8LEN (MAXPHONETLEN * 4) - -#include "hunvisapi.h" - -struct phonetable { - char utf8; - cs_info * lang; - int num; - char * * rules; - int hash[HASHSIZE]; -}; - -LIBHUNSPELL_DLL_EXPORTED void init_phonet_hash(phonetable & parms); - -LIBHUNSPELL_DLL_EXPORTED int phonet (const char * inword, char * target, - int len, phonetable & phone); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/replist.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/replist.hxx deleted file mode 100644 index 9c37e29bb3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/replist.hxx +++ /dev/null @@ -1,27 +0,0 @@ -/* string replacement list class */ -#ifndef _REPLIST_HXX_ -#define _REPLIST_HXX_ - -#include "hunvisapi.h" - -#include "w_char.hxx" - -class LIBHUNSPELL_DLL_EXPORTED RepList -{ -protected: - replentry ** dat; - int size; - int pos; - -public: - RepList(int n); - ~RepList(); - - int get_pos(); - int add(char * pat1, char * pat2); - replentry * item(int n); - int near(const char * word); - int match(const char * word, int n); - int conv(const char * word, char * dest); -}; -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/suggestmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/suggestmgr.hxx deleted file mode 100644 index 5f043fdfd2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/suggestmgr.hxx +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef _SUGGESTMGR_HXX_ -#define _SUGGESTMGR_HXX_ - -#define MAXSWL 100 -#define MAXSWUTF8L (MAXSWL * 4) -#define MAX_ROOTS 100 -#define MAX_WORDS 100 -#define MAX_GUESS 200 -#define MAXNGRAMSUGS 4 -#define MAXPHONSUGS 2 -#define MAXCOMPOUNDSUGS 3 - -// timelimit: max ~1/4 sec (process time on Linux) for a time consuming function -#define TIMELIMIT (CLOCKS_PER_SEC >> 2) -#define MINTIMER 100 -#define MAXPLUSTIMER 100 - -#define NGRAM_LONGER_WORSE (1 << 0) -#define NGRAM_ANY_MISMATCH (1 << 1) -#define NGRAM_LOWERING (1 << 2) -#define NGRAM_WEIGHTED (1 << 3) - -#include "hunvisapi.h" - -#include "atypes.hxx" -#include "affixmgr.hxx" -#include "hashmgr.hxx" -#include "langnum.hxx" -#include - -enum { LCS_UP, LCS_LEFT, LCS_UPLEFT }; - -class LIBHUNSPELL_DLL_EXPORTED SuggestMgr -{ - char * ckey; - int ckeyl; - w_char * ckey_utf; - - char * ctry; - int ctryl; - w_char * ctry_utf; - - AffixMgr* pAMgr; - int maxSug; - struct cs_info * csconv; - int utf8; - int langnum; - int nosplitsugs; - int maxngramsugs; - int maxcpdsugs; - int complexprefixes; - - -public: - SuggestMgr(const char * tryme, int maxn, AffixMgr *aptr); - ~SuggestMgr(); - - int suggest(char*** slst, const char * word, int nsug, int * onlycmpdsug); - int ngsuggest(char ** wlst, char * word, int ns, HashMgr** pHMgr, int md); - int suggest_auto(char*** slst, const char * word, int nsug); - int suggest_stems(char*** slst, const char * word, int nsug); - int suggest_pos_stems(char*** slst, const char * word, int nsug); - - char * suggest_morph(const char * word); - char * suggest_gen(char ** pl, int pln, char * pattern); - char * suggest_morph_for_spelling_error(const char * word); - -private: - int testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest, - int * timer, clock_t * timelimit); - int checkword(const char *, int, int, int *, clock_t *); - int check_forbidden(const char *, int); - - int capchars(char **, const char *, int, int); - int replchars(char**, const char *, int, int); - int doubletwochars(char**, const char *, int, int); - int forgotchar(char **, const char *, int, int); - int swapchar(char **, const char *, int, int); - int longswapchar(char **, const char *, int, int); - int movechar(char **, const char *, int, int); - int extrachar(char **, const char *, int, int); - int badcharkey(char **, const char *, int, int); - int badchar(char **, const char *, int, int); - int twowords(char **, const char *, int, int); - int fixstems(char **, const char *, int); - - int capchars_utf(char **, const w_char *, int wl, int, int); - int doubletwochars_utf(char**, const w_char *, int wl, int, int); - int forgotchar_utf(char**, const w_char *, int wl, int, int); - int extrachar_utf(char**, const w_char *, int wl, int, int); - int badcharkey_utf(char **, const w_char *, int wl, int, int); - int badchar_utf(char **, const w_char *, int wl, int, int); - int swapchar_utf(char **, const w_char *, int wl, int, int); - int longswapchar_utf(char **, const w_char *, int, int, int); - int movechar_utf(char **, const w_char *, int, int, int); - - int mapchars(char**, const char *, int, int); - int map_related(const char *, char *, int, int, char ** wlst, int, int, const mapentry*, int, int *, clock_t *); - int ngram(int n, char * s1, const char * s2, int opt); - int mystrlen(const char * word); - int leftcommonsubstring(char * s1, const char * s2); - int commoncharacterpositions(char * s1, const char * s2, int * is_swap); - void bubblesort( char ** rwd, char ** rwd2, int * rsc, int n); - void lcs(const char * s, const char * s2, int * l1, int * l2, char ** result); - int lcslen(const char * s, const char* s2); - char * suggest_hentry_gen(hentry * rv, char * pattern); - -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/w_char.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/w_char.hxx deleted file mode 100644 index 3719dd3b77..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/hunspell/w_char.hxx +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __WCHARHXX__ -#define __WCHARHXX__ - -#ifndef GCC -typedef struct { -#else -typedef struct __attribute__ ((packed)) { -#endif - unsigned char l; - unsigned char h; -} w_char; - -// two character arrays -struct replentry { - char * pattern; - char * pattern2; - bool start; - bool end; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/iconv.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/iconv.h deleted file mode 100644 index d955a5724c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/iconv.h +++ /dev/null @@ -1,248 +0,0 @@ -/* Copyright (C) 1999-2003, 2005-2006, 2008-2011 Free Software Foundation, Inc. - This file is part of the GNU LIBICONV Library. - - The GNU LIBICONV Library is free software; you can redistribute it - and/or modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - The GNU LIBICONV Library is distributed in the hope that it will be - useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU LIBICONV Library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, Inc., 51 Franklin Street, - Fifth Floor, Boston, MA 02110-1301, USA. */ - -/* When installed, this file is called "iconv.h". */ - -#ifndef _LIBICONV_H -#define _LIBICONV_H - -#define _LIBICONV_VERSION 0x010E /* version number: (major<<8) + minor */ - -#if 1 && BUILDING_LIBICONV -#define LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default"))) -#else -#define LIBICONV_DLL_EXPORTED -#endif -extern LIBICONV_DLL_EXPORTED int _libiconv_version; /* Likewise */ - -/* We would like to #include any system header file which could define - iconv_t, 1. in order to eliminate the risk that the user gets compilation - errors because some other system header file includes /usr/include/iconv.h - which defines iconv_t or declares iconv after this file, 2. when compiling - for LIBICONV_PLUG, we need the proper iconv_t type in order to produce - binary compatible code. - But gcc's #include_next is not portable. Thus, once libiconv's iconv.h - has been installed in /usr/local/include, there is no way any more to - include the original /usr/include/iconv.h. We simply have to get away - without it. - Ad 1. The risk that a system header file does - #include "iconv.h" or #include_next "iconv.h" - is small. They all do #include . - Ad 2. The iconv_t type is a pointer type in all cases I have seen. (It - has to be a scalar type because (iconv_t)(-1) is a possible return value - from iconv_open().) */ - -/* Define iconv_t ourselves. */ -#undef iconv_t -#define iconv_t iconv_t -typedef void* iconv_t; - -/* Get size_t declaration. - Get wchar_t declaration if it exists. */ -#include - -/* Get errno declaration and values. */ -#include -/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS, - have EILSEQ in a different header. On these systems, define EILSEQ - ourselves. */ -#ifndef EILSEQ -#define EILSEQ -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Allocates descriptor for code conversion from encoding ‘fromcode’ to - encoding ‘tocode’. */ -#ifndef LIBICONV_PLUG -#define iconv_open iconv_open -#endif -extern LIBICONV_DLL_EXPORTED iconv_t iconv_open (const char* tocode, const char* fromcode); - -/* Converts, using conversion descriptor ‘cd’, at most ‘*inbytesleft’ bytes - starting at ‘*inbuf’, writing at most ‘*outbytesleft’ bytes starting at - ‘*outbuf’. - Decrements ‘*inbytesleft’ and increments ‘*inbuf’ by the same amount. - Decrements ‘*outbytesleft’ and increments ‘*outbuf’ by the same amount. */ -#ifndef LIBICONV_PLUG -#define iconv iconv -#endif -extern LIBICONV_DLL_EXPORTED size_t iconv (iconv_t cd, char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); - -/* Frees resources allocated for conversion descriptor ‘cd’. */ -#ifndef LIBICONV_PLUG -#define iconv_close iconv_close -#endif -extern LIBICONV_DLL_EXPORTED int iconv_close (iconv_t cd); - - -#ifdef __cplusplus -} -#endif - - -#ifndef LIBICONV_PLUG - -/* Nonstandard extensions. */ - -#if 1 -#if 0 -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#endif -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* A type that holds all memory needed by a conversion descriptor. - A pointer to such an object can be used as an iconv_t. */ -typedef struct { - void* dummy1[28]; -#if 1 - mbstate_t dummy2; -#endif -} iconv_allocation_t; - -/* Allocates descriptor for code conversion from encoding ‘fromcode’ to - encoding ‘tocode’ into preallocated memory. Returns an error indicator - (0 or -1 with errno set). */ -#define iconv_open_into libiconv_open_into -extern LIBICONV_DLL_EXPORTED int iconv_open_into (const char* tocode, const char* fromcode, - iconv_allocation_t* resultp); - -/* Control of attributes. */ -#define iconvctl libiconvctl -extern LIBICONV_DLL_EXPORTED int iconvctl (iconv_t cd, int request, void* argument); - -/* Hook performed after every successful conversion of a Unicode character. */ -typedef void (*iconv_unicode_char_hook) (unsigned int uc, void* data); -/* Hook performed after every successful conversion of a wide character. */ -typedef void (*iconv_wide_char_hook) (wchar_t wc, void* data); -/* Set of hooks. */ -struct iconv_hooks { - iconv_unicode_char_hook uc_hook; - iconv_wide_char_hook wc_hook; - void* data; -}; - -/* Fallback function. Invoked when a small number of bytes could not be - converted to a Unicode character. This function should process all - bytes from inbuf and may produce replacement Unicode characters by calling - the write_replacement callback repeatedly. */ -typedef void (*iconv_unicode_mb_to_uc_fallback) - (const char* inbuf, size_t inbufsize, - void (*write_replacement) (const unsigned int *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -/* Fallback function. Invoked when a Unicode character could not be converted - to the target encoding. This function should process the character and - may produce replacement bytes (in the target encoding) by calling the - write_replacement callback repeatedly. */ -typedef void (*iconv_unicode_uc_to_mb_fallback) - (unsigned int code, - void (*write_replacement) (const char *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -#if 1 -/* Fallback function. Invoked when a number of bytes could not be converted to - a wide character. This function should process all bytes from inbuf and may - produce replacement wide characters by calling the write_replacement - callback repeatedly. */ -typedef void (*iconv_wchar_mb_to_wc_fallback) - (const char* inbuf, size_t inbufsize, - void (*write_replacement) (const wchar_t *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -/* Fallback function. Invoked when a wide character could not be converted to - the target encoding. This function should process the character and may - produce replacement bytes (in the target encoding) by calling the - write_replacement callback repeatedly. */ -typedef void (*iconv_wchar_wc_to_mb_fallback) - (wchar_t code, - void (*write_replacement) (const char *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -#else -/* If the wchar_t type does not exist, these two fallback functions are never - invoked. Their argument list therefore does not matter. */ -typedef void (*iconv_wchar_mb_to_wc_fallback) (); -typedef void (*iconv_wchar_wc_to_mb_fallback) (); -#endif -/* Set of fallbacks. */ -struct iconv_fallbacks { - iconv_unicode_mb_to_uc_fallback mb_to_uc_fallback; - iconv_unicode_uc_to_mb_fallback uc_to_mb_fallback; - iconv_wchar_mb_to_wc_fallback mb_to_wc_fallback; - iconv_wchar_wc_to_mb_fallback wc_to_mb_fallback; - void* data; -}; - -/* Requests for iconvctl. */ -#define ICONV_TRIVIALP 0 /* int *argument */ -#define ICONV_GET_TRANSLITERATE 1 /* int *argument */ -#define ICONV_SET_TRANSLITERATE 2 /* const int *argument */ -#define ICONV_GET_DISCARD_ILSEQ 3 /* int *argument */ -#define ICONV_SET_DISCARD_ILSEQ 4 /* const int *argument */ -#define ICONV_SET_HOOKS 5 /* const struct iconv_hooks *argument */ -#define ICONV_SET_FALLBACKS 6 /* const struct iconv_fallbacks *argument */ - -/* Listing of locale independent encodings. */ -#define iconvlist libiconvlist -extern LIBICONV_DLL_EXPORTED void iconvlist (int (*do_one) (unsigned int namescount, - const char * const * names, - void* data), - void* data); - -/* Canonicalize an encoding name. - The result is either a canonical encoding name, or name itself. */ -extern LIBICONV_DLL_EXPORTED const char * iconv_canonicalize (const char * name); - -/* Support for relocatable packages. */ - -/* Sets the original and the current installation prefix of the package. - Relocation simply replaces a pathname starting with the original prefix - by the corresponding pathname with the current prefix instead. Both - prefixes should be directory names without trailing slash (i.e. use "" - instead of "/"). */ -extern LIBICONV_DLL_EXPORTED void libiconv_set_relocation_prefix (const char *orig_prefix, - const char *curr_prefix); - -#ifdef __cplusplus -} -#endif - -#endif - - -#endif /* _LIBICONV_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/avcodec.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/avcodec.h deleted file mode 100644 index c4db4d761f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/avcodec.h +++ /dev/null @@ -1,5108 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVCODEC_H -#define AVCODEC_AVCODEC_H - -/** - * @file - * external API header - */ - -#include -#include "libavutil/samplefmt.h" -#include "libavutil/avutil.h" -#include "libavutil/cpu.h" -#include "libavutil/channel_layout.h" -#include "libavutil/dict.h" -#include "libavutil/log.h" -#include "libavutil/pixfmt.h" -#include "libavutil/rational.h" - -#include "libavcodec/version.h" -/** - * @defgroup libavc Encoding/Decoding Library - * @{ - * - * @defgroup lavc_decoding Decoding - * @{ - * @} - * - * @defgroup lavc_encoding Encoding - * @{ - * @} - * - * @defgroup lavc_codec Codecs - * @{ - * @defgroup lavc_codec_native Native Codecs - * @{ - * @} - * @defgroup lavc_codec_wrappers External library wrappers - * @{ - * @} - * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge - * @{ - * @} - * @} - * @defgroup lavc_internal Internal - * @{ - * @} - * @} - * - */ - -/** - * @defgroup lavc_core Core functions/structures. - * @ingroup libavc - * - * Basic definitions, functions for querying libavcodec capabilities, - * allocating core structures, etc. - * @{ - */ - - -/** - * Identify the syntax and semantics of the bitstream. - * The principle is roughly: - * Two decoders with the same ID can decode the same streams. - * Two encoders with the same ID can encode compatible streams. - * There may be slight deviations from the principle due to implementation - * details. - * - * If you add a codec ID to this list, add it so that - * 1. no value of a existing codec ID changes (that would break ABI), - * 2. Give it a value which when taken as ASCII is recognized uniquely by a human as this specific codec. - * This ensures that 2 forks can independently add AVCodecIDs without producing conflicts. - * - * After adding new codec IDs, do not forget to add an entry to the codec - * descriptor list and bump libavcodec minor version. - */ -enum AVCodecID { - AV_CODEC_ID_NONE, - - /* video codecs */ - AV_CODEC_ID_MPEG1VIDEO, - AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding - AV_CODEC_ID_MPEG2VIDEO_XVMC, - AV_CODEC_ID_H261, - AV_CODEC_ID_H263, - AV_CODEC_ID_RV10, - AV_CODEC_ID_RV20, - AV_CODEC_ID_MJPEG, - AV_CODEC_ID_MJPEGB, - AV_CODEC_ID_LJPEG, - AV_CODEC_ID_SP5X, - AV_CODEC_ID_JPEGLS, - AV_CODEC_ID_MPEG4, - AV_CODEC_ID_RAWVIDEO, - AV_CODEC_ID_MSMPEG4V1, - AV_CODEC_ID_MSMPEG4V2, - AV_CODEC_ID_MSMPEG4V3, - AV_CODEC_ID_WMV1, - AV_CODEC_ID_WMV2, - AV_CODEC_ID_H263P, - AV_CODEC_ID_H263I, - AV_CODEC_ID_FLV1, - AV_CODEC_ID_SVQ1, - AV_CODEC_ID_SVQ3, - AV_CODEC_ID_DVVIDEO, - AV_CODEC_ID_HUFFYUV, - AV_CODEC_ID_CYUV, - AV_CODEC_ID_H264, - AV_CODEC_ID_INDEO3, - AV_CODEC_ID_VP3, - AV_CODEC_ID_THEORA, - AV_CODEC_ID_ASV1, - AV_CODEC_ID_ASV2, - AV_CODEC_ID_FFV1, - AV_CODEC_ID_4XM, - AV_CODEC_ID_VCR1, - AV_CODEC_ID_CLJR, - AV_CODEC_ID_MDEC, - AV_CODEC_ID_ROQ, - AV_CODEC_ID_INTERPLAY_VIDEO, - AV_CODEC_ID_XAN_WC3, - AV_CODEC_ID_XAN_WC4, - AV_CODEC_ID_RPZA, - AV_CODEC_ID_CINEPAK, - AV_CODEC_ID_WS_VQA, - AV_CODEC_ID_MSRLE, - AV_CODEC_ID_MSVIDEO1, - AV_CODEC_ID_IDCIN, - AV_CODEC_ID_8BPS, - AV_CODEC_ID_SMC, - AV_CODEC_ID_FLIC, - AV_CODEC_ID_TRUEMOTION1, - AV_CODEC_ID_VMDVIDEO, - AV_CODEC_ID_MSZH, - AV_CODEC_ID_ZLIB, - AV_CODEC_ID_QTRLE, - AV_CODEC_ID_SNOW, - AV_CODEC_ID_TSCC, - AV_CODEC_ID_ULTI, - AV_CODEC_ID_QDRAW, - AV_CODEC_ID_VIXL, - AV_CODEC_ID_QPEG, - AV_CODEC_ID_PNG, - AV_CODEC_ID_PPM, - AV_CODEC_ID_PBM, - AV_CODEC_ID_PGM, - AV_CODEC_ID_PGMYUV, - AV_CODEC_ID_PAM, - AV_CODEC_ID_FFVHUFF, - AV_CODEC_ID_RV30, - AV_CODEC_ID_RV40, - AV_CODEC_ID_VC1, - AV_CODEC_ID_WMV3, - AV_CODEC_ID_LOCO, - AV_CODEC_ID_WNV1, - AV_CODEC_ID_AASC, - AV_CODEC_ID_INDEO2, - AV_CODEC_ID_FRAPS, - AV_CODEC_ID_TRUEMOTION2, - AV_CODEC_ID_BMP, - AV_CODEC_ID_CSCD, - AV_CODEC_ID_MMVIDEO, - AV_CODEC_ID_ZMBV, - AV_CODEC_ID_AVS, - AV_CODEC_ID_SMACKVIDEO, - AV_CODEC_ID_NUV, - AV_CODEC_ID_KMVC, - AV_CODEC_ID_FLASHSV, - AV_CODEC_ID_CAVS, - AV_CODEC_ID_JPEG2000, - AV_CODEC_ID_VMNC, - AV_CODEC_ID_VP5, - AV_CODEC_ID_VP6, - AV_CODEC_ID_VP6F, - AV_CODEC_ID_TARGA, - AV_CODEC_ID_DSICINVIDEO, - AV_CODEC_ID_TIERTEXSEQVIDEO, - AV_CODEC_ID_TIFF, - AV_CODEC_ID_GIF, - AV_CODEC_ID_DXA, - AV_CODEC_ID_DNXHD, - AV_CODEC_ID_THP, - AV_CODEC_ID_SGI, - AV_CODEC_ID_C93, - AV_CODEC_ID_BETHSOFTVID, - AV_CODEC_ID_PTX, - AV_CODEC_ID_TXD, - AV_CODEC_ID_VP6A, - AV_CODEC_ID_AMV, - AV_CODEC_ID_VB, - AV_CODEC_ID_PCX, - AV_CODEC_ID_SUNRAST, - AV_CODEC_ID_INDEO4, - AV_CODEC_ID_INDEO5, - AV_CODEC_ID_MIMIC, - AV_CODEC_ID_RL2, - AV_CODEC_ID_ESCAPE124, - AV_CODEC_ID_DIRAC, - AV_CODEC_ID_BFI, - AV_CODEC_ID_CMV, - AV_CODEC_ID_MOTIONPIXELS, - AV_CODEC_ID_TGV, - AV_CODEC_ID_TGQ, - AV_CODEC_ID_TQI, - AV_CODEC_ID_AURA, - AV_CODEC_ID_AURA2, - AV_CODEC_ID_V210X, - AV_CODEC_ID_TMV, - AV_CODEC_ID_V210, - AV_CODEC_ID_DPX, - AV_CODEC_ID_MAD, - AV_CODEC_ID_FRWU, - AV_CODEC_ID_FLASHSV2, - AV_CODEC_ID_CDGRAPHICS, - AV_CODEC_ID_R210, - AV_CODEC_ID_ANM, - AV_CODEC_ID_BINKVIDEO, - AV_CODEC_ID_IFF_ILBM, - AV_CODEC_ID_IFF_BYTERUN1, - AV_CODEC_ID_KGV1, - AV_CODEC_ID_YOP, - AV_CODEC_ID_VP8, - AV_CODEC_ID_PICTOR, - AV_CODEC_ID_ANSI, - AV_CODEC_ID_A64_MULTI, - AV_CODEC_ID_A64_MULTI5, - AV_CODEC_ID_R10K, - AV_CODEC_ID_MXPEG, - AV_CODEC_ID_LAGARITH, - AV_CODEC_ID_PRORES, - AV_CODEC_ID_JV, - AV_CODEC_ID_DFA, - AV_CODEC_ID_WMV3IMAGE, - AV_CODEC_ID_VC1IMAGE, - AV_CODEC_ID_UTVIDEO, - AV_CODEC_ID_BMV_VIDEO, - AV_CODEC_ID_VBLE, - AV_CODEC_ID_DXTORY, - AV_CODEC_ID_V410, - AV_CODEC_ID_XWD, - AV_CODEC_ID_CDXL, - AV_CODEC_ID_XBM, - AV_CODEC_ID_ZEROCODEC, - AV_CODEC_ID_MSS1, - AV_CODEC_ID_MSA1, - AV_CODEC_ID_TSCC2, - AV_CODEC_ID_MTS2, - AV_CODEC_ID_CLLC, - AV_CODEC_ID_MSS2, - AV_CODEC_ID_VP9, - AV_CODEC_ID_BRENDER_PIX= MKBETAG('B','P','I','X'), - AV_CODEC_ID_Y41P = MKBETAG('Y','4','1','P'), - AV_CODEC_ID_ESCAPE130 = MKBETAG('E','1','3','0'), - AV_CODEC_ID_EXR = MKBETAG('0','E','X','R'), - AV_CODEC_ID_AVRP = MKBETAG('A','V','R','P'), - - AV_CODEC_ID_012V = MKBETAG('0','1','2','V'), - AV_CODEC_ID_G2M = MKBETAG( 0 ,'G','2','M'), - AV_CODEC_ID_AVUI = MKBETAG('A','V','U','I'), - AV_CODEC_ID_AYUV = MKBETAG('A','Y','U','V'), - AV_CODEC_ID_TARGA_Y216 = MKBETAG('T','2','1','6'), - AV_CODEC_ID_V308 = MKBETAG('V','3','0','8'), - AV_CODEC_ID_V408 = MKBETAG('V','4','0','8'), - AV_CODEC_ID_YUV4 = MKBETAG('Y','U','V','4'), - AV_CODEC_ID_SANM = MKBETAG('S','A','N','M'), - AV_CODEC_ID_PAF_VIDEO = MKBETAG('P','A','F','V'), - AV_CODEC_ID_AVRN = MKBETAG('A','V','R','n'), - AV_CODEC_ID_CPIA = MKBETAG('C','P','I','A'), - AV_CODEC_ID_XFACE = MKBETAG('X','F','A','C'), - AV_CODEC_ID_SGIRLE = MKBETAG('S','G','I','R'), - AV_CODEC_ID_MVC1 = MKBETAG('M','V','C','1'), - AV_CODEC_ID_MVC2 = MKBETAG('M','V','C','2'), - - /* various PCM "codecs" */ - AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs - AV_CODEC_ID_PCM_S16LE = 0x10000, - AV_CODEC_ID_PCM_S16BE, - AV_CODEC_ID_PCM_U16LE, - AV_CODEC_ID_PCM_U16BE, - AV_CODEC_ID_PCM_S8, - AV_CODEC_ID_PCM_U8, - AV_CODEC_ID_PCM_MULAW, - AV_CODEC_ID_PCM_ALAW, - AV_CODEC_ID_PCM_S32LE, - AV_CODEC_ID_PCM_S32BE, - AV_CODEC_ID_PCM_U32LE, - AV_CODEC_ID_PCM_U32BE, - AV_CODEC_ID_PCM_S24LE, - AV_CODEC_ID_PCM_S24BE, - AV_CODEC_ID_PCM_U24LE, - AV_CODEC_ID_PCM_U24BE, - AV_CODEC_ID_PCM_S24DAUD, - AV_CODEC_ID_PCM_ZORK, - AV_CODEC_ID_PCM_S16LE_PLANAR, - AV_CODEC_ID_PCM_DVD, - AV_CODEC_ID_PCM_F32BE, - AV_CODEC_ID_PCM_F32LE, - AV_CODEC_ID_PCM_F64BE, - AV_CODEC_ID_PCM_F64LE, - AV_CODEC_ID_PCM_BLURAY, - AV_CODEC_ID_PCM_LXF, - AV_CODEC_ID_S302M, - AV_CODEC_ID_PCM_S8_PLANAR, - AV_CODEC_ID_PCM_S24LE_PLANAR = MKBETAG(24,'P','S','P'), - AV_CODEC_ID_PCM_S32LE_PLANAR = MKBETAG(32,'P','S','P'), - AV_CODEC_ID_PCM_S16BE_PLANAR = MKBETAG('P','S','P',16), - - /* various ADPCM codecs */ - AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, - AV_CODEC_ID_ADPCM_IMA_WAV, - AV_CODEC_ID_ADPCM_IMA_DK3, - AV_CODEC_ID_ADPCM_IMA_DK4, - AV_CODEC_ID_ADPCM_IMA_WS, - AV_CODEC_ID_ADPCM_IMA_SMJPEG, - AV_CODEC_ID_ADPCM_MS, - AV_CODEC_ID_ADPCM_4XM, - AV_CODEC_ID_ADPCM_XA, - AV_CODEC_ID_ADPCM_ADX, - AV_CODEC_ID_ADPCM_EA, - AV_CODEC_ID_ADPCM_G726, - AV_CODEC_ID_ADPCM_CT, - AV_CODEC_ID_ADPCM_SWF, - AV_CODEC_ID_ADPCM_YAMAHA, - AV_CODEC_ID_ADPCM_SBPRO_4, - AV_CODEC_ID_ADPCM_SBPRO_3, - AV_CODEC_ID_ADPCM_SBPRO_2, - AV_CODEC_ID_ADPCM_THP, - AV_CODEC_ID_ADPCM_IMA_AMV, - AV_CODEC_ID_ADPCM_EA_R1, - AV_CODEC_ID_ADPCM_EA_R3, - AV_CODEC_ID_ADPCM_EA_R2, - AV_CODEC_ID_ADPCM_IMA_EA_SEAD, - AV_CODEC_ID_ADPCM_IMA_EA_EACS, - AV_CODEC_ID_ADPCM_EA_XAS, - AV_CODEC_ID_ADPCM_EA_MAXIS_XA, - AV_CODEC_ID_ADPCM_IMA_ISS, - AV_CODEC_ID_ADPCM_G722, - AV_CODEC_ID_ADPCM_IMA_APC, - AV_CODEC_ID_VIMA = MKBETAG('V','I','M','A'), - AV_CODEC_ID_ADPCM_AFC = MKBETAG('A','F','C',' '), - AV_CODEC_ID_ADPCM_IMA_OKI = MKBETAG('O','K','I',' '), - - /* AMR */ - AV_CODEC_ID_AMR_NB = 0x12000, - AV_CODEC_ID_AMR_WB, - - /* RealAudio codecs*/ - AV_CODEC_ID_RA_144 = 0x13000, - AV_CODEC_ID_RA_288, - - /* various DPCM codecs */ - AV_CODEC_ID_ROQ_DPCM = 0x14000, - AV_CODEC_ID_INTERPLAY_DPCM, - AV_CODEC_ID_XAN_DPCM, - AV_CODEC_ID_SOL_DPCM, - - /* audio codecs */ - AV_CODEC_ID_MP2 = 0x15000, - AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 - AV_CODEC_ID_AAC, - AV_CODEC_ID_AC3, - AV_CODEC_ID_DTS, - AV_CODEC_ID_VORBIS, - AV_CODEC_ID_DVAUDIO, - AV_CODEC_ID_WMAV1, - AV_CODEC_ID_WMAV2, - AV_CODEC_ID_MACE3, - AV_CODEC_ID_MACE6, - AV_CODEC_ID_VMDAUDIO, - AV_CODEC_ID_FLAC, - AV_CODEC_ID_MP3ADU, - AV_CODEC_ID_MP3ON4, - AV_CODEC_ID_SHORTEN, - AV_CODEC_ID_ALAC, - AV_CODEC_ID_WESTWOOD_SND1, - AV_CODEC_ID_GSM, ///< as in Berlin toast format - AV_CODEC_ID_QDM2, - AV_CODEC_ID_COOK, - AV_CODEC_ID_TRUESPEECH, - AV_CODEC_ID_TTA, - AV_CODEC_ID_SMACKAUDIO, - AV_CODEC_ID_QCELP, - AV_CODEC_ID_WAVPACK, - AV_CODEC_ID_DSICINAUDIO, - AV_CODEC_ID_IMC, - AV_CODEC_ID_MUSEPACK7, - AV_CODEC_ID_MLP, - AV_CODEC_ID_GSM_MS, /* as found in WAV */ - AV_CODEC_ID_ATRAC3, - AV_CODEC_ID_VOXWARE, - AV_CODEC_ID_APE, - AV_CODEC_ID_NELLYMOSER, - AV_CODEC_ID_MUSEPACK8, - AV_CODEC_ID_SPEEX, - AV_CODEC_ID_WMAVOICE, - AV_CODEC_ID_WMAPRO, - AV_CODEC_ID_WMALOSSLESS, - AV_CODEC_ID_ATRAC3P, - AV_CODEC_ID_EAC3, - AV_CODEC_ID_SIPR, - AV_CODEC_ID_MP1, - AV_CODEC_ID_TWINVQ, - AV_CODEC_ID_TRUEHD, - AV_CODEC_ID_MP4ALS, - AV_CODEC_ID_ATRAC1, - AV_CODEC_ID_BINKAUDIO_RDFT, - AV_CODEC_ID_BINKAUDIO_DCT, - AV_CODEC_ID_AAC_LATM, - AV_CODEC_ID_QDMC, - AV_CODEC_ID_CELT, - AV_CODEC_ID_G723_1, - AV_CODEC_ID_G729, - AV_CODEC_ID_8SVX_EXP, - AV_CODEC_ID_8SVX_FIB, - AV_CODEC_ID_BMV_AUDIO, - AV_CODEC_ID_RALF, - AV_CODEC_ID_IAC, - AV_CODEC_ID_ILBC, - AV_CODEC_ID_OPUS_DEPRECATED, - AV_CODEC_ID_COMFORT_NOISE, - AV_CODEC_ID_TAK_DEPRECATED, - AV_CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'), -#if LIBAVCODEC_VERSION_MAJOR <= 54 - AV_CODEC_ID_8SVX_RAW = MKBETAG('8','S','V','X'), -#endif - AV_CODEC_ID_SONIC = MKBETAG('S','O','N','C'), - AV_CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'), - AV_CODEC_ID_PAF_AUDIO = MKBETAG('P','A','F','A'), - AV_CODEC_ID_OPUS = MKBETAG('O','P','U','S'), - AV_CODEC_ID_TAK = MKBETAG('t','B','a','K'), - AV_CODEC_ID_EVRC = MKBETAG('s','e','v','c'), - AV_CODEC_ID_SMV = MKBETAG('s','s','m','v'), - - /* subtitle codecs */ - AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. - AV_CODEC_ID_DVD_SUBTITLE = 0x17000, - AV_CODEC_ID_DVB_SUBTITLE, - AV_CODEC_ID_TEXT, ///< raw UTF-8 text - AV_CODEC_ID_XSUB, - AV_CODEC_ID_SSA, - AV_CODEC_ID_MOV_TEXT, - AV_CODEC_ID_HDMV_PGS_SUBTITLE, - AV_CODEC_ID_DVB_TELETEXT, - AV_CODEC_ID_SRT, - AV_CODEC_ID_MICRODVD = MKBETAG('m','D','V','D'), - AV_CODEC_ID_EIA_608 = MKBETAG('c','6','0','8'), - AV_CODEC_ID_JACOSUB = MKBETAG('J','S','U','B'), - AV_CODEC_ID_SAMI = MKBETAG('S','A','M','I'), - AV_CODEC_ID_REALTEXT = MKBETAG('R','T','X','T'), - AV_CODEC_ID_SUBVIEWER1 = MKBETAG('S','b','V','1'), - AV_CODEC_ID_SUBVIEWER = MKBETAG('S','u','b','V'), - AV_CODEC_ID_SUBRIP = MKBETAG('S','R','i','p'), - AV_CODEC_ID_WEBVTT = MKBETAG('W','V','T','T'), - AV_CODEC_ID_MPL2 = MKBETAG('M','P','L','2'), - AV_CODEC_ID_VPLAYER = MKBETAG('V','P','l','r'), - AV_CODEC_ID_PJS = MKBETAG('P','h','J','S'), - - /* other specific kind of codecs (generally used for attachments) */ - AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. - AV_CODEC_ID_TTF = 0x18000, - AV_CODEC_ID_BINTEXT = MKBETAG('B','T','X','T'), - AV_CODEC_ID_XBIN = MKBETAG('X','B','I','N'), - AV_CODEC_ID_IDF = MKBETAG( 0 ,'I','D','F'), - AV_CODEC_ID_OTF = MKBETAG( 0 ,'O','T','F'), - AV_CODEC_ID_SMPTE_KLV = MKBETAG('K','L','V','A'), - - AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it - - AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS - * stream (only used by libavformat) */ - AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems - * stream (only used by libavformat) */ - AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. - -#if FF_API_CODEC_ID -#include "old_codec_ids.h" -#endif -}; - -#if FF_API_CODEC_ID -#define CodecID AVCodecID -#endif - -/** - * This struct describes the properties of a single codec described by an - * AVCodecID. - * @see avcodec_get_descriptor() - */ -typedef struct AVCodecDescriptor { - enum AVCodecID id; - enum AVMediaType type; - /** - * Name of the codec described by this descriptor. It is non-empty and - * unique for each codec descriptor. It should contain alphanumeric - * characters and '_' only. - */ - const char *name; - /** - * A more descriptive name for this codec. May be NULL. - */ - const char *long_name; - /** - * Codec properties, a combination of AV_CODEC_PROP_* flags. - */ - int props; -} AVCodecDescriptor; - -/** - * Codec uses only intra compression. - * Video codecs only. - */ -#define AV_CODEC_PROP_INTRA_ONLY (1 << 0) -/** - * Codec supports lossy compression. Audio and video codecs only. - * @note a codec may support both lossy and lossless - * compression modes - */ -#define AV_CODEC_PROP_LOSSY (1 << 1) -/** - * Codec supports lossless compression. Audio and video codecs only. - */ -#define AV_CODEC_PROP_LOSSLESS (1 << 2) -/** - * Subtitle codec is bitmap based - */ -#define AV_CODEC_PROP_BITMAP_SUB (1 << 16) - -#if FF_API_OLD_DECODE_AUDIO -/* in bytes */ -#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio -#endif - -/** - * @ingroup lavc_decoding - * Required number of additionally allocated bytes at the end of the input bitstream for decoding. - * This is mainly needed because some optimized bitstream readers read - * 32 or 64 bit at once and could read over the end.
- * Note: If the first 23 bits of the additional bytes are not 0, then damaged - * MPEG bitstreams could cause overread and segfault. - */ -#define FF_INPUT_BUFFER_PADDING_SIZE 16 - -/** - * @ingroup lavc_encoding - * minimum encoding buffer size - * Used to avoid some checks during header writing. - */ -#define FF_MIN_BUFFER_SIZE 16384 - - -/** - * @ingroup lavc_encoding - * motion estimation type. - */ -enum Motion_Est_ID { - ME_ZERO = 1, ///< no search, that is use 0,0 vector whenever one is needed - ME_FULL, - ME_LOG, - ME_PHODS, - ME_EPZS, ///< enhanced predictive zonal search - ME_X1, ///< reserved for experiments - ME_HEX, ///< hexagon based search - ME_UMH, ///< uneven multi-hexagon search - ME_ITER, ///< iterative search - ME_TESA, ///< transformed exhaustive search algorithm -}; - -/** - * @ingroup lavc_decoding - */ -enum AVDiscard{ - /* We leave some space between them for extensions (drop some - * keyframes for intra-only or drop just some bidir frames). */ - AVDISCARD_NONE =-16, ///< discard nothing - AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi - AVDISCARD_NONREF = 8, ///< discard all non reference - AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames - AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes - AVDISCARD_ALL = 48, ///< discard all -}; - -enum AVColorPrimaries{ - AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B - AVCOL_PRI_UNSPECIFIED = 2, - AVCOL_PRI_BT470M = 4, - AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM - AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above - AVCOL_PRI_FILM = 8, - AVCOL_PRI_NB , ///< Not part of ABI -}; - -enum AVColorTransferCharacteristic{ - AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 - AVCOL_TRC_UNSPECIFIED = 2, - AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM - AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG - AVCOL_TRC_SMPTE240M = 7, - AVCOL_TRC_NB , ///< Not part of ABI -}; - -enum AVColorSpace{ - AVCOL_SPC_RGB = 0, - AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B - AVCOL_SPC_UNSPECIFIED = 2, - AVCOL_SPC_FCC = 4, - AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 - AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above - AVCOL_SPC_SMPTE240M = 7, - AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 - AVCOL_SPC_NB , ///< Not part of ABI -}; -#define AVCOL_SPC_YCGCO AVCOL_SPC_YCOCG - -enum AVColorRange{ - AVCOL_RANGE_UNSPECIFIED = 0, - AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges - AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges - AVCOL_RANGE_NB , ///< Not part of ABI -}; - -/** - * X X 3 4 X X are luma samples, - * 1 2 1-6 are possible chroma positions - * X X 5 6 X 0 is undefined/unknown position - */ -enum AVChromaLocation{ - AVCHROMA_LOC_UNSPECIFIED = 0, - AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4, h264 default - AVCHROMA_LOC_CENTER = 2, ///< mpeg1, jpeg, h263 - AVCHROMA_LOC_TOPLEFT = 3, ///< DV - AVCHROMA_LOC_TOP = 4, - AVCHROMA_LOC_BOTTOMLEFT = 5, - AVCHROMA_LOC_BOTTOM = 6, - AVCHROMA_LOC_NB , ///< Not part of ABI -}; - -enum AVAudioServiceType { - AV_AUDIO_SERVICE_TYPE_MAIN = 0, - AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, - AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, - AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, - AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, - AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, - AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, - AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, - AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, - AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI -}; - -/** - * @ingroup lavc_encoding - */ -typedef struct RcOverride{ - int start_frame; - int end_frame; - int qscale; // If this is 0 then quality_factor will be used instead. - float quality_factor; -} RcOverride; - -#define FF_MAX_B_FRAMES 16 - -/* encoding support - These flags can be passed in AVCodecContext.flags before initialization. - Note: Not everything is supported yet. -*/ - -#define CODEC_FLAG_QSCALE 0x0002 ///< Use fixed qscale. -#define CODEC_FLAG_4MV 0x0004 ///< 4 MV per MB allowed / advanced prediction for H.263. -#define CODEC_FLAG_QPEL 0x0010 ///< Use qpel MC. -#define CODEC_FLAG_GMC 0x0020 ///< Use GMC. -#define CODEC_FLAG_MV0 0x0040 ///< Always try a MB with MV=<0,0>. -/** - * The parent program guarantees that the input for B-frames containing - * streams is not written to for at least s->max_b_frames+1 frames, if - * this is not set the input will be copied. - */ -#define CODEC_FLAG_INPUT_PRESERVED 0x0100 -#define CODEC_FLAG_PASS1 0x0200 ///< Use internal 2pass ratecontrol in first pass mode. -#define CODEC_FLAG_PASS2 0x0400 ///< Use internal 2pass ratecontrol in second pass mode. -#define CODEC_FLAG_GRAY 0x2000 ///< Only decode/encode grayscale. -#define CODEC_FLAG_EMU_EDGE 0x4000 ///< Don't draw edges. -#define CODEC_FLAG_PSNR 0x8000 ///< error[?] variables will be set during encoding. -#define CODEC_FLAG_TRUNCATED 0x00010000 /** Input bitstream might be truncated at a random - location instead of only at frame boundaries. */ -#define CODEC_FLAG_NORMALIZE_AQP 0x00020000 ///< Normalize adaptive quantization. -#define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< Use interlaced DCT. -#define CODEC_FLAG_LOW_DELAY 0x00080000 ///< Force low delay. -#define CODEC_FLAG_GLOBAL_HEADER 0x00400000 ///< Place global headers in extradata instead of every keyframe. -#define CODEC_FLAG_BITEXACT 0x00800000 ///< Use only bitexact stuff (except (I)DCT). -/* Fx : Flag for h263+ extra options */ -#define CODEC_FLAG_AC_PRED 0x01000000 ///< H.263 advanced intra coding / MPEG-4 AC prediction -#define CODEC_FLAG_LOOP_FILTER 0x00000800 ///< loop filter -#define CODEC_FLAG_INTERLACED_ME 0x20000000 ///< interlaced motion estimation -#define CODEC_FLAG_CLOSED_GOP 0x80000000 -#define CODEC_FLAG2_FAST 0x00000001 ///< Allow non spec compliant speedup tricks. -#define CODEC_FLAG2_NO_OUTPUT 0x00000004 ///< Skip bitstream encoding. -#define CODEC_FLAG2_LOCAL_HEADER 0x00000008 ///< Place global headers at every keyframe instead of in extradata. -#define CODEC_FLAG2_DROP_FRAME_TIMECODE 0x00002000 ///< timecode is in drop frame format. DEPRECATED!!!! -#define CODEC_FLAG2_IGNORE_CROP 0x00010000 ///< Discard cropping information from SPS. - -#if FF_API_MPV_GLOBAL_OPTS -#define CODEC_FLAG_CBP_RD 0x04000000 ///< Use rate distortion optimization for cbp. -#define CODEC_FLAG_QP_RD 0x08000000 ///< Use rate distortion optimization for qp selectioon. -#define CODEC_FLAG2_STRICT_GOP 0x00000002 ///< Strictly enforce GOP size. -#define CODEC_FLAG2_SKIP_RD 0x00004000 ///< RD optimal MB level residual skipping -#endif -#define CODEC_FLAG2_CHUNKS 0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries. -#define CODEC_FLAG2_SHOW_ALL 0x00400000 ///< Show all frames before the first keyframe - -/* Unsupported options : - * Syntax Arithmetic coding (SAC) - * Reference Picture Selection - * Independent Segment Decoding */ -/* /Fx */ -/* codec capabilities */ - -#define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< Decoder can use draw_horiz_band callback. -/** - * Codec uses get_buffer() for allocating buffers and supports custom allocators. - * If not set, it might not use get_buffer() at all or use operations that - * assume the buffer was allocated by avcodec_default_get_buffer. - */ -#define CODEC_CAP_DR1 0x0002 -#define CODEC_CAP_TRUNCATED 0x0008 -/* Codec can export data for HW decoding (XvMC). */ -#define CODEC_CAP_HWACCEL 0x0010 -/** - * Encoder or decoder requires flushing with NULL input at the end in order to - * give the complete and correct output. - * - * NOTE: If this flag is not set, the codec is guaranteed to never be fed with - * with NULL data. The user can still send NULL data to the public encode - * or decode function, but libavcodec will not pass it along to the codec - * unless this flag is set. - * - * Decoders: - * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to get the delayed data until the decoder no longer - * returns frames. - * - * Encoders: - * The encoder needs to be fed with NULL data at the end of encoding until the - * encoder no longer returns data. - * - * NOTE: For encoders implementing the AVCodec.encode2() function, setting this - * flag also means that the encoder must set the pts and duration for - * each output packet. If this flag is not set, the pts and duration will - * be determined by libavcodec from the input frame. - */ -#define CODEC_CAP_DELAY 0x0020 -/** - * Codec can be fed a final frame with a smaller size. - * This can be used to prevent truncation of the last audio samples. - */ -#define CODEC_CAP_SMALL_LAST_FRAME 0x0040 -/** - * Codec can export data for HW decoding (VDPAU). - */ -#define CODEC_CAP_HWACCEL_VDPAU 0x0080 -/** - * Codec can output multiple frames per AVPacket - * Normally demuxers return one frame at a time, demuxers which do not do - * are connected to a parser to split what they return into proper frames. - * This flag is reserved to the very rare category of codecs which have a - * bitstream that cannot be split into frames without timeconsuming - * operations like full decoding. Demuxers carring such bitstreams thus - * may return multiple frames in a packet. This has many disadvantages like - * prohibiting stream copy in many cases thus it should only be considered - * as a last resort. - */ -#define CODEC_CAP_SUBFRAMES 0x0100 -/** - * Codec is experimental and is thus avoided in favor of non experimental - * encoders - */ -#define CODEC_CAP_EXPERIMENTAL 0x0200 -/** - * Codec should fill in channel configuration and samplerate instead of container - */ -#define CODEC_CAP_CHANNEL_CONF 0x0400 - -/** - * Codec is able to deal with negative linesizes - */ -#define CODEC_CAP_NEG_LINESIZES 0x0800 - -/** - * Codec supports frame-level multithreading. - */ -#define CODEC_CAP_FRAME_THREADS 0x1000 -/** - * Codec supports slice-based (or partition-based) multithreading. - */ -#define CODEC_CAP_SLICE_THREADS 0x2000 -/** - * Codec supports changed parameters at any point. - */ -#define CODEC_CAP_PARAM_CHANGE 0x4000 -/** - * Codec supports avctx->thread_count == 0 (auto). - */ -#define CODEC_CAP_AUTO_THREADS 0x8000 -/** - * Audio encoder supports receiving a different number of samples in each call. - */ -#define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000 -/** - * Codec is intra only. - */ -#define CODEC_CAP_INTRA_ONLY 0x40000000 -/** - * Codec is lossless. - */ -#define CODEC_CAP_LOSSLESS 0x80000000 - -//The following defines may change, don't expect compatibility if you use them. -#define MB_TYPE_INTRA4x4 0x0001 -#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific -#define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific -#define MB_TYPE_16x16 0x0008 -#define MB_TYPE_16x8 0x0010 -#define MB_TYPE_8x16 0x0020 -#define MB_TYPE_8x8 0x0040 -#define MB_TYPE_INTERLACED 0x0080 -#define MB_TYPE_DIRECT2 0x0100 //FIXME -#define MB_TYPE_ACPRED 0x0200 -#define MB_TYPE_GMC 0x0400 -#define MB_TYPE_SKIP 0x0800 -#define MB_TYPE_P0L0 0x1000 -#define MB_TYPE_P1L0 0x2000 -#define MB_TYPE_P0L1 0x4000 -#define MB_TYPE_P1L1 0x8000 -#define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0) -#define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1) -#define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1) -#define MB_TYPE_QUANT 0x00010000 -#define MB_TYPE_CBP 0x00020000 -//Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...) - -/** - * Pan Scan area. - * This specifies the area which should be displayed. - * Note there may be multiple such areas for one frame. - */ -typedef struct AVPanScan{ - /** - * id - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int id; - - /** - * width and height in 1/16 pel - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int width; - int height; - - /** - * position of the top left corner in 1/16 pel for up to 3 fields/frames - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int16_t position[3][2]; -}AVPanScan; - -#define FF_QSCALE_TYPE_MPEG1 0 -#define FF_QSCALE_TYPE_MPEG2 1 -#define FF_QSCALE_TYPE_H264 2 -#define FF_QSCALE_TYPE_VP56 3 - -#define FF_BUFFER_TYPE_INTERNAL 1 -#define FF_BUFFER_TYPE_USER 2 ///< direct rendering buffers (image is (de)allocated by user) -#define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared. -#define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other buffer, don't deallocate anything. - -#define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful (if 0 ignore). -#define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer. -#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content. -#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update). - -/** - * @defgroup lavc_packet AVPacket - * - * Types and functions for working with AVPacket. - * @{ - */ -enum AVPacketSideDataType { - AV_PKT_DATA_PALETTE, - AV_PKT_DATA_NEW_EXTRADATA, - - /** - * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: - * @code - * u32le param_flags - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) - * s32le channel_count - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) - * u64le channel_layout - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) - * s32le sample_rate - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) - * s32le width - * s32le height - * @endcode - */ - AV_PKT_DATA_PARAM_CHANGE, - - /** - * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of - * structures with info about macroblocks relevant to splitting the - * packet into smaller packets on macroblock edges (e.g. as for RFC 2190). - * That is, it does not necessarily contain info about all macroblocks, - * as long as the distance between macroblocks in the info is smaller - * than the target payload size. - * Each MB info structure is 12 bytes, and is laid out as follows: - * @code - * u32le bit offset from the start of the packet - * u8 current quantizer at the start of the macroblock - * u8 GOB number - * u16le macroblock address within the GOB - * u8 horizontal MV predictor - * u8 vertical MV predictor - * u8 horizontal MV predictor for block number 3 - * u8 vertical MV predictor for block number 3 - * @endcode - */ - AV_PKT_DATA_H263_MB_INFO, - - /** - * Recommmends skipping the specified number of samples - * @code - * u32le number of samples to skip from start of this packet - * u32le number of samples to skip from end of this packet - * u8 reason for start skip - * u8 reason for end skip (0=padding silence, 1=convergence) - * @endcode - */ - AV_PKT_DATA_SKIP_SAMPLES=70, - - /** - * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that - * the packet may contain "dual mono" audio specific to Japanese DTV - * and if it is true, recommends only the selected channel to be used. - * @code - * u8 selected channels (0=mail/left, 1=sub/right, 2=both) - * @endcode - */ - AV_PKT_DATA_JP_DUALMONO, - - /** - * A list of zero terminated key/value strings. There is no end marker for - * the list, so it is required to rely on the side data size to stop. - */ - AV_PKT_DATA_STRINGS_METADATA, - - /** - * Subtitle event position - * @code - * u32le x1 - * u32le y1 - * u32le x2 - * u32le y2 - * @endcode - */ - AV_PKT_DATA_SUBTITLE_POSITION, - - /** - * Data found in BlockAdditional element of matroska container. There is - * no end marker for the data, so it is required to rely on the side data - * size to recognize the end. 8 byte id (as found in BlockAddId) followed - * by data. - */ - AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, -}; - -/** - * This structure stores compressed data. It is typically exported by demuxers - * and then passed as input to decoders, or received as output from encoders and - * then passed to muxers. - * - * For video, it should typically contain one compressed frame. For audio it may - * contain several compressed frames. - * - * AVPacket is one of the few structs in FFmpeg, whose size is a part of public - * ABI. Thus it may be allocated on stack and no new fields can be added to it - * without libavcodec and libavformat major bump. - * - * The semantics of data ownership depends on the destruct field. - * If it is set, the packet data is dynamically allocated and is valid - * indefinitely until av_free_packet() is called (which in turn calls the - * destruct callback to free the data). If destruct is not set, the packet data - * is typically backed by some static buffer somewhere and is only valid for a - * limited time (e.g. until the next read call when demuxing). - * - * The side data is always allocated with av_malloc() and is freed in - * av_free_packet(). - */ -typedef struct AVPacket { - /** - * Presentation timestamp in AVStream->time_base units; the time at which - * the decompressed packet will be presented to the user. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - * pts MUST be larger or equal to dts as presentation cannot happen before - * decompression, unless one wants to view hex dumps. Some formats misuse - * the terms dts and pts/cts to mean something different. Such timestamps - * must be converted to true pts/dts before they are stored in AVPacket. - */ - int64_t pts; - /** - * Decompression timestamp in AVStream->time_base units; the time at which - * the packet is decompressed. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - */ - int64_t dts; - uint8_t *data; - int size; - int stream_index; - /** - * A combination of AV_PKT_FLAG values - */ - int flags; - /** - * Additional packet data that can be provided by the container. - * Packet can contain several types of side information. - */ - struct { - uint8_t *data; - int size; - enum AVPacketSideDataType type; - } *side_data; - int side_data_elems; - - /** - * Duration of this packet in AVStream->time_base units, 0 if unknown. - * Equals next_pts - this_pts in presentation order. - */ - int duration; - void (*destruct)(struct AVPacket *); - void *priv; - int64_t pos; ///< byte position in stream, -1 if unknown - - /** - * Time difference in AVStream->time_base units from the pts of this - * packet to the point at which the output from the decoder has converged - * independent from the availability of previous frames. That is, the - * frames are virtually identical no matter if decoding started from - * the very first frame or from this keyframe. - * Is AV_NOPTS_VALUE if unknown. - * This field is not the display duration of the current packet. - * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY - * set. - * - * The purpose of this field is to allow seeking in streams that have no - * keyframes in the conventional sense. It corresponds to the - * recovery point SEI in H.264 and match_time_delta in NUT. It is also - * essential for some types of subtitle streams to ensure that all - * subtitles are correctly displayed after seeking. - */ - int64_t convergence_duration; -} AVPacket; -#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe -#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted - -enum AVSideDataParamChangeFlags { - AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, - AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002, - AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, - AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, -}; -/** - * @} - */ - -/** - * This structure describes decoded (raw) audio or video data. - * - * AVFrame must be allocated using avcodec_alloc_frame() and freed with - * avcodec_free_frame(). Note that this allocates only the AVFrame itself. The - * buffers for the data must be managed through other means. - * - * AVFrame is typically allocated once and then reused multiple times to hold - * different data (e.g. a single AVFrame to hold frames received from a - * decoder). In such a case, avcodec_get_frame_defaults() should be used to - * reset the frame to its original clean state before it is reused again. - * - * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added - * to the end with a minor bump. - * Similarly fields that are marked as to be only accessed by - * av_opt_ptr() can be reordered. This allows 2 forks to add fields - * without breaking compatibility with each other. - */ -typedef struct AVFrame { -#define AV_NUM_DATA_POINTERS 8 - /** - * pointer to the picture/channel planes. - * This might be different from the first allocated byte - * - encoding: Set by user - * - decoding: set by AVCodecContext.get_buffer() - */ - uint8_t *data[AV_NUM_DATA_POINTERS]; - - /** - * Size, in bytes, of the data for each picture/channel plane. - * - * For audio, only linesize[0] may be set. For planar audio, each channel - * plane must be the same size. - * - * - encoding: Set by user - * - decoding: set by AVCodecContext.get_buffer() - */ - int linesize[AV_NUM_DATA_POINTERS]; - - /** - * pointers to the data planes/channels. - * - * For video, this should simply point to data[]. - * - * For planar audio, each channel has a separate data pointer, and - * linesize[0] contains the size of each channel buffer. - * For packed audio, there is just one data pointer, and linesize[0] - * contains the total size of the buffer for all channels. - * - * Note: Both data and extended_data will always be set by get_buffer(), - * but for planar audio with more channels that can fit in data, - * extended_data must be used by the decoder in order to access all - * channels. - * - * encoding: set by user - * decoding: set by AVCodecContext.get_buffer() - */ - uint8_t **extended_data; - - /** - * width and height of the video frame - * - encoding: unused - * - decoding: Read by user. - */ - int width, height; - - /** - * number of audio samples (per channel) described by this frame - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - int nb_samples; - - /** - * format of the frame, -1 if unknown or unset - * Values correspond to enum AVPixelFormat for video frames, - * enum AVSampleFormat for audio) - * - encoding: unused - * - decoding: Read by user. - */ - int format; - - /** - * 1 -> keyframe, 0-> not - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int key_frame; - - /** - * Picture type of the frame, see ?_TYPE below. - * - encoding: Set by libavcodec. for coded_picture (and set by user for input). - * - decoding: Set by libavcodec. - */ - enum AVPictureType pict_type; - - /** - * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer. - * This isn't used by libavcodec unless the default get/release_buffer() is used. - * - encoding: - * - decoding: - */ - uint8_t *base[AV_NUM_DATA_POINTERS]; - - /** - * sample aspect ratio for the video frame, 0/1 if unknown/unspecified - * - encoding: unused - * - decoding: Read by user. - */ - AVRational sample_aspect_ratio; - - /** - * presentation timestamp in time_base units (time when frame should be shown to user) - * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed. - * - encoding: MUST be set by user. - * - decoding: Set by libavcodec. - */ - int64_t pts; - - /** - * pts copied from the AVPacket that was decoded to produce this frame - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_pts; - - /** - * dts copied from the AVPacket that triggered returning this frame - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_dts; - - /** - * picture number in bitstream order - * - encoding: set by - * - decoding: Set by libavcodec. - */ - int coded_picture_number; - /** - * picture number in display order - * - encoding: set by - * - decoding: Set by libavcodec. - */ - int display_picture_number; - - /** - * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) - * - encoding: Set by libavcodec. for coded_picture (and set by user for input). - * - decoding: Set by libavcodec. - */ - int quality; - - /** - * is this picture used as reference - * The values for this are the same as the MpegEncContext.picture_structure - * variable, that is 1->top field, 2->bottom field, 3->frame/both fields. - * Set to 4 for delayed, non-reference frames. - * - encoding: unused - * - decoding: Set by libavcodec. (before get_buffer() call)). - */ - int reference; - - /** - * QP table - * - encoding: unused - * - decoding: Set by libavcodec. - */ - int8_t *qscale_table; - /** - * QP store stride - * - encoding: unused - * - decoding: Set by libavcodec. - */ - int qstride; - - /** - * - */ - int qscale_type; - - /** - * mbskip_table[mb]>=1 if MB didn't change - * stride= mb_width = (width+15)>>4 - * - encoding: unused - * - decoding: Set by libavcodec. - */ - uint8_t *mbskip_table; - - /** - * motion vector table - * @code - * example: - * int mv_sample_log2= 4 - motion_subsample_log2; - * int mb_width= (width+15)>>4; - * int mv_stride= (mb_width << mv_sample_log2) + 1; - * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y]; - * @endcode - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int16_t (*motion_val[2])[2]; - - /** - * macroblock type table - * mb_type_base + mb_width + 2 - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - uint32_t *mb_type; - - /** - * DCT coefficients - * - encoding: unused - * - decoding: Set by libavcodec. - */ - short *dct_coeff; - - /** - * motion reference frame index - * the order in which these are stored can depend on the codec. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int8_t *ref_index[2]; - - /** - * for some private data of the user - * - encoding: unused - * - decoding: Set by user. - */ - void *opaque; - - /** - * error - * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR. - * - decoding: unused - */ - uint64_t error[AV_NUM_DATA_POINTERS]; - - /** - * type of the buffer (to keep track of who has to deallocate data[*]) - * - encoding: Set by the one who allocates it. - * - decoding: Set by the one who allocates it. - * Note: User allocated (direct rendering) & internal buffers cannot coexist currently. - */ - int type; - - /** - * When decoding, this signals how much the picture must be delayed. - * extra_delay = repeat_pict / (2*fps) - * - encoding: unused - * - decoding: Set by libavcodec. - */ - int repeat_pict; - - /** - * The content of the picture is interlaced. - * - encoding: Set by user. - * - decoding: Set by libavcodec. (default 0) - */ - int interlaced_frame; - - /** - * If the content is interlaced, is top field displayed first. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int top_field_first; - - /** - * Tell user application that palette has changed from previous frame. - * - encoding: ??? (no palette-enabled encoder yet) - * - decoding: Set by libavcodec. (default 0). - */ - int palette_has_changed; - - /** - * codec suggestion on buffer type if != 0 - * - encoding: unused - * - decoding: Set by libavcodec. (before get_buffer() call)). - */ - int buffer_hints; - - /** - * Pan scan. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVPanScan *pan_scan; - - /** - * reordered opaque 64bit (generally an integer or a double precision float - * PTS but can be anything). - * The user sets AVCodecContext.reordered_opaque to represent the input at - * that time, - * the decoder reorders values as needed and sets AVFrame.reordered_opaque - * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque - * @deprecated in favor of pkt_pts - * - encoding: unused - * - decoding: Read by user. - */ - int64_t reordered_opaque; - - /** - * hardware accelerator private data (FFmpeg-allocated) - * - encoding: unused - * - decoding: Set by libavcodec - */ - void *hwaccel_picture_private; - - /** - * the AVCodecContext which ff_thread_get_buffer() was last called on - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - struct AVCodecContext *owner; - - /** - * used by multithreading to store frame-specific info - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - void *thread_opaque; - - /** - * log2 of the size of the block which a single vector in motion_val represents: - * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2) - * - encoding: unused - * - decoding: Set by libavcodec. - */ - uint8_t motion_subsample_log2; - - /** - * Sample rate of the audio data. - * - * - encoding: unused - * - decoding: read by user - */ - int sample_rate; - - /** - * Channel layout of the audio data. - * - * - encoding: unused - * - decoding: read by user. - */ - uint64_t channel_layout; - - /** - * frame timestamp estimated using various heuristics, in stream time base - * Code outside libavcodec should access this field using: - * av_frame_get_best_effort_timestamp(frame) - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int64_t best_effort_timestamp; - - /** - * reordered pos from the last AVPacket that has been input into the decoder - * Code outside libavcodec should access this field using: - * av_frame_get_pkt_pos(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_pos; - - /** - * duration of the corresponding packet, expressed in - * AVStream->time_base units, 0 if unknown. - * Code outside libavcodec should access this field using: - * av_frame_get_pkt_duration(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_duration; - - /** - * metadata. - * Code outside libavcodec should access this field using: - * av_frame_get_metadata(frame) - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVDictionary *metadata; - - /** - * decode error flags of the frame, set to a combination of - * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there - * were errors during the decoding. - * Code outside libavcodec should access this field using: - * av_frame_get_decode_error_flags(frame) - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int decode_error_flags; -#define FF_DECODE_ERROR_INVALID_BITSTREAM 1 -#define FF_DECODE_ERROR_MISSING_REFERENCE 2 - - /** - * number of audio channels, only used for audio. - * Code outside libavcodec should access this field using: - * av_frame_get_channels(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int channels; - - /** - * size of the corresponding packet containing the compressed - * frame. It must be accessed using av_frame_get_pkt_size() and - * av_frame_set_pkt_size(). - * It is set to a negative value if unknown. - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int pkt_size; -} AVFrame; - -/** - * Accessors for some AVFrame fields. - * The position of these field in the structure is not part of the ABI, - * they should not be accessed directly outside libavcodec. - */ -int64_t av_frame_get_best_effort_timestamp(const AVFrame *frame); -void av_frame_set_best_effort_timestamp(AVFrame *frame, int64_t val); -int64_t av_frame_get_pkt_duration (const AVFrame *frame); -void av_frame_set_pkt_duration (AVFrame *frame, int64_t val); -int64_t av_frame_get_pkt_pos (const AVFrame *frame); -void av_frame_set_pkt_pos (AVFrame *frame, int64_t val); -int64_t av_frame_get_channel_layout (const AVFrame *frame); -void av_frame_set_channel_layout (AVFrame *frame, int64_t val); -int av_frame_get_channels (const AVFrame *frame); -void av_frame_set_channels (AVFrame *frame, int val); -int av_frame_get_sample_rate (const AVFrame *frame); -void av_frame_set_sample_rate (AVFrame *frame, int val); -AVDictionary *av_frame_get_metadata (const AVFrame *frame); -void av_frame_set_metadata (AVFrame *frame, AVDictionary *val); -int av_frame_get_decode_error_flags (const AVFrame *frame); -void av_frame_set_decode_error_flags (AVFrame *frame, int val); -int av_frame_get_pkt_size(const AVFrame *frame); -void av_frame_set_pkt_size(AVFrame *frame, int val); - -struct AVCodecInternal; - -enum AVFieldOrder { - AV_FIELD_UNKNOWN, - AV_FIELD_PROGRESSIVE, - AV_FIELD_TT, //< Top coded_first, top displayed first - AV_FIELD_BB, //< Bottom coded first, bottom displayed first - AV_FIELD_TB, //< Top coded first, bottom displayed first - AV_FIELD_BT, //< Bottom coded first, top displayed first -}; - -/** - * main external API structure. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * Please use AVOptions (av_opt* / av_set/get*()) to access these fields from user - * applications. - * sizeof(AVCodecContext) must not be used outside libav*. - */ -typedef struct AVCodecContext { - /** - * information on struct for av_log - * - set by avcodec_alloc_context3 - */ - const AVClass *av_class; - int log_level_offset; - - enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ - const struct AVCodec *codec; - char codec_name[32]; - enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ - - /** - * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). - * This is used to work around some encoder bugs. - * A demuxer should set this to what is stored in the field used to identify the codec. - * If there are multiple such fields in a container then the demuxer should choose the one - * which maximizes the information about the used codec. - * If the codec tag field in a container is larger than 32 bits then the demuxer should - * remap the longer ID to 32 bits with a table or other structure. Alternatively a new - * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated - * first. - * - encoding: Set by user, if not then the default based on codec_id will be used. - * - decoding: Set by user, will be converted to uppercase by libavcodec during init. - */ - unsigned int codec_tag; - - /** - * fourcc from the AVI stream header (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). - * This is used to work around some encoder bugs. - * - encoding: unused - * - decoding: Set by user, will be converted to uppercase by libavcodec during init. - */ - unsigned int stream_codec_tag; - -#if FF_API_SUB_ID - /** - * @deprecated this field is unused - */ - attribute_deprecated int sub_id; -#endif - - void *priv_data; - - /** - * Private context used for internal data. - * - * Unlike priv_data, this is not codec-specific. It is used in general - * libavcodec functions. - */ - struct AVCodecInternal *internal; - - /** - * Private data of the user, can be used to carry app specific stuff. - * - encoding: Set by user. - * - decoding: Set by user. - */ - void *opaque; - - /** - * the average bitrate - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream. - */ - int bit_rate; - - /** - * number of bits the bitstream is allowed to diverge from the reference. - * the reference can be CBR (for CBR pass1) or VBR (for pass2) - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: unused - */ - int bit_rate_tolerance; - - /** - * Global quality for codecs which cannot change it per frame. - * This should be proportional to MPEG-1/2/4 qscale. - * - encoding: Set by user. - * - decoding: unused - */ - int global_quality; - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int compression_level; -#define FF_COMPRESSION_DEFAULT -1 - - /** - * CODEC_FLAG_*. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags; - - /** - * CODEC_FLAG2_* - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags2; - - /** - * some codecs need / can use extradata like Huffman tables. - * mjpeg: Huffman tables - * rv10: additional flags - * mpeg4: global headers (they can be in the bitstream or here) - * The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger - * than extradata_size to avoid prolems if it is read with the bitstream reader. - * The bytewise contents of extradata must not depend on the architecture or CPU endianness. - * - encoding: Set/allocated/freed by libavcodec. - * - decoding: Set/allocated/freed by user. - */ - uint8_t *extradata; - int extradata_size; - - /** - * This is the fundamental unit of time (in seconds) in terms - * of which frame timestamps are represented. For fixed-fps content, - * timebase should be 1/framerate and timestamp increments should be - * identically 1. - * - encoding: MUST be set by user. - * - decoding: Set by libavcodec. - */ - AVRational time_base; - - /** - * For some codecs, the time base is closer to the field rate than the frame rate. - * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration - * if no telecine is used ... - * - * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. - */ - int ticks_per_frame; - - /** - * Codec delay. - * - * Encoding: Number of frames delay there will be from the encoder input to - * the decoder output. (we assume the decoder matches the spec) - * Decoding: Number of frames delay in addition to what a standard decoder - * as specified in the spec would produce. - * - * Video: - * Number of frames the decoded output will be delayed relative to the - * encoded input. - * - * Audio: - * For encoding, this is the number of "priming" samples added to the - * beginning of the stream. The decoded output will be delayed by this - * many samples relative to the input to the encoder. Note that this - * field is purely informational and does not directly affect the pts - * output by the encoder, which should always be based on the actual - * presentation time, including any delay. - * For decoding, this is the number of samples the decoder needs to - * output before the decoder's output is valid. When seeking, you should - * start decoding this many samples prior to your desired seek point. - * - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int delay; - - - /* video only */ - /** - * picture width / height. - * - encoding: MUST be set by user. - * - decoding: Set by libavcodec. - * Note: For compatibility it is possible to set this instead of - * coded_width/height before decoding. - */ - int width, height; - - /** - * Bitstream width / height, may be different from width/height if lowres enabled. - * - encoding: unused - * - decoding: Set by user before init if known. Codec should override / dynamically change if needed. - */ - int coded_width, coded_height; - -#define FF_ASPECT_EXTENDED 15 - - /** - * the number of pictures in a group of pictures, or 0 for intra_only - * - encoding: Set by user. - * - decoding: unused - */ - int gop_size; - - /** - * Pixel format, see AV_PIX_FMT_xxx. - * May be set by the demuxer if known from headers. - * May be overridden by the decoder if it knows better. - * - encoding: Set by user. - * - decoding: Set by user if known, overridden by libavcodec if known - */ - enum AVPixelFormat pix_fmt; - - /** - * Motion estimation algorithm used for video coding. - * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex), - * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific] - * - encoding: MUST be set by user. - * - decoding: unused - */ - int me_method; - - /** - * If non NULL, 'draw_horiz_band' is called by the libavcodec - * decoder to draw a horizontal band. It improves cache usage. Not - * all codecs can do that. You must check the codec capabilities - * beforehand. - * When multithreading is used, it may be called from multiple threads - * at the same time; threads might draw different parts of the same AVFrame, - * or multiple AVFrames, and there is no guarantee that slices will be drawn - * in order. - * The function is also used by hardware acceleration APIs. - * It is called at least once during frame decoding to pass - * the data needed for hardware render. - * In that mode instead of pixel data, AVFrame points to - * a structure specific to the acceleration API. The application - * reads the structure and can change some fields to indicate progress - * or mark state. - * - encoding: unused - * - decoding: Set by user. - * @param height the height of the slice - * @param y the y position of the slice - * @param type 1->top field, 2->bottom field, 3->frame - * @param offset offset into the AVFrame.data from which the slice should be read - */ - void (*draw_horiz_band)(struct AVCodecContext *s, - const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], - int y, int type, int height); - - /** - * callback to negotiate the pixelFormat - * @param fmt is the list of formats which are supported by the codec, - * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. - * The first is always the native one. - * @return the chosen format - * - encoding: unused - * - decoding: Set by user, if not set the native format will be chosen. - */ - enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - - /** - * maximum number of B-frames between non-B-frames - * Note: The output will be delayed by max_b_frames+1 relative to the input. - * - encoding: Set by user. - * - decoding: unused - */ - int max_b_frames; - - /** - * qscale factor between IP and B-frames - * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_factor; - - /** obsolete FIXME remove */ - int rc_strategy; -#define FF_RC_STRATEGY_XVID 1 - - int b_frame_strategy; - -#if FF_API_MPV_GLOBAL_OPTS - /** - * luma single coefficient elimination threshold - * - encoding: Set by user. - * - decoding: unused - */ - attribute_deprecated int luma_elim_threshold; - - /** - * chroma single coeff elimination threshold - * - encoding: Set by user. - * - decoding: unused - */ - attribute_deprecated int chroma_elim_threshold; -#endif - - /** - * qscale offset between IP and B-frames - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_offset; - - /** - * Size of the frame reordering buffer in the decoder. - * For MPEG-2 it is 1 IPB or 0 low delay IP. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int has_b_frames; - - /** - * 0-> h263 quant 1-> mpeg quant - * - encoding: Set by user. - * - decoding: unused - */ - int mpeg_quant; - - /** - * qscale factor between P and I-frames - * If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_factor; - - /** - * qscale offset between P and I-frames - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_offset; - - /** - * luminance masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float lumi_masking; - - /** - * temporary complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float temporal_cplx_masking; - - /** - * spatial complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float spatial_cplx_masking; - - /** - * p block masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float p_masking; - - /** - * darkness masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float dark_masking; - - /** - * slice count - * - encoding: Set by libavcodec. - * - decoding: Set by user (or 0). - */ - int slice_count; - /** - * prediction method (needed for huffyuv) - * - encoding: Set by user. - * - decoding: unused - */ - int prediction_method; -#define FF_PRED_LEFT 0 -#define FF_PRED_PLANE 1 -#define FF_PRED_MEDIAN 2 - - /** - * slice offsets in the frame in bytes - * - encoding: Set/allocated by libavcodec. - * - decoding: Set/allocated by user (or NULL). - */ - int *slice_offset; - - /** - * sample aspect ratio (0 if unknown) - * That is the width of a pixel divided by the height of the pixel. - * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVRational sample_aspect_ratio; - - /** - * motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_cmp; - /** - * subpixel motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_sub_cmp; - /** - * macroblock comparison function (not supported yet) - * - encoding: Set by user. - * - decoding: unused - */ - int mb_cmp; - /** - * interlaced DCT comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int ildct_cmp; -#define FF_CMP_SAD 0 -#define FF_CMP_SSE 1 -#define FF_CMP_SATD 2 -#define FF_CMP_DCT 3 -#define FF_CMP_PSNR 4 -#define FF_CMP_BIT 5 -#define FF_CMP_RD 6 -#define FF_CMP_ZERO 7 -#define FF_CMP_VSAD 8 -#define FF_CMP_VSSE 9 -#define FF_CMP_NSSE 10 -#define FF_CMP_W53 11 -#define FF_CMP_W97 12 -#define FF_CMP_DCTMAX 13 -#define FF_CMP_DCT264 14 -#define FF_CMP_CHROMA 256 - - /** - * ME diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int dia_size; - - /** - * amount of previous MV predictors (2a+1 x 2a+1 square) - * - encoding: Set by user. - * - decoding: unused - */ - int last_predictor_count; - - /** - * prepass for motion estimation - * - encoding: Set by user. - * - decoding: unused - */ - int pre_me; - - /** - * motion estimation prepass comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_pre_cmp; - - /** - * ME prepass diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int pre_dia_size; - - /** - * subpel ME quality - * - encoding: Set by user. - * - decoding: unused - */ - int me_subpel_quality; - - /** - * DTG active format information (additional aspect ratio - * information only used in DVB MPEG-2 transport streams) - * 0 if not set. - * - * - encoding: unused - * - decoding: Set by decoder. - */ - int dtg_active_format; -#define FF_DTG_AFD_SAME 8 -#define FF_DTG_AFD_4_3 9 -#define FF_DTG_AFD_16_9 10 -#define FF_DTG_AFD_14_9 11 -#define FF_DTG_AFD_4_3_SP_14_9 13 -#define FF_DTG_AFD_16_9_SP_14_9 14 -#define FF_DTG_AFD_SP_4_3 15 - - /** - * maximum motion estimation search range in subpel units - * If 0 then no limit. - * - * - encoding: Set by user. - * - decoding: unused - */ - int me_range; - - /** - * intra quantizer bias - * - encoding: Set by user. - * - decoding: unused - */ - int intra_quant_bias; -#define FF_DEFAULT_QUANT_BIAS 999999 - - /** - * inter quantizer bias - * - encoding: Set by user. - * - decoding: unused - */ - int inter_quant_bias; - -#if FF_API_COLOR_TABLE_ID - /** - * color table ID - * - encoding: unused - * - decoding: Which clrtable should be used for 8bit RGB images. - * Tables have to be stored somewhere. FIXME - */ - attribute_deprecated int color_table_id; -#endif - - /** - * slice flags - * - encoding: unused - * - decoding: Set by user. - */ - int slice_flags; -#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display -#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics) -#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) - - /** - * XVideo Motion Acceleration - * - encoding: forbidden - * - decoding: set by decoder - */ - int xvmc_acceleration; - - /** - * macroblock decision mode - * - encoding: Set by user. - * - decoding: unused - */ - int mb_decision; -#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp -#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits -#define FF_MB_DECISION_RD 2 ///< rate distortion - - /** - * custom intra quantization matrix - * - encoding: Set by user, can be NULL. - * - decoding: Set by libavcodec. - */ - uint16_t *intra_matrix; - - /** - * custom inter quantization matrix - * - encoding: Set by user, can be NULL. - * - decoding: Set by libavcodec. - */ - uint16_t *inter_matrix; - - /** - * scene change detection threshold - * 0 is default, larger means fewer detected scene changes. - * - encoding: Set by user. - * - decoding: unused - */ - int scenechange_threshold; - - /** - * noise reduction strength - * - encoding: Set by user. - * - decoding: unused - */ - int noise_reduction; - -#if FF_API_INTER_THRESHOLD - /** - * @deprecated this field is unused - */ - attribute_deprecated int inter_threshold; -#endif - -#if FF_API_MPV_GLOBAL_OPTS - /** - * @deprecated use mpegvideo private options instead - */ - attribute_deprecated int quantizer_noise_shaping; -#endif - - /** - * Motion estimation threshold below which no motion estimation is - * performed, but instead the user specified motion vectors are used. - * - * - encoding: Set by user. - * - decoding: unused - */ - int me_threshold; - - /** - * Macroblock threshold below which the user specified macroblock types will be used. - * - encoding: Set by user. - * - decoding: unused - */ - int mb_threshold; - - /** - * precision of the intra DC coefficient - 8 - * - encoding: Set by user. - * - decoding: unused - */ - int intra_dc_precision; - - /** - * Number of macroblock rows at the top which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_top; - - /** - * Number of macroblock rows at the bottom which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_bottom; - - /** - * Border processing masking, raises the quantizer for mbs on the borders - * of the picture. - * - encoding: Set by user. - * - decoding: unused - */ - float border_masking; - - /** - * minimum MB lagrange multipler - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmin; - - /** - * maximum MB lagrange multipler - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmax; - - /** - * - * - encoding: Set by user. - * - decoding: unused - */ - int me_penalty_compensation; - - /** - * - * - encoding: Set by user. - * - decoding: unused - */ - int bidir_refine; - - /** - * - * - encoding: Set by user. - * - decoding: unused - */ - int brd_scale; - - /** - * minimum GOP size - * - encoding: Set by user. - * - decoding: unused - */ - int keyint_min; - - /** - * number of reference frames - * - encoding: Set by user. - * - decoding: Set by lavc. - */ - int refs; - - /** - * chroma qp offset from luma - * - encoding: Set by user. - * - decoding: unused - */ - int chromaoffset; - - /** - * Multiplied by qscale for each frame and added to scene_change_score. - * - encoding: Set by user. - * - decoding: unused - */ - int scenechange_factor; - - /** - * - * Note: Value depends upon the compare function used for fullpel ME. - * - encoding: Set by user. - * - decoding: unused - */ - int mv0_threshold; - - /** - * Adjust sensitivity of b_frame_strategy 1. - * - encoding: Set by user. - * - decoding: unused - */ - int b_sensitivity; - - /** - * Chromaticity coordinates of the source primaries. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorPrimaries color_primaries; - - /** - * Color Transfer Characteristic. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorTransferCharacteristic color_trc; - - /** - * YUV colorspace type. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorSpace colorspace; - - /** - * MPEG vs JPEG YUV range. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorRange color_range; - - /** - * This defines the location of chroma samples. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVChromaLocation chroma_sample_location; - - /** - * Number of slices. - * Indicates number of picture subdivisions. Used for parallelized - * decoding. - * - encoding: Set by user - * - decoding: unused - */ - int slices; - - /** Field order - * - encoding: set by libavcodec - * - decoding: Set by user. - */ - enum AVFieldOrder field_order; - - /* audio only */ - int sample_rate; ///< samples per second - int channels; ///< number of audio channels - - /** - * audio sample format - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVSampleFormat sample_fmt; ///< sample format - - /* The following data should not be initialized. */ - /** - * Number of samples per channel in an audio frame. - * - * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame - * except the last must contain exactly frame_size samples per channel. - * May be 0 when the codec has CODEC_CAP_VARIABLE_FRAME_SIZE set, then the - * frame size is not restricted. - * - decoding: may be set by some decoders to indicate constant frame size - */ - int frame_size; - - /** - * Frame counter, set by libavcodec. - * - * - decoding: total number of frames returned from the decoder so far. - * - encoding: total number of frames passed to the encoder so far. - * - * @note the counter is not incremented if encoding/decoding resulted in - * an error. - */ - int frame_number; - - /** - * number of bytes per packet if constant and known or 0 - * Used by some WAV based audio codecs. - */ - int block_align; - - /** - * Audio cutoff bandwidth (0 means "automatic") - * - encoding: Set by user. - * - decoding: unused - */ - int cutoff; - -#if FF_API_REQUEST_CHANNELS - /** - * Decoder should decode to this many channels if it can (0 for default) - * - encoding: unused - * - decoding: Set by user. - * @deprecated Deprecated in favor of request_channel_layout. - */ - int request_channels; -#endif - - /** - * Audio channel layout. - * - encoding: set by user. - * - decoding: set by user, may be overwritten by libavcodec. - */ - uint64_t channel_layout; - - /** - * Request decoder to use this channel layout if it can (0 for default) - * - encoding: unused - * - decoding: Set by user. - */ - uint64_t request_channel_layout; - - /** - * Type of service that the audio stream conveys. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVAudioServiceType audio_service_type; - - /** - * desired sample format - * - encoding: Not used. - * - decoding: Set by user. - * Decoder will decode to this format if it can. - */ - enum AVSampleFormat request_sample_fmt; - - /** - * Called at the beginning of each frame to get a buffer for it. - * - * The function will set AVFrame.data[], AVFrame.linesize[]. - * AVFrame.extended_data[] must also be set, but it should be the same as - * AVFrame.data[] except for planar audio with more channels than can fit - * in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as - * many data pointers as it can hold. - * - * if CODEC_CAP_DR1 is not set then get_buffer() must call - * avcodec_default_get_buffer() instead of providing buffers allocated by - * some other means. - * - * AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't - * need it. avcodec_default_get_buffer() aligns the output buffer properly, - * but if get_buffer() is overridden then alignment considerations should - * be taken into account. - * - * @see avcodec_default_get_buffer() - * - * Video: - * - * If pic.reference is set then the frame will be read later by libavcodec. - * avcodec_align_dimensions2() should be used to find the required width and - * height, as they normally need to be rounded up to the next multiple of 16. - * - * If frame multithreading is used and thread_safe_callbacks is set, - * it may be called from a different thread, but not from more than one at - * once. Does not need to be reentrant. - * - * @see release_buffer(), reget_buffer() - * @see avcodec_align_dimensions2() - * - * Audio: - * - * Decoders request a buffer of a particular size by setting - * AVFrame.nb_samples prior to calling get_buffer(). The decoder may, - * however, utilize only part of the buffer by setting AVFrame.nb_samples - * to a smaller value in the output frame. - * - * Decoders cannot use the buffer after returning from - * avcodec_decode_audio4(), so they will not call release_buffer(), as it - * is assumed to be released immediately upon return. In some rare cases, - * a decoder may need to call get_buffer() more than once in a single - * call to avcodec_decode_audio4(). In that case, when get_buffer() is - * called again after it has already been called once, the previously - * acquired buffer is assumed to be released at that time and may not be - * reused by the decoder. - * - * As a convenience, av_samples_get_buffer_size() and - * av_samples_fill_arrays() in libavutil may be used by custom get_buffer() - * functions to find the required data size and to fill data pointers and - * linesize. In AVFrame.linesize, only linesize[0] may be set for audio - * since all planes must be the same size. - * - * @see av_samples_get_buffer_size(), av_samples_fill_arrays() - * - * - encoding: unused - * - decoding: Set by libavcodec, user can override. - */ - int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic); - - /** - * Called to release buffers which were allocated with get_buffer. - * A released buffer can be reused in get_buffer(). - * pic.data[*] must be set to NULL. - * May be called from a different thread if frame multithreading is used, - * but not by more than one thread at once, so does not need to be reentrant. - * - encoding: unused - * - decoding: Set by libavcodec, user can override. - */ - void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic); - - /** - * Called at the beginning of a frame to get cr buffer for it. - * Buffer type (size, hints) must be the same. libavcodec won't check it. - * libavcodec will pass previous buffer in pic, function should return - * same buffer or new buffer with old frame "painted" into it. - * If pic.data[0] == NULL must behave like get_buffer(). - * if CODEC_CAP_DR1 is not set then reget_buffer() must call - * avcodec_default_reget_buffer() instead of providing buffers allocated by - * some other means. - * - encoding: unused - * - decoding: Set by libavcodec, user can override. - */ - int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic); - - - /* - encoding parameters */ - float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) - float qblur; ///< amount of qscale smoothing over time (0.0-1.0) - - /** - * minimum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmin; - - /** - * maximum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmax; - - /** - * maximum quantizer difference between frames - * - encoding: Set by user. - * - decoding: unused - */ - int max_qdiff; - - /** - * ratecontrol qmin qmax limiting method - * 0-> clipping, 1-> use a nice continuous function to limit qscale wthin qmin/qmax. - * - encoding: Set by user. - * - decoding: unused - */ - float rc_qsquish; - - float rc_qmod_amp; - int rc_qmod_freq; - - /** - * decoder bitstream buffer size - * - encoding: Set by user. - * - decoding: unused - */ - int rc_buffer_size; - - /** - * ratecontrol override, see RcOverride - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - int rc_override_count; - RcOverride *rc_override; - - /** - * rate control equation - * - encoding: Set by user - * - decoding: unused - */ - const char *rc_eq; - - /** - * maximum bitrate - * - encoding: Set by user. - * - decoding: unused - */ - int rc_max_rate; - - /** - * minimum bitrate - * - encoding: Set by user. - * - decoding: unused - */ - int rc_min_rate; - - float rc_buffer_aggressivity; - - /** - * initial complexity for pass1 ratecontrol - * - encoding: Set by user. - * - decoding: unused - */ - float rc_initial_cplx; - - /** - * Ratecontrol attempt to use, at maximum, of what can be used without an underflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_max_available_vbv_use; - - /** - * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_min_vbv_overflow_use; - - /** - * Number of bits which should be loaded into the rc buffer before decoding starts. - * - encoding: Set by user. - * - decoding: unused - */ - int rc_initial_buffer_occupancy; - -#define FF_CODER_TYPE_VLC 0 -#define FF_CODER_TYPE_AC 1 -#define FF_CODER_TYPE_RAW 2 -#define FF_CODER_TYPE_RLE 3 -#define FF_CODER_TYPE_DEFLATE 4 - /** - * coder type - * - encoding: Set by user. - * - decoding: unused - */ - int coder_type; - - /** - * context model - * - encoding: Set by user. - * - decoding: unused - */ - int context_model; - - /** - * minimum Lagrange multipler - * - encoding: Set by user. - * - decoding: unused - */ - int lmin; - - /** - * maximum Lagrange multipler - * - encoding: Set by user. - * - decoding: unused - */ - int lmax; - - /** - * frame skip threshold - * - encoding: Set by user. - * - decoding: unused - */ - int frame_skip_threshold; - - /** - * frame skip factor - * - encoding: Set by user. - * - decoding: unused - */ - int frame_skip_factor; - - /** - * frame skip exponent - * - encoding: Set by user. - * - decoding: unused - */ - int frame_skip_exp; - - /** - * frame skip comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int frame_skip_cmp; - - /** - * trellis RD quantization - * - encoding: Set by user. - * - decoding: unused - */ - int trellis; - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int min_prediction_order; - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int max_prediction_order; - - /** - * GOP timecode frame start number - * - encoding: Set by user, in non drop frame format - * - decoding: Set by libavcodec (timecode in the 25 bits format, -1 if unset) - */ - int64_t timecode_frame_start; - - /* The RTP callback: This function is called */ - /* every time the encoder has a packet to send. */ - /* It depends on the encoder if the data starts */ - /* with a Start Code (it should). H.263 does. */ - /* mb_nb contains the number of macroblocks */ - /* encoded in the RTP payload. */ - void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); - - int rtp_payload_size; /* The size of the RTP payload: the coder will */ - /* do its best to deliver a chunk with size */ - /* below rtp_payload_size, the chunk will start */ - /* with a start code on some codecs like H.263. */ - /* This doesn't take account of any particular */ - /* headers inside the transmitted RTP payload. */ - - /* statistics, used for 2-pass encoding */ - int mv_bits; - int header_bits; - int i_tex_bits; - int p_tex_bits; - int i_count; - int p_count; - int skip_count; - int misc_bits; - - /** - * number of bits used for the previously encoded frame - * - encoding: Set by libavcodec. - * - decoding: unused - */ - int frame_bits; - - /** - * pass1 encoding statistics output buffer - * - encoding: Set by libavcodec. - * - decoding: unused - */ - char *stats_out; - - /** - * pass2 encoding statistics input buffer - * Concatenated stuff from stats_out of pass1 should be placed here. - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - char *stats_in; - - /** - * Work around bugs in encoders which sometimes cannot be detected automatically. - * - encoding: Set by user - * - decoding: Set by user - */ - int workaround_bugs; -#define FF_BUG_AUTODETECT 1 ///< autodetection -#define FF_BUG_OLD_MSMPEG4 2 -#define FF_BUG_XVID_ILACE 4 -#define FF_BUG_UMP4 8 -#define FF_BUG_NO_PADDING 16 -#define FF_BUG_AMV 32 -#define FF_BUG_AC_VLC 0 ///< Will be removed, libavcodec can now handle these non-compliant files by default. -#define FF_BUG_QPEL_CHROMA 64 -#define FF_BUG_STD_QPEL 128 -#define FF_BUG_QPEL_CHROMA2 256 -#define FF_BUG_DIRECT_BLOCKSIZE 512 -#define FF_BUG_EDGE 1024 -#define FF_BUG_HPEL_CHROMA 2048 -#define FF_BUG_DC_CLIP 4096 -#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. -#define FF_BUG_TRUNCATED 16384 - - /** - * strictly follow the standard (MPEG4, ...). - * - encoding: Set by user. - * - decoding: Set by user. - * Setting this to STRICT or higher means the encoder and decoder will - * generally do stupid things, whereas setting it to unofficial or lower - * will mean the encoder might produce output that is not supported by all - * spec-compliant decoders. Decoders don't differentiate between normal, - * unofficial and experimental (that is, they always try to decode things - * when they can) unless they are explicitly asked to behave stupidly - * (=strictly conform to the specs) - */ - int strict_std_compliance; -#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. -#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. -#define FF_COMPLIANCE_NORMAL 0 -#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions -#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. - - /** - * error concealment flags - * - encoding: unused - * - decoding: Set by user. - */ - int error_concealment; -#define FF_EC_GUESS_MVS 1 -#define FF_EC_DEBLOCK 2 - - /** - * debug - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug; -#define FF_DEBUG_PICT_INFO 1 -#define FF_DEBUG_RC 2 -#define FF_DEBUG_BITSTREAM 4 -#define FF_DEBUG_MB_TYPE 8 -#define FF_DEBUG_QP 16 -#define FF_DEBUG_MV 32 -#define FF_DEBUG_DCT_COEFF 0x00000040 -#define FF_DEBUG_SKIP 0x00000080 -#define FF_DEBUG_STARTCODE 0x00000100 -#define FF_DEBUG_PTS 0x00000200 -#define FF_DEBUG_ER 0x00000400 -#define FF_DEBUG_MMCO 0x00000800 -#define FF_DEBUG_BUGS 0x00001000 -#define FF_DEBUG_VIS_QP 0x00002000 -#define FF_DEBUG_VIS_MB_TYPE 0x00004000 -#define FF_DEBUG_BUFFERS 0x00008000 -#define FF_DEBUG_THREADS 0x00010000 - - /** - * debug - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug_mv; -#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames -#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames -#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames - - /** - * Error recognition; may misdetect some more or less valid parts as errors. - * - encoding: unused - * - decoding: Set by user. - */ - int err_recognition; -#define AV_EF_CRCCHECK (1<<0) -#define AV_EF_BITSTREAM (1<<1) -#define AV_EF_BUFFER (1<<2) -#define AV_EF_EXPLODE (1<<3) - -#define AV_EF_CAREFUL (1<<16) -#define AV_EF_COMPLIANT (1<<17) -#define AV_EF_AGGRESSIVE (1<<18) - - - /** - * opaque 64bit number (generally a PTS) that will be reordered and - * output in AVFrame.reordered_opaque - * @deprecated in favor of pkt_pts - * - encoding: unused - * - decoding: Set by user. - */ - int64_t reordered_opaque; - - /** - * Hardware accelerator in use - * - encoding: unused. - * - decoding: Set by libavcodec - */ - struct AVHWAccel *hwaccel; - - /** - * Hardware accelerator context. - * For some hardware accelerators, a global context needs to be - * provided by the user. In that case, this holds display-dependent - * data FFmpeg cannot instantiate itself. Please refer to the - * FFmpeg HW accelerator documentation to know how to fill this - * is. e.g. for VA API, this is a struct vaapi_context. - * - encoding: unused - * - decoding: Set by user - */ - void *hwaccel_context; - - /** - * error - * - encoding: Set by libavcodec if flags&CODEC_FLAG_PSNR. - * - decoding: unused - */ - uint64_t error[AV_NUM_DATA_POINTERS]; - - /** - * DCT algorithm, see FF_DCT_* below - * - encoding: Set by user. - * - decoding: unused - */ - int dct_algo; -#define FF_DCT_AUTO 0 -#define FF_DCT_FASTINT 1 -#define FF_DCT_INT 2 -#define FF_DCT_MMX 3 -#define FF_DCT_ALTIVEC 5 -#define FF_DCT_FAAN 6 - - /** - * IDCT algorithm, see FF_IDCT_* below. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int idct_algo; -#define FF_IDCT_AUTO 0 -#define FF_IDCT_INT 1 -#define FF_IDCT_SIMPLE 2 -#define FF_IDCT_SIMPLEMMX 3 -#define FF_IDCT_LIBMPEG2MMX 4 -#if FF_API_MMI -#define FF_IDCT_MMI 5 -#endif -#define FF_IDCT_ARM 7 -#define FF_IDCT_ALTIVEC 8 -#define FF_IDCT_SH4 9 -#define FF_IDCT_SIMPLEARM 10 -#define FF_IDCT_IPP 13 -#define FF_IDCT_XVIDMMX 14 -#define FF_IDCT_SIMPLEARMV5TE 16 -#define FF_IDCT_SIMPLEARMV6 17 -#define FF_IDCT_SIMPLEVIS 18 -#define FF_IDCT_FAAN 20 -#define FF_IDCT_SIMPLENEON 22 -#define FF_IDCT_SIMPLEALPHA 23 -#if FF_API_IDCT -#define FF_IDCT_H264 11 -#define FF_IDCT_VP3 12 -#define FF_IDCT_CAVS 15 -#define FF_IDCT_WMV2 19 -#define FF_IDCT_EA 21 -#define FF_IDCT_BINK 24 -#endif - -#if FF_API_DSP_MASK - /** - * Unused. - * @deprecated use av_set_cpu_flags_mask() instead. - */ - attribute_deprecated unsigned dsp_mask; -#endif - - /** - * bits per sample/pixel from the demuxer (needed for huffyuv). - * - encoding: Set by libavcodec. - * - decoding: Set by user. - */ - int bits_per_coded_sample; - - /** - * Bits per sample/pixel of internal libavcodec pixel/sample format. - * - encoding: set by user. - * - decoding: set by libavcodec. - */ - int bits_per_raw_sample; - - /** - * low resolution decoding, 1-> 1/2 size, 2->1/4 size - * - encoding: unused - * - decoding: Set by user. - */ - int lowres; - - /** - * the picture in the bitstream - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - AVFrame *coded_frame; - - /** - * thread count - * is used to decide how many independent tasks should be passed to execute() - * - encoding: Set by user. - * - decoding: Set by user. - */ - int thread_count; - - /** - * Which multithreading methods to use. - * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, - * so clients which cannot provide future frames should not use it. - * - * - encoding: Set by user, otherwise the default is used. - * - decoding: Set by user, otherwise the default is used. - */ - int thread_type; -#define FF_THREAD_FRAME 1 ///< Decode more than one frame at once -#define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once - - /** - * Which multithreading methods are in use by the codec. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int active_thread_type; - - /** - * Set by the client if its custom get_buffer() callback can be called - * synchronously from another thread, which allows faster multithreaded decoding. - * draw_horiz_band() will be called from other threads regardless of this setting. - * Ignored if the default get_buffer() is used. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int thread_safe_callbacks; - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * @param count the number of things to execute - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * Also see avcodec_thread_init and e.g. the --enable-pthread configure option. - * @param c context passed also to func - * @param count the number of things to execute - * @param arg2 argument passed unchanged to func - * @param ret return values of executed functions, must have space for "count" values. May be NULL. - * @param func function that will be called count times, with jobnr from 0 to count-1. - * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no - * two instances of func executing at the same time will have the same threadnr. - * @return always 0 currently, but code should handle a future improvement where when any call to func - * returns < 0 no further calls to func may be done and < 0 is returned. - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); - - /** - * thread opaque - * Can be used by execute() to store some per AVCodecContext stuff. - * - encoding: set by execute() - * - decoding: set by execute() - */ - void *thread_opaque; - - /** - * noise vs. sse weight for the nsse comparsion function - * - encoding: Set by user. - * - decoding: unused - */ - int nsse_weight; - - /** - * profile - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int profile; -#define FF_PROFILE_UNKNOWN -99 -#define FF_PROFILE_RESERVED -100 - -#define FF_PROFILE_AAC_MAIN 0 -#define FF_PROFILE_AAC_LOW 1 -#define FF_PROFILE_AAC_SSR 2 -#define FF_PROFILE_AAC_LTP 3 -#define FF_PROFILE_AAC_HE 4 -#define FF_PROFILE_AAC_HE_V2 28 -#define FF_PROFILE_AAC_LD 22 -#define FF_PROFILE_AAC_ELD 38 - -#define FF_PROFILE_DTS 20 -#define FF_PROFILE_DTS_ES 30 -#define FF_PROFILE_DTS_96_24 40 -#define FF_PROFILE_DTS_HD_HRA 50 -#define FF_PROFILE_DTS_HD_MA 60 - -#define FF_PROFILE_MPEG2_422 0 -#define FF_PROFILE_MPEG2_HIGH 1 -#define FF_PROFILE_MPEG2_SS 2 -#define FF_PROFILE_MPEG2_SNR_SCALABLE 3 -#define FF_PROFILE_MPEG2_MAIN 4 -#define FF_PROFILE_MPEG2_SIMPLE 5 - -#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag -#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag - -#define FF_PROFILE_H264_BASELINE 66 -#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) -#define FF_PROFILE_H264_MAIN 77 -#define FF_PROFILE_H264_EXTENDED 88 -#define FF_PROFILE_H264_HIGH 100 -#define FF_PROFILE_H264_HIGH_10 110 -#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_HIGH_422 122 -#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_HIGH_444 144 -#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 -#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_CAVLC_444 44 - -#define FF_PROFILE_VC1_SIMPLE 0 -#define FF_PROFILE_VC1_MAIN 1 -#define FF_PROFILE_VC1_COMPLEX 2 -#define FF_PROFILE_VC1_ADVANCED 3 - -#define FF_PROFILE_MPEG4_SIMPLE 0 -#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 -#define FF_PROFILE_MPEG4_CORE 2 -#define FF_PROFILE_MPEG4_MAIN 3 -#define FF_PROFILE_MPEG4_N_BIT 4 -#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 -#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 -#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 -#define FF_PROFILE_MPEG4_HYBRID 8 -#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 -#define FF_PROFILE_MPEG4_CORE_SCALABLE 10 -#define FF_PROFILE_MPEG4_ADVANCED_CODING 11 -#define FF_PROFILE_MPEG4_ADVANCED_CORE 12 -#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 -#define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 -#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 - - /** - * level - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int level; -#define FF_LEVEL_UNKNOWN -99 - - /** - * - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_loop_filter; - - /** - * - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_idct; - - /** - * - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_frame; - - /** - * Header containing style information for text subtitles. - * For SUBTITLE_ASS subtitle type, it should contain the whole ASS - * [Script Info] and [V4+ Styles] section, plus the [Events] line and - * the Format line following. It shouldn't include any Dialogue line. - * - encoding: Set/allocated/freed by user (before avcodec_open2()) - * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) - */ - uint8_t *subtitle_header; - int subtitle_header_size; - - /** - * Simulates errors in the bitstream to test error concealment. - * - encoding: Set by user. - * - decoding: unused - */ - int error_rate; - - /** - * Current packet as passed into the decoder, to avoid having - * to pass the packet into every function. Currently only valid - * inside lavc and get/release_buffer callbacks. - * - decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts - * - encoding: unused - */ - AVPacket *pkt; - - /** - * VBV delay coded in the last frame (in periods of a 27 MHz clock). - * Used for compliant TS muxing. - * - encoding: Set by libavcodec. - * - decoding: unused. - */ - uint64_t vbv_delay; - - /** - * Timebase in which pkt_dts/pts and AVPacket.dts/pts are. - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_pkt_timebase(avctx) - * - encoding unused. - * - decodimg set by user - */ - AVRational pkt_timebase; - - /** - * AVCodecDescriptor - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_codec_descriptor(avctx) - * - encoding: unused. - * - decoding: set by libavcodec. - */ - const AVCodecDescriptor *codec_descriptor; - - /** - * Current statistics for PTS correction. - * - decoding: maintained and used by libavcodec, not intended to be used by user apps - * - encoding: unused - */ - int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far - int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far - int64_t pts_correction_last_pts; /// PTS of the last frame - int64_t pts_correction_last_dts; /// DTS of the last frame - - /** - * Current frame metadata. - * - decoding: maintained and used by libavcodec, not intended to be used by user apps - * - encoding: unused - */ - AVDictionary *metadata; - - /** - * Character encoding of the input subtitles file. - * - decoding: set by user - * - encoding: unused - */ - char *sub_charenc; - - /** - * Subtitles character encoding mode. Formats or codecs might be adjusting - * this setting (if they are doing the conversion themselves for instance). - * - decoding: set by libavcodec - * - encoding: unused - */ - int sub_charenc_mode; -#define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance) -#define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself -#define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv -} AVCodecContext; - -AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx); -void av_codec_set_pkt_timebase (AVCodecContext *avctx, AVRational val); - -const AVCodecDescriptor *av_codec_get_codec_descriptor(const AVCodecContext *avctx); -void av_codec_set_codec_descriptor(AVCodecContext *avctx, const AVCodecDescriptor *desc); - -/** - * AVProfile. - */ -typedef struct AVProfile { - int profile; - const char *name; ///< short name for the profile -} AVProfile; - -typedef struct AVCodecDefault AVCodecDefault; - -struct AVSubtitle; - -/** - * AVCodec. - */ -typedef struct AVCodec { - /** - * Name of the codec implementation. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - * This is the primary way to find a codec from the user perspective. - */ - const char *name; - /** - * Descriptive name for the codec, meant to be more human readable than name. - * You should use the NULL_IF_CONFIG_SMALL() macro to define it. - */ - const char *long_name; - enum AVMediaType type; - enum AVCodecID id; - /** - * Codec capabilities. - * see CODEC_CAP_* - */ - int capabilities; - const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} - const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 - const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 - const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 - const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 - uint8_t max_lowres; ///< maximum value for lowres supported by the decoder - const AVClass *priv_class; ///< AVClass for the private context - const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - int priv_data_size; - struct AVCodec *next; - /** - * @name Frame-level threading support functions - * @{ - */ - /** - * If defined, called on thread contexts when they are created. - * If the codec allocates writable tables in init(), re-allocate them here. - * priv_data will be set to a copy of the original. - */ - int (*init_thread_copy)(AVCodecContext *); - /** - * Copy necessary context variables from a previous thread context to the current one. - * If not defined, the next thread will start automatically; otherwise, the codec - * must call ff_thread_finish_setup(). - * - * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. - */ - int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); - /** @} */ - - /** - * Private codec-specific defaults. - */ - const AVCodecDefault *defaults; - - /** - * Initialize codec static data, called from avcodec_register(). - */ - void (*init_static_data)(struct AVCodec *codec); - - int (*init)(AVCodecContext *); - int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size, - const struct AVSubtitle *sub); - /** - * Encode data to an AVPacket. - * - * @param avctx codec context - * @param avpkt output AVPacket (may contain a user-provided buffer) - * @param[in] frame AVFrame containing the raw data to be encoded - * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a - * non-empty packet was returned in avpkt. - * @return 0 on success, negative error code on failure - */ - int (*encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, - int *got_packet_ptr); - int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); - int (*close)(AVCodecContext *); - /** - * Flush buffers. - * Will be called when seeking - */ - void (*flush)(AVCodecContext *); -} AVCodec; - -/** - * AVHWAccel. - */ -typedef struct AVHWAccel { - /** - * Name of the hardware accelerated codec. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - */ - const char *name; - - /** - * Type of codec implemented by the hardware accelerator. - * - * See AVMEDIA_TYPE_xxx - */ - enum AVMediaType type; - - /** - * Codec implemented by the hardware accelerator. - * - * See AV_CODEC_ID_xxx - */ - enum AVCodecID id; - - /** - * Supported pixel format. - * - * Only hardware accelerated formats are supported here. - */ - enum AVPixelFormat pix_fmt; - - /** - * Hardware accelerated codec capabilities. - * see FF_HWACCEL_CODEC_CAP_* - */ - int capabilities; - - struct AVHWAccel *next; - - /** - * Called at the beginning of each frame or field picture. - * - * Meaningful frame information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * - * Note that buf can be NULL along with buf_size set to 0. - * Otherwise, this means the whole frame is available at this point. - * - * @param avctx the codec context - * @param buf the frame data buffer base - * @param buf_size the size of the frame in bytes - * @return zero if successful, a negative value otherwise - */ - int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Callback for each slice. - * - * Meaningful slice information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * - * @param avctx the codec context - * @param buf the slice data buffer base - * @param buf_size the size of the slice in bytes - * @return zero if successful, a negative value otherwise - */ - int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Called at the end of each frame or field picture. - * - * The whole picture is parsed at this point and can now be sent - * to the hardware accelerator. This function is mandatory. - * - * @param avctx the codec context - * @return zero if successful, a negative value otherwise - */ - int (*end_frame)(AVCodecContext *avctx); - - /** - * Size of HW accelerator private data. - * - * Private data is allocated with av_mallocz() before - * AVCodecContext.get_buffer() and deallocated after - * AVCodecContext.release_buffer(). - */ - int priv_data_size; -} AVHWAccel; - -/** - * @defgroup lavc_picture AVPicture - * - * Functions for working with AVPicture - * @{ - */ - -/** - * four components are given, that's all. - * the last component is alpha - */ -typedef struct AVPicture { - uint8_t *data[AV_NUM_DATA_POINTERS]; - int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line -} AVPicture; - -/** - * @} - */ - -enum AVSubtitleType { - SUBTITLE_NONE, - - SUBTITLE_BITMAP, ///< A bitmap, pict will be set - - /** - * Plain text, the text field must be set by the decoder and is - * authoritative. ass and pict fields may contain approximations. - */ - SUBTITLE_TEXT, - - /** - * Formatted text, the ass field must be set by the decoder and is - * authoritative. pict and text fields may contain approximations. - */ - SUBTITLE_ASS, -}; - -#define AV_SUBTITLE_FLAG_FORCED 0x00000001 - -typedef struct AVSubtitleRect { - int x; ///< top left corner of pict, undefined when pict is not set - int y; ///< top left corner of pict, undefined when pict is not set - int w; ///< width of pict, undefined when pict is not set - int h; ///< height of pict, undefined when pict is not set - int nb_colors; ///< number of colors in pict, undefined when pict is not set - - /** - * data+linesize for the bitmap of this subtitle. - * can be set for text/ass as well once they where rendered - */ - AVPicture pict; - enum AVSubtitleType type; - - char *text; ///< 0 terminated plain UTF-8 text - - /** - * 0 terminated ASS/SSA compatible event line. - * The presentation of this is unaffected by the other values in this - * struct. - */ - char *ass; - - int flags; -} AVSubtitleRect; - -typedef struct AVSubtitle { - uint16_t format; /* 0 = graphics */ - uint32_t start_display_time; /* relative to packet pts, in ms */ - uint32_t end_display_time; /* relative to packet pts, in ms */ - unsigned num_rects; - AVSubtitleRect **rects; - int64_t pts; ///< Same as packet pts, in AV_TIME_BASE -} AVSubtitle; - -/** - * If c is NULL, returns the first registered codec, - * if c is non-NULL, returns the next registered codec after c, - * or NULL if c is the last one. - */ -AVCodec *av_codec_next(const AVCodec *c); - -/** - * Return the LIBAVCODEC_VERSION_INT constant. - */ -unsigned avcodec_version(void); - -/** - * Return the libavcodec build-time configuration. - */ -const char *avcodec_configuration(void); - -/** - * Return the libavcodec license. - */ -const char *avcodec_license(void); - -/** - * Register the codec codec and initialize libavcodec. - * - * @warning either this function or avcodec_register_all() must be called - * before any other libavcodec functions. - * - * @see avcodec_register_all() - */ -void avcodec_register(AVCodec *codec); - -/** - * Register all the codecs, parsers and bitstream filters which were enabled at - * configuration time. If you do not call this function you can select exactly - * which formats you want to support, by using the individual registration - * functions. - * - * @see avcodec_register - * @see av_register_codec_parser - * @see av_register_bitstream_filter - */ -void avcodec_register_all(void); - - -#if FF_API_ALLOC_CONTEXT -/** - * Allocate an AVCodecContext and set its fields to default values. The - * resulting struct can be deallocated by simply calling av_free(). - * - * @return An AVCodecContext filled with default values or NULL on failure. - * @see avcodec_get_context_defaults - * - * @deprecated use avcodec_alloc_context3() - */ -attribute_deprecated -AVCodecContext *avcodec_alloc_context(void); - -/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! - * we WILL change its arguments and name a few times! */ -attribute_deprecated -AVCodecContext *avcodec_alloc_context2(enum AVMediaType); - -/** - * Set the fields of the given AVCodecContext to default values. - * - * @param s The AVCodecContext of which the fields should be set to default values. - * @deprecated use avcodec_get_context_defaults3 - */ -attribute_deprecated -void avcodec_get_context_defaults(AVCodecContext *s); - -/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API! - * we WILL change its arguments and name a few times! */ -attribute_deprecated -void avcodec_get_context_defaults2(AVCodecContext *s, enum AVMediaType); -#endif - -/** - * Allocate an AVCodecContext and set its fields to default values. The - * resulting struct can be deallocated by calling avcodec_close() on it followed - * by av_free(). - * - * @param codec if non-NULL, allocate private data and initialize defaults - * for the given codec. It is illegal to then call avcodec_open2() - * with a different codec. - * If NULL, then the codec-specific defaults won't be initialized, - * which may result in suboptimal default settings (this is - * important mainly for encoders, e.g. libx264). - * - * @return An AVCodecContext filled with default values or NULL on failure. - * @see avcodec_get_context_defaults - */ -AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); - -/** - * Set the fields of the given AVCodecContext to default values corresponding - * to the given codec (defaults may be codec-dependent). - * - * Do not call this function if a non-NULL codec has been passed - * to avcodec_alloc_context3() that allocated this AVCodecContext. - * If codec is non-NULL, it is illegal to call avcodec_open2() with a - * different codec on this AVCodecContext. - */ -int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec); - -/** - * Get the AVClass for AVCodecContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_class(void); - -/** - * Get the AVClass for AVFrame. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_frame_class(void); - -/** - * Get the AVClass for AVSubtitleRect. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_subtitle_rect_class(void); - -/** - * Copy the settings of the source AVCodecContext into the destination - * AVCodecContext. The resulting destination codec context will be - * unopened, i.e. you are required to call avcodec_open2() before you - * can use this AVCodecContext to decode/encode video/audio data. - * - * @param dest target codec context, should be initialized with - * avcodec_alloc_context3(), but otherwise uninitialized - * @param src source codec context - * @return AVERROR() on error (e.g. memory allocation error), 0 on success - */ -int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src); - -/** - * Allocate an AVFrame and set its fields to default values. The resulting - * struct must be freed using avcodec_free_frame(). - * - * @return An AVFrame filled with default values or NULL on failure. - * @see avcodec_get_frame_defaults - */ -AVFrame *avcodec_alloc_frame(void); - -/** - * Set the fields of the given AVFrame to default values. - * - * @param frame The AVFrame of which the fields should be set to default values. - */ -void avcodec_get_frame_defaults(AVFrame *frame); - -/** - * Free the frame and any dynamically allocated objects in it, - * e.g. extended_data. - * - * @param frame frame to be freed. The pointer will be set to NULL. - * - * @warning this function does NOT free the data buffers themselves - * (it does not know how, since they might have been allocated with - * a custom get_buffer()). - */ -void avcodec_free_frame(AVFrame **frame); - -#if FF_API_AVCODEC_OPEN -/** - * Initialize the AVCodecContext to use the given AVCodec. Prior to using this - * function the context has to be allocated. - * - * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), - * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for - * retrieving a codec. - * - * @warning This function is not thread safe! - * - * @code - * avcodec_register_all(); - * codec = avcodec_find_decoder(AV_CODEC_ID_H264); - * if (!codec) - * exit(1); - * - * context = avcodec_alloc_context3(codec); - * - * if (avcodec_open(context, codec) < 0) - * exit(1); - * @endcode - * - * @param avctx The context which will be set up to use the given codec. - * @param codec The codec to use within the context. - * @return zero on success, a negative value on error - * @see avcodec_alloc_context3, avcodec_find_decoder, avcodec_find_encoder, avcodec_close - * - * @deprecated use avcodec_open2 - */ -attribute_deprecated -int avcodec_open(AVCodecContext *avctx, AVCodec *codec); -#endif - -/** - * Initialize the AVCodecContext to use the given AVCodec. Prior to using this - * function the context has to be allocated with avcodec_alloc_context3(). - * - * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), - * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for - * retrieving a codec. - * - * @warning This function is not thread safe! - * - * @code - * avcodec_register_all(); - * av_dict_set(&opts, "b", "2.5M", 0); - * codec = avcodec_find_decoder(AV_CODEC_ID_H264); - * if (!codec) - * exit(1); - * - * context = avcodec_alloc_context3(codec); - * - * if (avcodec_open2(context, codec, opts) < 0) - * exit(1); - * @endcode - * - * @param avctx The context to initialize. - * @param codec The codec to open this context for. If a non-NULL codec has been - * previously passed to avcodec_alloc_context3() or - * avcodec_get_context_defaults3() for this context, then this - * parameter MUST be either NULL or equal to the previously passed - * codec. - * @param options A dictionary filled with AVCodecContext and codec-private options. - * On return this object will be filled with options that were not found. - * - * @return zero on success, a negative value on error - * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), - * av_dict_set(), av_opt_find(). - */ -int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); - -/** - * Close a given AVCodecContext and free all the data associated with it - * (but not the AVCodecContext itself). - * - * Calling this function on an AVCodecContext that hasn't been opened will free - * the codec-specific data allocated in avcodec_alloc_context3() / - * avcodec_get_context_defaults3() with a non-NULL codec. Subsequent calls will - * do nothing. - */ -int avcodec_close(AVCodecContext *avctx); - -/** - * Free all allocated data in the given subtitle struct. - * - * @param sub AVSubtitle to free. - */ -void avsubtitle_free(AVSubtitle *sub); - -/** - * @} - */ - -/** - * @addtogroup lavc_packet - * @{ - */ - -/** - * Default packet destructor. - */ -void av_destruct_packet(AVPacket *pkt); - -/** - * Initialize optional fields of a packet with default values. - * - * Note, this does not touch the data and size members, which have to be - * initialized separately. - * - * @param pkt packet - */ -void av_init_packet(AVPacket *pkt); - -/** - * Allocate the payload of a packet and initialize its fields with - * default values. - * - * @param pkt packet - * @param size wanted payload size - * @return 0 if OK, AVERROR_xxx otherwise - */ -int av_new_packet(AVPacket *pkt, int size); - -/** - * Reduce packet size, correctly zeroing padding - * - * @param pkt packet - * @param size new size - */ -void av_shrink_packet(AVPacket *pkt, int size); - -/** - * Increase packet size, correctly zeroing padding - * - * @param pkt packet - * @param grow_by number of bytes by which to increase the size of the packet - */ -int av_grow_packet(AVPacket *pkt, int grow_by); - -/** - * @warning This is a hack - the packet memory allocation stuff is broken. The - * packet is allocated if it was not really allocated. - */ -int av_dup_packet(AVPacket *pkt); - -/** - * Copy packet, including contents - * - * @return 0 on success, negative AVERROR on fail - */ -int av_copy_packet(AVPacket *dst, AVPacket *src); - -/** - * Free a packet. - * - * @param pkt packet to free - */ -void av_free_packet(AVPacket *pkt); - -/** - * Allocate new information of a packet. - * - * @param pkt packet - * @param type side information type - * @param size side information size - * @return pointer to fresh allocated data or NULL otherwise - */ -uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int size); - -/** - * Shrink the already allocated side data buffer - * - * @param pkt packet - * @param type side information type - * @param size new side information size - * @return 0 on success, < 0 on failure - */ -int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int size); - -/** - * Get side information from packet. - * - * @param pkt packet - * @param type desired side information type - * @param size pointer for side information size to store (optional) - * @return pointer to data if present or NULL otherwise - */ -uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int *size); - -int av_packet_merge_side_data(AVPacket *pkt); - -int av_packet_split_side_data(AVPacket *pkt); - - -/** - * @} - */ - -/** - * @addtogroup lavc_decoding - * @{ - */ - -/** - * Find a registered decoder with a matching codec ID. - * - * @param id AVCodecID of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_decoder(enum AVCodecID id); - -/** - * Find a registered decoder with the specified name. - * - * @param name name of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_decoder_by_name(const char *name); - -int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic); -void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic); -int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic); - -/** - * Return the amount of padding in pixels which the get_buffer callback must - * provide around the edge of the image for codecs which do not have the - * CODEC_FLAG_EMU_EDGE flag. - * - * @return Required padding in pixels. - */ -unsigned avcodec_get_edge_width(void); - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you do not use any horizontal - * padding. - * - * May only be used if a codec with CODEC_CAP_DR1 has been opened. - * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased - * according to avcodec_get_edge_width() before. - */ -void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you also ensure that all - * line sizes are a multiple of the respective linesize_align[i]. - * - * May only be used if a codec with CODEC_CAP_DR1 has been opened. - * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased - * according to avcodec_get_edge_width() before. - */ -void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, - int linesize_align[AV_NUM_DATA_POINTERS]); - -#if FF_API_OLD_DECODE_AUDIO -/** - * Wrapper function which calls avcodec_decode_audio4. - * - * @deprecated Use avcodec_decode_audio4 instead. - * - * Decode the audio frame of size avpkt->size from avpkt->data into samples. - * Some decoders may support multiple frames in a single AVPacket, such - * decoders would then just decode the first frame. In this case, - * avcodec_decode_audio3 has to be called again with an AVPacket that contains - * the remaining data in order to decode the second frame etc. - * If no frame - * could be outputted, frame_size_ptr is zero. Otherwise, it is the - * decompressed frame size in bytes. - * - * @warning You must set frame_size_ptr to the allocated size of the - * output buffer before calling avcodec_decode_audio3(). - * - * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than - * the actual read bytes because some optimized bitstream readers read 32 or 64 - * bits at once and could read over the end. - * - * @warning The end of the input buffer avpkt->data should be set to 0 to ensure that - * no overreading happens for damaged MPEG streams. - * - * @warning You must not provide a custom get_buffer() when using - * avcodec_decode_audio3(). Doing so will override it with - * avcodec_default_get_buffer. Use avcodec_decode_audio4() instead, - * which does allow the application to provide a custom get_buffer(). - * - * @note You might have to align the input buffer avpkt->data and output buffer - * samples. The alignment requirements depend on the CPU: On some CPUs it isn't - * necessary at all, on others it won't work at all if not aligned and on others - * it will work but it will have an impact on performance. - * - * In practice, avpkt->data should have 4 byte alignment at minimum and - * samples should be 16 byte aligned unless the CPU doesn't need it - * (AltiVec and SSE do). - * - * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay - * between input and output, these need to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to return the remaining frames. - * - * @param avctx the codec context - * @param[out] samples the output buffer, sample type in avctx->sample_fmt - * If the sample format is planar, each channel plane will - * be the same size, with no padding between channels. - * @param[in,out] frame_size_ptr the output buffer size in bytes - * @param[in] avpkt The input AVPacket containing the input buffer. - * You can create such packet with av_init_packet() and by then setting - * data and size, some decoders might in addition need other fields. - * All decoders are designed to use the least fields possible though. - * @return On error a negative value is returned, otherwise the number of bytes - * used or zero if no frame data was decompressed (used) from the input AVPacket. - */ -attribute_deprecated int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, - int *frame_size_ptr, - AVPacket *avpkt); -#endif - -/** - * Decode the audio frame of size avpkt->size from avpkt->data into frame. - * - * Some decoders may support multiple frames in a single AVPacket. Such - * decoders would then just decode the first frame. In this case, - * avcodec_decode_audio4 has to be called again with an AVPacket containing - * the remaining data in order to decode the second frame, etc... - * Even if no frames are returned, the packet needs to be fed to the decoder - * with remaining data until it is completely consumed or an error occurs. - * - * @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE - * larger than the actual read bytes because some optimized bitstream - * readers read 32 or 64 bits at once and could read over the end. - * - * @note You might have to align the input buffer. The alignment requirements - * depend on the CPU and the decoder. - * - * @param avctx the codec context - * @param[out] frame The AVFrame in which to store decoded audio samples. - * Decoders request a buffer of a particular size by setting - * AVFrame.nb_samples prior to calling get_buffer(). The - * decoder may, however, only utilize part of the buffer by - * setting AVFrame.nb_samples to a smaller value in the - * output frame. - * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is - * non-zero. - * @param[in] avpkt The input AVPacket containing the input buffer. - * At least avpkt->data and avpkt->size should be set. Some - * decoders might also require additional fields to be set. - * @return A negative error code is returned if an error occurred during - * decoding, otherwise the number of bytes consumed from the input - * AVPacket is returned. - */ -int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, - int *got_frame_ptr, const AVPacket *avpkt); - -/** - * Decode the video frame of size avpkt->size from avpkt->data into picture. - * Some decoders may support multiple frames in a single AVPacket, such - * decoders would then just decode the first frame. - * - * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than - * the actual read bytes because some optimized bitstream readers read 32 or 64 - * bits at once and could read over the end. - * - * @warning The end of the input buffer buf should be set to 0 to ensure that - * no overreading happens for damaged MPEG streams. - * - * @note You might have to align the input buffer avpkt->data. - * The alignment requirements depend on the CPU: on some CPUs it isn't - * necessary at all, on others it won't work at all if not aligned and on others - * it will work but it will have an impact on performance. - * - * In practice, avpkt->data should have 4 byte alignment at minimum. - * - * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay - * between input and output, these need to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to return the remaining frames. - * - * @param avctx the codec context - * @param[out] picture The AVFrame in which the decoded video frame will be stored. - * Use avcodec_alloc_frame to get an AVFrame, the codec will - * allocate memory for the actual bitmap. - * with default get/release_buffer(), the decoder frees/reuses the bitmap as it sees fit. - * with overridden get/release_buffer() (needs CODEC_CAP_DR1) the user decides into what buffer the decoder - * decodes and the decoder tells the user once it does not need the data anymore, - * the user app can at this point free/reuse/keep the memory as it sees fit. - * - * @param[in] avpkt The input AVpacket containing the input buffer. - * You can create such packet with av_init_packet() and by then setting - * data and size, some decoders might in addition need other fields like - * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least - * fields possible. - * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. - * @return On error a negative value is returned, otherwise the number of bytes - * used or zero if no frame could be decompressed. - */ -int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, - int *got_picture_ptr, - const AVPacket *avpkt); - -/** - * Decode a subtitle message. - * Return a negative value on error, otherwise return the number of bytes used. - * If no subtitle could be decompressed, got_sub_ptr is zero. - * Otherwise, the subtitle is stored in *sub. - * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for - * simplicity, because the performance difference is expect to be negligible - * and reusing a get_buffer written for video codecs would probably perform badly - * due to a potentially very different allocation pattern. - * - * @param avctx the codec context - * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be - freed with avsubtitle_free if *got_sub_ptr is set. - * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. - * @param[in] avpkt The input AVPacket containing the input buffer. - */ -int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, - int *got_sub_ptr, - AVPacket *avpkt); - -/** - * @defgroup lavc_parsing Frame parsing - * @{ - */ - -typedef struct AVCodecParserContext { - void *priv_data; - struct AVCodecParser *parser; - int64_t frame_offset; /* offset of the current frame */ - int64_t cur_offset; /* current offset - (incremented by each av_parser_parse()) */ - int64_t next_frame_offset; /* offset of the next frame */ - /* video info */ - int pict_type; /* XXX: Put it back in AVCodecContext. */ - /** - * This field is used for proper frame duration computation in lavf. - * It signals, how much longer the frame duration of the current frame - * is compared to normal frame duration. - * - * frame_duration = (1 + repeat_pict) * time_base - * - * It is used by codecs like H.264 to display telecined material. - */ - int repeat_pict; /* XXX: Put it back in AVCodecContext. */ - int64_t pts; /* pts of the current frame */ - int64_t dts; /* dts of the current frame */ - - /* private data */ - int64_t last_pts; - int64_t last_dts; - int fetch_timestamp; - -#define AV_PARSER_PTS_NB 4 - int cur_frame_start_index; - int64_t cur_frame_offset[AV_PARSER_PTS_NB]; - int64_t cur_frame_pts[AV_PARSER_PTS_NB]; - int64_t cur_frame_dts[AV_PARSER_PTS_NB]; - - int flags; -#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 -#define PARSER_FLAG_ONCE 0x0002 -/// Set if the parser has a valid file offset -#define PARSER_FLAG_FETCHED_OFFSET 0x0004 -#define PARSER_FLAG_USE_CODEC_TS 0x1000 - - int64_t offset; ///< byte offset from starting packet start - int64_t cur_frame_end[AV_PARSER_PTS_NB]; - - /** - * Set by parser to 1 for key frames and 0 for non-key frames. - * It is initialized to -1, so if the parser doesn't set this flag, - * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames - * will be used. - */ - int key_frame; - - /** - * Time difference in stream time base units from the pts of this - * packet to the point at which the output from the decoder has converged - * independent from the availability of previous frames. That is, the - * frames are virtually identical no matter if decoding started from - * the very first frame or from this keyframe. - * Is AV_NOPTS_VALUE if unknown. - * This field is not the display duration of the current frame. - * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY - * set. - * - * The purpose of this field is to allow seeking in streams that have no - * keyframes in the conventional sense. It corresponds to the - * recovery point SEI in H.264 and match_time_delta in NUT. It is also - * essential for some types of subtitle streams to ensure that all - * subtitles are correctly displayed after seeking. - */ - int64_t convergence_duration; - - // Timestamp generation support: - /** - * Synchronization point for start of timestamp generation. - * - * Set to >0 for sync point, 0 for no sync point and <0 for undefined - * (default). - * - * For example, this corresponds to presence of H.264 buffering period - * SEI message. - */ - int dts_sync_point; - - /** - * Offset of the current timestamp against last timestamp sync point in - * units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain a valid timestamp offset. - * - * Note that the timestamp of sync point has usually a nonzero - * dts_ref_dts_delta, which refers to the previous sync point. Offset of - * the next frame after timestamp sync point will be usually 1. - * - * For example, this corresponds to H.264 cpb_removal_delay. - */ - int dts_ref_dts_delta; - - /** - * Presentation delay of current frame in units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain valid non-negative timestamp delta (presentation time of a frame - * must not lie in the past). - * - * This delay represents the difference between decoding and presentation - * time of the frame. - * - * For example, this corresponds to H.264 dpb_output_delay. - */ - int pts_dts_delta; - - /** - * Position of the packet in file. - * - * Analogous to cur_frame_pts/dts - */ - int64_t cur_frame_pos[AV_PARSER_PTS_NB]; - - /** - * Byte position of currently parsed frame in stream. - */ - int64_t pos; - - /** - * Previous frame byte position. - */ - int64_t last_pos; - - /** - * Duration of the current frame. - * For audio, this is in units of 1 / AVCodecContext.sample_rate. - * For all other types, this is in units of AVCodecContext.time_base. - */ - int duration; -} AVCodecParserContext; - -typedef struct AVCodecParser { - int codec_ids[5]; /* several codec IDs are permitted */ - int priv_data_size; - int (*parser_init)(AVCodecParserContext *s); - int (*parser_parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - void (*parser_close)(AVCodecParserContext *s); - int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); - struct AVCodecParser *next; -} AVCodecParser; - -AVCodecParser *av_parser_next(AVCodecParser *c); - -void av_register_codec_parser(AVCodecParser *parser); -AVCodecParserContext *av_parser_init(int codec_id); - -/** - * Parse a packet. - * - * @param s parser context. - * @param avctx codec context. - * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. - * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. - * @param buf input buffer. - * @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output). - * @param pts input presentation timestamp. - * @param dts input decoding timestamp. - * @param pos input byte position in stream. - * @return the number of bytes of the input bitstream used. - * - * Example: - * @code - * while(in_len){ - * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, - * in_data, in_len, - * pts, dts, pos); - * in_data += len; - * in_len -= len; - * - * if(size) - * decode_frame(data, size); - * } - * @endcode - */ -int av_parser_parse2(AVCodecParserContext *s, - AVCodecContext *avctx, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, - int64_t pts, int64_t dts, - int64_t pos); - -/** - * @return 0 if the output buffer is a subset of the input, 1 if it is allocated and must be freed - * @deprecated use AVBitstreamFilter - */ -int av_parser_change(AVCodecParserContext *s, - AVCodecContext *avctx, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); -void av_parser_close(AVCodecParserContext *s); - -/** - * @} - * @} - */ - -/** - * @addtogroup lavc_encoding - * @{ - */ - -/** - * Find a registered encoder with a matching codec ID. - * - * @param id AVCodecID of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_encoder(enum AVCodecID id); - -/** - * Find a registered encoder with the specified name. - * - * @param name name of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_encoder_by_name(const char *name); - -#if FF_API_OLD_ENCODE_AUDIO -/** - * Encode an audio frame from samples into buf. - * - * @deprecated Use avcodec_encode_audio2 instead. - * - * @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large. - * However, for codecs with avctx->frame_size equal to 0 (e.g. PCM) the user - * will know how much space is needed because it depends on the value passed - * in buf_size as described below. In that case a lower value can be used. - * - * @param avctx the codec context - * @param[out] buf the output buffer - * @param[in] buf_size the output buffer size - * @param[in] samples the input buffer containing the samples - * The number of samples read from this buffer is frame_size*channels, - * both of which are defined in avctx. - * For codecs which have avctx->frame_size equal to 0 (e.g. PCM) the number of - * samples read from samples is equal to: - * buf_size * 8 / (avctx->channels * av_get_bits_per_sample(avctx->codec_id)) - * This also implies that av_get_bits_per_sample() must not return 0 for these - * codecs. - * @return On error a negative value is returned, on success zero or the number - * of bytes used to encode the data read from the input buffer. - */ -int attribute_deprecated avcodec_encode_audio(AVCodecContext *avctx, - uint8_t *buf, int buf_size, - const short *samples); -#endif - -/** - * Encode a frame of audio. - * - * Takes input samples from frame and writes the next output packet, if - * available, to avpkt. The output packet does not necessarily contain data for - * the most recent frame, as encoders can delay, split, and combine input frames - * internally as needed. - * - * @param avctx codec context - * @param avpkt output AVPacket. - * The user can supply an output buffer by setting - * avpkt->data and avpkt->size prior to calling the - * function, but if the size of the user-provided data is not - * large enough, encoding will fail. If avpkt->data and - * avpkt->size are set, avpkt->destruct must also be set. All - * other AVPacket fields will be reset by the encoder using - * av_init_packet(). If avpkt->data is NULL, the encoder will - * allocate it. The encoder will set avpkt->size to the size - * of the output packet. - * - * If this function fails or produces no output, avpkt will be - * freed using av_free_packet() (i.e. avpkt->destruct will be - * called to free the user supplied buffer). - * @param[in] frame AVFrame containing the raw audio data to be encoded. - * May be NULL when flushing an encoder that has the - * CODEC_CAP_DELAY capability set. - * If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame - * can have any number of samples. - * If it is not set, frame->nb_samples must be equal to - * avctx->frame_size for all frames except the last. - * The final frame may be smaller than avctx->frame_size. - * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the - * output packet is non-empty, and to 0 if it is - * empty. If the function returns an error, the - * packet can be assumed to be invalid, and the - * value of got_packet_ptr is undefined and should - * not be used. - * @return 0 on success, negative error code on failure - */ -int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, - const AVFrame *frame, int *got_packet_ptr); - -#if FF_API_OLD_ENCODE_VIDEO -/** - * @deprecated use avcodec_encode_video2() instead. - * - * Encode a video frame from pict into buf. - * The input picture should be - * stored using a specific format, namely avctx.pix_fmt. - * - * @param avctx the codec context - * @param[out] buf the output buffer for the bitstream of encoded frame - * @param[in] buf_size the size of the output buffer in bytes - * @param[in] pict the input picture to encode - * @return On error a negative value is returned, on success zero or the number - * of bytes used from the output buffer. - */ -attribute_deprecated -int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size, - const AVFrame *pict); -#endif - -/** - * Encode a frame of video. - * - * Takes input raw video data from frame and writes the next output packet, if - * available, to avpkt. The output packet does not necessarily contain data for - * the most recent frame, as encoders can delay and reorder input frames - * internally as needed. - * - * @param avctx codec context - * @param avpkt output AVPacket. - * The user can supply an output buffer by setting - * avpkt->data and avpkt->size prior to calling the - * function, but if the size of the user-provided data is not - * large enough, encoding will fail. All other AVPacket fields - * will be reset by the encoder using av_init_packet(). If - * avpkt->data is NULL, the encoder will allocate it. - * The encoder will set avpkt->size to the size of the - * output packet. The returned data (if any) belongs to the - * caller, he is responsible for freeing it. - * - * If this function fails or produces no output, avpkt will be - * freed using av_free_packet() (i.e. avpkt->destruct will be - * called to free the user supplied buffer). - * @param[in] frame AVFrame containing the raw video data to be encoded. - * May be NULL when flushing an encoder that has the - * CODEC_CAP_DELAY capability set. - * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the - * output packet is non-empty, and to 0 if it is - * empty. If the function returns an error, the - * packet can be assumed to be invalid, and the - * value of got_packet_ptr is undefined and should - * not be used. - * @return 0 on success, negative error code on failure - */ -int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, - const AVFrame *frame, int *got_packet_ptr); - -int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, - const AVSubtitle *sub); - - -/** - * @} - */ - -#if FF_API_AVCODEC_RESAMPLE -/** - * @defgroup lavc_resample Audio resampling - * @ingroup libavc - * @deprecated use libswresample instead - * - * @{ - */ -struct ReSampleContext; -struct AVResampleContext; - -typedef struct ReSampleContext ReSampleContext; - -/** - * Initialize audio resampling context. - * - * @param output_channels number of output channels - * @param input_channels number of input channels - * @param output_rate output sample rate - * @param input_rate input sample rate - * @param sample_fmt_out requested output sample format - * @param sample_fmt_in input sample format - * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency - * @param log2_phase_count log2 of the number of entries in the polyphase filterbank - * @param linear if 1 then the used FIR filter will be linearly interpolated - between the 2 closest, if 0 the closest will be used - * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate - * @return allocated ReSampleContext, NULL if error occurred - */ -attribute_deprecated -ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, - int output_rate, int input_rate, - enum AVSampleFormat sample_fmt_out, - enum AVSampleFormat sample_fmt_in, - int filter_length, int log2_phase_count, - int linear, double cutoff); - -attribute_deprecated -int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); - -/** - * Free resample context. - * - * @param s a non-NULL pointer to a resample context previously - * created with av_audio_resample_init() - */ -attribute_deprecated -void audio_resample_close(ReSampleContext *s); - - -/** - * Initialize an audio resampler. - * Note, if either rate is not an integer then simply scale both rates up so they are. - * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq - * @param log2_phase_count log2 of the number of entries in the polyphase filterbank - * @param linear If 1 then the used FIR filter will be linearly interpolated - between the 2 closest, if 0 the closest will be used - * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate - */ -attribute_deprecated -struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); - -/** - * Resample an array of samples using a previously configured context. - * @param src an array of unconsumed samples - * @param consumed the number of samples of src which have been consumed are returned here - * @param src_size the number of unconsumed samples available - * @param dst_size the amount of space in samples available in dst - * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. - * @return the number of samples written in dst or -1 if an error occurred - */ -attribute_deprecated -int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); - - -/** - * Compensate samplerate/timestamp drift. The compensation is done by changing - * the resampler parameters, so no audible clicks or similar distortions occur - * @param compensation_distance distance in output samples over which the compensation should be performed - * @param sample_delta number of output samples which should be output less - * - * example: av_resample_compensate(c, 10, 500) - * here instead of 510 samples only 500 samples would be output - * - * note, due to rounding the actual compensation might be slightly different, - * especially if the compensation_distance is large and the in_rate used during init is small - */ -attribute_deprecated -void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); -attribute_deprecated -void av_resample_close(struct AVResampleContext *c); - -/** - * @} - */ -#endif - -/** - * @addtogroup lavc_picture - * @{ - */ - -/** - * Allocate memory for a picture. Call avpicture_free() to free it. - * - * @see avpicture_fill() - * - * @param picture the picture to be filled in - * @param pix_fmt the format of the picture - * @param width the width of the picture - * @param height the height of the picture - * @return zero if successful, a negative value if not - */ -int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height); - -/** - * Free a picture previously allocated by avpicture_alloc(). - * The data buffer used by the AVPicture is freed, but the AVPicture structure - * itself is not. - * - * @param picture the AVPicture to be freed - */ -void avpicture_free(AVPicture *picture); - -/** - * Fill in the AVPicture fields, always assume a linesize alignment of - * 1. - * - * @see av_image_fill_arrays() - */ -int avpicture_fill(AVPicture *picture, const uint8_t *ptr, - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * Copy pixel data from an AVPicture into a buffer, always assume a - * linesize alignment of 1. - * - * @see av_image_copy_to_buffer() - */ -int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, - int width, int height, - unsigned char *dest, int dest_size); - -/** - * Calculate the size in bytes that a picture of the given width and height - * would occupy if stored in the given picture format. - * Always assume a linesize alignment of 1. - * - * @see av_image_get_buffer_size(). - */ -int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height); - -#if FF_API_DEINTERLACE -/** - * deinterlace - if not supported return -1 - * - * @deprecated - use yadif (in libavfilter) instead - */ -attribute_deprecated -int avpicture_deinterlace(AVPicture *dst, const AVPicture *src, - enum AVPixelFormat pix_fmt, int width, int height); -#endif -/** - * Copy image src to dst. Wraps av_image_copy(). - */ -void av_picture_copy(AVPicture *dst, const AVPicture *src, - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * Crop image top and left side. - */ -int av_picture_crop(AVPicture *dst, const AVPicture *src, - enum AVPixelFormat pix_fmt, int top_band, int left_band); - -/** - * Pad image. - */ -int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, - int padtop, int padbottom, int padleft, int padright, int *color); - -/** - * @} - */ - -/** - * @defgroup lavc_misc Utility functions - * @ingroup libavc - * - * Miscellaneous utility functions related to both encoding and decoding - * (or neither). - * @{ - */ - -/** - * @defgroup lavc_misc_pixfmt Pixel formats - * - * Functions for working with pixel formats. - * @{ - */ - -/** - * Utility function to access log2_chroma_w log2_chroma_h from - * the pixel format AVPixFmtDescriptor. - * - * This function asserts that pix_fmt is valid. See av_pix_fmt_get_chroma_sub_sample - * for one that returns a failure code and continues in case of invalid - * pix_fmts. - * - * @param[in] pix_fmt the pixel format - * @param[out] h_shift store log2_chroma_h - * @param[out] v_shift store log2_chroma_w - * - * @see av_pix_fmt_get_chroma_sub_sample - */ - -void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift); - -/** - * Return a value representing the fourCC code associated to the - * pixel format pix_fmt, or 0 if no associated fourCC code can be - * found. - */ -unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); - -#define FF_LOSS_RESOLUTION 0x0001 /**< loss due to resolution change */ -#define FF_LOSS_DEPTH 0x0002 /**< loss due to color depth change */ -#define FF_LOSS_COLORSPACE 0x0004 /**< loss due to color space conversion */ -#define FF_LOSS_ALPHA 0x0008 /**< loss of alpha bits */ -#define FF_LOSS_COLORQUANT 0x0010 /**< loss due to color quantization */ -#define FF_LOSS_CHROMA 0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */ - -/** - * Compute what kind of losses will occur when converting from one specific - * pixel format to another. - * When converting from one pixel format to another, information loss may occur. - * For example, when converting from RGB24 to GRAY, the color information will - * be lost. Similarly, other losses occur when converting from some formats to - * other formats. These losses can involve loss of chroma, but also loss of - * resolution, loss of color depth, loss due to the color space conversion, loss - * of the alpha bits or loss due to color quantization. - * avcodec_get_fix_fmt_loss() informs you about the various types of losses - * which will occur when converting from one pixel format to another. - * - * @param[in] dst_pix_fmt destination pixel format - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @return Combination of flags informing you what kind of losses will occur - * (maximum loss for an invalid dst_pix_fmt). - */ -int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, - int has_alpha); - -#if FF_API_FIND_BEST_PIX_FMT -/** - * @deprecated use avcodec_find_best_pix_fmt_of_2() instead. - * - * Find the best pixel format to convert to given a certain source pixel - * format. When converting from one pixel format to another, information loss - * may occur. For example, when converting from RGB24 to GRAY, the color - * information will be lost. Similarly, other losses occur when converting from - * some formats to other formats. avcodec_find_best_pix_fmt() searches which of - * the given pixel formats should be used to suffer the least amount of loss. - * The pixel formats from which it chooses one, are determined by the - * pix_fmt_mask parameter. - * - * Note, only the first 64 pixel formats will fit in pix_fmt_mask. - * - * @code - * src_pix_fmt = AV_PIX_FMT_YUV420P; - * pix_fmt_mask = (1 << AV_PIX_FMT_YUV422P) | (1 << AV_PIX_FMT_RGB24); - * dst_pix_fmt = avcodec_find_best_pix_fmt(pix_fmt_mask, src_pix_fmt, alpha, &loss); - * @endcode - * - * @param[in] pix_fmt_mask bitmask determining which pixel format to choose from - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. - * @return The best pixel format to convert to or -1 if none was found. - */ -attribute_deprecated -enum AVPixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum AVPixelFormat src_pix_fmt, - int has_alpha, int *loss_ptr); -#endif /* FF_API_FIND_BEST_PIX_FMT */ - -/** - * Find the best pixel format to convert to given a certain source pixel - * format. When converting from one pixel format to another, information loss - * may occur. For example, when converting from RGB24 to GRAY, the color - * information will be lost. Similarly, other losses occur when converting from - * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of - * the given pixel formats should be used to suffer the least amount of loss. - * The pixel formats from which it chooses one, are determined by the - * pix_fmt_list parameter. - * - * - * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. - * @return The best pixel format to convert to or -1 if none was found. - */ -enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(enum AVPixelFormat *pix_fmt_list, - enum AVPixelFormat src_pix_fmt, - int has_alpha, int *loss_ptr); - -/** - * Find the best pixel format to convert to given a certain source pixel - * format and a selection of two destination pixel formats. When converting from - * one pixel format to another, information loss may occur. For example, when converting - * from RGB24 to GRAY, the color information will be lost. Similarly, other losses occur when - * converting from some formats to other formats. avcodec_find_best_pix_fmt_of_2() selects which of - * the given pixel formats should be used to suffer the least amount of loss. - * - * If one of the destination formats is AV_PIX_FMT_NONE the other pixel format (if valid) will be - * returned. - * - * @code - * src_pix_fmt = AV_PIX_FMT_YUV420P; - * dst_pix_fmt1= AV_PIX_FMT_RGB24; - * dst_pix_fmt2= AV_PIX_FMT_GRAY8; - * dst_pix_fmt3= AV_PIX_FMT_RGB8; - * loss= FF_LOSS_CHROMA; // don't care about chroma loss, so chroma loss will be ignored. - * dst_pix_fmt = avcodec_find_best_pix_fmt_of_2(dst_pix_fmt1, dst_pix_fmt2, src_pix_fmt, alpha, &loss); - * dst_pix_fmt = avcodec_find_best_pix_fmt_of_2(dst_pix_fmt, dst_pix_fmt3, src_pix_fmt, alpha, &loss); - * @endcode - * - * @param[in] dst_pix_fmt1 One of the two destination pixel formats to choose from - * @param[in] dst_pix_fmt2 The other of the two destination pixel formats to choose from - * @param[in] src_pix_fmt Source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @param[in, out] loss_ptr Combination of loss flags. In: selects which of the losses to ignore, i.e. - * NULL or value of zero means we care about all losses. Out: the loss - * that occurs when converting from src to selected dst pixel format. - * @return The best pixel format to convert to or -1 if none was found. - */ -enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, - enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); - -attribute_deprecated -#if AV_HAVE_INCOMPATIBLE_FORK_ABI -enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat *pix_fmt_list, - enum AVPixelFormat src_pix_fmt, - int has_alpha, int *loss_ptr); -#else -enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, - enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); -#endif - - -enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - -/** - * @} - */ - -void avcodec_set_dimensions(AVCodecContext *s, int width, int height); - -/** - * Put a string representing the codec tag codec_tag in buf. - * - * @param buf_size size in bytes of buf - * @return the length of the string that would have been generated if - * enough space had been available, excluding the trailing null - */ -size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag); - -void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); - -/** - * Return a name for the specified profile, if available. - * - * @param codec the codec that is searched for the given profile - * @param profile the profile value for which a name is requested - * @return A name for the profile if found, NULL otherwise. - */ -const char *av_get_profile_name(const AVCodec *codec, int profile); - -int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); -int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); -//FIXME func typedef - -/** - * Fill AVFrame audio data and linesize pointers. - * - * The buffer buf must be a preallocated buffer with a size big enough - * to contain the specified samples amount. The filled AVFrame data - * pointers will point to this buffer. - * - * AVFrame extended_data channel pointers are allocated if necessary for - * planar audio. - * - * @param frame the AVFrame - * frame->nb_samples must be set prior to calling the - * function. This function fills in frame->data, - * frame->extended_data, frame->linesize[0]. - * @param nb_channels channel count - * @param sample_fmt sample format - * @param buf buffer to use for frame data - * @param buf_size size of buffer - * @param align plane size sample alignment (0 = default) - * @return >=0 on success, negative error code on failure - * @todo return the size in bytes required to store the samples in - * case of success, at the next libavutil bump - */ -int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, - enum AVSampleFormat sample_fmt, const uint8_t *buf, - int buf_size, int align); - -/** - * Flush buffers, should be called when seeking or when switching to a different stream. - */ -void avcodec_flush_buffers(AVCodecContext *avctx); - -void avcodec_default_free_buffers(AVCodecContext *s); - -/** - * Return codec bits per sample. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return the PCM codec associated with a sample format. - * @param be endianness, 0 for little, 1 for big, - * -1 (or anything else) for native - * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE - */ -enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be); - -/** - * Return codec bits per sample. - * Only return non-zero if the bits per sample is exactly correct, not an - * approximation. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_exact_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return audio frame duration. - * - * @param avctx codec context - * @param frame_bytes size of the frame, or 0 if unknown - * @return frame duration, in samples, if known. 0 if not able to - * determine. - */ -int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); - - -typedef struct AVBitStreamFilterContext { - void *priv_data; - struct AVBitStreamFilter *filter; - AVCodecParserContext *parser; - struct AVBitStreamFilterContext *next; -} AVBitStreamFilterContext; - - -typedef struct AVBitStreamFilter { - const char *name; - int priv_data_size; - int (*filter)(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); - void (*close)(AVBitStreamFilterContext *bsfc); - struct AVBitStreamFilter *next; -} AVBitStreamFilter; - -void av_register_bitstream_filter(AVBitStreamFilter *bsf); -AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); -int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); -void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); - -AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f); - -/* memory */ - -/** - * Reallocate the given block if it is not large enough, otherwise do nothing. - * - * @see av_realloc - */ -void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate a buffer, reusing the given one if large enough. - * - * Contrary to av_fast_realloc the current buffer contents might not be - * preserved and on error the old buffer is freed, thus no special - * handling to avoid memleaks is necessary. - * - * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer - * @param size size of the buffer *ptr points to - * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and - * *size 0 if an error occurred. - */ -void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Same behaviour av_fast_malloc but the buffer has additional - * FF_INPUT_BUFFER_PADDING_SIZE at the end which will will always be 0. - * - * In addition the whole buffer will initially and after resizes - * be 0-initialized so that no uninitialized data will ever appear. - */ -void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Same behaviour av_fast_padded_malloc except that buffer will always - * be 0-initialized after call. - */ -void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); - -/** - * Encode extradata length to a buffer. Used by xiph codecs. - * - * @param s buffer to write to; must be at least (v/255+1) bytes long - * @param v size of extradata in bytes - * @return number of bytes written to the buffer. - */ -unsigned int av_xiphlacing(unsigned char *s, unsigned int v); - -/** - * Log a generic warning message about a missing feature. This function is - * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) - * only, and would normally not be used by applications. - * @param[in] avc a pointer to an arbitrary struct of which the first field is - * a pointer to an AVClass struct - * @param[in] feature string containing the name of the missing feature - * @param[in] want_sample indicates if samples are wanted which exhibit this feature. - * If want_sample is non-zero, additional verbage will be added to the log - * message which tells the user how to report samples to the development - * mailing list. - */ -void av_log_missing_feature(void *avc, const char *feature, int want_sample); - -/** - * Log a generic warning message asking for a sample. This function is - * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) - * only, and would normally not be used by applications. - * @param[in] avc a pointer to an arbitrary struct of which the first field is - * a pointer to an AVClass struct - * @param[in] msg string containing an optional message, or NULL if no message - */ -void av_log_ask_for_sample(void *avc, const char *msg, ...) av_printf_format(2, 3); - -/** - * Register the hardware accelerator hwaccel. - */ -void av_register_hwaccel(AVHWAccel *hwaccel); - -/** - * If hwaccel is NULL, returns the first registered hardware accelerator, - * if hwaccel is non-NULL, returns the next registered hardware accelerator - * after hwaccel, or NULL if hwaccel is the last one. - */ -AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel); - - -/** - * Lock operation used by lockmgr - */ -enum AVLockOp { - AV_LOCK_CREATE, ///< Create a mutex - AV_LOCK_OBTAIN, ///< Lock the mutex - AV_LOCK_RELEASE, ///< Unlock the mutex - AV_LOCK_DESTROY, ///< Free mutex resources -}; - -/** - * Register a user provided lock manager supporting the operations - * specified by AVLockOp. mutex points to a (void *) where the - * lockmgr should store/get a pointer to a user allocated mutex. It's - * NULL upon AV_LOCK_CREATE and != NULL for all other ops. - * - * @param cb User defined callback. Note: FFmpeg may invoke calls to this - * callback during the call to av_lockmgr_register(). - * Thus, the application must be prepared to handle that. - * If cb is set to NULL the lockmgr will be unregistered. - * Also note that during unregistration the previously registered - * lockmgr callback may also be invoked. - */ -int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); - -/** - * Get the type of the given codec. - */ -enum AVMediaType avcodec_get_type(enum AVCodecID codec_id); - -/** - * Get the name of a codec. - * @return a static string identifying the codec; never NULL - */ -const char *avcodec_get_name(enum AVCodecID id); - -/** - * @return a positive value if s is open (i.e. avcodec_open2() was called on it - * with no corresponding avcodec_close()), 0 otherwise. - */ -int avcodec_is_open(AVCodecContext *s); - -/** - * @return a non-zero number if codec is an encoder, zero otherwise - */ -int av_codec_is_encoder(const AVCodec *codec); - -/** - * @return a non-zero number if codec is a decoder, zero otherwise - */ -int av_codec_is_decoder(const AVCodec *codec); - -/** - * @return descriptor for given codec ID or NULL if no descriptor exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id); - -/** - * Iterate over all codec descriptors known to libavcodec. - * - * @param prev previous descriptor. NULL to get the first descriptor. - * - * @return next descriptor or NULL after the last descriptor - */ -const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev); - -/** - * @return codec descriptor with the given name or NULL if no such descriptor - * exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name); - -/** - * @} - */ - -#endif /* AVCODEC_AVCODEC_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/avfft.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/avfft.h deleted file mode 100644 index 2d20a45f87..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/avfft.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVFFT_H -#define AVCODEC_AVFFT_H - -/** - * @file - * @ingroup lavc_fft - * FFT functions - */ - -/** - * @defgroup lavc_fft FFT functions - * @ingroup lavc_misc - * - * @{ - */ - -typedef float FFTSample; - -typedef struct FFTComplex { - FFTSample re, im; -} FFTComplex; - -typedef struct FFTContext FFTContext; - -/** - * Set up a complex FFT. - * @param nbits log2 of the length of the input array - * @param inverse if 0 perform the forward transform, if 1 perform the inverse - */ -FFTContext *av_fft_init(int nbits, int inverse); - -/** - * Do the permutation needed BEFORE calling ff_fft_calc(). - */ -void av_fft_permute(FFTContext *s, FFTComplex *z); - -/** - * Do a complex FFT with the parameters defined in av_fft_init(). The - * input data must be permuted before. No 1.0/sqrt(n) normalization is done. - */ -void av_fft_calc(FFTContext *s, FFTComplex *z); - -void av_fft_end(FFTContext *s); - -FFTContext *av_mdct_init(int nbits, int inverse, double scale); -void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_end(FFTContext *s); - -/* Real Discrete Fourier Transform */ - -enum RDFTransformType { - DFT_R2C, - IDFT_C2R, - IDFT_R2C, - DFT_C2R, -}; - -typedef struct RDFTContext RDFTContext; - -/** - * Set up a real FFT. - * @param nbits log2 of the length of the input array - * @param trans the type of transform - */ -RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); -void av_rdft_calc(RDFTContext *s, FFTSample *data); -void av_rdft_end(RDFTContext *s); - -/* Discrete Cosine Transform */ - -typedef struct DCTContext DCTContext; - -enum DCTTransformType { - DCT_II = 0, - DCT_III, - DCT_I, - DST_I, -}; - -/** - * Set up DCT. - * @param nbits size of the input array: - * (1 << nbits) for DCT-II, DCT-III and DST-I - * (1 << nbits) + 1 for DCT-I - * - * @note the first element of the input of DST-I is ignored - */ -DCTContext *av_dct_init(int nbits, enum DCTTransformType type); -void av_dct_calc(DCTContext *s, FFTSample *data); -void av_dct_end (DCTContext *s); - -/** - * @} - */ - -#endif /* AVCODEC_AVFFT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/dxva2.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/dxva2.h deleted file mode 100644 index ac39e06917..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/dxva2.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * DXVA2 HW acceleration - * - * copyright (c) 2009 Laurent Aimar - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_DXVA_H -#define AVCODEC_DXVA_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_dxva2 - * Public libavcodec DXVA2 header. - */ - -#if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600 -#undef _WIN32_WINNT -#endif - -#if !defined(_WIN32_WINNT) -#define _WIN32_WINNT 0x0600 -#endif - -#include -#include -#include - -/** - * @defgroup lavc_codec_hwaccel_dxva2 DXVA2 - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards - -/** - * This structure is used to provides the necessary configurations and data - * to the DXVA2 FFmpeg HWAccel implementation. - * - * The application must make it available as AVCodecContext.hwaccel_context. - */ -struct dxva_context { - /** - * DXVA2 decoder object - */ - IDirectXVideoDecoder *decoder; - - /** - * DXVA2 configuration used to create the decoder - */ - const DXVA2_ConfigPictureDecode *cfg; - - /** - * The number of surface in the surface array - */ - unsigned surface_count; - - /** - * The array of Direct3D surfaces used to create the decoder - */ - LPDIRECT3DSURFACE9 *surface; - - /** - * A bit field configuring the workarounds needed for using the decoder - */ - uint64_t workaround; - - /** - * Private to the FFmpeg AVHWAccel implementation - */ - unsigned report_id; -}; - -/** - * @} - */ - -#endif /* AVCODEC_DXVA_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/old_codec_ids.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/old_codec_ids.h deleted file mode 100644 index ded4cc7877..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/old_codec_ids.h +++ /dev/null @@ -1,398 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_OLD_CODEC_IDS_H -#define AVCODEC_OLD_CODEC_IDS_H - -#include "libavutil/common.h" - -/* - * This header exists to prevent new codec IDs from being accidentally added to - * the deprecated list. - * Do not include it directly. It will be removed on next major bump - * - * Do not add new items to this list. Use the AVCodecID enum instead. - */ - - CODEC_ID_NONE = AV_CODEC_ID_NONE, - - /* video codecs */ - CODEC_ID_MPEG1VIDEO, - CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding - CODEC_ID_MPEG2VIDEO_XVMC, - CODEC_ID_H261, - CODEC_ID_H263, - CODEC_ID_RV10, - CODEC_ID_RV20, - CODEC_ID_MJPEG, - CODEC_ID_MJPEGB, - CODEC_ID_LJPEG, - CODEC_ID_SP5X, - CODEC_ID_JPEGLS, - CODEC_ID_MPEG4, - CODEC_ID_RAWVIDEO, - CODEC_ID_MSMPEG4V1, - CODEC_ID_MSMPEG4V2, - CODEC_ID_MSMPEG4V3, - CODEC_ID_WMV1, - CODEC_ID_WMV2, - CODEC_ID_H263P, - CODEC_ID_H263I, - CODEC_ID_FLV1, - CODEC_ID_SVQ1, - CODEC_ID_SVQ3, - CODEC_ID_DVVIDEO, - CODEC_ID_HUFFYUV, - CODEC_ID_CYUV, - CODEC_ID_H264, - CODEC_ID_INDEO3, - CODEC_ID_VP3, - CODEC_ID_THEORA, - CODEC_ID_ASV1, - CODEC_ID_ASV2, - CODEC_ID_FFV1, - CODEC_ID_4XM, - CODEC_ID_VCR1, - CODEC_ID_CLJR, - CODEC_ID_MDEC, - CODEC_ID_ROQ, - CODEC_ID_INTERPLAY_VIDEO, - CODEC_ID_XAN_WC3, - CODEC_ID_XAN_WC4, - CODEC_ID_RPZA, - CODEC_ID_CINEPAK, - CODEC_ID_WS_VQA, - CODEC_ID_MSRLE, - CODEC_ID_MSVIDEO1, - CODEC_ID_IDCIN, - CODEC_ID_8BPS, - CODEC_ID_SMC, - CODEC_ID_FLIC, - CODEC_ID_TRUEMOTION1, - CODEC_ID_VMDVIDEO, - CODEC_ID_MSZH, - CODEC_ID_ZLIB, - CODEC_ID_QTRLE, - CODEC_ID_SNOW, - CODEC_ID_TSCC, - CODEC_ID_ULTI, - CODEC_ID_QDRAW, - CODEC_ID_VIXL, - CODEC_ID_QPEG, - CODEC_ID_PNG, - CODEC_ID_PPM, - CODEC_ID_PBM, - CODEC_ID_PGM, - CODEC_ID_PGMYUV, - CODEC_ID_PAM, - CODEC_ID_FFVHUFF, - CODEC_ID_RV30, - CODEC_ID_RV40, - CODEC_ID_VC1, - CODEC_ID_WMV3, - CODEC_ID_LOCO, - CODEC_ID_WNV1, - CODEC_ID_AASC, - CODEC_ID_INDEO2, - CODEC_ID_FRAPS, - CODEC_ID_TRUEMOTION2, - CODEC_ID_BMP, - CODEC_ID_CSCD, - CODEC_ID_MMVIDEO, - CODEC_ID_ZMBV, - CODEC_ID_AVS, - CODEC_ID_SMACKVIDEO, - CODEC_ID_NUV, - CODEC_ID_KMVC, - CODEC_ID_FLASHSV, - CODEC_ID_CAVS, - CODEC_ID_JPEG2000, - CODEC_ID_VMNC, - CODEC_ID_VP5, - CODEC_ID_VP6, - CODEC_ID_VP6F, - CODEC_ID_TARGA, - CODEC_ID_DSICINVIDEO, - CODEC_ID_TIERTEXSEQVIDEO, - CODEC_ID_TIFF, - CODEC_ID_GIF, - CODEC_ID_DXA, - CODEC_ID_DNXHD, - CODEC_ID_THP, - CODEC_ID_SGI, - CODEC_ID_C93, - CODEC_ID_BETHSOFTVID, - CODEC_ID_PTX, - CODEC_ID_TXD, - CODEC_ID_VP6A, - CODEC_ID_AMV, - CODEC_ID_VB, - CODEC_ID_PCX, - CODEC_ID_SUNRAST, - CODEC_ID_INDEO4, - CODEC_ID_INDEO5, - CODEC_ID_MIMIC, - CODEC_ID_RL2, - CODEC_ID_ESCAPE124, - CODEC_ID_DIRAC, - CODEC_ID_BFI, - CODEC_ID_CMV, - CODEC_ID_MOTIONPIXELS, - CODEC_ID_TGV, - CODEC_ID_TGQ, - CODEC_ID_TQI, - CODEC_ID_AURA, - CODEC_ID_AURA2, - CODEC_ID_V210X, - CODEC_ID_TMV, - CODEC_ID_V210, - CODEC_ID_DPX, - CODEC_ID_MAD, - CODEC_ID_FRWU, - CODEC_ID_FLASHSV2, - CODEC_ID_CDGRAPHICS, - CODEC_ID_R210, - CODEC_ID_ANM, - CODEC_ID_BINKVIDEO, - CODEC_ID_IFF_ILBM, - CODEC_ID_IFF_BYTERUN1, - CODEC_ID_KGV1, - CODEC_ID_YOP, - CODEC_ID_VP8, - CODEC_ID_PICTOR, - CODEC_ID_ANSI, - CODEC_ID_A64_MULTI, - CODEC_ID_A64_MULTI5, - CODEC_ID_R10K, - CODEC_ID_MXPEG, - CODEC_ID_LAGARITH, - CODEC_ID_PRORES, - CODEC_ID_JV, - CODEC_ID_DFA, - CODEC_ID_WMV3IMAGE, - CODEC_ID_VC1IMAGE, - CODEC_ID_UTVIDEO, - CODEC_ID_BMV_VIDEO, - CODEC_ID_VBLE, - CODEC_ID_DXTORY, - CODEC_ID_V410, - CODEC_ID_XWD, - CODEC_ID_CDXL, - CODEC_ID_XBM, - CODEC_ID_ZEROCODEC, - CODEC_ID_MSS1, - CODEC_ID_MSA1, - CODEC_ID_TSCC2, - CODEC_ID_MTS2, - CODEC_ID_CLLC, - CODEC_ID_Y41P = MKBETAG('Y','4','1','P'), - CODEC_ID_ESCAPE130 = MKBETAG('E','1','3','0'), - CODEC_ID_EXR = MKBETAG('0','E','X','R'), - CODEC_ID_AVRP = MKBETAG('A','V','R','P'), - - CODEC_ID_G2M = MKBETAG( 0 ,'G','2','M'), - CODEC_ID_AVUI = MKBETAG('A','V','U','I'), - CODEC_ID_AYUV = MKBETAG('A','Y','U','V'), - CODEC_ID_V308 = MKBETAG('V','3','0','8'), - CODEC_ID_V408 = MKBETAG('V','4','0','8'), - CODEC_ID_YUV4 = MKBETAG('Y','U','V','4'), - CODEC_ID_SANM = MKBETAG('S','A','N','M'), - CODEC_ID_PAF_VIDEO = MKBETAG('P','A','F','V'), - - /* various PCM "codecs" */ - CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs - CODEC_ID_PCM_S16LE = 0x10000, - CODEC_ID_PCM_S16BE, - CODEC_ID_PCM_U16LE, - CODEC_ID_PCM_U16BE, - CODEC_ID_PCM_S8, - CODEC_ID_PCM_U8, - CODEC_ID_PCM_MULAW, - CODEC_ID_PCM_ALAW, - CODEC_ID_PCM_S32LE, - CODEC_ID_PCM_S32BE, - CODEC_ID_PCM_U32LE, - CODEC_ID_PCM_U32BE, - CODEC_ID_PCM_S24LE, - CODEC_ID_PCM_S24BE, - CODEC_ID_PCM_U24LE, - CODEC_ID_PCM_U24BE, - CODEC_ID_PCM_S24DAUD, - CODEC_ID_PCM_ZORK, - CODEC_ID_PCM_S16LE_PLANAR, - CODEC_ID_PCM_DVD, - CODEC_ID_PCM_F32BE, - CODEC_ID_PCM_F32LE, - CODEC_ID_PCM_F64BE, - CODEC_ID_PCM_F64LE, - CODEC_ID_PCM_BLURAY, - CODEC_ID_PCM_LXF, - CODEC_ID_S302M, - CODEC_ID_PCM_S8_PLANAR, - - /* various ADPCM codecs */ - CODEC_ID_ADPCM_IMA_QT = 0x11000, - CODEC_ID_ADPCM_IMA_WAV, - CODEC_ID_ADPCM_IMA_DK3, - CODEC_ID_ADPCM_IMA_DK4, - CODEC_ID_ADPCM_IMA_WS, - CODEC_ID_ADPCM_IMA_SMJPEG, - CODEC_ID_ADPCM_MS, - CODEC_ID_ADPCM_4XM, - CODEC_ID_ADPCM_XA, - CODEC_ID_ADPCM_ADX, - CODEC_ID_ADPCM_EA, - CODEC_ID_ADPCM_G726, - CODEC_ID_ADPCM_CT, - CODEC_ID_ADPCM_SWF, - CODEC_ID_ADPCM_YAMAHA, - CODEC_ID_ADPCM_SBPRO_4, - CODEC_ID_ADPCM_SBPRO_3, - CODEC_ID_ADPCM_SBPRO_2, - CODEC_ID_ADPCM_THP, - CODEC_ID_ADPCM_IMA_AMV, - CODEC_ID_ADPCM_EA_R1, - CODEC_ID_ADPCM_EA_R3, - CODEC_ID_ADPCM_EA_R2, - CODEC_ID_ADPCM_IMA_EA_SEAD, - CODEC_ID_ADPCM_IMA_EA_EACS, - CODEC_ID_ADPCM_EA_XAS, - CODEC_ID_ADPCM_EA_MAXIS_XA, - CODEC_ID_ADPCM_IMA_ISS, - CODEC_ID_ADPCM_G722, - CODEC_ID_ADPCM_IMA_APC, - CODEC_ID_VIMA = MKBETAG('V','I','M','A'), - - /* AMR */ - CODEC_ID_AMR_NB = 0x12000, - CODEC_ID_AMR_WB, - - /* RealAudio codecs*/ - CODEC_ID_RA_144 = 0x13000, - CODEC_ID_RA_288, - - /* various DPCM codecs */ - CODEC_ID_ROQ_DPCM = 0x14000, - CODEC_ID_INTERPLAY_DPCM, - CODEC_ID_XAN_DPCM, - CODEC_ID_SOL_DPCM, - - /* audio codecs */ - CODEC_ID_MP2 = 0x15000, - CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 - CODEC_ID_AAC, - CODEC_ID_AC3, - CODEC_ID_DTS, - CODEC_ID_VORBIS, - CODEC_ID_DVAUDIO, - CODEC_ID_WMAV1, - CODEC_ID_WMAV2, - CODEC_ID_MACE3, - CODEC_ID_MACE6, - CODEC_ID_VMDAUDIO, - CODEC_ID_FLAC, - CODEC_ID_MP3ADU, - CODEC_ID_MP3ON4, - CODEC_ID_SHORTEN, - CODEC_ID_ALAC, - CODEC_ID_WESTWOOD_SND1, - CODEC_ID_GSM, ///< as in Berlin toast format - CODEC_ID_QDM2, - CODEC_ID_COOK, - CODEC_ID_TRUESPEECH, - CODEC_ID_TTA, - CODEC_ID_SMACKAUDIO, - CODEC_ID_QCELP, - CODEC_ID_WAVPACK, - CODEC_ID_DSICINAUDIO, - CODEC_ID_IMC, - CODEC_ID_MUSEPACK7, - CODEC_ID_MLP, - CODEC_ID_GSM_MS, /* as found in WAV */ - CODEC_ID_ATRAC3, - CODEC_ID_VOXWARE, - CODEC_ID_APE, - CODEC_ID_NELLYMOSER, - CODEC_ID_MUSEPACK8, - CODEC_ID_SPEEX, - CODEC_ID_WMAVOICE, - CODEC_ID_WMAPRO, - CODEC_ID_WMALOSSLESS, - CODEC_ID_ATRAC3P, - CODEC_ID_EAC3, - CODEC_ID_SIPR, - CODEC_ID_MP1, - CODEC_ID_TWINVQ, - CODEC_ID_TRUEHD, - CODEC_ID_MP4ALS, - CODEC_ID_ATRAC1, - CODEC_ID_BINKAUDIO_RDFT, - CODEC_ID_BINKAUDIO_DCT, - CODEC_ID_AAC_LATM, - CODEC_ID_QDMC, - CODEC_ID_CELT, - CODEC_ID_G723_1, - CODEC_ID_G729, - CODEC_ID_8SVX_EXP, - CODEC_ID_8SVX_FIB, - CODEC_ID_BMV_AUDIO, - CODEC_ID_RALF, - CODEC_ID_IAC, - CODEC_ID_ILBC, - CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'), - CODEC_ID_8SVX_RAW = MKBETAG('8','S','V','X'), - CODEC_ID_SONIC = MKBETAG('S','O','N','C'), - CODEC_ID_SONIC_LS = MKBETAG('S','O','N','L'), - CODEC_ID_PAF_AUDIO = MKBETAG('P','A','F','A'), - CODEC_ID_OPUS = MKBETAG('O','P','U','S'), - - /* subtitle codecs */ - CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. - CODEC_ID_DVD_SUBTITLE = 0x17000, - CODEC_ID_DVB_SUBTITLE, - CODEC_ID_TEXT, ///< raw UTF-8 text - CODEC_ID_XSUB, - CODEC_ID_SSA, - CODEC_ID_MOV_TEXT, - CODEC_ID_HDMV_PGS_SUBTITLE, - CODEC_ID_DVB_TELETEXT, - CODEC_ID_SRT, - CODEC_ID_MICRODVD = MKBETAG('m','D','V','D'), - CODEC_ID_EIA_608 = MKBETAG('c','6','0','8'), - CODEC_ID_JACOSUB = MKBETAG('J','S','U','B'), - CODEC_ID_SAMI = MKBETAG('S','A','M','I'), - CODEC_ID_REALTEXT = MKBETAG('R','T','X','T'), - CODEC_ID_SUBVIEWER = MKBETAG('S','u','b','V'), - - /* other specific kind of codecs (generally used for attachments) */ - CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. - CODEC_ID_TTF = 0x18000, - CODEC_ID_BINTEXT = MKBETAG('B','T','X','T'), - CODEC_ID_XBIN = MKBETAG('X','B','I','N'), - CODEC_ID_IDF = MKBETAG( 0 ,'I','D','F'), - CODEC_ID_OTF = MKBETAG( 0 ,'O','T','F'), - - CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it - - CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS - * stream (only used by libavformat) */ - CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems - * stream (only used by libavformat) */ - CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. - -#endif /* AVCODEC_OLD_CODEC_IDS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vaapi.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vaapi.h deleted file mode 100644 index 815a27e226..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vaapi.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Video Acceleration API (shared data between FFmpeg and the video player) - * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 - * - * Copyright (C) 2008-2009 Splitted-Desktop Systems - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VAAPI_H -#define AVCODEC_VAAPI_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vaapi - * Public libavcodec VA API header. - */ - -#include - -/** - * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding - * @ingroup lavc_codec_hwaccel - * @{ - */ - -/** - * This structure is used to share data between the FFmpeg library and - * the client video application. - * This shall be zero-allocated and available as - * AVCodecContext.hwaccel_context. All user members can be set once - * during initialization or through each AVCodecContext.get_buffer() - * function call. In any case, they must be valid prior to calling - * decoding functions. - */ -struct vaapi_context { - /** - * Window system dependent data - * - * - encoding: unused - * - decoding: Set by user - */ - void *display; - - /** - * Configuration ID - * - * - encoding: unused - * - decoding: Set by user - */ - uint32_t config_id; - - /** - * Context ID (video decode pipeline) - * - * - encoding: unused - * - decoding: Set by user - */ - uint32_t context_id; - - /** - * VAPictureParameterBuffer ID - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - uint32_t pic_param_buf_id; - - /** - * VAIQMatrixBuffer ID - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - uint32_t iq_matrix_buf_id; - - /** - * VABitPlaneBuffer ID (for VC-1 decoding) - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - uint32_t bitplane_buf_id; - - /** - * Slice parameter/data buffer IDs - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - uint32_t *slice_buf_ids; - - /** - * Number of effective slice buffer IDs to send to the HW - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - unsigned int n_slice_buf_ids; - - /** - * Size of pre-allocated slice_buf_ids - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - unsigned int slice_buf_ids_alloc; - - /** - * Pointer to VASliceParameterBuffers - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - void *slice_params; - - /** - * Size of a VASliceParameterBuffer element - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - unsigned int slice_param_size; - - /** - * Size of pre-allocated slice_params - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - unsigned int slice_params_alloc; - - /** - * Number of slices currently filled in - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - unsigned int slice_count; - - /** - * Pointer to slice data buffer base - * - encoding: unused - * - decoding: Set by libavcodec - */ - const uint8_t *slice_data; - - /** - * Current size of slice data - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - uint32_t slice_data_size; -}; - -/* @} */ - -#endif /* AVCODEC_VAAPI_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vda.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vda.h deleted file mode 100644 index de7070edea..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vda.h +++ /dev/null @@ -1,226 +0,0 @@ -/* - * VDA HW acceleration - * - * copyright (c) 2011 Sebastien Zwickert - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VDA_H -#define AVCODEC_VDA_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vda - * Public libavcodec VDA header. - */ - -#include - -// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes -// http://openradar.appspot.com/8026390 -#undef __GNUC_STDC_INLINE__ - -#define Picture QuickdrawPicture -#include -#undef Picture - -#include "libavcodec/version.h" - -#if FF_API_VDA_ASYNC -#include -#endif - -/** - * @defgroup lavc_codec_hwaccel_vda VDA - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#if FF_API_VDA_ASYNC -/** - * This structure is used to store decoded frame information and data. - * - * @deprecated Use synchronous decoding mode. - */ -typedef struct { - /** - * The PTS of the frame. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - int64_t pts; - - /** - * The CoreVideo buffer that contains the decoded data. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - CVPixelBufferRef cv_buffer; - - /** - * A pointer to the next frame. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - struct vda_frame *next_frame; -} vda_frame; -#endif - -/** - * This structure is used to provide the necessary configurations and data - * to the VDA FFmpeg HWAccel implementation. - * - * The application must make it available as AVCodecContext.hwaccel_context. - */ -struct vda_context { - /** - * VDA decoder object. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - VDADecoder decoder; - - /** - * The Core Video pixel buffer that contains the current image data. - * - * encoding: unused - * decoding: Set by libavcodec. Unset by user. - */ - CVPixelBufferRef cv_buffer; - - /** - * Use the hardware decoder in synchronous mode. - * - * encoding: unused - * decoding: Set by user. - */ - int use_sync_decoding; - -#if FF_API_VDA_ASYNC - /** - * VDA frames queue ordered by presentation timestamp. - * - * @deprecated Use synchronous decoding mode. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - vda_frame *queue; - - /** - * Mutex for locking queue operations. - * - * @deprecated Use synchronous decoding mode. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - pthread_mutex_t queue_mutex; -#endif - - /** - * The frame width. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int width; - - /** - * The frame height. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int height; - - /** - * The frame format. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int format; - - /** - * The pixel format for output image buffers. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - OSType cv_pix_fmt_type; - - /** - * The current bitstream buffer. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - uint8_t *priv_bitstream; - - /** - * The current size of the bitstream. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - int priv_bitstream_size; - - /** - * The reference size used for fast reallocation. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - int priv_allocated_size; -}; - -/** Create the video decoder. */ -int ff_vda_create_decoder(struct vda_context *vda_ctx, - uint8_t *extradata, - int extradata_size); - -/** Destroy the video decoder. */ -int ff_vda_destroy_decoder(struct vda_context *vda_ctx); - -#if FF_API_VDA_ASYNC -/** - * Return the top frame of the queue. - * - * @deprecated Use synchronous decoding mode. - */ -vda_frame *ff_vda_queue_pop(struct vda_context *vda_ctx); - -/** - * Release the given frame. - * - * @deprecated Use synchronous decoding mode. - */ -void ff_vda_release_vda_frame(vda_frame *frame); -#endif - -/** - * @} - */ - -#endif /* AVCODEC_VDA_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vdpau.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vdpau.h deleted file mode 100644 index df2aaced26..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/vdpau.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * The Video Decode and Presentation API for UNIX (VDPAU) is used for - * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1. - * - * Copyright (C) 2008 NVIDIA - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VDPAU_H -#define AVCODEC_VDPAU_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vdpau - * Public libavcodec VDPAU header. - */ - - -/** - * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer - * @ingroup lavc_codec_hwaccel - * - * VDPAU hardware acceleration has two modules - * - VDPAU decoding - * - VDPAU presentation - * - * The VDPAU decoding module parses all headers using FFmpeg - * parsing mechanisms and uses VDPAU for the actual decoding. - * - * As per the current implementation, the actual decoding - * and rendering (API calls) are done as part of the VDPAU - * presentation (vo_vdpau.c) module. - * - * @{ - */ - -#include -#include - -union FFVdpPictureInfo { - VdpPictureInfoH264 h264; - VdpPictureInfoMPEG1Or2 mpeg; - VdpPictureInfoVC1 vc1; - VdpPictureInfoMPEG4Part2 mpeg4; -}; - -/** - * This structure is used to share data between the libavcodec library and - * the client video application. - * The user shall zero-allocate the structure and make it available as - * AVCodecContext.hwaccel_context. Members can be set by the user once - * during initialization or through each AVCodecContext.get_buffer() - * function call. In any case, they must be valid prior to calling - * decoding functions. - */ -typedef struct AVVDPAUContext { - /** - * VDPAU decoder handle - * - * Set by user. - */ - VdpDecoder decoder; - - /** - * VDPAU decoder render callback - * - * Set by the user. - */ - VdpDecoderRender *render; - - /** - * VDPAU picture information - * - * Set by libavcodec. - */ - union FFVdpPictureInfo info; - - /** - * Allocated size of the bitstream_buffers table. - * - * Set by libavcodec. - */ - int bitstream_buffers_allocated; - - /** - * Useful bitstream buffers in the bitstream buffers table. - * - * Set by libavcodec. - */ - int bitstream_buffers_used; - - /** - * Table of bitstream buffers. - * The user is responsible for freeing this buffer using av_freep(). - * - * Set by libavcodec. - */ - VdpBitstreamBuffer *bitstream_buffers; -} AVVDPAUContext; - - -/** @brief The videoSurface is used for rendering. */ -#define FF_VDPAU_STATE_USED_FOR_RENDER 1 - -/** - * @brief The videoSurface is needed for reference/prediction. - * The codec manipulates this. - */ -#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2 - -/** - * @brief This structure is used as a callback between the FFmpeg - * decoder (vd_) and presentation (vo_) module. - * This is used for defining a video frame containing surface, - * picture parameter, bitstream information etc which are passed - * between the FFmpeg decoder and its clients. - */ -struct vdpau_render_state { - VdpVideoSurface surface; ///< Used as rendered surface, never changed. - - int state; ///< Holds FF_VDPAU_STATE_* values. - - /** Describe size/location of the compressed video data. - Set to 0 when freeing bitstream_buffers. */ - int bitstream_buffers_allocated; - int bitstream_buffers_used; - /** The user is responsible for freeing this buffer using av_freep(). */ - VdpBitstreamBuffer *bitstream_buffers; - - /** picture parameter information for all supported codecs */ - union FFVdpPictureInfo info; -}; - -/* @}*/ - -#endif /* AVCODEC_VDPAU_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/version.h deleted file mode 100644 index 67fdc25215..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/version.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VERSION_H -#define AVCODEC_VERSION_H - -/** - * @file - * @ingroup libavc - * Libavcodec version macros. - */ - -#include "libavutil/avutil.h" - -#define LIBAVCODEC_VERSION_MAJOR 54 -#define LIBAVCODEC_VERSION_MINOR 92 -#define LIBAVCODEC_VERSION_MICRO 100 - -#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT - -#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - */ - -#ifndef FF_API_REQUEST_CHANNELS -#define FF_API_REQUEST_CHANNELS (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_ALLOC_CONTEXT -#define FF_API_ALLOC_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_AVCODEC_OPEN -#define FF_API_AVCODEC_OPEN (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_OLD_DECODE_AUDIO -#define FF_API_OLD_DECODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_OLD_TIMECODE -#define FF_API_OLD_TIMECODE (LIBAVCODEC_VERSION_MAJOR < 55) -#endif - -#ifndef FF_API_OLD_ENCODE_AUDIO -#define FF_API_OLD_ENCODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_OLD_ENCODE_VIDEO -#define FF_API_OLD_ENCODE_VIDEO (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_MPV_GLOBAL_OPTS -#define FF_API_MPV_GLOBAL_OPTS (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_COLOR_TABLE_ID -#define FF_API_COLOR_TABLE_ID (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_INTER_THRESHOLD -#define FF_API_INTER_THRESHOLD (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_SUB_ID -#define FF_API_SUB_ID (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_DSP_MASK -#define FF_API_DSP_MASK (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_FIND_BEST_PIX_FMT -#define FF_API_FIND_BEST_PIX_FMT (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_CODEC_ID -#define FF_API_CODEC_ID (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_VDA_ASYNC -#define FF_API_VDA_ASYNC (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_AVCODEC_RESAMPLE -#define FF_API_AVCODEC_RESAMPLE (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_LIBMPEG2 -#define FF_API_LIBMPEG2 (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_MMI -#define FF_API_MMI (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_IDCT -#define FF_API_IDCT (LIBAVCODEC_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_DEINTERLACE -#define FF_API_DEINTERLACE (LIBAVCODEC_VERSION_MAJOR < 56) -#endif - -#endif /* AVCODEC_VERSION_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/xvmc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/xvmc.h deleted file mode 100644 index b2bf518d0c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavcodec/xvmc.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2003 Ivan Kalvachev - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_XVMC_H -#define AVCODEC_XVMC_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_xvmc - * Public libavcodec XvMC header. - */ - -#include - -#include "avcodec.h" - -/** - * @defgroup lavc_codec_hwaccel_xvmc XvMC - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct - the number is 1337 speak for the letters IDCT MCo (motion compensation) */ - -struct xvmc_pix_fmt { - /** The field contains the special constant value AV_XVMC_ID. - It is used as a test that the application correctly uses the API, - and that there is no corruption caused by pixel routines. - - application - set during initialization - - libavcodec - unchanged - */ - int xvmc_id; - - /** Pointer to the block array allocated by XvMCCreateBlocks(). - The array has to be freed by XvMCDestroyBlocks(). - Each group of 64 values represents one data block of differential - pixel information (in MoCo mode) or coefficients for IDCT. - - application - set the pointer during initialization - - libavcodec - fills coefficients/pixel data into the array - */ - short* data_blocks; - - /** Pointer to the macroblock description array allocated by - XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks(). - - application - set the pointer during initialization - - libavcodec - fills description data into the array - */ - XvMCMacroBlock* mv_blocks; - - /** Number of macroblock descriptions that can be stored in the mv_blocks - array. - - application - set during initialization - - libavcodec - unchanged - */ - int allocated_mv_blocks; - - /** Number of blocks that can be stored at once in the data_blocks array. - - application - set during initialization - - libavcodec - unchanged - */ - int allocated_data_blocks; - - /** Indicate that the hardware would interpret data_blocks as IDCT - coefficients and perform IDCT on them. - - application - set during initialization - - libavcodec - unchanged - */ - int idct; - - /** In MoCo mode it indicates that intra macroblocks are assumed to be in - unsigned format; same as the XVMC_INTRA_UNSIGNED flag. - - application - set during initialization - - libavcodec - unchanged - */ - int unsigned_intra; - - /** Pointer to the surface allocated by XvMCCreateSurface(). - It has to be freed by XvMCDestroySurface() on application exit. - It identifies the frame and its state on the video hardware. - - application - set during initialization - - libavcodec - unchanged - */ - XvMCSurface* p_surface; - -/** Set by the decoder before calling ff_draw_horiz_band(), - needed by the XvMCRenderSurface function. */ -//@{ - /** Pointer to the surface used as past reference - - application - unchanged - - libavcodec - set - */ - XvMCSurface* p_past_surface; - - /** Pointer to the surface used as future reference - - application - unchanged - - libavcodec - set - */ - XvMCSurface* p_future_surface; - - /** top/bottom field or frame - - application - unchanged - - libavcodec - set - */ - unsigned int picture_structure; - - /** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence - - application - unchanged - - libavcodec - set - */ - unsigned int flags; -//}@ - - /** Number of macroblock descriptions in the mv_blocks array - that have already been passed to the hardware. - - application - zeroes it on get_buffer(). - A successful ff_draw_horiz_band() may increment it - with filled_mb_block_num or zero both. - - libavcodec - unchanged - */ - int start_mv_blocks_num; - - /** Number of new macroblock descriptions in the mv_blocks array (after - start_mv_blocks_num) that are filled by libavcodec and have to be - passed to the hardware. - - application - zeroes it on get_buffer() or after successful - ff_draw_horiz_band(). - - libavcodec - increment with one of each stored MB - */ - int filled_mv_blocks_num; - - /** Number of the next free data block; one data block consists of - 64 short values in the data_blocks array. - All blocks before this one have already been claimed by placing their - position into the corresponding block description structure field, - that are part of the mv_blocks array. - - application - zeroes it on get_buffer(). - A successful ff_draw_horiz_band() may zero it together - with start_mb_blocks_num. - - libavcodec - each decoded macroblock increases it by the number - of coded blocks it contains. - */ - int next_free_data_block_num; -}; - -/** - * @} - */ - -#endif /* AVCODEC_XVMC_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/avformat.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/avformat.h deleted file mode 100644 index d23d0e87f1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/avformat.h +++ /dev/null @@ -1,2135 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVFORMAT_AVFORMAT_H -#define AVFORMAT_AVFORMAT_H - -/** - * @file - * @ingroup libavf - * Main libavformat public API header - */ - -/** - * @defgroup libavf I/O and Muxing/Demuxing Library - * @{ - * - * Libavformat (lavf) is a library for dealing with various media container - * formats. Its main two purposes are demuxing - i.e. splitting a media file - * into component streams, and the reverse process of muxing - writing supplied - * data in a specified container format. It also has an @ref lavf_io - * "I/O module" which supports a number of protocols for accessing the data (e.g. - * file, tcp, http and others). Before using lavf, you need to call - * av_register_all() to register all compiled muxers, demuxers and protocols. - * Unless you are absolutely sure you won't use libavformat's network - * capabilities, you should also call avformat_network_init(). - * - * A supported input format is described by an AVInputFormat struct, conversely - * an output format is described by AVOutputFormat. You can iterate over all - * registered input/output formats using the av_iformat_next() / - * av_oformat_next() functions. The protocols layer is not part of the public - * API, so you can only get the names of supported protocols with the - * avio_enum_protocols() function. - * - * Main lavf structure used for both muxing and demuxing is AVFormatContext, - * which exports all information about the file being read or written. As with - * most Libavformat structures, its size is not part of public ABI, so it cannot be - * allocated on stack or directly with av_malloc(). To create an - * AVFormatContext, use avformat_alloc_context() (some functions, like - * avformat_open_input() might do that for you). - * - * Most importantly an AVFormatContext contains: - * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat - * "output" format. It is either autodetected or set by user for input; - * always set by user for output. - * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all - * elementary streams stored in the file. AVStreams are typically referred to - * using their index in this array. - * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or - * set by user for input, always set by user for output (unless you are dealing - * with an AVFMT_NOFILE format). - * - * @section lavf_options Passing options to (de)muxers - * Lavf allows to configure muxers and demuxers using the @ref avoptions - * mechanism. Generic (format-independent) libavformat options are provided by - * AVFormatContext, they can be examined from a user program by calling - * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass - * from avformat_get_class()). Private (format-specific) options are provided by - * AVFormatContext.priv_data if and only if AVInputFormat.priv_class / - * AVOutputFormat.priv_class of the corresponding format struct is non-NULL. - * Further options may be provided by the @ref AVFormatContext.pb "I/O context", - * if its AVClass is non-NULL, and the protocols layer. See the discussion on - * nesting in @ref avoptions documentation to learn how to access those. - * - * @defgroup lavf_decoding Demuxing - * @{ - * Demuxers read a media file and split it into chunks of data (@em packets). A - * @ref AVPacket "packet" contains one or more encoded frames which belongs to a - * single elementary stream. In the lavf API this process is represented by the - * avformat_open_input() function for opening a file, av_read_frame() for - * reading a single packet and finally avformat_close_input(), which does the - * cleanup. - * - * @section lavf_decoding_open Opening a media file - * The minimum information required to open a file is its URL or filename, which - * is passed to avformat_open_input(), as in the following code: - * @code - * const char *url = "in.mp3"; - * AVFormatContext *s = NULL; - * int ret = avformat_open_input(&s, url, NULL, NULL); - * if (ret < 0) - * abort(); - * @endcode - * The above code attempts to allocate an AVFormatContext, open the - * specified file (autodetecting the format) and read the header, exporting the - * information stored there into s. Some formats do not have a header or do not - * store enough information there, so it is recommended that you call the - * avformat_find_stream_info() function which tries to read and decode a few - * frames to find missing information. - * - * In some cases you might want to preallocate an AVFormatContext yourself with - * avformat_alloc_context() and do some tweaking on it before passing it to - * avformat_open_input(). One such case is when you want to use custom functions - * for reading input data instead of lavf internal I/O layer. - * To do that, create your own AVIOContext with avio_alloc_context(), passing - * your reading callbacks to it. Then set the @em pb field of your - * AVFormatContext to newly created AVIOContext. - * - * Since the format of the opened file is in general not known until after - * avformat_open_input() has returned, it is not possible to set demuxer private - * options on a preallocated context. Instead, the options should be passed to - * avformat_open_input() wrapped in an AVDictionary: - * @code - * AVDictionary *options = NULL; - * av_dict_set(&options, "video_size", "640x480", 0); - * av_dict_set(&options, "pixel_format", "rgb24", 0); - * - * if (avformat_open_input(&s, url, NULL, &options) < 0) - * abort(); - * av_dict_free(&options); - * @endcode - * This code passes the private options 'video_size' and 'pixel_format' to the - * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it - * cannot know how to interpret raw video data otherwise. If the format turns - * out to be something different than raw video, those options will not be - * recognized by the demuxer and therefore will not be applied. Such unrecognized - * options are then returned in the options dictionary (recognized options are - * consumed). The calling program can handle such unrecognized options as it - * wishes, e.g. - * @code - * AVDictionaryEntry *e; - * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) { - * fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key); - * abort(); - * } - * @endcode - * - * After you have finished reading the file, you must close it with - * avformat_close_input(). It will free everything associated with the file. - * - * @section lavf_decoding_read Reading from an opened file - * Reading data from an opened AVFormatContext is done by repeatedly calling - * av_read_frame() on it. Each call, if successful, will return an AVPacket - * containing encoded data for one AVStream, identified by - * AVPacket.stream_index. This packet may be passed straight into the libavcodec - * decoding functions avcodec_decode_video2(), avcodec_decode_audio4() or - * avcodec_decode_subtitle2() if the caller wishes to decode the data. - * - * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be - * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for - * pts/dts, 0 for duration) if the stream does not provide them. The timing - * information will be in AVStream.time_base units, i.e. it has to be - * multiplied by the timebase to convert them to seconds. - * - * If AVPacket.destruct is set on the returned packet, then the packet is - * allocated dynamically and the user may keep it indefinitely. - * Otherwise, if AVPacket.destruct is NULL, the packet data is backed by a - * static storage somewhere inside the demuxer and the packet is only valid - * until the next av_read_frame() call or closing the file. If the caller - * requires a longer lifetime, av_dup_packet() will make an av_malloc()ed copy - * of it. - * In both cases, the packet must be freed with av_free_packet() when it is no - * longer needed. - * - * @section lavf_decoding_seek Seeking - * @} - * - * @defgroup lavf_encoding Muxing - * @{ - * @} - * - * @defgroup lavf_io I/O Read/Write - * @{ - * @} - * - * @defgroup lavf_codec Demuxers - * @{ - * @defgroup lavf_codec_native Native Demuxers - * @{ - * @} - * @defgroup lavf_codec_wrappers External library wrappers - * @{ - * @} - * @} - * @defgroup lavf_protos I/O Protocols - * @{ - * @} - * @defgroup lavf_internal Internal - * @{ - * @} - * @} - * - */ - -#include -#include /* FILE */ -#include "libavcodec/avcodec.h" -#include "libavutil/dict.h" -#include "libavutil/log.h" - -#include "avio.h" -#include "libavformat/version.h" - -#if FF_API_AV_GETTIME -#include "libavutil/time.h" -#endif - -struct AVFormatContext; - - -/** - * @defgroup metadata_api Public Metadata API - * @{ - * @ingroup libavf - * The metadata API allows libavformat to export metadata tags to a client - * application when demuxing. Conversely it allows a client application to - * set metadata when muxing. - * - * Metadata is exported or set as pairs of key/value strings in the 'metadata' - * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs - * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg, - * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata - * exported by demuxers isn't checked to be valid UTF-8 in most cases. - * - * Important concepts to keep in mind: - * - Keys are unique; there can never be 2 tags with the same key. This is - * also meant semantically, i.e., a demuxer should not knowingly produce - * several keys that are literally different but semantically identical. - * E.g., key=Author5, key=Author6. In this example, all authors must be - * placed in the same tag. - * - Metadata is flat, not hierarchical; there are no subtags. If you - * want to store, e.g., the email address of the child of producer Alice - * and actor Bob, that could have key=alice_and_bobs_childs_email_address. - * - Several modifiers can be applied to the tag name. This is done by - * appending a dash character ('-') and the modifier name in the order - * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. - * - language -- a tag whose value is localized for a particular language - * is appended with the ISO 639-2/B 3-letter language code. - * For example: Author-ger=Michael, Author-eng=Mike - * The original/default language is in the unqualified "Author" tag. - * A demuxer should set a default if it sets any translated tag. - * - sorting -- a modified version of a tag that should be used for - * sorting will have '-sort' appended. E.g. artist="The Beatles", - * artist-sort="Beatles, The". - * - * - Demuxers attempt to export metadata in a generic format, however tags - * with no generic equivalents are left as they are stored in the container. - * Follows a list of generic tag names: - * - @verbatim - album -- name of the set this work belongs to - album_artist -- main creator of the set/album, if different from artist. - e.g. "Various Artists" for compilation albums. - artist -- main creator of the work - comment -- any additional description of the file. - composer -- who composed the work, if different from artist. - copyright -- name of copyright holder. - creation_time-- date when the file was created, preferably in ISO 8601. - date -- date when the work was created, preferably in ISO 8601. - disc -- number of a subset, e.g. disc in a multi-disc collection. - encoder -- name/settings of the software/hardware that produced the file. - encoded_by -- person/group who created the file. - filename -- original name of the file. - genre -- . - language -- main language in which the work is performed, preferably - in ISO 639-2 format. Multiple languages can be specified by - separating them with commas. - performer -- artist who performed the work, if different from artist. - E.g for "Also sprach Zarathustra", artist would be "Richard - Strauss" and performer "London Philharmonic Orchestra". - publisher -- name of the label/publisher. - service_name -- name of the service in broadcasting (channel name). - service_provider -- name of the service provider in broadcasting. - title -- name of the work. - track -- number of this work in the set, can be in form current/total. - variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of - @endverbatim - * - * Look in the examples section for an application example how to use the Metadata API. - * - * @} - */ - -/* packet functions */ - - -/** - * Allocate and read the payload of a packet and initialize its - * fields with default values. - * - * @param pkt packet - * @param size desired payload size - * @return >0 (read size) if OK, AVERROR_xxx otherwise - */ -int av_get_packet(AVIOContext *s, AVPacket *pkt, int size); - - -/** - * Read data and append it to the current content of the AVPacket. - * If pkt->size is 0 this is identical to av_get_packet. - * Note that this uses av_grow_packet and thus involves a realloc - * which is inefficient. Thus this function should only be used - * when there is no reasonable way to know (an upper bound of) - * the final size. - * - * @param pkt packet - * @param size amount of data to read - * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data - * will not be lost even if an error occurs. - */ -int av_append_packet(AVIOContext *s, AVPacket *pkt, int size); - -/*************************************************/ -/* fractional numbers for exact pts handling */ - -/** - * The exact value of the fractional number is: 'val + num / den'. - * num is assumed to be 0 <= num < den. - */ -typedef struct AVFrac { - int64_t val, num, den; -} AVFrac; - -/*************************************************/ -/* input/output formats */ - -struct AVCodecTag; - -/** - * This structure contains the data a format has to probe a file. - */ -typedef struct AVProbeData { - const char *filename; - unsigned char *buf; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */ - int buf_size; /**< Size of buf except extra allocated bytes */ -} AVProbeData; - -#define AVPROBE_SCORE_MAX 100 ///< maximum score, half of that is used for file-extension-based detection -#define AVPROBE_SCORE_RETRY (AVPROBE_SCORE_MAX/4) -#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer - -/// Demuxer will use avio_open, no opened file should be provided by the caller. -#define AVFMT_NOFILE 0x0001 -#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ -#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ -#define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for - raw picture data. */ -#define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ -#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */ -#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ -#define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */ -#define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */ -#define AVFMT_NODIMENSIONS 0x0800 /**< Format does not need width/height */ -#define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */ -#define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fallback to binary search via read_timestamp */ -#define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fallback to generic search */ -#define AVFMT_NO_BYTE_SEEK 0x8000 /**< Format does not allow seeking by bytes */ -#define AVFMT_ALLOW_FLUSH 0x10000 /**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */ -#if LIBAVFORMAT_VERSION_MAJOR <= 54 -#define AVFMT_TS_NONSTRICT 0x8020000 //we try to be compatible to the ABIs of ffmpeg and major forks -#else -#define AVFMT_TS_NONSTRICT 0x20000 -#endif - /**< Format does not require strictly - increasing timestamps, but they must - still be monotonic */ - -#define AVFMT_SEEK_TO_PTS 0x4000000 /**< Seeking is based on PTS */ - -/** - * @addtogroup lavf_encoding - * @{ - */ -typedef struct AVOutputFormat { - const char *name; - /** - * Descriptive name for the format, meant to be more human-readable - * than name. You should use the NULL_IF_CONFIG_SMALL() macro - * to define it. - */ - const char *long_name; - const char *mime_type; - const char *extensions; /**< comma-separated filename extensions */ - /* output support */ - enum AVCodecID audio_codec; /**< default audio codec */ - enum AVCodecID video_codec; /**< default video codec */ - enum AVCodecID subtitle_codec; /**< default subtitle codec */ - /** - * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, - * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, - * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, - * AVFMT_TS_NONSTRICT - */ - int flags; - - /** - * List of supported codec_id-codec_tag pairs, ordered by "better - * choice first". The arrays are all terminated by AV_CODEC_ID_NONE. - */ - const struct AVCodecTag * const *codec_tag; - - - const AVClass *priv_class; ///< AVClass for the private context - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVOutputFormat *next; - /** - * size of private data so that it can be allocated in the wrapper - */ - int priv_data_size; - - int (*write_header)(struct AVFormatContext *); - /** - * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, - * pkt can be NULL in order to flush data buffered in the muxer. - * When flushing, return 0 if there still is more data to flush, - * or 1 if everything was flushed and there is no more buffered - * data. - */ - int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); - int (*write_trailer)(struct AVFormatContext *); - /** - * Currently only used to set pixel format if not YUV420P. - */ - int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, - AVPacket *in, int flush); - /** - * Test if the given codec can be stored in this container. - * - * @return 1 if the codec is supported, 0 if it is not. - * A negative number if unknown. - * MKTAG('A', 'P', 'I', 'C') if the codec is only supported as AV_DISPOSITION_ATTACHED_PIC - */ - int (*query_codec)(enum AVCodecID id, int std_compliance); - - void (*get_output_timestamp)(struct AVFormatContext *s, int stream, - int64_t *dts, int64_t *wall); -} AVOutputFormat; -/** - * @} - */ - -/** - * @addtogroup lavf_decoding - * @{ - */ -typedef struct AVInputFormat { - /** - * A comma separated list of short names for the format. New names - * may be appended with a minor bump. - */ - const char *name; - - /** - * Descriptive name for the format, meant to be more human-readable - * than name. You should use the NULL_IF_CONFIG_SMALL() macro - * to define it. - */ - const char *long_name; - - /** - * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, - * AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, - * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS. - */ - int flags; - - /** - * If extensions are defined, then no probe is done. You should - * usually not use extension format guessing because it is not - * reliable enough - */ - const char *extensions; - - const struct AVCodecTag * const *codec_tag; - - const AVClass *priv_class; ///< AVClass for the private context - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVInputFormat *next; - - /** - * Raw demuxers store their codec ID here. - */ - int raw_codec_id; - - /** - * Size of private data so that it can be allocated in the wrapper. - */ - int priv_data_size; - - /** - * Tell if a given file has a chance of being parsed as this format. - * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes - * big so you do not have to check for that unless you need more. - */ - int (*read_probe)(AVProbeData *); - - /** - * Read the format header and initialize the AVFormatContext - * structure. Return 0 if OK. Only used in raw format right - * now. 'avformat_new_stream' should be called to create new streams. - */ - int (*read_header)(struct AVFormatContext *); - - /** - * Read one packet and put it in 'pkt'. pts and flags are also - * set. 'avformat_new_stream' can be called only if the flag - * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a - * background thread). - * @return 0 on success, < 0 on error. - * When returning an error, pkt must not have been allocated - * or must be freed before returning - */ - int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); - - /** - * Close the stream. The AVFormatContext and AVStreams are not - * freed by this function - */ - int (*read_close)(struct AVFormatContext *); - - /** - * Seek to a given timestamp relative to the frames in - * stream component stream_index. - * @param stream_index Must not be -1. - * @param flags Selects which direction should be preferred if no exact - * match is available. - * @return >= 0 on success (but not necessarily the new offset) - */ - int (*read_seek)(struct AVFormatContext *, - int stream_index, int64_t timestamp, int flags); - - /** - * Get the next timestamp in stream[stream_index].time_base units. - * @return the timestamp or AV_NOPTS_VALUE if an error occurred - */ - int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, - int64_t *pos, int64_t pos_limit); - - /** - * Start/resume playing - only meaningful if using a network-based format - * (RTSP). - */ - int (*read_play)(struct AVFormatContext *); - - /** - * Pause playing - only meaningful if using a network-based format - * (RTSP). - */ - int (*read_pause)(struct AVFormatContext *); - - /** - * Seek to timestamp ts. - * Seeking will be done so that the point from which all active streams - * can be presented successfully will be closest to ts and within min/max_ts. - * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. - */ - int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); -} AVInputFormat; -/** - * @} - */ - -enum AVStreamParseType { - AVSTREAM_PARSE_NONE, - AVSTREAM_PARSE_FULL, /**< full parsing and repack */ - AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ - AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */ - AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */ - AVSTREAM_PARSE_FULL_RAW=MKTAG(0,'R','A','W'), /**< full parsing and repack with timestamp and position generation by parser for raw - this assumes that each packet in the file contains no demuxer level headers and - just codec level data, otherwise position generation would fail */ -}; - -typedef struct AVIndexEntry { - int64_t pos; - int64_t timestamp; /**< - * Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available - * when seeking to this entry. That means preferable PTS on keyframe based formats. - * But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better - * is known - */ -#define AVINDEX_KEYFRAME 0x0001 - int flags:2; - int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment). - int min_distance; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */ -} AVIndexEntry; - -#define AV_DISPOSITION_DEFAULT 0x0001 -#define AV_DISPOSITION_DUB 0x0002 -#define AV_DISPOSITION_ORIGINAL 0x0004 -#define AV_DISPOSITION_COMMENT 0x0008 -#define AV_DISPOSITION_LYRICS 0x0010 -#define AV_DISPOSITION_KARAOKE 0x0020 - -/** - * Track should be used during playback by default. - * Useful for subtitle track that should be displayed - * even when user did not explicitly ask for subtitles. - */ -#define AV_DISPOSITION_FORCED 0x0040 -#define AV_DISPOSITION_HEARING_IMPAIRED 0x0080 /**< stream for hearing impaired audiences */ -#define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100 /**< stream for visual impaired audiences */ -#define AV_DISPOSITION_CLEAN_EFFECTS 0x0200 /**< stream without voice */ -/** - * The stream is stored in the file as an attached picture/"cover art" (e.g. - * APIC frame in ID3v2). The single packet associated with it will be returned - * among the first few packets read from the file unless seeking takes place. - * It can also be accessed at any time in AVStream.attached_pic. - */ -#define AV_DISPOSITION_ATTACHED_PIC 0x0400 - -/** - * Options for behavior on timestamp wrap detection. - */ -#define AV_PTS_WRAP_IGNORE 0 ///< ignore the wrap -#define AV_PTS_WRAP_ADD_OFFSET 1 ///< add the format specific offset on wrap detection -#define AV_PTS_WRAP_SUB_OFFSET -1 ///< subtract the format specific offset on wrap detection - -/** - * Stream structure. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVStream) must not be used outside libav*. - */ -typedef struct AVStream { - int index; /**< stream index in AVFormatContext */ - /** - * Format-specific stream ID. - * decoding: set by libavformat - * encoding: set by the user, replaced by libavformat if left unset - */ - int id; - /** - * Codec context associated with this stream. Allocated and freed by - * libavformat. - * - * - decoding: The demuxer exports codec information stored in the headers - * here. - * - encoding: The user sets codec information, the muxer writes it to the - * output. Mandatory fields as specified in AVCodecContext - * documentation must be set even if this AVCodecContext is - * not actually used for encoding. - */ - AVCodecContext *codec; -#if FF_API_R_FRAME_RATE - /** - * Real base framerate of the stream. - * This is the lowest framerate with which all timestamps can be - * represented accurately (it is the least common multiple of all - * framerates in the stream). Note, this value is just a guess! - * For example, if the time base is 1/90000 and all frames have either - * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. - */ - AVRational r_frame_rate; -#endif - void *priv_data; - - /** - * encoding: pts generation when outputting stream - */ - struct AVFrac pts; - - /** - * This is the fundamental unit of time (in seconds) in terms - * of which frame timestamps are represented. - * - * decoding: set by libavformat - * encoding: set by libavformat in avformat_write_header. The muxer may use the - * user-provided value of @ref AVCodecContext.time_base "codec->time_base" - * as a hint. - */ - AVRational time_base; - - /** - * Decoding: pts of the first frame of the stream in presentation order, in stream time base. - * Only set this if you are absolutely 100% sure that the value you set - * it to really is the pts of the first frame. - * This may be undefined (AV_NOPTS_VALUE). - * @note The ASF header does NOT contain a correct start_time the ASF - * demuxer must NOT set this. - */ - int64_t start_time; - - /** - * Decoding: duration of the stream, in stream time base. - * If a source file does not specify a duration, but does specify - * a bitrate, this value will be estimated from bitrate and file size. - */ - int64_t duration; - - int64_t nb_frames; ///< number of frames in this stream if known or 0 - - int disposition; /**< AV_DISPOSITION_* bit field */ - - enum AVDiscard discard; ///< Selects which packets can be discarded at will and do not need to be demuxed. - - /** - * sample aspect ratio (0 if unknown) - * - encoding: Set by user. - * - decoding: Set by libavformat. - */ - AVRational sample_aspect_ratio; - - AVDictionary *metadata; - - /** - * Average framerate - */ - AVRational avg_frame_rate; - - /** - * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet - * will contain the attached picture. - * - * decoding: set by libavformat, must not be modified by the caller. - * encoding: unused - */ - AVPacket attached_pic; - - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - - /** - * Stream information used internally by av_find_stream_info() - */ -#define MAX_STD_TIMEBASES (60*12+6) - struct { - int64_t last_dts; - int64_t duration_gcd; - int duration_count; - double (*duration_error)[2][MAX_STD_TIMEBASES]; - int64_t codec_info_duration; - int64_t codec_info_duration_fields; - int found_decoder; - - int64_t last_duration; - - /** - * Those are used for average framerate estimation. - */ - int64_t fps_first_dts; - int fps_first_dts_idx; - int64_t fps_last_dts; - int fps_last_dts_idx; - - } *info; - - int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ - - // Timestamp generation support: - /** - * Timestamp corresponding to the last dts sync point. - * - * Initialized when AVCodecParserContext.dts_sync_point >= 0 and - * a DTS is received from the underlying container. Otherwise set to - * AV_NOPTS_VALUE by default. - */ - int64_t reference_dts; - int64_t first_dts; - int64_t cur_dts; - int64_t last_IP_pts; - int last_IP_duration; - - /** - * Number of packets to buffer for codec probing - */ -#define MAX_PROBE_PACKETS 2500 - int probe_packets; - - /** - * Number of frames that have been demuxed during av_find_stream_info() - */ - int codec_info_nb_frames; - - /** - * Stream Identifier - * This is the MPEG-TS stream identifier +1 - * 0 means unknown - */ - int stream_identifier; - - int64_t interleaver_chunk_size; - int64_t interleaver_chunk_duration; - - /* av_read_frame() support */ - enum AVStreamParseType need_parsing; - struct AVCodecParserContext *parser; - - /** - * last packet in packet_buffer for this stream when muxing. - */ - struct AVPacketList *last_in_packet_buffer; - AVProbeData probe_data; -#define MAX_REORDER_DELAY 16 - int64_t pts_buffer[MAX_REORDER_DELAY+1]; - - AVIndexEntry *index_entries; /**< Only used if the format does not - support seeking natively. */ - int nb_index_entries; - unsigned int index_entries_allocated_size; - - /** - * stream probing state - * -1 -> probing finished - * 0 -> no probing requested - * rest -> perform probing with request_probe being the minimum score to accept. - * NOT PART OF PUBLIC API - */ - int request_probe; - /** - * Indicates that everything up to the next keyframe - * should be discarded. - */ - int skip_to_keyframe; - - /** - * Number of samples to skip at the start of the frame decoded from the next packet. - */ - int skip_samples; - - /** - * Number of internally decoded frames, used internally in libavformat, do not access - * its lifetime differs from info which is why it is not in that structure. - */ - int nb_decoded_frames; - - /** - * Timestamp offset added to timestamps before muxing - * NOT PART OF PUBLIC API - */ - int64_t mux_ts_offset; - - /** - * Internal data to check for wrapping of the time stamp - */ - int64_t pts_wrap_reference; - - /** - * Options for behavior, when a wrap is detected. - * - * Defined by AV_PTS_WRAP_ values. - * - * If correction is enabled, there are two possibilities: - * If the first time stamp is near the wrap point, the wrap offset - * will be subtracted, which will create negative time stamps. - * Otherwise the offset will be added. - */ - int pts_wrap_behavior; - -} AVStream; - -#define AV_PROGRAM_RUNNING 1 - -/** - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVProgram) must not be used outside libav*. - */ -typedef struct AVProgram { - int id; - int flags; - enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller - unsigned int *stream_index; - unsigned int nb_stream_indexes; - AVDictionary *metadata; - - int program_num; - int pmt_pid; - int pcr_pid; - - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - int64_t start_time; - int64_t end_time; - - int64_t pts_wrap_reference; ///< reference dts for wrap detection - int pts_wrap_behavior; ///< behavior on wrap detection -} AVProgram; - -#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present - (streams are added dynamically) */ - -typedef struct AVChapter { - int id; ///< unique ID to identify the chapter - AVRational time_base; ///< time base in which the start/end timestamps are specified - int64_t start, end; ///< chapter start/end time in time_base units - AVDictionary *metadata; -} AVChapter; - - -/** - * The duration of a video can be estimated through various ways, and this enum can be used - * to know how the duration was estimated. - */ -enum AVDurationEstimationMethod { - AVFMT_DURATION_FROM_PTS, ///< Duration accurately estimated from PTSes - AVFMT_DURATION_FROM_STREAM, ///< Duration estimated from a stream with a known duration - AVFMT_DURATION_FROM_BITRATE ///< Duration estimated from bitrate (less accurate) -}; - -/** - * Format I/O context. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVFormatContext) must not be used outside libav*, use - * avformat_alloc_context() to create an AVFormatContext. - */ -typedef struct AVFormatContext { - /** - * A class for logging and AVOptions. Set by avformat_alloc_context(). - * Exports (de)muxer private options if they exist. - */ - const AVClass *av_class; - - /** - * Can only be iformat or oformat, not both at the same time. - * - * decoding: set by avformat_open_input(). - * encoding: set by the user. - */ - struct AVInputFormat *iformat; - struct AVOutputFormat *oformat; - - /** - * Format private data. This is an AVOptions-enabled struct - * if and only if iformat/oformat.priv_class is not NULL. - */ - void *priv_data; - - /** - * I/O context. - * - * decoding: either set by the user before avformat_open_input() (then - * the user must close it manually) or set by avformat_open_input(). - * encoding: set by the user. - * - * Do NOT set this field if AVFMT_NOFILE flag is set in - * iformat/oformat.flags. In such a case, the (de)muxer will handle - * I/O in some other way and this field will be NULL. - */ - AVIOContext *pb; - - /* stream info */ - int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */ - - /** - * A list of all streams in the file. New streams are created with - * avformat_new_stream(). - * - * decoding: streams are created by libavformat in avformat_open_input(). - * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also - * appear in av_read_frame(). - * encoding: streams are created by the user before avformat_write_header(). - */ - unsigned int nb_streams; - AVStream **streams; - - char filename[1024]; /**< input or output filename */ - - /** - * Decoding: position of the first frame of the component, in - * AV_TIME_BASE fractional seconds. NEVER set this value directly: - * It is deduced from the AVStream values. - */ - int64_t start_time; - - /** - * Decoding: duration of the stream, in AV_TIME_BASE fractional - * seconds. Only set this value if you know none of the individual stream - * durations and also do not set any of them. This is deduced from the - * AVStream values if not set. - */ - int64_t duration; - - /** - * Decoding: total stream bitrate in bit/s, 0 if not - * available. Never set it directly if the file_size and the - * duration are known as FFmpeg can compute it automatically. - */ - int bit_rate; - - unsigned int packet_size; - int max_delay; - - int flags; -#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames. -#define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. -#define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input. -#define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS -#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container -#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled -#define AVFMT_FLAG_NOBUFFER 0x0040 ///< Do not buffer frames when possible -#define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it. -#define AVFMT_FLAG_DISCARD_CORRUPT 0x0100 ///< Discard frames marked corrupted -#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Enable RTP MP4A-LATM payload -#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) -#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted) -#define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Don't merge side data but keep it separate. - - /** - * decoding: size of data to probe; encoding: unused. - */ - unsigned int probesize; - - /** - * decoding: maximum time (in AV_TIME_BASE units) during which the input should - * be analyzed in avformat_find_stream_info(). - */ - int max_analyze_duration; - - const uint8_t *key; - int keylen; - - unsigned int nb_programs; - AVProgram **programs; - - /** - * Forced video codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID video_codec_id; - - /** - * Forced audio codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID audio_codec_id; - - /** - * Forced subtitle codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID subtitle_codec_id; - - /** - * Maximum amount of memory in bytes to use for the index of each stream. - * If the index exceeds this size, entries will be discarded as - * needed to maintain a smaller size. This can lead to slower or less - * accurate seeking (depends on demuxer). - * Demuxers for which a full in-memory index is mandatory will ignore - * this. - * muxing : unused - * demuxing: set by user - */ - unsigned int max_index_size; - - /** - * Maximum amount of memory in bytes to use for buffering frames - * obtained from realtime capture devices. - */ - unsigned int max_picture_buffer; - - unsigned int nb_chapters; - AVChapter **chapters; - - AVDictionary *metadata; - - /** - * Start time of the stream in real world time, in microseconds - * since the unix epoch (00:00 1st January 1970). That is, pts=0 - * in the stream was captured at this real world time. - * - encoding: Set by user. - * - decoding: Unused. - */ - int64_t start_time_realtime; - - /** - * decoding: number of frames used to probe fps - */ - int fps_probe_size; - - /** - * Error recognition; higher values will detect more errors but may - * misdetect some more or less valid parts as errors. - * - encoding: unused - * - decoding: Set by user. - */ - int error_recognition; - - /** - * Custom interrupt callbacks for the I/O layer. - * - * decoding: set by the user before avformat_open_input(). - * encoding: set by the user before avformat_write_header() - * (mainly useful for AVFMT_NOFILE formats). The callback - * should also be passed to avio_open2() if it's used to - * open the file. - */ - AVIOInterruptCB interrupt_callback; - - /** - * Flags to enable debugging. - */ - int debug; -#define FF_FDEBUG_TS 0x0001 - - /** - * Transport stream id. - * This will be moved into demuxer private options. Thus no API/ABI compatibility - */ - int ts_id; - - /** - * Audio preload in microseconds. - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int audio_preload; - - /** - * Max chunk time in microseconds. - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int max_chunk_duration; - - /** - * Max chunk size in bytes - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int max_chunk_size; - - /** - * forces the use of wallclock timestamps as pts/dts of packets - * This has undefined results in the presence of B frames. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int use_wallclock_as_timestamps; - - /** - * Avoids negative timestamps during muxing - * 0 -> allow negative timestamps - * 1 -> avoid negative timestamps - * -1 -> choose automatically (default) - * Note, this is only works when interleave_packet_per_dts is in use - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int avoid_negative_ts; - - /** - * avio flags, used to force AVIO_FLAG_DIRECT. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int avio_flags; - - /** - * The duration field can be estimated through various ways, and this field can be used - * to know how the duration was estimated. - * - encoding: unused - * - decoding: Read by user via AVOptions (NO direct access) - */ - enum AVDurationEstimationMethod duration_estimation_method; - - /** - * Skip initial bytes when opening stream - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - unsigned int skip_initial_bytes; - - /** - * Correct single timestamp overflows - * - encoding: unused - * - decoding: Set by user via AVOPtions (NO direct access) - */ - unsigned int correct_ts_overflow; - - /** - * Force seeking to any (also non key) frames. - * - encoding: unused - * - decoding: Set by user via AVOPtions (NO direct access) - */ - int seek2any; - - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - - /** - * This buffer is only needed when packets were already buffered but - * not decoded, for example to get the codec parameters in MPEG - * streams. - */ - struct AVPacketList *packet_buffer; - struct AVPacketList *packet_buffer_end; - - /* av_seek_frame() support */ - int64_t data_offset; /**< offset of the first packet */ - - /** - * Raw packets from the demuxer, prior to parsing and decoding. - * This buffer is used for buffering packets until the codec can - * be identified, as parsing cannot be done without knowing the - * codec. - */ - struct AVPacketList *raw_packet_buffer; - struct AVPacketList *raw_packet_buffer_end; - /** - * Packets split by the parser get queued here. - */ - struct AVPacketList *parse_queue; - struct AVPacketList *parse_queue_end; - /** - * Remaining size available for raw_packet_buffer, in bytes. - */ -#define RAW_PACKET_BUFFER_SIZE 2500000 - int raw_packet_buffer_remaining_size; -} AVFormatContext; - -/** - * Returns the method used to set ctx->duration. - * - * @return AVFMT_DURATION_FROM_PTS, AVFMT_DURATION_FROM_STREAM, or AVFMT_DURATION_FROM_BITRATE. - */ -enum AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method(const AVFormatContext* ctx); - -typedef struct AVPacketList { - AVPacket pkt; - struct AVPacketList *next; -} AVPacketList; - - -/** - * @defgroup lavf_core Core functions - * @ingroup libavf - * - * Functions for querying libavformat capabilities, allocating core structures, - * etc. - * @{ - */ - -/** - * Return the LIBAVFORMAT_VERSION_INT constant. - */ -unsigned avformat_version(void); - -/** - * Return the libavformat build-time configuration. - */ -const char *avformat_configuration(void); - -/** - * Return the libavformat license. - */ -const char *avformat_license(void); - -/** - * Initialize libavformat and register all the muxers, demuxers and - * protocols. If you do not call this function, then you can select - * exactly which formats you want to support. - * - * @see av_register_input_format() - * @see av_register_output_format() - */ -void av_register_all(void); - -void av_register_input_format(AVInputFormat *format); -void av_register_output_format(AVOutputFormat *format); - -/** - * Do global initialization of network components. This is optional, - * but recommended, since it avoids the overhead of implicitly - * doing the setup for each session. - * - * Calling this function will become mandatory if using network - * protocols at some major version bump. - */ -int avformat_network_init(void); - -/** - * Undo the initialization done by avformat_network_init. - */ -int avformat_network_deinit(void); - -/** - * If f is NULL, returns the first registered input format, - * if f is non-NULL, returns the next registered input format after f - * or NULL if f is the last one. - */ -AVInputFormat *av_iformat_next(AVInputFormat *f); - -/** - * If f is NULL, returns the first registered output format, - * if f is non-NULL, returns the next registered output format after f - * or NULL if f is the last one. - */ -AVOutputFormat *av_oformat_next(AVOutputFormat *f); - -/** - * Allocate an AVFormatContext. - * avformat_free_context() can be used to free the context and everything - * allocated by the framework within it. - */ -AVFormatContext *avformat_alloc_context(void); - -/** - * Free an AVFormatContext and all its streams. - * @param s context to free - */ -void avformat_free_context(AVFormatContext *s); - -/** - * Get the AVClass for AVFormatContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avformat_get_class(void); - -/** - * Add a new stream to a media file. - * - * When demuxing, it is called by the demuxer in read_header(). If the - * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also - * be called in read_packet(). - * - * When muxing, should be called by the user before avformat_write_header(). - * - * @param c If non-NULL, the AVCodecContext corresponding to the new stream - * will be initialized to use this codec. This is needed for e.g. codec-specific - * defaults to be set, so codec should be provided if it is known. - * - * @return newly created stream or NULL on error. - */ -AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c); - -AVProgram *av_new_program(AVFormatContext *s, int id); - -/** - * @} - */ - - -#if FF_API_PKT_DUMP -attribute_deprecated void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload); -attribute_deprecated void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, - int dump_payload); -#endif - -#if FF_API_ALLOC_OUTPUT_CONTEXT -/** - * @deprecated deprecated in favor of avformat_alloc_output_context2() - */ -attribute_deprecated -AVFormatContext *avformat_alloc_output_context(const char *format, - AVOutputFormat *oformat, - const char *filename); -#endif - -/** - * Allocate an AVFormatContext for an output format. - * avformat_free_context() can be used to free the context and - * everything allocated by the framework within it. - * - * @param *ctx is set to the created format context, or to NULL in - * case of failure - * @param oformat format to use for allocating the context, if NULL - * format_name and filename are used instead - * @param format_name the name of output format to use for allocating the - * context, if NULL filename is used instead - * @param filename the name of the filename to use for allocating the - * context, may be NULL - * @return >= 0 in case of success, a negative AVERROR code in case of - * failure - */ -int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat, - const char *format_name, const char *filename); - -/** - * @addtogroup lavf_decoding - * @{ - */ - -/** - * Find AVInputFormat based on the short name of the input format. - */ -AVInputFormat *av_find_input_format(const char *short_name); - -/** - * Guess the file format. - * - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - */ -AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened); - -/** - * Guess the file format. - * - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - * @param score_max A probe score larger that this is required to accept a - * detection, the variable is set to the actual detection - * score afterwards. - * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended - * to retry with a larger probe buffer. - */ -AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max); - -/** - * Guess the file format. - * - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - * @param score_ret The score of the best detection. - */ -AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret); - -/** - * Probe a bytestream to determine the input format. Each time a probe returns - * with a score that is too low, the probe buffer size is increased and another - * attempt is made. When the maximum probe size is reached, the input format - * with the highest score is returned. - * - * @param pb the bytestream to probe - * @param fmt the input format is put here - * @param filename the filename of the stream - * @param logctx the log context - * @param offset the offset within the bytestream to probe from - * @param max_probe_size the maximum probe buffer size (zero for default) - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, - const char *filename, void *logctx, - unsigned int offset, unsigned int max_probe_size); - -/** - * Open an input stream and read the header. The codecs are not opened. - * The stream must be closed with av_close_input_file(). - * - * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). - * May be a pointer to NULL, in which case an AVFormatContext is allocated by this - * function and written into ps. - * Note that a user-supplied AVFormatContext will be freed on failure. - * @param filename Name of the stream to open. - * @param fmt If non-NULL, this parameter forces a specific input format. - * Otherwise the format is autodetected. - * @param options A dictionary filled with AVFormatContext and demuxer-private options. - * On return this parameter will be destroyed and replaced with a dict containing - * options that were not found. May be NULL. - * - * @return 0 on success, a negative AVERROR on failure. - * - * @note If you want to use custom IO, preallocate the format context and set its pb field. - */ -int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options); - -attribute_deprecated -int av_demuxer_open(AVFormatContext *ic); - -#if FF_API_FORMAT_PARAMETERS -/** - * Read packets of a media file to get stream information. This - * is useful for file formats with no headers such as MPEG. This - * function also computes the real framerate in case of MPEG-2 repeat - * frame mode. - * The logical file position is not changed by this function; - * examined packets may be buffered for later processing. - * - * @param ic media file handle - * @return >=0 if OK, AVERROR_xxx on error - * @todo Let the user decide somehow what information is needed so that - * we do not waste time getting stuff the user does not need. - * - * @deprecated use avformat_find_stream_info. - */ -attribute_deprecated -int av_find_stream_info(AVFormatContext *ic); -#endif - -/** - * Read packets of a media file to get stream information. This - * is useful for file formats with no headers such as MPEG. This - * function also computes the real framerate in case of MPEG-2 repeat - * frame mode. - * The logical file position is not changed by this function; - * examined packets may be buffered for later processing. - * - * @param ic media file handle - * @param options If non-NULL, an ic.nb_streams long array of pointers to - * dictionaries, where i-th member contains options for - * codec corresponding to i-th stream. - * On return each dictionary will be filled with options that were not found. - * @return >=0 if OK, AVERROR_xxx on error - * - * @note this function isn't guaranteed to open all the codecs, so - * options being non-empty at return is a perfectly normal behavior. - * - * @todo Let the user decide somehow what information is needed so that - * we do not waste time getting stuff the user does not need. - */ -int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options); - -/** - * Find the programs which belong to a given stream. - * - * @param ic media file handle - * @param last the last found program, the search will start after this - * program, or from the beginning if it is NULL - * @param s stream index - * @return the next program which belongs to s, NULL if no program is found or - * the last program is not among the programs of ic. - */ -AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s); - -/** - * Find the "best" stream in the file. - * The best stream is determined according to various heuristics as the most - * likely to be what the user expects. - * If the decoder parameter is non-NULL, av_find_best_stream will find the - * default decoder for the stream's codec; streams for which no decoder can - * be found are ignored. - * - * @param ic media file handle - * @param type stream type: video, audio, subtitles, etc. - * @param wanted_stream_nb user-requested stream number, - * or -1 for automatic selection - * @param related_stream try to find a stream related (eg. in the same - * program) to this one, or -1 if none - * @param decoder_ret if non-NULL, returns the decoder for the - * selected stream - * @param flags flags; none are currently defined - * @return the non-negative stream number in case of success, - * AVERROR_STREAM_NOT_FOUND if no stream with the requested type - * could be found, - * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder - * @note If av_find_best_stream returns successfully and decoder_ret is not - * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. - */ -int av_find_best_stream(AVFormatContext *ic, - enum AVMediaType type, - int wanted_stream_nb, - int related_stream, - AVCodec **decoder_ret, - int flags); - -#if FF_API_READ_PACKET -/** - * @deprecated use AVFMT_FLAG_NOFILLIN | AVFMT_FLAG_NOPARSE to read raw - * unprocessed packets - * - * Read a transport packet from a media file. - * - * This function is obsolete and should never be used. - * Use av_read_frame() instead. - * - * @param s media file handle - * @param pkt is filled - * @return 0 if OK, AVERROR_xxx on error - */ -attribute_deprecated -int av_read_packet(AVFormatContext *s, AVPacket *pkt); -#endif - -/** - * Return the next frame of a stream. - * This function returns what is stored in the file, and does not validate - * that what is there are valid frames for the decoder. It will split what is - * stored in the file into frames and return one for each call. It will not - * omit invalid data between valid frames so as to give the decoder the maximum - * information possible for decoding. - * - * If pkt->destruct is NULL, then the packet is valid until the next - * av_read_frame() or until av_close_input_file(). Otherwise the packet is valid - * indefinitely. In both cases the packet must be freed with - * av_free_packet when it is no longer needed. For video, the packet contains - * exactly one frame. For audio, it contains an integer number of frames if each - * frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames - * have a variable size (e.g. MPEG audio), then it contains one frame. - * - * pkt->pts, pkt->dts and pkt->duration are always set to correct - * values in AVStream.time_base units (and guessed if the format cannot - * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format - * has B-frames, so it is better to rely on pkt->dts if you do not - * decompress the payload. - * - * @return 0 if OK, < 0 on error or end of file - */ -int av_read_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Seek to the keyframe at timestamp. - * 'timestamp' in 'stream_index'. - * @param stream_index If stream_index is (-1), a default - * stream is selected, and timestamp is automatically converted - * from AV_TIME_BASE units to the stream specific time_base. - * @param timestamp Timestamp in AVStream.time_base units - * or, if no stream is specified, in AV_TIME_BASE units. - * @param flags flags which select direction and seeking mode - * @return >= 0 on success - */ -int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, - int flags); - -/** - * Seek to timestamp ts. - * Seeking will be done so that the point from which all active streams - * can be presented successfully will be closest to ts and within min/max_ts. - * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. - * - * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and - * are the file position (this may not be supported by all demuxers). - * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames - * in the stream with stream_index (this may not be supported by all demuxers). - * Otherwise all timestamps are in units of the stream selected by stream_index - * or if stream_index is -1, in AV_TIME_BASE units. - * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as - * keyframes (this may not be supported by all demuxers). - * - * @param stream_index index of the stream which is used as time base reference - * @param min_ts smallest acceptable timestamp - * @param ts target timestamp - * @param max_ts largest acceptable timestamp - * @param flags flags - * @return >=0 on success, error code otherwise - * - * @note This is part of the new seek API which is still under construction. - * Thus do not use this yet. It may change at any time, do not expect - * ABI compatibility yet! - */ -int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); - -/** - * Start playing a network-based stream (e.g. RTSP stream) at the - * current position. - */ -int av_read_play(AVFormatContext *s); - -/** - * Pause a network-based stream (e.g. RTSP stream). - * - * Use av_read_play() to resume it. - */ -int av_read_pause(AVFormatContext *s); - -#if FF_API_CLOSE_INPUT_FILE -/** - * @deprecated use avformat_close_input() - * Close a media file (but not its codecs). - * - * @param s media file handle - */ -attribute_deprecated -void av_close_input_file(AVFormatContext *s); -#endif - -/** - * Close an opened input AVFormatContext. Free it and all its contents - * and set *s to NULL. - */ -void avformat_close_input(AVFormatContext **s); -/** - * @} - */ - -#if FF_API_NEW_STREAM -/** - * Add a new stream to a media file. - * - * Can only be called in the read_header() function. If the flag - * AVFMTCTX_NOHEADER is in the format context, then new streams - * can be added in read_packet too. - * - * @param s media file handle - * @param id file-format-dependent stream ID - */ -attribute_deprecated -AVStream *av_new_stream(AVFormatContext *s, int id); -#endif - -#if FF_API_SET_PTS_INFO -/** - * @deprecated this function is not supposed to be called outside of lavf - */ -attribute_deprecated -void av_set_pts_info(AVStream *s, int pts_wrap_bits, - unsigned int pts_num, unsigned int pts_den); -#endif - -#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward -#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes -#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes -#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number - -/** - * @addtogroup lavf_encoding - * @{ - */ -/** - * Allocate the stream private data and write the stream header to - * an output media file. - * - * @param s Media file handle, must be allocated with avformat_alloc_context(). - * Its oformat field must be set to the desired output format; - * Its pb field must be set to an already openened AVIOContext. - * @param options An AVDictionary filled with AVFormatContext and muxer-private options. - * On return this parameter will be destroyed and replaced with a dict containing - * options that were not found. May be NULL. - * - * @return 0 on success, negative AVERROR on failure. - * - * @see av_opt_find, av_dict_set, avio_open, av_oformat_next. - */ -int avformat_write_header(AVFormatContext *s, AVDictionary **options); - -/** - * Write a packet to an output media file. - * - * The packet shall contain one audio or video frame. - * The packet must be correctly interleaved according to the container - * specification, if not then av_interleaved_write_frame must be used. - * - * @param s media file handle - * @param pkt The packet, which contains the stream_index, buf/buf_size, - * dts/pts, ... - * This can be NULL (at any time, not just at the end), in - * order to immediately flush data buffered within the muxer, - * for muxers that buffer up data internally before writing it - * to the output. - * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush - */ -int av_write_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Write a packet to an output media file ensuring correct interleaving. - * - * The packet must contain one audio or video frame. - * If the packets are already correctly interleaved, the application should - * call av_write_frame() instead as it is slightly faster. It is also important - * to keep in mind that completely non-interleaved input will need huge amounts - * of memory to interleave with this, so it is preferable to interleave at the - * demuxer level. - * - * @param s media file handle - * @param pkt The packet containing the data to be written. Libavformat takes - * ownership of the data and will free it when it sees fit using the packet's - * @ref AVPacket.destruct "destruct" field. The caller must not access the data - * after this function returns, as it may already be freed. - * This can be NULL (at any time, not just at the end), to flush the - * interleaving queues. - * Packet's @ref AVPacket.stream_index "stream_index" field must be set to the - * index of the corresponding stream in @ref AVFormatContext.streams - * "s.streams". - * It is very strongly recommended that timing information (@ref AVPacket.pts - * "pts", @ref AVPacket.dts "dts" @ref AVPacket.duration "duration") is set to - * correct values. - * - * @return 0 on success, a negative AVERROR on error. - */ -int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); - -#if FF_API_INTERLEAVE_PACKET -/** - * @deprecated this function was never meant to be called by the user - * programs. - */ -attribute_deprecated -int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, - AVPacket *pkt, int flush); -#endif - -/** - * Write the stream trailer to an output media file and free the - * file private data. - * - * May only be called after a successful call to avformat_write_header. - * - * @param s media file handle - * @return 0 if OK, AVERROR_xxx on error - */ -int av_write_trailer(AVFormatContext *s); - -/** - * Return the output format in the list of registered output formats - * which best matches the provided parameters, or return NULL if - * there is no match. - * - * @param short_name if non-NULL checks if short_name matches with the - * names of the registered formats - * @param filename if non-NULL checks if filename terminates with the - * extensions of the registered formats - * @param mime_type if non-NULL checks if mime_type matches with the - * MIME type of the registered formats - */ -AVOutputFormat *av_guess_format(const char *short_name, - const char *filename, - const char *mime_type); - -/** - * Guess the codec ID based upon muxer and filename. - */ -enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, - const char *filename, const char *mime_type, - enum AVMediaType type); - -/** - * Get timing information for the data currently output. - * The exact meaning of "currently output" depends on the format. - * It is mostly relevant for devices that have an internal buffer and/or - * work in real time. - * @param s media file handle - * @param stream stream in the media file - * @param[out] dts DTS of the last packet output for the stream, in stream - * time_base units - * @param[out] wall absolute time when that packet whas output, - * in microsecond - * @return 0 if OK, AVERROR(ENOSYS) if the format does not support it - * Note: some formats or devices may not allow to measure dts and wall - * atomically. - */ -int av_get_output_timestamp(struct AVFormatContext *s, int stream, - int64_t *dts, int64_t *wall); - - -/** - * @} - */ - - -/** - * @defgroup lavf_misc Utility functions - * @ingroup libavf - * @{ - * - * Miscellaneous utility functions related to both muxing and demuxing - * (or neither). - */ - -/** - * Send a nice hexadecimal dump of a buffer to the specified file stream. - * - * @param f The file stream pointer where the dump should be sent to. - * @param buf buffer - * @param size buffer size - * - * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 - */ -void av_hex_dump(FILE *f, const uint8_t *buf, int size); - -/** - * Send a nice hexadecimal dump of a buffer to the log. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message, lower values signifying - * higher importance. - * @param buf buffer - * @param size buffer size - * - * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 - */ -void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size); - -/** - * Send a nice dump of a packet to the specified file stream. - * - * @param f The file stream pointer where the dump should be sent to. - * @param pkt packet to dump - * @param dump_payload True if the payload must be displayed, too. - * @param st AVStream that the packet belongs to - */ -void av_pkt_dump2(FILE *f, AVPacket *pkt, int dump_payload, AVStream *st); - - -/** - * Send a nice dump of a packet to the log. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message, lower values signifying - * higher importance. - * @param pkt packet to dump - * @param dump_payload True if the payload must be displayed, too. - * @param st AVStream that the packet belongs to - */ -void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload, - AVStream *st); - -/** - * Get the AVCodecID for the given codec tag tag. - * If no codec id is found returns AV_CODEC_ID_NONE. - * - * @param tags list of supported codec_id-codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - */ -enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); - -/** - * Get the codec tag for the given codec id id. - * If no codec tag is found returns 0. - * - * @param tags list of supported codec_id-codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - */ -unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id); - -/** - * Get the codec tag for the given codec id. - * - * @param tags list of supported codec_id - codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - * @param id codec id that should be searched for in the list - * @param tag A pointer to the found tag - * @return 0 if id was not found in tags, > 0 if it was found - */ -int av_codec_get_tag2(const struct AVCodecTag * const *tags, enum AVCodecID id, - unsigned int *tag); - -int av_find_default_stream_index(AVFormatContext *s); - -/** - * Get the index for a specific timestamp. - * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond - * to the timestamp which is <= the requested one, if backward - * is 0, then it will be >= - * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise - * @return < 0 if no such timestamp could be found - */ -int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); - -/** - * Add an index entry into a sorted list. Update the entry if the list - * already contains it. - * - * @param timestamp timestamp in the time base of the given stream - */ -int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, - int size, int distance, int flags); - - -/** - * Split a URL string into components. - * - * The pointers to buffers for storing individual components may be null, - * in order to ignore that component. Buffers for components not found are - * set to empty strings. If the port is not found, it is set to a negative - * value. - * - * @param proto the buffer for the protocol - * @param proto_size the size of the proto buffer - * @param authorization the buffer for the authorization - * @param authorization_size the size of the authorization buffer - * @param hostname the buffer for the host name - * @param hostname_size the size of the hostname buffer - * @param port_ptr a pointer to store the port number in - * @param path the buffer for the path - * @param path_size the size of the path buffer - * @param url the URL to split - */ -void av_url_split(char *proto, int proto_size, - char *authorization, int authorization_size, - char *hostname, int hostname_size, - int *port_ptr, - char *path, int path_size, - const char *url); - - -void av_dump_format(AVFormatContext *ic, - int index, - const char *url, - int is_output); - -/** - * Return in 'buf' the path with '%d' replaced by a number. - * - * Also handles the '%0nd' format where 'n' is the total number - * of digits and '%%'. - * - * @param buf destination buffer - * @param buf_size destination buffer size - * @param path numbered sequence string - * @param number frame number - * @return 0 if OK, -1 on format error - */ -int av_get_frame_filename(char *buf, int buf_size, - const char *path, int number); - -/** - * Check whether filename actually is a numbered sequence generator. - * - * @param filename possible numbered sequence string - * @return 1 if a valid numbered sequence string, 0 otherwise - */ -int av_filename_number_test(const char *filename); - -/** - * Generate an SDP for an RTP session. - * - * Note, this overwrites the id values of AVStreams in the muxer contexts - * for getting unique dynamic payload types. - * - * @param ac array of AVFormatContexts describing the RTP streams. If the - * array is composed by only one context, such context can contain - * multiple AVStreams (one AVStream per RTP stream). Otherwise, - * all the contexts in the array (an AVCodecContext per RTP stream) - * must contain only one AVStream. - * @param n_files number of AVCodecContexts contained in ac - * @param buf buffer where the SDP will be stored (must be allocated by - * the caller) - * @param size the size of the buffer - * @return 0 if OK, AVERROR_xxx on error - */ -int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size); - -/** - * Return a positive value if the given filename has one of the given - * extensions, 0 otherwise. - * - * @param extensions a comma-separated list of filename extensions - */ -int av_match_ext(const char *filename, const char *extensions); - -/** - * Test if the given container can store a codec. - * - * @param std_compliance standards compliance level, one of FF_COMPLIANCE_* - * - * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. - * A negative number if this information is not available. - */ -int avformat_query_codec(AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance); - -/** - * @defgroup riff_fourcc RIFF FourCCs - * @{ - * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are - * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the - * following code: - * @code - * uint32_t tag = MKTAG('H', '2', '6', '4'); - * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 }; - * enum AVCodecID id = av_codec_get_id(table, tag); - * @endcode - */ -/** - * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID. - */ -const struct AVCodecTag *avformat_get_riff_video_tags(void); -/** - * @return the table mapping RIFF FourCCs for audio to AVCodecID. - */ -const struct AVCodecTag *avformat_get_riff_audio_tags(void); - -/** - * @} - */ - -/** - * Guess the sample aspect ratio of a frame, based on both the stream and the - * frame aspect ratio. - * - * Since the frame aspect ratio is set by the codec but the stream aspect ratio - * is set by the demuxer, these two may not be equal. This function tries to - * return the value that you should use if you would like to display the frame. - * - * Basic logic is to use the stream aspect ratio if it is set to something sane - * otherwise use the frame aspect ratio. This way a container setting, which is - * usually easy to modify can override the coded value in the frames. - * - * @param format the format context which the stream is part of - * @param stream the stream which the frame is part of - * @param frame the frame with the aspect ratio to be determined - * @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea - */ -AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame); - -/** - * Check if the stream st contained in s is matched by the stream specifier - * spec. - * - * See the "stream specifiers" chapter in the documentation for the syntax - * of spec. - * - * @return >0 if st is matched by spec; - * 0 if st is not matched by spec; - * AVERROR code if spec is invalid - * - * @note A stream specifier can match several streams in the format. - */ -int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, - const char *spec); - -void avformat_queue_attached_pictures(AVFormatContext *s); - - -/** - * @} - */ - -#endif /* AVFORMAT_AVFORMAT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/avio.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/avio.h deleted file mode 100644 index 17b341d6c7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/avio.h +++ /dev/null @@ -1,475 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef AVFORMAT_AVIO_H -#define AVFORMAT_AVIO_H - -/** - * @file - * @ingroup lavf_io - * Buffered I/O operations - */ - -#include - -#include "libavutil/common.h" -#include "libavutil/dict.h" -#include "libavutil/log.h" - -#include "libavformat/version.h" - - -#define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */ - -/** - * Callback for checking whether to abort blocking functions. - * AVERROR_EXIT is returned in this case by the interrupted - * function. During blocking operations, callback is called with - * opaque as parameter. If the callback returns 1, the - * blocking operation will be aborted. - * - * No members can be added to this struct without a major bump, if - * new elements have been added after this struct in AVFormatContext - * or AVIOContext. - */ -typedef struct AVIOInterruptCB { - int (*callback)(void*); - void *opaque; -} AVIOInterruptCB; - -/** - * Bytestream IO Context. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVIOContext) must not be used outside libav*. - * - * @note None of the function pointers in AVIOContext should be called - * directly, they should only be set by the client application - * when implementing custom I/O. Normally these are set to the - * function pointers specified in avio_alloc_context() - */ -typedef struct AVIOContext { - /** - * A class for private options. - * - * If this AVIOContext is created by avio_open2(), av_class is set and - * passes the options down to protocols. - * - * If this AVIOContext is manually allocated, then av_class may be set by - * the caller. - * - * warning -- this field can be NULL, be sure to not pass this AVIOContext - * to any av_opt_* functions in that case. - */ - const AVClass *av_class; - unsigned char *buffer; /**< Start of the buffer. */ - int buffer_size; /**< Maximum buffer size */ - unsigned char *buf_ptr; /**< Current position in the buffer */ - unsigned char *buf_end; /**< End of the data, may be less than - buffer+buffer_size if the read function returned - less data than requested, e.g. for streams where - no more data has been received yet. */ - void *opaque; /**< A private pointer, passed to the read/write/seek/... - functions. */ - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); - int64_t (*seek)(void *opaque, int64_t offset, int whence); - int64_t pos; /**< position in the file of the current buffer */ - int must_flush; /**< true if the next seek should flush */ - int eof_reached; /**< true if eof reached */ - int write_flag; /**< true if open for writing */ - int max_packet_size; - unsigned long checksum; - unsigned char *checksum_ptr; - unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); - int error; /**< contains the error code or 0 if no error happened */ - /** - * Pause or resume playback for network streaming protocols - e.g. MMS. - */ - int (*read_pause)(void *opaque, int pause); - /** - * Seek to a given timestamp in stream with the specified stream_index. - * Needed for some network streaming protocols which don't support seeking - * to byte position. - */ - int64_t (*read_seek)(void *opaque, int stream_index, - int64_t timestamp, int flags); - /** - * A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable. - */ - int seekable; - - /** - * max filesize, used to limit allocations - * This field is internal to libavformat and access from outside is not allowed. - */ - int64_t maxsize; - - /** - * avio_read and avio_write should if possible be satisfied directly - * instead of going through a buffer, and avio_seek will always - * call the underlying seek function directly. - */ - int direct; - - /** - * Bytes read statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int64_t bytes_read; - - /** - * seek statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int seek_count; -} AVIOContext; - -/* unbuffered I/O */ - -/** - * Return AVIO_FLAG_* access flags corresponding to the access permissions - * of the resource in url, or a negative value corresponding to an - * AVERROR code in case of failure. The returned access flags are - * masked by the value in flags. - * - * @note This function is intrinsically unsafe, in the sense that the - * checked resource may change its existence or permission status from - * one call to another. Thus you should not trust the returned value, - * unless you are sure that no other processes are accessing the - * checked resource. - */ -int avio_check(const char *url, int flags); - -/** - * Allocate and initialize an AVIOContext for buffered I/O. It must be later - * freed with av_free(). - * - * @param buffer Memory block for input/output operations via AVIOContext. - * The buffer must be allocated with av_malloc() and friends. - * @param buffer_size The buffer size is very important for performance. - * For protocols with fixed blocksize it should be set to this blocksize. - * For others a typical size is a cache page, e.g. 4kb. - * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. - * @param opaque An opaque pointer to user-specific data. - * @param read_packet A function for refilling the buffer, may be NULL. - * @param write_packet A function for writing the buffer contents, may be NULL. - * The function may not change the input buffers content. - * @param seek A function for seeking to specified byte position, may be NULL. - * - * @return Allocated AVIOContext or NULL on failure. - */ -AVIOContext *avio_alloc_context( - unsigned char *buffer, - int buffer_size, - int write_flag, - void *opaque, - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), - int64_t (*seek)(void *opaque, int64_t offset, int whence)); - -void avio_w8(AVIOContext *s, int b); -void avio_write(AVIOContext *s, const unsigned char *buf, int size); -void avio_wl64(AVIOContext *s, uint64_t val); -void avio_wb64(AVIOContext *s, uint64_t val); -void avio_wl32(AVIOContext *s, unsigned int val); -void avio_wb32(AVIOContext *s, unsigned int val); -void avio_wl24(AVIOContext *s, unsigned int val); -void avio_wb24(AVIOContext *s, unsigned int val); -void avio_wl16(AVIOContext *s, unsigned int val); -void avio_wb16(AVIOContext *s, unsigned int val); - -/** - * Write a NULL-terminated string. - * @return number of bytes written. - */ -int avio_put_str(AVIOContext *s, const char *str); - -/** - * Convert an UTF-8 string to UTF-16LE and write it. - * @return number of bytes written. - */ -int avio_put_str16le(AVIOContext *s, const char *str); - -/** - * Passing this as the "whence" parameter to a seek function causes it to - * return the filesize without seeking anywhere. Supporting this is optional. - * If it is not supported then the seek function will return <0. - */ -#define AVSEEK_SIZE 0x10000 - -/** - * Oring this flag as into the "whence" parameter to a seek function causes it to - * seek by any means (like reopening and linear reading) or other normally unreasonble - * means that can be extreemly slow. - * This may be ignored by the seek code. - */ -#define AVSEEK_FORCE 0x20000 - -/** - * fseek() equivalent for AVIOContext. - * @return new position or AVERROR. - */ -int64_t avio_seek(AVIOContext *s, int64_t offset, int whence); - -/** - * Skip given number of bytes forward - * @return new position or AVERROR. - */ -int64_t avio_skip(AVIOContext *s, int64_t offset); - -/** - * ftell() equivalent for AVIOContext. - * @return position or AVERROR. - */ -static av_always_inline int64_t avio_tell(AVIOContext *s) -{ - return avio_seek(s, 0, SEEK_CUR); -} - -/** - * Get the filesize. - * @return filesize or AVERROR - */ -int64_t avio_size(AVIOContext *s); - -/** - * feof() equivalent for AVIOContext. - * @return non zero if and only if end of file - */ -int url_feof(AVIOContext *s); - -/** @warning currently size is limited */ -int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3); - -/** - * Force flushing of buffered data to the output s. - * - * Force the buffered data to be immediately written to the output, - * without to wait to fill the internal buffer. - */ -void avio_flush(AVIOContext *s); - -/** - * Read size bytes from AVIOContext into buf. - * @return number of bytes read or AVERROR - */ -int avio_read(AVIOContext *s, unsigned char *buf, int size); - -/** - * @name Functions for reading from AVIOContext - * @{ - * - * @note return 0 if EOF, so you cannot use it if EOF handling is - * necessary - */ -int avio_r8 (AVIOContext *s); -unsigned int avio_rl16(AVIOContext *s); -unsigned int avio_rl24(AVIOContext *s); -unsigned int avio_rl32(AVIOContext *s); -uint64_t avio_rl64(AVIOContext *s); -unsigned int avio_rb16(AVIOContext *s); -unsigned int avio_rb24(AVIOContext *s); -unsigned int avio_rb32(AVIOContext *s); -uint64_t avio_rb64(AVIOContext *s); -/** - * @} - */ - -/** - * Read a string from pb into buf. The reading will terminate when either - * a NULL character was encountered, maxlen bytes have been read, or nothing - * more can be read from pb. The result is guaranteed to be NULL-terminated, it - * will be truncated if buf is too small. - * Note that the string is not interpreted or validated in any way, it - * might get truncated in the middle of a sequence for multi-byte encodings. - * - * @return number of bytes read (is always <= maxlen). - * If reading ends on EOF or error, the return value will be one more than - * bytes actually read. - */ -int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen); - -/** - * Read a UTF-16 string from pb and convert it to UTF-8. - * The reading will terminate when either a null or invalid character was - * encountered or maxlen bytes have been read. - * @return number of bytes read (is always <= maxlen) - */ -int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen); -int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); - - -/** - * @name URL open modes - * The flags argument to avio_open must be one of the following - * constants, optionally ORed with other flags. - * @{ - */ -#define AVIO_FLAG_READ 1 /**< read-only */ -#define AVIO_FLAG_WRITE 2 /**< write-only */ -#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */ -/** - * @} - */ - -/** - * Use non-blocking mode. - * If this flag is set, operations on the context will return - * AVERROR(EAGAIN) if they can not be performed immediately. - * If this flag is not set, operations on the context will never return - * AVERROR(EAGAIN). - * Note that this flag does not affect the opening/connecting of the - * context. Connecting a protocol will always block if necessary (e.g. on - * network protocols) but never hang (e.g. on busy devices). - * Warning: non-blocking protocols is work-in-progress; this flag may be - * silently ignored. - */ -#define AVIO_FLAG_NONBLOCK 8 - -/** - * Use direct mode. - * avio_read and avio_write should if possible be satisfied directly - * instead of going through a buffer, and avio_seek will always - * call the underlying seek function directly. - */ -#define AVIO_FLAG_DIRECT 0x8000 - -/** - * Create and initialize a AVIOContext for accessing the - * resource indicated by url. - * @note When the resource indicated by url has been opened in - * read+write mode, the AVIOContext can be used only for writing. - * - * @param s Used to return the pointer to the created AVIOContext. - * In case of failure the pointed to value is set to NULL. - * @param flags flags which control how the resource indicated by url - * is to be opened - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code in case of failure - */ -int avio_open(AVIOContext **s, const char *url, int flags); - -/** - * Create and initialize a AVIOContext for accessing the - * resource indicated by url. - * @note When the resource indicated by url has been opened in - * read+write mode, the AVIOContext can be used only for writing. - * - * @param s Used to return the pointer to the created AVIOContext. - * In case of failure the pointed to value is set to NULL. - * @param flags flags which control how the resource indicated by url - * is to be opened - * @param int_cb an interrupt callback to be used at the protocols level - * @param options A dictionary filled with protocol-private options. On return - * this parameter will be destroyed and replaced with a dict containing options - * that were not found. May be NULL. - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code in case of failure - */ -int avio_open2(AVIOContext **s, const char *url, int flags, - const AVIOInterruptCB *int_cb, AVDictionary **options); - -/** - * Close the resource accessed by the AVIOContext s and free it. - * This function can only be used if s was opened by avio_open(). - * - * The internal buffer is automatically flushed before closing the - * resource. - * - * @return 0 on success, an AVERROR < 0 on error. - * @see avio_closep - */ -int avio_close(AVIOContext *s); - -/** - * Close the resource accessed by the AVIOContext *s, free it - * and set the pointer pointing to it to NULL. - * This function can only be used if s was opened by avio_open(). - * - * The internal buffer is automatically flushed before closing the - * resource. - * - * @return 0 on success, an AVERROR < 0 on error. - * @see avio_close - */ -int avio_closep(AVIOContext **s); - - -/** - * Open a write only memory stream. - * - * @param s new IO context - * @return zero if no error. - */ -int avio_open_dyn_buf(AVIOContext **s); - -/** - * Return the written size and a pointer to the buffer. The buffer - * must be freed with av_free(). - * Padding of FF_INPUT_BUFFER_PADDING_SIZE is added to the buffer. - * - * @param s IO context - * @param pbuffer pointer to a byte buffer - * @return the length of the byte buffer - */ -int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); - -/** - * Iterate through names of available protocols. - * - * @param opaque A private pointer representing current protocol. - * It must be a pointer to NULL on first iteration and will - * be updated by successive calls to avio_enum_protocols. - * @param output If set to 1, iterate over output protocols, - * otherwise over input protocols. - * - * @return A static string containing the name of current protocol or NULL - */ -const char *avio_enum_protocols(void **opaque, int output); - -/** - * Pause and resume playing - only meaningful if using a network streaming - * protocol (e.g. MMS). - * @param pause 1 for pause, 0 for resume - */ -int avio_pause(AVIOContext *h, int pause); - -/** - * Seek to a given timestamp relative to some component stream. - * Only meaningful if using a network streaming protocol (e.g. MMS.). - * @param stream_index The stream index that the timestamp is relative to. - * If stream_index is (-1) the timestamp should be in AV_TIME_BASE - * units from the beginning of the presentation. - * If a stream_index >= 0 is used and the protocol does not support - * seeking based on component streams, the call will fail. - * @param timestamp timestamp in AVStream.time_base units - * or if there is no stream specified then in AV_TIME_BASE units. - * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE - * and AVSEEK_FLAG_ANY. The protocol may silently ignore - * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will - * fail if used and not supported. - * @return >= 0 on success - * @see AVInputFormat::read_seek - */ -int64_t avio_seek_time(AVIOContext *h, int stream_index, - int64_t timestamp, int flags); - -#endif /* AVFORMAT_AVIO_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/version.h deleted file mode 100644 index 672b9003bf..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavformat/version.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Version macros. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVFORMAT_VERSION_H -#define AVFORMAT_VERSION_H - -/** - * @file - * @ingroup libavf - * Libavformat version macros - */ - -#include "libavutil/avutil.h" - -#define LIBAVFORMAT_VERSION_MAJOR 54 -#define LIBAVFORMAT_VERSION_MINOR 63 -#define LIBAVFORMAT_VERSION_MICRO 104 - -#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ - LIBAVFORMAT_VERSION_MINOR, \ - LIBAVFORMAT_VERSION_MICRO) -#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ - LIBAVFORMAT_VERSION_MINOR, \ - LIBAVFORMAT_VERSION_MICRO) -#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT - -#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - */ - -#ifndef FF_API_OLD_AVIO -#define FF_API_OLD_AVIO (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_PKT_DUMP -#define FF_API_PKT_DUMP (LIBAVFORMAT_VERSION_MAJOR < 54) -#endif -#ifndef FF_API_ALLOC_OUTPUT_CONTEXT -#define FF_API_ALLOC_OUTPUT_CONTEXT (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_FORMAT_PARAMETERS -#define FF_API_FORMAT_PARAMETERS (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_NEW_STREAM -#define FF_API_NEW_STREAM (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_SET_PTS_INFO -#define FF_API_SET_PTS_INFO (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_CLOSE_INPUT_FILE -#define FF_API_CLOSE_INPUT_FILE (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_APPLEHTTP_PROTO -#define FF_API_APPLEHTTP_PROTO (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_READ_PACKET -#define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_INTERLEAVE_PACKET -#define FF_API_INTERLEAVE_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_AV_GETTIME -#define FF_API_AV_GETTIME (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_R_FRAME_RATE -#define FF_API_R_FRAME_RATE (LIBAVFORMAT_VERSION_MAJOR < 55) -#endif - -#endif /* AVFORMAT_VERSION_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/adler32.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/adler32.h deleted file mode 100644 index e926ef6cc2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/adler32.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * copyright (c) 2006 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_ADLER32_H -#define AVUTIL_ADLER32_H - -#include -#include "attributes.h" - -/** - * @ingroup lavu_crypto - * Calculate the Adler32 checksum of a buffer. - * - * Passing the return value to a subsequent av_adler32_update() call - * allows the checksum of multiple buffers to be calculated as though - * they were concatenated. - * - * @param adler initial checksum value - * @param buf pointer to input buffer - * @param len size of input buffer - * @return updated checksum - */ -unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, - unsigned int len) av_pure; - -#endif /* AVUTIL_ADLER32_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/aes.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/aes.h deleted file mode 100644 index 09efbda107..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/aes.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * copyright (c) 2007 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AES_H -#define AVUTIL_AES_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_aes AES - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_aes_size; - -struct AVAES; - -/** - * Allocate an AVAES context. - */ -struct AVAES *av_aes_alloc(void); - -/** - * Initialize an AVAES context. - * @param key_bits 128, 192 or 256 - * @param decrypt 0 for encryption, 1 for decryption - */ -int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * @param count number of 16 byte blocks - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param iv initialization vector for CBC mode, if NULL then ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_AES_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/attributes.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/attributes.h deleted file mode 100644 index 64b46f68f0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/attributes.h +++ /dev/null @@ -1,154 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Macro definitions for various function/variable attributes - */ - -#ifndef AVUTIL_ATTRIBUTES_H -#define AVUTIL_ATTRIBUTES_H - -#ifdef __GNUC__ -# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y) -#else -# define AV_GCC_VERSION_AT_LEAST(x,y) 0 -#endif - -#ifndef av_always_inline -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_always_inline __attribute__((always_inline)) inline -#elif defined(_MSC_VER) -# define av_always_inline __forceinline -#else -# define av_always_inline inline -#endif -#endif - -#ifndef av_extern_inline -#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__) -# define av_extern_inline extern inline -#else -# define av_extern_inline inline -#endif -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_noinline __attribute__((noinline)) -#else -# define av_noinline -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_pure __attribute__((pure)) -#else -# define av_pure -#endif - -#ifndef av_restrict -#define av_restrict restrict -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,6) -# define av_const __attribute__((const)) -#else -# define av_const -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) -# define av_cold __attribute__((cold)) -#else -# define av_cold -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,1) -# define av_flatten __attribute__((flatten)) -#else -# define av_flatten -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define attribute_deprecated __attribute__((deprecated)) -#else -# define attribute_deprecated -#endif - -/** - * Disable warnings about deprecated features - * This is useful for sections of code kept for backward compatibility and - * scheduled for removal. - */ -#ifndef AV_NOWARN_DEPRECATED -#if AV_GCC_VERSION_AT_LEAST(4,6) -# define AV_NOWARN_DEPRECATED(code) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \ - code \ - _Pragma("GCC diagnostic pop") -#else -# define AV_NOWARN_DEPRECATED(code) code -#endif -#endif - - -#if defined(__GNUC__) -# define av_unused __attribute__((unused)) -#else -# define av_unused -#endif - -/** - * Mark a variable as used and prevent the compiler from optimizing it - * away. This is useful for variables accessed only from inline - * assembler without the compiler being aware. - */ -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_used __attribute__((used)) -#else -# define av_used -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,3) -# define av_alias __attribute__((may_alias)) -#else -# define av_alias -#endif - -#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__clang__) -# define av_uninit(x) x=x -#else -# define av_uninit(x) x -#endif - -#ifdef __GNUC__ -# define av_builtin_constant_p __builtin_constant_p -# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) -#else -# define av_builtin_constant_p(x) 0 -# define av_printf_format(fmtpos, attrpos) -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,5) -# define av_noreturn __attribute__((noreturn)) -#else -# define av_noreturn -#endif - -#endif /* AVUTIL_ATTRIBUTES_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/audio_fifo.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/audio_fifo.h deleted file mode 100644 index 8c76388255..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/audio_fifo.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Audio FIFO - * Copyright (c) 2012 Justin Ruggles - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Audio FIFO Buffer - */ - -#ifndef AVUTIL_AUDIO_FIFO_H -#define AVUTIL_AUDIO_FIFO_H - -#include "avutil.h" -#include "fifo.h" -#include "samplefmt.h" - -/** - * @addtogroup lavu_audio - * @{ - */ - -/** - * Context for an Audio FIFO Buffer. - * - * - Operates at the sample level rather than the byte level. - * - Supports multiple channels with either planar or packed sample format. - * - Automatic reallocation when writing to a full buffer. - */ -typedef struct AVAudioFifo AVAudioFifo; - -/** - * Free an AVAudioFifo. - * - * @param af AVAudioFifo to free - */ -void av_audio_fifo_free(AVAudioFifo *af); - -/** - * Allocate an AVAudioFifo. - * - * @param sample_fmt sample format - * @param channels number of channels - * @param nb_samples initial allocation size, in samples - * @return newly allocated AVAudioFifo, or NULL on error - */ -AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels, - int nb_samples); - -/** - * Reallocate an AVAudioFifo. - * - * @param af AVAudioFifo to reallocate - * @param nb_samples new allocation size, in samples - * @return 0 if OK, or negative AVERROR code on failure - */ -int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples); - -/** - * Write data to an AVAudioFifo. - * - * The AVAudioFifo will be reallocated automatically if the available space - * is less than nb_samples. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param af AVAudioFifo to write to - * @param data audio data plane pointers - * @param nb_samples number of samples to write - * @return number of samples actually written, or negative AVERROR - * code on failure. - */ -int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples); - -/** - * Read data from an AVAudioFifo. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param af AVAudioFifo to read from - * @param data audio data plane pointers - * @param nb_samples number of samples to read - * @return number of samples actually read, or negative AVERROR code - * on failure. - */ -int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples); - -/** - * Drain data from an AVAudioFifo. - * - * Removes the data without reading it. - * - * @param af AVAudioFifo to drain - * @param nb_samples number of samples to drain - * @return 0 if OK, or negative AVERROR code on failure - */ -int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples); - -/** - * Reset the AVAudioFifo buffer. - * - * This empties all data in the buffer. - * - * @param af AVAudioFifo to reset - */ -void av_audio_fifo_reset(AVAudioFifo *af); - -/** - * Get the current number of samples in the AVAudioFifo available for reading. - * - * @param af the AVAudioFifo to query - * @return number of samples available for reading - */ -int av_audio_fifo_size(AVAudioFifo *af); - -/** - * Get the current number of samples in the AVAudioFifo available for writing. - * - * @param af the AVAudioFifo to query - * @return number of samples available for writing - */ -int av_audio_fifo_space(AVAudioFifo *af); - -/** - * @} - */ - -#endif /* AVUTIL_AUDIO_FIFO_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/audioconvert.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/audioconvert.h deleted file mode 100644 index 300a67cd3d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/audioconvert.h +++ /dev/null @@ -1,6 +0,0 @@ - -#include "version.h" - -#if FF_API_AUDIOCONVERT -#include "channel_layout.h" -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avassert.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avassert.h deleted file mode 100644 index 41f5e0eea7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avassert.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * copyright (c) 2010 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * simple assert() macros that are a bit more flexible than ISO C assert(). - * @author Michael Niedermayer - */ - -#ifndef AVUTIL_AVASSERT_H -#define AVUTIL_AVASSERT_H - -#include -#include "avutil.h" -#include "log.h" - -/** - * assert() equivalent, that is always enabled. - */ -#define av_assert0(cond) do { \ - if (!(cond)) { \ - av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \ - AV_STRINGIFY(cond), __FILE__, __LINE__); \ - abort(); \ - } \ -} while (0) - - -/** - * assert() equivalent, that does not lie in speed critical code. - * These asserts() thus can be enabled without fearing speedloss. - */ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0 -#define av_assert1(cond) av_assert0(cond) -#else -#define av_assert1(cond) ((void)0) -#endif - - -/** - * assert() equivalent, that does lie in speed critical code. - */ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 -#define av_assert2(cond) av_assert0(cond) -#else -#define av_assert2(cond) ((void)0) -#endif - -#endif /* AVUTIL_AVASSERT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avconfig.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avconfig.h deleted file mode 100644 index 2ec333d158..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avconfig.h +++ /dev/null @@ -1,7 +0,0 @@ -/* Generated by ffconf */ -#ifndef AVUTIL_AVCONFIG_H -#define AVUTIL_AVCONFIG_H -#define AV_HAVE_BIGENDIAN 0 -#define AV_HAVE_FAST_UNALIGNED 1 -#define AV_HAVE_INCOMPATIBLE_FORK_ABI 0 -#endif /* AVUTIL_AVCONFIG_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avstring.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avstring.h deleted file mode 100644 index 5b078f15ae..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avstring.h +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Copyright (c) 2007 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVSTRING_H -#define AVUTIL_AVSTRING_H - -#include -#include "attributes.h" - -/** - * @addtogroup lavu_string - * @{ - */ - -/** - * Return non-zero if pfx is a prefix of str. If it is, *ptr is set to - * the address of the first character in str after the prefix. - * - * @param str input string - * @param pfx prefix to test - * @param ptr updated if the prefix is matched inside str - * @return non-zero if the prefix matches, zero otherwise - */ -int av_strstart(const char *str, const char *pfx, const char **ptr); - -/** - * Return non-zero if pfx is a prefix of str independent of case. If - * it is, *ptr is set to the address of the first character in str - * after the prefix. - * - * @param str input string - * @param pfx prefix to test - * @param ptr updated if the prefix is matched inside str - * @return non-zero if the prefix matches, zero otherwise - */ -int av_stristart(const char *str, const char *pfx, const char **ptr); - -/** - * Locate the first case-independent occurrence in the string haystack - * of the string needle. A zero-length string needle is considered to - * match at the start of haystack. - * - * This function is a case-insensitive version of the standard strstr(). - * - * @param haystack string to search in - * @param needle string to search for - * @return pointer to the located match within haystack - * or a null pointer if no match - */ -char *av_stristr(const char *haystack, const char *needle); - -/** - * Locate the first occurrence of the string needle in the string haystack - * where not more than hay_length characters are searched. A zero-length - * string needle is considered to match at the start of haystack. - * - * This function is a length-limited version of the standard strstr(). - * - * @param haystack string to search in - * @param needle string to search for - * @param hay_length length of string to search in - * @return pointer to the located match within haystack - * or a null pointer if no match - */ -char *av_strnstr(const char *haystack, const char *needle, size_t hay_length); - -/** - * Copy the string src to dst, but no more than size - 1 bytes, and - * null-terminate dst. - * - * This function is the same as BSD strlcpy(). - * - * @param dst destination buffer - * @param src source string - * @param size size of destination buffer - * @return the length of src - * - * @warning since the return value is the length of src, src absolutely - * _must_ be a properly 0-terminated string, otherwise this will read beyond - * the end of the buffer and possibly crash. - */ -size_t av_strlcpy(char *dst, const char *src, size_t size); - -/** - * Append the string src to the string dst, but to a total length of - * no more than size - 1 bytes, and null-terminate dst. - * - * This function is similar to BSD strlcat(), but differs when - * size <= strlen(dst). - * - * @param dst destination buffer - * @param src source string - * @param size size of destination buffer - * @return the total length of src and dst - * - * @warning since the return value use the length of src and dst, these - * absolutely _must_ be a properly 0-terminated strings, otherwise this - * will read beyond the end of the buffer and possibly crash. - */ -size_t av_strlcat(char *dst, const char *src, size_t size); - -/** - * Append output to a string, according to a format. Never write out of - * the destination buffer, and always put a terminating 0 within - * the buffer. - * @param dst destination buffer (string to which the output is - * appended) - * @param size total size of the destination buffer - * @param fmt printf-compatible format string, specifying how the - * following parameters are used - * @return the length of the string that would have been generated - * if enough space had been available - */ -size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4); - -/** - * Print arguments following specified format into a large enough auto - * allocated buffer. It is similar to GNU asprintf(). - * @param fmt printf-compatible format string, specifying how the - * following parameters are used. - * @return the allocated string - * @note You have to free the string yourself with av_free(). - */ -char *av_asprintf(const char *fmt, ...) av_printf_format(1, 2); - -/** - * Convert a number to a av_malloced string. - */ -char *av_d2str(double d); - -/** - * Unescape the given string until a non escaped terminating char, - * and return the token corresponding to the unescaped string. - * - * The normal \ and ' escaping is supported. Leading and trailing - * whitespaces are removed, unless they are escaped with '\' or are - * enclosed between ''. - * - * @param buf the buffer to parse, buf will be updated to point to the - * terminating char - * @param term a 0-terminated list of terminating chars - * @return the malloced unescaped string, which must be av_freed by - * the user, NULL in case of allocation failure - */ -char *av_get_token(const char **buf, const char *term); - -/** - * Split the string into several tokens which can be accessed by - * successive calls to av_strtok(). - * - * A token is defined as a sequence of characters not belonging to the - * set specified in delim. - * - * On the first call to av_strtok(), s should point to the string to - * parse, and the value of saveptr is ignored. In subsequent calls, s - * should be NULL, and saveptr should be unchanged since the previous - * call. - * - * This function is similar to strtok_r() defined in POSIX.1. - * - * @param s the string to parse, may be NULL - * @param delim 0-terminated list of token delimiters, must be non-NULL - * @param saveptr user-provided pointer which points to stored - * information necessary for av_strtok() to continue scanning the same - * string. saveptr is updated to point to the next character after the - * first delimiter found, or to NULL if the string was terminated - * @return the found token, or NULL when no token is found - */ -char *av_strtok(char *s, const char *delim, char **saveptr); - -/** - * Locale-independent conversion of ASCII isdigit. - */ -static inline int av_isdigit(int c) -{ - return c >= '0' && c <= '9'; -} - -/** - * Locale-independent conversion of ASCII isgraph. - */ -static inline int av_isgraph(int c) -{ - return c > 32 && c < 127; -} - -/** - * Locale-independent conversion of ASCII isspace. - */ -static inline int av_isspace(int c) -{ - return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v'; -} - -/** - * Locale-independent conversion of ASCII characters to uppercase. - */ -static inline int av_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - c ^= 0x20; - return c; -} - -/** - * Locale-independent conversion of ASCII characters to lowercase. - */ -static inline int av_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - c ^= 0x20; - return c; -} - -/** - * Locale-independent conversion of ASCII isxdigit. - */ -static inline int av_isxdigit(int c) -{ - c = av_tolower(c); - return av_isdigit(c) || (c >= 'a' && c <= 'z'); -} - -/** - * Locale-independent case-insensitive compare. - * @note This means only ASCII-range characters are case-insensitive - */ -int av_strcasecmp(const char *a, const char *b); - -/** - * Locale-independent case-insensitive compare. - * @note This means only ASCII-range characters are case-insensitive - */ -int av_strncasecmp(const char *a, const char *b, size_t n); - - -/** - * Thread safe basename. - * @param path the path, on DOS both \ and / are considered separators. - * @return pointer to the basename substring. - */ -const char *av_basename(const char *path); - -/** - * Thread safe dirname. - * @param path the path, on DOS both \ and / are considered separators. - * @return the path with the separator replaced by the string terminator or ".". - * @note the function may change the input string. - */ -const char *av_dirname(char *path); - -enum AVEscapeMode { - AV_ESCAPE_MODE_AUTO, ///< Use auto-selected escaping mode. - AV_ESCAPE_MODE_BACKSLASH, ///< Use backslash escaping. - AV_ESCAPE_MODE_QUOTE, ///< Use single-quote escaping. -}; - -/** - * Consider spaces special and escape them even in the middle of the - * string. - * - * This is equivalent to adding the whitespace characters to the special - * characters lists, except it is guaranteed to use the exact same list - * of whitespace characters as the rest of libavutil. - */ -#define AV_ESCAPE_FLAG_WHITESPACE 0x01 - -/** - * Escape only specified special characters. - * Without this flag, escape also any characters that may be considered - * special by av_get_token(), such as the single quote. - */ -#define AV_ESCAPE_FLAG_STRICT 0x02 - -/** - * Escape string in src, and put the escaped string in an allocated - * string in *dst, which must be freed with av_free(). - * - * @param dst pointer where an allocated string is put - * @param src string to escape, must be non-NULL - * @param special_chars string containing the special characters which - * need to be escaped, can be NULL - * @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros. - * Any unknown value for mode will be considered equivalent to - * AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without - * notice. - * @param flags flags which control how to escape, see AV_ESCAPE_FLAG_ macros - * @return the length of the allocated string, or a negative error code in case of error - * @see av_bprint_escape() - */ -int av_escape(char **dst, const char *src, const char *special_chars, - enum AVEscapeMode mode, int flags); - -/** - * @} - */ - -#endif /* AVUTIL_AVSTRING_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avutil.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avutil.h deleted file mode 100644 index 78deff1fd8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/avutil.h +++ /dev/null @@ -1,260 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVUTIL_H -#define AVUTIL_AVUTIL_H - -/** - * @file - * external API header - */ - -/** - * @mainpage - * - * @section ffmpeg_intro Introduction - * - * This document describes the usage of the different libraries - * provided by FFmpeg. - * - * @li @ref libavc "libavcodec" encoding/decoding library - * @li @ref lavfi "libavfilter" graph based frame editing library - * @li @ref libavf "libavformat" I/O and muxing/demuxing library - * @li @ref lavd "libavdevice" special devices muxing/demuxing library - * @li @ref lavu "libavutil" common utility library - * @li @ref lswr "libswresample" audio resampling, format conversion and mixing - * @li @ref lpp "libpostproc" post processing library - * @li @ref lsws "libswscale" color conversion and scaling library - */ - -/** - * @defgroup lavu Common utility functions - * - * @brief - * libavutil contains the code shared across all the other FFmpeg - * libraries - * - * @note In order to use the functions provided by avutil you must include - * the specific header. - * - * @{ - * - * @defgroup lavu_crypto Crypto and Hashing - * - * @{ - * @} - * - * @defgroup lavu_math Maths - * @{ - * - * @} - * - * @defgroup lavu_string String Manipulation - * - * @{ - * - * @} - * - * @defgroup lavu_mem Memory Management - * - * @{ - * - * @} - * - * @defgroup lavu_data Data Structures - * @{ - * - * @} - * - * @defgroup lavu_audio Audio related - * - * @{ - * - * @} - * - * @defgroup lavu_error Error Codes - * - * @{ - * - * @} - * - * @defgroup lavu_misc Other - * - * @{ - * - * @defgroup lavu_internal Internal - * - * Not exported functions, for internal usage only - * - * @{ - * - * @} - */ - - -/** - * @addtogroup lavu_ver - * @{ - */ - -/** - * Return the LIBAVUTIL_VERSION_INT constant. - */ -unsigned avutil_version(void); - -/** - * Return the libavutil build-time configuration. - */ -const char *avutil_configuration(void); - -/** - * Return the libavutil license. - */ -const char *avutil_license(void); - -/** - * @} - */ - -/** - * @addtogroup lavu_media Media Type - * @brief Media Type - */ - -enum AVMediaType { - AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA - AVMEDIA_TYPE_VIDEO, - AVMEDIA_TYPE_AUDIO, - AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous - AVMEDIA_TYPE_SUBTITLE, - AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse - AVMEDIA_TYPE_NB -}; - -/** - * Return a string describing the media_type enum, NULL if media_type - * is unknown. - */ -const char *av_get_media_type_string(enum AVMediaType media_type); - -/** - * @defgroup lavu_const Constants - * @{ - * - * @defgroup lavu_enc Encoding specific - * - * @note those definition should move to avcodec - * @{ - */ - -#define FF_LAMBDA_SHIFT 7 -#define FF_LAMBDA_SCALE (1< - -/** - * @defgroup lavu_base64 Base64 - * @ingroup lavu_crypto - * @{ - */ - - -/** - * Decode a base64-encoded string. - * - * @param out buffer for decoded data - * @param in null-terminated input string - * @param out_size size in bytes of the out buffer, must be at - * least 3/4 of the length of in - * @return number of bytes written, or a negative value in case of - * invalid input - */ -int av_base64_decode(uint8_t *out, const char *in, int out_size); - -/** - * Encode data to base64 and null-terminate. - * - * @param out buffer for encoded data - * @param out_size size in bytes of the out buffer (including the - * null terminator), must be at least AV_BASE64_SIZE(in_size) - * @param in input buffer containing the data to encode - * @param in_size size in bytes of the in buffer - * @return out or NULL in case of error - */ -char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size); - -/** - * Calculate the output size needed to base64-encode x bytes to a - * null-terminated string. - */ -#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1) - - /** - * @} - */ - -#endif /* AVUTIL_BASE64_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/blowfish.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/blowfish.h deleted file mode 100644 index 0b004532de..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/blowfish.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Blowfish algorithm - * Copyright (c) 2012 Samuel Pitoiset - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_BLOWFISH_H -#define AVUTIL_BLOWFISH_H - -#include - -/** - * @defgroup lavu_blowfish Blowfish - * @ingroup lavu_crypto - * @{ - */ - -#define AV_BF_ROUNDS 16 - -typedef struct AVBlowfish { - uint32_t p[AV_BF_ROUNDS + 2]; - uint32_t s[4][256]; -} AVBlowfish; - -/** - * Initialize an AVBlowfish context. - * - * @param ctx an AVBlowfish context - * @param key a key - * @param key_len length of the key - */ -void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * - * @param ctx an AVBlowfish context - * @param xl left four bytes halves of input to be encrypted - * @param xr right four bytes halves of input to be encrypted - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, - int decrypt); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * - * @param ctx an AVBlowfish context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param iv initialization vector for CBC mode, if NULL ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, - int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_BLOWFISH_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/bprint.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/bprint.h deleted file mode 100644 index df78916f4a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/bprint.h +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (c) 2012 Nicolas George - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_BPRINT_H -#define AVUTIL_BPRINT_H - -#include "attributes.h" -#include "avstring.h" - -/** - * Define a structure with extra padding to a fixed size - * This helps ensuring binary compatibility with future versions. - */ -#define FF_PAD_STRUCTURE(size, ...) \ - __VA_ARGS__ \ - char reserved_padding[size - sizeof(struct { __VA_ARGS__ })]; - -/** - * Buffer to print data progressively - * - * The string buffer grows as necessary and is always 0-terminated. - * The content of the string is never accessed, and thus is - * encoding-agnostic and can even hold binary data. - * - * Small buffers are kept in the structure itself, and thus require no - * memory allocation at all (unless the contents of the buffer is needed - * after the structure goes out of scope). This is almost as lightweight as - * declaring a local "char buf[512]". - * - * The length of the string can go beyond the allocated size: the buffer is - * then truncated, but the functions still keep account of the actual total - * length. - * - * In other words, buf->len can be greater than buf->size and records the - * total length of what would have been to the buffer if there had been - * enough memory. - * - * Append operations do not need to be tested for failure: if a memory - * allocation fails, data stop being appended to the buffer, but the length - * is still updated. This situation can be tested with - * av_bprint_is_complete(). - * - * The size_max field determines several possible behaviours: - * - * size_max = -1 (= UINT_MAX) or any large value will let the buffer be - * reallocated as necessary, with an amortized linear cost. - * - * size_max = 0 prevents writing anything to the buffer: only the total - * length is computed. The write operations can then possibly be repeated in - * a buffer with exactly the necessary size - * (using size_init = size_max = len + 1). - * - * size_max = 1 is automatically replaced by the exact size available in the - * structure itself, thus ensuring no dynamic memory allocation. The - * internal buffer is large enough to hold a reasonable paragraph of text, - * such as the current paragraph. - */ -typedef struct AVBPrint { - FF_PAD_STRUCTURE(1024, - char *str; /** string so far */ - unsigned len; /** length so far */ - unsigned size; /** allocated memory */ - unsigned size_max; /** maximum allocated memory */ - char reserved_internal_buffer[1]; - ) -} AVBPrint; - -/** - * Convenience macros for special values for av_bprint_init() size_max - * parameter. - */ -#define AV_BPRINT_SIZE_UNLIMITED ((unsigned)-1) -#define AV_BPRINT_SIZE_AUTOMATIC 1 -#define AV_BPRINT_SIZE_COUNT_ONLY 0 - -/** - * Init a print buffer. - * - * @param buf buffer to init - * @param size_init initial size (including the final 0) - * @param size_max maximum size; - * 0 means do not write anything, just count the length; - * 1 is replaced by the maximum value for automatic storage; - * any large value means that the internal buffer will be - * reallocated as needed up to that limit; -1 is converted to - * UINT_MAX, the largest limit possible. - * Check also AV_BPRINT_SIZE_* macros. - */ -void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max); - -/** - * Init a print buffer using a pre-existing buffer. - * - * The buffer will not be reallocated. - * - * @param buf buffer structure to init - * @param buffer byte buffer to use for the string data - * @param size size of buffer - */ -void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size); - -/** - * Append a formatted string to a print buffer. - */ -void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3); - -/** - * Append char c n times to a print buffer. - */ -void av_bprint_chars(AVBPrint *buf, char c, unsigned n); - -struct tm; -/** - * Append a formatted date and time to a print buffer. - * - * param buf bprint buffer to use - * param fmt date and time format string, see strftime() - * param tm broken-down time structure to translate - * - * @note due to poor design of the standard strftime function, it may - * produce poor results if the format string expands to a very long text and - * the bprint buffer is near the limit stated by the size_max option. - */ -void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm); - -/** - * Allocate bytes in the buffer for external use. - * - * @param[in] buf buffer structure - * @param[in] size required size - * @param[out] mem pointer to the memory area - * @param[out] actual_size size of the memory area after allocation; - * can be larger or smaller than size - */ -void av_bprint_get_buffer(AVBPrint *buf, unsigned size, - unsigned char **mem, unsigned *actual_size); - -/** - * Reset the string to "" but keep internal allocated data. - */ -void av_bprint_clear(AVBPrint *buf); - -/** - * Test if the print buffer is complete (not truncated). - * - * It may have been truncated due to a memory allocation failure - * or the size_max limit (compare size and size_max if necessary). - */ -static inline int av_bprint_is_complete(AVBPrint *buf) -{ - return buf->len < buf->size; -} - -/** - * Finalize a print buffer. - * - * The print buffer can no longer be used afterwards, - * but the len and size fields are still valid. - * - * @arg[out] ret_str if not NULL, used to return a permanent copy of the - * buffer contents, or NULL if memory allocation fails; - * if NULL, the buffer is discarded and freed - * @return 0 for success or error code (probably AVERROR(ENOMEM)) - */ -int av_bprint_finalize(AVBPrint *buf, char **ret_str); - -/** - * Escape the content in src and append it to dstbuf. - * - * @param dstbuf already inited destination bprint buffer - * @param src string containing the text to escape - * @param special_chars string containing the special characters which - * need to be escaped, can be NULL - * @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros. - * Any unknown value for mode will be considered equivalent to - * AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without - * notice. - * @param flags flags which control how to escape, see AV_ESCAPE_FLAG_* macros - */ -void av_bprint_escape(AVBPrint *dstbuf, const char *src, const char *special_chars, - enum AVEscapeMode mode, int flags); - -#endif /* AVUTIL_BPRINT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/bswap.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/bswap.h deleted file mode 100644 index 06f654816d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/bswap.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * byte swapping routines - */ - -#ifndef AVUTIL_BSWAP_H -#define AVUTIL_BSWAP_H - -#include -#include "libavutil/avconfig.h" -#include "attributes.h" - -#ifdef HAVE_AV_CONFIG_H - -#include "config.h" - -#if ARCH_ARM -# include "arm/bswap.h" -#elif ARCH_AVR32 -# include "avr32/bswap.h" -#elif ARCH_BFIN -# include "bfin/bswap.h" -#elif ARCH_SH4 -# include "sh4/bswap.h" -#elif ARCH_X86 -# include "x86/bswap.h" -#endif - -#endif /* HAVE_AV_CONFIG_H */ - -#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) -#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) -#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32)) - -#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x) - -#ifndef av_bswap16 -static av_always_inline av_const uint16_t av_bswap16(uint16_t x) -{ - x= (x>>8) | (x<<8); - return x; -} -#endif - -#ifndef av_bswap32 -static av_always_inline av_const uint32_t av_bswap32(uint32_t x) -{ - return AV_BSWAP32C(x); -} -#endif - -#ifndef av_bswap64 -static inline uint64_t av_const av_bswap64(uint64_t x) -{ - return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32); -} -#endif - -// be2ne ... big-endian to native-endian -// le2ne ... little-endian to native-endian - -#if AV_HAVE_BIGENDIAN -#define av_be2ne16(x) (x) -#define av_be2ne32(x) (x) -#define av_be2ne64(x) (x) -#define av_le2ne16(x) av_bswap16(x) -#define av_le2ne32(x) av_bswap32(x) -#define av_le2ne64(x) av_bswap64(x) -#define AV_BE2NEC(s, x) (x) -#define AV_LE2NEC(s, x) AV_BSWAPC(s, x) -#else -#define av_be2ne16(x) av_bswap16(x) -#define av_be2ne32(x) av_bswap32(x) -#define av_be2ne64(x) av_bswap64(x) -#define av_le2ne16(x) (x) -#define av_le2ne32(x) (x) -#define av_le2ne64(x) (x) -#define AV_BE2NEC(s, x) AV_BSWAPC(s, x) -#define AV_LE2NEC(s, x) (x) -#endif - -#define AV_BE2NE16C(x) AV_BE2NEC(16, x) -#define AV_BE2NE32C(x) AV_BE2NEC(32, x) -#define AV_BE2NE64C(x) AV_BE2NEC(64, x) -#define AV_LE2NE16C(x) AV_LE2NEC(16, x) -#define AV_LE2NE32C(x) AV_LE2NEC(32, x) -#define AV_LE2NE64C(x) AV_LE2NEC(64, x) - -#endif /* AVUTIL_BSWAP_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/channel_layout.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/channel_layout.h deleted file mode 100644 index 2906098313..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/channel_layout.h +++ /dev/null @@ -1,216 +0,0 @@ -/* - * Copyright (c) 2006 Michael Niedermayer - * Copyright (c) 2008 Peter Ross - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CHANNEL_LAYOUT_H -#define AVUTIL_CHANNEL_LAYOUT_H - -#include - -/** - * @file - * audio channel layout utility functions - */ - -/** - * @addtogroup lavu_audio - * @{ - */ - -/** - * @defgroup channel_masks Audio channel masks - * - * A channel layout is a 64-bits integer with a bit set for every channel. - * The number of bits set must be equal to the number of channels. - * The value 0 means that the channel layout is not known. - * @note this data structure is not powerful enough to handle channels - * combinations that have the same channel multiple times, such as - * dual-mono. - * - * @{ - */ -#define AV_CH_FRONT_LEFT 0x00000001 -#define AV_CH_FRONT_RIGHT 0x00000002 -#define AV_CH_FRONT_CENTER 0x00000004 -#define AV_CH_LOW_FREQUENCY 0x00000008 -#define AV_CH_BACK_LEFT 0x00000010 -#define AV_CH_BACK_RIGHT 0x00000020 -#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040 -#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080 -#define AV_CH_BACK_CENTER 0x00000100 -#define AV_CH_SIDE_LEFT 0x00000200 -#define AV_CH_SIDE_RIGHT 0x00000400 -#define AV_CH_TOP_CENTER 0x00000800 -#define AV_CH_TOP_FRONT_LEFT 0x00001000 -#define AV_CH_TOP_FRONT_CENTER 0x00002000 -#define AV_CH_TOP_FRONT_RIGHT 0x00004000 -#define AV_CH_TOP_BACK_LEFT 0x00008000 -#define AV_CH_TOP_BACK_CENTER 0x00010000 -#define AV_CH_TOP_BACK_RIGHT 0x00020000 -#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. -#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT. -#define AV_CH_WIDE_LEFT 0x0000000080000000ULL -#define AV_CH_WIDE_RIGHT 0x0000000100000000ULL -#define AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL -#define AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL -#define AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL - -/** Channel mask value used for AVCodecContext.request_channel_layout - to indicate that the user requests the channel order of the decoder output - to be the native codec channel order. */ -#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL - -/** - * @} - * @defgroup channel_mask_c Audio channel convenience macros - * @{ - * */ -#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) -#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) - -enum AVMatrixEncoding { - AV_MATRIX_ENCODING_NONE, - AV_MATRIX_ENCODING_DOLBY, - AV_MATRIX_ENCODING_DPLII, - AV_MATRIX_ENCODING_NB -}; - -/** - * @} - */ - -/** - * Return a channel layout id that matches name, or 0 if no match is found. - * - * name can be one or several of the following notations, - * separated by '+' or '|': - * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, - * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); - * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, - * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); - * - a number of channels, in decimal, optionally followed by 'c', yielding - * the default channel layout for that number of channels (@see - * av_get_default_channel_layout); - * - a channel layout mask, in hexadecimal starting with "0x" (see the - * AV_CH_* macros). - * - * Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7" - */ -uint64_t av_get_channel_layout(const char *name); - -/** - * Return a description of a channel layout. - * If nb_channels is <= 0, it is guessed from the channel_layout. - * - * @param buf put here the string containing the channel layout - * @param buf_size size in bytes of the buffer - */ -void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout); - -struct AVBPrint; -/** - * Append a description of a channel layout to a bprint buffer. - */ -void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout); - -/** - * Return the number of channels in the channel layout. - */ -int av_get_channel_layout_nb_channels(uint64_t channel_layout); - -/** - * Return default channel layout for a given number of channels. - */ -int64_t av_get_default_channel_layout(int nb_channels); - -/** - * Get the index of a channel in channel_layout. - * - * @param channel a channel layout describing exactly one channel which must be - * present in channel_layout. - * - * @return index of channel in channel_layout on success, a negative AVERROR - * on error. - */ -int av_get_channel_layout_channel_index(uint64_t channel_layout, - uint64_t channel); - -/** - * Get the channel with the given index in channel_layout. - */ -uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index); - -/** - * Get the name of a given channel. - * - * @return channel name on success, NULL on error. - */ -const char *av_get_channel_name(uint64_t channel); - -/** - * Get the description of a given channel. - * - * @param channel a channel layout with a single channel - * @return channel description on success, NULL on error - */ -const char *av_get_channel_description(uint64_t channel); - -/** - * Get the value and name of a standard channel layout. - * - * @param[in] index index in an internal list, starting at 0 - * @param[out] layout channel layout mask - * @param[out] name name of the layout - * @return 0 if the layout exists, - * <0 if index is beyond the limits - */ -int av_get_standard_channel_layout(unsigned index, uint64_t *layout, - const char **name); - -/** - * @} - */ - -#endif /* AVUTIL_CHANNEL_LAYOUT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/common.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/common.h deleted file mode 100644 index beaf9f7635..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/common.h +++ /dev/null @@ -1,436 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * common internal and external API header - */ - -#ifndef AVUTIL_COMMON_H -#define AVUTIL_COMMON_H - -#include -#include -#include -#include -#include -#include -#include - -#include "attributes.h" -#include "version.h" -#include "libavutil/avconfig.h" - -#if AV_HAVE_BIGENDIAN -# define AV_NE(be, le) (be) -#else -# define AV_NE(be, le) (le) -#endif - -//rounded division & shift -#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) -/* assume b>0 */ -#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) -#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b)) -#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b)) -#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) -#define FFSIGN(a) ((a) > 0 ? 1 : -1) - -#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) -#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) -#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) -#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) - -#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) -#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) -#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) - -/* misc math functions */ - -/** - * Reverse the order of the bits of an 8-bits unsigned integer. - */ -#if FF_API_AV_REVERSE -extern attribute_deprecated const uint8_t av_reverse[256]; -#endif - -#ifdef HAVE_AV_CONFIG_H -# include "config.h" -# include "intmath.h" -#endif - -/* Pull in unguarded fallback defines at the end of this file. */ -#include "common.h" - -#ifndef av_log2 -av_const int av_log2(unsigned v); -#endif - -#ifndef av_log2_16bit -av_const int av_log2_16bit(unsigned v); -#endif - -/** - * Clip a signed integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int av_clip_c(int a, int amin, int amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed 64bit integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed integer value into the 0-255 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint8_t av_clip_uint8_c(int a) -{ - if (a&(~0xFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -128,127 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int8_t av_clip_int8_c(int a) -{ - if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F; - else return a; -} - -/** - * Clip a signed integer value into the 0-65535 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint16_t av_clip_uint16_c(int a) -{ - if (a&(~0xFFFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -32768,32767 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int16_t av_clip_int16_c(int a) -{ - if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF; - else return a; -} - -/** - * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) -{ - if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF; - else return (int32_t)a; -} - -/** - * Clip a signed integer to an unsigned power of two range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) -{ - if (a & ~((1<> 31 & ((1<= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** Compute ceil(log2(x)). - * @param x value used to compute ceil(log2(x)) - * @return computed ceiling of log2(x) - */ -static av_always_inline av_const int av_ceil_log2_c(int x) -{ - return av_log2((x - 1) << 1); -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount_c(uint32_t x) -{ - x -= (x >> 1) & 0x55555555; - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - x = (x + (x >> 4)) & 0x0F0F0F0F; - x += x >> 8; - return (x + (x >> 16)) & 0x3F; -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount64_c(uint64_t x) -{ - return av_popcount((uint32_t)x) + av_popcount(x >> 32); -} - -#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) -#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) - -/** - * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_BYTE Expression reading one byte from the input. - * Evaluated up to 7 times (4 for the currently - * assigned Unicode range). With a memory buffer - * input, this could be *ptr++. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - */ -#define GET_UTF8(val, GET_BYTE, ERROR)\ - val= GET_BYTE;\ - {\ - uint32_t top = (val & 128) >> 1;\ - if ((val & 0xc0) == 0x80)\ - ERROR\ - while (val & top) {\ - int tmp= GET_BYTE - 128;\ - if(tmp>>6)\ - ERROR\ - val= (val<<6) + tmp;\ - top <<= 5;\ - }\ - val &= (top << 1) - 1;\ - } - -/** - * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_16BIT Expression returning two bytes of UTF-16 data converted - * to native byte order. Evaluated one or two times. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - */ -#define GET_UTF16(val, GET_16BIT, ERROR)\ - val = GET_16BIT;\ - {\ - unsigned int hi = val - 0xD800;\ - if (hi < 0x800) {\ - val = GET_16BIT - 0xDC00;\ - if (val > 0x3FFU || hi > 0x3FFU)\ - ERROR\ - val += (hi<<10) + 0x10000;\ - }\ - }\ - -/** - * @def PUT_UTF8(val, tmp, PUT_BYTE) - * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint8_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_BYTE. - * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. - * It could be a function or a statement, and uses tmp as the input byte. - * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be - * executed up to 4 times for values in the valid UTF-8 range and up to - * 7 times in the general case, depending on the length of the converted - * Unicode character. - */ -#define PUT_UTF8(val, tmp, PUT_BYTE)\ - {\ - int bytes, shift;\ - uint32_t in = val;\ - if (in < 0x80) {\ - tmp = in;\ - PUT_BYTE\ - } else {\ - bytes = (av_log2(in) + 4) / 5;\ - shift = (bytes - 1) * 6;\ - tmp = (256 - (256 >> bytes)) | (in >> shift);\ - PUT_BYTE\ - while (shift >= 6) {\ - shift -= 6;\ - tmp = 0x80 | ((in >> shift) & 0x3f);\ - PUT_BYTE\ - }\ - }\ - } - -/** - * @def PUT_UTF16(val, tmp, PUT_16BIT) - * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint16_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_16BIT. - * @param PUT_16BIT writes the converted UTF-16 data to any proper destination - * in desired endianness. It could be a function or a statement, and uses tmp - * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" - * PUT_BYTE will be executed 1 or 2 times depending on input character. - */ -#define PUT_UTF16(val, tmp, PUT_16BIT)\ - {\ - uint32_t in = val;\ - if (in < 0x10000) {\ - tmp = in;\ - PUT_16BIT\ - } else {\ - tmp = 0xD800 | ((in - 0x10000) >> 10);\ - PUT_16BIT\ - tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ - PUT_16BIT\ - }\ - }\ - - - -#include "mem.h" - -#ifdef HAVE_AV_CONFIG_H -# include "internal.h" -#endif /* HAVE_AV_CONFIG_H */ - -#endif /* AVUTIL_COMMON_H */ - -/* - * The following definitions are outside the multiple inclusion guard - * to ensure they are immediately available in intmath.h. - */ - -#ifndef av_ceil_log2 -# define av_ceil_log2 av_ceil_log2_c -#endif -#ifndef av_clip -# define av_clip av_clip_c -#endif -#ifndef av_clip64 -# define av_clip64 av_clip64_c -#endif -#ifndef av_clip_uint8 -# define av_clip_uint8 av_clip_uint8_c -#endif -#ifndef av_clip_int8 -# define av_clip_int8 av_clip_int8_c -#endif -#ifndef av_clip_uint16 -# define av_clip_uint16 av_clip_uint16_c -#endif -#ifndef av_clip_int16 -# define av_clip_int16 av_clip_int16_c -#endif -#ifndef av_clipl_int32 -# define av_clipl_int32 av_clipl_int32_c -#endif -#ifndef av_clip_uintp2 -# define av_clip_uintp2 av_clip_uintp2_c -#endif -#ifndef av_sat_add32 -# define av_sat_add32 av_sat_add32_c -#endif -#ifndef av_sat_dadd32 -# define av_sat_dadd32 av_sat_dadd32_c -#endif -#ifndef av_clipf -# define av_clipf av_clipf_c -#endif -#ifndef av_popcount -# define av_popcount av_popcount_c -#endif -#ifndef av_popcount64 -# define av_popcount64 av_popcount64_c -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/cpu.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/cpu.h deleted file mode 100644 index c8f34e0272..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/cpu.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 2002 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CPU_H -#define AVUTIL_CPU_H - -#include "attributes.h" - -#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ - - /* lower 16 bits - CPU features */ -#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX -#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW -#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions -#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions -#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster -#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt -#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions -#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster -#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions -#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower -#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions -#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions -#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions -#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions -// #if LIBAVUTIL_VERSION_MAJOR <52 -#define AV_CPU_FLAG_CMOV 0x1001000 ///< supports cmov instruction -// #else -// #define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction -// #endif - -#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard - -#define AV_CPU_FLAG_ARMV5TE (1 << 0) -#define AV_CPU_FLAG_ARMV6 (1 << 1) -#define AV_CPU_FLAG_ARMV6T2 (1 << 2) -#define AV_CPU_FLAG_VFP (1 << 3) -#define AV_CPU_FLAG_VFPV3 (1 << 4) -#define AV_CPU_FLAG_NEON (1 << 5) - -/** - * Return the flags which specify extensions supported by the CPU. - * The returned value is affected by av_force_cpu_flags() if that was used - * before. So av_get_cpu_flags() can easily be used in a application to - * detect the enabled cpu flags. - */ -int av_get_cpu_flags(void); - -/** - * Disables cpu detection and forces the specified flags. - * -1 is a special case that disables forcing of specific flags. - */ -void av_force_cpu_flags(int flags); - -/** - * Set a mask on flags returned by av_get_cpu_flags(). - * This function is mainly useful for testing. - * Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible - * - * @warning this function is not thread safe. - */ -attribute_deprecated void av_set_cpu_flags_mask(int mask); - -/** - * Parse CPU flags from a string. - * - * The returned flags contain the specified flags as well as related unspecified flags. - * - * This function exists only for compatibility with libav. - * Please use av_parse_cpu_caps() when possible. - * @return a combination of AV_CPU_* flags, negative on error. - */ -attribute_deprecated -int av_parse_cpu_flags(const char *s); - -/** - * Parse CPU caps from a string and update the given AV_CPU_* flags based on that. - * - * @return negative on error. - */ -int av_parse_cpu_caps(unsigned *flags, const char *s); - -/* The following CPU-specific functions shall not be called directly. */ -int ff_get_cpu_flags_arm(void); -int ff_get_cpu_flags_ppc(void); -int ff_get_cpu_flags_x86(void); - -#endif /* AVUTIL_CPU_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/crc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/crc.h deleted file mode 100644 index 2bdfca8274..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/crc.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CRC_H -#define AVUTIL_CRC_H - -#include -#include -#include "attributes.h" - -typedef uint32_t AVCRC; - -typedef enum { - AV_CRC_8_ATM, - AV_CRC_16_ANSI, - AV_CRC_16_CCITT, - AV_CRC_32_IEEE, - AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */ - AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */ -}AVCRCId; - -/** - * Initialize a CRC table. - * @param ctx must be an array of size sizeof(AVCRC)*257 or sizeof(AVCRC)*1024 - * @param le If 1, the lowest bit represents the coefficient for the highest - * exponent of the corresponding polynomial (both for poly and - * actual CRC). - * If 0, you must swap the CRC parameter and the result of av_crc - * if you need the standard representation (can be simplified in - * most cases to e.g. bswap16): - * av_bswap32(crc << (32-bits)) - * @param bits number of bits for the CRC - * @param poly generator polynomial without the x**bits coefficient, in the - * representation as specified by le - * @param ctx_size size of ctx in bytes - * @return <0 on failure - */ -int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size); - -/** - * Get an initialized standard CRC table. - * @param crc_id ID of a standard CRC - * @return a pointer to the CRC table or NULL on failure - */ -const AVCRC *av_crc_get_table(AVCRCId crc_id); - -/** - * Calculate the CRC of a block. - * @param crc CRC of previous blocks if any or initial value for CRC - * @return CRC updated with the data from the given block - * - * @see av_crc_init() "le" parameter - */ -uint32_t av_crc(const AVCRC *ctx, uint32_t crc, - const uint8_t *buffer, size_t length) av_pure; - -#endif /* AVUTIL_CRC_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/dict.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/dict.h deleted file mode 100644 index 38f03a407f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/dict.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Public dictionary API. - * @deprecated - * AVDictionary is provided for compatibility with libav. It is both in - * implementation as well as API inefficient. It does not scale and is - * extremely slow with large dictionaries. - * It is recommended that new code uses our tree container from tree.c/h - * where applicable, which uses AVL trees to achieve O(log n) performance. - */ - -#ifndef AVUTIL_DICT_H -#define AVUTIL_DICT_H - -/** - * @addtogroup lavu_dict AVDictionary - * @ingroup lavu_data - * - * @brief Simple key:value store - * - * @{ - * Dictionaries are used for storing key:value pairs. To create - * an AVDictionary, simply pass an address of a NULL pointer to - * av_dict_set(). NULL can be used as an empty dictionary wherever - * a pointer to an AVDictionary is required. - * Use av_dict_get() to retrieve an entry or iterate over all - * entries and finally av_dict_free() to free the dictionary - * and all its contents. - * - * @code - * AVDictionary *d = NULL; // "create" an empty dictionary - * av_dict_set(&d, "foo", "bar", 0); // add an entry - * - * char *k = av_strdup("key"); // if your strings are already allocated, - * char *v = av_strdup("value"); // you can avoid copying them like this - * av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); - * - * AVDictionaryEntry *t = NULL; - * while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) { - * <....> // iterate over all entries in d - * } - * - * av_dict_free(&d); - * @endcode - * - */ - -#define AV_DICT_MATCH_CASE 1 -#define AV_DICT_IGNORE_SUFFIX 2 -#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been - allocated with av_malloc() and children. */ -#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been - allocated with av_malloc() and chilren. */ -#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries. -#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no - delimiter is added, the strings are simply concatenated. */ - -typedef struct AVDictionaryEntry { - char *key; - char *value; -} AVDictionaryEntry; - -typedef struct AVDictionary AVDictionary; - -/** - * Get a dictionary entry with matching key. - * - * @param prev Set to the previous matching element to find the next. - * If set to NULL the first matching element is returned. - * @param flags Allows case as well as suffix-insensitive comparisons. - * @return Found entry or NULL, changing key or value leads to undefined behavior. - */ -AVDictionaryEntry * -av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags); - -/** - * Get number of entries in dictionary. - * - * @param m dictionary - * @return number of entries in dictionary - */ -int av_dict_count(const AVDictionary *m); - -/** - * Set the given entry in *pm, overwriting an existing entry. - * - * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL - * a dictionary struct is allocated and put in *pm. - * @param key entry key to add to *pm (will be av_strduped depending on flags) - * @param value entry value to add to *pm (will be av_strduped depending on flags). - * Passing a NULL value will cause an existing entry to be deleted. - * @return >= 0 on success otherwise an error code <0 - */ -int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); - -/** - * Parse the key/value pairs list and add to a dictionary. - * - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @param flags flags to use when adding to dictionary. - * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL - * are ignored since the key/value tokens will always - * be duplicated. - * @return 0 on success, negative AVERROR code on failure - */ -int av_dict_parse_string(AVDictionary **pm, const char *str, - const char *key_val_sep, const char *pairs_sep, - int flags); - -/** - * Copy entries from one AVDictionary struct into another. - * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, - * this function will allocate a struct for you and put it in *dst - * @param src pointer to source AVDictionary struct - * @param flags flags to use when setting entries in *dst - * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag - */ -void av_dict_copy(AVDictionary **dst, AVDictionary *src, int flags); - -/** - * Free all the memory allocated for an AVDictionary struct - * and all keys and values. - */ -void av_dict_free(AVDictionary **m); - -/** - * @} - */ - -#endif /* AVUTIL_DICT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/error.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/error.h deleted file mode 100644 index f3fd7bbff6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/error.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * error code definitions - */ - -#ifndef AVUTIL_ERROR_H -#define AVUTIL_ERROR_H - -#include -#include - -/** - * @addtogroup lavu_error - * - * @{ - */ - - -/* error handling */ -#if EDOM > 0 -#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. -#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. -#else -/* Some platforms have E* and errno already negated. */ -#define AVERROR(e) (e) -#define AVUNERROR(e) (e) -#endif - -#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d)) - -#define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found -#define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2 -#define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small -#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found -#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found -#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found -#define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file -#define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted -#define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library -#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found -#define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input -#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found -#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found -#define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome -#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found - -#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found -/** - * This is semantically identical to AVERROR_BUG - * it has been introduced in Libav after our AVERROR_BUG and with a modified value. - */ -#define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ') -#define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library -#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it. - -#define AV_ERROR_MAX_STRING_SIZE 64 - -/** - * Put a description of the AVERROR code errnum in errbuf. - * In case of failure the global variable errno is set to indicate the - * error. Even in case of failure av_strerror() will print a generic - * error message indicating the errnum provided to errbuf. - * - * @param errnum error code to describe - * @param errbuf buffer to which description is written - * @param errbuf_size the size in bytes of errbuf - * @return 0 on success, a negative value if a description for errnum - * cannot be found - */ -int av_strerror(int errnum, char *errbuf, size_t errbuf_size); - -/** - * Fill the provided buffer with a string containing an error string - * corresponding to the AVERROR code errnum. - * - * @param errbuf a buffer - * @param errbuf_size size in bytes of errbuf - * @param errnum error code to describe - * @return the buffer in input, filled with the error description - * @see av_strerror() - */ -static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum) -{ - av_strerror(errnum, errbuf, errbuf_size); - return errbuf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_err2str(errnum) \ - av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum) - -/** - * @} - */ - -#endif /* AVUTIL_ERROR_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/eval.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/eval.h deleted file mode 100644 index a1d1fe345c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/eval.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2002 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * simple arithmetic expression evaluator - */ - -#ifndef AVUTIL_EVAL_H -#define AVUTIL_EVAL_H - -#include "avutil.h" - -typedef struct AVExpr AVExpr; - -/** - * Parse and evaluate an expression. - * Note, this is significantly slower than av_expr_eval(). - * - * @param res a pointer to a double where is put the result value of - * the expression, or NAN in case of error - * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" - * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} - * @param const_values a zero terminated array of values for the identifiers from const_names - * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers - * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers - * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments - * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 - * @param log_ctx parent logging context - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_expr_parse_and_eval(double *res, const char *s, - const char * const *const_names, const double *const_values, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - void *opaque, int log_offset, void *log_ctx); - -/** - * Parse an expression. - * - * @param expr a pointer where is put an AVExpr containing the parsed - * value in case of successful parsing, or NULL otherwise. - * The pointed to AVExpr must be freed with av_expr_free() by the user - * when it is not needed anymore. - * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" - * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} - * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers - * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers - * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments - * @param log_ctx parent logging context - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_expr_parse(AVExpr **expr, const char *s, - const char * const *const_names, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - int log_offset, void *log_ctx); - -/** - * Evaluate a previously parsed expression. - * - * @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names - * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 - * @return the value of the expression - */ -double av_expr_eval(AVExpr *e, const double *const_values, void *opaque); - -/** - * Free a parsed expression previously created with av_expr_parse(). - */ -void av_expr_free(AVExpr *e); - -/** - * Parse the string in numstr and return its value as a double. If - * the string is empty, contains only whitespaces, or does not contain - * an initial substring that has the expected syntax for a - * floating-point number, no conversion is performed. In this case, - * returns a value of zero and the value returned in tail is the value - * of numstr. - * - * @param numstr a string representing a number, may contain one of - * the International System number postfixes, for example 'K', 'M', - * 'G'. If 'i' is appended after the postfix, powers of 2 are used - * instead of powers of 10. The 'B' postfix multiplies the value for - * 8, and can be appended after another postfix or used alone. This - * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix. - * @param tail if non-NULL puts here the pointer to the char next - * after the last parsed character - */ -double av_strtod(const char *numstr, char **tail); - -#endif /* AVUTIL_EVAL_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/fifo.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/fifo.h deleted file mode 100644 index 849b9a6b81..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/fifo.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * a very simple circular buffer FIFO implementation - */ - -#ifndef AVUTIL_FIFO_H -#define AVUTIL_FIFO_H - -#include -#include "avutil.h" -#include "attributes.h" - -typedef struct AVFifoBuffer { - uint8_t *buffer; - uint8_t *rptr, *wptr, *end; - uint32_t rndx, wndx; -} AVFifoBuffer; - -/** - * Initialize an AVFifoBuffer. - * @param size of FIFO - * @return AVFifoBuffer or NULL in case of memory allocation failure - */ -AVFifoBuffer *av_fifo_alloc(unsigned int size); - -/** - * Free an AVFifoBuffer. - * @param f AVFifoBuffer to free - */ -void av_fifo_free(AVFifoBuffer *f); - -/** - * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied. - * @param f AVFifoBuffer to reset - */ -void av_fifo_reset(AVFifoBuffer *f); - -/** - * Return the amount of data in bytes in the AVFifoBuffer, that is the - * amount of data you can read from it. - * @param f AVFifoBuffer to read from - * @return size - */ -int av_fifo_size(AVFifoBuffer *f); - -/** - * Return the amount of space in bytes in the AVFifoBuffer, that is the - * amount of data you can write into it. - * @param f AVFifoBuffer to write into - * @return size - */ -int av_fifo_space(AVFifoBuffer *f); - -/** - * Feed data from an AVFifoBuffer to a user-supplied callback. - * @param f AVFifoBuffer to read from - * @param buf_size number of bytes to read - * @param func generic read function - * @param dest data destination - */ -int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); - -/** - * Feed data from a user-supplied callback to an AVFifoBuffer. - * @param f AVFifoBuffer to write to - * @param src data source; non-const since it may be used as a - * modifiable context by the function defined in func - * @param size number of bytes to write - * @param func generic write function; the first parameter is src, - * the second is dest_buf, the third is dest_buf_size. - * func must return the number of bytes written to dest_buf, or <= 0 to - * indicate no more data available to write. - * If func is NULL, src is interpreted as a simple byte array for source data. - * @return the number of bytes written to the FIFO - */ -int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)); - -/** - * Resize an AVFifoBuffer. - * In case of reallocation failure, the old FIFO is kept unchanged. - * - * @param f AVFifoBuffer to resize - * @param size new AVFifoBuffer size in bytes - * @return <0 for failure, >=0 otherwise - */ -int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size); - -/** - * Enlarge an AVFifoBuffer. - * In case of reallocation failure, the old FIFO is kept unchanged. - * The new fifo size may be larger than the requested size. - * - * @param f AVFifoBuffer to resize - * @param additional_space the amount of space in bytes to allocate in addition to av_fifo_size() - * @return <0 for failure, >=0 otherwise - */ -int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space); - -/** - * Read and discard the specified amount of data from an AVFifoBuffer. - * @param f AVFifoBuffer to read from - * @param size amount of data to read in bytes - */ -void av_fifo_drain(AVFifoBuffer *f, int size); - -/** - * Return a pointer to the data stored in a FIFO buffer at a certain offset. - * The FIFO buffer is not modified. - * - * @param f AVFifoBuffer to peek at, f must be non-NULL - * @param offs an offset in bytes, its absolute value must be less - * than the used buffer size or the returned pointer will - * point outside to the buffer data. - * The used buffer size can be checked with av_fifo_size(). - */ -static inline uint8_t *av_fifo_peek2(const AVFifoBuffer *f, int offs) -{ - uint8_t *ptr = f->rptr + offs; - if (ptr >= f->end) - ptr = f->buffer + (ptr - f->end); - else if (ptr < f->buffer) - ptr = f->end - (f->buffer - ptr); - return ptr; -} - -#endif /* AVUTIL_FIFO_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/file.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/file.h deleted file mode 100644 index b47ef8083d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/file.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_FILE_H -#define AVUTIL_FILE_H - -#include - -#include "avutil.h" - -/** - * @file - * Misc file utilities. - */ - -/** - * Read the file with name filename, and put its content in a newly - * allocated buffer or map it with mmap() when available. - * In case of success set *bufptr to the read or mmapped buffer, and - * *size to the size in bytes of the buffer in *bufptr. - * The returned buffer must be released with av_file_unmap(). - * - * @param log_offset loglevel offset used for logging - * @param log_ctx context used for logging - * @return a non negative number in case of success, a negative value - * corresponding to an AVERROR error code in case of failure - */ -int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, - int log_offset, void *log_ctx); - -/** - * Unmap or free the buffer bufptr created by av_file_map(). - * - * @param size size in bytes of bufptr, must be the same as returned - * by av_file_map() - */ -void av_file_unmap(uint8_t *bufptr, size_t size); - -/** - * Wrapper to work around the lack of mkstemp() on mingw. - * Also, tries to create file in /tmp first, if possible. - * *prefix can be a character constant; *filename will be allocated internally. - * @return file descriptor of opened file (or -1 on error) - * and opened file name in **filename. - * @note On very old libcs it is necessary to set a secure umask before - * calling this, av_tempfile() cant call umask itself as it is used in - * libraries and could interfere with the calling application. - */ -int av_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx); - -#endif /* AVUTIL_FILE_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/hmac.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/hmac.h deleted file mode 100644 index aef84c6439..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/hmac.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2012 Martin Storsjo - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_HMAC_H -#define AVUTIL_HMAC_H - -#include - -/** - * @defgroup lavu_hmac HMAC - * @ingroup lavu_crypto - * @{ - */ - -enum AVHMACType { - AV_HMAC_MD5, - AV_HMAC_SHA1, -}; - -typedef struct AVHMAC AVHMAC; - -/** - * Allocate an AVHMAC context. - * @param type The hash function used for the HMAC. - */ -AVHMAC *av_hmac_alloc(enum AVHMACType type); - -/** - * Free an AVHMAC context. - * @param ctx The context to free, may be NULL - */ -void av_hmac_free(AVHMAC *ctx); - -/** - * Initialize an AVHMAC context with an authentication key. - * @param ctx The HMAC context - * @param key The authentication key - * @param keylen The length of the key, in bytes - */ -void av_hmac_init(AVHMAC *ctx, const uint8_t *key, unsigned int keylen); - -/** - * Hash data with the HMAC. - * @param ctx The HMAC context - * @param data The data to hash - * @param len The length of the data, in bytes - */ -void av_hmac_update(AVHMAC *ctx, const uint8_t *data, unsigned int len); - -/** - * Finish hashing and output the HMAC digest. - * @param ctx The HMAC context - * @param out The output buffer to write the digest into - * @param outlen The length of the out buffer, in bytes - * @return The number of bytes written to out, or a negative error code. - */ -int av_hmac_final(AVHMAC *ctx, uint8_t *out, unsigned int outlen); - -/** - * Hash an array of data with a key. - * @param ctx The HMAC context - * @param data The data to hash - * @param len The length of the data, in bytes - * @param key The authentication key - * @param keylen The length of the key, in bytes - * @param out The output buffer to write the digest into - * @param outlen The length of the out buffer, in bytes - * @return The number of bytes written to out, or a negative error code. - */ -int av_hmac_calc(AVHMAC *ctx, const uint8_t *data, unsigned int len, - const uint8_t *key, unsigned int keylen, - uint8_t *out, unsigned int outlen); - -/** - * @} - */ - -#endif /* AVUTIL_HMAC_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/imgutils.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/imgutils.h deleted file mode 100644 index ab32d667d3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/imgutils.h +++ /dev/null @@ -1,200 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_IMGUTILS_H -#define AVUTIL_IMGUTILS_H - -/** - * @file - * misc image utilities - * - * @addtogroup lavu_picture - * @{ - */ - -#include "avutil.h" -#include "pixdesc.h" - -/** - * Compute the max pixel step for each plane of an image with a - * format described by pixdesc. - * - * The pixel step is the distance in bytes between the first byte of - * the group of bytes which describe a pixel component and the first - * byte of the successive group in the same plane for the same - * component. - * - * @param max_pixsteps an array which is filled with the max pixel step - * for each plane. Since a plane may contain different pixel - * components, the computed max_pixsteps[plane] is relative to the - * component in the plane with the max pixel step. - * @param max_pixstep_comps an array which is filled with the component - * for each plane which has the max pixel step. May be NULL. - */ -void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4], - const AVPixFmtDescriptor *pixdesc); - -/** - * Compute the size of an image line with format pix_fmt and width - * width for the plane plane. - * - * @return the computed size in bytes - */ -int av_image_get_linesize(enum AVPixelFormat pix_fmt, int width, int plane); - -/** - * Fill plane linesizes for an image with pixel format pix_fmt and - * width width. - * - * @param linesizes array to be filled with the linesize for each plane - * @return >= 0 in case of success, a negative error code otherwise - */ -int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width); - -/** - * Fill plane data pointers for an image with pixel format pix_fmt and - * height height. - * - * @param data pointers array to be filled with the pointer for each image plane - * @param ptr the pointer to a buffer which will contain the image - * @param linesizes the array containing the linesize for each - * plane, should be filled by av_image_fill_linesizes() - * @return the size in bytes required for the image buffer, a negative - * error code in case of failure - */ -int av_image_fill_pointers(uint8_t *data[4], enum AVPixelFormat pix_fmt, int height, - uint8_t *ptr, const int linesizes[4]); - -/** - * Allocate an image with size w and h and pixel format pix_fmt, and - * fill pointers and linesizes accordingly. - * The allocated image buffer has to be freed by using - * av_freep(&pointers[0]). - * - * @param align the value to use for buffer size alignment - * @return the size in bytes required for the image buffer, a negative - * error code in case of failure - */ -int av_image_alloc(uint8_t *pointers[4], int linesizes[4], - int w, int h, enum AVPixelFormat pix_fmt, int align); - -/** - * Copy image plane from src to dst. - * That is, copy "height" number of lines of "bytewidth" bytes each. - * The first byte of each successive line is separated by *_linesize - * bytes. - * - * bytewidth must be contained by both absolute values of dst_linesize - * and src_linesize, otherwise the function behavior is undefined. - * - * @param dst_linesize linesize for the image plane in dst - * @param src_linesize linesize for the image plane in src - */ -void av_image_copy_plane(uint8_t *dst, int dst_linesize, - const uint8_t *src, int src_linesize, - int bytewidth, int height); - -/** - * Copy image in src_data to dst_data. - * - * @param dst_linesizes linesizes for the image in dst_data - * @param src_linesizes linesizes for the image in src_data - */ -void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4], - const uint8_t *src_data[4], const int src_linesizes[4], - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * Setup the data pointers and linesizes based on the specified image - * parameters and the provided array. - * - * The fields of the given image are filled in by using the src - * address which points to the image data buffer. Depending on the - * specified pixel format, one or multiple image data pointers and - * line sizes will be set. If a planar format is specified, several - * pointers will be set pointing to the different picture planes and - * the line sizes of the different planes will be stored in the - * lines_sizes array. Call with src == NULL to get the required - * size for the src buffer. - * - * To allocate the buffer and fill in the dst_data and dst_linesize in - * one call, use av_image_alloc(). - * - * @param dst_data data pointers to be filled in - * @param dst_linesizes linesizes for the image in dst_data to be filled in - * @param src buffer which will contain or contains the actual image data, can be NULL - * @param pix_fmt the pixel format of the image - * @param width the width of the image in pixels - * @param height the height of the image in pixels - * @param align the value used in src for linesize alignment - * @return the size in bytes required for src, a negative error code - * in case of failure - */ -int av_image_fill_arrays(uint8_t *dst_data[4], int dst_linesize[4], - const uint8_t *src, - enum AVPixelFormat pix_fmt, int width, int height, int align); - -/** - * Return the size in bytes of the amount of data required to store an - * image with the given parameters. - * - * @param[in] align the assumed linesize alignment - */ -int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align); - -/** - * Copy image data from an image into a buffer. - * - * av_image_get_buffer_size() can be used to compute the required size - * for the buffer to fill. - * - * @param dst a buffer into which picture data will be copied - * @param dst_size the size in bytes of dst - * @param src_data pointers containing the source image data - * @param src_linesizes linesizes for the image in src_data - * @param pix_fmt the pixel format of the source image - * @param width the width of the source image in pixels - * @param height the height of the source image in pixels - * @param align the assumed linesize alignment for dst - * @return the number of bytes written to dst, or a negative value - * (error code) on error - */ -int av_image_copy_to_buffer(uint8_t *dst, int dst_size, - const uint8_t * const src_data[4], const int src_linesize[4], - enum AVPixelFormat pix_fmt, int width, int height, int align); - -/** - * Check if the given dimension of an image is valid, meaning that all - * bytes of the image can be addressed with a signed int. - * - * @param w the width of the picture - * @param h the height of the picture - * @param log_offset the offset to sum to the log level for logging with log_ctx - * @param log_ctx the parent logging context, it may be NULL - * @return >= 0 if valid, a negative error code otherwise - */ -int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx); - -int avpriv_set_systematic_pal2(uint32_t pal[256], enum AVPixelFormat pix_fmt); - -/** - * @} - */ - - -#endif /* AVUTIL_IMGUTILS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intfloat.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intfloat.h deleted file mode 100644 index 38d26ad87e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intfloat.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Mans Rullgard - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTFLOAT_H -#define AVUTIL_INTFLOAT_H - -#include -#include "attributes.h" - -union av_intfloat32 { - uint32_t i; - float f; -}; - -union av_intfloat64 { - uint64_t i; - double f; -}; - -/** - * Reinterpret a 32-bit integer as a float. - */ -static av_always_inline float av_int2float(uint32_t i) -{ - union av_intfloat32 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a float as a 32-bit integer. - */ -static av_always_inline uint32_t av_float2int(float f) -{ - union av_intfloat32 v; - v.f = f; - return v.i; -} - -/** - * Reinterpret a 64-bit integer as a double. - */ -static av_always_inline double av_int2double(uint64_t i) -{ - union av_intfloat64 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a double as a 64-bit integer. - */ -static av_always_inline uint64_t av_double2int(double f) -{ - union av_intfloat64 v; - v.f = f; - return v.i; -} - -#endif /* AVUTIL_INTFLOAT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intfloat_readwrite.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intfloat_readwrite.h deleted file mode 100644 index 9709f4dae4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intfloat_readwrite.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * copyright (c) 2005 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTFLOAT_READWRITE_H -#define AVUTIL_INTFLOAT_READWRITE_H - -#include -#include "attributes.h" - -/* IEEE 80 bits extended float */ -typedef struct AVExtFloat { - uint8_t exponent[2]; - uint8_t mantissa[8]; -} AVExtFloat; - -attribute_deprecated double av_int2dbl(int64_t v) av_const; -attribute_deprecated float av_int2flt(int32_t v) av_const; -attribute_deprecated double av_ext2dbl(const AVExtFloat ext) av_const; -attribute_deprecated int64_t av_dbl2int(double d) av_const; -attribute_deprecated int32_t av_flt2int(float d) av_const; -attribute_deprecated AVExtFloat av_dbl2ext(double d) av_const; - -#endif /* AVUTIL_INTFLOAT_READWRITE_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intreadwrite.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intreadwrite.h deleted file mode 100644 index 7ee6977554..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/intreadwrite.h +++ /dev/null @@ -1,621 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTREADWRITE_H -#define AVUTIL_INTREADWRITE_H - -#include -#include "libavutil/avconfig.h" -#include "attributes.h" -#include "bswap.h" - -typedef union { - uint64_t u64; - uint32_t u32[2]; - uint16_t u16[4]; - uint8_t u8 [8]; - double f64; - float f32[2]; -} av_alias av_alias64; - -typedef union { - uint32_t u32; - uint16_t u16[2]; - uint8_t u8 [4]; - float f32; -} av_alias av_alias32; - -typedef union { - uint16_t u16; - uint8_t u8 [2]; -} av_alias av_alias16; - -/* - * Arch-specific headers can provide any combination of - * AV_[RW][BLN](16|24|32|48|64) and AV_(COPY|SWAP|ZERO)(64|128) macros. - * Preprocessor symbols must be defined, even if these are implemented - * as inline functions. - */ - -#ifdef HAVE_AV_CONFIG_H - -#include "config.h" - -#if ARCH_ARM -# include "arm/intreadwrite.h" -#elif ARCH_AVR32 -# include "avr32/intreadwrite.h" -#elif ARCH_MIPS -# include "mips/intreadwrite.h" -#elif ARCH_PPC -# include "ppc/intreadwrite.h" -#elif ARCH_TOMI -# include "tomi/intreadwrite.h" -#elif ARCH_X86 -# include "x86/intreadwrite.h" -#endif - -#endif /* HAVE_AV_CONFIG_H */ - -/* - * Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers. - */ - -#if AV_HAVE_BIGENDIAN - -# if defined(AV_RN16) && !defined(AV_RB16) -# define AV_RB16(p) AV_RN16(p) -# elif !defined(AV_RN16) && defined(AV_RB16) -# define AV_RN16(p) AV_RB16(p) -# endif - -# if defined(AV_WN16) && !defined(AV_WB16) -# define AV_WB16(p, v) AV_WN16(p, v) -# elif !defined(AV_WN16) && defined(AV_WB16) -# define AV_WN16(p, v) AV_WB16(p, v) -# endif - -# if defined(AV_RN24) && !defined(AV_RB24) -# define AV_RB24(p) AV_RN24(p) -# elif !defined(AV_RN24) && defined(AV_RB24) -# define AV_RN24(p) AV_RB24(p) -# endif - -# if defined(AV_WN24) && !defined(AV_WB24) -# define AV_WB24(p, v) AV_WN24(p, v) -# elif !defined(AV_WN24) && defined(AV_WB24) -# define AV_WN24(p, v) AV_WB24(p, v) -# endif - -# if defined(AV_RN32) && !defined(AV_RB32) -# define AV_RB32(p) AV_RN32(p) -# elif !defined(AV_RN32) && defined(AV_RB32) -# define AV_RN32(p) AV_RB32(p) -# endif - -# if defined(AV_WN32) && !defined(AV_WB32) -# define AV_WB32(p, v) AV_WN32(p, v) -# elif !defined(AV_WN32) && defined(AV_WB32) -# define AV_WN32(p, v) AV_WB32(p, v) -# endif - -# if defined(AV_RN48) && !defined(AV_RB48) -# define AV_RB48(p) AV_RN48(p) -# elif !defined(AV_RN48) && defined(AV_RB48) -# define AV_RN48(p) AV_RB48(p) -# endif - -# if defined(AV_WN48) && !defined(AV_WB48) -# define AV_WB48(p, v) AV_WN48(p, v) -# elif !defined(AV_WN48) && defined(AV_WB48) -# define AV_WN48(p, v) AV_WB48(p, v) -# endif - -# if defined(AV_RN64) && !defined(AV_RB64) -# define AV_RB64(p) AV_RN64(p) -# elif !defined(AV_RN64) && defined(AV_RB64) -# define AV_RN64(p) AV_RB64(p) -# endif - -# if defined(AV_WN64) && !defined(AV_WB64) -# define AV_WB64(p, v) AV_WN64(p, v) -# elif !defined(AV_WN64) && defined(AV_WB64) -# define AV_WN64(p, v) AV_WB64(p, v) -# endif - -#else /* AV_HAVE_BIGENDIAN */ - -# if defined(AV_RN16) && !defined(AV_RL16) -# define AV_RL16(p) AV_RN16(p) -# elif !defined(AV_RN16) && defined(AV_RL16) -# define AV_RN16(p) AV_RL16(p) -# endif - -# if defined(AV_WN16) && !defined(AV_WL16) -# define AV_WL16(p, v) AV_WN16(p, v) -# elif !defined(AV_WN16) && defined(AV_WL16) -# define AV_WN16(p, v) AV_WL16(p, v) -# endif - -# if defined(AV_RN24) && !defined(AV_RL24) -# define AV_RL24(p) AV_RN24(p) -# elif !defined(AV_RN24) && defined(AV_RL24) -# define AV_RN24(p) AV_RL24(p) -# endif - -# if defined(AV_WN24) && !defined(AV_WL24) -# define AV_WL24(p, v) AV_WN24(p, v) -# elif !defined(AV_WN24) && defined(AV_WL24) -# define AV_WN24(p, v) AV_WL24(p, v) -# endif - -# if defined(AV_RN32) && !defined(AV_RL32) -# define AV_RL32(p) AV_RN32(p) -# elif !defined(AV_RN32) && defined(AV_RL32) -# define AV_RN32(p) AV_RL32(p) -# endif - -# if defined(AV_WN32) && !defined(AV_WL32) -# define AV_WL32(p, v) AV_WN32(p, v) -# elif !defined(AV_WN32) && defined(AV_WL32) -# define AV_WN32(p, v) AV_WL32(p, v) -# endif - -# if defined(AV_RN48) && !defined(AV_RL48) -# define AV_RL48(p) AV_RN48(p) -# elif !defined(AV_RN48) && defined(AV_RL48) -# define AV_RN48(p) AV_RL48(p) -# endif - -# if defined(AV_WN48) && !defined(AV_WL48) -# define AV_WL48(p, v) AV_WN48(p, v) -# elif !defined(AV_WN48) && defined(AV_WL48) -# define AV_WN48(p, v) AV_WL48(p, v) -# endif - -# if defined(AV_RN64) && !defined(AV_RL64) -# define AV_RL64(p) AV_RN64(p) -# elif !defined(AV_RN64) && defined(AV_RL64) -# define AV_RN64(p) AV_RL64(p) -# endif - -# if defined(AV_WN64) && !defined(AV_WL64) -# define AV_WL64(p, v) AV_WN64(p, v) -# elif !defined(AV_WN64) && defined(AV_WL64) -# define AV_WN64(p, v) AV_WL64(p, v) -# endif - -#endif /* !AV_HAVE_BIGENDIAN */ - -/* - * Define AV_[RW]N helper macros to simplify definitions not provided - * by per-arch headers. - */ - -#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__) - -union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias; -union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias; -union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias; - -# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l) -# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v)) - -#elif defined(__DECC) - -# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p))) -# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v)) - -#elif AV_HAVE_FAST_UNALIGNED - -# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s) -# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v)) - -#else - -#ifndef AV_RB16 -# define AV_RB16(x) \ - ((((const uint8_t*)(x))[0] << 8) | \ - ((const uint8_t*)(x))[1]) -#endif -#ifndef AV_WB16 -# define AV_WB16(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[1] = (d); \ - ((uint8_t*)(p))[0] = (d)>>8; \ - } while(0) -#endif - -#ifndef AV_RL16 -# define AV_RL16(x) \ - ((((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL16 -# define AV_WL16(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - } while(0) -#endif - -#ifndef AV_RB32 -# define AV_RB32(x) \ - (((uint32_t)((const uint8_t*)(x))[0] << 24) | \ - (((const uint8_t*)(x))[1] << 16) | \ - (((const uint8_t*)(x))[2] << 8) | \ - ((const uint8_t*)(x))[3]) -#endif -#ifndef AV_WB32 -# define AV_WB32(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[3] = (d); \ - ((uint8_t*)(p))[2] = (d)>>8; \ - ((uint8_t*)(p))[1] = (d)>>16; \ - ((uint8_t*)(p))[0] = (d)>>24; \ - } while(0) -#endif - -#ifndef AV_RL32 -# define AV_RL32(x) \ - (((uint32_t)((const uint8_t*)(x))[3] << 24) | \ - (((const uint8_t*)(x))[2] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL32 -# define AV_WL32(p, darg) do { \ - unsigned d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - } while(0) -#endif - -#ifndef AV_RB64 -# define AV_RB64(x) \ - (((uint64_t)((const uint8_t*)(x))[0] << 56) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 48) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[5] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ - (uint64_t)((const uint8_t*)(x))[7]) -#endif -#ifndef AV_WB64 -# define AV_WB64(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[7] = (d); \ - ((uint8_t*)(p))[6] = (d)>>8; \ - ((uint8_t*)(p))[5] = (d)>>16; \ - ((uint8_t*)(p))[4] = (d)>>24; \ - ((uint8_t*)(p))[3] = (d)>>32; \ - ((uint8_t*)(p))[2] = (d)>>40; \ - ((uint8_t*)(p))[1] = (d)>>48; \ - ((uint8_t*)(p))[0] = (d)>>56; \ - } while(0) -#endif - -#ifndef AV_RL64 -# define AV_RL64(x) \ - (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ - ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ - ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ - (uint64_t)((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL64 -# define AV_WL64(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - ((uint8_t*)(p))[4] = (d)>>32; \ - ((uint8_t*)(p))[5] = (d)>>40; \ - ((uint8_t*)(p))[6] = (d)>>48; \ - ((uint8_t*)(p))[7] = (d)>>56; \ - } while(0) -#endif - -#if AV_HAVE_BIGENDIAN -# define AV_RN(s, p) AV_RB##s(p) -# define AV_WN(s, p, v) AV_WB##s(p, v) -#else -# define AV_RN(s, p) AV_RL##s(p) -# define AV_WN(s, p, v) AV_WL##s(p, v) -#endif - -#endif /* HAVE_FAST_UNALIGNED */ - -#ifndef AV_RN16 -# define AV_RN16(p) AV_RN(16, p) -#endif - -#ifndef AV_RN32 -# define AV_RN32(p) AV_RN(32, p) -#endif - -#ifndef AV_RN64 -# define AV_RN64(p) AV_RN(64, p) -#endif - -#ifndef AV_WN16 -# define AV_WN16(p, v) AV_WN(16, p, v) -#endif - -#ifndef AV_WN32 -# define AV_WN32(p, v) AV_WN(32, p, v) -#endif - -#ifndef AV_WN64 -# define AV_WN64(p, v) AV_WN(64, p, v) -#endif - -#if AV_HAVE_BIGENDIAN -# define AV_RB(s, p) AV_RN##s(p) -# define AV_WB(s, p, v) AV_WN##s(p, v) -# define AV_RL(s, p) av_bswap##s(AV_RN##s(p)) -# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v)) -#else -# define AV_RB(s, p) av_bswap##s(AV_RN##s(p)) -# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v)) -# define AV_RL(s, p) AV_RN##s(p) -# define AV_WL(s, p, v) AV_WN##s(p, v) -#endif - -#define AV_RB8(x) (((const uint8_t*)(x))[0]) -#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) - -#define AV_RL8(x) AV_RB8(x) -#define AV_WL8(p, d) AV_WB8(p, d) - -#ifndef AV_RB16 -# define AV_RB16(p) AV_RB(16, p) -#endif -#ifndef AV_WB16 -# define AV_WB16(p, v) AV_WB(16, p, v) -#endif - -#ifndef AV_RL16 -# define AV_RL16(p) AV_RL(16, p) -#endif -#ifndef AV_WL16 -# define AV_WL16(p, v) AV_WL(16, p, v) -#endif - -#ifndef AV_RB32 -# define AV_RB32(p) AV_RB(32, p) -#endif -#ifndef AV_WB32 -# define AV_WB32(p, v) AV_WB(32, p, v) -#endif - -#ifndef AV_RL32 -# define AV_RL32(p) AV_RL(32, p) -#endif -#ifndef AV_WL32 -# define AV_WL32(p, v) AV_WL(32, p, v) -#endif - -#ifndef AV_RB64 -# define AV_RB64(p) AV_RB(64, p) -#endif -#ifndef AV_WB64 -# define AV_WB64(p, v) AV_WB(64, p, v) -#endif - -#ifndef AV_RL64 -# define AV_RL64(p) AV_RL(64, p) -#endif -#ifndef AV_WL64 -# define AV_WL64(p, v) AV_WL(64, p, v) -#endif - -#ifndef AV_RB24 -# define AV_RB24(x) \ - ((((const uint8_t*)(x))[0] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[2]) -#endif -#ifndef AV_WB24 -# define AV_WB24(p, d) do { \ - ((uint8_t*)(p))[2] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[0] = (d)>>16; \ - } while(0) -#endif - -#ifndef AV_RL24 -# define AV_RL24(x) \ - ((((const uint8_t*)(x))[2] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL24 -# define AV_WL24(p, d) do { \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - } while(0) -#endif - -#ifndef AV_RB48 -# define AV_RB48(x) \ - (((uint64_t)((const uint8_t*)(x))[0] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 8) | \ - (uint64_t)((const uint8_t*)(x))[5]) -#endif -#ifndef AV_WB48 -# define AV_WB48(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[5] = (d); \ - ((uint8_t*)(p))[4] = (d)>>8; \ - ((uint8_t*)(p))[3] = (d)>>16; \ - ((uint8_t*)(p))[2] = (d)>>24; \ - ((uint8_t*)(p))[1] = (d)>>32; \ - ((uint8_t*)(p))[0] = (d)>>40; \ - } while(0) -#endif - -#ifndef AV_RL48 -# define AV_RL48(x) \ - (((uint64_t)((const uint8_t*)(x))[5] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ - (uint64_t)((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL48 -# define AV_WL48(p, darg) do { \ - uint64_t d = (darg); \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - ((uint8_t*)(p))[4] = (d)>>32; \ - ((uint8_t*)(p))[5] = (d)>>40; \ - } while(0) -#endif - -/* - * The AV_[RW]NA macros access naturally aligned data - * in a type-safe way. - */ - -#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s) -#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v)) - -#ifndef AV_RN16A -# define AV_RN16A(p) AV_RNA(16, p) -#endif - -#ifndef AV_RN32A -# define AV_RN32A(p) AV_RNA(32, p) -#endif - -#ifndef AV_RN64A -# define AV_RN64A(p) AV_RNA(64, p) -#endif - -#ifndef AV_WN16A -# define AV_WN16A(p, v) AV_WNA(16, p, v) -#endif - -#ifndef AV_WN32A -# define AV_WN32A(p, v) AV_WNA(32, p, v) -#endif - -#ifndef AV_WN64A -# define AV_WN64A(p, v) AV_WNA(64, p, v) -#endif - -/* - * The AV_COPYxxU macros are suitable for copying data to/from unaligned - * memory locations. - */ - -#define AV_COPYU(n, d, s) AV_WN##n(d, AV_RN##n(s)); - -#ifndef AV_COPY16U -# define AV_COPY16U(d, s) AV_COPYU(16, d, s) -#endif - -#ifndef AV_COPY32U -# define AV_COPY32U(d, s) AV_COPYU(32, d, s) -#endif - -#ifndef AV_COPY64U -# define AV_COPY64U(d, s) AV_COPYU(64, d, s) -#endif - -#ifndef AV_COPY128U -# define AV_COPY128U(d, s) \ - do { \ - AV_COPY64U(d, s); \ - AV_COPY64U((char *)(d) + 8, (const char *)(s) + 8); \ - } while(0) -#endif - -/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be - * naturally aligned. They may be implemented using MMX, - * so emms_c() must be called before using any float code - * afterwards. - */ - -#define AV_COPY(n, d, s) \ - (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n) - -#ifndef AV_COPY16 -# define AV_COPY16(d, s) AV_COPY(16, d, s) -#endif - -#ifndef AV_COPY32 -# define AV_COPY32(d, s) AV_COPY(32, d, s) -#endif - -#ifndef AV_COPY64 -# define AV_COPY64(d, s) AV_COPY(64, d, s) -#endif - -#ifndef AV_COPY128 -# define AV_COPY128(d, s) \ - do { \ - AV_COPY64(d, s); \ - AV_COPY64((char*)(d)+8, (char*)(s)+8); \ - } while(0) -#endif - -#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b)) - -#ifndef AV_SWAP64 -# define AV_SWAP64(a, b) AV_SWAP(64, a, b) -#endif - -#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0) - -#ifndef AV_ZERO16 -# define AV_ZERO16(d) AV_ZERO(16, d) -#endif - -#ifndef AV_ZERO32 -# define AV_ZERO32(d) AV_ZERO(32, d) -#endif - -#ifndef AV_ZERO64 -# define AV_ZERO64(d) AV_ZERO(64, d) -#endif - -#ifndef AV_ZERO128 -# define AV_ZERO128(d) \ - do { \ - AV_ZERO64(d); \ - AV_ZERO64((char*)(d)+8); \ - } while(0) -#endif - -#endif /* AVUTIL_INTREADWRITE_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/lfg.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/lfg.h deleted file mode 100644 index ec90562cf2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/lfg.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Lagged Fibonacci PRNG - * Copyright (c) 2008 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LFG_H -#define AVUTIL_LFG_H - -typedef struct AVLFG { - unsigned int state[64]; - int index; -} AVLFG; - -void av_lfg_init(AVLFG *c, unsigned int seed); - -/** - * Get the next random unsigned 32-bit number using an ALFG. - * - * Please also consider a simple LCG like state= state*1664525+1013904223, - * it may be good enough and faster for your specific use case. - */ -static inline unsigned int av_lfg_get(AVLFG *c){ - c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63]; - return c->state[c->index++ & 63]; -} - -/** - * Get the next random unsigned 32-bit number using a MLFG. - * - * Please also consider av_lfg_get() above, it is faster. - */ -static inline unsigned int av_mlfg_get(AVLFG *c){ - unsigned int a= c->state[(c->index-55) & 63]; - unsigned int b= c->state[(c->index-24) & 63]; - return c->state[c->index++ & 63] = 2*a*b+a+b; -} - -/** - * Get the next two numbers generated by a Box-Muller Gaussian - * generator using the random numbers issued by lfg. - * - * @param out array where the two generated numbers are placed - */ -void av_bmg_get(AVLFG *lfg, double out[2]); - -#endif /* AVUTIL_LFG_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/log.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/log.h deleted file mode 100644 index 7ea95fa503..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/log.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LOG_H -#define AVUTIL_LOG_H - -#include -#include "avutil.h" -#include "attributes.h" - -typedef enum { - AV_CLASS_CATEGORY_NA = 0, - AV_CLASS_CATEGORY_INPUT, - AV_CLASS_CATEGORY_OUTPUT, - AV_CLASS_CATEGORY_MUXER, - AV_CLASS_CATEGORY_DEMUXER, - AV_CLASS_CATEGORY_ENCODER, - AV_CLASS_CATEGORY_DECODER, - AV_CLASS_CATEGORY_FILTER, - AV_CLASS_CATEGORY_BITSTREAM_FILTER, - AV_CLASS_CATEGORY_SWSCALER, - AV_CLASS_CATEGORY_SWRESAMPLER, - AV_CLASS_CATEGORY_NB, ///< not part of ABI/API -}AVClassCategory; - -struct AVOptionRanges; - -/** - * Describe the class of an AVClass context structure. That is an - * arbitrary struct of which the first field is a pointer to an - * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). - */ -typedef struct AVClass { - /** - * The name of the class; usually it is the same name as the - * context structure type to which the AVClass is associated. - */ - const char* class_name; - - /** - * A pointer to a function which returns the name of a context - * instance ctx associated with the class. - */ - const char* (*item_name)(void* ctx); - - /** - * a pointer to the first option specified in the class if any or NULL - * - * @see av_set_default_options() - */ - const struct AVOption *option; - - /** - * LIBAVUTIL_VERSION with which this structure was created. - * This is used to allow fields to be added without requiring major - * version bumps everywhere. - */ - - int version; - - /** - * Offset in the structure where log_level_offset is stored. - * 0 means there is no such variable - */ - int log_level_offset_offset; - - /** - * Offset in the structure where a pointer to the parent context for - * logging is stored. For example a decoder could pass its AVCodecContext - * to eval as such a parent context, which an av_log() implementation - * could then leverage to display the parent context. - * The offset can be NULL. - */ - int parent_log_context_offset; - - /** - * Return next AVOptions-enabled child or NULL - */ - void* (*child_next)(void *obj, void *prev); - - /** - * Return an AVClass corresponding to the next potential - * AVOptions-enabled child. - * - * The difference between child_next and this is that - * child_next iterates over _already existing_ objects, while - * child_class_next iterates over _all possible_ children. - */ - const struct AVClass* (*child_class_next)(const struct AVClass *prev); - - /** - * Category used for visualization (like color) - * This is only set if the category is equal for all objects using this class. - * available since version (51 << 16 | 56 << 8 | 100) - */ - AVClassCategory category; - - /** - * Callback to return the category. - * available since version (51 << 16 | 59 << 8 | 100) - */ - AVClassCategory (*get_category)(void* ctx); - - /** - * Callback to return the supported/allowed ranges. - * available since version (52.12) - */ - int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags); -} AVClass; - -/* av_log API */ - -#define AV_LOG_QUIET -8 - -/** - * Something went really wrong and we will crash now. - */ -#define AV_LOG_PANIC 0 - -/** - * Something went wrong and recovery is not possible. - * For example, no header was found for a format which depends - * on headers or an illegal combination of parameters is used. - */ -#define AV_LOG_FATAL 8 - -/** - * Something went wrong and cannot losslessly be recovered. - * However, not all future data is affected. - */ -#define AV_LOG_ERROR 16 - -/** - * Something somehow does not look correct. This may or may not - * lead to problems. An example would be the use of '-vstrict -2'. - */ -#define AV_LOG_WARNING 24 - -#define AV_LOG_INFO 32 -#define AV_LOG_VERBOSE 40 - -/** - * Stuff which is only useful for libav* developers. - */ -#define AV_LOG_DEBUG 48 - -#define AV_LOG_MAX_OFFSET (AV_LOG_DEBUG - AV_LOG_QUIET) - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different av_vlog callback - * function. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message, lower values signifying - * higher importance. - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @see av_vlog - */ -void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); - -void av_vlog(void *avcl, int level, const char *fmt, va_list); -int av_log_get_level(void); -void av_log_set_level(int); -void av_log_set_callback(void (*)(void*, int, const char*, va_list)); -void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl); -const char* av_default_item_name(void* ctx); -AVClassCategory av_default_get_category(void *ptr); - -/** - * Format a line of log the same way as the default callback. - * @param line buffer to receive the formated line - * @param line_size size of the buffer - * @param print_prefix used to store whether the prefix must be printed; - * must point to a persistent integer initially set to 1 - */ -void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, - char *line, int line_size, int *print_prefix); - -/** - * av_dlog macros - * Useful to print debug messages that shouldn't get compiled in normally. - */ - -#ifdef DEBUG -# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) -#else -# define av_dlog(pctx, ...) do { if (0) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0) -#endif - -/** - * Skip repeated messages, this requires the user app to use av_log() instead of - * (f)printf as the 2 would otherwise interfere and lead to - * "Last message repeated x times" messages below (f)printf messages with some - * bad luck. - * Also to receive the last, "last repeated" line if any, the user app must - * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end - */ -#define AV_LOG_SKIP_REPEATED 1 -void av_log_set_flags(int arg); - -#endif /* AVUTIL_LOG_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/lzo.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/lzo.h deleted file mode 100644 index c03403992d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/lzo.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * LZO 1x decompression - * copyright (c) 2006 Reimar Doeffinger - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LZO_H -#define AVUTIL_LZO_H - -/** - * @defgroup lavu_lzo LZO - * @ingroup lavu_crypto - * - * @{ - */ - -#include - -/** @name Error flags returned by av_lzo1x_decode - * @{ */ -/// end of the input buffer reached before decoding finished -#define AV_LZO_INPUT_DEPLETED 1 -/// decoded data did not fit into output buffer -#define AV_LZO_OUTPUT_FULL 2 -/// a reference to previously decoded data was wrong -#define AV_LZO_INVALID_BACKPTR 4 -/// a non-specific error in the compressed bitstream -#define AV_LZO_ERROR 8 -/** @} */ - -#define AV_LZO_INPUT_PADDING 8 -#define AV_LZO_OUTPUT_PADDING 12 - -/** - * @brief Decodes LZO 1x compressed data. - * @param out output buffer - * @param outlen size of output buffer, number of bytes left are returned here - * @param in input buffer - * @param inlen size of input buffer, number of bytes left are returned here - * @return 0 on success, otherwise a combination of the error flags above - * - * Make sure all buffers are appropriately padded, in must provide - * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes. - */ -int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); - -/** - * @} - */ - -#endif /* AVUTIL_LZO_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/mathematics.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/mathematics.h deleted file mode 100644 index 71f0392218..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/mathematics.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * copyright (c) 2005-2012 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_MATHEMATICS_H -#define AVUTIL_MATHEMATICS_H - -#include -#include -#include "attributes.h" -#include "rational.h" -#include "intfloat.h" - -#ifndef M_E -#define M_E 2.7182818284590452354 /* e */ -#endif -#ifndef M_LN2 -#define M_LN2 0.69314718055994530942 /* log_e 2 */ -#endif -#ifndef M_LN10 -#define M_LN10 2.30258509299404568402 /* log_e 10 */ -#endif -#ifndef M_LOG2_10 -#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ -#endif -#ifndef M_PHI -#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ -#endif -#ifndef M_PI -#define M_PI 3.14159265358979323846 /* pi */ -#endif -#ifndef M_SQRT1_2 -#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ -#endif -#ifndef M_SQRT2 -#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ -#endif -#ifndef NAN -#define NAN av_int2float(0x7fc00000) -#endif -#ifndef INFINITY -#define INFINITY av_int2float(0x7f800000) -#endif - -/** - * @addtogroup lavu_math - * @{ - */ - - -enum AVRounding { - AV_ROUND_ZERO = 0, ///< Round toward zero. - AV_ROUND_INF = 1, ///< Round away from zero. - AV_ROUND_DOWN = 2, ///< Round toward -infinity. - AV_ROUND_UP = 3, ///< Round toward +infinity. - AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. - AV_ROUND_PASS_MINMAX = 8192, ///< Flag to pass INT64_MIN/MAX through instead of rescaling, this avoids special cases for AV_NOPTS_VALUE -}; - -/** - * Return the greatest common divisor of a and b. - * If both a and b are 0 or either or both are <0 then behavior is - * undefined. - */ -int64_t av_const av_gcd(int64_t a, int64_t b); - -/** - * Rescale a 64-bit integer with rounding to nearest. - * A simple a*b/c isn't possible as it can overflow. - */ -int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; - -/** - * Rescale a 64-bit integer with specified rounding. - * A simple a*b/c isn't possible as it can overflow. - * - * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is - * INT64_MIN or INT64_MAX then a is passed through unchanged. - */ -int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers. - */ -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers with specified rounding. - * - * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is - * INT64_MIN or INT64_MAX then a is passed through unchanged. - */ -int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, - enum AVRounding) av_const; - -/** - * Compare 2 timestamps each in its own timebases. - * The result of the function is undefined if one of the timestamps - * is outside the int64_t range when represented in the others timebase. - * @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position - */ -int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); - -/** - * Compare 2 integers modulo mod. - * That is we compare integers a and b for which only the least - * significant log2(mod) bits are known. - * - * @param mod must be a power of 2 - * @return a negative value if a is smaller than b - * a positive value if a is greater than b - * 0 if a equals b - */ -int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); - -/** - * Rescale a timestamp while preserving known durations. - * - * @param in_ts Input timestamp - * @param in_tb Input timesbase - * @param fs_tb Duration and *last timebase - * @param duration duration till the next call - * @param out_tb Output timesbase - */ -int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb); - -/** - * @} - */ - -#endif /* AVUTIL_MATHEMATICS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/md5.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/md5.h deleted file mode 100644 index 1d7be9ff53..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/md5.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_MD5_H -#define AVUTIL_MD5_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_md5 MD5 - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_md5_size; - -struct AVMD5; - -struct AVMD5 *av_md5_alloc(void); -void av_md5_init(struct AVMD5 *ctx); -void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, const int len); -void av_md5_final(struct AVMD5 *ctx, uint8_t *dst); -void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len); - -/** - * @} - */ - -#endif /* AVUTIL_MD5_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/mem.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/mem.h deleted file mode 100644 index ced9453869..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/mem.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * memory handling functions - */ - -#ifndef AVUTIL_MEM_H -#define AVUTIL_MEM_H - -#include -#include - -#include "attributes.h" -#include "error.h" -#include "avutil.h" - -/** - * @addtogroup lavu_mem - * @{ - */ - - -#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v -#elif defined(__TI_COMPILER_VERSION__) - #define DECLARE_ALIGNED(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - t __attribute__((aligned(n))) v - #define DECLARE_ASM_CONST(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - static const t __attribute__((aligned(n))) v -#elif defined(__GNUC__) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v -#elif defined(_MSC_VER) - #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v - #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v -#else - #define DECLARE_ALIGNED(n,t,v) t v - #define DECLARE_ASM_CONST(n,t,v) static const t v -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) - #define av_malloc_attrib __attribute__((__malloc__)) -#else - #define av_malloc_attrib -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) - #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__))) -#else - #define av_alloc_size(...) -#endif - -/** - * Allocate a block of size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU). - * @param size Size in bytes for the memory block to be allocated. - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_mallocz() - */ -void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Helper function to allocate a block of size * nmemb bytes with - * using av_malloc() - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_malloc() - */ -av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size) -{ - if (size <= 0 || nmemb >= INT_MAX / size) - return NULL; - return av_malloc(nmemb * size); -} - -/** - * Allocate or reallocate a block of memory. - * If ptr is NULL and size > 0, allocate a new block. If - * size is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a memory block already allocated with - * av_malloc(z)() or av_realloc() or NULL. - * @param size Size in bytes for the memory block to be allocated or - * reallocated. - * @return Pointer to a newly reallocated block or NULL if the block - * cannot be reallocated or the function is used to free the memory block. - * @see av_fast_realloc() - */ -void *av_realloc(void *ptr, size_t size) av_alloc_size(2); - -/** - * Allocate or reallocate a block of memory. - * This function does the same thing as av_realloc, except: - * - It takes two arguments and checks the result of the multiplication for - * integer overflow. - * - It frees the input block in case of failure, thus avoiding the memory - * leak with the classic "buf = realloc(buf); if (!buf) return -1;". - */ -void *av_realloc_f(void *ptr, size_t nelem, size_t elsize); - -/** - * Free a memory block which has been allocated with av_malloc(z)() or - * av_realloc(). - * @param ptr Pointer to the memory block which should be freed. - * @note ptr = NULL is explicitly allowed. - * @note It is recommended that you use av_freep() instead. - * @see av_freep() - */ -void av_free(void *ptr); - -/** - * Allocate a block of size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU) and - * zero all the bytes of the block. - * @param size Size in bytes for the memory block to be allocated. - * @return Pointer to the allocated block, NULL if it cannot be allocated. - * @see av_malloc() - */ -void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a block of nmemb * size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU) and - * zero all the bytes of the block. - * The allocation will fail if nmemb * size is greater than or equal - * to INT_MAX. - * @param nmemb - * @param size - * @return Pointer to the allocated block, NULL if it cannot be allocated. - */ -void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib; - -/** - * Helper function to allocate a block of size * nmemb bytes with - * using av_mallocz() - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_mallocz() - * @see av_malloc_array() - */ -av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size) -{ - if (size <= 0 || nmemb >= INT_MAX / size) - return NULL; - return av_mallocz(nmemb * size); -} - -/** - * Duplicate the string s. - * @param s string to be duplicated - * @return Pointer to a newly allocated string containing a - * copy of s or NULL if the string cannot be allocated. - */ -char *av_strdup(const char *s) av_malloc_attrib; - -/** - * Free a memory block which has been allocated with av_malloc(z)() or - * av_realloc() and set the pointer pointing to it to NULL. - * @param ptr Pointer to the pointer to the memory block which should - * be freed. - * @see av_free() - */ -void av_freep(void *ptr); - -/** - * Add an element to a dynamic array. - * - * @param tab_ptr Pointer to the array. - * @param nb_ptr Pointer to the number of elements in the array. - * @param elem Element to be added. - */ -void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem); - -/** - * Multiply two size_t values checking for overflow. - * @return 0 if success, AVERROR(EINVAL) if overflow. - */ -static inline int av_size_mult(size_t a, size_t b, size_t *r) -{ - size_t t = a * b; - /* Hack inspired from glibc: only try the division if nelem and elsize - * are both greater than sqrt(SIZE_MAX). */ - if ((a | b) >= ((size_t)1 << (sizeof(size_t) * 4)) && a && t / a != b) - return AVERROR(EINVAL); - *r = t; - return 0; -} - -/** - * Set the maximum size that may me allocated in one block. - */ -void av_max_alloc(size_t max); - -/** - * @brief deliberately overlapping memcpy implementation - * @param dst destination buffer - * @param back how many bytes back we start (the initial size of the overlapping window), must be > 0 - * @param cnt number of bytes to copy, must be >= 0 - * - * cnt > back is valid, this will copy the bytes we just copied, - * thus creating a repeating pattern with a period length of back. - */ -void av_memcpy_backptr(uint8_t *dst, int back, int cnt); - -/** - * @} - */ - -#endif /* AVUTIL_MEM_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/old_pix_fmts.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/old_pix_fmts.h deleted file mode 100644 index 57b699220f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/old_pix_fmts.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * copyright (c) 2006-2012 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_OLD_PIX_FMTS_H -#define AVUTIL_OLD_PIX_FMTS_H - -/* - * This header exists to prevent new pixel formats from being accidentally added - * to the deprecated list. - * Do not include it directly. It will be removed on next major bump - * - * Do not add new items to this list. Use the AVPixelFormat enum instead. - */ - PIX_FMT_NONE = AV_PIX_FMT_NONE, - PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - PIX_FMT_GRAY8, ///< Y , 8bpp - PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette - PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range - PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range - PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range - PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing - PIX_FMT_XVMC_MPEG2_IDCT, - PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - PIX_FMT_NV21, ///< as above, but U and V bytes are swapped - - PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian - PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian - PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range - PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) - PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 - PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 - - PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 - PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 - - PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers - PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers - PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - - PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 - PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 - PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 - PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 - PIX_FMT_GRAY8A, ///< 8bit gray, 8bit alpha - PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - - //the following 10 formats have the disadvantage of needing 1 format for each bit depth, thus - //If you want to support multiple bit depths, then using PIX_FMT_YUV420P16* with the bpp stored separately - //is better - PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_VDA_VLD, ///< hardware decoding through VDA - -#ifdef AV_PIX_FMT_ABI_GIT_MASTER - PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian -#endif - PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp - PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big endian - PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little endian - PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big endian - PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian - PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian - PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian - -#ifndef AV_PIX_FMT_ABI_GIT_MASTER - PIX_FMT_RGBA64BE=0x123, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian -#endif - PIX_FMT_0RGB=0x123+4, ///< packed RGB 8:8:8, 32bpp, 0RGB0RGB... - PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGB0RGB0... - PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, 0BGR0BGR... - PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGR0BGR0... - PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) - PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) - - PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big endian - PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little endian - PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big endian - PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little endian - - PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions -#endif /* AVUTIL_OLD_PIX_FMTS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/opt.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/opt.h deleted file mode 100644 index baf1b8233f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/opt.h +++ /dev/null @@ -1,733 +0,0 @@ -/* - * AVOptions - * copyright (c) 2005 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_OPT_H -#define AVUTIL_OPT_H - -/** - * @file - * AVOptions - */ - -#include "rational.h" -#include "avutil.h" -#include "dict.h" -#include "log.h" -#include "pixfmt.h" -#include "samplefmt.h" - -/** - * @defgroup avoptions AVOptions - * @ingroup lavu_data - * @{ - * AVOptions provide a generic system to declare options on arbitrary structs - * ("objects"). An option can have a help text, a type and a range of possible - * values. Options may then be enumerated, read and written to. - * - * @section avoptions_implement Implementing AVOptions - * This section describes how to add AVOptions capabilities to a struct. - * - * All AVOptions-related information is stored in an AVClass. Therefore - * the first member of the struct should be a pointer to an AVClass describing it. - * The option field of the AVClass must be set to a NULL-terminated static array - * of AVOptions. Each AVOption must have a non-empty name, a type, a default - * value and for number-type AVOptions also a range of allowed values. It must - * also declare an offset in bytes from the start of the struct, where the field - * associated with this AVOption is located. Other fields in the AVOption struct - * should also be set when applicable, but are not required. - * - * The following example illustrates an AVOptions-enabled struct: - * @code - * typedef struct test_struct { - * AVClass *class; - * int int_opt; - * char *str_opt; - * uint8_t *bin_opt; - * int bin_len; - * } test_struct; - * - * static const AVOption options[] = { - * { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt), - * AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX }, - * { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt), - * AV_OPT_TYPE_STRING }, - * { "test_bin", "This is a test option of binary type.", offsetof(test_struct, bin_opt), - * AV_OPT_TYPE_BINARY }, - * { NULL }, - * }; - * - * static const AVClass test_class = { - * .class_name = "test class", - * .item_name = av_default_item_name, - * .option = options, - * .version = LIBAVUTIL_VERSION_INT, - * }; - * @endcode - * - * Next, when allocating your struct, you must ensure that the AVClass pointer - * is set to the correct value. Then, av_opt_set_defaults() can be called to - * initialize defaults. After that the struct is ready to be used with the - * AVOptions API. - * - * When cleaning up, you may use the av_opt_free() function to automatically - * free all the allocated string and binary options. - * - * Continuing with the above example: - * - * @code - * test_struct *alloc_test_struct(void) - * { - * test_struct *ret = av_malloc(sizeof(*ret)); - * ret->class = &test_class; - * av_opt_set_defaults(ret); - * return ret; - * } - * void free_test_struct(test_struct **foo) - * { - * av_opt_free(*foo); - * av_freep(foo); - * } - * @endcode - * - * @subsection avoptions_implement_nesting Nesting - * It may happen that an AVOptions-enabled struct contains another - * AVOptions-enabled struct as a member (e.g. AVCodecContext in - * libavcodec exports generic options, while its priv_data field exports - * codec-specific options). In such a case, it is possible to set up the - * parent struct to export a child's options. To do that, simply - * implement AVClass.child_next() and AVClass.child_class_next() in the - * parent struct's AVClass. - * Assuming that the test_struct from above now also contains a - * child_struct field: - * - * @code - * typedef struct child_struct { - * AVClass *class; - * int flags_opt; - * } child_struct; - * static const AVOption child_opts[] = { - * { "test_flags", "This is a test option of flags type.", - * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX }, - * { NULL }, - * }; - * static const AVClass child_class = { - * .class_name = "child class", - * .item_name = av_default_item_name, - * .option = child_opts, - * .version = LIBAVUTIL_VERSION_INT, - * }; - * - * void *child_next(void *obj, void *prev) - * { - * test_struct *t = obj; - * if (!prev && t->child_struct) - * return t->child_struct; - * return NULL - * } - * const AVClass child_class_next(const AVClass *prev) - * { - * return prev ? NULL : &child_class; - * } - * @endcode - * Putting child_next() and child_class_next() as defined above into - * test_class will now make child_struct's options accessible through - * test_struct (again, proper setup as described above needs to be done on - * child_struct right after it is created). - * - * From the above example it might not be clear why both child_next() - * and child_class_next() are needed. The distinction is that child_next() - * iterates over actually existing objects, while child_class_next() - * iterates over all possible child classes. E.g. if an AVCodecContext - * was initialized to use a codec which has private options, then its - * child_next() will return AVCodecContext.priv_data and finish - * iterating. OTOH child_class_next() on AVCodecContext.av_class will - * iterate over all available codecs with private options. - * - * @subsection avoptions_implement_named_constants Named constants - * It is possible to create named constants for options. Simply set the unit - * field of the option the constants should apply to to a string and - * create the constants themselves as options of type AV_OPT_TYPE_CONST - * with their unit field set to the same string. - * Their default_val field should contain the value of the named - * constant. - * For example, to add some named constants for the test_flags option - * above, put the following into the child_opts array: - * @code - * { "test_flags", "This is a test option of flags type.", - * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, "test_unit" }, - * { "flag1", "This is a flag with value 16", 0, AV_OPT_TYPE_CONST, { .i64 = 16 }, 0, 0, "test_unit" }, - * @endcode - * - * @section avoptions_use Using AVOptions - * This section deals with accessing options in an AVOptions-enabled struct. - * Such structs in FFmpeg are e.g. AVCodecContext in libavcodec or - * AVFormatContext in libavformat. - * - * @subsection avoptions_use_examine Examining AVOptions - * The basic functions for examining options are av_opt_next(), which iterates - * over all options defined for one object, and av_opt_find(), which searches - * for an option with the given name. - * - * The situation is more complicated with nesting. An AVOptions-enabled struct - * may have AVOptions-enabled children. Passing the AV_OPT_SEARCH_CHILDREN flag - * to av_opt_find() will make the function search children recursively. - * - * For enumerating there are basically two cases. The first is when you want to - * get all options that may potentially exist on the struct and its children - * (e.g. when constructing documentation). In that case you should call - * av_opt_child_class_next() recursively on the parent struct's AVClass. The - * second case is when you have an already initialized struct with all its - * children and you want to get all options that can be actually written or read - * from it. In that case you should call av_opt_child_next() recursively (and - * av_opt_next() on each result). - * - * @subsection avoptions_use_get_set Reading and writing AVOptions - * When setting options, you often have a string read directly from the - * user. In such a case, simply passing it to av_opt_set() is enough. For - * non-string type options, av_opt_set() will parse the string according to the - * option type. - * - * Similarly av_opt_get() will read any option type and convert it to a string - * which will be returned. Do not forget that the string is allocated, so you - * have to free it with av_free(). - * - * In some cases it may be more convenient to put all options into an - * AVDictionary and call av_opt_set_dict() on it. A specific case of this - * are the format/codec open functions in lavf/lavc which take a dictionary - * filled with option as a parameter. This allows to set some options - * that cannot be set otherwise, since e.g. the input file format is not known - * before the file is actually opened. - */ - -enum AVOptionType{ - AV_OPT_TYPE_FLAGS, - AV_OPT_TYPE_INT, - AV_OPT_TYPE_INT64, - AV_OPT_TYPE_DOUBLE, - AV_OPT_TYPE_FLOAT, - AV_OPT_TYPE_STRING, - AV_OPT_TYPE_RATIONAL, - AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length - AV_OPT_TYPE_CONST = 128, - AV_OPT_TYPE_IMAGE_SIZE = MKBETAG('S','I','Z','E'), ///< offset must point to two consecutive integers - AV_OPT_TYPE_PIXEL_FMT = MKBETAG('P','F','M','T'), - AV_OPT_TYPE_SAMPLE_FMT = MKBETAG('S','F','M','T'), -#if FF_API_OLD_AVOPTIONS - FF_OPT_TYPE_FLAGS = 0, - FF_OPT_TYPE_INT, - FF_OPT_TYPE_INT64, - FF_OPT_TYPE_DOUBLE, - FF_OPT_TYPE_FLOAT, - FF_OPT_TYPE_STRING, - FF_OPT_TYPE_RATIONAL, - FF_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length - FF_OPT_TYPE_CONST=128, -#endif -}; - -/** - * AVOption - */ -typedef struct AVOption { - const char *name; - - /** - * short English help text - * @todo What about other languages? - */ - const char *help; - - /** - * The offset relative to the context structure where the option - * value is stored. It should be 0 for named constants. - */ - int offset; - enum AVOptionType type; - - /** - * the default value for scalar options - */ - union { - int64_t i64; - double dbl; - const char *str; - /* TODO those are unused now */ - AVRational q; - } default_val; - double min; ///< minimum valid value for the option - double max; ///< maximum valid value for the option - - int flags; -#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding -#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding -#define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ... -#define AV_OPT_FLAG_AUDIO_PARAM 8 -#define AV_OPT_FLAG_VIDEO_PARAM 16 -#define AV_OPT_FLAG_SUBTITLE_PARAM 32 -#define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering -//FIXME think about enc-audio, ... style flags - - /** - * The logical unit to which the option belongs. Non-constant - * options and corresponding named constants share the same - * unit. May be NULL. - */ - const char *unit; -} AVOption; - -/** - * A single allowed range of values, or a single allowed value. - */ -typedef struct AVOptionRange { - const char *str; - double value_min, value_max; ///< For string ranges this represents the min/max length, for dimensions this represents the min/max pixel count - double component_min, component_max; ///< For string this represents the unicode range for chars, 0-127 limits to ASCII - int is_range; ///< if set to 1 the struct encodes a range, if set to 0 a single value -} AVOptionRange; - -/** - * List of AVOptionRange structs - */ -typedef struct AVOptionRanges { - AVOptionRange **range; - int nb_ranges; -} AVOptionRanges; - - -#if FF_API_FIND_OPT -/** - * Look for an option in obj. Look only for the options which - * have the flags set as specified in mask and flags (that is, - * for which it is the case that opt->flags & mask == flags). - * - * @param[in] obj a pointer to a struct whose first element is a - * pointer to an AVClass - * @param[in] name the name of the option to look for - * @param[in] unit the unit of the option to look for, or any if NULL - * @return a pointer to the option found, or NULL if no option - * has been found - * - * @deprecated use av_opt_find. - */ -attribute_deprecated -const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags); -#endif - -#if FF_API_OLD_AVOPTIONS -/** - * Set the field of obj with the given name to value. - * - * @param[in] obj A struct whose first element is a pointer to an - * AVClass. - * @param[in] name the name of the field to set - * @param[in] val The value to set. If the field is not of a string - * type, then the given string is parsed. - * SI postfixes and some named scalars are supported. - * If the field is of a numeric type, it has to be a numeric or named - * scalar. Behavior with more than one scalar and +- infix operators - * is undefined. - * If the field is of a flags type, it has to be a sequence of numeric - * scalars or named flags separated by '+' or '-'. Prefixing a flag - * with '+' causes it to be set without affecting the other flags; - * similarly, '-' unsets a flag. - * @param[out] o_out if non-NULL put here a pointer to the AVOption - * found - * @param alloc this parameter is currently ignored - * @return 0 if the value has been set, or an AVERROR code in case of - * error: - * AVERROR_OPTION_NOT_FOUND if no matching option exists - * AVERROR(ERANGE) if the value is out of range - * AVERROR(EINVAL) if the value is not valid - * @deprecated use av_opt_set() - */ -attribute_deprecated -int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out); - -attribute_deprecated const AVOption *av_set_double(void *obj, const char *name, double n); -attribute_deprecated const AVOption *av_set_q(void *obj, const char *name, AVRational n); -attribute_deprecated const AVOption *av_set_int(void *obj, const char *name, int64_t n); - -double av_get_double(void *obj, const char *name, const AVOption **o_out); -AVRational av_get_q(void *obj, const char *name, const AVOption **o_out); -int64_t av_get_int(void *obj, const char *name, const AVOption **o_out); -attribute_deprecated const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len); -attribute_deprecated const AVOption *av_next_option(void *obj, const AVOption *last); -#endif - -/** - * Show the obj options. - * - * @param req_flags requested flags for the options to show. Show only the - * options for which it is opt->flags & req_flags. - * @param rej_flags rejected flags for the options to show. Show only the - * options for which it is !(opt->flags & req_flags). - * @param av_log_obj log context to use for showing the options - */ -int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags); - -/** - * Set the values of all AVOption fields to their default values. - * - * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass) - */ -void av_opt_set_defaults(void *s); - -#if FF_API_OLD_AVOPTIONS -attribute_deprecated -void av_opt_set_defaults2(void *s, int mask, int flags); -#endif - -/** - * Parse the key/value pairs list in opts. For each key/value pair - * found, stores the value in the field in ctx that is named like the - * key. ctx must be an AVClass context, storing is done using - * AVOptions. - * - * @param opts options string to parse, may be NULL - * @param key_val_sep a 0-terminated list of characters used to - * separate key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @return the number of successfully set key/value pairs, or a negative - * value corresponding to an AVERROR code in case of error: - * AVERROR(EINVAL) if opts cannot be parsed, - * the error code issued by av_set_string3() if a key/value pair - * cannot be set - */ -int av_set_options_string(void *ctx, const char *opts, - const char *key_val_sep, const char *pairs_sep); - -/** - * Parse the key-value pairs list in opts. For each key=value pair found, - * set the value of the corresponding option in ctx. - * - * @param ctx the AVClass object to set options on - * @param opts the options string, key-value pairs separated by a - * delimiter - * @param shorthand a NULL-terminated array of options names for shorthand - * notation: if the first field in opts has no key part, - * the key is taken from the first element of shorthand; - * then again for the second, etc., until either opts is - * finished, shorthand is finished or a named option is - * found; after that, all options must be named - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value, for example '=' - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other, for example ':' or ',' - * @return the number of successfully set key=value pairs, or a negative - * value corresponding to an AVERROR code in case of error: - * AVERROR(EINVAL) if opts cannot be parsed, - * the error code issued by av_set_string3() if a key/value pair - * cannot be set - * - * Options names must use only the following characters: a-z A-Z 0-9 - . / _ - * Separators must use characters distinct from option names and from each - * other. - */ -int av_opt_set_from_string(void *ctx, const char *opts, - const char *const *shorthand, - const char *key_val_sep, const char *pairs_sep); -/** - * Free all string and binary options in obj. - */ -void av_opt_free(void *obj); - -/** - * Check whether a particular flag is set in a flags field. - * - * @param field_name the name of the flag field option - * @param flag_name the name of the flag to check - * @return non-zero if the flag is set, zero if the flag isn't set, - * isn't of the right type, or the flags field doesn't exist. - */ -int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name); - -/** - * Set all the options from a given dictionary on an object. - * - * @param obj a struct whose first element is a pointer to AVClass - * @param options options to process. This dictionary will be freed and replaced - * by a new one containing all options not found in obj. - * Of course this new dictionary needs to be freed by caller - * with av_dict_free(). - * - * @return 0 on success, a negative AVERROR if some option was found in obj, - * but could not be set. - * - * @see av_dict_copy() - */ -int av_opt_set_dict(void *obj, struct AVDictionary **options); - -/** - * Extract a key-value pair from the beginning of a string. - * - * @param ropts pointer to the options string, will be updated to - * point to the rest of the string (one of the pairs_sep - * or the final NUL) - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value, for example '=' - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other, for example ':' or ',' - * @param flags flags; see the AV_OPT_FLAG_* values below - * @param rkey parsed key; must be freed using av_free() - * @param rval parsed value; must be freed using av_free() - * - * @return >=0 for success, or a negative value corresponding to an - * AVERROR code in case of error; in particular: - * AVERROR(EINVAL) if no key is present - * - */ -int av_opt_get_key_value(const char **ropts, - const char *key_val_sep, const char *pairs_sep, - unsigned flags, - char **rkey, char **rval); - -enum { - - /** - * Accept to parse a value without a key; the key will then be returned - * as NULL. - */ - AV_OPT_FLAG_IMPLICIT_KEY = 1, -}; - -/** - * @defgroup opt_eval_funcs Evaluating option strings - * @{ - * This group of functions can be used to evaluate option strings - * and get numbers out of them. They do the same thing as av_opt_set(), - * except the result is written into the caller-supplied pointer. - * - * @param obj a struct whose first element is a pointer to AVClass. - * @param o an option for which the string is to be evaluated. - * @param val string to be evaluated. - * @param *_out value of the string will be written here. - * - * @return 0 on success, a negative number on failure. - */ -int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out); -int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out); -int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out); -int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out); -int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out); -int av_opt_eval_q (void *obj, const AVOption *o, const char *val, AVRational *q_out); -/** - * @} - */ - -#define AV_OPT_SEARCH_CHILDREN 0x0001 /**< Search in possible children of the - given object first. */ -/** - * The obj passed to av_opt_find() is fake -- only a double pointer to AVClass - * instead of a required pointer to a struct containing AVClass. This is - * useful for searching for options without needing to allocate the corresponding - * object. - */ -#define AV_OPT_SEARCH_FAKE_OBJ 0x0002 - -/** - * Look for an option in an object. Consider only options which - * have all the specified flags set. - * - * @param[in] obj A pointer to a struct whose first element is a - * pointer to an AVClass. - * Alternatively a double pointer to an AVClass, if - * AV_OPT_SEARCH_FAKE_OBJ search flag is set. - * @param[in] name The name of the option to look for. - * @param[in] unit When searching for named constants, name of the unit - * it belongs to. - * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). - * @param search_flags A combination of AV_OPT_SEARCH_*. - * - * @return A pointer to the option found, or NULL if no option - * was found. - * - * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable - * directly with av_set_string3(). Use special calls which take an options - * AVDictionary (e.g. avformat_open_input()) to set options found with this - * flag. - */ -const AVOption *av_opt_find(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags); - -/** - * Look for an option in an object. Consider only options which - * have all the specified flags set. - * - * @param[in] obj A pointer to a struct whose first element is a - * pointer to an AVClass. - * Alternatively a double pointer to an AVClass, if - * AV_OPT_SEARCH_FAKE_OBJ search flag is set. - * @param[in] name The name of the option to look for. - * @param[in] unit When searching for named constants, name of the unit - * it belongs to. - * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). - * @param search_flags A combination of AV_OPT_SEARCH_*. - * @param[out] target_obj if non-NULL, an object to which the option belongs will be - * written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present - * in search_flags. This parameter is ignored if search_flags contain - * AV_OPT_SEARCH_FAKE_OBJ. - * - * @return A pointer to the option found, or NULL if no option - * was found. - */ -const AVOption *av_opt_find2(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags, void **target_obj); - -/** - * Iterate over all AVOptions belonging to obj. - * - * @param obj an AVOptions-enabled struct or a double pointer to an - * AVClass describing it. - * @param prev result of the previous call to av_opt_next() on this object - * or NULL - * @return next AVOption or NULL - */ -const AVOption *av_opt_next(void *obj, const AVOption *prev); - -/** - * Iterate over AVOptions-enabled children of obj. - * - * @param prev result of a previous call to this function or NULL - * @return next AVOptions-enabled child or NULL - */ -void *av_opt_child_next(void *obj, void *prev); - -/** - * Iterate over potential AVOptions-enabled children of parent. - * - * @param prev result of a previous call to this function or NULL - * @return AVClass corresponding to next potential child or NULL - */ -const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev); - -/** - * @defgroup opt_set_funcs Option setting functions - * @{ - * Those functions set the field of obj with the given name to value. - * - * @param[in] obj A struct whose first element is a pointer to an AVClass. - * @param[in] name the name of the field to set - * @param[in] val The value to set. In case of av_opt_set() if the field is not - * of a string type, then the given string is parsed. - * SI postfixes and some named scalars are supported. - * If the field is of a numeric type, it has to be a numeric or named - * scalar. Behavior with more than one scalar and +- infix operators - * is undefined. - * If the field is of a flags type, it has to be a sequence of numeric - * scalars or named flags separated by '+' or '-'. Prefixing a flag - * with '+' causes it to be set without affecting the other flags; - * similarly, '-' unsets a flag. - * @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN - * is passed here, then the option may be set on a child of obj. - * - * @return 0 if the value has been set, or an AVERROR code in case of - * error: - * AVERROR_OPTION_NOT_FOUND if no matching option exists - * AVERROR(ERANGE) if the value is out of range - * AVERROR(EINVAL) if the value is not valid - */ -int av_opt_set (void *obj, const char *name, const char *val, int search_flags); -int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags); -int av_opt_set_double(void *obj, const char *name, double val, int search_flags); -int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags); -int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags); -int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_flags); -int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags); -int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags); -/** - * @} - */ - -/** - * @defgroup opt_get_funcs Option getting functions - * @{ - * Those functions get a value of the option with the given name from an object. - * - * @param[in] obj a struct whose first element is a pointer to an AVClass. - * @param[in] name name of the option to get. - * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN - * is passed here, then the option may be found in a child of obj. - * @param[out] out_val value of the option will be written here - * @return 0 on success, a negative error code otherwise - */ -/** - * @note the returned string will av_malloc()ed and must be av_free()ed by the caller - */ -int av_opt_get (void *obj, const char *name, int search_flags, uint8_t **out_val); -int av_opt_get_int (void *obj, const char *name, int search_flags, int64_t *out_val); -int av_opt_get_double(void *obj, const char *name, int search_flags, double *out_val); -int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val); -int av_opt_get_image_size(void *obj, const char *name, int search_flags, int *w_out, int *h_out); -int av_opt_get_pixel_fmt (void *obj, const char *name, int search_flags, enum AVPixelFormat *out_fmt); -int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AVSampleFormat *out_fmt); -/** - * @} - */ -/** - * Gets a pointer to the requested field in a struct. - * This function allows accessing a struct even when its fields are moved or - * renamed since the application making the access has been compiled, - * - * @returns a pointer to the field, it can be cast to the correct type and read - * or written to. - */ -void *av_opt_ptr(const AVClass *avclass, void *obj, const char *name); - -/** - * Free an AVOptionRanges struct and set it to NULL. - */ -void av_opt_freep_ranges(AVOptionRanges **ranges); - -/** - * Get a list of allowed ranges for the given option. - * - * The returned list may depend on other fields in obj like for example profile. - * - * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored - * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance - * - * The result must be freed with av_opt_freep_ranges. - * - * @return >= 0 on success, a negative errro code otherwise - */ -int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags); - -/** - * Get a default list of allowed ranges for the given option. - * - * This list is constructed without using the AVClass.query_ranges() callback - * and can be used as fallback from within the callback. - * - * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored - * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance - * - * The result must be freed with av_opt_free_ranges. - * - * @return >= 0 on success, a negative errro code otherwise - */ -int av_opt_query_ranges_default(AVOptionRanges **, void *obj, const char *key, int flags); - -/** - * @} - */ - -#endif /* AVUTIL_OPT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/parseutils.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/parseutils.h deleted file mode 100644 index 3eb35fc050..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/parseutils.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PARSEUTILS_H -#define AVUTIL_PARSEUTILS_H - -#include - -#include "rational.h" - -/** - * @file - * misc parsing utilities - */ - -/** - * Parse str and store the parsed ratio in q. - * - * Note that a ratio with infinite (1/0) or negative value is - * considered valid, so you should check on the returned value if you - * want to exclude those values. - * - * The undefined value can be expressed using the "0:0" string. - * - * @param[in,out] q pointer to the AVRational which will contain the ratio - * @param[in] str the string to parse: it has to be a string in the format - * num:den, a float number or an expression - * @param[in] max the maximum allowed numerator and denominator - * @param[in] log_offset log level offset which is applied to the log - * level of log_ctx - * @param[in] log_ctx parent logging context - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_ratio(AVRational *q, const char *str, int max, - int log_offset, void *log_ctx); - -#define av_parse_ratio_quiet(rate, str, max) \ - av_parse_ratio(rate, str, max, AV_LOG_MAX_OFFSET, NULL) - -/** - * Parse str and put in width_ptr and height_ptr the detected values. - * - * @param[in,out] width_ptr pointer to the variable which will contain the detected - * width value - * @param[in,out] height_ptr pointer to the variable which will contain the detected - * height value - * @param[in] str the string to parse: it has to be a string in the format - * width x height or a valid video size abbreviation. - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str); - -/** - * Parse str and store the detected values in *rate. - * - * @param[in,out] rate pointer to the AVRational which will contain the detected - * frame rate - * @param[in] str the string to parse: it has to be a string in the format - * rate_num / rate_den, a float number or a valid video rate abbreviation - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_video_rate(AVRational *rate, const char *str); - -/** - * Put the RGBA values that correspond to color_string in rgba_color. - * - * @param color_string a string specifying a color. It can be the name of - * a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence, - * possibly followed by "@" and a string representing the alpha - * component. - * The alpha component may be a string composed by "0x" followed by an - * hexadecimal number or a decimal number between 0.0 and 1.0, which - * represents the opacity value (0x00/0.0 means completely transparent, - * 0xff/1.0 completely opaque). - * If the alpha component is not specified then 0xff is assumed. - * The string "random" will result in a random color. - * @param slen length of the initial part of color_string containing the - * color. It can be set to -1 if color_string is a null terminated string - * containing nothing else than the color. - * @return >= 0 in case of success, a negative value in case of - * failure (for example if color_string cannot be parsed). - */ -int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, - void *log_ctx); - -/** - * Parse timestr and return in *time a corresponding number of - * microseconds. - * - * @param timeval puts here the number of microseconds corresponding - * to the string in timestr. If the string represents a duration, it - * is the number of microseconds contained in the time interval. If - * the string is a date, is the number of microseconds since 1st of - * January, 1970 up to the time of the parsed date. If timestr cannot - * be successfully parsed, set *time to INT64_MIN. - - * @param timestr a string representing a date or a duration. - * - If a date the syntax is: - * @code - * [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH:MM:SS[.m...]]]}|{HHMMSS[.m...]]]}}[Z] - * now - * @endcode - * If the value is "now" it takes the current time. - * Time is local time unless Z is appended, in which case it is - * interpreted as UTC. - * If the year-month-day part is not specified it takes the current - * year-month-day. - * - If a duration the syntax is: - * @code - * [-][HH:]MM:SS[.m...] - * [-]S+[.m...] - * @endcode - * @param duration flag which tells how to interpret timestr, if not - * zero timestr is interpreted as a duration, otherwise as a date - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_parse_time(int64_t *timeval, const char *timestr, int duration); - -/** - * Parse the input string p according to the format string fmt and - * store its results in the structure dt. - * This implementation supports only a subset of the formats supported - * by the standard strptime(). - * - * In particular it actually supports the parameters: - * - %H: the hour as a decimal number, using a 24-hour clock, in the - * range '00' through '23' - * - %J: hours as a decimal number, in the range '0' through INT_MAX - * - %M: the minute as a decimal number, using a 24-hour clock, in the - * range '00' through '59' - * - %S: the second as a decimal number, using a 24-hour clock, in the - * range '00' through '59' - * - %Y: the year as a decimal number, using the Gregorian calendar - * - %m: the month as a decimal number, in the range '1' through '12' - * - %d: the day of the month as a decimal number, in the range '1' - * through '31' - * - %%: a literal '%' - * - * @return a pointer to the first character not processed in this - * function call, or NULL in case the function fails to match all of - * the fmt string and therefore an error occurred - */ -char *av_small_strptime(const char *p, const char *fmt, struct tm *dt); - -/** - * Attempt to find a specific tag in a URL. - * - * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. - * Return 1 if found. - */ -int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); - -/** - * Convert the decomposed UTC time in tm to a time_t value. - */ -time_t av_timegm(struct tm *tm); - -#endif /* AVUTIL_PARSEUTILS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/pixdesc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/pixdesc.h deleted file mode 100644 index ca0722e1f4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/pixdesc.h +++ /dev/null @@ -1,237 +0,0 @@ -/* - * pixel format descriptor - * Copyright (c) 2009 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXDESC_H -#define AVUTIL_PIXDESC_H - -#include -#include "pixfmt.h" - -typedef struct AVComponentDescriptor{ - uint16_t plane :2; ///< which of the 4 planes contains the component - - /** - * Number of elements between 2 horizontally consecutive pixels minus 1. - * Elements are bits for bitstream formats, bytes otherwise. - */ - uint16_t step_minus1 :3; - - /** - * Number of elements before the component of the first pixel plus 1. - * Elements are bits for bitstream formats, bytes otherwise. - */ - uint16_t offset_plus1 :3; - uint16_t shift :3; ///< number of least significant bits that must be shifted away to get the value - uint16_t depth_minus1 :4; ///< number of bits in the component minus 1 -}AVComponentDescriptor; - -/** - * Descriptor that unambiguously describes how the bits of a pixel are - * stored in the up to 4 data planes of an image. It also stores the - * subsampling factors and number of components. - * - * @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV - * and all the YUV variants) AVPixFmtDescriptor just stores how values - * are stored not what these values represent. - */ -typedef struct AVPixFmtDescriptor{ - const char *name; - uint8_t nb_components; ///< The number of components each pixel has, (1-4) - - /** - * Amount to shift the luma width right to find the chroma width. - * For YV12 this is 1 for example. - * chroma_width = -((-luma_width) >> log2_chroma_w) - * The note above is needed to ensure rounding up. - * This value only refers to the chroma components. - */ - uint8_t log2_chroma_w; ///< chroma_width = -((-luma_width )>>log2_chroma_w) - - /** - * Amount to shift the luma height right to find the chroma height. - * For YV12 this is 1 for example. - * chroma_height= -((-luma_height) >> log2_chroma_h) - * The note above is needed to ensure rounding up. - * This value only refers to the chroma components. - */ - uint8_t log2_chroma_h; - uint8_t flags; - - /** - * Parameters that describe how pixels are packed. - * If the format has 2 or 4 components, then alpha is last. - * If the format has 1 or 2 components, then luma is 0. - * If the format has 3 or 4 components, - * if the RGB flag is set then 0 is red, 1 is green and 2 is blue; - * otherwise 0 is luma, 1 is chroma-U and 2 is chroma-V. - */ - AVComponentDescriptor comp[4]; -}AVPixFmtDescriptor; - -#define PIX_FMT_BE 1 ///< Pixel format is big-endian. -#define PIX_FMT_PAL 2 ///< Pixel format has a palette in data[1], values are indexes in this palette. -#define PIX_FMT_BITSTREAM 4 ///< All values of a component are bit-wise packed end to end. -#define PIX_FMT_HWACCEL 8 ///< Pixel format is an HW accelerated format. -#define PIX_FMT_PLANAR 16 ///< At least one pixel component is not in the first data plane -#define PIX_FMT_RGB 32 ///< The pixel format contains RGB-like data (as opposed to YUV/grayscale) -/** - * The pixel format is "pseudo-paletted". This means that FFmpeg treats it as - * paletted internally, but the palette is generated by the decoder and is not - * stored in the file. - */ -#define PIX_FMT_PSEUDOPAL 64 - -#define PIX_FMT_ALPHA 128 ///< The pixel format has an alpha channel - - -#if FF_API_PIX_FMT_DESC -/** - * The array of all the pixel format descriptors. - */ -extern const AVPixFmtDescriptor av_pix_fmt_descriptors[]; -#endif - -/** - * Read a line from an image, and write the values of the - * pixel format component c to dst. - * - * @param data the array containing the pointers to the planes of the image - * @param linesize the array containing the linesizes of the image - * @param desc the pixel format descriptor for the image - * @param x the horizontal coordinate of the first pixel to read - * @param y the vertical coordinate of the first pixel to read - * @param w the width of the line to read, that is the number of - * values to write to dst - * @param read_pal_component if not zero and the format is a paletted - * format writes the values corresponding to the palette - * component c in data[1] to dst, rather than the palette indexes in - * data[0]. The behavior is undefined if the format is not paletted. - */ -void av_read_image_line(uint16_t *dst, const uint8_t *data[4], const int linesize[4], - const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component); - -/** - * Write the values from src to the pixel format component c of an - * image line. - * - * @param src array containing the values to write - * @param data the array containing the pointers to the planes of the - * image to write into. It is supposed to be zeroed. - * @param linesize the array containing the linesizes of the image - * @param desc the pixel format descriptor for the image - * @param x the horizontal coordinate of the first pixel to write - * @param y the vertical coordinate of the first pixel to write - * @param w the width of the line to write, that is the number of - * values to write to the image line - */ -void av_write_image_line(const uint16_t *src, uint8_t *data[4], const int linesize[4], - const AVPixFmtDescriptor *desc, int x, int y, int c, int w); - -/** - * Return the pixel format corresponding to name. - * - * If there is no pixel format with name name, then looks for a - * pixel format with the name corresponding to the native endian - * format of name. - * For example in a little-endian system, first looks for "gray16", - * then for "gray16le". - * - * Finally if no pixel format has been found, returns AV_PIX_FMT_NONE. - */ -enum AVPixelFormat av_get_pix_fmt(const char *name); - -/** - * Return the short name for a pixel format, NULL in case pix_fmt is - * unknown. - * - * @see av_get_pix_fmt(), av_get_pix_fmt_string() - */ -const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt); - -/** - * Print in buf the string corresponding to the pixel format with - * number pix_fmt, or an header if pix_fmt is negative. - * - * @param buf the buffer where to write the string - * @param buf_size the size of buf - * @param pix_fmt the number of the pixel format to print the - * corresponding info string, or a negative value to print the - * corresponding header. - */ -char *av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt); - -/** - * Return the number of bits per pixel used by the pixel format - * described by pixdesc. - * - * The returned number of bits refers to the number of bits actually - * used for storing the pixel information, that is padding bits are - * not counted. - */ -int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); - -/** - * Return the number of bits per pixel for the pixel format - * described by pixdesc, including any padding or unused bits. - */ -int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); - -/** - * @return a pixel format descriptor for provided pixel format or NULL if - * this pixel format is unknown. - */ -const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt); - -/** - * Iterate over all pixel format descriptors known to libavutil. - * - * @param prev previous descriptor. NULL to get the first descriptor. - * - * @return next descriptor or NULL after the last descriptor - */ -const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev); - -/** - * @return an AVPixelFormat id described by desc, or AV_PIX_FMT_NONE if desc - * is not a valid pointer to a pixel format descriptor. - */ -enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc); - -/** - * Utility function to access log2_chroma_w log2_chroma_h from - * the pixel format AVPixFmtDescriptor. - * - * See avcodec_get_chroma_sub_sample() for a function that asserts a - * valid pixel format instead of returning an error code. - * Its recommanded that you use avcodec_get_chroma_sub_sample unless - * you do check the return code! - * - * @param[in] pix_fmt the pixel format - * @param[out] h_shift store log2_chroma_h - * @param[out] v_shift store log2_chroma_w - * - * @return 0 on success, AVERROR(ENOSYS) on invalid or unknown pixel format - */ -int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, - int *h_shift, int *v_shift); - - -#endif /* AVUTIL_PIXDESC_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/pixfmt.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/pixfmt.h deleted file mode 100644 index 1c00ac4796..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/pixfmt.h +++ /dev/null @@ -1,357 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXFMT_H -#define AVUTIL_PIXFMT_H - -/** - * @file - * pixel format definitions - * - */ - -#include "libavutil/avconfig.h" -#include "libavutil/version.h" - -#define AVPALETTE_SIZE 1024 -#define AVPALETTE_COUNT 256 - -/** - * Pixel format. - * - * @note - * PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA - * color is put together as: - * (A << 24) | (R << 16) | (G << 8) | B - * This is stored as BGRA on little-endian CPU architectures and ARGB on - * big-endian CPUs. - * - * @par - * When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized - * image data is stored in AVFrame.data[0]. The palette is transported in - * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is - * formatted the same as in PIX_FMT_RGB32 described above (i.e., it is - * also endian-specific). Note also that the individual RGB palette - * components stored in AVFrame.data[1] should be in the range 0..255. - * This is important as many custom PAL8 video codecs that were designed - * to run on the IBM VGA graphics adapter use 6-bit palette components. - * - * @par - * For all the 8bit per pixel formats, an RGB32 palette is in data[1] like - * for pal8. This palette is filled in automatically by the function - * allocating the picture. - * - * @note - * Make sure that all newly added big-endian formats have pix_fmt & 1 == 1 - * and that all newly added little-endian formats have pix_fmt & 1 == 0. - * This allows simpler detection of big vs little-endian. - */ -enum AVPixelFormat { - AV_PIX_FMT_NONE = -1, - AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - AV_PIX_FMT_GRAY8, ///< Y , 8bpp - AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette - AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range - AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range - AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range - AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing - AV_PIX_FMT_XVMC_MPEG2_IDCT, - AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped - - AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian - AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian - AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range - AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) - AV_PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 - AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 - - AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 - AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 - - AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers - AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers - AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - - AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 - AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 - AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 - AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 - AV_PIX_FMT_GRAY8A, ///< 8bit gray, 8bit alpha - AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - - //the following 10 formats have the disadvantage of needing 1 format for each bit depth, thus - //If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately - //is better - AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_VDA_VLD, ///< hardware decoding through VDA - -#ifdef AV_PIX_FMT_ABI_GIT_MASTER - AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian -#endif - AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp - AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian - AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian - AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian - AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian - AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian - AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian - - /** - * duplicated pixel formats for compatibility with libav. - * FFmpeg supports these formats since May 8 2012 and Jan 28 2012 (commits f9ca1ac7 and 143a5c55) - * Libav added them Oct 12 2012 with incompatible values (commit 6d5600e85) - */ - AV_PIX_FMT_YUVA422P_LIBAV, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) - AV_PIX_FMT_YUVA444P_LIBAV, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) - - AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian - AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian - AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - - AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface - -#ifndef AV_PIX_FMT_ABI_GIT_MASTER - AV_PIX_FMT_RGBA64BE=0x123, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian -#endif - AV_PIX_FMT_0RGB=0x123+4, ///< packed RGB 8:8:8, 32bpp, 0RGB0RGB... - AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGB0RGB0... - AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, 0BGR0BGR... - AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGR0BGR0... - AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) - AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) - - AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian - AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian - AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian - AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian - AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions - -#if FF_API_PIX_FMT -#include "old_pix_fmts.h" -#endif -}; - -#if AV_HAVE_INCOMPATIBLE_FORK_ABI -#define AV_PIX_FMT_YUVA422P AV_PIX_FMT_YUVA422P_LIBAV -#define AV_PIX_FMT_YUVA444P AV_PIX_FMT_YUVA444P_LIBAV -#endif - - -#define AV_PIX_FMT_Y400A AV_PIX_FMT_GRAY8A -#define AV_PIX_FMT_GBR24P AV_PIX_FMT_GBRP - -#if AV_HAVE_BIGENDIAN -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be -#else -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le -#endif - -#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA) -#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR) -#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA) -#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB) -#define AV_PIX_FMT_0RGB32 AV_PIX_FMT_NE(0RGB, BGR0) -#define AV_PIX_FMT_0BGR32 AV_PIX_FMT_NE(0BGR, RGB0) - -#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) -#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) -#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) -#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) -#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) -#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) -#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) -#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) -#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) - -#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) -#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) -#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE) -#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE) -#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE) -#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE) -#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE) -#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE) -#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE) -#define AV_PIX_FMT_YUV420P14 AV_PIX_FMT_NE(YUV420P14BE, YUV420P14LE) -#define AV_PIX_FMT_YUV422P14 AV_PIX_FMT_NE(YUV422P14BE, YUV422P14LE) -#define AV_PIX_FMT_YUV444P14 AV_PIX_FMT_NE(YUV444P14BE, YUV444P14LE) -#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE) -#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) -#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) - -#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) -#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) -#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) -#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) -#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) -#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE) -#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) - -#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) -#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) -#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) -#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE) -#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE) -#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE) -#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE) -#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE) -#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE) - -#if FF_API_PIX_FMT -#define PixelFormat AVPixelFormat - -#define PIX_FMT_Y400A AV_PIX_FMT_Y400A -#define PIX_FMT_GBR24P AV_PIX_FMT_GBR24P - -#define PIX_FMT_NE(be, le) AV_PIX_FMT_NE(be, le) - -#define PIX_FMT_RGB32 AV_PIX_FMT_RGB32 -#define PIX_FMT_RGB32_1 AV_PIX_FMT_RGB32_1 -#define PIX_FMT_BGR32 AV_PIX_FMT_BGR32 -#define PIX_FMT_BGR32_1 AV_PIX_FMT_BGR32_1 -#define PIX_FMT_0RGB32 AV_PIX_FMT_0RGB32 -#define PIX_FMT_0BGR32 AV_PIX_FMT_0BGR32 - -#define PIX_FMT_GRAY16 AV_PIX_FMT_GRAY16 -#define PIX_FMT_RGB48 AV_PIX_FMT_RGB48 -#define PIX_FMT_RGB565 AV_PIX_FMT_RGB565 -#define PIX_FMT_RGB555 AV_PIX_FMT_RGB555 -#define PIX_FMT_RGB444 AV_PIX_FMT_RGB444 -#define PIX_FMT_BGR48 AV_PIX_FMT_BGR48 -#define PIX_FMT_BGR565 AV_PIX_FMT_BGR565 -#define PIX_FMT_BGR555 AV_PIX_FMT_BGR555 -#define PIX_FMT_BGR444 AV_PIX_FMT_BGR444 - -#define PIX_FMT_YUV420P9 AV_PIX_FMT_YUV420P9 -#define PIX_FMT_YUV422P9 AV_PIX_FMT_YUV422P9 -#define PIX_FMT_YUV444P9 AV_PIX_FMT_YUV444P9 -#define PIX_FMT_YUV420P10 AV_PIX_FMT_YUV420P10 -#define PIX_FMT_YUV422P10 AV_PIX_FMT_YUV422P10 -#define PIX_FMT_YUV444P10 AV_PIX_FMT_YUV444P10 -#define PIX_FMT_YUV420P12 AV_PIX_FMT_YUV420P12 -#define PIX_FMT_YUV422P12 AV_PIX_FMT_YUV422P12 -#define PIX_FMT_YUV444P12 AV_PIX_FMT_YUV444P12 -#define PIX_FMT_YUV420P14 AV_PIX_FMT_YUV420P14 -#define PIX_FMT_YUV422P14 AV_PIX_FMT_YUV422P14 -#define PIX_FMT_YUV444P14 AV_PIX_FMT_YUV444P14 -#define PIX_FMT_YUV420P16 AV_PIX_FMT_YUV420P16 -#define PIX_FMT_YUV422P16 AV_PIX_FMT_YUV422P16 -#define PIX_FMT_YUV444P16 AV_PIX_FMT_YUV444P16 - -#define PIX_FMT_RGBA64 AV_PIX_FMT_RGBA64 -#define PIX_FMT_BGRA64 AV_PIX_FMT_BGRA64 -#define PIX_FMT_GBRP9 AV_PIX_FMT_GBRP9 -#define PIX_FMT_GBRP10 AV_PIX_FMT_GBRP10 -#define PIX_FMT_GBRP12 AV_PIX_FMT_GBRP12 -#define PIX_FMT_GBRP14 AV_PIX_FMT_GBRP14 -#define PIX_FMT_GBRP16 AV_PIX_FMT_GBRP16 -#endif - -#endif /* AVUTIL_PIXFMT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/random_seed.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/random_seed.h deleted file mode 100644 index 0462a048e0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/random_seed.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2009 Baptiste Coudurier - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_RANDOM_SEED_H -#define AVUTIL_RANDOM_SEED_H - -#include -/** - * @addtogroup lavu_crypto - * @{ - */ - -/** - * Get a seed to use in conjunction with random functions. - * This function tries to provide a good seed at a best effort bases. - * Its possible to call this function multiple times if more bits are needed. - * It can be quite slow, which is why it should only be used as seed for a faster - * PRNG. The quality of the seed depends on the platform. - */ -uint32_t av_get_random_seed(void); - -/** - * @} - */ - -#endif /* AVUTIL_RANDOM_SEED_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/rational.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/rational.h deleted file mode 100644 index 417e29e577..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/rational.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * rational numbers - * Copyright (c) 2003 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * rational numbers - * @author Michael Niedermayer - */ - -#ifndef AVUTIL_RATIONAL_H -#define AVUTIL_RATIONAL_H - -#include -#include -#include "attributes.h" - -/** - * @addtogroup lavu_math - * @{ - */ - -/** - * rational number numerator/denominator - */ -typedef struct AVRational{ - int num; ///< numerator - int den; ///< denominator -} AVRational; - -/** - * Compare two rationals. - * @param a first rational - * @param b second rational - * @return 0 if a==b, 1 if a>b, -1 if a>63)|1; - else if(b.den && a.den) return 0; - else if(a.num && b.num) return (a.num>>31) - (b.num>>31); - else return INT_MIN; -} - -/** - * Convert rational to double. - * @param a rational to convert - * @return (double) a - */ -static inline double av_q2d(AVRational a){ - return a.num / (double) a.den; -} - -/** - * Reduce a fraction. - * This is useful for framerate calculations. - * @param dst_num destination numerator - * @param dst_den destination denominator - * @param num source numerator - * @param den source denominator - * @param max the maximum allowed for dst_num & dst_den - * @return 1 if exact, 0 otherwise - */ -int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); - -/** - * Multiply two rationals. - * @param b first rational - * @param c second rational - * @return b*c - */ -AVRational av_mul_q(AVRational b, AVRational c) av_const; - -/** - * Divide one rational by another. - * @param b first rational - * @param c second rational - * @return b/c - */ -AVRational av_div_q(AVRational b, AVRational c) av_const; - -/** - * Add two rationals. - * @param b first rational - * @param c second rational - * @return b+c - */ -AVRational av_add_q(AVRational b, AVRational c) av_const; - -/** - * Subtract one rational from another. - * @param b first rational - * @param c second rational - * @return b-c - */ -AVRational av_sub_q(AVRational b, AVRational c) av_const; - -/** - * Invert a rational. - * @param q value - * @return 1 / q - */ -static av_always_inline AVRational av_inv_q(AVRational q) -{ - AVRational r = { q.den, q.num }; - return r; -} - -/** - * Convert a double precision floating point number to a rational. - * inf is expressed as {1,0} or {-1,0} depending on the sign. - * - * @param d double to convert - * @param max the maximum allowed numerator and denominator - * @return (AVRational) d - */ -AVRational av_d2q(double d, int max) av_const; - -/** - * @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer - * than q1, 0 if they have the same distance. - */ -int av_nearer_q(AVRational q, AVRational q1, AVRational q2); - -/** - * Find the nearest value in q_list to q. - * @param q_list an array of rationals terminated by {0, 0} - * @return the index of the nearest value found in the array - */ -int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); - -/** - * @} - */ - -#endif /* AVUTIL_RATIONAL_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/samplefmt.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/samplefmt.h deleted file mode 100644 index 529711fc20..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/samplefmt.h +++ /dev/null @@ -1,243 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_SAMPLEFMT_H -#define AVUTIL_SAMPLEFMT_H - -#include - -#include "avutil.h" -#include "attributes.h" - -/** - * Audio Sample Formats - * - * @par - * The data described by the sample format is always in native-endian order. - * Sample values can be expressed by native C types, hence the lack of a signed - * 24-bit sample format even though it is a common raw audio data format. - * - * @par - * The floating-point formats are based on full volume being in the range - * [-1.0, 1.0]. Any values outside this range are beyond full volume level. - * - * @par - * The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg - * (such as AVFrame in libavcodec) is as follows: - * - * For planar sample formats, each audio channel is in a separate data plane, - * and linesize is the buffer size, in bytes, for a single plane. All data - * planes must be the same size. For packed sample formats, only the first data - * plane is used, and samples for each channel are interleaved. In this case, - * linesize is the buffer size, in bytes, for the 1 plane. - */ -enum AVSampleFormat { - AV_SAMPLE_FMT_NONE = -1, - AV_SAMPLE_FMT_U8, ///< unsigned 8 bits - AV_SAMPLE_FMT_S16, ///< signed 16 bits - AV_SAMPLE_FMT_S32, ///< signed 32 bits - AV_SAMPLE_FMT_FLT, ///< float - AV_SAMPLE_FMT_DBL, ///< double - - AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar - AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar - AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar - AV_SAMPLE_FMT_FLTP, ///< float, planar - AV_SAMPLE_FMT_DBLP, ///< double, planar - - AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically -}; - -/** - * Return the name of sample_fmt, or NULL if sample_fmt is not - * recognized. - */ -const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt); - -/** - * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE - * on error. - */ -enum AVSampleFormat av_get_sample_fmt(const char *name); - -/** - * Return the planar<->packed alternative form of the given sample format, or - * AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the - * requested planar/packed format, the format returned is the same as the - * input. - */ -enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar); - -/** - * Get the packed alternative form of the given sample format. - * - * If the passed sample_fmt is already in packed format, the format returned is - * the same as the input. - * - * @return the packed alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Get the planar alternative form of the given sample format. - * - * If the passed sample_fmt is already in planar format, the format returned is - * the same as the input. - * - * @return the planar alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Generate a string corresponding to the sample format with - * sample_fmt, or a header if sample_fmt is negative. - * - * @param buf the buffer where to write the string - * @param buf_size the size of buf - * @param sample_fmt the number of the sample format to print the - * corresponding info string, or a negative value to print the - * corresponding header. - * @return the pointer to the filled buffer or NULL if sample_fmt is - * unknown or in case of other errors - */ -char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); - -#if FF_API_GET_BITS_PER_SAMPLE_FMT -/** - * @deprecated Use av_get_bytes_per_sample() instead. - */ -attribute_deprecated -int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt); -#endif - -/** - * Return number of bytes per sample. - * - * @param sample_fmt the sample format - * @return number of bytes per sample or zero if unknown for the given - * sample format - */ -int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); - -/** - * Check if the sample format is planar. - * - * @param sample_fmt the sample format to inspect - * @return 1 if the sample format is planar, 0 if it is interleaved - */ -int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt); - -/** - * Get the required buffer size for the given audio parameters. - * - * @param[out] linesize calculated linesize, may be NULL - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return required buffer size, or negative error code on failure - */ -int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * Fill plane data pointers and linesize for samples with sample - * format sample_fmt. - * - * The audio_data array is filled with the pointers to the samples data planes: - * for planar, set the start point of each channel's data within the buffer, - * for packed, set the start point of the entire buffer only. - * - * The value pointed to by linesize is set to the aligned size of each - * channel's data buffer for planar layout, or to the aligned size of the - * buffer for all channels for packed layout. - * - * The buffer in buf must be big enough to contain all the samples - * (use av_samples_get_buffer_size() to compute its minimum size), - * otherwise the audio_data pointers will point to invalid data. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize calculated linesize, may be NULL - * @param buf the pointer to a buffer containing the samples - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return >=0 on success or a negative error code on failure - * @todo return minimum size in bytes required for the buffer in case - * of success at the next bump - */ -int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, - const uint8_t *buf, - int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * Allocate a samples buffer for nb_samples samples, and fill data pointers and - * linesize accordingly. - * The allocated samples buffer can be freed by using av_freep(&audio_data[0]) - * Allocated data will be initialized to silence. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize aligned size for audio buffer(s), may be NULL - * @param nb_channels number of audio channels - * @param nb_samples number of samples per channel - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return >=0 on success or a negative error code on failure - * @todo return the size of the allocated buffer in case of success at the next bump - * @see av_samples_fill_arrays() - */ -int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, - int nb_samples, enum AVSampleFormat sample_fmt, int align); - -/** - * Copy samples from src to dst. - * - * @param dst destination array of pointers to data planes - * @param src source array of pointers to data planes - * @param dst_offset offset in samples at which the data will be written to dst - * @param src_offset offset in samples at which the data will be read from src - * @param nb_samples number of samples to be copied - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset, - int src_offset, int nb_samples, int nb_channels, - enum AVSampleFormat sample_fmt); - -/** - * Fill an audio buffer with silence. - * - * @param audio_data array of pointers to data planes - * @param offset offset in samples at which to start filling - * @param nb_samples number of samples to fill - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples, - int nb_channels, enum AVSampleFormat sample_fmt); - -#endif /* AVUTIL_SAMPLEFMT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/sha.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/sha.h deleted file mode 100644 index bf4377e51b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/sha.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (C) 2007 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_SHA_H -#define AVUTIL_SHA_H - -#include - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_sha SHA - * @ingroup lavu_crypto - * @{ - */ - -extern const int av_sha_size; - -struct AVSHA; - -/** - * Allocate an AVSHA context. - */ -struct AVSHA *av_sha_alloc(void); - -/** - * Initialize SHA-1 or SHA-2 hashing. - * - * @param context pointer to the function context (of size av_sha_size) - * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits) - * @return zero if initialization succeeded, -1 otherwise - */ -int av_sha_init(struct AVSHA* context, int bits); - -/** - * Update hash value. - * - * @param context hash function context - * @param data input data to update hash with - * @param len input data length - */ -void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len); - -/** - * Finish hashing and output digest value. - * - * @param context hash function context - * @param digest buffer where output digest value is stored - */ -void av_sha_final(struct AVSHA* context, uint8_t *digest); - -/** - * @} - */ - -#endif /* AVUTIL_SHA_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/time.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/time.h deleted file mode 100644 index 90eb436949..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/time.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2000-2003 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_TIME_H -#define AVUTIL_TIME_H - -#include - -/** - * Get the current time in microseconds. - */ -int64_t av_gettime(void); - -/** - * Sleep for a period of time. Although the duration is expressed in - * microseconds, the actual delay may be rounded to the precision of the - * system timer. - * - * @param usec Number of microseconds to sleep. - * @return zero on success or (negative) error code. - */ -int av_usleep(unsigned usec); - -#endif /* AVUTIL_TIME_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/timecode.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/timecode.h deleted file mode 100644 index 56e3975fd8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/timecode.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2006 Smartjog S.A.S, Baptiste Coudurier - * Copyright (c) 2011-2012 Smartjog S.A.S, Clément Bœsch - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Timecode helpers header - */ - -#ifndef AVUTIL_TIMECODE_H -#define AVUTIL_TIMECODE_H - -#include -#include "rational.h" - -#define AV_TIMECODE_STR_SIZE 16 - -enum AVTimecodeFlag { - AV_TIMECODE_FLAG_DROPFRAME = 1<<0, ///< timecode is drop frame - AV_TIMECODE_FLAG_24HOURSMAX = 1<<1, ///< timecode wraps after 24 hours - AV_TIMECODE_FLAG_ALLOWNEGATIVE = 1<<2, ///< negative time values are allowed -}; - -typedef struct { - int start; ///< timecode frame start (first base frame number) - uint32_t flags; ///< flags such as drop frame, +24 hours support, ... - AVRational rate; ///< frame rate in rational form - unsigned fps; ///< frame per second; must be consistent with the rate field -} AVTimecode; - -/** - * Adjust frame number for NTSC drop frame time code. - * - * @param framenum frame number to adjust - * @param fps frame per second, 30 or 60 - * @return adjusted frame number - * @warning adjustment is only valid in NTSC 29.97 and 59.94 - */ -int av_timecode_adjust_ntsc_framenum2(int framenum, int fps); - -/** - * Convert frame number to SMPTE 12M binary representation. - * - * @param tc timecode data correctly initialized - * @param framenum frame number - * @return the SMPTE binary representation - * - * @note Frame number adjustment is automatically done in case of drop timecode, - * you do NOT have to call av_timecode_adjust_ntsc_framenum2(). - * @note The frame number is relative to tc->start. - * @note Color frame (CF), binary group flags (BGF) and biphase mark polarity - * correction (PC) bits are set to zero. - */ -uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum); - -/** - * Load timecode string in buf. - * - * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long - * @param tc timecode data correctly initialized - * @param framenum frame number - * @return the buf parameter - * - * @note Timecode representation can be a negative timecode and have more than - * 24 hours, but will only be honored if the flags are correctly set. - * @note The frame number is relative to tc->start. - */ -char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum); - -/** - * Get the timecode string from the SMPTE timecode format. - * - * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long - * @param tcsmpte the 32-bit SMPTE timecode - * @param prevent_df prevent the use of a drop flag when it is known the DF bit - * is arbitrary - * @return the buf parameter - */ -char *av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df); - -/** - * Get the timecode string from the 25-bit timecode format (MPEG GOP format). - * - * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long - * @param tc25bit the 25-bits timecode - * @return the buf parameter - */ -char *av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit); - -/** - * Init a timecode struct with the passed parameters. - * - * @param log_ctx a pointer to an arbitrary struct of which the first field - * is a pointer to an AVClass struct (used for av_log) - * @param tc pointer to an allocated AVTimecode - * @param rate frame rate in rational form - * @param flags miscellaneous flags such as drop frame, +24 hours, ... - * (see AVTimecodeFlag) - * @param frame_start the first frame number - * @return 0 on success, AVERROR otherwise - */ -int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start, void *log_ctx); - -/** - * Parse timecode representation (hh:mm:ss[:;.]ff). - * - * @param log_ctx a pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct (used for av_log). - * @param tc pointer to an allocated AVTimecode - * @param rate frame rate in rational form - * @param str timecode string which will determine the frame start - * @return 0 on success, AVERROR otherwise - */ -int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *str, void *log_ctx); - -/** - * Check if the timecode feature is available for the given frame rate - * - * @return 0 if supported, <0 otherwise - */ -int av_timecode_check_frame_rate(AVRational rate); - -#endif /* AVUTIL_TIMECODE_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/timestamp.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/timestamp.h deleted file mode 100644 index c7348d8f12..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/timestamp.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * timestamp utils, mostly useful for debugging/logging purposes - */ - -#ifndef AVUTIL_TIMESTAMP_H -#define AVUTIL_TIMESTAMP_H - -#include "common.h" - -#define AV_TS_MAX_STRING_SIZE 32 - -/** - * Fill the provided buffer with a string containing a timestamp - * representation. - * - * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE - * @param ts the timestamp to represent - * @return the buffer in input - */ -static inline char *av_ts_make_string(char *buf, int64_t ts) -{ - if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); - else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%"PRId64"", ts); - return buf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts) - -/** - * Fill the provided buffer with a string containing a timestamp time - * representation. - * - * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE - * @param ts the timestamp to represent - * @param tb the timebase of the timestamp - * @return the buffer in input - */ -static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb) -{ - if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); - else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%.6g", av_q2d(*tb) * ts); - return buf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb) - -#endif /* AVUTIL_TIMESTAMP_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/version.h deleted file mode 100644 index 4cd82268db..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/version.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * copyright (c) 2003 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_VERSION_H -#define AVUTIL_VERSION_H - -/** - * @defgroup preproc_misc Preprocessor String Macros - * - * String manipulation macros - * - * @{ - */ - -#define AV_STRINGIFY(s) AV_TOSTRING(s) -#define AV_TOSTRING(s) #s - -#define AV_GLUE(a, b) a ## b -#define AV_JOIN(a, b) AV_GLUE(a, b) - -#define AV_PRAGMA(s) _Pragma(#s) - -/** - * @} - */ - -/** - * @defgroup version_utils Library Version Macros - * - * Useful to check and match library version in order to maintain - * backward compatibility. - * - * @{ - */ - -#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c) -#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c -#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) - -/** - * @} - */ - - -/** - * @file - * @ingroup lavu - * Libavutil version macros - */ - -/** - * @defgroup lavu_ver Version and Build diagnostics - * - * Macros and function useful to check at compiletime and at runtime - * which version of libavutil is in use. - * - * @{ - */ - -#define LIBAVUTIL_VERSION_MAJOR 52 -#define LIBAVUTIL_VERSION_MINOR 18 -#define LIBAVUTIL_VERSION_MICRO 100 - -#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT - -#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) - -/** - * @} - * - * @defgroup depr_guards Deprecation guards - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @{ - */ - -#ifndef FF_API_GET_BITS_PER_SAMPLE_FMT -#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_FIND_OPT -#define FF_API_FIND_OPT (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_OLD_AVOPTIONS -#define FF_API_OLD_AVOPTIONS (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_PIX_FMT -#define FF_API_PIX_FMT (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_CONTEXT_SIZE -#define FF_API_CONTEXT_SIZE (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_PIX_FMT_DESC -#define FF_API_PIX_FMT_DESC (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_AV_REVERSE -#define FF_API_AV_REVERSE (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_AUDIOCONVERT -#define FF_API_AUDIOCONVERT (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_CPU_FLAG_MMX2 -#define FF_API_CPU_FLAG_MMX2 (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_SAMPLES_UTILS_RETURN_ZERO -#define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 53) -#endif -#ifndef FF_API_LLS_PRIVATE -#define FF_API_LLS_PRIVATE (LIBAVUTIL_VERSION_MAJOR < 53) -#endif - - -/** - * @} - */ - -#endif /* AVUTIL_VERSION_H */ - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/xtea.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/xtea.h deleted file mode 100644 index 0899c92bc8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/libavutil/xtea.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * A 32-bit implementation of the XTEA algorithm - * Copyright (c) 2012 Samuel Pitoiset - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_XTEA_H -#define AVUTIL_XTEA_H - -#include - -/** - * @defgroup lavu_xtea XTEA - * @ingroup lavu_crypto - * @{ - */ - -typedef struct AVXTEA { - uint32_t key[16]; -} AVXTEA; - -/** - * Initialize an AVXTEA context. - * - * @param ctx an AVXTEA context - * @param key a key of 16 bytes used for encryption/decryption - */ -void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]); - -/** - * Encrypt or decrypt a buffer using a previously initialized context. - * - * @param ctx an AVXTEA context - * @param dst destination array, can be equal to src - * @param src source array, can be equal to dst - * @param count number of 8 byte blocks - * @param iv initialization vector for CBC mode, if NULL then ECB will be used - * @param decrypt 0 for encryption, 1 for decryption - */ -void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, - int count, uint8_t *iv, int decrypt); - -/** - * @} - */ - -#endif /* AVUTIL_XTEA_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma.h deleted file mode 100644 index fb874c3e13..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma.h +++ /dev/null @@ -1,313 +0,0 @@ -/** - * \file api/lzma.h - * \brief The public API of liblzma data compression library - * - * liblzma is a public domain general-purpose data compression library with - * a zlib-like API. The native file format is .xz, but also the old .lzma - * format and raw (no headers) streams are supported. Multiple compression - * algorithms (filters) are supported. Currently LZMA2 is the primary filter. - * - * liblzma is part of XZ Utils . XZ Utils includes - * a gzip-like command line tool named xz and some other tools. XZ Utils - * is developed and maintained by Lasse Collin. - * - * Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK - * . - * - * The SHA-256 implementation is based on the public domain code found from - * 7-Zip , which has a modified version of the public - * domain SHA-256 code found from Crypto++ . - * The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - */ - -#ifndef LZMA_H -#define LZMA_H - -/***************************** - * Required standard headers * - *****************************/ - -/* - * liblzma API headers need some standard types and macros. To allow - * including lzma.h without requiring the application to include other - * headers first, lzma.h includes the required standard headers unless - * they already seem to be included already or if LZMA_MANUAL_HEADERS - * has been defined. - * - * Here's what types and macros are needed and from which headers: - * - stddef.h: size_t, NULL - * - stdint.h: uint8_t, uint32_t, uint64_t, UINT32_C(n), uint64_C(n), - * UINT32_MAX, UINT64_MAX - * - * However, inttypes.h is a little more portable than stdint.h, although - * inttypes.h declares some unneeded things compared to plain stdint.h. - * - * The hacks below aren't perfect, specifically they assume that inttypes.h - * exists and that it typedefs at least uint8_t, uint32_t, and uint64_t, - * and that, in case of incomplete inttypes.h, unsigned int is 32-bit. - * If the application already takes care of setting up all the types and - * macros properly (for example by using gnulib's stdint.h or inttypes.h), - * we try to detect that the macros are already defined and don't include - * inttypes.h here again. However, you may define LZMA_MANUAL_HEADERS to - * force this file to never include any system headers. - * - * Some could argue that liblzma API should provide all the required types, - * for example lzma_uint64, LZMA_UINT64_C(n), and LZMA_UINT64_MAX. This was - * seen as an unnecessary mess, since most systems already provide all the - * necessary types and macros in the standard headers. - * - * Note that liblzma API still has lzma_bool, because using stdbool.h would - * break C89 and C++ programs on many systems. sizeof(bool) in C99 isn't - * necessarily the same as sizeof(bool) in C++. - */ - -#ifndef LZMA_MANUAL_HEADERS - /* - * I suppose this works portably also in C++. Note that in C++, - * we need to get size_t into the global namespace. - */ -# include - - /* - * Skip inttypes.h if we already have all the required macros. If we - * have the macros, we assume that we have the matching typedefs too. - */ -# if !defined(UINT32_C) || !defined(UINT64_C) \ - || !defined(UINT32_MAX) || !defined(UINT64_MAX) - /* - * MSVC has no C99 support, and thus it cannot be used to - * compile liblzma. The liblzma API has to still be usable - * from MSVC, so we need to define the required standard - * integer types here. - */ -# if defined(_WIN32) && defined(_MSC_VER) - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; -# else - /* Use the standard inttypes.h. */ -# ifdef __cplusplus - /* - * C99 sections 7.18.2 and 7.18.4 specify - * that C++ implementations define the limit - * and constant macros only if specifically - * requested. Note that if you want the - * format macros (PRIu64 etc.) too, you need - * to define __STDC_FORMAT_MACROS before - * including lzma.h, since re-including - * inttypes.h with __STDC_FORMAT_MACROS - * defined doesn't necessarily work. - */ -# ifndef __STDC_LIMIT_MACROS -# define __STDC_LIMIT_MACROS 1 -# endif -# ifndef __STDC_CONSTANT_MACROS -# define __STDC_CONSTANT_MACROS 1 -# endif -# endif - -# include -# endif - - /* - * Some old systems have only the typedefs in inttypes.h, and - * lack all the macros. For those systems, we need a few more - * hacks. We assume that unsigned int is 32-bit and unsigned - * long is either 32-bit or 64-bit. If these hacks aren't - * enough, the application has to setup the types manually - * before including lzma.h. - */ -# ifndef UINT32_C -# if defined(_WIN32) && defined(_MSC_VER) -# define UINT32_C(n) n ## UI32 -# else -# define UINT32_C(n) n ## U -# endif -# endif - -# ifndef UINT64_C -# if defined(_WIN32) && defined(_MSC_VER) -# define UINT64_C(n) n ## UI64 -# else - /* Get ULONG_MAX. */ -# include -# if ULONG_MAX == 4294967295UL -# define UINT64_C(n) n ## ULL -# else -# define UINT64_C(n) n ## UL -# endif -# endif -# endif - -# ifndef UINT32_MAX -# define UINT32_MAX (UINT32_C(4294967295)) -# endif - -# ifndef UINT64_MAX -# define UINT64_MAX (UINT64_C(18446744073709551615)) -# endif -# endif -#endif /* ifdef LZMA_MANUAL_HEADERS */ - - -/****************** - * LZMA_API macro * - ******************/ - -/* - * Some systems require that the functions and function pointers are - * declared specially in the headers. LZMA_API_IMPORT is for importing - * symbols and LZMA_API_CALL is to specify the calling convention. - * - * By default it is assumed that the application will link dynamically - * against liblzma. #define LZMA_API_STATIC in your application if you - * want to link against static liblzma. If you don't care about portability - * to operating systems like Windows, or at least don't care about linking - * against static liblzma on them, don't worry about LZMA_API_STATIC. That - * is, most developers will never need to use LZMA_API_STATIC. - * - * The GCC variants are a special case on Windows (Cygwin and MinGW). - * We rely on GCC doing the right thing with its auto-import feature, - * and thus don't use __declspec(dllimport). This way developers don't - * need to worry about LZMA_API_STATIC. Also the calling convention is - * omitted on Cygwin but not on MinGW. - */ -#ifndef LZMA_API_IMPORT -# if !defined(LZMA_API_STATIC) && defined(_WIN32) && !defined(__GNUC__) -# define LZMA_API_IMPORT __declspec(dllimport) -# else -# define LZMA_API_IMPORT -# endif -#endif - -#ifndef LZMA_API_CALL -# if defined(_WIN32) && !defined(__CYGWIN__) -# define LZMA_API_CALL __cdecl -# else -# define LZMA_API_CALL -# endif -#endif - -#ifndef LZMA_API -# define LZMA_API(type) LZMA_API_IMPORT type LZMA_API_CALL -#endif - - -/*********** - * nothrow * - ***********/ - -/* - * None of the functions in liblzma may throw an exception. Even - * the functions that use callback functions won't throw exceptions, - * because liblzma would break if a callback function threw an exception. - */ -#ifndef lzma_nothrow -# if defined(__cplusplus) -# define lzma_nothrow throw() -# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) -# define lzma_nothrow __attribute__((__nothrow__)) -# else -# define lzma_nothrow -# endif -#endif - - -/******************** - * GNU C extensions * - ********************/ - -/* - * GNU C extensions are used conditionally in the public API. It doesn't - * break anything if these are sometimes enabled and sometimes not, only - * affects warnings and optimizations. - */ -#if __GNUC__ >= 3 -# ifndef lzma_attribute -# define lzma_attribute(attr) __attribute__(attr) -# endif - - /* warn_unused_result was added in GCC 3.4. */ -# ifndef lzma_attr_warn_unused_result -# if __GNUC__ == 3 && __GNUC_MINOR__ < 4 -# define lzma_attr_warn_unused_result -# endif -# endif - -#else -# ifndef lzma_attribute -# define lzma_attribute(attr) -# endif -#endif - - -#ifndef lzma_attr_pure -# define lzma_attr_pure lzma_attribute((__pure__)) -#endif - -#ifndef lzma_attr_const -# define lzma_attr_const lzma_attribute((__const__)) -#endif - -#ifndef lzma_attr_warn_unused_result -# define lzma_attr_warn_unused_result \ - lzma_attribute((__warn_unused_result__)) -#endif - - -/************** - * Subheaders * - **************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Subheaders check that this is defined. It is to prevent including - * them directly from applications. - */ -#define LZMA_H_INTERNAL 1 - -/* Basic features */ -#include "lzma/version.h" -#include "lzma/base.h" -#include "lzma/vli.h" -#include "lzma/check.h" - -/* Filters */ -#include "lzma/filter.h" -#include "lzma/bcj.h" -#include "lzma/delta.h" -#include "lzma/lzma.h" - -/* Container formats */ -#include "lzma/container.h" - -/* Advanced features */ -#include "lzma/stream_flags.h" -#include "lzma/block.h" -#include "lzma/index.h" -#include "lzma/index_hash.h" - -/* Hardware information */ -#include "lzma/hardware.h" - -/* - * All subheaders included. Undefine LZMA_H_INTERNAL to prevent applications - * re-including the subheaders. - */ -#undef LZMA_H_INTERNAL - -#ifdef __cplusplus -} -#endif - -#endif /* ifndef LZMA_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/base.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/base.h deleted file mode 100644 index 43dde8d60f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/base.h +++ /dev/null @@ -1,601 +0,0 @@ -/** - * \file lzma/base.h - * \brief Data types and functions used in many places in liblzma API - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Boolean - * - * This is here because C89 doesn't have stdbool.h. To set a value for - * variables having type lzma_bool, you can use - * - C99's `true' and `false' from stdbool.h; - * - C++'s internal `true' and `false'; or - * - integers one (true) and zero (false). - */ -typedef unsigned char lzma_bool; - - -/** - * \brief Type of reserved enumeration variable in structures - * - * To avoid breaking library ABI when new features are added, several - * structures contain extra variables that may be used in future. Since - * sizeof(enum) can be different than sizeof(int), and sizeof(enum) may - * even vary depending on the range of enumeration constants, we specify - * a separate type to be used for reserved enumeration variables. All - * enumeration constants in liblzma API will be non-negative and less - * than 128, which should guarantee that the ABI won't break even when - * new constants are added to existing enumerations. - */ -typedef enum { - LZMA_RESERVED_ENUM = 0 -} lzma_reserved_enum; - - -/** - * \brief Return values used by several functions in liblzma - * - * Check the descriptions of specific functions to find out which return - * values they can return. With some functions the return values may have - * more specific meanings than described here; those differences are - * described per-function basis. - */ -typedef enum { - LZMA_OK = 0, - /**< - * \brief Operation completed successfully - */ - - LZMA_STREAM_END = 1, - /**< - * \brief End of stream was reached - * - * In encoder, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, or - * LZMA_FINISH was finished. In decoder, this indicates - * that all the data was successfully decoded. - * - * In all cases, when LZMA_STREAM_END is returned, the last - * output bytes should be picked from strm->next_out. - */ - - LZMA_NO_CHECK = 2, - /**< - * \brief Input stream has no integrity check - * - * This return value can be returned only if the - * LZMA_TELL_NO_CHECK flag was used when initializing - * the decoder. LZMA_NO_CHECK is just a warning, and - * the decoding can be continued normally. - * - * It is possible to call lzma_get_check() immediately after - * lzma_code has returned LZMA_NO_CHECK. The result will - * naturally be LZMA_CHECK_NONE, but the possibility to call - * lzma_get_check() may be convenient in some applications. - */ - - LZMA_UNSUPPORTED_CHECK = 3, - /**< - * \brief Cannot calculate the integrity check - * - * The usage of this return value is different in encoders - * and decoders. - * - * Encoders can return this value only from the initialization - * function. If initialization fails with this value, the - * encoding cannot be done, because there's no way to produce - * output with the correct integrity check. - * - * Decoders can return this value only from lzma_code() and - * only if the LZMA_TELL_UNSUPPORTED_CHECK flag was used when - * initializing the decoder. The decoding can still be - * continued normally even if the check type is unsupported, - * but naturally the check will not be validated, and possible - * errors may go undetected. - * - * With decoder, it is possible to call lzma_get_check() - * immediately after lzma_code() has returned - * LZMA_UNSUPPORTED_CHECK. This way it is possible to find - * out what the unsupported Check ID was. - */ - - LZMA_GET_CHECK = 4, - /**< - * \brief Integrity check type is now available - * - * This value can be returned only by the lzma_code() function - * and only if the decoder was initialized with the - * LZMA_TELL_ANY_CHECK flag. LZMA_GET_CHECK tells the - * application that it may now call lzma_get_check() to find - * out the Check ID. This can be used, for example, to - * implement a decoder that accepts only files that have - * strong enough integrity check. - */ - - LZMA_MEM_ERROR = 5, - /**< - * \brief Cannot allocate memory - * - * Memory allocation failed, or the size of the allocation - * would be greater than SIZE_MAX. - * - * Due to internal implementation reasons, the coding cannot - * be continued even if more memory were made available after - * LZMA_MEM_ERROR. - */ - - LZMA_MEMLIMIT_ERROR = 6, - /** - * \brief Memory usage limit was reached - * - * Decoder would need more memory than allowed by the - * specified memory usage limit. To continue decoding, - * the memory usage limit has to be increased with - * lzma_memlimit_set(). - */ - - LZMA_FORMAT_ERROR = 7, - /**< - * \brief File format not recognized - * - * The decoder did not recognize the input as supported file - * format. This error can occur, for example, when trying to - * decode .lzma format file with lzma_stream_decoder, - * because lzma_stream_decoder accepts only the .xz format. - */ - - LZMA_OPTIONS_ERROR = 8, - /**< - * \brief Invalid or unsupported options - * - * Invalid or unsupported options, for example - * - unsupported filter(s) or filter options; or - * - reserved bits set in headers (decoder only). - * - * Rebuilding liblzma with more features enabled, or - * upgrading to a newer version of liblzma may help. - */ - - LZMA_DATA_ERROR = 9, - /**< - * \brief Data is corrupt - * - * The usage of this return value is different in encoders - * and decoders. In both encoder and decoder, the coding - * cannot continue after this error. - * - * Encoders return this if size limits of the target file - * format would be exceeded. These limits are huge, thus - * getting this error from an encoder is mostly theoretical. - * For example, the maximum compressed and uncompressed - * size of a .xz Stream is roughly 8 EiB (2^63 bytes). - * - * Decoders return this error if the input data is corrupt. - * This can mean, for example, invalid CRC32 in headers - * or invalid check of uncompressed data. - */ - - LZMA_BUF_ERROR = 10, - /**< - * \brief No progress is possible - * - * This error code is returned when the coder cannot consume - * any new input and produce any new output. The most common - * reason for this error is that the input stream being - * decoded is truncated or corrupt. - * - * This error is not fatal. Coding can be continued normally - * by providing more input and/or more output space, if - * possible. - * - * Typically the first call to lzma_code() that can do no - * progress returns LZMA_OK instead of LZMA_BUF_ERROR. Only - * the second consecutive call doing no progress will return - * LZMA_BUF_ERROR. This is intentional. - * - * With zlib, Z_BUF_ERROR may be returned even if the - * application is doing nothing wrong, so apps will need - * to handle Z_BUF_ERROR specially. The above hack - * guarantees that liblzma never returns LZMA_BUF_ERROR - * to properly written applications unless the input file - * is truncated or corrupt. This should simplify the - * applications a little. - */ - - LZMA_PROG_ERROR = 11, - /**< - * \brief Programming error - * - * This indicates that the arguments given to the function are - * invalid or the internal state of the decoder is corrupt. - * - Function arguments are invalid or the structures - * pointed by the argument pointers are invalid - * e.g. if strm->next_out has been set to NULL and - * strm->avail_out > 0 when calling lzma_code(). - * - lzma_* functions have been called in wrong order - * e.g. lzma_code() was called right after lzma_end(). - * - If errors occur randomly, the reason might be flaky - * hardware. - * - * If you think that your code is correct, this error code - * can be a sign of a bug in liblzma. See the documentation - * how to report bugs. - */ -} lzma_ret; - - -/** - * \brief The `action' argument for lzma_code() - * - * After the first use of LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, or LZMA_FINISH, - * the same `action' must is used until lzma_code() returns LZMA_STREAM_END. - * Also, the amount of input (that is, strm->avail_in) must not be modified - * by the application until lzma_code() returns LZMA_STREAM_END. Changing the - * `action' or modifying the amount of input will make lzma_code() return - * LZMA_PROG_ERROR. - */ -typedef enum { - LZMA_RUN = 0, - /**< - * \brief Continue coding - * - * Encoder: Encode as much input as possible. Some internal - * buffering will probably be done (depends on the filter - * chain in use), which causes latency: the input used won't - * usually be decodeable from the output of the same - * lzma_code() call. - * - * Decoder: Decode as much input as possible and produce as - * much output as possible. - */ - - LZMA_SYNC_FLUSH = 1, - /**< - * \brief Make all the input available at output - * - * Normally the encoder introduces some latency. - * LZMA_SYNC_FLUSH forces all the buffered data to be - * available at output without resetting the internal - * state of the encoder. This way it is possible to use - * compressed stream for example for communication over - * network. - * - * Only some filters support LZMA_SYNC_FLUSH. Trying to use - * LZMA_SYNC_FLUSH with filters that don't support it will - * make lzma_code() return LZMA_OPTIONS_ERROR. For example, - * LZMA1 doesn't support LZMA_SYNC_FLUSH but LZMA2 does. - * - * Using LZMA_SYNC_FLUSH very often can dramatically reduce - * the compression ratio. With some filters (for example, - * LZMA2), fine-tuning the compression options may help - * mitigate this problem significantly (for example, - * match finder with LZMA2). - * - * Decoders don't support LZMA_SYNC_FLUSH. - */ - - LZMA_FULL_FLUSH = 2, - /**< - * \brief Finish encoding of the current Block - * - * All the input data going to the current Block must have - * been given to the encoder (the last bytes can still be - * pending in* next_in). Call lzma_code() with LZMA_FULL_FLUSH - * until it returns LZMA_STREAM_END. Then continue normally - * with LZMA_RUN or finish the Stream with LZMA_FINISH. - * - * This action is currently supported only by Stream encoder - * and easy encoder (which uses Stream encoder). If there is - * no unfinished Block, no empty Block is created. - */ - - LZMA_FINISH = 3 - /**< - * \brief Finish the coding operation - * - * All the input data must have been given to the encoder - * (the last bytes can still be pending in next_in). - * Call lzma_code() with LZMA_FINISH until it returns - * LZMA_STREAM_END. Once LZMA_FINISH has been used, - * the amount of input must no longer be changed by - * the application. - * - * When decoding, using LZMA_FINISH is optional unless the - * LZMA_CONCATENATED flag was used when the decoder was - * initialized. When LZMA_CONCATENATED was not used, the only - * effect of LZMA_FINISH is that the amount of input must not - * be changed just like in the encoder. - */ -} lzma_action; - - -/** - * \brief Custom functions for memory handling - * - * A pointer to lzma_allocator may be passed via lzma_stream structure - * to liblzma, and some advanced functions take a pointer to lzma_allocator - * as a separate function argument. The library will use the functions - * specified in lzma_allocator for memory handling instead of the default - * malloc() and free(). C++ users should note that the custom memory - * handling functions must not throw exceptions. - * - * liblzma doesn't make an internal copy of lzma_allocator. Thus, it is - * OK to change these function pointers in the middle of the coding - * process, but obviously it must be done carefully to make sure that the - * replacement `free' can deallocate memory allocated by the earlier - * `alloc' function(s). - */ -typedef struct { - /** - * \brief Pointer to a custom memory allocation function - * - * If you don't want a custom allocator, but still want - * custom free(), set this to NULL and liblzma will use - * the standard malloc(). - * - * \param opaque lzma_allocator.opaque (see below) - * \param nmemb Number of elements like in calloc(). liblzma - * will always set nmemb to 1, so it is safe to - * ignore nmemb in a custom allocator if you like. - * The nmemb argument exists only for - * compatibility with zlib and libbzip2. - * \param size Size of an element in bytes. - * liblzma never sets this to zero. - * - * \return Pointer to the beginning of a memory block of - * `size' bytes, or NULL if allocation fails - * for some reason. When allocation fails, functions - * of liblzma return LZMA_MEM_ERROR. - * - * The allocator should not waste time zeroing the allocated buffers. - * This is not only about speed, but also memory usage, since the - * operating system kernel doesn't necessarily allocate the requested - * memory in physical memory until it is actually used. With small - * input files, liblzma may actually need only a fraction of the - * memory that it requested for allocation. - * - * \note LZMA_MEM_ERROR is also used when the size of the - * allocation would be greater than SIZE_MAX. Thus, - * don't assume that the custom allocator must have - * returned NULL if some function from liblzma - * returns LZMA_MEM_ERROR. - */ - void *(LZMA_API_CALL *alloc)(void *opaque, size_t nmemb, size_t size); - - /** - * \brief Pointer to a custom memory freeing function - * - * If you don't want a custom freeing function, but still - * want a custom allocator, set this to NULL and liblzma - * will use the standard free(). - * - * \param opaque lzma_allocator.opaque (see below) - * \param ptr Pointer returned by lzma_allocator.alloc(), - * or when it is set to NULL, a pointer returned - * by the standard malloc(). - */ - void (LZMA_API_CALL *free)(void *opaque, void *ptr); - - /** - * \brief Pointer passed to .alloc() and .free() - * - * opaque is passed as the first argument to lzma_allocator.alloc() - * and lzma_allocator.free(). This intended to ease implementing - * custom memory allocation functions for use with liblzma. - * - * If you don't need this, you should set this to NULL. - */ - void *opaque; - -} lzma_allocator; - - -/** - * \brief Internal data structure - * - * The contents of this structure is not visible outside the library. - */ -typedef struct lzma_internal_s lzma_internal; - - -/** - * \brief Passing data to and from liblzma - * - * The lzma_stream structure is used for - * - passing pointers to input and output buffers to liblzma; - * - defining custom memory hander functions; and - * - holding a pointer to coder-specific internal data structures. - * - * Typical usage: - * - * - After allocating lzma_stream (on stack or with malloc()), it must be - * initialized to LZMA_STREAM_INIT (see LZMA_STREAM_INIT for details). - * - * - Initialize a coder to the lzma_stream, for example by using - * lzma_easy_encoder() or lzma_auto_decoder(). Some notes: - * - In contrast to zlib, strm->next_in and strm->next_out are - * ignored by all initialization functions, thus it is safe - * to not initialize them yet. - * - The initialization functions always set strm->total_in and - * strm->total_out to zero. - * - If the initialization function fails, no memory is left allocated - * that would require freeing with lzma_end() even if some memory was - * associated with the lzma_stream structure when the initialization - * function was called. - * - * - Use lzma_code() to do the actual work. - * - * - Once the coding has been finished, the existing lzma_stream can be - * reused. It is OK to reuse lzma_stream with different initialization - * function without calling lzma_end() first. Old allocations are - * automatically freed. - * - * - Finally, use lzma_end() to free the allocated memory. lzma_end() never - * frees the lzma_stream structure itself. - * - * Application may modify the values of total_in and total_out as it wants. - * They are updated by liblzma to match the amount of data read and - * written, but aren't used for anything else. - */ -typedef struct { - const uint8_t *next_in; /**< Pointer to the next input byte. */ - size_t avail_in; /**< Number of available input bytes in next_in. */ - uint64_t total_in; /**< Total number of bytes read by liblzma. */ - - uint8_t *next_out; /**< Pointer to the next output position. */ - size_t avail_out; /**< Amount of free space in next_out. */ - uint64_t total_out; /**< Total number of bytes written by liblzma. */ - - /** - * \brief Custom memory allocation functions - * - * In most cases this is NULL which makes liblzma use - * the standard malloc() and free(). - */ - lzma_allocator *allocator; - - /** Internal state is not visible to applications. */ - lzma_internal *internal; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. Excluding the initialization of this structure, - * you should not touch these, because the names of these variables - * may change. - */ - void *reserved_ptr1; - void *reserved_ptr2; - void *reserved_ptr3; - void *reserved_ptr4; - uint64_t reserved_int1; - uint64_t reserved_int2; - size_t reserved_int3; - size_t reserved_int4; - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - -} lzma_stream; - - -/** - * \brief Initialization for lzma_stream - * - * When you declare an instance of lzma_stream, you can immediately - * initialize it so that initialization functions know that no memory - * has been allocated yet: - * - * lzma_stream strm = LZMA_STREAM_INIT; - * - * If you need to initialize a dynamically allocated lzma_stream, you can use - * memset(strm_pointer, 0, sizeof(lzma_stream)). Strictly speaking, this - * violates the C standard since NULL may have different internal - * representation than zero, but it should be portable enough in practice. - * Anyway, for maximum portability, you can use something like this: - * - * lzma_stream tmp = LZMA_STREAM_INIT; - * *strm = tmp; - */ -#define LZMA_STREAM_INIT \ - { NULL, 0, 0, NULL, 0, 0, NULL, NULL, \ - NULL, NULL, NULL, NULL, 0, 0, 0, 0, \ - LZMA_RESERVED_ENUM, LZMA_RESERVED_ENUM } - - -/** - * \brief Encode or decode data - * - * Once the lzma_stream has been successfully initialized (e.g. with - * lzma_stream_encoder()), the actual encoding or decoding is done - * using this function. The application has to update strm->next_in, - * strm->avail_in, strm->next_out, and strm->avail_out to pass input - * to and get output from liblzma. - * - * See the description of the coder-specific initialization function to find - * out what `action' values are supported by the coder. - */ -extern LZMA_API(lzma_ret) lzma_code(lzma_stream *strm, lzma_action action) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Free memory allocated for the coder data structures - * - * \param strm Pointer to lzma_stream that is at least initialized - * with LZMA_STREAM_INIT. - * - * After lzma_end(strm), strm->internal is guaranteed to be NULL. No other - * members of the lzma_stream structure are touched. - * - * \note zlib indicates an error if application end()s unfinished - * stream structure. liblzma doesn't do this, and assumes that - * application knows what it is doing. - */ -extern LZMA_API(void) lzma_end(lzma_stream *strm) lzma_nothrow; - - -/** - * \brief Get the memory usage of decoder filter chain - * - * This function is currently supported only when *strm has been initialized - * with a function that takes a memlimit argument. With other functions, you - * should use e.g. lzma_raw_encoder_memusage() or lzma_raw_decoder_memusage() - * to estimate the memory requirements. - * - * This function is useful e.g. after LZMA_MEMLIMIT_ERROR to find out how big - * the memory usage limit should have been to decode the input. Note that - * this may give misleading information if decoding .xz Streams that have - * multiple Blocks, because each Block can have different memory requirements. - * - * \return How much memory is currently allocated for the filter - * decoders. If no filter chain is currently allocated, - * some non-zero value is still returned, which is less than - * or equal to what any filter chain would indicate as its - * memory requirement. - * - * If this function isn't supported by *strm or some other error - * occurs, zero is returned. - */ -extern LZMA_API(uint64_t) lzma_memusage(const lzma_stream *strm) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the current memory usage limit - * - * This function is supported only when *strm has been initialized with - * a function that takes a memlimit argument. - * - * \return On success, the current memory usage limit is returned - * (always non-zero). On error, zero is returned. - */ -extern LZMA_API(uint64_t) lzma_memlimit_get(const lzma_stream *strm) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Set the memory usage limit - * - * This function is supported only when *strm has been initialized with - * a function that takes a memlimit argument. - * - * \return - LZMA_OK: New memory usage limit successfully set. - * - LZMA_MEMLIMIT_ERROR: The new limit is too small. - * The limit was not changed. - * - LZMA_PROG_ERROR: Invalid arguments, e.g. *strm doesn't - * support memory usage limit or memlimit was zero. - */ -extern LZMA_API(lzma_ret) lzma_memlimit_set( - lzma_stream *strm, uint64_t memlimit) lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/bcj.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/bcj.h deleted file mode 100644 index 8e37538ad4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/bcj.h +++ /dev/null @@ -1,90 +0,0 @@ -/** - * \file lzma/bcj.h - * \brief Branch/Call/Jump conversion filters - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/* Filter IDs for lzma_filter.id */ - -#define LZMA_FILTER_X86 LZMA_VLI_C(0x04) - /**< - * Filter for x86 binaries - */ - -#define LZMA_FILTER_POWERPC LZMA_VLI_C(0x05) - /**< - * Filter for Big endian PowerPC binaries - */ - -#define LZMA_FILTER_IA64 LZMA_VLI_C(0x06) - /**< - * Filter for IA-64 (Itanium) binaries. - */ - -#define LZMA_FILTER_ARM LZMA_VLI_C(0x07) - /**< - * Filter for ARM binaries. - */ - -#define LZMA_FILTER_ARMTHUMB LZMA_VLI_C(0x08) - /**< - * Filter for ARM-Thumb binaries. - */ - -#define LZMA_FILTER_SPARC LZMA_VLI_C(0x09) - /**< - * Filter for SPARC binaries. - */ - - -/** - * \brief Options for BCJ filters - * - * The BCJ filters never change the size of the data. Specifying options - * for them is optional: if pointer to options is NULL, default value is - * used. You probably never need to specify options to BCJ filters, so just - * set the options pointer to NULL and be happy. - * - * If options with non-default values have been specified when encoding, - * the same options must also be specified when decoding. - * - * \note At the moment, none of the BCJ filters support - * LZMA_SYNC_FLUSH. If LZMA_SYNC_FLUSH is specified, - * LZMA_OPTIONS_ERROR will be returned. If there is need, - * partial support for LZMA_SYNC_FLUSH can be added in future. - * Partial means that flushing would be possible only at - * offsets that are multiple of 2, 4, or 16 depending on - * the filter, except x86 which cannot be made to support - * LZMA_SYNC_FLUSH predictably. - */ -typedef struct { - /** - * \brief Start offset for conversions - * - * This setting is useful only when the same filter is used - * _separately_ for multiple sections of the same executable file, - * and the sections contain cross-section branch/call/jump - * instructions. In that case it is beneficial to set the start - * offset of the non-first sections so that the relative addresses - * of the cross-section branch/call/jump instructions will use the - * same absolute addresses as in the first section. - * - * When the pointer to options is NULL, the default value (zero) - * is used. - */ - uint32_t start_offset; - -} lzma_options_bcj; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/block.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/block.h deleted file mode 100644 index 8a4bf2323c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/block.h +++ /dev/null @@ -1,530 +0,0 @@ -/** - * \file lzma/block.h - * \brief .xz Block handling - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Options for the Block and Block Header encoders and decoders - * - * Different Block handling functions use different parts of this structure. - * Some read some members, other functions write, and some do both. Only the - * members listed for reading need to be initialized when the specified - * functions are called. The members marked for writing will be assigned - * new values at some point either by calling the given function or by - * later calls to lzma_code(). - */ -typedef struct { - /** - * \brief Block format version - * - * To prevent API and ABI breakages if new features are needed in - * the Block field, a version number is used to indicate which - * fields in this structure are in use. For now, version must always - * be zero. With non-zero version, most Block related functions will - * return LZMA_OPTIONS_ERROR. - * - * Read by: - * - All functions that take pointer to lzma_block as argument, - * including lzma_block_header_decode(). - * - * Written by: - * - lzma_block_header_decode() - */ - uint32_t version; - - /** - * \brief Size of the Block Header field - * - * This is always a multiple of four. - * - * Read by: - * - lzma_block_header_encode() - * - lzma_block_header_decode() - * - lzma_block_compressed_size() - * - lzma_block_unpadded_size() - * - lzma_block_total_size() - * - lzma_block_decoder() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_size() - * - lzma_block_buffer_encode() - */ - uint32_t header_size; -# define LZMA_BLOCK_HEADER_SIZE_MIN 8 -# define LZMA_BLOCK_HEADER_SIZE_MAX 1024 - - /** - * \brief Type of integrity Check - * - * The Check ID is not stored into the Block Header, thus its value - * must be provided also when decoding. - * - * Read by: - * - lzma_block_header_encode() - * - lzma_block_header_decode() - * - lzma_block_compressed_size() - * - lzma_block_unpadded_size() - * - lzma_block_total_size() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - lzma_check check; - - /** - * \brief Size of the Compressed Data in bytes - * - * Encoding: If this is not LZMA_VLI_UNKNOWN, Block Header encoder - * will store this value to the Block Header. Block encoder doesn't - * care about this value, but will set it once the encoding has been - * finished. - * - * Decoding: If this is not LZMA_VLI_UNKNOWN, Block decoder will - * verify that the size of the Compressed Data field matches - * compressed_size. - * - * Usually you don't know this value when encoding in streamed mode, - * and thus cannot write this field into the Block Header. - * - * In non-streamed mode you can reserve space for this field before - * encoding the actual Block. After encoding the data, finish the - * Block by encoding the Block Header. Steps in detail: - * - * - Set compressed_size to some big enough value. If you don't know - * better, use LZMA_VLI_MAX, but remember that bigger values take - * more space in Block Header. - * - * - Call lzma_block_header_size() to see how much space you need to - * reserve for the Block Header. - * - * - Encode the Block using lzma_block_encoder() and lzma_code(). - * It sets compressed_size to the correct value. - * - * - Use lzma_block_header_encode() to encode the Block Header. - * Because space was reserved in the first step, you don't need - * to call lzma_block_header_size() anymore, because due to - * reserving, header_size has to be big enough. If it is "too big", - * lzma_block_header_encode() will add enough Header Padding to - * make Block Header to match the size specified by header_size. - * - * Read by: - * - lzma_block_header_size() - * - lzma_block_header_encode() - * - lzma_block_compressed_size() - * - lzma_block_unpadded_size() - * - lzma_block_total_size() - * - lzma_block_decoder() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_decode() - * - lzma_block_compressed_size() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - lzma_vli compressed_size; - - /** - * \brief Uncompressed Size in bytes - * - * This is handled very similarly to compressed_size above. - * - * uncompressed_size is needed by fewer functions than - * compressed_size. This is because uncompressed_size isn't - * needed to validate that Block stays within proper limits. - * - * Read by: - * - lzma_block_header_size() - * - lzma_block_header_encode() - * - lzma_block_decoder() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_decode() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - lzma_vli uncompressed_size; - - /** - * \brief Array of filters - * - * There can be 1-4 filters. The end of the array is marked with - * .id = LZMA_VLI_UNKNOWN. - * - * Read by: - * - lzma_block_header_size() - * - lzma_block_header_encode() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_decode(): Note that this does NOT free() - * the old filter options structures. All unused filters[] will - * have .id == LZMA_VLI_UNKNOWN and .options == NULL. If - * decoding fails, all filters[] are guaranteed to be - * LZMA_VLI_UNKNOWN and NULL. - * - * \note Because of the array is terminated with - * .id = LZMA_VLI_UNKNOWN, the actual array must - * have LZMA_FILTERS_MAX + 1 members or the Block - * Header decoder will overflow the buffer. - */ - lzma_filter *filters; - - /** - * \brief Raw value stored in the Check field - * - * After successful coding, the first lzma_check_size(check) bytes - * of this array contain the raw value stored in the Check field. - * - * Note that CRC32 and CRC64 are stored in little endian byte order. - * Take it into account if you display the Check values to the user. - * - * Written by: - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - uint8_t raw_check[LZMA_CHECK_SIZE_MAX]; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the names - * of these variables may change. These are and will never be used - * with the currently supported options, so it is safe to leave these - * uninitialized. - */ - void *reserved_ptr1; - void *reserved_ptr2; - void *reserved_ptr3; - uint32_t reserved_int1; - uint32_t reserved_int2; - lzma_vli reserved_int3; - lzma_vli reserved_int4; - lzma_vli reserved_int5; - lzma_vli reserved_int6; - lzma_vli reserved_int7; - lzma_vli reserved_int8; - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - lzma_reserved_enum reserved_enum3; - lzma_reserved_enum reserved_enum4; - lzma_bool reserved_bool1; - lzma_bool reserved_bool2; - lzma_bool reserved_bool3; - lzma_bool reserved_bool4; - lzma_bool reserved_bool5; - lzma_bool reserved_bool6; - lzma_bool reserved_bool7; - lzma_bool reserved_bool8; - -} lzma_block; - - -/** - * \brief Decode the Block Header Size field - * - * To decode Block Header using lzma_block_header_decode(), the size of the - * Block Header has to be known and stored into lzma_block.header_size. - * The size can be calculated from the first byte of a Block using this macro. - * Note that if the first byte is 0x00, it indicates beginning of Index; use - * this macro only when the byte is not 0x00. - * - * There is no encoding macro, because Block Header encoder is enough for that. - */ -#define lzma_block_header_size_decode(b) (((uint32_t)(b) + 1) * 4) - - -/** - * \brief Calculate Block Header Size - * - * Calculate the minimum size needed for the Block Header field using the - * settings specified in the lzma_block structure. Note that it is OK to - * increase the calculated header_size value as long as it is a multiple of - * four and doesn't exceed LZMA_BLOCK_HEADER_SIZE_MAX. Increasing header_size - * just means that lzma_block_header_encode() will add Header Padding. - * - * \return - LZMA_OK: Size calculated successfully and stored to - * block->header_size. - * - LZMA_OPTIONS_ERROR: Unsupported version, filters or - * filter options. - * - LZMA_PROG_ERROR: Invalid values like compressed_size == 0. - * - * \note This doesn't check that all the options are valid i.e. this - * may return LZMA_OK even if lzma_block_header_encode() or - * lzma_block_encoder() would fail. If you want to validate the - * filter chain, consider using lzma_memlimit_encoder() which as - * a side-effect validates the filter chain. - */ -extern LZMA_API(lzma_ret) lzma_block_header_size(lzma_block *block) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Encode Block Header - * - * The caller must have calculated the size of the Block Header already with - * lzma_block_header_size(). If a value larger than the one calculated by - * lzma_block_header_size() is used, the Block Header will be padded to the - * specified size. - * - * \param out Beginning of the output buffer. This must be - * at least block->header_size bytes. - * \param block Block options to be encoded. - * - * \return - LZMA_OK: Encoding was successful. block->header_size - * bytes were written to output buffer. - * - LZMA_OPTIONS_ERROR: Invalid or unsupported options. - * - LZMA_PROG_ERROR: Invalid arguments, for example - * block->header_size is invalid or block->filters is NULL. - */ -extern LZMA_API(lzma_ret) lzma_block_header_encode( - const lzma_block *block, uint8_t *out) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Block Header - * - * block->version should be set to the highest value supported by the - * application; currently the only possible version is zero. This function - * will set version to the lowest value that still supports all the features - * required by the Block Header. - * - * The size of the Block Header must have already been decoded with - * lzma_block_header_size_decode() macro and stored to block->header_size. - * - * block->filters must have been allocated, but they don't need to be - * initialized (possible existing filter options are not freed). - * - * \param block Destination for Block options. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() (and also free() - * if an error occurs). - * \param in Beginning of the input buffer. This must be - * at least block->header_size bytes. - * - * \return - LZMA_OK: Decoding was successful. block->header_size - * bytes were read from the input buffer. - * - LZMA_OPTIONS_ERROR: The Block Header specifies some - * unsupported options such as unsupported filters. This can - * happen also if block->version was set to a too low value - * compared to what would be required to properly represent - * the information stored in the Block Header. - * - LZMA_DATA_ERROR: Block Header is corrupt, for example, - * the CRC32 doesn't match. - * - LZMA_PROG_ERROR: Invalid arguments, for example - * block->header_size is invalid or block->filters is NULL. - */ -extern LZMA_API(lzma_ret) lzma_block_header_decode(lzma_block *block, - lzma_allocator *allocator, const uint8_t *in) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Validate and set Compressed Size according to Unpadded Size - * - * Block Header stores Compressed Size, but Index has Unpadded Size. If the - * application has already parsed the Index and is now decoding Blocks, - * it can calculate Compressed Size from Unpadded Size. This function does - * exactly that with error checking: - * - * - Compressed Size calculated from Unpadded Size must be positive integer, - * that is, Unpadded Size must be big enough that after Block Header and - * Check fields there's still at least one byte for Compressed Size. - * - * - If Compressed Size was present in Block Header, the new value - * calculated from Unpadded Size is compared against the value - * from Block Header. - * - * \note This function must be called _after_ decoding the Block Header - * field so that it can properly validate Compressed Size if it - * was present in Block Header. - * - * \return - LZMA_OK: block->compressed_size was set successfully. - * - LZMA_DATA_ERROR: unpadded_size is too small compared to - * block->header_size and lzma_check_size(block->check). - * - LZMA_PROG_ERROR: Some values are invalid. For example, - * block->header_size must be a multiple of four and - * between 8 and 1024 inclusive. - */ -extern LZMA_API(lzma_ret) lzma_block_compressed_size( - lzma_block *block, lzma_vli unpadded_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Calculate Unpadded Size - * - * The Index field stores Unpadded Size and Uncompressed Size. The latter - * can be taken directly from the lzma_block structure after coding a Block, - * but Unpadded Size needs to be calculated from Block Header Size, - * Compressed Size, and size of the Check field. This is where this function - * is needed. - * - * \return Unpadded Size on success, or zero on error. - */ -extern LZMA_API(lzma_vli) lzma_block_unpadded_size(const lzma_block *block) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate the total encoded size of a Block - * - * This is equivalent to lzma_block_unpadded_size() except that the returned - * value includes the size of the Block Padding field. - * - * \return On success, total encoded size of the Block. On error, - * zero is returned. - */ -extern LZMA_API(lzma_vli) lzma_block_total_size(const lzma_block *block) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize .xz Block encoder - * - * Valid actions for lzma_code() are LZMA_RUN, LZMA_SYNC_FLUSH (only if the - * filter chain supports it), and LZMA_FINISH. - * - * \return - LZMA_OK: All good, continue with lzma_code(). - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_UNSUPPORTED_CHECK: block->check specifies a Check ID - * that is not supported by this buid of liblzma. Initializing - * the encoder failed. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_encoder( - lzma_stream *strm, lzma_block *block) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .xz Block decoder - * - * Valid actions for lzma_code() are LZMA_RUN and LZMA_FINISH. Using - * LZMA_FINISH is not required. It is supported only for convenience. - * - * \return - LZMA_OK: All good, continue with lzma_code(). - * - LZMA_UNSUPPORTED_CHECK: Initialization was successful, but - * the given Check ID is not supported, thus Check will be - * ignored. - * - LZMA_PROG_ERROR - * - LZMA_MEM_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_decoder( - lzma_stream *strm, lzma_block *block) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Calculate maximum output size for single-call Block encoding - * - * This is equivalent to lzma_stream_buffer_bound() but for .xz Blocks. - * See the documentation of lzma_stream_buffer_bound(). - */ -extern LZMA_API(size_t) lzma_block_buffer_bound(size_t uncompressed_size) - lzma_nothrow; - - -/** - * \brief Single-call .xz Block encoder - * - * In contrast to the multi-call encoder initialized with - * lzma_block_encoder(), this function encodes also the Block Header. This - * is required to make it possible to write appropriate Block Header also - * in case the data isn't compressible, and different filter chain has to be - * used to encode the data in uncompressed form using uncompressed chunks - * of the LZMA2 filter. - * - * When the data isn't compressible, header_size, compressed_size, and - * uncompressed_size are set just like when the data was compressible, but - * it is possible that header_size is too small to hold the filter chain - * specified in block->filters, because that isn't necessarily the filter - * chain that was actually used to encode the data. lzma_block_unpadded_size() - * still works normally, because it doesn't read the filters array. - * - * \param block Block options: block->version, block->check, - * and block->filters must have been initialized. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_buffer_encode( - lzma_block *block, lzma_allocator *allocator, - const uint8_t *in, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Block decoder - * - * This is single-call equivalent of lzma_block_decoder(), and requires that - * the caller has already decoded Block Header and checked its memory usage. - * - * \param block Block options just like with lzma_block_decoder(). - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_OPTIONS_ERROR - * - LZMA_DATA_ERROR - * - LZMA_MEM_ERROR - * - LZMA_BUF_ERROR: Output buffer was too small. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_buffer_decode( - lzma_block *block, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/check.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/check.h deleted file mode 100644 index 6a243db0d7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/check.h +++ /dev/null @@ -1,150 +0,0 @@ -/** - * \file lzma/check.h - * \brief Integrity checks - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Type of the integrity check (Check ID) - * - * The .xz format supports multiple types of checks that are calculated - * from the uncompressed data. They vary in both speed and ability to - * detect errors. - */ -typedef enum { - LZMA_CHECK_NONE = 0, - /**< - * No Check is calculated. - * - * Size of the Check field: 0 bytes - */ - - LZMA_CHECK_CRC32 = 1, - /**< - * CRC32 using the polynomial from the IEEE 802.3 standard - * - * Size of the Check field: 4 bytes - */ - - LZMA_CHECK_CRC64 = 4, - /**< - * CRC64 using the polynomial from the ECMA-182 standard - * - * Size of the Check field: 8 bytes - */ - - LZMA_CHECK_SHA256 = 10 - /**< - * SHA-256 - * - * Size of the Check field: 32 bytes - */ -} lzma_check; - - -/** - * \brief Maximum valid Check ID - * - * The .xz file format specification specifies 16 Check IDs (0-15). Some - * of them are only reserved, that is, no actual Check algorithm has been - * assigned. When decoding, liblzma still accepts unknown Check IDs for - * future compatibility. If a valid but unsupported Check ID is detected, - * liblzma can indicate a warning; see the flags LZMA_TELL_NO_CHECK, - * LZMA_TELL_UNSUPPORTED_CHECK, and LZMA_TELL_ANY_CHECK in container.h. - */ -#define LZMA_CHECK_ID_MAX 15 - - -/** - * \brief Test if the given Check ID is supported - * - * Return true if the given Check ID is supported by this liblzma build. - * Otherwise false is returned. It is safe to call this with a value that - * is not in the range [0, 15]; in that case the return value is always false. - * - * You can assume that LZMA_CHECK_NONE and LZMA_CHECK_CRC32 are always - * supported (even if liblzma is built with limited features). - */ -extern LZMA_API(lzma_bool) lzma_check_is_supported(lzma_check check) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Get the size of the Check field with the given Check ID - * - * Although not all Check IDs have a check algorithm associated, the size of - * every Check is already frozen. This function returns the size (in bytes) of - * the Check field with the specified Check ID. The values are: - * { 0, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, 64 } - * - * If the argument is not in the range [0, 15], UINT32_MAX is returned. - */ -extern LZMA_API(uint32_t) lzma_check_size(lzma_check check) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Maximum size of a Check field - */ -#define LZMA_CHECK_SIZE_MAX 64 - - -/** - * \brief Calculate CRC32 - * - * Calculate CRC32 using the polynomial from the IEEE 802.3 standard. - * - * \param buf Pointer to the input buffer - * \param size Size of the input buffer - * \param crc Previously returned CRC value. This is used to - * calculate the CRC of a big buffer in smaller chunks. - * Set to zero when starting a new calculation. - * - * \return Updated CRC value, which can be passed to this function - * again to continue CRC calculation. - */ -extern LZMA_API(uint32_t) lzma_crc32( - const uint8_t *buf, size_t size, uint32_t crc) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate CRC64 - * - * Calculate CRC64 using the polynomial from the ECMA-182 standard. - * - * This function is used similarly to lzma_crc32(). See its documentation. - */ -extern LZMA_API(uint64_t) lzma_crc64( - const uint8_t *buf, size_t size, uint64_t crc) - lzma_nothrow lzma_attr_pure; - - -/* - * SHA-256 functions are currently not exported to public API. - * Contact Lasse Collin if you think it should be. - */ - - -/** - * \brief Get the type of the integrity check - * - * This function can be called only immediately after lzma_code() has - * returned LZMA_NO_CHECK, LZMA_UNSUPPORTED_CHECK, or LZMA_GET_CHECK. - * Calling this function in any other situation has undefined behavior. - */ -extern LZMA_API(lzma_check) lzma_get_check(const lzma_stream *strm) - lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/container.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/container.h deleted file mode 100644 index 7a9ffc6457..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/container.h +++ /dev/null @@ -1,424 +0,0 @@ -/** - * \file lzma/container.h - * \brief File formats - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/************ - * Encoding * - ************/ - -/** - * \brief Default compression preset - * - * It's not straightforward to recommend a default preset, because in some - * cases keeping the resource usage relatively low is more important that - * getting the maximum compression ratio. - */ -#define LZMA_PRESET_DEFAULT UINT32_C(6) - - -/** - * \brief Mask for preset level - * - * This is useful only if you need to extract the level from the preset - * variable. That should be rare. - */ -#define LZMA_PRESET_LEVEL_MASK UINT32_C(0x1F) - - -/* - * Preset flags - * - * Currently only one flag is defined. - */ - -/** - * \brief Extreme compression preset - * - * This flag modifies the preset to make the encoding significantly slower - * while improving the compression ratio only marginally. This is useful - * when you don't mind wasting time to get as small result as possible. - * - * This flag doesn't affect the memory usage requirements of the decoder (at - * least not significantly). The memory usage of the encoder may be increased - * a little but only at the lowest preset levels (0-3). - */ -#define LZMA_PRESET_EXTREME (UINT32_C(1) << 31) - - -/** - * \brief Calculate approximate memory usage of easy encoder - * - * This function is a wrapper for lzma_raw_encoder_memusage(). - * - * \param preset Compression preset (level and possible flags) - * - * \return Number of bytes of memory required for the given - * preset when encoding. If an error occurs, for example - * due to unsupported preset, UINT64_MAX is returned. - */ -extern LZMA_API(uint64_t) lzma_easy_encoder_memusage(uint32_t preset) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate approximate decoder memory usage of a preset - * - * This function is a wrapper for lzma_raw_decoder_memusage(). - * - * \param preset Compression preset (level and possible flags) - * - * \return Number of bytes of memory required to decompress a file - * that was compressed using the given preset. If an error - * occurs, for example due to unsupported preset, UINT64_MAX - * is returned. - */ -extern LZMA_API(uint64_t) lzma_easy_decoder_memusage(uint32_t preset) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize .xz Stream encoder using a preset number - * - * This function is intended for those who just want to use the basic features - * if liblzma (that is, most developers out there). - * - * \param strm Pointer to lzma_stream that is at least initialized - * with LZMA_STREAM_INIT. - * \param preset Compression preset to use. A preset consist of level - * number and zero or more flags. Usually flags aren't - * used, so preset is simply a number [0, 9] which match - * the options -0 ... -9 of the xz command line tool. - * Additional flags can be be set using bitwise-or with - * the preset level number, e.g. 6 | LZMA_PRESET_EXTREME. - * \param check Integrity check type to use. See check.h for available - * checks. The xz command line tool defaults to - * LZMA_CHECK_CRC64, which is a good choice if you are - * unsure. LZMA_CHECK_CRC32 is good too as long as the - * uncompressed file is not many gigabytes. - * - * \return - LZMA_OK: Initialization succeeded. Use lzma_code() to - * encode your data. - * - LZMA_MEM_ERROR: Memory allocation failed. - * - LZMA_OPTIONS_ERROR: The given compression preset is not - * supported by this build of liblzma. - * - LZMA_UNSUPPORTED_CHECK: The given check type is not - * supported by this liblzma build. - * - LZMA_PROG_ERROR: One or more of the parameters have values - * that will never be valid. For example, strm == NULL. - * - * If initialization fails (return value is not LZMA_OK), all the memory - * allocated for *strm by liblzma is always freed. Thus, there is no need - * to call lzma_end() after failed initialization. - * - * If initialization succeeds, use lzma_code() to do the actual encoding. - * Valid values for `action' (the second argument of lzma_code()) are - * LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future, - * there may be compression levels or flags that don't support LZMA_SYNC_FLUSH. - */ -extern LZMA_API(lzma_ret) lzma_easy_encoder( - lzma_stream *strm, uint32_t preset, lzma_check check) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Stream encoding using a preset number - * - * The maximum required output buffer size can be calculated with - * lzma_stream_buffer_bound(). - * - * \param preset Compression preset to use. See the description - * in lzma_easy_encoder(). - * \param check Type of the integrity check to calculate from - * uncompressed data. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_easy_buffer_encode( - uint32_t preset, lzma_check check, - lzma_allocator *allocator, const uint8_t *in, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Initialize .xz Stream encoder using a custom filter chain - * - * \param strm Pointer to properly prepared lzma_stream - * \param filters Array of filters. This must be terminated with - * filters[n].id = LZMA_VLI_UNKNOWN. See filter.h for - * more information. - * \param check Type of the integrity check to calculate from - * uncompressed data. - * - * \return - LZMA_OK: Initialization was successful. - * - LZMA_MEM_ERROR - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_encoder(lzma_stream *strm, - const lzma_filter *filters, lzma_check check) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .lzma encoder (legacy file format) - * - * The .lzma format is sometimes called the LZMA_Alone format, which is the - * reason for the name of this function. The .lzma format supports only the - * LZMA1 filter. There is no support for integrity checks like CRC32. - * - * Use this function if and only if you need to create files readable by - * legacy LZMA tools such as LZMA Utils 4.32.x. Moving to the .xz format - * is strongly recommended. - * - * The valid action values for lzma_code() are LZMA_RUN and LZMA_FINISH. - * No kind of flushing is supported, because the file format doesn't make - * it possible. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_alone_encoder( - lzma_stream *strm, const lzma_options_lzma *options) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Calculate output buffer size for single-call Stream encoder - * - * When trying to compress uncompressible data, the encoded size will be - * slightly bigger than the input data. This function calculates how much - * output buffer space is required to be sure that lzma_stream_buffer_encode() - * doesn't return LZMA_BUF_ERROR. - * - * The calculated value is not exact, but it is guaranteed to be big enough. - * The actual maximum output space required may be slightly smaller (up to - * about 100 bytes). This should not be a problem in practice. - * - * If the calculated maximum size doesn't fit into size_t or would make the - * Stream grow past LZMA_VLI_MAX (which should never happen in practice), - * zero is returned to indicate the error. - * - * \note The limit calculated by this function applies only to - * single-call encoding. Multi-call encoding may (and probably - * will) have larger maximum expansion when encoding - * uncompressible data. Currently there is no function to - * calculate the maximum expansion of multi-call encoding. - */ -extern LZMA_API(size_t) lzma_stream_buffer_bound(size_t uncompressed_size) - lzma_nothrow; - - -/** - * \brief Single-call .xz Stream encoder - * - * \param filters Array of filters. This must be terminated with - * filters[n].id = LZMA_VLI_UNKNOWN. See filter.h - * for more information. - * \param check Type of the integrity check to calculate from - * uncompressed data. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_buffer_encode( - lzma_filter *filters, lzma_check check, - lzma_allocator *allocator, const uint8_t *in, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/************ - * Decoding * - ************/ - -/** - * This flag makes lzma_code() return LZMA_NO_CHECK if the input stream - * being decoded has no integrity check. Note that when used with - * lzma_auto_decoder(), all .lzma files will trigger LZMA_NO_CHECK - * if LZMA_TELL_NO_CHECK is used. - */ -#define LZMA_TELL_NO_CHECK UINT32_C(0x01) - - -/** - * This flag makes lzma_code() return LZMA_UNSUPPORTED_CHECK if the input - * stream has an integrity check, but the type of the integrity check is not - * supported by this liblzma version or build. Such files can still be - * decoded, but the integrity check cannot be verified. - */ -#define LZMA_TELL_UNSUPPORTED_CHECK UINT32_C(0x02) - - -/** - * This flag makes lzma_code() return LZMA_GET_CHECK as soon as the type - * of the integrity check is known. The type can then be got with - * lzma_get_check(). - */ -#define LZMA_TELL_ANY_CHECK UINT32_C(0x04) - - -/** - * This flag enables decoding of concatenated files with file formats that - * allow concatenating compressed files as is. From the formats currently - * supported by liblzma, only the .xz format allows concatenated files. - * Concatenated files are not allowed with the legacy .lzma format. - * - * This flag also affects the usage of the `action' argument for lzma_code(). - * When LZMA_CONCATENATED is used, lzma_code() won't return LZMA_STREAM_END - * unless LZMA_FINISH is used as `action'. Thus, the application has to set - * LZMA_FINISH in the same way as it does when encoding. - * - * If LZMA_CONCATENATED is not used, the decoders still accept LZMA_FINISH - * as `action' for lzma_code(), but the usage of LZMA_FINISH isn't required. - */ -#define LZMA_CONCATENATED UINT32_C(0x08) - - -/** - * \brief Initialize .xz Stream decoder - * - * \param strm Pointer to properly prepared lzma_stream - * \param memlimit Memory usage limit as bytes. Use UINT64_MAX - * to effectively disable the limiter. - * \param flags Bitwise-or of zero or more of the decoder flags: - * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, - * LZMA_TELL_ANY_CHECK, LZMA_CONCATENATED - * - * \return - LZMA_OK: Initialization was successful. - * - LZMA_MEM_ERROR: Cannot allocate memory. - * - LZMA_OPTIONS_ERROR: Unsupported flags - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_decoder( - lzma_stream *strm, uint64_t memlimit, uint32_t flags) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode .xz Streams and .lzma files with autodetection - * - * This decoder autodetects between the .xz and .lzma file formats, and - * calls lzma_stream_decoder() or lzma_alone_decoder() once the type - * of the input file has been detected. - * - * \param strm Pointer to properly prepared lzma_stream - * \param memlimit Memory usage limit as bytes. Use UINT64_MAX - * to effectively disable the limiter. - * \param flags Bitwise-or of flags, or zero for no flags. - * - * \return - LZMA_OK: Initialization was successful. - * - LZMA_MEM_ERROR: Cannot allocate memory. - * - LZMA_OPTIONS_ERROR: Unsupported flags - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_auto_decoder( - lzma_stream *strm, uint64_t memlimit, uint32_t flags) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .lzma decoder (legacy file format) - * - * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH. - * There is no need to use LZMA_FINISH, but allowing it may simplify - * certain types of applications. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_alone_decoder( - lzma_stream *strm, uint64_t memlimit) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Stream decoder - * - * \param memlimit Pointer to how much memory the decoder is allowed - * to allocate. The value pointed by this pointer is - * modified if and only if LZMA_MEMLIMIT_ERROR is - * returned. - * \param flags Bitwise-or of zero or more of the decoder flags: - * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, - * LZMA_CONCATENATED. Note that LZMA_TELL_ANY_CHECK - * is not allowed and will return LZMA_PROG_ERROR. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if decoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_FORMAT_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_DATA_ERROR - * - LZMA_NO_CHECK: This can be returned only if using - * the LZMA_TELL_NO_CHECK flag. - * - LZMA_UNSUPPORTED_CHECK: This can be returned only if using - * the LZMA_TELL_UNSUPPORTED_CHECK flag. - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. - * The minimum required memlimit value was stored to *memlimit. - * - LZMA_BUF_ERROR: Output buffer was too small. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_buffer_decode( - uint64_t *memlimit, uint32_t flags, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/delta.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/delta.h deleted file mode 100644 index 592fc4f849..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/delta.h +++ /dev/null @@ -1,77 +0,0 @@ -/** - * \file lzma/delta.h - * \brief Delta filter - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Filter ID - * - * Filter ID of the Delta filter. This is used as lzma_filter.id. - */ -#define LZMA_FILTER_DELTA LZMA_VLI_C(0x03) - - -/** - * \brief Type of the delta calculation - * - * Currently only byte-wise delta is supported. Other possible types could - * be, for example, delta of 16/32/64-bit little/big endian integers, but - * these are not currently planned since byte-wise delta is almost as good. - */ -typedef enum { - LZMA_DELTA_TYPE_BYTE -} lzma_delta_type; - - -/** - * \brief Options for the Delta filter - * - * These options are needed by both encoder and decoder. - */ -typedef struct { - /** For now, this must always be LZMA_DELTA_TYPE_BYTE. */ - lzma_delta_type type; - - /** - * \brief Delta distance - * - * With the only currently supported type, LZMA_DELTA_TYPE_BYTE, - * the distance is as bytes. - * - * Examples: - * - 16-bit stereo audio: distance = 4 bytes - * - 24-bit RGB image data: distance = 3 bytes - */ - uint32_t dist; -# define LZMA_DELTA_DIST_MIN 1 -# define LZMA_DELTA_DIST_MAX 256 - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the names - * of these variables may change. These are and will never be used - * when type is LZMA_DELTA_TYPE_BYTE, so it is safe to leave these - * uninitialized. - */ - uint32_t reserved_int1; - uint32_t reserved_int2; - uint32_t reserved_int3; - uint32_t reserved_int4; - void *reserved_ptr1; - void *reserved_ptr2; - -} lzma_options_delta; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/filter.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/filter.h deleted file mode 100644 index e0bc163ad3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/filter.h +++ /dev/null @@ -1,424 +0,0 @@ -/** - * \file lzma/filter.h - * \brief Common filter related types and functions - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Maximum number of filters in a chain - * - * A filter chain can have 1-4 filters, of which three are allowed to change - * the size of the data. Usually only one or two filters are needed. - */ -#define LZMA_FILTERS_MAX 4 - - -/** - * \brief Filter options - * - * This structure is used to pass Filter ID and a pointer filter's - * options to liblzma. A few functions work with a single lzma_filter - * structure, while most functions expect a filter chain. - * - * A filter chain is indicated with an array of lzma_filter structures. - * The array is terminated with .id = LZMA_VLI_UNKNOWN. Thus, the filter - * array must have LZMA_FILTERS_MAX + 1 elements (that is, five) to - * be able to hold any arbitrary filter chain. This is important when - * using lzma_block_header_decode() from block.h, because too small - * array would make liblzma write past the end of the filters array. - */ -typedef struct { - /** - * \brief Filter ID - * - * Use constants whose name begin with `LZMA_FILTER_' to specify - * different filters. In an array of lzma_filter structures, use - * LZMA_VLI_UNKNOWN to indicate end of filters. - * - * \note This is not an enum, because on some systems enums - * cannot be 64-bit. - */ - lzma_vli id; - - /** - * \brief Pointer to filter-specific options structure - * - * If the filter doesn't need options, set this to NULL. If id is - * set to LZMA_VLI_UNKNOWN, options is ignored, and thus - * doesn't need be initialized. - */ - void *options; - -} lzma_filter; - - -/** - * \brief Test if the given Filter ID is supported for encoding - * - * Return true if the give Filter ID is supported for encoding by this - * liblzma build. Otherwise false is returned. - * - * There is no way to list which filters are available in this particular - * liblzma version and build. It would be useless, because the application - * couldn't know what kind of options the filter would need. - */ -extern LZMA_API(lzma_bool) lzma_filter_encoder_is_supported(lzma_vli id) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Test if the given Filter ID is supported for decoding - * - * Return true if the give Filter ID is supported for decoding by this - * liblzma build. Otherwise false is returned. - */ -extern LZMA_API(lzma_bool) lzma_filter_decoder_is_supported(lzma_vli id) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Copy the filters array - * - * Copy the Filter IDs and filter-specific options from src to dest. - * Up to LZMA_FILTERS_MAX filters are copied, plus the terminating - * .id == LZMA_VLI_UNKNOWN. Thus, dest should have at least - * LZMA_FILTERS_MAX + 1 elements space unless the caller knows that - * src is smaller than that. - * - * Unless the filter-specific options is NULL, the Filter ID has to be - * supported by liblzma, because liblzma needs to know the size of every - * filter-specific options structure. The filter-specific options are not - * validated. If options is NULL, any unsupported Filter IDs are copied - * without returning an error. - * - * Old filter-specific options in dest are not freed, so dest doesn't - * need to be initialized by the caller in any way. - * - * If an error occurs, memory possibly already allocated by this function - * is always freed. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR: Unsupported Filter ID and its options - * is not NULL. - * - LZMA_PROG_ERROR: src or dest is NULL. - */ -extern LZMA_API(lzma_ret) lzma_filters_copy(const lzma_filter *src, - lzma_filter *dest, lzma_allocator *allocator) lzma_nothrow; - - -/** - * \brief Calculate approximate memory requirements for raw encoder - * - * This function can be used to calculate the memory requirements for - * Block and Stream encoders too because Block and Stream encoders don't - * need significantly more memory than raw encoder. - * - * \param filters Array of filters terminated with - * .id == LZMA_VLI_UNKNOWN. - * - * \return Number of bytes of memory required for the given - * filter chain when encoding. If an error occurs, - * for example due to unsupported filter chain, - * UINT64_MAX is returned. - */ -extern LZMA_API(uint64_t) lzma_raw_encoder_memusage(const lzma_filter *filters) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate approximate memory requirements for raw decoder - * - * This function can be used to calculate the memory requirements for - * Block and Stream decoders too because Block and Stream decoders don't - * need significantly more memory than raw decoder. - * - * \param filters Array of filters terminated with - * .id == LZMA_VLI_UNKNOWN. - * - * \return Number of bytes of memory required for the given - * filter chain when decoding. If an error occurs, - * for example due to unsupported filter chain, - * UINT64_MAX is returned. - */ -extern LZMA_API(uint64_t) lzma_raw_decoder_memusage(const lzma_filter *filters) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize raw encoder - * - * This function may be useful when implementing custom file formats. - * - * \param strm Pointer to properly prepared lzma_stream - * \param filters Array of lzma_filter structures. The end of the - * array must be marked with .id = LZMA_VLI_UNKNOWN. - * - * The `action' with lzma_code() can be LZMA_RUN, LZMA_SYNC_FLUSH (if the - * filter chain supports it), or LZMA_FINISH. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_raw_encoder( - lzma_stream *strm, const lzma_filter *filters) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize raw decoder - * - * The initialization of raw decoder goes similarly to raw encoder. - * - * The `action' with lzma_code() can be LZMA_RUN or LZMA_FINISH. Using - * LZMA_FINISH is not required, it is supported just for convenience. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_raw_decoder( - lzma_stream *strm, const lzma_filter *filters) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Update the filter chain in the encoder - * - * This function is for advanced users only. This function has two slightly - * different purposes: - * - * - After LZMA_FULL_FLUSH when using Stream encoder: Set a new filter - * chain, which will be used starting from the next Block. - * - * - After LZMA_SYNC_FLUSH using Raw, Block, or Stream encoder: Change - * the filter-specific options in the middle of encoding. The actual - * filters in the chain (Filter IDs) cannot be changed. In the future, - * it might become possible to change the filter options without - * using LZMA_SYNC_FLUSH. - * - * While rarely useful, this function may be called also when no data has - * been compressed yet. In that case, this function will behave as if - * LZMA_FULL_FLUSH (Stream encoder) or LZMA_SYNC_FLUSH (Raw or Block - * encoder) had been used right before calling this function. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_filters_update( - lzma_stream *strm, const lzma_filter *filters) lzma_nothrow; - - -/** - * \brief Single-call raw encoder - * - * \param filters Array of lzma_filter structures. The end of the - * array must be marked with .id = LZMA_VLI_UNKNOWN. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - * - * \note There is no function to calculate how big output buffer - * would surely be big enough. (lzma_stream_buffer_bound() - * works only for lzma_stream_buffer_encode(); raw encoder - * won't necessarily meet that bound.) - */ -extern LZMA_API(lzma_ret) lzma_raw_buffer_encode( - const lzma_filter *filters, lzma_allocator *allocator, - const uint8_t *in, size_t in_size, uint8_t *out, - size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Single-call raw decoder - * - * \param filters Array of lzma_filter structures. The end of the - * array must be marked with .id = LZMA_VLI_UNKNOWN. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - */ -extern LZMA_API(lzma_ret) lzma_raw_buffer_decode( - const lzma_filter *filters, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Get the size of the Filter Properties field - * - * This function may be useful when implementing custom file formats - * using the raw encoder and decoder. - * - * \param size Pointer to uint32_t to hold the size of the properties - * \param filter Filter ID and options (the size of the properties may - * vary depending on the options) - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - * - * \note This function validates the Filter ID, but does not - * necessarily validate the options. Thus, it is possible - * that this returns LZMA_OK while the following call to - * lzma_properties_encode() returns LZMA_OPTIONS_ERROR. - */ -extern LZMA_API(lzma_ret) lzma_properties_size( - uint32_t *size, const lzma_filter *filter) lzma_nothrow; - - -/** - * \brief Encode the Filter Properties field - * - * \param filter Filter ID and options - * \param props Buffer to hold the encoded options. The size of - * buffer must have been already determined with - * lzma_properties_size(). - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - * - * \note Even this function won't validate more options than actually - * necessary. Thus, it is possible that encoding the properties - * succeeds but using the same options to initialize the encoder - * will fail. - * - * \note If lzma_properties_size() indicated that the size - * of the Filter Properties field is zero, calling - * lzma_properties_encode() is not required, but it - * won't do any harm either. - */ -extern LZMA_API(lzma_ret) lzma_properties_encode( - const lzma_filter *filter, uint8_t *props) lzma_nothrow; - - -/** - * \brief Decode the Filter Properties field - * - * \param filter filter->id must have been set to the correct - * Filter ID. filter->options doesn't need to be - * initialized (it's not freed by this function). The - * decoded options will be stored to filter->options. - * filter->options is set to NULL if there are no - * properties or if an error occurs. - * \param allocator Custom memory allocator used to allocate the - * options. Set to NULL to use the default malloc(), - * and in case of an error, also free(). - * \param props Input buffer containing the properties. - * \param props_size Size of the properties. This must be the exact - * size; giving too much or too little input will - * return LZMA_OPTIONS_ERROR. - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - */ -extern LZMA_API(lzma_ret) lzma_properties_decode( - lzma_filter *filter, lzma_allocator *allocator, - const uint8_t *props, size_t props_size) lzma_nothrow; - - -/** - * \brief Calculate encoded size of a Filter Flags field - * - * Knowing the size of Filter Flags is useful to know when allocating - * memory to hold the encoded Filter Flags. - * - * \param size Pointer to integer to hold the calculated size - * \param filter Filter ID and associated options whose encoded - * size is to be calculated - * - * \return - LZMA_OK: *size set successfully. Note that this doesn't - * guarantee that filter->options is valid, thus - * lzma_filter_flags_encode() may still fail. - * - LZMA_OPTIONS_ERROR: Unknown Filter ID or unsupported options. - * - LZMA_PROG_ERROR: Invalid options - * - * \note If you need to calculate size of List of Filter Flags, - * you need to loop over every lzma_filter entry. - */ -extern LZMA_API(lzma_ret) lzma_filter_flags_size( - uint32_t *size, const lzma_filter *filter) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Encode Filter Flags into given buffer - * - * In contrast to some functions, this doesn't allocate the needed buffer. - * This is due to how this function is used internally by liblzma. - * - * \param filter Filter ID and options to be encoded - * \param out Beginning of the output buffer - * \param out_pos out[*out_pos] is the next write position. This - * is updated by the encoder. - * \param out_size out[out_size] is the first byte to not write. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_OPTIONS_ERROR: Invalid or unsupported options. - * - LZMA_PROG_ERROR: Invalid options or not enough output - * buffer space (you should have checked it with - * lzma_filter_flags_size()). - */ -extern LZMA_API(lzma_ret) lzma_filter_flags_encode(const lzma_filter *filter, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Filter Flags from given buffer - * - * The decoded result is stored into *filter. The old value of - * filter->options is not free()d. - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_filter_flags_decode( - lzma_filter *filter, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow lzma_attr_warn_unused_result; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/hardware.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/hardware.h deleted file mode 100644 index e7dd03c3e8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/hardware.h +++ /dev/null @@ -1,50 +0,0 @@ -/** - * \file lzma/hardware.h - * \brief Hardware information - * - * Since liblzma can consume a lot of system resources, it also provides - * ways to limit the resource usage. Applications linking against liblzma - * need to do the actual decisions how much resources to let liblzma to use. - * To ease making these decisions, liblzma provides functions to find out - * the relevant capabilities of the underlaying hardware. Currently there - * is only a function to find out the amount of RAM, but in the future there - * will be also a function to detect how many concurrent threads the system - * can run. - * - * \note On some operating systems, these function may temporarily - * load a shared library or open file descriptor(s) to find out - * the requested hardware information. Unless the application - * assumes that specific file descriptors are not touched by - * other threads, this should have no effect on thread safety. - * Possible operations involving file descriptors will restart - * the syscalls if they return EINTR. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Get the total amount of physical memory (RAM) in bytes - * - * This function may be useful when determining a reasonable memory - * usage limit for decompressing or how much memory it is OK to use - * for compressing. - * - * \return On success, the total amount of physical memory in bytes - * is returned. If the amount of RAM cannot be determined, - * zero is returned. This can happen if an error occurs - * or if there is no code in liblzma to detect the amount - * of RAM on the specific operating system. - */ -extern LZMA_API(uint64_t) lzma_physmem(void) lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/index.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/index.h deleted file mode 100644 index 16bacc287d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/index.h +++ /dev/null @@ -1,682 +0,0 @@ -/** - * \file lzma/index.h - * \brief Handling of .xz Index and related information - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Opaque data type to hold the Index(es) and other information - * - * lzma_index often holds just one .xz Index and possibly the Stream Flags - * of the same Stream and size of the Stream Padding field. However, - * multiple lzma_indexes can be concatenated with lzma_index_cat() and then - * there may be information about multiple Streams in the same lzma_index. - * - * Notes about thread safety: Only one thread may modify lzma_index at - * a time. All functions that take non-const pointer to lzma_index - * modify it. As long as no thread is modifying the lzma_index, getting - * information from the same lzma_index can be done from multiple threads - * at the same time with functions that take a const pointer to - * lzma_index or use lzma_index_iter. The same iterator must be used - * only by one thread at a time, of course, but there can be as many - * iterators for the same lzma_index as needed. - */ -typedef struct lzma_index_s lzma_index; - - -/** - * \brief Iterator to get information about Blocks and Streams - */ -typedef struct { - struct { - /** - * \brief Pointer to Stream Flags - * - * This is NULL if Stream Flags have not been set for - * this Stream with lzma_index_stream_flags(). - */ - const lzma_stream_flags *flags; - - const void *reserved_ptr1; - const void *reserved_ptr2; - const void *reserved_ptr3; - - /** - * \brief Stream number in the lzma_index - * - * The first Stream is 1. - */ - lzma_vli number; - - /** - * \brief Number of Blocks in the Stream - * - * If this is zero, the block structure below has - * undefined values. - */ - lzma_vli block_count; - - /** - * \brief Compressed start offset of this Stream - * - * The offset is relative to the beginning of the lzma_index - * (i.e. usually the beginning of the .xz file). - */ - lzma_vli compressed_offset; - - /** - * \brief Uncompressed start offset of this Stream - * - * The offset is relative to the beginning of the lzma_index - * (i.e. usually the beginning of the .xz file). - */ - lzma_vli uncompressed_offset; - - /** - * \brief Compressed size of this Stream - * - * This includes all headers except the possible - * Stream Padding after this Stream. - */ - lzma_vli compressed_size; - - /** - * \brief Uncompressed size of this Stream - */ - lzma_vli uncompressed_size; - - /** - * \brief Size of Stream Padding after this Stream - * - * If it hasn't been set with lzma_index_stream_padding(), - * this defaults to zero. Stream Padding is always - * a multiple of four bytes. - */ - lzma_vli padding; - - lzma_vli reserved_vli1; - lzma_vli reserved_vli2; - lzma_vli reserved_vli3; - lzma_vli reserved_vli4; - } stream; - - struct { - /** - * \brief Block number in the file - * - * The first Block is 1. - */ - lzma_vli number_in_file; - - /** - * \brief Compressed start offset of this Block - * - * This offset is relative to the beginning of the - * lzma_index (i.e. usually the beginning of the .xz file). - * Normally this is where you should seek in the .xz file - * to start decompressing this Block. - */ - lzma_vli compressed_file_offset; - - /** - * \brief Uncompressed start offset of this Block - * - * This offset is relative to the beginning of the lzma_index - * (i.e. usually the beginning of the .xz file). - * - * When doing random-access reading, it is possible that - * the target offset is not exactly at Block boundary. One - * will need to compare the target offset against - * uncompressed_file_offset or uncompressed_stream_offset, - * and possibly decode and throw away some amount of data - * before reaching the target offset. - */ - lzma_vli uncompressed_file_offset; - - /** - * \brief Block number in this Stream - * - * The first Block is 1. - */ - lzma_vli number_in_stream; - - /** - * \brief Compressed start offset of this Block - * - * This offset is relative to the beginning of the Stream - * containing this Block. - */ - lzma_vli compressed_stream_offset; - - /** - * \brief Uncompressed start offset of this Block - * - * This offset is relative to the beginning of the Stream - * containing this Block. - */ - lzma_vli uncompressed_stream_offset; - - /** - * \brief Uncompressed size of this Block - * - * You should pass this to the Block decoder if you will - * decode this Block. It will allow the Block decoder to - * validate the uncompressed size. - */ - lzma_vli uncompressed_size; - - /** - * \brief Unpadded size of this Block - * - * You should pass this to the Block decoder if you will - * decode this Block. It will allow the Block decoder to - * validate the unpadded size. - */ - lzma_vli unpadded_size; - - /** - * \brief Total compressed size - * - * This includes all headers and padding in this Block. - * This is useful if you need to know how many bytes - * the Block decoder will actually read. - */ - lzma_vli total_size; - - lzma_vli reserved_vli1; - lzma_vli reserved_vli2; - lzma_vli reserved_vli3; - lzma_vli reserved_vli4; - - const void *reserved_ptr1; - const void *reserved_ptr2; - const void *reserved_ptr3; - const void *reserved_ptr4; - } block; - - /* - * Internal data which is used to store the state of the iterator. - * The exact format may vary between liblzma versions, so don't - * touch these in any way. - */ - union { - const void *p; - size_t s; - lzma_vli v; - } internal[6]; -} lzma_index_iter; - - -/** - * \brief Operation mode for lzma_index_iter_next() - */ -typedef enum { - LZMA_INDEX_ITER_ANY = 0, - /**< - * \brief Get the next Block or Stream - * - * Go to the next Block if the current Stream has at least - * one Block left. Otherwise go to the next Stream even if - * it has no Blocks. If the Stream has no Blocks - * (lzma_index_iter.stream.block_count == 0), - * lzma_index_iter.block will have undefined values. - */ - - LZMA_INDEX_ITER_STREAM = 1, - /**< - * \brief Get the next Stream - * - * Go to the next Stream even if the current Stream has - * unread Blocks left. If the next Stream has at least one - * Block, the iterator will point to the first Block. - * If there are no Blocks, lzma_index_iter.block will have - * undefined values. - */ - - LZMA_INDEX_ITER_BLOCK = 2, - /**< - * \brief Get the next Block - * - * Go to the next Block if the current Stream has at least - * one Block left. If the current Stream has no Blocks left, - * the next Stream with at least one Block is located and - * the iterator will be made to point to the first Block of - * that Stream. - */ - - LZMA_INDEX_ITER_NONEMPTY_BLOCK = 3 - /**< - * \brief Get the next non-empty Block - * - * This is like LZMA_INDEX_ITER_BLOCK except that it will - * skip Blocks whose Uncompressed Size is zero. - */ - -} lzma_index_iter_mode; - - -/** - * \brief Calculate memory usage of lzma_index - * - * On disk, the size of the Index field depends on both the number of Records - * stored and how big values the Records store (due to variable-length integer - * encoding). When the Index is kept in lzma_index structure, the memory usage - * depends only on the number of Records/Blocks stored in the Index(es), and - * in case of concatenated lzma_indexes, the number of Streams. The size in - * RAM is almost always significantly bigger than in the encoded form on disk. - * - * This function calculates an approximate amount of memory needed hold - * the given number of Streams and Blocks in lzma_index structure. This - * value may vary between CPU architectures and also between liblzma versions - * if the internal implementation is modified. - */ -extern LZMA_API(uint64_t) lzma_index_memusage( - lzma_vli streams, lzma_vli blocks) lzma_nothrow; - - -/** - * \brief Calculate the memory usage of an existing lzma_index - * - * This is a shorthand for lzma_index_memusage(lzma_index_stream_count(i), - * lzma_index_block_count(i)). - */ -extern LZMA_API(uint64_t) lzma_index_memused(const lzma_index *i) - lzma_nothrow; - - -/** - * \brief Allocate and initialize a new lzma_index structure - * - * \return On success, a pointer to an empty initialized lzma_index is - * returned. If allocation fails, NULL is returned. - */ -extern LZMA_API(lzma_index *) lzma_index_init(lzma_allocator *allocator) - lzma_nothrow; - - -/** - * \brief Deallocate lzma_index - * - * If i is NULL, this does nothing. - */ -extern LZMA_API(void) lzma_index_end(lzma_index *i, lzma_allocator *allocator) - lzma_nothrow; - - -/** - * \brief Add a new Block to lzma_index - * - * \param i Pointer to a lzma_index structure - * \param allocator Pointer to lzma_allocator, or NULL to - * use malloc() - * \param unpadded_size Unpadded Size of a Block. This can be - * calculated with lzma_block_unpadded_size() - * after encoding or decoding the Block. - * \param uncompressed_size Uncompressed Size of a Block. This can be - * taken directly from lzma_block structure - * after encoding or decoding the Block. - * - * Appending a new Block does not invalidate iterators. For example, - * if an iterator was pointing to the end of the lzma_index, after - * lzma_index_append() it is possible to read the next Block with - * an existing iterator. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR: Compressed or uncompressed size of the - * Stream or size of the Index field would grow too big. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_append( - lzma_index *i, lzma_allocator *allocator, - lzma_vli unpadded_size, lzma_vli uncompressed_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Set the Stream Flags - * - * Set the Stream Flags of the last (and typically the only) Stream - * in lzma_index. This can be useful when reading information from the - * lzma_index, because to decode Blocks, knowing the integrity check type - * is needed. - * - * The given Stream Flags are copied into internal preallocated structure - * in the lzma_index, thus the caller doesn't need to keep the *stream_flags - * available after calling this function. - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR: Unsupported stream_flags->version. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_stream_flags( - lzma_index *i, const lzma_stream_flags *stream_flags) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Get the types of integrity Checks - * - * If lzma_index_stream_flags() is used to set the Stream Flags for - * every Stream, lzma_index_checks() can be used to get a bitmask to - * indicate which Check types have been used. It can be useful e.g. if - * showing the Check types to the user. - * - * The bitmask is 1 << check_id, e.g. CRC32 is 1 << 1 and SHA-256 is 1 << 10. - */ -extern LZMA_API(uint32_t) lzma_index_checks(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Set the amount of Stream Padding - * - * Set the amount of Stream Padding of the last (and typically the only) - * Stream in the lzma_index. This is needed when planning to do random-access - * reading within multiple concatenated Streams. - * - * By default, the amount of Stream Padding is assumed to be zero bytes. - * - * \return - LZMA_OK - * - LZMA_DATA_ERROR: The file size would grow too big. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_stream_padding( - lzma_index *i, lzma_vli stream_padding) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Get the number of Streams - */ -extern LZMA_API(lzma_vli) lzma_index_stream_count(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the number of Blocks - * - * This returns the total number of Blocks in lzma_index. To get number - * of Blocks in individual Streams, use lzma_index_iter. - */ -extern LZMA_API(lzma_vli) lzma_index_block_count(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the size of the Index field as bytes - * - * This is needed to verify the Backward Size field in the Stream Footer. - */ -extern LZMA_API(lzma_vli) lzma_index_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the total size of the Stream - * - * If multiple lzma_indexes have been combined, this works as if the Blocks - * were in a single Stream. This is useful if you are going to combine - * Blocks from multiple Streams into a single new Stream. - */ -extern LZMA_API(lzma_vli) lzma_index_stream_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the total size of the Blocks - * - * This doesn't include the Stream Header, Stream Footer, Stream Padding, - * or Index fields. - */ -extern LZMA_API(lzma_vli) lzma_index_total_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the total size of the file - * - * When no lzma_indexes have been combined with lzma_index_cat() and there is - * no Stream Padding, this function is identical to lzma_index_stream_size(). - * If multiple lzma_indexes have been combined, this includes also the headers - * of each separate Stream and the possible Stream Padding fields. - */ -extern LZMA_API(lzma_vli) lzma_index_file_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the uncompressed size of the file - */ -extern LZMA_API(lzma_vli) lzma_index_uncompressed_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize an iterator - * - * \param iter Pointer to a lzma_index_iter structure - * \param i lzma_index to which the iterator will be associated - * - * This function associates the iterator with the given lzma_index, and calls - * lzma_index_iter_rewind() on the iterator. - * - * This function doesn't allocate any memory, thus there is no - * lzma_index_iter_end(). The iterator is valid as long as the - * associated lzma_index is valid, that is, until lzma_index_end() or - * using it as source in lzma_index_cat(). Specifically, lzma_index doesn't - * become invalid if new Blocks are added to it with lzma_index_append() or - * if it is used as the destination in lzma_index_cat(). - * - * It is safe to make copies of an initialized lzma_index_iter, for example, - * to easily restart reading at some particular position. - */ -extern LZMA_API(void) lzma_index_iter_init( - lzma_index_iter *iter, const lzma_index *i) lzma_nothrow; - - -/** - * \brief Rewind the iterator - * - * Rewind the iterator so that next call to lzma_index_iter_next() will - * return the first Block or Stream. - */ -extern LZMA_API(void) lzma_index_iter_rewind(lzma_index_iter *iter) - lzma_nothrow; - - -/** - * \brief Get the next Block or Stream - * - * \param iter Iterator initialized with lzma_index_iter_init() - * \param mode Specify what kind of information the caller wants - * to get. See lzma_index_iter_mode for details. - * - * \return If next Block or Stream matching the mode was found, *iter - * is updated and this function returns false. If no Block or - * Stream matching the mode is found, *iter is not modified - * and this function returns true. If mode is set to an unknown - * value, *iter is not modified and this function returns true. - */ -extern LZMA_API(lzma_bool) lzma_index_iter_next( - lzma_index_iter *iter, lzma_index_iter_mode mode) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Locate a Block - * - * If it is possible to seek in the .xz file, it is possible to parse - * the Index field(s) and use lzma_index_iter_locate() to do random-access - * reading with granularity of Block size. - * - * \param iter Iterator that was earlier initialized with - * lzma_index_iter_init(). - * \param target Uncompressed target offset which the caller would - * like to locate from the Stream - * - * If the target is smaller than the uncompressed size of the Stream (can be - * checked with lzma_index_uncompressed_size()): - * - Information about the Stream and Block containing the requested - * uncompressed offset is stored into *iter. - * - Internal state of the iterator is adjusted so that - * lzma_index_iter_next() can be used to read subsequent Blocks or Streams. - * - This function returns false. - * - * If target is greater than the uncompressed size of the Stream, *iter - * is not modified, and this function returns true. - */ -extern LZMA_API(lzma_bool) lzma_index_iter_locate( - lzma_index_iter *iter, lzma_vli target) lzma_nothrow; - - -/** - * \brief Concatenate lzma_indexes - * - * Concatenating lzma_indexes is useful when doing random-access reading in - * multi-Stream .xz file, or when combining multiple Streams into single - * Stream. - * - * \param dest lzma_index after which src is appended - * \param src lzma_index to be appended after dest. If this - * function succeeds, the memory allocated for src - * is freed or moved to be part of dest, and all - * iterators pointing to src will become invalid. - * \param allocator Custom memory allocator; can be NULL to use - * malloc() and free(). - * - * \return - LZMA_OK: lzma_indexes were concatenated successfully. - * src is now a dangling pointer. - * - LZMA_DATA_ERROR: *dest would grow too big. - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_cat( - lzma_index *dest, lzma_index *src, lzma_allocator *allocator) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Duplicate lzma_index - * - * \return A copy of the lzma_index, or NULL if memory allocation failed. - */ -extern LZMA_API(lzma_index *) lzma_index_dup( - const lzma_index *i, lzma_allocator *allocator) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .xz Index encoder - * - * \param strm Pointer to properly prepared lzma_stream - * \param i Pointer to lzma_index which should be encoded. - * - * The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH. - * It is enough to use only one of them (you can choose freely; use LZMA_RUN - * to support liblzma versions older than 5.0.0). - * - * \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_encoder( - lzma_stream *strm, const lzma_index *i) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .xz Index decoder - * - * \param strm Pointer to properly prepared lzma_stream - * \param i The decoded Index will be made available via - * this pointer. Initially this function will - * set *i to NULL (the old value is ignored). If - * decoding succeeds (lzma_code() returns - * LZMA_STREAM_END), *i will be set to point - * to a new lzma_index, which the application - * has to later free with lzma_index_end(). - * \param memlimit How much memory the resulting lzma_index is - * allowed to require. - * - * The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH. - * It is enough to use only one of them (you can choose freely; use LZMA_RUN - * to support liblzma versions older than 5.0.0). - * - * \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_decoder( - lzma_stream *strm, lzma_index **i, uint64_t memlimit) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Index encoder - * - * \param i lzma_index to be encoded - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Output buffer is too small. Use - * lzma_index_size() to find out how much output - * space is needed. - * - LZMA_PROG_ERROR - * - * \note This function doesn't take allocator argument since all - * the internal data is allocated on stack. - */ -extern LZMA_API(lzma_ret) lzma_index_buffer_encode(const lzma_index *i, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Single-call .xz Index decoder - * - * \param i If decoding succeeds, *i will point to a new - * lzma_index, which the application has to - * later free with lzma_index_end(). If an error - * occurs, *i will be NULL. The old value of *i - * is always ignored and thus doesn't need to be - * initialized by the caller. - * \param memlimit Pointer to how much memory the resulting - * lzma_index is allowed to require. The value - * pointed by this pointer is modified if and only - * if LZMA_MEMLIMIT_ERROR is returned. - * \param allocator Pointer to lzma_allocator, or NULL to use malloc() - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. - * The minimum required memlimit value was stored to *memlimit. - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_buffer_decode(lzma_index **i, - uint64_t *memlimit, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/index_hash.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/index_hash.h deleted file mode 100644 index fa2e048d55..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/index_hash.h +++ /dev/null @@ -1,107 +0,0 @@ -/** - * \file lzma/index_hash.h - * \brief Validate Index by using a hash function - * - * Hashing makes it possible to use constant amount of memory to validate - * Index of arbitrary size. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - -/** - * \brief Opaque data type to hold the Index hash - */ -typedef struct lzma_index_hash_s lzma_index_hash; - - -/** - * \brief Allocate and initialize a new lzma_index_hash structure - * - * If index_hash is NULL, a new lzma_index_hash structure is allocated, - * initialized, and a pointer to it returned. If allocation fails, NULL - * is returned. - * - * If index_hash is non-NULL, it is reinitialized and the same pointer - * returned. In this case, return value cannot be NULL or a different - * pointer than the index_hash that was given as an argument. - */ -extern LZMA_API(lzma_index_hash *) lzma_index_hash_init( - lzma_index_hash *index_hash, lzma_allocator *allocator) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Deallocate lzma_index_hash structure - */ -extern LZMA_API(void) lzma_index_hash_end( - lzma_index_hash *index_hash, lzma_allocator *allocator) - lzma_nothrow; - - -/** - * \brief Add a new Record to an Index hash - * - * \param index Pointer to a lzma_index_hash structure - * \param unpadded_size Unpadded Size of a Block - * \param uncompressed_size Uncompressed Size of a Block - * - * \return - LZMA_OK - * - LZMA_DATA_ERROR: Compressed or uncompressed size of the - * Stream or size of the Index field would grow too big. - * - LZMA_PROG_ERROR: Invalid arguments or this function is being - * used when lzma_index_hash_decode() has already been used. - */ -extern LZMA_API(lzma_ret) lzma_index_hash_append(lzma_index_hash *index_hash, - lzma_vli unpadded_size, lzma_vli uncompressed_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode and validate the Index field - * - * After telling the sizes of all Blocks with lzma_index_hash_append(), - * the actual Index field is decoded with this function. Specifically, - * once decoding of the Index field has been started, no more Records - * can be added using lzma_index_hash_append(). - * - * This function doesn't use lzma_stream structure to pass the input data. - * Instead, the input buffer is specified using three arguments. This is - * because it matches better the internal APIs of liblzma. - * - * \param index_hash Pointer to a lzma_index_hash structure - * \param in Pointer to the beginning of the input buffer - * \param in_pos in[*in_pos] is the next byte to process - * \param in_size in[in_size] is the first byte not to process - * - * \return - LZMA_OK: So far good, but more input is needed. - * - LZMA_STREAM_END: Index decoded successfully and it matches - * the Records given with lzma_index_hash_append(). - * - LZMA_DATA_ERROR: Index is corrupt or doesn't match the - * information given with lzma_index_hash_append(). - * - LZMA_BUF_ERROR: Cannot progress because *in_pos >= in_size. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_hash_decode(lzma_index_hash *index_hash, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Get the size of the Index field as bytes - * - * This is needed to verify the Backward Size field in the Stream Footer. - */ -extern LZMA_API(lzma_vli) lzma_index_hash_size( - const lzma_index_hash *index_hash) - lzma_nothrow lzma_attr_pure; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/lzma.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/lzma.h deleted file mode 100644 index 3f8e095f70..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/lzma.h +++ /dev/null @@ -1,420 +0,0 @@ -/** - * \file lzma/lzma.h - * \brief LZMA1 and LZMA2 filters - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief LZMA1 Filter ID - * - * LZMA1 is the very same thing as what was called just LZMA in LZMA Utils, - * 7-Zip, and LZMA SDK. It's called LZMA1 here to prevent developers from - * accidentally using LZMA when they actually want LZMA2. - * - * LZMA1 shouldn't be used for new applications unless you _really_ know - * what you are doing. LZMA2 is almost always a better choice. - */ -#define LZMA_FILTER_LZMA1 LZMA_VLI_C(0x4000000000000001) - -/** - * \brief LZMA2 Filter ID - * - * Usually you want this instead of LZMA1. Compared to LZMA1, LZMA2 adds - * support for LZMA_SYNC_FLUSH, uncompressed chunks (smaller expansion - * when trying to compress uncompressible data), possibility to change - * lc/lp/pb in the middle of encoding, and some other internal improvements. - */ -#define LZMA_FILTER_LZMA2 LZMA_VLI_C(0x21) - - -/** - * \brief Match finders - * - * Match finder has major effect on both speed and compression ratio. - * Usually hash chains are faster than binary trees. - * - * If you will use LZMA_SYNC_FLUSH often, the hash chains may be a better - * choice, because binary trees get much higher compression ratio penalty - * with LZMA_SYNC_FLUSH. - * - * The memory usage formulas are only rough estimates, which are closest to - * reality when dict_size is a power of two. The formulas are more complex - * in reality, and can also change a little between liblzma versions. Use - * lzma_raw_encoder_memusage() to get more accurate estimate of memory usage. - */ -typedef enum { - LZMA_MF_HC3 = 0x03, - /**< - * \brief Hash Chain with 2- and 3-byte hashing - * - * Minimum nice_len: 3 - * - * Memory usage: - * - dict_size <= 16 MiB: dict_size * 7.5 - * - dict_size > 16 MiB: dict_size * 5.5 + 64 MiB - */ - - LZMA_MF_HC4 = 0x04, - /**< - * \brief Hash Chain with 2-, 3-, and 4-byte hashing - * - * Minimum nice_len: 4 - * - * Memory usage: - * - dict_size <= 32 MiB: dict_size * 7.5 - * - dict_size > 32 MiB: dict_size * 6.5 - */ - - LZMA_MF_BT2 = 0x12, - /**< - * \brief Binary Tree with 2-byte hashing - * - * Minimum nice_len: 2 - * - * Memory usage: dict_size * 9.5 - */ - - LZMA_MF_BT3 = 0x13, - /**< - * \brief Binary Tree with 2- and 3-byte hashing - * - * Minimum nice_len: 3 - * - * Memory usage: - * - dict_size <= 16 MiB: dict_size * 11.5 - * - dict_size > 16 MiB: dict_size * 9.5 + 64 MiB - */ - - LZMA_MF_BT4 = 0x14 - /**< - * \brief Binary Tree with 2-, 3-, and 4-byte hashing - * - * Minimum nice_len: 4 - * - * Memory usage: - * - dict_size <= 32 MiB: dict_size * 11.5 - * - dict_size > 32 MiB: dict_size * 10.5 - */ -} lzma_match_finder; - - -/** - * \brief Test if given match finder is supported - * - * Return true if the given match finder is supported by this liblzma build. - * Otherwise false is returned. It is safe to call this with a value that - * isn't listed in lzma_match_finder enumeration; the return value will be - * false. - * - * There is no way to list which match finders are available in this - * particular liblzma version and build. It would be useless, because - * a new match finder, which the application developer wasn't aware, - * could require giving additional options to the encoder that the older - * match finders don't need. - */ -extern LZMA_API(lzma_bool) lzma_mf_is_supported(lzma_match_finder match_finder) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Compression modes - * - * This selects the function used to analyze the data produced by the match - * finder. - */ -typedef enum { - LZMA_MODE_FAST = 1, - /**< - * \brief Fast compression - * - * Fast mode is usually at its best when combined with - * a hash chain match finder. - */ - - LZMA_MODE_NORMAL = 2 - /**< - * \brief Normal compression - * - * This is usually notably slower than fast mode. Use this - * together with binary tree match finders to expose the - * full potential of the LZMA1 or LZMA2 encoder. - */ -} lzma_mode; - - -/** - * \brief Test if given compression mode is supported - * - * Return true if the given compression mode is supported by this liblzma - * build. Otherwise false is returned. It is safe to call this with a value - * that isn't listed in lzma_mode enumeration; the return value will be false. - * - * There is no way to list which modes are available in this particular - * liblzma version and build. It would be useless, because a new compression - * mode, which the application developer wasn't aware, could require giving - * additional options to the encoder that the older modes don't need. - */ -extern LZMA_API(lzma_bool) lzma_mode_is_supported(lzma_mode mode) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Options specific to the LZMA1 and LZMA2 filters - * - * Since LZMA1 and LZMA2 share most of the code, it's simplest to share - * the options structure too. For encoding, all but the reserved variables - * need to be initialized unless specifically mentioned otherwise. - * lzma_lzma_preset() can be used to get a good starting point. - * - * For raw decoding, both LZMA1 and LZMA2 need dict_size, preset_dict, and - * preset_dict_size (if preset_dict != NULL). LZMA1 needs also lc, lp, and pb. - */ -typedef struct { - /** - * \brief Dictionary size in bytes - * - * Dictionary size indicates how many bytes of the recently processed - * uncompressed data is kept in memory. One method to reduce size of - * the uncompressed data is to store distance-length pairs, which - * indicate what data to repeat from the dictionary buffer. Thus, - * the bigger the dictionary, the better the compression ratio - * usually is. - * - * Maximum size of the dictionary depends on multiple things: - * - Memory usage limit - * - Available address space (not a problem on 64-bit systems) - * - Selected match finder (encoder only) - * - * Currently the maximum dictionary size for encoding is 1.5 GiB - * (i.e. (UINT32_C(1) << 30) + (UINT32_C(1) << 29)) even on 64-bit - * systems for certain match finder implementation reasons. In the - * future, there may be match finders that support bigger - * dictionaries. - * - * Decoder already supports dictionaries up to 4 GiB - 1 B (i.e. - * UINT32_MAX), so increasing the maximum dictionary size of the - * encoder won't cause problems for old decoders. - * - * Because extremely small dictionaries sizes would have unneeded - * overhead in the decoder, the minimum dictionary size is 4096 bytes. - * - * \note When decoding, too big dictionary does no other harm - * than wasting memory. - */ - uint32_t dict_size; -# define LZMA_DICT_SIZE_MIN UINT32_C(4096) -# define LZMA_DICT_SIZE_DEFAULT (UINT32_C(1) << 23) - - /** - * \brief Pointer to an initial dictionary - * - * It is possible to initialize the LZ77 history window using - * a preset dictionary. It is useful when compressing many - * similar, relatively small chunks of data independently from - * each other. The preset dictionary should contain typical - * strings that occur in the files being compressed. The most - * probable strings should be near the end of the preset dictionary. - * - * This feature should be used only in special situations. For - * now, it works correctly only with raw encoding and decoding. - * Currently none of the container formats supported by - * liblzma allow preset dictionary when decoding, thus if - * you create a .xz or .lzma file with preset dictionary, it - * cannot be decoded with the regular decoder functions. In the - * future, the .xz format will likely get support for preset - * dictionary though. - */ - const uint8_t *preset_dict; - - /** - * \brief Size of the preset dictionary - * - * Specifies the size of the preset dictionary. If the size is - * bigger than dict_size, only the last dict_size bytes are - * processed. - * - * This variable is read only when preset_dict is not NULL. - * If preset_dict is not NULL but preset_dict_size is zero, - * no preset dictionary is used (identical to only setting - * preset_dict to NULL). - */ - uint32_t preset_dict_size; - - /** - * \brief Number of literal context bits - * - * How many of the highest bits of the previous uncompressed - * eight-bit byte (also known as `literal') are taken into - * account when predicting the bits of the next literal. - * - * E.g. in typical English text, an upper-case letter is - * often followed by a lower-case letter, and a lower-case - * letter is usually followed by another lower-case letter. - * In the US-ASCII character set, the highest three bits are 010 - * for upper-case letters and 011 for lower-case letters. - * When lc is at least 3, the literal coding can take advantage of - * this property in the uncompressed data. - * - * There is a limit that applies to literal context bits and literal - * position bits together: lc + lp <= 4. Without this limit the - * decoding could become very slow, which could have security related - * results in some cases like email servers doing virus scanning. - * This limit also simplifies the internal implementation in liblzma. - * - * There may be LZMA1 streams that have lc + lp > 4 (maximum possible - * lc would be 8). It is not possible to decode such streams with - * liblzma. - */ - uint32_t lc; -# define LZMA_LCLP_MIN 0 -# define LZMA_LCLP_MAX 4 -# define LZMA_LC_DEFAULT 3 - - /** - * \brief Number of literal position bits - * - * lp affects what kind of alignment in the uncompressed data is - * assumed when encoding literals. A literal is a single 8-bit byte. - * See pb below for more information about alignment. - */ - uint32_t lp; -# define LZMA_LP_DEFAULT 0 - - /** - * \brief Number of position bits - * - * pb affects what kind of alignment in the uncompressed data is - * assumed in general. The default means four-byte alignment - * (2^ pb =2^2=4), which is often a good choice when there's - * no better guess. - * - * When the aligment is known, setting pb accordingly may reduce - * the file size a little. E.g. with text files having one-byte - * alignment (US-ASCII, ISO-8859-*, UTF-8), setting pb=0 can - * improve compression slightly. For UTF-16 text, pb=1 is a good - * choice. If the alignment is an odd number like 3 bytes, pb=0 - * might be the best choice. - * - * Even though the assumed alignment can be adjusted with pb and - * lp, LZMA1 and LZMA2 still slightly favor 16-byte alignment. - * It might be worth taking into account when designing file formats - * that are likely to be often compressed with LZMA1 or LZMA2. - */ - uint32_t pb; -# define LZMA_PB_MIN 0 -# define LZMA_PB_MAX 4 -# define LZMA_PB_DEFAULT 2 - - /** Compression mode */ - lzma_mode mode; - - /** - * \brief Nice length of a match - * - * This determines how many bytes the encoder compares from the match - * candidates when looking for the best match. Once a match of at - * least nice_len bytes long is found, the encoder stops looking for - * better candidates and encodes the match. (Naturally, if the found - * match is actually longer than nice_len, the actual length is - * encoded; it's not truncated to nice_len.) - * - * Bigger values usually increase the compression ratio and - * compression time. For most files, 32 to 128 is a good value, - * which gives very good compression ratio at good speed. - * - * The exact minimum value depends on the match finder. The maximum - * is 273, which is the maximum length of a match that LZMA1 and - * LZMA2 can encode. - */ - uint32_t nice_len; - - /** Match finder ID */ - lzma_match_finder mf; - - /** - * \brief Maximum search depth in the match finder - * - * For every input byte, match finder searches through the hash chain - * or binary tree in a loop, each iteration going one step deeper in - * the chain or tree. The searching stops if - * - a match of at least nice_len bytes long is found; - * - all match candidates from the hash chain or binary tree have - * been checked; or - * - maximum search depth is reached. - * - * Maximum search depth is needed to prevent the match finder from - * wasting too much time in case there are lots of short match - * candidates. On the other hand, stopping the search before all - * candidates have been checked can reduce compression ratio. - * - * Setting depth to zero tells liblzma to use an automatic default - * value, that depends on the selected match finder and nice_len. - * The default is in the range [4, 200] or so (it may vary between - * liblzma versions). - * - * Using a bigger depth value than the default can increase - * compression ratio in some cases. There is no strict maximum value, - * but high values (thousands or millions) should be used with care: - * the encoder could remain fast enough with typical input, but - * malicious input could cause the match finder to slow down - * dramatically, possibly creating a denial of service attack. - */ - uint32_t depth; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the names - * of these variables may change. These are and will never be used - * with the currently supported options, so it is safe to leave these - * uninitialized. - */ - uint32_t reserved_int1; - uint32_t reserved_int2; - uint32_t reserved_int3; - uint32_t reserved_int4; - uint32_t reserved_int5; - uint32_t reserved_int6; - uint32_t reserved_int7; - uint32_t reserved_int8; - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - lzma_reserved_enum reserved_enum3; - lzma_reserved_enum reserved_enum4; - void *reserved_ptr1; - void *reserved_ptr2; - -} lzma_options_lzma; - - -/** - * \brief Set a compression preset to lzma_options_lzma structure - * - * 0 is the fastest and 9 is the slowest. These match the switches -0 .. -9 - * of the xz command line tool. In addition, it is possible to bitwise-or - * flags to the preset. Currently only LZMA_PRESET_EXTREME is supported. - * The flags are defined in container.h, because the flags are used also - * with lzma_easy_encoder(). - * - * The preset values are subject to changes between liblzma versions. - * - * This function is available only if LZMA1 or LZMA2 encoder has been enabled - * when building liblzma. - * - * \return On success, false is returned. If the preset is not - * supported, true is returned. - */ -extern LZMA_API(lzma_bool) lzma_lzma_preset( - lzma_options_lzma *options, uint32_t preset) lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/stream_flags.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/stream_flags.h deleted file mode 100644 index bbdd408263..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/stream_flags.h +++ /dev/null @@ -1,223 +0,0 @@ -/** - * \file lzma/stream_flags.h - * \brief .xz Stream Header and Stream Footer encoder and decoder - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Size of Stream Header and Stream Footer - * - * Stream Header and Stream Footer have the same size and they are not - * going to change even if a newer version of the .xz file format is - * developed in future. - */ -#define LZMA_STREAM_HEADER_SIZE 12 - - -/** - * \brief Options for encoding/decoding Stream Header and Stream Footer - */ -typedef struct { - /** - * \brief Stream Flags format version - * - * To prevent API and ABI breakages if new features are needed in - * Stream Header or Stream Footer, a version number is used to - * indicate which fields in this structure are in use. For now, - * version must always be zero. With non-zero version, the - * lzma_stream_header_encode() and lzma_stream_footer_encode() - * will return LZMA_OPTIONS_ERROR. - * - * lzma_stream_header_decode() and lzma_stream_footer_decode() - * will always set this to the lowest value that supports all the - * features indicated by the Stream Flags field. The application - * must check that the version number set by the decoding functions - * is supported by the application. Otherwise it is possible that - * the application will decode the Stream incorrectly. - */ - uint32_t version; - - /** - * \brief Backward Size - * - * Backward Size must be a multiple of four bytes. In this Stream - * format version, Backward Size is the size of the Index field. - * - * Backward Size isn't actually part of the Stream Flags field, but - * it is convenient to include in this structure anyway. Backward - * Size is present only in the Stream Footer. There is no need to - * initialize backward_size when encoding Stream Header. - * - * lzma_stream_header_decode() always sets backward_size to - * LZMA_VLI_UNKNOWN so that it is convenient to use - * lzma_stream_flags_compare() when both Stream Header and Stream - * Footer have been decoded. - */ - lzma_vli backward_size; -# define LZMA_BACKWARD_SIZE_MIN 4 -# define LZMA_BACKWARD_SIZE_MAX (LZMA_VLI_C(1) << 34) - - /** - * \brief Check ID - * - * This indicates the type of the integrity check calculated from - * uncompressed data. - */ - lzma_check check; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the - * names of these variables may change. - * - * (We will never be able to use all of these since Stream Flags - * is just two bytes plus Backward Size of four bytes. But it's - * nice to have the proper types when they are needed.) - */ - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - lzma_reserved_enum reserved_enum3; - lzma_reserved_enum reserved_enum4; - lzma_bool reserved_bool1; - lzma_bool reserved_bool2; - lzma_bool reserved_bool3; - lzma_bool reserved_bool4; - lzma_bool reserved_bool5; - lzma_bool reserved_bool6; - lzma_bool reserved_bool7; - lzma_bool reserved_bool8; - uint32_t reserved_int1; - uint32_t reserved_int2; - -} lzma_stream_flags; - - -/** - * \brief Encode Stream Header - * - * \param options Stream Header options to be encoded. - * options->backward_size is ignored and doesn't - * need to be initialized. - * \param out Beginning of the output buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_OPTIONS_ERROR: options->version is not supported by - * this liblzma version. - * - LZMA_PROG_ERROR: Invalid options. - */ -extern LZMA_API(lzma_ret) lzma_stream_header_encode( - const lzma_stream_flags *options, uint8_t *out) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Encode Stream Footer - * - * \param options Stream Footer options to be encoded. - * \param out Beginning of the output buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_OPTIONS_ERROR: options->version is not supported by - * this liblzma version. - * - LZMA_PROG_ERROR: Invalid options. - */ -extern LZMA_API(lzma_ret) lzma_stream_footer_encode( - const lzma_stream_flags *options, uint8_t *out) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Stream Header - * - * \param options Target for the decoded Stream Header options. - * \param in Beginning of the input buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * options->backward_size is always set to LZMA_VLI_UNKNOWN. This is to - * help comparing Stream Flags from Stream Header and Stream Footer with - * lzma_stream_flags_compare(). - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given - * buffer cannot be Stream Header. - * - LZMA_DATA_ERROR: CRC32 doesn't match, thus the header - * is corrupt. - * - LZMA_OPTIONS_ERROR: Unsupported options are present - * in the header. - * - * \note When decoding .xz files that contain multiple Streams, it may - * make sense to print "file format not recognized" only if - * decoding of the Stream Header of the _first_ Stream gives - * LZMA_FORMAT_ERROR. If non-first Stream Header gives - * LZMA_FORMAT_ERROR, the message used for LZMA_DATA_ERROR is - * probably more appropriate. - * - * For example, Stream decoder in liblzma uses LZMA_DATA_ERROR if - * LZMA_FORMAT_ERROR is returned by lzma_stream_header_decode() - * when decoding non-first Stream. - */ -extern LZMA_API(lzma_ret) lzma_stream_header_decode( - lzma_stream_flags *options, const uint8_t *in) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Stream Footer - * - * \param options Target for the decoded Stream Header options. - * \param in Beginning of the input buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given - * buffer cannot be Stream Footer. - * - LZMA_DATA_ERROR: CRC32 doesn't match, thus the Stream Footer - * is corrupt. - * - LZMA_OPTIONS_ERROR: Unsupported options are present - * in Stream Footer. - * - * \note If Stream Header was already decoded successfully, but - * decoding Stream Footer returns LZMA_FORMAT_ERROR, the - * application should probably report some other error message - * than "file format not recognized", since the file more likely - * is corrupt (possibly truncated). Stream decoder in liblzma - * uses LZMA_DATA_ERROR in this situation. - */ -extern LZMA_API(lzma_ret) lzma_stream_footer_decode( - lzma_stream_flags *options, const uint8_t *in) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Compare two lzma_stream_flags structures - * - * backward_size values are compared only if both are not - * LZMA_VLI_UNKNOWN. - * - * \return - LZMA_OK: Both are equal. If either had backward_size set - * to LZMA_VLI_UNKNOWN, backward_size values were not - * compared or validated. - * - LZMA_DATA_ERROR: The structures differ. - * - LZMA_OPTIONS_ERROR: version in either structure is greater - * than the maximum supported version (currently zero). - * - LZMA_PROG_ERROR: Invalid value, e.g. invalid check or - * backward_size. - */ -extern LZMA_API(lzma_ret) lzma_stream_flags_compare( - const lzma_stream_flags *a, const lzma_stream_flags *b) - lzma_nothrow lzma_attr_pure; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/version.h deleted file mode 100644 index 629e8e1a5b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/version.h +++ /dev/null @@ -1,121 +0,0 @@ -/** - * \file lzma/version.h - * \brief Version number - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/* - * Version number split into components - */ -#define LZMA_VERSION_MAJOR 5 -#define LZMA_VERSION_MINOR 0 -#define LZMA_VERSION_PATCH 4 -#define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE - -#ifndef LZMA_VERSION_COMMIT -# define LZMA_VERSION_COMMIT "" -#endif - - -/* - * Map symbolic stability levels to integers. - */ -#define LZMA_VERSION_STABILITY_ALPHA 0 -#define LZMA_VERSION_STABILITY_BETA 1 -#define LZMA_VERSION_STABILITY_STABLE 2 - - -/** - * \brief Compile-time version number - * - * The version number is of format xyyyzzzs where - * - x = major - * - yyy = minor - * - zzz = revision - * - s indicates stability: 0 = alpha, 1 = beta, 2 = stable - * - * The same xyyyzzz triplet is never reused with different stability levels. - * For example, if 5.1.0alpha has been released, there will never be 5.1.0beta - * or 5.1.0 stable. - * - * \note The version number of liblzma has nothing to with - * the version number of Igor Pavlov's LZMA SDK. - */ -#define LZMA_VERSION (LZMA_VERSION_MAJOR * UINT32_C(10000000) \ - + LZMA_VERSION_MINOR * UINT32_C(10000) \ - + LZMA_VERSION_PATCH * UINT32_C(10) \ - + LZMA_VERSION_STABILITY) - - -/* - * Macros to construct the compile-time version string - */ -#if LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_ALPHA -# define LZMA_VERSION_STABILITY_STRING "alpha" -#elif LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_BETA -# define LZMA_VERSION_STABILITY_STRING "beta" -#elif LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_STABLE -# define LZMA_VERSION_STABILITY_STRING "" -#else -# error Incorrect LZMA_VERSION_STABILITY -#endif - -#define LZMA_VERSION_STRING_C_(major, minor, patch, stability, commit) \ - #major "." #minor "." #patch stability commit - -#define LZMA_VERSION_STRING_C(major, minor, patch, stability, commit) \ - LZMA_VERSION_STRING_C_(major, minor, patch, stability, commit) - - -/** - * \brief Compile-time version as a string - * - * This can be for example "4.999.5alpha", "4.999.8beta", or "5.0.0" (stable - * versions don't have any "stable" suffix). In future, a snapshot built - * from source code repository may include an additional suffix, for example - * "4.999.8beta-21-g1d92". The commit ID won't be available in numeric form - * in LZMA_VERSION macro. - */ -#define LZMA_VERSION_STRING LZMA_VERSION_STRING_C( \ - LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, \ - LZMA_VERSION_PATCH, LZMA_VERSION_STABILITY_STRING, \ - LZMA_VERSION_COMMIT) - - -/* #ifndef is needed for use with windres (MinGW or Cygwin). */ -#ifndef LZMA_H_INTERNAL_RC - -/** - * \brief Run-time version number as an integer - * - * Return the value of LZMA_VERSION macro at the compile time of liblzma. - * This allows the application to compare if it was built against the same, - * older, or newer version of liblzma that is currently running. - */ -extern LZMA_API(uint32_t) lzma_version_number(void) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Run-time version as a string - * - * This function may be useful if you want to display which version of - * liblzma your application is currently using. - */ -extern LZMA_API(const char *) lzma_version_string(void) - lzma_nothrow lzma_attr_const; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/vli.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/vli.h deleted file mode 100644 index 9ad13f2e2f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzma/vli.h +++ /dev/null @@ -1,166 +0,0 @@ -/** - * \file lzma/vli.h - * \brief Variable-length integer handling - * - * In the .xz format, most integers are encoded in a variable-length - * representation, which is sometimes called little endian base-128 encoding. - * This saves space when smaller values are more likely than bigger values. - * - * The encoding scheme encodes seven bits to every byte, using minimum - * number of bytes required to represent the given value. Encodings that use - * non-minimum number of bytes are invalid, thus every integer has exactly - * one encoded representation. The maximum number of bits in a VLI is 63, - * thus the vli argument must be less than or equal to UINT64_MAX / 2. You - * should use LZMA_VLI_MAX for clarity. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Maximum supported value of a variable-length integer - */ -#define LZMA_VLI_MAX (UINT64_MAX / 2) - -/** - * \brief VLI value to denote that the value is unknown - */ -#define LZMA_VLI_UNKNOWN UINT64_MAX - -/** - * \brief Maximum supported encoded length of variable length integers - */ -#define LZMA_VLI_BYTES_MAX 9 - -/** - * \brief VLI constant suffix - */ -#define LZMA_VLI_C(n) UINT64_C(n) - - -/** - * \brief Variable-length integer type - * - * Valid VLI values are in the range [0, LZMA_VLI_MAX]. Unknown value is - * indicated with LZMA_VLI_UNKNOWN, which is the maximum value of the - * underlaying integer type. - * - * lzma_vli will be uint64_t for the foreseeable future. If a bigger size - * is needed in the future, it is guaranteed that 2 * LZMA_VLI_MAX will - * not overflow lzma_vli. This simplifies integer overflow detection. - */ -typedef uint64_t lzma_vli; - - -/** - * \brief Validate a variable-length integer - * - * This is useful to test that application has given acceptable values - * for example in the uncompressed_size and compressed_size variables. - * - * \return True if the integer is representable as VLI or if it - * indicates unknown value. - */ -#define lzma_vli_is_valid(vli) \ - ((vli) <= LZMA_VLI_MAX || (vli) == LZMA_VLI_UNKNOWN) - - -/** - * \brief Encode a variable-length integer - * - * This function has two modes: single-call and multi-call. Single-call mode - * encodes the whole integer at once; it is an error if the output buffer is - * too small. Multi-call mode saves the position in *vli_pos, and thus it is - * possible to continue encoding if the buffer becomes full before the whole - * integer has been encoded. - * - * \param vli Integer to be encoded - * \param vli_pos How many VLI-encoded bytes have already been written - * out. When starting to encode a new integer in - * multi-call mode, *vli_pos must be set to zero. - * To use single-call encoding, set vli_pos to NULL. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return Slightly different return values are used in multi-call and - * single-call modes. - * - * Single-call (vli_pos == NULL): - * - LZMA_OK: Integer successfully encoded. - * - LZMA_PROG_ERROR: Arguments are not sane. This can be due - * to too little output space; single-call mode doesn't use - * LZMA_BUF_ERROR, since the application should have checked - * the encoded size with lzma_vli_size(). - * - * Multi-call (vli_pos != NULL): - * - LZMA_OK: So far all OK, but the integer is not - * completely written out yet. - * - LZMA_STREAM_END: Integer successfully encoded. - * - LZMA_BUF_ERROR: No output space was provided. - * - LZMA_PROG_ERROR: Arguments are not sane. - */ -extern LZMA_API(lzma_ret) lzma_vli_encode(lzma_vli vli, size_t *vli_pos, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Decode a variable-length integer - * - * Like lzma_vli_encode(), this function has single-call and multi-call modes. - * - * \param vli Pointer to decoded integer. The decoder will - * initialize it to zero when *vli_pos == 0, so - * application isn't required to initialize *vli. - * \param vli_pos How many bytes have already been decoded. When - * starting to decode a new integer in multi-call - * mode, *vli_pos must be initialized to zero. To - * use single-call decoding, set vli_pos to NULL. - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * - * \return Slightly different return values are used in multi-call and - * single-call modes. - * - * Single-call (vli_pos == NULL): - * - LZMA_OK: Integer successfully decoded. - * - LZMA_DATA_ERROR: Integer is corrupt. This includes hitting - * the end of the input buffer before the whole integer was - * decoded; providing no input at all will use LZMA_DATA_ERROR. - * - LZMA_PROG_ERROR: Arguments are not sane. - * - * Multi-call (vli_pos != NULL): - * - LZMA_OK: So far all OK, but the integer is not - * completely decoded yet. - * - LZMA_STREAM_END: Integer successfully decoded. - * - LZMA_DATA_ERROR: Integer is corrupt. - * - LZMA_BUF_ERROR: No input was provided. - * - LZMA_PROG_ERROR: Arguments are not sane. - */ -extern LZMA_API(lzma_ret) lzma_vli_decode(lzma_vli *vli, size_t *vli_pos, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow; - - -/** - * \brief Get the number of bytes required to encode a VLI - * - * \return Number of bytes on success (1-9). If vli isn't valid, - * zero is returned. - */ -extern LZMA_API(uint32_t) lzma_vli_size(lzma_vli vli) - lzma_nothrow lzma_attr_pure; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1.h deleted file mode 100644 index de0fba5796..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1.h +++ /dev/null @@ -1,99 +0,0 @@ -/* lzo1.h -- public interface of the LZO1 compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1_H_INCLUDED -#define __LZO1_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1_MEM_COMPRESS ((lzo_uint32) (8192L * lzo_sizeof_dict_t)) -#define LZO1_MEM_DECOMPRESS (0) - - -LZO_EXTERN(int) -lzo1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -LZO_EXTERN(int) -lzo1_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1a.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1a.h deleted file mode 100644 index 0969c67db7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1a.h +++ /dev/null @@ -1,99 +0,0 @@ -/* lzo1a.h -- public interface of the LZO1A compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1A_H_INCLUDED -#define __LZO1A_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1A_MEM_COMPRESS ((lzo_uint32) (8192L * lzo_sizeof_dict_t)) -#define LZO1A_MEM_DECOMPRESS (0) - - -LZO_EXTERN(int) -lzo1a_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -LZO_EXTERN(int) -lzo1a_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1A_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1a_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1b.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1b.h deleted file mode 100644 index da3b597c64..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1b.h +++ /dev/null @@ -1,163 +0,0 @@ -/* lzo1b.h -- public interface of the LZO1B compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1B_H_INCLUDED -#define __LZO1B_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1B_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1B_MEM_DECOMPRESS (0) - - -/* compression levels */ -#define LZO1B_BEST_SPEED 1 -#define LZO1B_BEST_COMPRESSION 9 -#define LZO1B_DEFAULT_COMPRESSION (-1) /* fastest by default */ - - -LZO_EXTERN(int) -lzo1b_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - int compression_level ); - -/* decompression */ -LZO_EXTERN(int) -lzo1b_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1b_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1b_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_2_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_3_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_4_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_5_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_6_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_7_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_8_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_9_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1B_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1b_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -#define LZO1B_999_MEM_COMPRESS ((lzo_uint32) (3 * 65536L * sizeof(lzo_xint))) - -LZO_EXTERN(int) -lzo1b_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1c.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1c.h deleted file mode 100644 index d5b1b8c5be..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1c.h +++ /dev/null @@ -1,163 +0,0 @@ -/* lzo1c.h -- public interface of the LZO1C compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1C_H_INCLUDED -#define __LZO1C_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1C_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1C_MEM_DECOMPRESS (0) - - -/* compression levels */ -#define LZO1C_BEST_SPEED 1 -#define LZO1C_BEST_COMPRESSION 9 -#define LZO1C_DEFAULT_COMPRESSION (-1) /* fastest by default */ - - -LZO_EXTERN(int) -lzo1c_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - int compression_level ); - -/* decompression */ -LZO_EXTERN(int) -lzo1c_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1c_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1c_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_2_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_3_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_4_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_5_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_6_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_7_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_8_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_9_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1C_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1c_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -#define LZO1C_999_MEM_COMPRESS ((lzo_uint32) (5 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1c_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1f.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1f.h deleted file mode 100644 index 7713070318..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1f.h +++ /dev/null @@ -1,111 +0,0 @@ -/* lzo1f.h -- public interface of the LZO1F compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1F_H_INCLUDED -#define __LZO1F_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1F_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1F_MEM_DECOMPRESS (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1f_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1f_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1f_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1F_999_MEM_COMPRESS ((lzo_uint32) (5 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1f_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1x.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1x.h deleted file mode 100644 index 9bb993cc04..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1x.h +++ /dev/null @@ -1,180 +0,0 @@ -/* lzo1x.h -- public interface of the LZO1X compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1X_H_INCLUDED -#define __LZO1X_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1X_MEM_COMPRESS LZO1X_1_MEM_COMPRESS -#define LZO1X_MEM_DECOMPRESS (0) -#define LZO1X_MEM_OPTIMIZE (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1x_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1x_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -#define LZO1X_1_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// special compressor versions -************************************************************************/ - -/* this version needs only 8 KiB work memory */ -#define LZO1X_1_11_MEM_COMPRESS ((lzo_uint32) (2048L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_11_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/* this version needs 16 KiB work memory */ -#define LZO1X_1_12_MEM_COMPRESS ((lzo_uint32) (4096L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_12_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/* use this version if you need a little more compression speed */ -#define LZO1X_1_15_MEM_COMPRESS ((lzo_uint32) (32768L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_15_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1X_999_MEM_COMPRESS ((lzo_uint32) (14 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1x_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1x_999_compress_dict ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -LZO_EXTERN(int) -lzo1x_999_compress_level ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len, - lzo_callback_p cb, - int compression_level ); - -LZO_EXTERN(int) -lzo1x_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */, - const lzo_bytep dict, lzo_uint dict_len ); - - -/*********************************************************************** -// optimize a compressed data block -************************************************************************/ - -LZO_EXTERN(int) -lzo1x_optimize ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1y.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1y.h deleted file mode 100644 index 359e358077..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1y.h +++ /dev/null @@ -1,148 +0,0 @@ -/* lzo1y.h -- public interface of the LZO1Y compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1Y_H_INCLUDED -#define __LZO1Y_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1Y_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1Y_MEM_DECOMPRESS (0) -#define LZO1Y_MEM_OPTIMIZE (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1y_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1y_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1y_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1Y_999_MEM_COMPRESS ((lzo_uint32) (14 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1y_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1y_999_compress_dict ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -LZO_EXTERN(int) -lzo1y_999_compress_level ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len, - lzo_callback_p cb, - int compression_level ); - -LZO_EXTERN(int) -lzo1y_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */, - const lzo_bytep dict, lzo_uint dict_len ); - - -/*********************************************************************** -// optimize a compressed data block -************************************************************************/ - -LZO_EXTERN(int) -lzo1y_optimize ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1z.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1z.h deleted file mode 100644 index f385ca3959..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo1z.h +++ /dev/null @@ -1,153 +0,0 @@ -/* lzo1z.h -- public interface of the LZO1Z compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1Z_H_INCLUDED -#define __LZO1Z_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1Z_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1Z_MEM_DECOMPRESS (0) -#define LZO1Z_MEM_OPTIMIZE (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1z_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1z_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -#if 0 -/* not yet implemented */ -LZO_EXTERN(int) -lzo1z_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -#endif - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1Z_999_MEM_COMPRESS ((lzo_uint32) (14 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1z_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1z_999_compress_dict ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -LZO_EXTERN(int) -lzo1z_999_compress_level ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len, - lzo_callback_p cb, - int compression_level ); - -LZO_EXTERN(int) -lzo1z_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */, - const lzo_bytep dict, lzo_uint dict_len ); - - -/*********************************************************************** -// optimize a compressed data block -************************************************************************/ - -#if 0 -/* not yet implemented */ -LZO_EXTERN(int) -lzo1z_optimize ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); -#endif - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo2a.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo2a.h deleted file mode 100644 index ef65155ed3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo2a.h +++ /dev/null @@ -1,95 +0,0 @@ -/* lzo2a.h -- public interface of the LZO2A compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO2A_H_INCLUDED -#define __LZO2A_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -#define LZO2A_MEM_DECOMPRESS (0) - -/* decompression */ -LZO_EXTERN(int) -lzo2a_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo2a_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO2A_999_MEM_COMPRESS ((lzo_uint32) (8 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo2a_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo_asm.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo_asm.h deleted file mode 100644 index 51bea65731..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzo_asm.h +++ /dev/null @@ -1,155 +0,0 @@ -/* lzo_asm.h -- assembler prototypes for the LZO data compression library - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO_ASM_H_INCLUDED -#define __LZO_ASM_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// i386 assembly decompressors -// -// NOTE: -// ==== -// -// - For reasons of speed all fast assembler decompressors (having '_fast' -// in their name) can access (write to) up to 3 bytes past the end of -// the decompressed ("dst") block. Data past the end of the compressed -// ("src") block is never accessed (read from). -// [ technical note: because data is transferred in 32-bit units ] -// -// - Please also see asm/i386/00README.TXT and doc/LZO.FAQ for more -// important details about the assembler versions. -// -************************************************************************/ - -LZO_EXTERN(int) lzo1c_decompress_asm - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1c_decompress_asm_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - -LZO_EXTERN(int) lzo1f_decompress_asm_fast - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1f_decompress_asm_fast_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - -LZO_EXTERN(int) lzo1x_decompress_asm - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1x_decompress_asm_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1x_decompress_asm_fast - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1x_decompress_asm_fast_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - -LZO_EXTERN(int) lzo1y_decompress_asm - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1y_decompress_asm_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1y_decompress_asm_fast - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1y_decompress_asm_fast_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - - -/*********************************************************************** -// checksum and misc functions -************************************************************************/ - -#if 0 - -LZO_EXTERN(lzo_uint32) -lzo_crc32_asm(lzo_uint32 c, const lzo_bytep buf, lzo_uint len, - const lzo_uint32p tab); - -LZO_EXTERN(lzo_uint32) -lzo_crc32_asm_small(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); - -LZO_EXTERN(int) -lzo_cpuid_asm(lzo_uint32p /* lzo_uint32 info[16] */ ); - -LZO_EXTERN(lzo_uint32) -lzo_rdtsc_asm(lzo_uint32p /* lzo_uint32 ticks[2] */ ); - -#endif - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzoconf.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzoconf.h deleted file mode 100644 index 23c6ca93fc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzoconf.h +++ /dev/null @@ -1,446 +0,0 @@ -/* lzoconf.h -- configuration of the LZO data compression library - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZOCONF_H_INCLUDED -#define __LZOCONF_H_INCLUDED 1 - -#define LZO_VERSION 0x2060 -#define LZO_VERSION_STRING "2.06" -#define LZO_VERSION_DATE "Aug 12 2011" - -/* internal Autoconf configuration file - only used when building LZO */ -#if defined(LZO_HAVE_CONFIG_H) -# include -#endif -#include -#include - - -/*********************************************************************** -// LZO requires a conforming -************************************************************************/ - -#if !defined(CHAR_BIT) || (CHAR_BIT != 8) -# error "invalid CHAR_BIT" -#endif -#if !defined(UCHAR_MAX) || !defined(UINT_MAX) || !defined(ULONG_MAX) -# error "check your compiler installation" -#endif -#if (USHRT_MAX < 1) || (UINT_MAX < 1) || (ULONG_MAX < 1) -# error "your limits.h macros are broken" -#endif - -/* get OS and architecture defines */ -#ifndef __LZODEFS_H_INCLUDED -#include "lzodefs.h" -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// some core defines -************************************************************************/ - -#if !defined(LZO_UINT32_C) -# if (UINT_MAX < LZO_0xffffffffL) -# define LZO_UINT32_C(c) c ## UL -# else -# define LZO_UINT32_C(c) ((c) + 0U) -# endif -#endif - -/* memory checkers */ -#if !defined(__LZO_CHECKER) -# if defined(__BOUNDS_CHECKING_ON) -# define __LZO_CHECKER 1 -# elif defined(__CHECKER__) -# define __LZO_CHECKER 1 -# elif defined(__INSURE__) -# define __LZO_CHECKER 1 -# elif defined(__PURIFY__) -# define __LZO_CHECKER 1 -# endif -#endif - - -/*********************************************************************** -// integral and pointer types -************************************************************************/ - -/* lzo_uint should match size_t */ -#if !defined(LZO_UINT_MAX) -# if defined(LZO_ABI_LLP64) /* WIN64 */ -# if defined(LZO_OS_WIN64) - typedef unsigned __int64 lzo_uint; - typedef __int64 lzo_int; -# else - typedef unsigned long long lzo_uint; - typedef long long lzo_int; -# endif -# define LZO_UINT_MAX 0xffffffffffffffffull -# define LZO_INT_MAX 9223372036854775807LL -# define LZO_INT_MIN (-1LL - LZO_INT_MAX) -# elif defined(LZO_ABI_IP32L64) /* MIPS R5900 */ - typedef unsigned int lzo_uint; - typedef int lzo_int; -# define LZO_UINT_MAX UINT_MAX -# define LZO_INT_MAX INT_MAX -# define LZO_INT_MIN INT_MIN -# elif (ULONG_MAX >= LZO_0xffffffffL) - typedef unsigned long lzo_uint; - typedef long lzo_int; -# define LZO_UINT_MAX ULONG_MAX -# define LZO_INT_MAX LONG_MAX -# define LZO_INT_MIN LONG_MIN -# else -# error "lzo_uint" -# endif -#endif - -/* Integral types with 32 bits or more. */ -#if !defined(LZO_UINT32_MAX) -# if (UINT_MAX >= LZO_0xffffffffL) - typedef unsigned int lzo_uint32; - typedef int lzo_int32; -# define LZO_UINT32_MAX UINT_MAX -# define LZO_INT32_MAX INT_MAX -# define LZO_INT32_MIN INT_MIN -# elif (ULONG_MAX >= LZO_0xffffffffL) - typedef unsigned long lzo_uint32; - typedef long lzo_int32; -# define LZO_UINT32_MAX ULONG_MAX -# define LZO_INT32_MAX LONG_MAX -# define LZO_INT32_MIN LONG_MIN -# else -# error "lzo_uint32" -# endif -#endif - -/* Integral types with exactly 64 bits. */ -#if !defined(LZO_UINT64_MAX) -# if (LZO_UINT_MAX >= LZO_0xffffffffL) -# if ((((LZO_UINT_MAX) >> 31) >> 31) == 3) -# define lzo_uint64 lzo_uint -# define lzo_int64 lzo_int -# define LZO_UINT64_MAX LZO_UINT_MAX -# define LZO_INT64_MAX LZO_INT_MAX -# define LZO_INT64_MIN LZO_INT_MIN -# endif -# elif (ULONG_MAX >= LZO_0xffffffffL) -# if ((((ULONG_MAX) >> 31) >> 31) == 3) - typedef unsigned long lzo_uint64; - typedef long lzo_int64; -# define LZO_UINT64_MAX ULONG_MAX -# define LZO_INT64_MAX LONG_MAX -# define LZO_INT64_MIN LONG_MIN -# endif -# endif -#endif - -/* The larger type of lzo_uint and lzo_uint32. */ -#if (LZO_UINT_MAX >= LZO_UINT32_MAX) -# define lzo_xint lzo_uint -#else -# define lzo_xint lzo_uint32 -#endif - -/* Memory model that allows to access memory at offsets of lzo_uint. */ -#if !defined(__LZO_MMODEL) -# if (LZO_UINT_MAX <= UINT_MAX) -# define __LZO_MMODEL /*empty*/ -# elif defined(LZO_HAVE_MM_HUGE_PTR) -# define __LZO_MMODEL_HUGE 1 -# define __LZO_MMODEL __huge -# else -# define __LZO_MMODEL /*empty*/ -# endif -#endif - -/* no typedef here because of const-pointer issues */ -#define lzo_bytep unsigned char __LZO_MMODEL * -#define lzo_charp char __LZO_MMODEL * -#define lzo_voidp void __LZO_MMODEL * -#define lzo_shortp short __LZO_MMODEL * -#define lzo_ushortp unsigned short __LZO_MMODEL * -#define lzo_uint32p lzo_uint32 __LZO_MMODEL * -#define lzo_int32p lzo_int32 __LZO_MMODEL * -#if defined(LZO_UINT64_MAX) -#define lzo_uint64p lzo_uint64 __LZO_MMODEL * -#define lzo_int64p lzo_int64 __LZO_MMODEL * -#endif -#define lzo_uintp lzo_uint __LZO_MMODEL * -#define lzo_intp lzo_int __LZO_MMODEL * -#define lzo_xintp lzo_xint __LZO_MMODEL * -#define lzo_voidpp lzo_voidp __LZO_MMODEL * -#define lzo_bytepp lzo_bytep __LZO_MMODEL * -/* deprecated - use 'lzo_bytep' instead of 'lzo_byte *' */ -#define lzo_byte unsigned char __LZO_MMODEL - -typedef int lzo_bool; - - -/*********************************************************************** -// function types -************************************************************************/ - -/* name mangling */ -#if !defined(__LZO_EXTERN_C) -# ifdef __cplusplus -# define __LZO_EXTERN_C extern "C" -# else -# define __LZO_EXTERN_C extern -# endif -#endif - -/* calling convention */ -#if !defined(__LZO_CDECL) -# define __LZO_CDECL __lzo_cdecl -#endif - -/* DLL export information */ -#if !defined(__LZO_EXPORT1) -# define __LZO_EXPORT1 /*empty*/ -#endif -#if !defined(__LZO_EXPORT2) -# define __LZO_EXPORT2 /*empty*/ -#endif - -/* __cdecl calling convention for public C and assembly functions */ -#if !defined(LZO_PUBLIC) -# define LZO_PUBLIC(_rettype) __LZO_EXPORT1 _rettype __LZO_EXPORT2 __LZO_CDECL -#endif -#if !defined(LZO_EXTERN) -# define LZO_EXTERN(_rettype) __LZO_EXTERN_C LZO_PUBLIC(_rettype) -#endif -#if !defined(LZO_PRIVATE) -# define LZO_PRIVATE(_rettype) static _rettype __LZO_CDECL -#endif - -/* function types */ -typedef int -(__LZO_CDECL *lzo_compress_t) ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -typedef int -(__LZO_CDECL *lzo_decompress_t) ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -typedef int -(__LZO_CDECL *lzo_optimize_t) ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -typedef int -(__LZO_CDECL *lzo_compress_dict_t)(const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -typedef int -(__LZO_CDECL *lzo_decompress_dict_t)(const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - - -/* Callback interface. Currently only the progress indicator ("nprogress") - * is used, but this may change in a future release. */ - -struct lzo_callback_t; -typedef struct lzo_callback_t lzo_callback_t; -#define lzo_callback_p lzo_callback_t __LZO_MMODEL * - -/* malloc & free function types */ -typedef lzo_voidp (__LZO_CDECL *lzo_alloc_func_t) - (lzo_callback_p self, lzo_uint items, lzo_uint size); -typedef void (__LZO_CDECL *lzo_free_func_t) - (lzo_callback_p self, lzo_voidp ptr); - -/* a progress indicator callback function */ -typedef void (__LZO_CDECL *lzo_progress_func_t) - (lzo_callback_p, lzo_uint, lzo_uint, int); - -struct lzo_callback_t -{ - /* custom allocators (set to 0 to disable) */ - lzo_alloc_func_t nalloc; /* [not used right now] */ - lzo_free_func_t nfree; /* [not used right now] */ - - /* a progress indicator callback function (set to 0 to disable) */ - lzo_progress_func_t nprogress; - - /* NOTE: the first parameter "self" of the nalloc/nfree/nprogress - * callbacks points back to this struct, so you are free to store - * some extra info in the following variables. */ - lzo_voidp user1; - lzo_xint user2; - lzo_xint user3; -}; - - -/*********************************************************************** -// error codes and prototypes -************************************************************************/ - -/* Error codes for the compression/decompression functions. Negative - * values are errors, positive values will be used for special but - * normal events. - */ -#define LZO_E_OK 0 -#define LZO_E_ERROR (-1) -#define LZO_E_OUT_OF_MEMORY (-2) /* [lzo_alloc_func_t failure] */ -#define LZO_E_NOT_COMPRESSIBLE (-3) /* [not used right now] */ -#define LZO_E_INPUT_OVERRUN (-4) -#define LZO_E_OUTPUT_OVERRUN (-5) -#define LZO_E_LOOKBEHIND_OVERRUN (-6) -#define LZO_E_EOF_NOT_FOUND (-7) -#define LZO_E_INPUT_NOT_CONSUMED (-8) -#define LZO_E_NOT_YET_IMPLEMENTED (-9) /* [not used right now] */ -#define LZO_E_INVALID_ARGUMENT (-10) - - -#ifndef lzo_sizeof_dict_t -# define lzo_sizeof_dict_t ((unsigned)sizeof(lzo_bytep)) -#endif - -/* lzo_init() should be the first function you call. - * Check the return code ! - * - * lzo_init() is a macro to allow checking that the library and the - * compiler's view of various types are consistent. - */ -#define lzo_init() __lzo_init_v2(LZO_VERSION,(int)sizeof(short),(int)sizeof(int),\ - (int)sizeof(long),(int)sizeof(lzo_uint32),(int)sizeof(lzo_uint),\ - (int)lzo_sizeof_dict_t,(int)sizeof(char *),(int)sizeof(lzo_voidp),\ - (int)sizeof(lzo_callback_t)) -LZO_EXTERN(int) __lzo_init_v2(unsigned,int,int,int,int,int,int,int,int,int); - -/* version functions (useful for shared libraries) */ -LZO_EXTERN(unsigned) lzo_version(void); -LZO_EXTERN(const char *) lzo_version_string(void); -LZO_EXTERN(const char *) lzo_version_date(void); -LZO_EXTERN(const lzo_charp) _lzo_version_string(void); -LZO_EXTERN(const lzo_charp) _lzo_version_date(void); - -/* string functions */ -LZO_EXTERN(int) - lzo_memcmp(const lzo_voidp a, const lzo_voidp b, lzo_uint len); -LZO_EXTERN(lzo_voidp) - lzo_memcpy(lzo_voidp dst, const lzo_voidp src, lzo_uint len); -LZO_EXTERN(lzo_voidp) - lzo_memmove(lzo_voidp dst, const lzo_voidp src, lzo_uint len); -LZO_EXTERN(lzo_voidp) - lzo_memset(lzo_voidp buf, int c, lzo_uint len); - -/* checksum functions */ -LZO_EXTERN(lzo_uint32) - lzo_adler32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); -LZO_EXTERN(lzo_uint32) - lzo_crc32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); -LZO_EXTERN(const lzo_uint32p) - lzo_get_crc32_table(void); - -/* misc. */ -LZO_EXTERN(int) _lzo_config_check(void); -typedef union { lzo_bytep p; lzo_uint u; } __lzo_pu_u; -typedef union { lzo_bytep p; lzo_uint32 u32; } __lzo_pu32_u; -typedef union { void *vp; lzo_bytep bp; lzo_uint u; lzo_uint32 u32; unsigned long l; } lzo_align_t; - -/* align a char pointer on a boundary that is a multiple of 'size' */ -LZO_EXTERN(unsigned) __lzo_align_gap(const lzo_voidp p, lzo_uint size); -#define LZO_PTR_ALIGN_UP(p,size) \ - ((p) + (lzo_uint) __lzo_align_gap((const lzo_voidp)(p),(lzo_uint)(size))) - - -/*********************************************************************** -// deprecated macros - only for backward compatibility with LZO v1.xx -************************************************************************/ - -#if defined(LZO_CFG_COMPAT) - -#define __LZOCONF_H 1 - -#if defined(LZO_ARCH_I086) -# define __LZO_i386 1 -#elif defined(LZO_ARCH_I386) -# define __LZO_i386 1 -#endif - -#if defined(LZO_OS_DOS16) -# define __LZO_DOS 1 -# define __LZO_DOS16 1 -#elif defined(LZO_OS_DOS32) -# define __LZO_DOS 1 -#elif defined(LZO_OS_WIN16) -# define __LZO_WIN 1 -# define __LZO_WIN16 1 -#elif defined(LZO_OS_WIN32) -# define __LZO_WIN 1 -#endif - -#define __LZO_CMODEL /*empty*/ -#define __LZO_DMODEL /*empty*/ -#define __LZO_ENTRY __LZO_CDECL -#define LZO_EXTERN_CDECL LZO_EXTERN -#define LZO_ALIGN LZO_PTR_ALIGN_UP - -#define lzo_compress_asm_t lzo_compress_t -#define lzo_decompress_asm_t lzo_decompress_t - -#endif /* LZO_CFG_COMPAT */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzodefs.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzodefs.h deleted file mode 100644 index 0e40e332a8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzodefs.h +++ /dev/null @@ -1,1852 +0,0 @@ -/* lzodefs.h -- architecture, OS and compiler specific defines - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZODEFS_H_INCLUDED -#define __LZODEFS_H_INCLUDED 1 - -#if defined(__CYGWIN32__) && !defined(__CYGWIN__) -# define __CYGWIN__ __CYGWIN32__ -#endif -#if defined(__IBMCPP__) && !defined(__IBMC__) -# define __IBMC__ __IBMCPP__ -#endif -#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER) -# define __INTEL_COMPILER __ICL -#endif -#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE) -# define _ALL_SOURCE 1 -#endif -#if defined(__mips__) && defined(__R5900__) -# if !defined(__LONG_MAX__) -# define __LONG_MAX__ 9223372036854775807L -# endif -#endif -#if defined(__INTEL_COMPILER) && defined(__linux__) -# pragma warning(disable: 193) -#endif -#if defined(__KEIL__) && defined(__C166__) -# pragma warning disable = 322 -#elif 0 && defined(__C251__) -# pragma warning disable = 322 -#endif -#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__) -# if (_MSC_VER >= 1300) -# pragma warning(disable: 4668) -# endif -#endif -#if 0 && defined(__WATCOMC__) -# if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060) -# pragma warning 203 9 -# endif -#endif -#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__) -# pragma option -h -#endif -#if 0 -#define LZO_0xffffL 0xfffful -#define LZO_0xffffffffL 0xfffffffful -#else -#define LZO_0xffffL 65535ul -#define LZO_0xffffffffL 4294967295ul -#endif -#if (LZO_0xffffL == LZO_0xffffffffL) -# error "your preprocessor is broken 1" -#endif -#if (16ul * 16384ul != 262144ul) -# error "your preprocessor is broken 2" -#endif -#if 0 -#if (32767 >= 4294967295ul) -# error "your preprocessor is broken 3" -#endif -#if (65535u >= 4294967295ul) -# error "your preprocessor is broken 4" -#endif -#endif -#if (UINT_MAX == LZO_0xffffL) -#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__) -# if !defined(MSDOS) -# define MSDOS 1 -# endif -# if !defined(_MSDOS) -# define _MSDOS 1 -# endif -#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX) -# if (__VERSION == 520) && (MB_LEN_MAX == 1) -# if !defined(__AZTEC_C__) -# define __AZTEC_C__ __VERSION -# endif -# if !defined(__DOS__) -# define __DOS__ 1 -# endif -# endif -#endif -#endif -#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL) -# define ptrdiff_t long -# define _PTRDIFF_T_DEFINED 1 -#endif -#if (UINT_MAX == LZO_0xffffL) -# undef __LZO_RENAME_A -# undef __LZO_RENAME_B -# if defined(__AZTEC_C__) && defined(__DOS__) -# define __LZO_RENAME_A 1 -# elif defined(_MSC_VER) && defined(MSDOS) -# if (_MSC_VER < 600) -# define __LZO_RENAME_A 1 -# elif (_MSC_VER < 700) -# define __LZO_RENAME_B 1 -# endif -# elif defined(__TSC__) && defined(__OS2__) -# define __LZO_RENAME_A 1 -# elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410) -# define __LZO_RENAME_A 1 -# elif defined(__PACIFIC__) && defined(DOS) -# if !defined(__far) -# define __far far -# endif -# if !defined(__near) -# define __near near -# endif -# endif -# if defined(__LZO_RENAME_A) -# if !defined(__cdecl) -# define __cdecl cdecl -# endif -# if !defined(__far) -# define __far far -# endif -# if !defined(__huge) -# define __huge huge -# endif -# if !defined(__near) -# define __near near -# endif -# if !defined(__pascal) -# define __pascal pascal -# endif -# if !defined(__huge) -# define __huge huge -# endif -# elif defined(__LZO_RENAME_B) -# if !defined(__cdecl) -# define __cdecl _cdecl -# endif -# if !defined(__far) -# define __far _far -# endif -# if !defined(__huge) -# define __huge _huge -# endif -# if !defined(__near) -# define __near _near -# endif -# if !defined(__pascal) -# define __pascal _pascal -# endif -# elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) -# if !defined(__cdecl) -# define __cdecl cdecl -# endif -# if !defined(__pascal) -# define __pascal pascal -# endif -# endif -# undef __LZO_RENAME_A -# undef __LZO_RENAME_B -#endif -#if (UINT_MAX == LZO_0xffffL) -#if defined(__AZTEC_C__) && defined(__DOS__) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -#elif defined(_MSC_VER) && defined(MSDOS) -# if (_MSC_VER < 600) -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -# endif -# if (_MSC_VER < 700) -# define LZO_BROKEN_INTEGRAL_PROMOTION 1 -# define LZO_BROKEN_SIZEOF 1 -# endif -#elif defined(__PACIFIC__) && defined(DOS) -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -#elif defined(__TURBOC__) && defined(__MSDOS__) -# if (__TURBOC__ < 0x0150) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -# define LZO_BROKEN_INTEGRAL_PROMOTION 1 -# endif -# if (__TURBOC__ < 0x0200) -# define LZO_BROKEN_SIZEOF 1 -# endif -# if (__TURBOC__ < 0x0400) && defined(__cplusplus) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -# endif -#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -# define LZO_BROKEN_SIZEOF 1 -#endif -#endif -#if defined(__WATCOMC__) && (__WATCOMC__ < 900) -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -#endif -#if defined(_CRAY) && defined(_CRAY1) -# define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1 -#endif -#define LZO_PP_STRINGIZE(x) #x -#define LZO_PP_MACRO_EXPAND(x) LZO_PP_STRINGIZE(x) -#define LZO_PP_CONCAT2(a,b) a ## b -#define LZO_PP_CONCAT3(a,b,c) a ## b ## c -#define LZO_PP_CONCAT4(a,b,c,d) a ## b ## c ## d -#define LZO_PP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e -#define LZO_PP_ECONCAT2(a,b) LZO_PP_CONCAT2(a,b) -#define LZO_PP_ECONCAT3(a,b,c) LZO_PP_CONCAT3(a,b,c) -#define LZO_PP_ECONCAT4(a,b,c,d) LZO_PP_CONCAT4(a,b,c,d) -#define LZO_PP_ECONCAT5(a,b,c,d,e) LZO_PP_CONCAT5(a,b,c,d,e) -#if 1 -#define LZO_CPP_STRINGIZE(x) #x -#define LZO_CPP_MACRO_EXPAND(x) LZO_CPP_STRINGIZE(x) -#define LZO_CPP_CONCAT2(a,b) a ## b -#define LZO_CPP_CONCAT3(a,b,c) a ## b ## c -#define LZO_CPP_CONCAT4(a,b,c,d) a ## b ## c ## d -#define LZO_CPP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e -#define LZO_CPP_ECONCAT2(a,b) LZO_CPP_CONCAT2(a,b) -#define LZO_CPP_ECONCAT3(a,b,c) LZO_CPP_CONCAT3(a,b,c) -#define LZO_CPP_ECONCAT4(a,b,c,d) LZO_CPP_CONCAT4(a,b,c,d) -#define LZO_CPP_ECONCAT5(a,b,c,d,e) LZO_CPP_CONCAT5(a,b,c,d,e) -#endif -#define __LZO_MASK_GEN(o,b) (((((o) << ((b)-1)) - (o)) << 1) + (o)) -#if 1 && defined(__cplusplus) -# if !defined(__STDC_CONSTANT_MACROS) -# define __STDC_CONSTANT_MACROS 1 -# endif -# if !defined(__STDC_LIMIT_MACROS) -# define __STDC_LIMIT_MACROS 1 -# endif -#endif -#if defined(__cplusplus) -# define LZO_EXTERN_C extern "C" -#else -# define LZO_EXTERN_C extern -#endif -#if !defined(__LZO_OS_OVERRIDE) -#if (LZO_OS_FREESTANDING) -# define LZO_INFO_OS "freestanding" -#elif (LZO_OS_EMBEDDED) -# define LZO_INFO_OS "embedded" -#elif 1 && defined(__IAR_SYSTEMS_ICC__) -# define LZO_OS_EMBEDDED 1 -# define LZO_INFO_OS "embedded" -#elif defined(__CYGWIN__) && defined(__GNUC__) -# define LZO_OS_CYGWIN 1 -# define LZO_INFO_OS "cygwin" -#elif defined(__EMX__) && defined(__GNUC__) -# define LZO_OS_EMX 1 -# define LZO_INFO_OS "emx" -#elif defined(__BEOS__) -# define LZO_OS_BEOS 1 -# define LZO_INFO_OS "beos" -#elif defined(__Lynx__) -# define LZO_OS_LYNXOS 1 -# define LZO_INFO_OS "lynxos" -#elif defined(__OS400__) -# define LZO_OS_OS400 1 -# define LZO_INFO_OS "os400" -#elif defined(__QNX__) -# define LZO_OS_QNX 1 -# define LZO_INFO_OS "qnx" -#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460) -# define LZO_OS_DOS32 1 -# define LZO_INFO_OS "dos32" -#elif defined(__BORLANDC__) && defined(__DPMI16__) -# define LZO_OS_DOS16 1 -# define LZO_INFO_OS "dos16" -#elif defined(__ZTC__) && defined(DOS386) -# define LZO_OS_DOS32 1 -# define LZO_INFO_OS "dos32" -#elif defined(__OS2__) || defined(__OS2V2__) -# if (UINT_MAX == LZO_0xffffL) -# define LZO_OS_OS216 1 -# define LZO_INFO_OS "os216" -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_OS_OS2 1 -# define LZO_INFO_OS "os2" -# else -# error "check your limits.h header" -# endif -#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64) -# define LZO_OS_WIN64 1 -# define LZO_INFO_OS "win64" -#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -#elif defined(__MWERKS__) && defined(__INTEL__) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows) -# if (UINT_MAX == LZO_0xffffL) -# define LZO_OS_WIN16 1 -# define LZO_INFO_OS "win16" -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -# else -# error "check your limits.h header" -# endif -#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS)) -# if (UINT_MAX == LZO_0xffffL) -# define LZO_OS_DOS16 1 -# define LZO_INFO_OS "dos16" -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_OS_DOS32 1 -# define LZO_INFO_OS "dos32" -# else -# error "check your limits.h header" -# endif -#elif defined(__WATCOMC__) -# if defined(__NT__) && (UINT_MAX == LZO_0xffffL) -# define LZO_OS_DOS16 1 -# define LZO_INFO_OS "dos16" -# elif defined(__NT__) && (__WATCOMC__ < 1100) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -# elif defined(__linux__) || defined(__LINUX__) -# define LZO_OS_POSIX 1 -# define LZO_INFO_OS "posix" -# else -# error "please specify a target using the -bt compiler option" -# endif -#elif defined(__palmos__) -# define LZO_OS_PALMOS 1 -# define LZO_INFO_OS "palmos" -#elif defined(__TOS__) || defined(__atarist__) -# define LZO_OS_TOS 1 -# define LZO_INFO_OS "tos" -#elif defined(macintosh) && !defined(__ppc__) -# define LZO_OS_MACCLASSIC 1 -# define LZO_INFO_OS "macclassic" -#elif defined(__VMS) -# define LZO_OS_VMS 1 -# define LZO_INFO_OS "vms" -#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) -# define LZO_OS_CONSOLE 1 -# define LZO_OS_CONSOLE_PS2 1 -# define LZO_INFO_OS "console" -# define LZO_INFO_OS_CONSOLE "ps2" -#elif (defined(__mips__) && defined(__psp__)) -# define LZO_OS_CONSOLE 1 -# define LZO_OS_CONSOLE_PSP 1 -# define LZO_INFO_OS "console" -# define LZO_INFO_OS_CONSOLE "psp" -#else -# define LZO_OS_POSIX 1 -# define LZO_INFO_OS "posix" -#endif -#if (LZO_OS_POSIX) -# if defined(_AIX) || defined(__AIX__) || defined(__aix__) -# define LZO_OS_POSIX_AIX 1 -# define LZO_INFO_OS_POSIX "aix" -# elif defined(__FreeBSD__) -# define LZO_OS_POSIX_FREEBSD 1 -# define LZO_INFO_OS_POSIX "freebsd" -# elif defined(__hpux__) || defined(__hpux) -# define LZO_OS_POSIX_HPUX 1 -# define LZO_INFO_OS_POSIX "hpux" -# elif defined(__INTERIX) -# define LZO_OS_POSIX_INTERIX 1 -# define LZO_INFO_OS_POSIX "interix" -# elif defined(__IRIX__) || defined(__irix__) -# define LZO_OS_POSIX_IRIX 1 -# define LZO_INFO_OS_POSIX "irix" -# elif defined(__linux__) || defined(__linux) || defined(__LINUX__) -# define LZO_OS_POSIX_LINUX 1 -# define LZO_INFO_OS_POSIX "linux" -# elif defined(__APPLE__) || defined(__MACOS__) -# define LZO_OS_POSIX_MACOSX 1 -# define LZO_INFO_OS_POSIX "macosx" -# elif defined(__minix__) || defined(__minix) -# define LZO_OS_POSIX_MINIX 1 -# define LZO_INFO_OS_POSIX "minix" -# elif defined(__NetBSD__) -# define LZO_OS_POSIX_NETBSD 1 -# define LZO_INFO_OS_POSIX "netbsd" -# elif defined(__OpenBSD__) -# define LZO_OS_POSIX_OPENBSD 1 -# define LZO_INFO_OS_POSIX "openbsd" -# elif defined(__osf__) -# define LZO_OS_POSIX_OSF 1 -# define LZO_INFO_OS_POSIX "osf" -# elif defined(__solaris__) || defined(__sun) -# if defined(__SVR4) || defined(__svr4__) -# define LZO_OS_POSIX_SOLARIS 1 -# define LZO_INFO_OS_POSIX "solaris" -# else -# define LZO_OS_POSIX_SUNOS 1 -# define LZO_INFO_OS_POSIX "sunos" -# endif -# elif defined(__ultrix__) || defined(__ultrix) -# define LZO_OS_POSIX_ULTRIX 1 -# define LZO_INFO_OS_POSIX "ultrix" -# elif defined(_UNICOS) -# define LZO_OS_POSIX_UNICOS 1 -# define LZO_INFO_OS_POSIX "unicos" -# else -# define LZO_OS_POSIX_UNKNOWN 1 -# define LZO_INFO_OS_POSIX "unknown" -# endif -#endif -#endif -#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) -# if (UINT_MAX != LZO_0xffffL) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64) -# if (UINT_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__) -# define LZO_CC_CILLY 1 -# define LZO_INFO_CC "Cilly" -# if defined(__CILLY__) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CILLY__) -# else -# define LZO_INFO_CCVER "unknown" -# endif -#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__) -# define LZO_CC_SDCC 1 -# define LZO_INFO_CC "sdcc" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(SDCC) -#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__) -# define LZO_CC_PATHSCALE (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__) -# define LZO_INFO_CC "Pathscale C" -# define LZO_INFO_CCVER __PATHSCALE__ -#elif defined(__INTEL_COMPILER) -# define LZO_CC_INTELC 1 -# define LZO_INFO_CC "Intel C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__INTEL_COMPILER) -# if defined(_WIN32) || defined(_WIN64) -# define LZO_CC_SYNTAX_MSC 1 -# else -# define LZO_CC_SYNTAX_GNUC 1 -# endif -#elif defined(__POCC__) && defined(_WIN32) -# define LZO_CC_PELLESC 1 -# define LZO_INFO_CC "Pelles C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__POCC__) -#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) -# if defined(__GNUC_PATCHLEVEL__) -# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) -# else -# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) -# endif -# if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__) -# define LZO_CC_CLANG_CLANG (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__) -# else -# define LZO_CC_CLANG_CLANG 0x010000L -# endif -# define LZO_CC_CLANG LZO_CC_CLANG_GNUC -# define LZO_INFO_CC "clang" -# define LZO_INFO_CCVER __VERSION__ -#elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) -# if defined(__GNUC_PATCHLEVEL__) -# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) -# else -# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) -# endif -# define LZO_CC_LLVM LZO_CC_LLVM_GNUC -# define LZO_INFO_CC "llvm-gcc" -# define LZO_INFO_CCVER __VERSION__ -#elif defined(__GNUC__) && defined(__VERSION__) -# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) -# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) -# elif defined(__GNUC_MINOR__) -# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) -# else -# define LZO_CC_GNUC (__GNUC__ * 0x10000L) -# endif -# define LZO_INFO_CC "gcc" -# define LZO_INFO_CCVER __VERSION__ -#elif defined(__ACK__) && defined(_ACK) -# define LZO_CC_ACK 1 -# define LZO_INFO_CC "Amsterdam Compiler Kit C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__AZTEC_C__) -# define LZO_CC_AZTECC 1 -# define LZO_INFO_CC "Aztec C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__AZTEC_C__) -#elif defined(__CODEGEARC__) -# define LZO_CC_CODEGEARC 1 -# define LZO_INFO_CC "CodeGear C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CODEGEARC__) -#elif defined(__BORLANDC__) -# define LZO_CC_BORLANDC 1 -# define LZO_INFO_CC "Borland C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__BORLANDC__) -#elif defined(_CRAYC) && defined(_RELEASE) -# define LZO_CC_CRAYC 1 -# define LZO_INFO_CC "Cray C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_RELEASE) -#elif defined(__DMC__) && defined(__SC__) -# define LZO_CC_DMC 1 -# define LZO_INFO_CC "Digital Mars C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DMC__) -#elif defined(__DECC) -# define LZO_CC_DECC 1 -# define LZO_INFO_CC "DEC C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DECC) -#elif defined(__HIGHC__) -# define LZO_CC_HIGHC 1 -# define LZO_INFO_CC "MetaWare High C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__IAR_SYSTEMS_ICC__) -# define LZO_CC_IARC 1 -# define LZO_INFO_CC "IAR C" -# if defined(__VER__) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__VER__) -# else -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(__IBMC__) -# define LZO_CC_IBMC 1 -# define LZO_INFO_CC "IBM C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__IBMC__) -#elif defined(__KEIL__) && defined(__C166__) -# define LZO_CC_KEILC 1 -# define LZO_INFO_CC "Keil C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__C166__) -#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL) -# define LZO_CC_LCCWIN32 1 -# define LZO_INFO_CC "lcc-win32" -# define LZO_INFO_CCVER "unknown" -#elif defined(__LCC__) -# define LZO_CC_LCC 1 -# define LZO_INFO_CC "lcc" -# if defined(__LCC_VERSION__) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__LCC_VERSION__) -# else -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(_MSC_VER) -# define LZO_CC_MSC 1 -# define LZO_INFO_CC "Microsoft C" -# if defined(_MSC_FULL_VER) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER) -# else -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) -# endif -#elif defined(__MWERKS__) -# define LZO_CC_MWERKS 1 -# define LZO_INFO_CC "Metrowerks C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__MWERKS__) -#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386) -# define LZO_CC_NDPC 1 -# define LZO_INFO_CC "Microway NDP C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__PACIFIC__) -# define LZO_CC_PACIFICC 1 -# define LZO_INFO_CC "Pacific C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PACIFIC__) -#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__)) -# define LZO_CC_PGI 1 -# define LZO_INFO_CC "Portland Group PGI C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__PUREC__) && defined(__TOS__) -# define LZO_CC_PUREC 1 -# define LZO_INFO_CC "Pure C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PUREC__) -#elif defined(__SC__) && defined(__ZTC__) -# define LZO_CC_SYMANTECC 1 -# define LZO_INFO_CC "Symantec C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SC__) -#elif defined(__SUNPRO_C) -# define LZO_INFO_CC "SunPro C" -# if ((__SUNPRO_C)+0 > 0) -# define LZO_CC_SUNPROC __SUNPRO_C -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_C) -# else -# define LZO_CC_SUNPROC 1 -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(__SUNPRO_CC) -# define LZO_INFO_CC "SunPro C" -# if ((__SUNPRO_CC)+0 > 0) -# define LZO_CC_SUNPROC __SUNPRO_CC -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_CC) -# else -# define LZO_CC_SUNPROC 1 -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(__TINYC__) -# define LZO_CC_TINYC 1 -# define LZO_INFO_CC "Tiny C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TINYC__) -#elif defined(__TSC__) -# define LZO_CC_TOPSPEEDC 1 -# define LZO_INFO_CC "TopSpeed C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TSC__) -#elif defined(__WATCOMC__) -# define LZO_CC_WATCOMC 1 -# define LZO_INFO_CC "Watcom C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__WATCOMC__) -#elif defined(__TURBOC__) -# define LZO_CC_TURBOC 1 -# define LZO_INFO_CC "Turbo C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TURBOC__) -#elif defined(__ZTC__) -# define LZO_CC_ZORTECHC 1 -# define LZO_INFO_CC "Zortech C" -# if (__ZTC__ == 0x310) -# define LZO_INFO_CCVER "0x310" -# else -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__ZTC__) -# endif -#else -# define LZO_CC_UNKNOWN 1 -# define LZO_INFO_CC "unknown" -# define LZO_INFO_CCVER "unknown" -#endif -#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER) -# error "LZO_CC_MSC: _MSC_FULL_VER is not defined" -#endif -#if !defined(__LZO_ARCH_OVERRIDE) && !(LZO_ARCH_GENERIC) && defined(_CRAY) -# if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY) -# if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E) -# define LZO_ARCH_CRAY_MPP 1 -# elif defined(_CRAY1) -# define LZO_ARCH_CRAY_PVP 1 -# endif -# endif -#endif -#if !defined(__LZO_ARCH_OVERRIDE) -#if (LZO_ARCH_GENERIC) -# define LZO_INFO_ARCH "generic" -#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) -# define LZO_ARCH_I086 1 -# define LZO_ARCH_IA16 1 -# define LZO_INFO_ARCH "i086" -#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA) -# define LZO_ARCH_ALPHA 1 -# define LZO_INFO_ARCH "alpha" -#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E)) -# define LZO_ARCH_ALPHA 1 -# define LZO_INFO_ARCH "alpha" -#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64) -# define LZO_ARCH_AMD64 1 -# define LZO_INFO_ARCH "amd64" -#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB)) -# define LZO_ARCH_ARM 1 -# define LZO_ARCH_ARM_THUMB 1 -# define LZO_INFO_ARCH "arm_thumb" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__) -# define LZO_ARCH_ARM 1 -# if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1) -# define LZO_ARCH_ARM_THUMB 1 -# define LZO_INFO_ARCH "arm_thumb" -# elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2) -# define LZO_INFO_ARCH "arm" -# else -# define LZO_INFO_ARCH "arm" -# endif -#elif defined(__arm__) || defined(_M_ARM) -# define LZO_ARCH_ARM 1 -# define LZO_INFO_ARCH "arm" -#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__) -# define LZO_ARCH_AVR 1 -# define LZO_INFO_ARCH "avr" -#elif defined(__avr32__) || defined(__AVR32__) -# define LZO_ARCH_AVR32 1 -# define LZO_INFO_ARCH "avr32" -#elif defined(__bfin__) -# define LZO_ARCH_BLACKFIN 1 -# define LZO_INFO_ARCH "blackfin" -#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__) -# define LZO_ARCH_C166 1 -# define LZO_INFO_ARCH "c166" -#elif defined(__cris__) -# define LZO_ARCH_CRIS 1 -# define LZO_INFO_ARCH "cris" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__) -# define LZO_ARCH_EZ80 1 -# define LZO_INFO_ARCH "ez80" -#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) -# define LZO_ARCH_H8300 1 -# define LZO_INFO_ARCH "h8300" -#elif defined(__hppa__) || defined(__hppa) -# define LZO_ARCH_HPPA 1 -# define LZO_INFO_ARCH "hppa" -#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386) -# define LZO_ARCH_I386 1 -# define LZO_ARCH_IA32 1 -# define LZO_INFO_ARCH "i386" -#elif (LZO_CC_ZORTECHC && defined(__I86__)) -# define LZO_ARCH_I386 1 -# define LZO_ARCH_IA32 1 -# define LZO_INFO_ARCH "i386" -#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386) -# define LZO_ARCH_I386 1 -# define LZO_ARCH_IA32 1 -# define LZO_INFO_ARCH "i386" -#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64) -# define LZO_ARCH_IA64 1 -# define LZO_INFO_ARCH "ia64" -#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__) -# define LZO_ARCH_M16C 1 -# define LZO_INFO_ARCH "m16c" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__) -# define LZO_ARCH_M16C 1 -# define LZO_INFO_ARCH "m16c" -#elif defined(__m32r__) -# define LZO_ARCH_M32R 1 -# define LZO_INFO_ARCH "m32r" -#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K) -# define LZO_ARCH_M68K 1 -# define LZO_INFO_ARCH "m68k" -#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__) -# define LZO_ARCH_MCS251 1 -# define LZO_INFO_ARCH "mcs251" -#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__) -# define LZO_ARCH_MCS51 1 -# define LZO_INFO_ARCH "mcs51" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__) -# define LZO_ARCH_MCS51 1 -# define LZO_INFO_ARCH "mcs51" -#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000) -# define LZO_ARCH_MIPS 1 -# define LZO_INFO_ARCH "mips" -#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__) -# define LZO_ARCH_MSP430 1 -# define LZO_INFO_ARCH "msp430" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__) -# define LZO_ARCH_MSP430 1 -# define LZO_INFO_ARCH "msp430" -#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR) -# define LZO_ARCH_POWERPC 1 -# define LZO_INFO_ARCH "powerpc" -#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x) -# define LZO_ARCH_S390 1 -# define LZO_INFO_ARCH "s390" -#elif defined(__sh__) || defined(_M_SH) -# define LZO_ARCH_SH 1 -# define LZO_INFO_ARCH "sh" -#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8) -# define LZO_ARCH_SPARC 1 -# define LZO_INFO_ARCH "sparc" -#elif defined(__SPU__) -# define LZO_ARCH_SPU 1 -# define LZO_INFO_ARCH "spu" -#elif (UINT_MAX == LZO_0xffffL) && defined(__z80) -# define LZO_ARCH_Z80 1 -# define LZO_INFO_ARCH "z80" -#elif (LZO_ARCH_CRAY_PVP) -# if defined(_CRAYSV1) -# define LZO_ARCH_CRAY_SV1 1 -# define LZO_INFO_ARCH "cray_sv1" -# elif (_ADDR64) -# define LZO_ARCH_CRAY_T90 1 -# define LZO_INFO_ARCH "cray_t90" -# elif (_ADDR32) -# define LZO_ARCH_CRAY_YMP 1 -# define LZO_INFO_ARCH "cray_ymp" -# else -# define LZO_ARCH_CRAY_XMP 1 -# define LZO_INFO_ARCH "cray_xmp" -# endif -#else -# define LZO_ARCH_UNKNOWN 1 -# define LZO_INFO_ARCH "unknown" -#endif -#endif -#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2) -# error "FIXME - missing define for CPU architecture" -#endif -#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32) -# error "FIXME - missing WIN32 define for CPU architecture" -#endif -#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64) -# error "FIXME - missing WIN64 define for CPU architecture" -#endif -#if (LZO_OS_OS216 || LZO_OS_WIN16) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#elif 1 && (LZO_OS_DOS16 && defined(BLX286)) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#elif 1 && (LZO_OS_DOS16 && defined(DOSX286)) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__)) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#endif -#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM) -# error "this should not happen" -#endif -#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086) -# error "this should not happen" -#endif -#if (LZO_ARCH_I086) -# if (UINT_MAX != LZO_0xffffL) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if (LZO_ARCH_I386) -# if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__) -# error "this should not happen" -# endif -# if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if !defined(__LZO_MM_OVERRIDE) -#if (LZO_ARCH_I086) -#if (UINT_MAX != LZO_0xffffL) -# error "this should not happen" -#endif -#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM) -# define LZO_MM_TINY 1 -#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM) -# define LZO_MM_HUGE 1 -#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL) -# define LZO_MM_SMALL 1 -#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM) -# define LZO_MM_MEDIUM 1 -#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM) -# define LZO_MM_COMPACT 1 -#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL) -# define LZO_MM_LARGE 1 -#elif (LZO_CC_AZTECC) -# if defined(_LARGE_CODE) && defined(_LARGE_DATA) -# define LZO_MM_LARGE 1 -# elif defined(_LARGE_CODE) -# define LZO_MM_MEDIUM 1 -# elif defined(_LARGE_DATA) -# define LZO_MM_COMPACT 1 -# else -# define LZO_MM_SMALL 1 -# endif -#elif (LZO_CC_ZORTECHC && defined(__VCM__)) -# define LZO_MM_LARGE 1 -#else -# error "unknown memory model" -#endif -#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) -#define LZO_HAVE_MM_HUGE_PTR 1 -#define LZO_HAVE_MM_HUGE_ARRAY 1 -#if (LZO_MM_TINY) -# undef LZO_HAVE_MM_HUGE_ARRAY -#endif -#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC) -# undef LZO_HAVE_MM_HUGE_PTR -# undef LZO_HAVE_MM_HUGE_ARRAY -#elif (LZO_CC_DMC || LZO_CC_SYMANTECC) -# undef LZO_HAVE_MM_HUGE_ARRAY -#elif (LZO_CC_MSC && defined(_QC)) -# undef LZO_HAVE_MM_HUGE_ARRAY -# if (_MSC_VER < 600) -# undef LZO_HAVE_MM_HUGE_PTR -# endif -#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295)) -# undef LZO_HAVE_MM_HUGE_ARRAY -#endif -#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR) -# if (LZO_OS_DOS16) -# error "this should not happen" -# elif (LZO_CC_ZORTECHC) -# else -# error "this should not happen" -# endif -#endif -#ifdef __cplusplus -extern "C" { -#endif -#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200)) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295)) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16) -# define LZO_MM_AHSHIFT 12 -#elif (LZO_CC_WATCOMC) - extern unsigned char _HShift; -# define LZO_MM_AHSHIFT ((unsigned) _HShift) -#else -# error "FIXME - implement LZO_MM_AHSHIFT" -#endif -#ifdef __cplusplus -} -#endif -#endif -#elif (LZO_ARCH_C166) -#if !defined(__MODEL__) -# error "FIXME - C166 __MODEL__" -#elif ((__MODEL__) == 0) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 1) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 2) -# define LZO_MM_LARGE 1 -#elif ((__MODEL__) == 3) -# define LZO_MM_TINY 1 -#elif ((__MODEL__) == 4) -# define LZO_MM_XTINY 1 -#elif ((__MODEL__) == 5) -# define LZO_MM_XSMALL 1 -#else -# error "FIXME - C166 __MODEL__" -#endif -#elif (LZO_ARCH_MCS251) -#if !defined(__MODEL__) -# error "FIXME - MCS251 __MODEL__" -#elif ((__MODEL__) == 0) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 2) -# define LZO_MM_LARGE 1 -#elif ((__MODEL__) == 3) -# define LZO_MM_TINY 1 -#elif ((__MODEL__) == 4) -# define LZO_MM_XTINY 1 -#elif ((__MODEL__) == 5) -# define LZO_MM_XSMALL 1 -#else -# error "FIXME - MCS251 __MODEL__" -#endif -#elif (LZO_ARCH_MCS51) -#if !defined(__MODEL__) -# error "FIXME - MCS51 __MODEL__" -#elif ((__MODEL__) == 1) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 2) -# define LZO_MM_LARGE 1 -#elif ((__MODEL__) == 3) -# define LZO_MM_TINY 1 -#elif ((__MODEL__) == 4) -# define LZO_MM_XTINY 1 -#elif ((__MODEL__) == 5) -# define LZO_MM_XSMALL 1 -#else -# error "FIXME - MCS51 __MODEL__" -#endif -#elif (LZO_ARCH_CRAY_PVP) -# define LZO_MM_PVP 1 -#else -# define LZO_MM_FLAT 1 -#endif -#if (LZO_MM_COMPACT) -# define LZO_INFO_MM "compact" -#elif (LZO_MM_FLAT) -# define LZO_INFO_MM "flat" -#elif (LZO_MM_HUGE) -# define LZO_INFO_MM "huge" -#elif (LZO_MM_LARGE) -# define LZO_INFO_MM "large" -#elif (LZO_MM_MEDIUM) -# define LZO_INFO_MM "medium" -#elif (LZO_MM_PVP) -# define LZO_INFO_MM "pvp" -#elif (LZO_MM_SMALL) -# define LZO_INFO_MM "small" -#elif (LZO_MM_TINY) -# define LZO_INFO_MM "tiny" -#else -# error "unknown memory model" -#endif -#endif -#if defined(SIZEOF_SHORT) -# define LZO_SIZEOF_SHORT (SIZEOF_SHORT) -#endif -#if defined(SIZEOF_INT) -# define LZO_SIZEOF_INT (SIZEOF_INT) -#endif -#if defined(SIZEOF_LONG) -# define LZO_SIZEOF_LONG (SIZEOF_LONG) -#endif -#if defined(SIZEOF_LONG_LONG) -# define LZO_SIZEOF_LONG_LONG (SIZEOF_LONG_LONG) -#endif -#if defined(SIZEOF___INT16) -# define LZO_SIZEOF___INT16 (SIZEOF___INT16) -#endif -#if defined(SIZEOF___INT32) -# define LZO_SIZEOF___INT32 (SIZEOF___INT32) -#endif -#if defined(SIZEOF___INT64) -# define LZO_SIZEOF___INT64 (SIZEOF___INT64) -#endif -#if defined(SIZEOF_VOID_P) -# define LZO_SIZEOF_VOID_P (SIZEOF_VOID_P) -#endif -#if defined(SIZEOF_SIZE_T) -# define LZO_SIZEOF_SIZE_T (SIZEOF_SIZE_T) -#endif -#if defined(SIZEOF_PTRDIFF_T) -# define LZO_SIZEOF_PTRDIFF_T (SIZEOF_PTRDIFF_T) -#endif -#define __LZO_LSR(x,b) (((x)+0ul) >> (b)) -#if !defined(LZO_SIZEOF_SHORT) -# if (LZO_ARCH_CRAY_PVP) -# define LZO_SIZEOF_SHORT 8 -# elif (USHRT_MAX == LZO_0xffffL) -# define LZO_SIZEOF_SHORT 2 -# elif (__LZO_LSR(USHRT_MAX,7) == 1) -# define LZO_SIZEOF_SHORT 1 -# elif (__LZO_LSR(USHRT_MAX,15) == 1) -# define LZO_SIZEOF_SHORT 2 -# elif (__LZO_LSR(USHRT_MAX,31) == 1) -# define LZO_SIZEOF_SHORT 4 -# elif (__LZO_LSR(USHRT_MAX,63) == 1) -# define LZO_SIZEOF_SHORT 8 -# elif (__LZO_LSR(USHRT_MAX,127) == 1) -# define LZO_SIZEOF_SHORT 16 -# else -# error "LZO_SIZEOF_SHORT" -# endif -#endif -#if !defined(LZO_SIZEOF_INT) -# if (LZO_ARCH_CRAY_PVP) -# define LZO_SIZEOF_INT 8 -# elif (UINT_MAX == LZO_0xffffL) -# define LZO_SIZEOF_INT 2 -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_SIZEOF_INT 4 -# elif (__LZO_LSR(UINT_MAX,7) == 1) -# define LZO_SIZEOF_INT 1 -# elif (__LZO_LSR(UINT_MAX,15) == 1) -# define LZO_SIZEOF_INT 2 -# elif (__LZO_LSR(UINT_MAX,31) == 1) -# define LZO_SIZEOF_INT 4 -# elif (__LZO_LSR(UINT_MAX,63) == 1) -# define LZO_SIZEOF_INT 8 -# elif (__LZO_LSR(UINT_MAX,127) == 1) -# define LZO_SIZEOF_INT 16 -# else -# error "LZO_SIZEOF_INT" -# endif -#endif -#if !defined(LZO_SIZEOF_LONG) -# if (ULONG_MAX == LZO_0xffffffffL) -# define LZO_SIZEOF_LONG 4 -# elif (__LZO_LSR(ULONG_MAX,7) == 1) -# define LZO_SIZEOF_LONG 1 -# elif (__LZO_LSR(ULONG_MAX,15) == 1) -# define LZO_SIZEOF_LONG 2 -# elif (__LZO_LSR(ULONG_MAX,31) == 1) -# define LZO_SIZEOF_LONG 4 -# elif (__LZO_LSR(ULONG_MAX,63) == 1) -# define LZO_SIZEOF_LONG 8 -# elif (__LZO_LSR(ULONG_MAX,127) == 1) -# define LZO_SIZEOF_LONG 16 -# else -# error "LZO_SIZEOF_LONG" -# endif -#endif -#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) -#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) -# if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__) -# if (LZO_CC_GNUC >= 0x030300ul) -# if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0) -# define LZO_SIZEOF_LONG_LONG LZO_SIZEOF_LONG -# elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1) -# define LZO_SIZEOF_LONG_LONG 4 -# endif -# endif -# endif -#endif -#endif -#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) -#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) -#if (LZO_ARCH_I086 && LZO_CC_DMC) -#elif (LZO_CC_CILLY) && defined(__GNUC__) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define LZO_SIZEOF_LONG_LONG 8 -#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400)) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_OS_WIN64 || defined(_WIN64)) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_ARCH_I386 && (LZO_CC_DMC)) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700))) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__))) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC)) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC)) -# define LZO_SIZEOF___INT64 8 -#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC)) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520))) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100))) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64)) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2) -#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -# define LZO_SIZEOF_LONG_LONG 8 -#endif -#endif -#endif -#if defined(__cplusplus) && (LZO_CC_GNUC) -# if (LZO_CC_GNUC < 0x020800ul) -# undef LZO_SIZEOF_LONG_LONG -# endif -#endif -#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG) -# undef LZO_SIZEOF_LONG_LONG -#endif -#if !defined(LZO_SIZEOF_VOID_P) -#if (LZO_ARCH_I086) -# define __LZO_WORDSIZE 2 -# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) -# define LZO_SIZEOF_VOID_P 2 -# elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE) -# define LZO_SIZEOF_VOID_P 4 -# else -# error "LZO_MM" -# endif -#elif (LZO_ARCH_AVR || LZO_ARCH_Z80) -# define __LZO_WORDSIZE 1 -# define LZO_SIZEOF_VOID_P 2 -#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430) -# define LZO_SIZEOF_VOID_P 2 -#elif (LZO_ARCH_H8300) -# if defined(__NORMAL_MODE__) -# define __LZO_WORDSIZE 4 -# define LZO_SIZEOF_VOID_P 2 -# elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) -# define __LZO_WORDSIZE 4 -# define LZO_SIZEOF_VOID_P 4 -# else -# define __LZO_WORDSIZE 2 -# define LZO_SIZEOF_VOID_P 2 -# endif -# if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4) -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_INT -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_INT -# endif -#elif (LZO_ARCH_M16C) -# define __LZO_WORDSIZE 2 -# if defined(__m32c_cpu__) || defined(__m32cm_cpu__) -# define LZO_SIZEOF_VOID_P 4 -# else -# define LZO_SIZEOF_VOID_P 2 -# endif -#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) -# define __LZO_WORDSIZE 8 -# define LZO_SIZEOF_VOID_P 4 -#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64) -# define __LZO_WORDSIZE 8 -# define LZO_SIZEOF_VOID_P 8 -#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) -# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG -#elif (LZO_OS_OS400 || defined(__OS400__)) -# define __LZO_WORDSIZE LZO_SIZEOF_LONG -# define LZO_SIZEOF_VOID_P 16 -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG -#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) -# define LZO_SIZEOF_VOID_P 8 -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG -#elif (LZO_ARCH_SPU) -# if 0 -# define __LZO_WORDSIZE 16 -# endif -# define LZO_SIZEOF_VOID_P 4 -#else -# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG -#endif -#endif -#if !defined(LZO_WORDSIZE) -# if defined(__LZO_WORDSIZE) -# define LZO_WORDSIZE __LZO_WORDSIZE -# else -# define LZO_WORDSIZE LZO_SIZEOF_VOID_P -# endif -#endif -#if !defined(LZO_SIZEOF_SIZE_T) -#if (LZO_ARCH_I086 || LZO_ARCH_M16C) -# define LZO_SIZEOF_SIZE_T 2 -#else -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_VOID_P -#endif -#endif -#if !defined(LZO_SIZEOF_PTRDIFF_T) -#if (LZO_ARCH_I086) -# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE) -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_VOID_P -# elif (LZO_MM_COMPACT || LZO_MM_LARGE) -# if (LZO_CC_BORLANDC || LZO_CC_TURBOC) -# define LZO_SIZEOF_PTRDIFF_T 4 -# else -# define LZO_SIZEOF_PTRDIFF_T 2 -# endif -# else -# error "LZO_MM" -# endif -#else -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_SIZE_T -#endif -#endif -#if (LZO_ABI_NEUTRAL_ENDIAN) -# undef LZO_ABI_BIG_ENDIAN -# undef LZO_ABI_LITTLE_ENDIAN -#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN) -#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP) -# define LZO_ABI_BIG_ENDIAN 1 -#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__) -# if (__LITTLE_ENDIAN__ == 1) -# define LZO_ABI_LITTLE_ENDIAN 1 -# else -# define LZO_ABI_BIG_ENDIAN 1 -# endif -#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__) -# define LZO_ABI_LITTLE_ENDIAN 1 -#endif -#endif -#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN) -# error "this should not happen" -#endif -#if (LZO_ABI_BIG_ENDIAN) -# define LZO_INFO_ABI_ENDIAN "be" -#elif (LZO_ABI_LITTLE_ENDIAN) -# define LZO_INFO_ABI_ENDIAN "le" -#elif (LZO_ABI_NEUTRAL_ENDIAN) -# define LZO_INFO_ABI_ENDIAN "neutral" -#endif -#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) -# define LZO_ABI_I8LP16 1 -# define LZO_INFO_ABI_PM "i8lp16" -#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) -# define LZO_ABI_ILP16 1 -# define LZO_INFO_ABI_PM "ilp16" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4) -# define LZO_ABI_ILP32 1 -# define LZO_INFO_ABI_PM "ilp32" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8) -# define LZO_ABI_LLP64 1 -# define LZO_INFO_ABI_PM "llp64" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) -# define LZO_ABI_LP64 1 -# define LZO_INFO_ABI_PM "lp64" -#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) -# define LZO_ABI_ILP64 1 -# define LZO_INFO_ABI_PM "ilp64" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4) -# define LZO_ABI_IP32L64 1 -# define LZO_INFO_ABI_PM "ip32l64" -#endif -#if !defined(__LZO_LIBC_OVERRIDE) -#if (LZO_LIBC_NAKED) -# define LZO_INFO_LIBC "naked" -#elif (LZO_LIBC_FREESTANDING) -# define LZO_INFO_LIBC "freestanding" -#elif (LZO_LIBC_MOSTLY_FREESTANDING) -# define LZO_INFO_LIBC "mfreestanding" -#elif (LZO_LIBC_ISOC90) -# define LZO_INFO_LIBC "isoc90" -#elif (LZO_LIBC_ISOC99) -# define LZO_INFO_LIBC "isoc99" -#elif defined(__dietlibc__) -# define LZO_LIBC_DIETLIBC 1 -# define LZO_INFO_LIBC "dietlibc" -#elif defined(_NEWLIB_VERSION) -# define LZO_LIBC_NEWLIB 1 -# define LZO_INFO_LIBC "newlib" -#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__) -# if defined(__UCLIBC_SUBLEVEL__) -# define LZO_LIBC_UCLIBC (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__) -# else -# define LZO_LIBC_UCLIBC 0x00090bL -# endif -# define LZO_INFO_LIBC "uclibc" -#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__) -# define LZO_LIBC_GLIBC (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100) -# define LZO_INFO_LIBC "glibc" -#elif (LZO_CC_MWERKS) && defined(__MSL__) -# define LZO_LIBC_MSL __MSL__ -# define LZO_INFO_LIBC "msl" -#elif 1 && defined(__IAR_SYSTEMS_ICC__) -# define LZO_LIBC_ISOC90 1 -# define LZO_INFO_LIBC "isoc90" -#else -# define LZO_LIBC_DEFAULT 1 -# define LZO_INFO_LIBC "default" -#endif -#endif -#if !defined(__lzo_gnuc_extension__) -#if (LZO_CC_GNUC >= 0x020800ul) -# define __lzo_gnuc_extension__ __extension__ -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_gnuc_extension__ __extension__ -#else -# define __lzo_gnuc_extension__ /*empty*/ -#endif -#endif -#if !defined(__lzo_ua_volatile) -# define __lzo_ua_volatile volatile -#endif -#if !defined(__lzo_alignof) -#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) -# define __lzo_alignof(e) __alignof__(e) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700)) -# define __lzo_alignof(e) __alignof__(e) -#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) -# define __lzo_alignof(e) __alignof(e) -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_alignof(e) __alignof__(e) -#endif -#endif -#if defined(__lzo_alignof) -# define __lzo_HAVE_alignof 1 -#endif -#if !defined(__lzo_constructor) -#if (LZO_CC_GNUC >= 0x030400ul) -# define __lzo_constructor __attribute__((__constructor__,__used__)) -#elif (LZO_CC_GNUC >= 0x020700ul) -# define __lzo_constructor __attribute__((__constructor__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_constructor __attribute__((__constructor__)) -#endif -#endif -#if defined(__lzo_constructor) -# define __lzo_HAVE_constructor 1 -#endif -#if !defined(__lzo_destructor) -#if (LZO_CC_GNUC >= 0x030400ul) -# define __lzo_destructor __attribute__((__destructor__,__used__)) -#elif (LZO_CC_GNUC >= 0x020700ul) -# define __lzo_destructor __attribute__((__destructor__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_destructor __attribute__((__destructor__)) -#endif -#endif -#if defined(__lzo_destructor) -# define __lzo_HAVE_destructor 1 -#endif -#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor) -# error "this should not happen" -#endif -#if !defined(__lzo_inline) -#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295)) -#elif defined(__cplusplus) -# define __lzo_inline inline -#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550)) -# define __lzo_inline __inline -#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) -# define __lzo_inline __inline__ -#elif (LZO_CC_DMC) -# define __lzo_inline __inline -#elif (LZO_CC_INTELC) -# define __lzo_inline __inline -#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405)) -# define __lzo_inline __inline -#elif (LZO_CC_MSC && (_MSC_VER >= 900)) -# define __lzo_inline __inline -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_inline __inline__ -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -# define __lzo_inline inline -#endif -#endif -#if defined(__lzo_inline) -# define __lzo_HAVE_inline 1 -#else -# define __lzo_inline /*empty*/ -#endif -#if !defined(__lzo_forceinline) -#if (LZO_CC_GNUC >= 0x030200ul) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) -# define __lzo_forceinline __forceinline -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) -# define __lzo_forceinline __forceinline -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#endif -#endif -#if defined(__lzo_forceinline) -# define __lzo_HAVE_forceinline 1 -#else -# define __lzo_forceinline /*empty*/ -#endif -#if !defined(__lzo_noinline) -#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul) -# define __lzo_noinline __attribute__((__noinline__,__used__)) -#elif (LZO_CC_GNUC >= 0x030200ul) -# define __lzo_noinline __attribute__((__noinline__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC) -# define __lzo_noinline __declspec(noinline) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) -# define __lzo_noinline __attribute__((__noinline__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_noinline __attribute__((__noinline__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) -# define __lzo_noinline __declspec(noinline) -#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64)) -# if defined(__cplusplus) -# else -# define __lzo_noinline __declspec(noinline) -# endif -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_noinline __attribute__((__noinline__)) -#endif -#endif -#if defined(__lzo_noinline) -# define __lzo_HAVE_noinline 1 -#else -# define __lzo_noinline /*empty*/ -#endif -#if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline) -# error "this should not happen" -#endif -#if !defined(__lzo_noreturn) -#if (LZO_CC_GNUC >= 0x020700ul) -# define __lzo_noreturn __attribute__((__noreturn__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) -# define __lzo_noreturn __declspec(noreturn) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) -# define __lzo_noreturn __attribute__((__noreturn__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_noreturn __attribute__((__noreturn__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) -# define __lzo_noreturn __declspec(noreturn) -#endif -#endif -#if defined(__lzo_noreturn) -# define __lzo_HAVE_noreturn 1 -#else -# define __lzo_noreturn /*empty*/ -#endif -#if !defined(__lzo_nothrow) -#if (LZO_CC_GNUC >= 0x030300ul) -# define __lzo_nothrow __attribute__((__nothrow__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus) -# define __lzo_nothrow __declspec(nothrow) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC) -# define __lzo_nothrow __attribute__((__nothrow__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_nothrow __attribute__((__nothrow__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus) -# define __lzo_nothrow __declspec(nothrow) -#endif -#endif -#if defined(__lzo_nothrow) -# define __lzo_HAVE_nothrow 1 -#else -# define __lzo_nothrow /*empty*/ -#endif -#if !defined(__lzo_restrict) -#if (LZO_CC_GNUC >= 0x030400ul) -# define __lzo_restrict __restrict__ -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) -# define __lzo_restrict __restrict__ -#elif (LZO_CC_CLANG || LZO_CC_LLVM) -# define __lzo_restrict __restrict__ -#elif (LZO_CC_MSC && (_MSC_VER >= 1400)) -# define __lzo_restrict __restrict -#endif -#endif -#if defined(__lzo_restrict) -# define __lzo_HAVE_restrict 1 -#else -# define __lzo_restrict /*empty*/ -#endif -#if !defined(__lzo_likely) && !defined(__lzo_unlikely) -#if (LZO_CC_GNUC >= 0x030200ul) -# define __lzo_likely(e) (__builtin_expect(!!(e),1)) -# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800)) -# define __lzo_likely(e) (__builtin_expect(!!(e),1)) -# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_likely(e) (__builtin_expect(!!(e),1)) -# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) -#endif -#endif -#if defined(__lzo_likely) -# define __lzo_HAVE_likely 1 -#else -# define __lzo_likely(e) (e) -#endif -#if defined(__lzo_unlikely) -# define __lzo_HAVE_unlikely 1 -#else -# define __lzo_unlikely(e) (e) -#endif -#if !defined(LZO_UNUSED) -# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) -# define LZO_UNUSED(var) ((void) &var) -# elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC) -# define LZO_UNUSED(var) if (&var) ; else -# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define LZO_UNUSED(var) ((void) var) -# elif (LZO_CC_MSC && (_MSC_VER < 900)) -# define LZO_UNUSED(var) if (&var) ; else -# elif (LZO_CC_KEILC) -# define LZO_UNUSED(var) {extern int __lzo_unused[1-2*!(sizeof(var)>0)];} -# elif (LZO_CC_PACIFICC) -# define LZO_UNUSED(var) ((void) sizeof(var)) -# elif (LZO_CC_WATCOMC) && defined(__cplusplus) -# define LZO_UNUSED(var) ((void) var) -# else -# define LZO_UNUSED(var) ((void) &var) -# endif -#endif -#if !defined(LZO_UNUSED_FUNC) -# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) -# define LZO_UNUSED_FUNC(func) ((void) func) -# elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC) -# define LZO_UNUSED_FUNC(func) if (func) ; else -# elif (LZO_CC_CLANG || LZO_CC_LLVM) -# define LZO_UNUSED_FUNC(func) ((void) &func) -# elif (LZO_CC_MSC && (_MSC_VER < 900)) -# define LZO_UNUSED_FUNC(func) if (func) ; else -# elif (LZO_CC_MSC) -# define LZO_UNUSED_FUNC(func) ((void) &func) -# elif (LZO_CC_KEILC || LZO_CC_PELLESC) -# define LZO_UNUSED_FUNC(func) {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];} -# else -# define LZO_UNUSED_FUNC(func) ((void) func) -# endif -#endif -#if !defined(LZO_UNUSED_LABEL) -# if (LZO_CC_WATCOMC) && defined(__cplusplus) -# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l -# elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC) -# define LZO_UNUSED_LABEL(l) if (0) goto l -# else -# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l -# endif -#endif -#if !defined(LZO_DEFINE_UNINITIALIZED_VAR) -# if 0 -# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var -# elif 0 && (LZO_CC_GNUC) -# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = var -# else -# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = init -# endif -#endif -#if !defined(LZO_UNCONST_CAST) -# if 0 && defined(__cplusplus) -# define LZO_UNCONST_CAST(t,e) (const_cast (e)) -# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e)))))) -# else -# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((const void *) (e))))) -# endif -#endif -#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER) -# if (LZO_CC_AZTECC || LZO_CC_ZORTECHC) -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; -# elif (LZO_CC_DMC || LZO_CC_SYMANTECC) -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1u-2*!(e)]; -# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; -# else -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-2*!(e)]; -# endif -#endif -#if !defined(LZO_COMPILE_TIME_ASSERT) -# if (LZO_CC_AZTECC) -# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-!(e)];} -# elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) -# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; -# elif (LZO_CC_MSC && (_MSC_VER < 900)) -# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; -# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) -# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; -# else -# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-2*!(e)];} -# endif -#endif -#if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) -# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC) -# elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) -# define __lzo_cdecl __cdecl -# define __lzo_cdecl_atexit /*empty*/ -# define __lzo_cdecl_main __cdecl -# if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) -# define __lzo_cdecl_qsort __pascal -# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) -# define __lzo_cdecl_qsort _stdcall -# else -# define __lzo_cdecl_qsort __cdecl -# endif -# elif (LZO_CC_WATCOMC) -# define __lzo_cdecl __cdecl -# else -# define __lzo_cdecl __cdecl -# define __lzo_cdecl_atexit __cdecl -# define __lzo_cdecl_main __cdecl -# define __lzo_cdecl_qsort __cdecl -# endif -# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC) -# elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) -# define __lzo_cdecl_sighandler __pascal -# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) -# define __lzo_cdecl_sighandler _stdcall -# elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE) -# define __lzo_cdecl_sighandler __clrcall -# elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700)) -# if defined(_DLL) -# define __lzo_cdecl_sighandler _far _cdecl _loadds -# elif defined(_MT) -# define __lzo_cdecl_sighandler _far _cdecl -# else -# define __lzo_cdecl_sighandler _cdecl -# endif -# else -# define __lzo_cdecl_sighandler __cdecl -# endif -#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC) -# define __lzo_cdecl __cdecl -#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) -# define __lzo_cdecl cdecl -#endif -#if !defined(__lzo_cdecl) -# define __lzo_cdecl /*empty*/ -#endif -#if !defined(__lzo_cdecl_atexit) -# define __lzo_cdecl_atexit /*empty*/ -#endif -#if !defined(__lzo_cdecl_main) -# define __lzo_cdecl_main /*empty*/ -#endif -#if !defined(__lzo_cdecl_qsort) -# define __lzo_cdecl_qsort /*empty*/ -#endif -#if !defined(__lzo_cdecl_sighandler) -# define __lzo_cdecl_sighandler /*empty*/ -#endif -#if !defined(__lzo_cdecl_va) -# define __lzo_cdecl_va __lzo_cdecl -#endif -#if !(LZO_CFG_NO_WINDOWS_H) -#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64) -# if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000)) -# elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) -# elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul))) -# else -# define LZO_HAVE_WINDOWS_H 1 -# endif -#endif -#endif -#if (LZO_ARCH_ALPHA) -# define LZO_OPT_AVOID_UINT_INDEX 1 -# define LZO_OPT_AVOID_SHORT 1 -# define LZO_OPT_AVOID_USHORT 1 -#elif (LZO_ARCH_AMD64) -# define LZO_OPT_AVOID_INT_INDEX 1 -# define LZO_OPT_AVOID_UINT_INDEX 1 -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# define LZO_OPT_UNALIGNED64 1 -#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB) -#elif (LZO_ARCH_ARM) -# define LZO_OPT_AVOID_SHORT 1 -# define LZO_OPT_AVOID_USHORT 1 -#elif (LZO_ARCH_CRIS) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -#elif (LZO_ARCH_I386) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -#elif (LZO_ARCH_IA64) -# define LZO_OPT_AVOID_INT_INDEX 1 -# define LZO_OPT_AVOID_UINT_INDEX 1 -# define LZO_OPT_PREFER_POSTINC 1 -#elif (LZO_ARCH_M68K) -# define LZO_OPT_PREFER_POSTINC 1 -# define LZO_OPT_PREFER_PREDEC 1 -# if defined(__mc68020__) && !defined(__mcoldfire__) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# endif -#elif (LZO_ARCH_MIPS) -# define LZO_OPT_AVOID_UINT_INDEX 1 -#elif (LZO_ARCH_POWERPC) -# define LZO_OPT_PREFER_PREINC 1 -# define LZO_OPT_PREFER_PREDEC 1 -# if (LZO_ABI_BIG_ENDIAN) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# endif -#elif (LZO_ARCH_S390) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# if (LZO_SIZEOF_SIZE_T == 8) -# define LZO_OPT_UNALIGNED64 1 -# endif -#elif (LZO_ARCH_SH) -# define LZO_OPT_PREFER_POSTINC 1 -# define LZO_OPT_PREFER_PREDEC 1 -#endif -#ifndef LZO_CFG_NO_INLINE_ASM -#if (LZO_CC_LLVM) -# define LZO_CFG_NO_INLINE_ASM 1 -#endif -#endif -#ifndef LZO_CFG_NO_UNALIGNED -#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC) -# define LZO_CFG_NO_UNALIGNED 1 -#endif -#endif -#if (LZO_CFG_NO_UNALIGNED) -# undef LZO_OPT_UNALIGNED16 -# undef LZO_OPT_UNALIGNED32 -# undef LZO_OPT_UNALIGNED64 -#endif -#if (LZO_CFG_NO_INLINE_ASM) -#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) -# define LZO_ASM_SYNTAX_MSC 1 -#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) -#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul)) -#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) -# define LZO_ASM_SYNTAX_GNUC 1 -#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) -# define LZO_ASM_SYNTAX_GNUC 1 -#endif -#if (LZO_ASM_SYNTAX_GNUC) -#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul)) -# define __LZO_ASM_CLOBBER "ax" -#elif (LZO_CC_INTELC) -# define __LZO_ASM_CLOBBER "memory" -#else -# define __LZO_ASM_CLOBBER "cc", "memory" -#endif -#endif -#if defined(__LZO_INFOSTR_MM) -#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM)) -# define __LZO_INFOSTR_MM "" -#elif defined(LZO_INFO_MM) -# define __LZO_INFOSTR_MM "." LZO_INFO_MM -#else -# define __LZO_INFOSTR_MM "" -#endif -#if defined(__LZO_INFOSTR_PM) -#elif defined(LZO_INFO_ABI_PM) -# define __LZO_INFOSTR_PM "." LZO_INFO_ABI_PM -#else -# define __LZO_INFOSTR_PM "" -#endif -#if defined(__LZO_INFOSTR_ENDIAN) -#elif defined(LZO_INFO_ABI_ENDIAN) -# define __LZO_INFOSTR_ENDIAN "." LZO_INFO_ABI_ENDIAN -#else -# define __LZO_INFOSTR_ENDIAN "" -#endif -#if defined(__LZO_INFOSTR_OSNAME) -#elif defined(LZO_INFO_OS_CONSOLE) -# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_CONSOLE -#elif defined(LZO_INFO_OS_POSIX) -# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_POSIX -#else -# define __LZO_INFOSTR_OSNAME LZO_INFO_OS -#endif -#if defined(__LZO_INFOSTR_LIBC) -#elif defined(LZO_INFO_LIBC) -# define __LZO_INFOSTR_LIBC "." LZO_INFO_LIBC -#else -# define __LZO_INFOSTR_LIBC "" -#endif -#if defined(__LZO_INFOSTR_CCVER) -#elif defined(LZO_INFO_CCVER) -# define __LZO_INFOSTR_CCVER " " LZO_INFO_CCVER -#else -# define __LZO_INFOSTR_CCVER "" -#endif -#define LZO_INFO_STRING \ - LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \ - " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER - -#endif /* already included */ - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzoutil.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzoutil.h deleted file mode 100644 index eb741ce2dd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/lzo/lzoutil.h +++ /dev/null @@ -1,76 +0,0 @@ -/* lzoutil.h -- utilitiy functions for use by applications [DEPRECATED] - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZOUTIL_H_INCLUDED -#define __LZOUTIL_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// LZO-v1 deprecated macros (which were used in the old example programs) -// DO NOT USE -************************************************************************/ - -#define lzo_alloc(a,b) (malloc((a)*(b))) -#define lzo_malloc(a) (malloc(a)) -#define lzo_free(a) (free(a)) - -#define lzo_fread(f,b,s) (fread(b,1,s,f)) -#define lzo_fwrite(f,b,s) (fwrite(b,1,s,f)) - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/config_types.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/config_types.h deleted file mode 100644 index 00962788e1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/config_types.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __CONFIG_TYPES_H__ -#define __CONFIG_TYPES_H__ - -/* these are filled in by configure */ -#define INCLUDE_INTTYPES_H 1 -#define INCLUDE_STDINT_H 1 -#define INCLUDE_SYS_TYPES_H 1 - -#if INCLUDE_INTTYPES_H -# include -#endif -#if INCLUDE_STDINT_H -# include -#endif -#if INCLUDE_SYS_TYPES_H -# include -#endif - -typedef short ogg_int16_t; -typedef unsigned short ogg_uint16_t; -typedef int ogg_int32_t; -typedef unsigned int ogg_uint32_t; -typedef long ogg_int64_t; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/ogg.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/ogg.h deleted file mode 100644 index cea4ebed75..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/ogg.h +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: toplevel libogg include - last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $ - - ********************************************************************/ -#ifndef _OGG_H -#define _OGG_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef struct { - void *iov_base; - size_t iov_len; -} ogg_iovec_t; - -typedef struct { - long endbyte; - int endbit; - - unsigned char *buffer; - unsigned char *ptr; - long storage; -} oggpack_buffer; - -/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/ - -typedef struct { - unsigned char *header; - long header_len; - unsigned char *body; - long body_len; -} ogg_page; - -/* ogg_stream_state contains the current encode/decode state of a logical - Ogg bitstream **********************************************************/ - -typedef struct { - unsigned char *body_data; /* bytes from packet bodies */ - long body_storage; /* storage elements allocated */ - long body_fill; /* elements stored; fill mark */ - long body_returned; /* elements of fill returned */ - - - int *lacing_vals; /* The values that will go to the segment table */ - ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact - this way, but it is simple coupled to the - lacing fifo */ - long lacing_storage; - long lacing_fill; - long lacing_packet; - long lacing_returned; - - unsigned char header[282]; /* working space for header encode */ - int header_fill; - - int e_o_s; /* set when we have buffered the last packet in the - logical bitstream */ - int b_o_s; /* set after we've written the initial page - of a logical bitstream */ - long serialno; - long pageno; - ogg_int64_t packetno; /* sequence number for decode; the framing - knows where there's a hole in the data, - but we need coupling so that the codec - (which is in a separate abstraction - layer) also knows about the gap */ - ogg_int64_t granulepos; - -} ogg_stream_state; - -/* ogg_packet is used to encapsulate the data and metadata belonging - to a single raw Ogg/Vorbis packet *************************************/ - -typedef struct { - unsigned char *packet; - long bytes; - long b_o_s; - long e_o_s; - - ogg_int64_t granulepos; - - ogg_int64_t packetno; /* sequence number for decode; the framing - knows where there's a hole in the data, - but we need coupling so that the codec - (which is in a separate abstraction - layer) also knows about the gap */ -} ogg_packet; - -typedef struct { - unsigned char *data; - int storage; - int fill; - int returned; - - int unsynced; - int headerbytes; - int bodybytes; -} ogg_sync_state; - -/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ - -extern void oggpack_writeinit(oggpack_buffer *b); -extern int oggpack_writecheck(oggpack_buffer *b); -extern void oggpack_writetrunc(oggpack_buffer *b,long bits); -extern void oggpack_writealign(oggpack_buffer *b); -extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); -extern void oggpack_reset(oggpack_buffer *b); -extern void oggpack_writeclear(oggpack_buffer *b); -extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); -extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); -extern long oggpack_look(oggpack_buffer *b,int bits); -extern long oggpack_look1(oggpack_buffer *b); -extern void oggpack_adv(oggpack_buffer *b,int bits); -extern void oggpack_adv1(oggpack_buffer *b); -extern long oggpack_read(oggpack_buffer *b,int bits); -extern long oggpack_read1(oggpack_buffer *b); -extern long oggpack_bytes(oggpack_buffer *b); -extern long oggpack_bits(oggpack_buffer *b); -extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); - -extern void oggpackB_writeinit(oggpack_buffer *b); -extern int oggpackB_writecheck(oggpack_buffer *b); -extern void oggpackB_writetrunc(oggpack_buffer *b,long bits); -extern void oggpackB_writealign(oggpack_buffer *b); -extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits); -extern void oggpackB_reset(oggpack_buffer *b); -extern void oggpackB_writeclear(oggpack_buffer *b); -extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); -extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits); -extern long oggpackB_look(oggpack_buffer *b,int bits); -extern long oggpackB_look1(oggpack_buffer *b); -extern void oggpackB_adv(oggpack_buffer *b,int bits); -extern void oggpackB_adv1(oggpack_buffer *b); -extern long oggpackB_read(oggpack_buffer *b,int bits); -extern long oggpackB_read1(oggpack_buffer *b); -extern long oggpackB_bytes(oggpack_buffer *b); -extern long oggpackB_bits(oggpack_buffer *b); -extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b); - -/* Ogg BITSTREAM PRIMITIVES: encoding **************************/ - -extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); -extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, - int count, long e_o_s, ogg_int64_t granulepos); -extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill); -extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill); - -/* Ogg BITSTREAM PRIMITIVES: decoding **************************/ - -extern int ogg_sync_init(ogg_sync_state *oy); -extern int ogg_sync_clear(ogg_sync_state *oy); -extern int ogg_sync_reset(ogg_sync_state *oy); -extern int ogg_sync_destroy(ogg_sync_state *oy); -extern int ogg_sync_check(ogg_sync_state *oy); - -extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); -extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); -extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); -extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); -extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); -extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); - -/* Ogg BITSTREAM PRIMITIVES: general ***************************/ - -extern int ogg_stream_init(ogg_stream_state *os,int serialno); -extern int ogg_stream_clear(ogg_stream_state *os); -extern int ogg_stream_reset(ogg_stream_state *os); -extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); -extern int ogg_stream_destroy(ogg_stream_state *os); -extern int ogg_stream_check(ogg_stream_state *os); -extern int ogg_stream_eos(ogg_stream_state *os); - -extern void ogg_page_checksum_set(ogg_page *og); - -extern int ogg_page_version(const ogg_page *og); -extern int ogg_page_continued(const ogg_page *og); -extern int ogg_page_bos(const ogg_page *og); -extern int ogg_page_eos(const ogg_page *og); -extern ogg_int64_t ogg_page_granulepos(const ogg_page *og); -extern int ogg_page_serialno(const ogg_page *og); -extern long ogg_page_pageno(const ogg_page *og); -extern int ogg_page_packets(const ogg_page *og); - -extern void ogg_packet_clear(ogg_packet *op); - - -#ifdef __cplusplus -} -#endif - -#endif /* _OGG_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/os_types.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/os_types.h deleted file mode 100644 index d6691b703d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/ogg/os_types.h +++ /dev/null @@ -1,147 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os_types.h 17712 2010-12-03 17:10:02Z xiphmont $ - - ********************************************************************/ -#ifndef _OS_TYPES_H -#define _OS_TYPES_H - -/* make it easy on the folks that want to compile the libs with a - different malloc than stdlib */ -#define _ogg_malloc malloc -#define _ogg_calloc calloc -#define _ogg_realloc realloc -#define _ogg_free free - -#if defined(_WIN32) - -# if defined(__CYGWIN__) -# include - typedef int16_t ogg_int16_t; - typedef uint16_t ogg_uint16_t; - typedef int32_t ogg_int32_t; - typedef uint32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - typedef uint64_t ogg_uint64_t; -# elif defined(__MINGW32__) -# include - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - typedef unsigned long long ogg_uint64_t; -# elif defined(__MWERKS__) - typedef long long ogg_int64_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; -# else - /* MSVC/Borland */ - typedef __int64 ogg_int64_t; - typedef __int32 ogg_int32_t; - typedef unsigned __int32 ogg_uint32_t; - typedef __int16 ogg_int16_t; - typedef unsigned __int16 ogg_uint16_t; -# endif - -#elif defined(__MACOS__) - -# include - typedef SInt16 ogg_int16_t; - typedef UInt16 ogg_uint16_t; - typedef SInt32 ogg_int32_t; - typedef UInt32 ogg_uint32_t; - typedef SInt64 ogg_int64_t; - -#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ - -# include - typedef int16_t ogg_int16_t; - typedef uint16_t ogg_uint16_t; - typedef int32_t ogg_int32_t; - typedef uint32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - -#elif defined(__HAIKU__) - - /* Haiku */ -# include - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - -#elif defined(__BEOS__) - - /* Be */ -# include - typedef int16_t ogg_int16_t; - typedef uint16_t ogg_uint16_t; - typedef int32_t ogg_int32_t; - typedef uint32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - -#elif defined (__EMX__) - - /* OS/2 GCC */ - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - -#elif defined (DJGPP) - - /* DJGPP */ - typedef short ogg_int16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - -#elif defined(R5900) - - /* PS2 EE */ - typedef long ogg_int64_t; - typedef int ogg_int32_t; - typedef unsigned ogg_uint32_t; - typedef short ogg_int16_t; - -#elif defined(__SYMBIAN32__) - - /* Symbian GCC */ - typedef signed short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef signed int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long int ogg_int64_t; - -#elif defined(__TMS320C6X__) - - /* TI C64x compiler */ - typedef signed short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef signed int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long int ogg_int64_t; - -#else - -# include - -#endif - -#endif /* _OS_TYPES_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/BinaryDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/BinaryDict.hpp deleted file mode 100644 index 9d900cedcd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/BinaryDict.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "SerializableDict.hpp" - -namespace opencc { -/** -* Binary dictionary for faster deserialization -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT BinaryDict : public SerializableDict { -public: - BinaryDict(const LexiconPtr& _lexicon) : lexicon(_lexicon) {} - - virtual ~BinaryDict() {} - - virtual void SerializeToFile(FILE* fp) const; - - static BinaryDictPtr NewFromFile(FILE* fp); - - const LexiconPtr& GetLexicon() const { return lexicon; } - - size_t KeyMaxLength() const; - -private: - LexiconPtr lexicon; - string keyBuffer; - string valueBuffer; - - void ConstructBuffer(string& keyBuffer, vector& keyOffset, - size_t& keyTotalLength, string& valueBuffer, - vector& valueOffset, - size_t& valueTotalLength) const; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Common.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Common.hpp deleted file mode 100644 index 9d8d69a0c1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Common.hpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -// Microsoft Visual C++ specific -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma warning(disable : 4251 4266 4350 4503 4512 4514 4710 4820) -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "Exception.hpp" -#include "Export.hpp" -#include "Optional.hpp" - -using std::list; -using std::string; -using std::vector; - -// Forward decalarations and alias -namespace opencc { -class BinaryDict; -class Config; -class Conversion; -class ConversionChain; -class Converter; -class DartsDict; -class Dict; -class DictEntry; -class DictGroup; -class Lexicon; -class MultiValueDictEntry; -class NoValueDictEntry; -class Segmentation; -class Segments; -class SerializableDict; -class SingleValueDictEntry; -class TextDict; -typedef std::shared_ptr BinaryDictPtr; -typedef std::shared_ptr ConversionPtr; -typedef std::shared_ptr ConversionChainPtr; -typedef std::shared_ptr ConverterPtr; -typedef std::shared_ptr DartsDictPtr; -typedef std::shared_ptr DictPtr; -typedef std::shared_ptr DictGroupPtr; -typedef std::shared_ptr LexiconPtr; -typedef std::shared_ptr SegmentationPtr; -typedef std::shared_ptr SegmentsPtr; -typedef std::shared_ptr SerializableDictPtr; -typedef std::shared_ptr TextDictPtr; -} - -#ifndef PKGDATADIR -const string PACKAGE_DATA_DIRECTORY = ""; -#else // ifndef PKGDATADIR -const string PACKAGE_DATA_DIRECTORY = PKGDATADIR "/"; -#endif // ifndef PKGDATADIR - -#ifndef VERSION -#define VERSION "1.0.*" -#endif // ifndef VERSION diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Config.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Config.hpp deleted file mode 100644 index a71a00d0ed..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Config.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" - -namespace opencc { -/** -* Configuration loader -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Config { -public: - Config(); - - virtual ~Config(); - - ConverterPtr NewFromString(const string& json, const string& configDirectory); - - ConverterPtr NewFromFile(const string& fileName); - -private: - void* internal; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Conversion.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Conversion.hpp deleted file mode 100644 index 6bfc455fcc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Conversion.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Segmentation.hpp" - -namespace opencc { -/** -* Conversion interface -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Conversion { -public: - Conversion(DictPtr _dict) : dict(_dict) {} - - // Convert single phrase - string Convert(const string& phrase) const; - - // Convert single phrase - string Convert(const char* phrase) const; - - // Convert segmented text - SegmentsPtr Convert(const SegmentsPtr& input) const; - - const DictPtr GetDict() const { return dict; } - -private: - const DictPtr dict; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/ConversionChain.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/ConversionChain.hpp deleted file mode 100644 index db9e62513f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/ConversionChain.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Conversion.hpp" - -namespace opencc { -/** -* Chain of conversions -* Consists of a list of conversions. Converts input in sequence. -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT ConversionChain { -public: - ConversionChain(const list _conversions); - - SegmentsPtr Convert(const SegmentsPtr& input) const; - - const list GetConversions() const { return conversions; } - -private: - const list conversions; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Converter.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Converter.hpp deleted file mode 100644 index 65cdda2a7f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Converter.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Segmentation.hpp" - -namespace opencc { -/** -* Controller of segmentation and conversion -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Converter { -public: - Converter(const string& _name, SegmentationPtr _segmentation, - ConversionChainPtr _conversionChain) - : name(_name), segmentation(_segmentation), - conversionChain(_conversionChain) {} - - string Convert(const string& text) const; - - size_t Convert(const char* input, char* output) const; - - const SegmentationPtr GetSegmentation() const { return segmentation; } - - const ConversionChainPtr GetConversionChain() const { - return conversionChain; - } - -private: - const string name; - const SegmentationPtr segmentation; - const ConversionChainPtr conversionChain; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DartsDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DartsDict.hpp deleted file mode 100644 index 609486db94..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DartsDict.hpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "SerializableDict.hpp" - -namespace opencc { -/** -* Darts dictionary -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT DartsDict : public Dict, public SerializableDict { -public: - virtual ~DartsDict(); - - virtual size_t KeyMaxLength() const; - - virtual Optional Match(const char* word) const; - - virtual Optional MatchPrefix(const char* word) const; - - virtual LexiconPtr GetLexicon() const; - - virtual void SerializeToFile(FILE* fp) const; - - /** - * Constructs a DartsDict from another dictionary. - */ - static DartsDictPtr NewFromDict(const Dict& thatDict); - - static DartsDictPtr NewFromFile(FILE* fp); - -private: - DartsDict(); - - size_t maxLength; - LexiconPtr lexicon; - - class DartsInternal; - DartsInternal* internal; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Dict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Dict.hpp deleted file mode 100644 index f923f378bc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Dict.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "DictEntry.hpp" - -namespace opencc { -/** -* Abstract class of dictionary -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Dict { -public: - /** - * Matches a word exactly and returns the DictEntry or Optional::Null(). - */ - virtual Optional Match(const char* word) const = 0; - - /** - * Matches a word exactly and returns the DictEntry or Optional::Null(). - */ - Optional Match(const string& word) const { - return Match(word.c_str()); - } - - /** - * Matches the longest matched prefix of a word. - * For example given a dictionary having "a", "an", "b", "ba", "ban", "bana", - * the longest prefix of "banana" matched is "bana". - */ - virtual Optional MatchPrefix(const char* word) const; - - /** - * Matches the longest matched prefix of a word. - */ - Optional MatchPrefix(const string& word) const { - return MatchPrefix(word.c_str()); - } - - /** - * Returns all matched prefixes of a word, sorted by the length (desc). - * For example given a dictionary having "a", "an", "b", "ba", "ban", "bana", - * all the matched prefixes of "banana" are "bana", "ban", "ba", "b". - */ - virtual vector MatchAllPrefixes(const char* word) const; - - /** - * Returns all matched prefixes of a word, sorted by the length (desc). - */ - vector MatchAllPrefixes(const string& word) const { - return MatchAllPrefixes(word.c_str()); - } - - /** - * Returns the length of the longest key in the dictionary. - */ - virtual size_t KeyMaxLength() const = 0; - - /** - * Returns all entries in the dictionary. - */ - virtual LexiconPtr GetLexicon() const = 0; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DictEntry.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DictEntry.hpp deleted file mode 100644 index ecef4891dd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DictEntry.hpp +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "UTF8Util.hpp" -#include "Segments.hpp" - -namespace opencc { -/** -* Key-values pair entry -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT DictEntry { -public: - virtual ~DictEntry() {} - - virtual const char* Key() const = 0; - - virtual vector Values() const = 0; - - virtual const char* GetDefault() const = 0; - - virtual size_t NumValues() const = 0; - - virtual string ToString() const = 0; - - size_t KeyLength() const { return strlen(Key()); } - - bool operator<(const DictEntry& that) const { - return strcmp(Key(), that.Key()) < 0; - } - - bool operator==(const DictEntry& that) const { - return strcmp(Key(), that.Key()) == 0; - } - - static bool PtrLessThan(const DictEntry* a, const DictEntry* b) { - return *a < *b; - } -}; - -class OPENCC_EXPORT NoValueDictEntry : public DictEntry { -public: - NoValueDictEntry(const string& _key) : key(_key) {} - - virtual ~NoValueDictEntry() {} - - virtual const char* Key() const { return key.c_str(); } - - virtual vector Values() const { return vector(); } - - virtual const char* GetDefault() const { return Key(); } - - virtual size_t NumValues() const { return 0; } - - virtual string ToString() const { return key; } - -private: - string key; -}; - -class OPENCC_EXPORT SingleValueDictEntry : public DictEntry { -public: - virtual const char* Value() const = 0; - - virtual vector Values() const { - return vector{Value()}; - } - - virtual const char* GetDefault() const { return Value(); } - - virtual size_t NumValues() const { return 1; } - - virtual string ToString() const { return string(Key()) + "\t" + Value(); } -}; - -class OPENCC_EXPORT StrSingleValueDictEntry : public SingleValueDictEntry { -public: - StrSingleValueDictEntry(const string& _key, const string& _value) - : key(_key), value(_value) {} - - virtual ~StrSingleValueDictEntry() {} - - virtual const char* Key() const { return key.c_str(); } - - virtual const char* Value() const { return value.c_str(); } - -private: - string key; - string value; -}; - -class OPENCC_EXPORT MultiValueDictEntry : public DictEntry { -public: - virtual const char* GetDefault() const { - if (NumValues() > 0) { - return Values().at(0); - } else { - return Key(); - } - } - - virtual string ToString() const; -}; - -class OPENCC_EXPORT StrMultiValueDictEntry : public MultiValueDictEntry { -public: - StrMultiValueDictEntry(const string& _key, const vector& _values) - : key(_key), values(_values) {} - - StrMultiValueDictEntry(const string& _key, const vector& _values) - : key(_key) { - values.reserve(_values.size()); - for (const char* str : _values) { - values.push_back(str); - } - } - - virtual ~StrMultiValueDictEntry() {} - - virtual const char* Key() const { return key.c_str(); } - - size_t NumValues() const { return values.size(); } - - vector Values() const { - vector values; - for (const string& value : this->values) { - values.push_back(value.c_str()); - } - return values; - } - -private: - string key; - vector values; -}; - -class OPENCC_EXPORT PtrDictEntry : public MultiValueDictEntry { -public: - PtrDictEntry(const char* _key, const vector& _values) - : key(_key), values(_values) {} - - virtual ~PtrDictEntry() {} - - virtual const char* Key() const { return key; } - - size_t NumValues() const { return values.size(); } - - vector Values() const { return values; } - -private: - const char* key; - vector values; -}; - -class OPENCC_EXPORT DictEntryFactory { -public: - static DictEntry* New(const string& key) { return new NoValueDictEntry(key); } - - static DictEntry* New(const string& key, const string& value) { - return new StrSingleValueDictEntry(key, value); - } - - static DictEntry* New(const string& key, const vector& values) { - return new StrMultiValueDictEntry(key, values); - } - - static DictEntry* New(const DictEntry* entry) { - if (entry->NumValues() == 0) { - return new NoValueDictEntry(entry->Key()); - } else if (entry->NumValues() == 1) { - const auto svEntry = static_cast(entry); - return new StrSingleValueDictEntry(svEntry->Key(), svEntry->Value()); - } else { - const auto mvEntry = static_cast(entry); - return new StrMultiValueDictEntry(mvEntry->Key(), mvEntry->Values()); - } - } -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DictGroup.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DictGroup.hpp deleted file mode 100644 index 8098addd63..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/DictGroup.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Dict.hpp" - -namespace opencc { -/** -* Group of dictionaries -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT DictGroup : public Dict { -public: - DictGroup(const list& dicts); - - static DictGroupPtr NewFromDict(const Dict& dict); - - virtual ~DictGroup(); - - virtual size_t KeyMaxLength() const; - - virtual Optional Match(const char* word) const; - - virtual Optional MatchPrefix(const char* word) const; - - virtual vector MatchAllPrefixes(const char* word) const; - - virtual LexiconPtr GetLexicon() const; - - const list GetDicts() const { return dicts; } - -private: - const size_t keyMaxLength; - const list dicts; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Exception.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Exception.hpp deleted file mode 100644 index a1134e850a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Exception.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include -#include -#include - -#include "Export.hpp" - -#ifdef _MSC_VER - -// Until Visual Studio 2013 (12.0), C++ 11 "noexcept" qualifier is not supported -#define noexcept -#endif // ifdef _MSC_VER - -namespace opencc { - -class OPENCC_EXPORT Exception : public std::exception { -public: - Exception() {} - - virtual ~Exception() throw() {} - - Exception(const std::string& _message) : message(_message) {} - - virtual const char* what() const noexcept { return message.c_str(); } - -protected: - std::string message; -}; - -class OPENCC_EXPORT FileNotFound : public Exception { -public: - FileNotFound(const std::string& fileName) - : Exception(fileName + " not found or not accessible.") {} -}; - -class OPENCC_EXPORT FileNotWritable : public Exception { -public: - FileNotWritable(const std::string& fileName) - : Exception(fileName + " not writable.") {} -}; - -class OPENCC_EXPORT InvalidFormat : public Exception { -public: - InvalidFormat(const std::string& message) - : Exception("Invalid format: " + message) {} -}; - -class OPENCC_EXPORT InvalidTextDictionary : public InvalidFormat { -public: - InvalidTextDictionary(const std::string& _message, size_t lineNum) - : InvalidFormat("") { - std::ostringstream buffer; - buffer << "Invalid text dictionary at line " << lineNum << ": " << _message; - message = buffer.str(); - } -}; - -class OPENCC_EXPORT InvalidUTF8 : public Exception { -public: - InvalidUTF8(const std::string& _message) - : Exception("Invalid UTF8: " + _message) {} -}; - -class OPENCC_EXPORT ShouldNotBeHere : public Exception { -public: - ShouldNotBeHere() : Exception("ShouldNotBeHere! This must be a bug.") {} -}; - -} // namespace opencc diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Export.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Export.hpp deleted file mode 100644 index e511b8a477..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Export.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#if defined(Opencc_BUILT_AS_STATIC) || !defined(_WIN32) -#define OPENCC_EXPORT -#define OPENCC_NO_EXPORT -#else // if defined(Opencc_BUILT_AS_STATIC) || !defined(_WIN32) -#ifndef OPENCC_EXPORT -#ifdef libopencc_EXPORTS - -/* We are building this library */ -#define OPENCC_EXPORT __declspec(dllexport) -#else // ifdef libopencc_EXPORTS - -/* We are using this library */ -#define OPENCC_EXPORT __declspec(dllimport) -#endif // ifdef libopencc_EXPORTS -#endif // ifndef OPENCC_EXPORT - -#ifndef OPENCC_NO_EXPORT -#define OPENCC_NO_EXPORT -#endif // ifndef OPENCC_NO_EXPORT -#endif // if defined(Opencc_BUILT_AS_STATIC) || !defined(_WIN32) diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Lexicon.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Lexicon.hpp deleted file mode 100644 index 1bb6ab6ae6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Lexicon.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "DictEntry.hpp" - -namespace opencc { -/** -* Storage of all entries -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Lexicon { -public: - Lexicon() {} - - ~Lexicon() { - for (DictEntry* entry : entries) { - delete entry; - } - } - - void Add(DictEntry* entry) { entries.push_back(entry); } - - void Sort() { - std::sort(entries.begin(), entries.end(), DictEntry::PtrLessThan); - } - - const DictEntry* At(size_t index) const { return entries.at(index); } - - size_t Length() const { return entries.size(); } - - vector::const_iterator begin() const { return entries.begin(); } - - vector::const_iterator end() const { return entries.end(); } - -private: - vector entries; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/MaxMatchSegmentation.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/MaxMatchSegmentation.hpp deleted file mode 100644 index ace021e6ba..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/MaxMatchSegmentation.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "DictGroup.hpp" -#include "Segmentation.hpp" - -namespace opencc { -/** -* Implementation of maximal match segmentation -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT MaxMatchSegmentation : public Segmentation { -public: - MaxMatchSegmentation(const DictPtr _dict) : dict(_dict) {} - - virtual ~MaxMatchSegmentation() {} - - virtual SegmentsPtr Segment(const string& text) const; - - const DictPtr GetDict() const { return dict; } - -private: - const DictPtr dict; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Optional.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Optional.hpp deleted file mode 100644 index 9279101b3f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Optional.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -namespace opencc { -/** -* A class that wraps type T into a nullable type. -* @ingroup opencc_cpp_api -*/ -template class Optional { -public: - /** - * The constructor of Optional. - */ - Optional(T actual) : isNull(false), data(actual) {} - - /** - * Returns true if the instance is null. - */ - bool IsNull() const { return isNull; } - - /** - * Returns the containing data of the instance. - */ - const T& Get() const { return data; } - - /** - * Constructs a null instance. - */ - static Optional Null() { return Optional(); } - -private: - Optional() : isNull(true) {} - - bool isNull; - T data; -}; - -/** -* Specialization of Optional for pointers. -* -* Reduce a bool. -*/ -template class Optional { -private: - Optional() : data(nullptr) {} - - typedef T* TPtr; - TPtr data; - -public: - Optional(TPtr actual) : data(actual) {} - - bool IsNull() const { return data == nullptr; } - - const TPtr& Get() const { return data; } - - static Optional Null() { return Optional(); } -}; -} \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Segmentation.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Segmentation.hpp deleted file mode 100644 index 84e7f2169b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Segmentation.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" - -namespace opencc { -/** -* Abstract segmentation -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Segmentation { -public: - virtual SegmentsPtr Segment(const string& text) const = 0; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Segments.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Segments.hpp deleted file mode 100644 index 6225e1a421..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/Segments.hpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" - -namespace opencc { -/** -* Segmented text -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Segments { -public: - Segments() {} - - Segments(std::initializer_list initList) { - for (const string& item : initList) { - AddSegment(item); - } - } - - Segments(std::initializer_list initList) { - for (const string& item : initList) { - AddSegment(item); - } - } - - void AddSegment(const char* unmanagedString) { - indexes.push_back(std::make_pair(unmanaged.size(), false)); - unmanaged.push_back(unmanagedString); - } - - void AddSegment(const string& str) { - indexes.push_back(std::make_pair(managed.size(), true)); - managed.push_back(str); - } - - class iterator : public std::iterator { - public: - iterator(const Segments* const _segments, size_t _cursor) - : segments(_segments), cursor(_cursor) {} - - iterator& operator++() { - cursor++; - return *this; - } - - bool operator==(const iterator& that) const { - return cursor == that.cursor && segments == that.segments; - } - - bool operator!=(const iterator& that) const { - return !this->operator==(that); - } - - const char* operator*() const { return segments->At(cursor); } - - private: - const Segments* const segments; - size_t cursor; - }; - - const char* At(size_t cursor) const { - const auto& index = indexes[cursor]; - if (index.second) { - return managed[index.first].c_str(); - } else { - return unmanaged[index.first]; - } - } - - size_t Length() const { return indexes.size(); } - - iterator begin() const { return iterator(this, 0); } - - iterator end() const { return iterator(this, indexes.size()); } - - string ToString() const { - // TODO implement a nested structure to reduce concatenation, - // like a purely functional differential list - std::ostringstream buffer; - for (const char* segment : *this) { - buffer << segment; - } - return buffer.str(); - } - -private: - Segments(const Segments&) {} - - vector unmanaged; - vector managed; - // index, managed - vector> indexes; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/SerializableDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/SerializableDict.hpp deleted file mode 100644 index a02e53e62f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/SerializableDict.hpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Dict.hpp" - -namespace opencc { -/** -* Serializable dictionary interface -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT SerializableDict { -public: - /** - * Serializes the dictionary and writes in to a file. - */ - virtual void SerializeToFile(FILE* fp) const = 0; - - /** - * Serializes the dictionary and writes in to a file. - */ - virtual void SerializeToFile(const string& fileName) const { - FILE* fp = fopen(fileName.c_str(), "wb"); - if (fp == NULL) { - throw FileNotWritable(fileName); - } - SerializeToFile(fp); - fclose(fp); - } - - template - static bool TryLoadFromFile(const string& fileName, - std::shared_ptr* dict) { - FILE* fp = -#ifdef _MSC_VER - // well, the 'GetPlatformString' shall return a 'wstring' - _wfopen(UTF8Util::GetPlatformString(fileName).c_str(), L"rb") -#else - fopen(UTF8Util::GetPlatformString(fileName).c_str(), "rb") -#endif // _MSC_VER - ; - - if (fp == NULL) { - return false; - } - std::shared_ptr loadedDict = DICT::NewFromFile(fp); - fclose(fp); - *dict = loadedDict; - return true; - } - - template - static std::shared_ptr NewFromFile(const string& fileName) { - std::shared_ptr dict; - if (!TryLoadFromFile(fileName, &dict)) { - throw FileNotFound(fileName); - } - return dict; - } -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/SimpleConverter.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/SimpleConverter.hpp deleted file mode 100644 index 0dabefbb79..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/SimpleConverter.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __OPENCC_SIMPLECONVERTER_HPP_ -#define __OPENCC_SIMPLECONVERTER_HPP_ - -/** -* @defgroup opencc_simple_api OpenCC C++ Simple API -* -* Simple API in C++ language -*/ - -namespace opencc { -/** -* A high level converter -* This interface does not require C++11 to compile. -* @ingroup opencc_simple_api -*/ -class OPENCC_EXPORT SimpleConverter { -public: - /** - * Constructor of SimpleConverter - * @param configFileName File name of configuration. - */ - SimpleConverter(const std::string& configFileName); - - ~SimpleConverter(); - - /** - * Converts a text - * @param input Text to be converted. - */ - std::string Convert(const std::string& input) const; - - /** - * Converts a text - * @param input A C-Style string (terminated by '\0') to be converted. - */ - std::string Convert(const char* input) const; - - /** - * Converts a text - * @param input A C-Style string limited by a given length to be converted. - * @param length Maximal length in byte of the input string. - */ - std::string Convert(const char* input, size_t length) const; - - /** - * Converts a text and writes to an allocated buffer - * Please make sure the buffer has sufficent space. - * @param input A C-Style string (terminated by '\0') to be converted. - * @param output Buffer to write the converted text. - * @return Length of converted text. - */ - size_t Convert(const char* input, char* output) const; - - /** - * Converts a text and writes to an allocated buffer - * Please make sure the buffer has sufficent space. - * @param input A C-Style string limited by a given length to be converted. - * @param length Maximal length in byte of the input string. - * @param output Buffer to write the converted text. - * @return Length of converted text. - */ - size_t Convert(const char* input, size_t length, char* output) const; - -private: - const void* internalData; -}; - -} // namespace opencc - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/TextDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/TextDict.hpp deleted file mode 100644 index 5000b27cae..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/TextDict.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "SerializableDict.hpp" - -namespace opencc { -/** -* Text dictionary -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT TextDict : public Dict, public SerializableDict { -public: - /** - * Constructor of TextDict. - * _lexicon must be sorted. - */ - TextDict(const LexiconPtr& _lexicon); - - virtual ~TextDict(); - - virtual size_t KeyMaxLength() const; - - virtual Optional Match(const char* word) const; - - virtual LexiconPtr GetLexicon() const; - - virtual void SerializeToFile(FILE* fp) const; - - /** - * Constructs a TextDict from another dictionary. - */ - static TextDictPtr NewFromDict(const Dict& dict); - - static TextDictPtr NewFromFile(FILE* fp); - - static TextDictPtr NewFromSortedFile(FILE* fp); - -private: - const size_t maxLength; - const LexiconPtr lexicon; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/UTF8Util.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/UTF8Util.hpp deleted file mode 100644 index ea03dc015b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/UTF8Util.hpp +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2013 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#ifdef _MSC_VER -#define NOMINMAX -#include -#undef NOMINMAX -#endif // _MSC_VER - -#include "Common.hpp" - -namespace opencc { -/** -* UTF8 string utilities -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT UTF8Util { -public: - /** - * Detect UTF8 BOM and skip it. - */ - static void SkipUtf8Bom(FILE* fp); - - /** - * Returns the length in byte for the next UTF8 character. - * On error returns 0. - */ - static size_t NextCharLengthNoException(const char* str) { - char ch = *str; - if ((ch & 0xF0) == 0xE0) { - return 3; - } else if ((ch & 0x80) == 0x00) { - return 1; - } else if ((ch & 0xE0) == 0xC0) { - return 2; - } else if ((ch & 0xF8) == 0xF0) { - return 4; - } else if ((ch & 0xFC) == 0xF8) { - return 5; - } else if ((ch & 0xFE) == 0xFC) { - return 6; - } - return 0; - } - - /** - * Returns the length in byte for the next UTF8 character. - */ - static size_t NextCharLength(const char* str) { - size_t length = NextCharLengthNoException(str); - if (length == 0) { - throw InvalidUTF8(str); - } - return length; - } - - /** - * Returns the length in byte for the previous UTF8 character. - */ - static size_t PrevCharLength(const char* str) { - { - const size_t length = NextCharLengthNoException(str - 3); - if (length == 3) { - return length; - } - } - { - const size_t length = NextCharLengthNoException(str - 1); - if (length == 1) { - return length; - } - } - { - const size_t length = NextCharLengthNoException(str - 2); - if (length == 2) { - return length; - } - } - for (size_t i = 4; i <= 6; i++) { - const size_t length = NextCharLengthNoException(str - i); - if (length == i) { - return length; - } - } - throw InvalidUTF8(str); - } - - /** - * Returns the char* pointer over the next UTF8 character. - */ - static const char* NextChar(const char* str) { - return str + NextCharLength(str); - } - - /** - * Move the char* pointer before the previous UTF8 character. - */ - static const char* PrevChar(const char* str) { - return str - PrevCharLength(str); - } - - /** - * Returns the UTF8 length of a valid UTF8 string. - */ - static size_t Length(const char* str) { - size_t length = 0; - while (*str != '\0') { - str = NextChar(str); - length++; - } - return length; - } - - /** - * Finds a character in the same line. - * @param str The text to be searched in. - * @param ch The character to find. - * @return The pointer that points to the found chacter in str or EOL/EOF. - */ - static const char* FindNextInline(const char* str, const char ch) { - while (!IsLineEndingOrFileEnding(*str) && *str != ch) { - str = NextChar(str); - } - return str; - } - - /** - * Returns ture if the character is a line ending or end of file. - */ - static bool IsLineEndingOrFileEnding(const char ch) { - return ch == '\0' || ch == '\n' || ch == '\r'; - } - - /** - * Copies a substring with given length to a new std::string. - */ - static string FromSubstr(const char* str, size_t length) { - string newStr; - newStr.resize(length); - strncpy(const_cast(newStr.c_str()), str, length); - return newStr; - } - - /** - * Returns true if the given string is longer or as long as the given length. - */ - static bool NotShorterThan(const char* str, size_t byteLength) { - while (byteLength > 0) { - if (*str == '\0') { - return false; - } - byteLength--; - str++; - } - return true; - } - - /** - * Truncates a string with a maximal length in byte. - * No UTF8 character will be broken. - */ - static string TruncateUTF8(const char* str, size_t maxByteLength) { - string wordTrunc; - if (NotShorterThan(str, maxByteLength)) { - size_t len = 0; - const char* pStr = str; - for (;;) { - const size_t charLength = NextCharLength(pStr); - if (len + charLength > maxByteLength) { - break; - } - pStr += charLength; - len += charLength; - } - wordTrunc = FromSubstr(str, len); - } else { - wordTrunc = str; - } - return wordTrunc; - } - - /** - * Replaces all patterns in a string in place. - */ - static void ReplaceAll(string& str, const char* from, const char* to) { - string::size_type pos = 0; - string::size_type fromLen = strlen(from); - string::size_type toLen = strlen(to); - while ((pos = str.find(from, pos)) != string::npos) { - str.replace(pos, fromLen, to); - pos += toLen; - } - } - - /** - * Joins a string vector in to a string with a separator. - */ - static string Join(const vector& strings, const string& separator) { - std::ostringstream buffer; - bool first = true; - for (const auto& str : strings) { - if (!first) { - buffer << separator; - } - buffer << str; - first = false; - } - return buffer.str(); - } - - /** - * Joins a string vector in to a string. - */ - static string Join(const vector& strings) { - std::ostringstream buffer; - for (const auto& str : strings) { - buffer << str; - } - return buffer.str(); - } - - static void GetByteMap(const char* str, const size_t utf8Length, - vector* byteMap) { - if (byteMap->size() < utf8Length) { - byteMap->resize(utf8Length); - } - const char* pstr = str; - for (size_t i = 0; i < utf8Length; i++) { - (*byteMap)[i] = pstr - str; - pstr = NextChar(pstr); - } - } - -#ifdef _MSC_VER - static std::wstring GetPlatformString(const std::string& str) { - return U8ToU16(str); - } -#else - static std::string GetPlatformString(const std::string& str) { - return str; - } -#endif // _MSC_VER - - -#ifdef _MSC_VER - static std::string U16ToU8(const std::wstring& wstr) { - std::string ret; - int convcnt = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), wstr.length(), NULL, 0, NULL, NULL); - if (convcnt > 0) { - ret.resize(convcnt); - WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), wstr.length(), &ret[0], convcnt, NULL, NULL); - } - return ret; - } - - static std::wstring U8ToU16(const std::string& str) { - std::wstring ret; - int convcnt = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), NULL, 0); - if (convcnt > 0) { - ret.resize(convcnt); - MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), &ret[0], convcnt); - } - return ret; - } -#endif // _MSC_VER -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/opencc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/opencc.h deleted file mode 100644 index 21b90469ff..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/opencc/opencc.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __OPENCC_H_ -#define __OPENCC_H_ - -#ifdef __cplusplus - -#include -#include "Export.hpp" -#include "SimpleConverter.hpp" - -extern "C" { -#else -#include -#endif - -#ifndef OPENCC_EXPORT -#define OPENCC_EXPORT -#endif - -/** -* @defgroup opencc_c_api OpenCC C API -* -* API in C language -*/ - -/** -* Filename of default Simplified to Traditional configuration -* -* @ingroup opencc_c_api -*/ -#define OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD "s2t.json" - -/** -* Filename of default Traditional to Simplified configuration -* -* @ingroup opencc_c_api -*/ -#define OPENCC_DEFAULT_CONFIG_TRAD_TO_SIMP "t2s.json" - -/** -* Type of opencc descriptor -* -* @ingroup opencc_c_api -*/ -typedef void* opencc_t; - -/** -* Makes an instance of opencc -* -* @param configFileName Location of configuration file. If this is set to NULL, -* OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD will be loaded. -* @return A description pointer of the newly allocated instance of -* opencc. On error the return value will be (opencc_t) -1. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT opencc_t opencc_open(const char* configFileName); -#ifdef _MSC_VER -/** -* Makes an instance of opencc (wide char / Unicode) -* -* @param configFileName Location of configuration file. If this is set to NULL, -* OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD will be loaded. -* @return A description pointer of the newly allocated instance of -* opencc. On error the return value will be (opencc_t) -1. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT opencc_t opencc_open_w(const wchar_t* configFileName); -#endif /* _MSC_VER */ - -/** -* Destroys an instance of opencc -* -* @param opencc The description pointer. -* @return 0 on success or non-zero number on failure. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT int opencc_close(opencc_t opencc); - -/** -* Converts UTF-8 string -* -* @param opencc The opencc description pointer. -* @param input The UTF-8 encoded string. -* @param length The maximum length in byte to convert. If length is (size_t)-1, -* the whole string (terminated by '\0') will be converted. -* @param output The buffer to store converted text. You MUST make sure this -* buffer has sufficient space. -* -* @return The length of converted string or (size_t)-1 on error. -* -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT size_t opencc_convert_utf8_to_buffer(opencc_t opencc, - const char* input, - size_t length, - char* output); - -/** -* Converts UTF-8 string -* This function returns an allocated C-Style string, which stores -* the converted string. -* You MUST call opencc_convert_utf8_free() to release allocated memory. -* -* @param opencc The opencc description pointer. -* @param input The UTF-8 encoded string. -* @param length The maximum length in byte to convert. If length is (size_t)-1, -* the whole string (terminated by '\0') will be converted. -* -* @return The newly allocated UTF-8 string that stores text converted, -* or NULL on error. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT char* opencc_convert_utf8(opencc_t opencc, - const char* input, - size_t length); - -/** -* Releases allocated buffer by opencc_convert_utf8 -* -* @param str Pointer to the allocated string buffer by opencc_convert_utf8. -* -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT void opencc_convert_utf8_free(char* str); - -/** -* Returns the last error message -* -* Note that this function is the only one which is NOT thread-safe. -* -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT const char* opencc_error(void); - -#ifdef __cplusplus -} // extern "C" -#endif - -/** -* @defgroup opencc_cpp_api OpenCC C++ Comprehensive API -* -* Comprehensive API in C++ language -*/ - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiff.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiff.h deleted file mode 100644 index 19b4e7976d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiff.h +++ /dev/null @@ -1,678 +0,0 @@ -/* $Id: tiff.h,v 1.68 2012-08-19 16:56:35 bfriesen Exp $ */ - -/* - * Copyright (c) 1988-1997 Sam Leffler - * Copyright (c) 1991-1997 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the names of - * Sam Leffler and Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Sam Leffler and Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#ifndef _TIFF_ -#define _TIFF_ - -#include "tiffconf.h" - -/* - * Tag Image File Format (TIFF) - * - * Based on Rev 6.0 from: - * Developer's Desk - * Aldus Corporation - * 411 First Ave. South - * Suite 200 - * Seattle, WA 98104 - * 206-622-5500 - * - * (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf) - * - * For BigTIFF design notes see the following links - * http://www.remotesensing.org/libtiff/bigtiffdesign.html - * http://www.awaresystems.be/imaging/tiff/bigtiff.html - */ - -#define TIFF_VERSION_CLASSIC 42 -#define TIFF_VERSION_BIG 43 - -#define TIFF_BIGENDIAN 0x4d4d -#define TIFF_LITTLEENDIAN 0x4949 -#define MDI_LITTLEENDIAN 0x5045 -#define MDI_BIGENDIAN 0x4550 - -/* - * Intrinsic data types required by the file format: - * - * 8-bit quantities int8/uint8 - * 16-bit quantities int16/uint16 - * 32-bit quantities int32/uint32 - * 64-bit quantities int64/uint64 - * strings unsigned char* - */ - -typedef TIFF_INT8_T int8; -typedef TIFF_UINT8_T uint8; - -typedef TIFF_INT16_T int16; -typedef TIFF_UINT16_T uint16; - -typedef TIFF_INT32_T int32; -typedef TIFF_UINT32_T uint32; - -typedef TIFF_INT64_T int64; -typedef TIFF_UINT64_T uint64; - -/* - * Some types as promoted in a variable argument list - * We use uint16_vap rather then directly using int, because this way - * we document the type we actually want to pass through, conceptually, - * rather then confusing the issue by merely stating the type it gets - * promoted to - */ - -typedef int uint16_vap; - -/* - * TIFF header. - */ -typedef struct { - uint16 tiff_magic; /* magic number (defines byte order) */ - uint16 tiff_version; /* TIFF version number */ -} TIFFHeaderCommon; -typedef struct { - uint16 tiff_magic; /* magic number (defines byte order) */ - uint16 tiff_version; /* TIFF version number */ - uint32 tiff_diroff; /* byte offset to first directory */ -} TIFFHeaderClassic; -typedef struct { - uint16 tiff_magic; /* magic number (defines byte order) */ - uint16 tiff_version; /* TIFF version number */ - uint16 tiff_offsetsize; /* size of offsets, should be 8 */ - uint16 tiff_unused; /* unused word, should be 0 */ - uint64 tiff_diroff; /* byte offset to first directory */ -} TIFFHeaderBig; - - -/* - * NB: In the comments below, - * - items marked with a + are obsoleted by revision 5.0, - * - items marked with a ! are introduced in revision 6.0. - * - items marked with a % are introduced post revision 6.0. - * - items marked with a $ are obsoleted by revision 6.0. - * - items marked with a & are introduced by Adobe DNG specification. - */ - -/* - * Tag data type information. - * - * Note: RATIONALs are the ratio of two 32-bit integer values. - */ -typedef enum { - TIFF_NOTYPE = 0, /* placeholder */ - TIFF_BYTE = 1, /* 8-bit unsigned integer */ - TIFF_ASCII = 2, /* 8-bit bytes w/ last byte null */ - TIFF_SHORT = 3, /* 16-bit unsigned integer */ - TIFF_LONG = 4, /* 32-bit unsigned integer */ - TIFF_RATIONAL = 5, /* 64-bit unsigned fraction */ - TIFF_SBYTE = 6, /* !8-bit signed integer */ - TIFF_UNDEFINED = 7, /* !8-bit untyped data */ - TIFF_SSHORT = 8, /* !16-bit signed integer */ - TIFF_SLONG = 9, /* !32-bit signed integer */ - TIFF_SRATIONAL = 10, /* !64-bit signed fraction */ - TIFF_FLOAT = 11, /* !32-bit IEEE floating point */ - TIFF_DOUBLE = 12, /* !64-bit IEEE floating point */ - TIFF_IFD = 13, /* %32-bit unsigned integer (offset) */ - TIFF_LONG8 = 16, /* BigTIFF 64-bit unsigned integer */ - TIFF_SLONG8 = 17, /* BigTIFF 64-bit signed integer */ - TIFF_IFD8 = 18 /* BigTIFF 64-bit unsigned integer (offset) */ -} TIFFDataType; - -/* - * TIFF Tag Definitions. - */ -#define TIFFTAG_SUBFILETYPE 254 /* subfile data descriptor */ -#define FILETYPE_REDUCEDIMAGE 0x1 /* reduced resolution version */ -#define FILETYPE_PAGE 0x2 /* one page of many */ -#define FILETYPE_MASK 0x4 /* transparency mask */ -#define TIFFTAG_OSUBFILETYPE 255 /* +kind of data in subfile */ -#define OFILETYPE_IMAGE 1 /* full resolution image data */ -#define OFILETYPE_REDUCEDIMAGE 2 /* reduced size image data */ -#define OFILETYPE_PAGE 3 /* one page of many */ -#define TIFFTAG_IMAGEWIDTH 256 /* image width in pixels */ -#define TIFFTAG_IMAGELENGTH 257 /* image height in pixels */ -#define TIFFTAG_BITSPERSAMPLE 258 /* bits per channel (sample) */ -#define TIFFTAG_COMPRESSION 259 /* data compression technique */ -#define COMPRESSION_NONE 1 /* dump mode */ -#define COMPRESSION_CCITTRLE 2 /* CCITT modified Huffman RLE */ -#define COMPRESSION_CCITTFAX3 3 /* CCITT Group 3 fax encoding */ -#define COMPRESSION_CCITT_T4 3 /* CCITT T.4 (TIFF 6 name) */ -#define COMPRESSION_CCITTFAX4 4 /* CCITT Group 4 fax encoding */ -#define COMPRESSION_CCITT_T6 4 /* CCITT T.6 (TIFF 6 name) */ -#define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */ -#define COMPRESSION_OJPEG 6 /* !6.0 JPEG */ -#define COMPRESSION_JPEG 7 /* %JPEG DCT compression */ -#define COMPRESSION_T85 9 /* !TIFF/FX T.85 JBIG compression */ -#define COMPRESSION_T43 10 /* !TIFF/FX T.43 colour by layered JBIG compression */ -#define COMPRESSION_NEXT 32766 /* NeXT 2-bit RLE */ -#define COMPRESSION_CCITTRLEW 32771 /* #1 w/ word alignment */ -#define COMPRESSION_PACKBITS 32773 /* Macintosh RLE */ -#define COMPRESSION_THUNDERSCAN 32809 /* ThunderScan RLE */ -/* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT */ -#define COMPRESSION_DCS 32947 /* Kodak DCS encoding */ -#define COMPRESSION_JBIG 34661 /* ISO JBIG */ -#define COMPRESSION_SGILOG 34676 /* SGI Log Luminance RLE */ -#define COMPRESSION_SGILOG24 34677 /* SGI Log 24-bit packed */ -#define COMPRESSION_JP2000 34712 /* Leadtools JPEG2000 */ -#define COMPRESSION_LZMA 34925 /* LZMA2 */ -#define TIFFTAG_PHOTOMETRIC 262 /* photometric interpretation */ -#define PHOTOMETRIC_MINISWHITE 0 /* min value is white */ -#define PHOTOMETRIC_MINISBLACK 1 /* min value is black */ -#define PHOTOMETRIC_RGB 2 /* RGB color model */ -#define PHOTOMETRIC_PALETTE 3 /* color map indexed */ -#define PHOTOMETRIC_MASK 4 /* $holdout mask */ -#define PHOTOMETRIC_SEPARATED 5 /* !color separations */ -#define PHOTOMETRIC_YCBCR 6 /* !CCIR 601 */ -#define PHOTOMETRIC_CIELAB 8 /* !1976 CIE L*a*b* */ -#define PHOTOMETRIC_ICCLAB 9 /* ICC L*a*b* [Adobe TIFF Technote 4] */ -#define PHOTOMETRIC_ITULAB 10 /* ITU L*a*b* */ -#define PHOTOMETRIC_LOGL 32844 /* CIE Log2(L) */ -#define PHOTOMETRIC_LOGLUV 32845 /* CIE Log2(L) (u',v') */ -#define TIFFTAG_THRESHHOLDING 263 /* +thresholding used on data */ -#define THRESHHOLD_BILEVEL 1 /* b&w art scan */ -#define THRESHHOLD_HALFTONE 2 /* or dithered scan */ -#define THRESHHOLD_ERRORDIFFUSE 3 /* usually floyd-steinberg */ -#define TIFFTAG_CELLWIDTH 264 /* +dithering matrix width */ -#define TIFFTAG_CELLLENGTH 265 /* +dithering matrix height */ -#define TIFFTAG_FILLORDER 266 /* data order within a byte */ -#define FILLORDER_MSB2LSB 1 /* most significant -> least */ -#define FILLORDER_LSB2MSB 2 /* least significant -> most */ -#define TIFFTAG_DOCUMENTNAME 269 /* name of doc. image is from */ -#define TIFFTAG_IMAGEDESCRIPTION 270 /* info about image */ -#define TIFFTAG_MAKE 271 /* scanner manufacturer name */ -#define TIFFTAG_MODEL 272 /* scanner model name/number */ -#define TIFFTAG_STRIPOFFSETS 273 /* offsets to data strips */ -#define TIFFTAG_ORIENTATION 274 /* +image orientation */ -#define ORIENTATION_TOPLEFT 1 /* row 0 top, col 0 lhs */ -#define ORIENTATION_TOPRIGHT 2 /* row 0 top, col 0 rhs */ -#define ORIENTATION_BOTRIGHT 3 /* row 0 bottom, col 0 rhs */ -#define ORIENTATION_BOTLEFT 4 /* row 0 bottom, col 0 lhs */ -#define ORIENTATION_LEFTTOP 5 /* row 0 lhs, col 0 top */ -#define ORIENTATION_RIGHTTOP 6 /* row 0 rhs, col 0 top */ -#define ORIENTATION_RIGHTBOT 7 /* row 0 rhs, col 0 bottom */ -#define ORIENTATION_LEFTBOT 8 /* row 0 lhs, col 0 bottom */ -#define TIFFTAG_SAMPLESPERPIXEL 277 /* samples per pixel */ -#define TIFFTAG_ROWSPERSTRIP 278 /* rows per strip of data */ -#define TIFFTAG_STRIPBYTECOUNTS 279 /* bytes counts for strips */ -#define TIFFTAG_MINSAMPLEVALUE 280 /* +minimum sample value */ -#define TIFFTAG_MAXSAMPLEVALUE 281 /* +maximum sample value */ -#define TIFFTAG_XRESOLUTION 282 /* pixels/resolution in x */ -#define TIFFTAG_YRESOLUTION 283 /* pixels/resolution in y */ -#define TIFFTAG_PLANARCONFIG 284 /* storage organization */ -#define PLANARCONFIG_CONTIG 1 /* single image plane */ -#define PLANARCONFIG_SEPARATE 2 /* separate planes of data */ -#define TIFFTAG_PAGENAME 285 /* page name image is from */ -#define TIFFTAG_XPOSITION 286 /* x page offset of image lhs */ -#define TIFFTAG_YPOSITION 287 /* y page offset of image lhs */ -#define TIFFTAG_FREEOFFSETS 288 /* +byte offset to free block */ -#define TIFFTAG_FREEBYTECOUNTS 289 /* +sizes of free blocks */ -#define TIFFTAG_GRAYRESPONSEUNIT 290 /* $gray scale curve accuracy */ -#define GRAYRESPONSEUNIT_10S 1 /* tenths of a unit */ -#define GRAYRESPONSEUNIT_100S 2 /* hundredths of a unit */ -#define GRAYRESPONSEUNIT_1000S 3 /* thousandths of a unit */ -#define GRAYRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */ -#define GRAYRESPONSEUNIT_100000S 5 /* hundred-thousandths */ -#define TIFFTAG_GRAYRESPONSECURVE 291 /* $gray scale response curve */ -#define TIFFTAG_GROUP3OPTIONS 292 /* 32 flag bits */ -#define TIFFTAG_T4OPTIONS 292 /* TIFF 6.0 proper name alias */ -#define GROUP3OPT_2DENCODING 0x1 /* 2-dimensional coding */ -#define GROUP3OPT_UNCOMPRESSED 0x2 /* data not compressed */ -#define GROUP3OPT_FILLBITS 0x4 /* fill to byte boundary */ -#define TIFFTAG_GROUP4OPTIONS 293 /* 32 flag bits */ -#define TIFFTAG_T6OPTIONS 293 /* TIFF 6.0 proper name */ -#define GROUP4OPT_UNCOMPRESSED 0x2 /* data not compressed */ -#define TIFFTAG_RESOLUTIONUNIT 296 /* units of resolutions */ -#define RESUNIT_NONE 1 /* no meaningful units */ -#define RESUNIT_INCH 2 /* english */ -#define RESUNIT_CENTIMETER 3 /* metric */ -#define TIFFTAG_PAGENUMBER 297 /* page numbers of multi-page */ -#define TIFFTAG_COLORRESPONSEUNIT 300 /* $color curve accuracy */ -#define COLORRESPONSEUNIT_10S 1 /* tenths of a unit */ -#define COLORRESPONSEUNIT_100S 2 /* hundredths of a unit */ -#define COLORRESPONSEUNIT_1000S 3 /* thousandths of a unit */ -#define COLORRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */ -#define COLORRESPONSEUNIT_100000S 5 /* hundred-thousandths */ -#define TIFFTAG_TRANSFERFUNCTION 301 /* !colorimetry info */ -#define TIFFTAG_SOFTWARE 305 /* name & release */ -#define TIFFTAG_DATETIME 306 /* creation date and time */ -#define TIFFTAG_ARTIST 315 /* creator of image */ -#define TIFFTAG_HOSTCOMPUTER 316 /* machine where created */ -#define TIFFTAG_PREDICTOR 317 /* prediction scheme w/ LZW */ -#define PREDICTOR_NONE 1 /* no prediction scheme used */ -#define PREDICTOR_HORIZONTAL 2 /* horizontal differencing */ -#define PREDICTOR_FLOATINGPOINT 3 /* floating point predictor */ -#define TIFFTAG_WHITEPOINT 318 /* image white point */ -#define TIFFTAG_PRIMARYCHROMATICITIES 319 /* !primary chromaticities */ -#define TIFFTAG_COLORMAP 320 /* RGB map for pallette image */ -#define TIFFTAG_HALFTONEHINTS 321 /* !highlight+shadow info */ -#define TIFFTAG_TILEWIDTH 322 /* !tile width in pixels */ -#define TIFFTAG_TILELENGTH 323 /* !tile height in pixels */ -#define TIFFTAG_TILEOFFSETS 324 /* !offsets to data tiles */ -#define TIFFTAG_TILEBYTECOUNTS 325 /* !byte counts for tiles */ -#define TIFFTAG_BADFAXLINES 326 /* lines w/ wrong pixel count */ -#define TIFFTAG_CLEANFAXDATA 327 /* regenerated line info */ -#define CLEANFAXDATA_CLEAN 0 /* no errors detected */ -#define CLEANFAXDATA_REGENERATED 1 /* receiver regenerated lines */ -#define CLEANFAXDATA_UNCLEAN 2 /* uncorrected errors exist */ -#define TIFFTAG_CONSECUTIVEBADFAXLINES 328 /* max consecutive bad lines */ -#define TIFFTAG_SUBIFD 330 /* subimage descriptors */ -#define TIFFTAG_INKSET 332 /* !inks in separated image */ -#define INKSET_CMYK 1 /* !cyan-magenta-yellow-black color */ -#define INKSET_MULTIINK 2 /* !multi-ink or hi-fi color */ -#define TIFFTAG_INKNAMES 333 /* !ascii names of inks */ -#define TIFFTAG_NUMBEROFINKS 334 /* !number of inks */ -#define TIFFTAG_DOTRANGE 336 /* !0% and 100% dot codes */ -#define TIFFTAG_TARGETPRINTER 337 /* !separation target */ -#define TIFFTAG_EXTRASAMPLES 338 /* !info about extra samples */ -#define EXTRASAMPLE_UNSPECIFIED 0 /* !unspecified data */ -#define EXTRASAMPLE_ASSOCALPHA 1 /* !associated alpha data */ -#define EXTRASAMPLE_UNASSALPHA 2 /* !unassociated alpha data */ -#define TIFFTAG_SAMPLEFORMAT 339 /* !data sample format */ -#define SAMPLEFORMAT_UINT 1 /* !unsigned integer data */ -#define SAMPLEFORMAT_INT 2 /* !signed integer data */ -#define SAMPLEFORMAT_IEEEFP 3 /* !IEEE floating point data */ -#define SAMPLEFORMAT_VOID 4 /* !untyped data */ -#define SAMPLEFORMAT_COMPLEXINT 5 /* !complex signed int */ -#define SAMPLEFORMAT_COMPLEXIEEEFP 6 /* !complex ieee floating */ -#define TIFFTAG_SMINSAMPLEVALUE 340 /* !variable MinSampleValue */ -#define TIFFTAG_SMAXSAMPLEVALUE 341 /* !variable MaxSampleValue */ -#define TIFFTAG_CLIPPATH 343 /* %ClipPath - [Adobe TIFF technote 2] */ -#define TIFFTAG_XCLIPPATHUNITS 344 /* %XClipPathUnits - [Adobe TIFF technote 2] */ -#define TIFFTAG_YCLIPPATHUNITS 345 /* %YClipPathUnits - [Adobe TIFF technote 2] */ -#define TIFFTAG_INDEXED 346 /* %Indexed - [Adobe TIFF Technote 3] */ -#define TIFFTAG_JPEGTABLES 347 /* %JPEG table stream */ -#define TIFFTAG_OPIPROXY 351 /* %OPI Proxy [Adobe TIFF technote] */ -/* Tags 400-435 are from the TIFF/FX spec */ -#define TIFFTAG_GLOBALPARAMETERSIFD 400 /* ! */ -#define TIFFTAG_PROFILETYPE 401 /* ! */ -#define PROFILETYPE_UNSPECIFIED 0 /* ! */ -#define PROFILETYPE_G3_FAX 1 /* ! */ -#define TIFFTAG_FAXPROFILE 402 /* ! */ -#define FAXPROFILE_S 1 /* !TIFF/FX FAX profile S */ -#define FAXPROFILE_F 2 /* !TIFF/FX FAX profile F */ -#define FAXPROFILE_J 3 /* !TIFF/FX FAX profile J */ -#define FAXPROFILE_C 4 /* !TIFF/FX FAX profile C */ -#define FAXPROFILE_L 5 /* !TIFF/FX FAX profile L */ -#define FAXPROFILE_M 6 /* !TIFF/FX FAX profile LM */ -#define TIFFTAG_CODINGMETHODS 403 /* !TIFF/FX coding methods */ -#define CODINGMETHODS_T4_1D (1 << 1) /* !T.4 1D */ -#define CODINGMETHODS_T4_2D (1 << 2) /* !T.4 2D */ -#define CODINGMETHODS_T6 (1 << 3) /* !T.6 */ -#define CODINGMETHODS_T85 (1 << 4) /* !T.85 JBIG */ -#define CODINGMETHODS_T42 (1 << 5) /* !T.42 JPEG */ -#define CODINGMETHODS_T43 (1 << 6) /* !T.43 colour by layered JBIG */ -#define TIFFTAG_VERSIONYEAR 404 /* !TIFF/FX version year */ -#define TIFFTAG_MODENUMBER 405 /* !TIFF/FX mode number */ -#define TIFFTAG_DECODE 433 /* !TIFF/FX decode */ -#define TIFFTAG_IMAGEBASECOLOR 434 /* !TIFF/FX image base colour */ -#define TIFFTAG_T82OPTIONS 435 /* !TIFF/FX T.82 options */ -/* - * Tags 512-521 are obsoleted by Technical Note #2 which specifies a - * revised JPEG-in-TIFF scheme. - */ -#define TIFFTAG_JPEGPROC 512 /* !JPEG processing algorithm */ -#define JPEGPROC_BASELINE 1 /* !baseline sequential */ -#define JPEGPROC_LOSSLESS 14 /* !Huffman coded lossless */ -#define TIFFTAG_JPEGIFOFFSET 513 /* !pointer to SOI marker */ -#define TIFFTAG_JPEGIFBYTECOUNT 514 /* !JFIF stream length */ -#define TIFFTAG_JPEGRESTARTINTERVAL 515 /* !restart interval length */ -#define TIFFTAG_JPEGLOSSLESSPREDICTORS 517 /* !lossless proc predictor */ -#define TIFFTAG_JPEGPOINTTRANSFORM 518 /* !lossless point transform */ -#define TIFFTAG_JPEGQTABLES 519 /* !Q matrice offsets */ -#define TIFFTAG_JPEGDCTABLES 520 /* !DCT table offsets */ -#define TIFFTAG_JPEGACTABLES 521 /* !AC coefficient offsets */ -#define TIFFTAG_YCBCRCOEFFICIENTS 529 /* !RGB -> YCbCr transform */ -#define TIFFTAG_YCBCRSUBSAMPLING 530 /* !YCbCr subsampling factors */ -#define TIFFTAG_YCBCRPOSITIONING 531 /* !subsample positioning */ -#define YCBCRPOSITION_CENTERED 1 /* !as in PostScript Level 2 */ -#define YCBCRPOSITION_COSITED 2 /* !as in CCIR 601-1 */ -#define TIFFTAG_REFERENCEBLACKWHITE 532 /* !colorimetry info */ -#define TIFFTAG_STRIPROWCOUNTS 559 /* !TIFF/FX strip row counts */ -#define TIFFTAG_XMLPACKET 700 /* %XML packet - [Adobe XMP Specification, - January 2004 */ -#define TIFFTAG_OPIIMAGEID 32781 /* %OPI ImageID - [Adobe TIFF technote] */ -/* tags 32952-32956 are private tags registered to Island Graphics */ -#define TIFFTAG_REFPTS 32953 /* image reference points */ -#define TIFFTAG_REGIONTACKPOINT 32954 /* region-xform tack point */ -#define TIFFTAG_REGIONWARPCORNERS 32955 /* warp quadrilateral */ -#define TIFFTAG_REGIONAFFINE 32956 /* affine transformation mat */ -/* tags 32995-32999 are private tags registered to SGI */ -#define TIFFTAG_MATTEING 32995 /* $use ExtraSamples */ -#define TIFFTAG_DATATYPE 32996 /* $use SampleFormat */ -#define TIFFTAG_IMAGEDEPTH 32997 /* z depth of image */ -#define TIFFTAG_TILEDEPTH 32998 /* z depth/data tile */ -/* tags 33300-33309 are private tags registered to Pixar */ -/* - * TIFFTAG_PIXAR_IMAGEFULLWIDTH and TIFFTAG_PIXAR_IMAGEFULLLENGTH - * are set when an image has been cropped out of a larger image. - * They reflect the size of the original uncropped image. - * The TIFFTAG_XPOSITION and TIFFTAG_YPOSITION can be used - * to determine the position of the smaller image in the larger one. - */ -#define TIFFTAG_PIXAR_IMAGEFULLWIDTH 33300 /* full image size in x */ -#define TIFFTAG_PIXAR_IMAGEFULLLENGTH 33301 /* full image size in y */ - /* Tags 33302-33306 are used to identify special image modes and data - * used by Pixar's texture formats. - */ -#define TIFFTAG_PIXAR_TEXTUREFORMAT 33302 /* texture map format */ -#define TIFFTAG_PIXAR_WRAPMODES 33303 /* s & t wrap modes */ -#define TIFFTAG_PIXAR_FOVCOT 33304 /* cotan(fov) for env. maps */ -#define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 33305 -#define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 33306 -/* tag 33405 is a private tag registered to Eastman Kodak */ -#define TIFFTAG_WRITERSERIALNUMBER 33405 /* device serial number */ -/* tag 33432 is listed in the 6.0 spec w/ unknown ownership */ -#define TIFFTAG_COPYRIGHT 33432 /* copyright string */ -/* IPTC TAG from RichTIFF specifications */ -#define TIFFTAG_RICHTIFFIPTC 33723 -/* 34016-34029 are reserved for ANSI IT8 TIFF/IT */ -#define TIFFTAG_STONITS 37439 /* Sample value to Nits */ -/* tag 34929 is a private tag registered to FedEx */ -#define TIFFTAG_FEDEX_EDR 34929 /* unknown use */ -#define TIFFTAG_INTEROPERABILITYIFD 40965 /* Pointer to Interoperability private directory */ -/* Adobe Digital Negative (DNG) format tags */ -#define TIFFTAG_DNGVERSION 50706 /* &DNG version number */ -#define TIFFTAG_DNGBACKWARDVERSION 50707 /* &DNG compatibility version */ -#define TIFFTAG_UNIQUECAMERAMODEL 50708 /* &name for the camera model */ -#define TIFFTAG_LOCALIZEDCAMERAMODEL 50709 /* &localized camera model - name */ -#define TIFFTAG_CFAPLANECOLOR 50710 /* &CFAPattern->LinearRaw space - mapping */ -#define TIFFTAG_CFALAYOUT 50711 /* &spatial layout of the CFA */ -#define TIFFTAG_LINEARIZATIONTABLE 50712 /* &lookup table description */ -#define TIFFTAG_BLACKLEVELREPEATDIM 50713 /* &repeat pattern size for - the BlackLevel tag */ -#define TIFFTAG_BLACKLEVEL 50714 /* &zero light encoding level */ -#define TIFFTAG_BLACKLEVELDELTAH 50715 /* &zero light encoding level - differences (columns) */ -#define TIFFTAG_BLACKLEVELDELTAV 50716 /* &zero light encoding level - differences (rows) */ -#define TIFFTAG_WHITELEVEL 50717 /* &fully saturated encoding - level */ -#define TIFFTAG_DEFAULTSCALE 50718 /* &default scale factors */ -#define TIFFTAG_DEFAULTCROPORIGIN 50719 /* &origin of the final image - area */ -#define TIFFTAG_DEFAULTCROPSIZE 50720 /* &size of the final image - area */ -#define TIFFTAG_COLORMATRIX1 50721 /* &XYZ->reference color space - transformation matrix 1 */ -#define TIFFTAG_COLORMATRIX2 50722 /* &XYZ->reference color space - transformation matrix 2 */ -#define TIFFTAG_CAMERACALIBRATION1 50723 /* &calibration matrix 1 */ -#define TIFFTAG_CAMERACALIBRATION2 50724 /* &calibration matrix 2 */ -#define TIFFTAG_REDUCTIONMATRIX1 50725 /* &dimensionality reduction - matrix 1 */ -#define TIFFTAG_REDUCTIONMATRIX2 50726 /* &dimensionality reduction - matrix 2 */ -#define TIFFTAG_ANALOGBALANCE 50727 /* &gain applied the stored raw - values*/ -#define TIFFTAG_ASSHOTNEUTRAL 50728 /* &selected white balance in - linear reference space */ -#define TIFFTAG_ASSHOTWHITEXY 50729 /* &selected white balance in - x-y chromaticity - coordinates */ -#define TIFFTAG_BASELINEEXPOSURE 50730 /* &how much to move the zero - point */ -#define TIFFTAG_BASELINENOISE 50731 /* &relative noise level */ -#define TIFFTAG_BASELINESHARPNESS 50732 /* &relative amount of - sharpening */ -#define TIFFTAG_BAYERGREENSPLIT 50733 /* &how closely the values of - the green pixels in the - blue/green rows track the - values of the green pixels - in the red/green rows */ -#define TIFFTAG_LINEARRESPONSELIMIT 50734 /* &non-linear encoding range */ -#define TIFFTAG_CAMERASERIALNUMBER 50735 /* &camera's serial number */ -#define TIFFTAG_LENSINFO 50736 /* info about the lens */ -#define TIFFTAG_CHROMABLURRADIUS 50737 /* &chroma blur radius */ -#define TIFFTAG_ANTIALIASSTRENGTH 50738 /* &relative strength of the - camera's anti-alias filter */ -#define TIFFTAG_SHADOWSCALE 50739 /* &used by Adobe Camera Raw */ -#define TIFFTAG_DNGPRIVATEDATA 50740 /* &manufacturer's private data */ -#define TIFFTAG_MAKERNOTESAFETY 50741 /* &whether the EXIF MakerNote - tag is safe to preserve - along with the rest of the - EXIF data */ -#define TIFFTAG_CALIBRATIONILLUMINANT1 50778 /* &illuminant 1 */ -#define TIFFTAG_CALIBRATIONILLUMINANT2 50779 /* &illuminant 2 */ -#define TIFFTAG_BESTQUALITYSCALE 50780 /* &best quality multiplier */ -#define TIFFTAG_RAWDATAUNIQUEID 50781 /* &unique identifier for - the raw image data */ -#define TIFFTAG_ORIGINALRAWFILENAME 50827 /* &file name of the original - raw file */ -#define TIFFTAG_ORIGINALRAWFILEDATA 50828 /* &contents of the original - raw file */ -#define TIFFTAG_ACTIVEAREA 50829 /* &active (non-masked) pixels - of the sensor */ -#define TIFFTAG_MASKEDAREAS 50830 /* &list of coordinates - of fully masked pixels */ -#define TIFFTAG_ASSHOTICCPROFILE 50831 /* &these two tags used to */ -#define TIFFTAG_ASSHOTPREPROFILEMATRIX 50832 /* map cameras's color space - into ICC profile space */ -#define TIFFTAG_CURRENTICCPROFILE 50833 /* & */ -#define TIFFTAG_CURRENTPREPROFILEMATRIX 50834 /* & */ -/* tag 65535 is an undefined tag used by Eastman Kodak */ -#define TIFFTAG_DCSHUESHIFTVALUES 65535 /* hue shift correction data */ - -/* - * The following are ``pseudo tags'' that can be used to control - * codec-specific functionality. These tags are not written to file. - * Note that these values start at 0xffff+1 so that they'll never - * collide with Aldus-assigned tags. - * - * If you want your private pseudo tags ``registered'' (i.e. added to - * this file), please post a bug report via the tracking system at - * http://www.remotesensing.org/libtiff/bugs.html with the appropriate - * C definitions to add. - */ -#define TIFFTAG_FAXMODE 65536 /* Group 3/4 format control */ -#define FAXMODE_CLASSIC 0x0000 /* default, include RTC */ -#define FAXMODE_NORTC 0x0001 /* no RTC at end of data */ -#define FAXMODE_NOEOL 0x0002 /* no EOL code at end of row */ -#define FAXMODE_BYTEALIGN 0x0004 /* byte align row */ -#define FAXMODE_WORDALIGN 0x0008 /* word align row */ -#define FAXMODE_CLASSF FAXMODE_NORTC /* TIFF Class F */ -#define TIFFTAG_JPEGQUALITY 65537 /* Compression quality level */ -/* Note: quality level is on the IJG 0-100 scale. Default value is 75 */ -#define TIFFTAG_JPEGCOLORMODE 65538 /* Auto RGB<=>YCbCr convert? */ -#define JPEGCOLORMODE_RAW 0x0000 /* no conversion (default) */ -#define JPEGCOLORMODE_RGB 0x0001 /* do auto conversion */ -#define TIFFTAG_JPEGTABLESMODE 65539 /* What to put in JPEGTables */ -#define JPEGTABLESMODE_QUANT 0x0001 /* include quantization tbls */ -#define JPEGTABLESMODE_HUFF 0x0002 /* include Huffman tbls */ -/* Note: default is JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF */ -#define TIFFTAG_FAXFILLFUNC 65540 /* G3/G4 fill function */ -#define TIFFTAG_PIXARLOGDATAFMT 65549 /* PixarLogCodec I/O data sz */ -#define PIXARLOGDATAFMT_8BIT 0 /* regular u_char samples */ -#define PIXARLOGDATAFMT_8BITABGR 1 /* ABGR-order u_chars */ -#define PIXARLOGDATAFMT_11BITLOG 2 /* 11-bit log-encoded (raw) */ -#define PIXARLOGDATAFMT_12BITPICIO 3 /* as per PICIO (1.0==2048) */ -#define PIXARLOGDATAFMT_16BIT 4 /* signed short samples */ -#define PIXARLOGDATAFMT_FLOAT 5 /* IEEE float samples */ -/* 65550-65556 are allocated to Oceana Matrix */ -#define TIFFTAG_DCSIMAGERTYPE 65550 /* imager model & filter */ -#define DCSIMAGERMODEL_M3 0 /* M3 chip (1280 x 1024) */ -#define DCSIMAGERMODEL_M5 1 /* M5 chip (1536 x 1024) */ -#define DCSIMAGERMODEL_M6 2 /* M6 chip (3072 x 2048) */ -#define DCSIMAGERFILTER_IR 0 /* infrared filter */ -#define DCSIMAGERFILTER_MONO 1 /* monochrome filter */ -#define DCSIMAGERFILTER_CFA 2 /* color filter array */ -#define DCSIMAGERFILTER_OTHER 3 /* other filter */ -#define TIFFTAG_DCSINTERPMODE 65551 /* interpolation mode */ -#define DCSINTERPMODE_NORMAL 0x0 /* whole image, default */ -#define DCSINTERPMODE_PREVIEW 0x1 /* preview of image (384x256) */ -#define TIFFTAG_DCSBALANCEARRAY 65552 /* color balance values */ -#define TIFFTAG_DCSCORRECTMATRIX 65553 /* color correction values */ -#define TIFFTAG_DCSGAMMA 65554 /* gamma value */ -#define TIFFTAG_DCSTOESHOULDERPTS 65555 /* toe & shoulder points */ -#define TIFFTAG_DCSCALIBRATIONFD 65556 /* calibration file desc */ -/* Note: quality level is on the ZLIB 1-9 scale. Default value is -1 */ -#define TIFFTAG_ZIPQUALITY 65557 /* compression quality level */ -#define TIFFTAG_PIXARLOGQUALITY 65558 /* PixarLog uses same scale */ -/* 65559 is allocated to Oceana Matrix */ -#define TIFFTAG_DCSCLIPRECTANGLE 65559 /* area of image to acquire */ -#define TIFFTAG_SGILOGDATAFMT 65560 /* SGILog user data format */ -#define SGILOGDATAFMT_FLOAT 0 /* IEEE float samples */ -#define SGILOGDATAFMT_16BIT 1 /* 16-bit samples */ -#define SGILOGDATAFMT_RAW 2 /* uninterpreted data */ -#define SGILOGDATAFMT_8BIT 3 /* 8-bit RGB monitor values */ -#define TIFFTAG_SGILOGENCODE 65561 /* SGILog data encoding control*/ -#define SGILOGENCODE_NODITHER 0 /* do not dither encoded values*/ -#define SGILOGENCODE_RANDITHER 1 /* randomly dither encd values */ -#define TIFFTAG_LZMAPRESET 65562 /* LZMA2 preset (compression level) */ -#define TIFFTAG_PERSAMPLE 65563 /* interface for per sample tags */ -#define PERSAMPLE_MERGED 0 /* present as a single value */ -#define PERSAMPLE_MULTI 1 /* present as multiple values */ - -/* - * EXIF tags - */ -#define EXIFTAG_EXPOSURETIME 33434 /* Exposure time */ -#define EXIFTAG_FNUMBER 33437 /* F number */ -#define EXIFTAG_EXPOSUREPROGRAM 34850 /* Exposure program */ -#define EXIFTAG_SPECTRALSENSITIVITY 34852 /* Spectral sensitivity */ -#define EXIFTAG_ISOSPEEDRATINGS 34855 /* ISO speed rating */ -#define EXIFTAG_OECF 34856 /* Optoelectric conversion - factor */ -#define EXIFTAG_EXIFVERSION 36864 /* Exif version */ -#define EXIFTAG_DATETIMEORIGINAL 36867 /* Date and time of original - data generation */ -#define EXIFTAG_DATETIMEDIGITIZED 36868 /* Date and time of digital - data generation */ -#define EXIFTAG_COMPONENTSCONFIGURATION 37121 /* Meaning of each component */ -#define EXIFTAG_COMPRESSEDBITSPERPIXEL 37122 /* Image compression mode */ -#define EXIFTAG_SHUTTERSPEEDVALUE 37377 /* Shutter speed */ -#define EXIFTAG_APERTUREVALUE 37378 /* Aperture */ -#define EXIFTAG_BRIGHTNESSVALUE 37379 /* Brightness */ -#define EXIFTAG_EXPOSUREBIASVALUE 37380 /* Exposure bias */ -#define EXIFTAG_MAXAPERTUREVALUE 37381 /* Maximum lens aperture */ -#define EXIFTAG_SUBJECTDISTANCE 37382 /* Subject distance */ -#define EXIFTAG_METERINGMODE 37383 /* Metering mode */ -#define EXIFTAG_LIGHTSOURCE 37384 /* Light source */ -#define EXIFTAG_FLASH 37385 /* Flash */ -#define EXIFTAG_FOCALLENGTH 37386 /* Lens focal length */ -#define EXIFTAG_SUBJECTAREA 37396 /* Subject area */ -#define EXIFTAG_MAKERNOTE 37500 /* Manufacturer notes */ -#define EXIFTAG_USERCOMMENT 37510 /* User comments */ -#define EXIFTAG_SUBSECTIME 37520 /* DateTime subseconds */ -#define EXIFTAG_SUBSECTIMEORIGINAL 37521 /* DateTimeOriginal subseconds */ -#define EXIFTAG_SUBSECTIMEDIGITIZED 37522 /* DateTimeDigitized subseconds */ -#define EXIFTAG_FLASHPIXVERSION 40960 /* Supported Flashpix version */ -#define EXIFTAG_COLORSPACE 40961 /* Color space information */ -#define EXIFTAG_PIXELXDIMENSION 40962 /* Valid image width */ -#define EXIFTAG_PIXELYDIMENSION 40963 /* Valid image height */ -#define EXIFTAG_RELATEDSOUNDFILE 40964 /* Related audio file */ -#define EXIFTAG_FLASHENERGY 41483 /* Flash energy */ -#define EXIFTAG_SPATIALFREQUENCYRESPONSE 41484 /* Spatial frequency response */ -#define EXIFTAG_FOCALPLANEXRESOLUTION 41486 /* Focal plane X resolution */ -#define EXIFTAG_FOCALPLANEYRESOLUTION 41487 /* Focal plane Y resolution */ -#define EXIFTAG_FOCALPLANERESOLUTIONUNIT 41488 /* Focal plane resolution unit */ -#define EXIFTAG_SUBJECTLOCATION 41492 /* Subject location */ -#define EXIFTAG_EXPOSUREINDEX 41493 /* Exposure index */ -#define EXIFTAG_SENSINGMETHOD 41495 /* Sensing method */ -#define EXIFTAG_FILESOURCE 41728 /* File source */ -#define EXIFTAG_SCENETYPE 41729 /* Scene type */ -#define EXIFTAG_CFAPATTERN 41730 /* CFA pattern */ -#define EXIFTAG_CUSTOMRENDERED 41985 /* Custom image processing */ -#define EXIFTAG_EXPOSUREMODE 41986 /* Exposure mode */ -#define EXIFTAG_WHITEBALANCE 41987 /* White balance */ -#define EXIFTAG_DIGITALZOOMRATIO 41988 /* Digital zoom ratio */ -#define EXIFTAG_FOCALLENGTHIN35MMFILM 41989 /* Focal length in 35 mm film */ -#define EXIFTAG_SCENECAPTURETYPE 41990 /* Scene capture type */ -#define EXIFTAG_GAINCONTROL 41991 /* Gain control */ -#define EXIFTAG_CONTRAST 41992 /* Contrast */ -#define EXIFTAG_SATURATION 41993 /* Saturation */ -#define EXIFTAG_SHARPNESS 41994 /* Sharpness */ -#define EXIFTAG_DEVICESETTINGDESCRIPTION 41995 /* Device settings description */ -#define EXIFTAG_SUBJECTDISTANCERANGE 41996 /* Subject distance range */ -#define EXIFTAG_GAINCONTROL 41991 /* Gain control */ -#define EXIFTAG_GAINCONTROL 41991 /* Gain control */ -#define EXIFTAG_IMAGEUNIQUEID 42016 /* Unique image ID */ - -#endif /* _TIFF_ */ - -/* vim: set ts=8 sts=8 sw=8 noet: */ -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffconf.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffconf.h deleted file mode 100644 index 56f4589dcb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffconf.h +++ /dev/null @@ -1,128 +0,0 @@ -/* libtiff/tiffconf.h. Generated from tiffconf.h.in by configure. */ -/* - Configuration defines for installed libtiff. - This file maintained for backward compatibility. Do not use definitions - from this file in your programs. -*/ - -#ifndef _TIFFCONF_ -#define _TIFFCONF_ - -/* Signed 16-bit type */ -#define TIFF_INT16_T signed short - -/* Signed 32-bit type */ -#define TIFF_INT32_T signed int - -/* Signed 64-bit type */ -#define TIFF_INT64_T signed long - -/* Signed 8-bit type */ -#define TIFF_INT8_T signed char - -/* Unsigned 16-bit type */ -#define TIFF_UINT16_T unsigned short - -/* Unsigned 32-bit type */ -#define TIFF_UINT32_T unsigned int - -/* Unsigned 64-bit type */ -#define TIFF_UINT64_T unsigned long - -/* Unsigned 8-bit type */ -#define TIFF_UINT8_T unsigned char - -/* Signed size type */ -#define TIFF_SSIZE_T signed long - -/* Pointer difference type */ -#define TIFF_PTRDIFF_T ptrdiff_t - -/* Define to 1 if the system has the type `int16'. */ -/* #undef HAVE_INT16 */ - -/* Define to 1 if the system has the type `int32'. */ -/* #undef HAVE_INT32 */ - -/* Define to 1 if the system has the type `int8'. */ -/* #undef HAVE_INT8 */ - -/* Compatibility stuff. */ - -/* Define as 0 or 1 according to the floating point format suported by the - machine */ -#define HAVE_IEEEFP 1 - -/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ -#define HOST_FILLORDER FILLORDER_LSB2MSB - -/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian - (Intel) */ -#define HOST_BIGENDIAN 0 - -/* Support CCITT Group 3 & 4 algorithms */ -#define CCITT_SUPPORT 1 - -/* Support JPEG compression (requires IJG JPEG library) */ -/* #undef JPEG_SUPPORT */ - -/* Support JBIG compression (requires JBIG-KIT library) */ -/* #undef JBIG_SUPPORT */ - -/* Support LogLuv high dynamic range encoding */ -#define LOGLUV_SUPPORT 1 - -/* Support LZW algorithm */ -#define LZW_SUPPORT 1 - -/* Support NeXT 2-bit RLE algorithm */ -#define NEXT_SUPPORT 1 - -/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation - fails with unpatched IJG JPEG library) */ -/* #undef OJPEG_SUPPORT */ - -/* Support Macintosh PackBits algorithm */ -#define PACKBITS_SUPPORT 1 - -/* Support Pixar log-format algorithm (requires Zlib) */ -#define PIXARLOG_SUPPORT 1 - -/* Support ThunderScan 4-bit RLE algorithm */ -#define THUNDER_SUPPORT 1 - -/* Support Deflate compression */ -#define ZIP_SUPPORT 1 - -/* Support strip chopping (whether or not to convert single-strip uncompressed - images to mutiple strips of ~8Kb to reduce memory usage) */ -#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP - -/* Enable SubIFD tag (330) support */ -#define SUBIFD_SUPPORT 1 - -/* Treat extra sample as alpha (default enabled). The RGBA interface will - treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many - packages produce RGBA files but don't mark the alpha properly. */ -#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 - -/* Pick up YCbCr subsampling info from the JPEG data stream to support files - lacking the tag (default enabled). */ -#define CHECK_JPEG_YCBCR_SUBSAMPLING 1 - -/* Support MS MDI magic number files as TIFF */ -#define MDI_SUPPORT 1 - -/* - * Feature support definitions. - * XXX: These macros are obsoleted. Don't use them in your apps! - * Macros stays here for backward compatibility and should be always defined. - */ -#define COLORIMETRY_SUPPORT -#define YCBCR_SUPPORT -#define CMYK_SUPPORT -#define ICC_SUPPORT -#define PHOTOSHOP_SUPPORT -#define IPTC_SUPPORT - -#endif /* _TIFFCONF_ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffio.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffio.h deleted file mode 100644 index 038b67013f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffio.h +++ /dev/null @@ -1,557 +0,0 @@ -/* $Id: tiffio.h,v 1.91 2012-07-29 15:45:29 tgl Exp $ */ - -/* - * Copyright (c) 1988-1997 Sam Leffler - * Copyright (c) 1991-1997 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the names of - * Sam Leffler and Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Sam Leffler and Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#ifndef _TIFFIO_ -#define _TIFFIO_ - -/* - * TIFF I/O Library Definitions. - */ -#include "tiff.h" -#include "tiffvers.h" - -/* - * TIFF is defined as an incomplete type to hide the - * library's internal data structures from clients. - */ -typedef struct tiff TIFF; - -/* - * The following typedefs define the intrinsic size of - * data types used in the *exported* interfaces. These - * definitions depend on the proper definition of types - * in tiff.h. Note also that the varargs interface used - * to pass tag types and values uses the types defined in - * tiff.h directly. - * - * NB: ttag_t is unsigned int and not unsigned short because - * ANSI C requires that the type before the ellipsis be a - * promoted type (i.e. one of int, unsigned int, pointer, - * or double) and because we defined pseudo-tags that are - * outside the range of legal Aldus-assigned tags. - * NB: tsize_t is int32 and not uint32 because some functions - * return -1. - * NB: toff_t is not off_t for many reasons; TIFFs max out at - * 32-bit file offsets, and BigTIFF maxes out at 64-bit - * offsets being the most important, and to ensure use of - * a consistently unsigned type across architectures. - * Prior to libtiff 4.0, this was an unsigned 32 bit type. - */ -/* - * this is the machine addressing size type, only it's signed, so make it - * int32 on 32bit machines, int64 on 64bit machines - */ -typedef TIFF_SSIZE_T tmsize_t; -typedef uint64 toff_t; /* file offset */ -/* the following are deprecated and should be replaced by their defining - counterparts */ -typedef uint32 ttag_t; /* directory tag */ -typedef uint16 tdir_t; /* directory index */ -typedef uint16 tsample_t; /* sample number */ -typedef uint32 tstrile_t; /* strip or tile number */ -typedef tstrile_t tstrip_t; /* strip number */ -typedef tstrile_t ttile_t; /* tile number */ -typedef tmsize_t tsize_t; /* i/o size in bytes */ -typedef void* tdata_t; /* image data ref */ - -#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32)) -#define __WIN32__ -#endif - -/* - * On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c - * or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c). - * - * By default tif_unix.c is assumed. - */ - -#if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) -# if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO) -# define AVOID_WIN32_FILEIO -# endif -#endif - -#if defined(USE_WIN32_FILEIO) -# define VC_EXTRALEAN -# include -# ifdef __WIN32__ -DECLARE_HANDLE(thandle_t); /* Win32 file handle */ -# else -typedef HFILE thandle_t; /* client data handle */ -# endif /* __WIN32__ */ -#else -typedef void* thandle_t; /* client data handle */ -#endif /* USE_WIN32_FILEIO */ - -/* - * Flags to pass to TIFFPrintDirectory to control - * printing of data structures that are potentially - * very large. Bit-or these flags to enable printing - * multiple items. - */ -#define TIFFPRINT_NONE 0x0 /* no extra info */ -#define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */ -#define TIFFPRINT_CURVES 0x2 /* color/gray response curves */ -#define TIFFPRINT_COLORMAP 0x4 /* colormap */ -#define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */ -#define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */ -#define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */ - -/* - * Colour conversion stuff - */ - -/* reference white */ -#define D65_X0 (95.0470F) -#define D65_Y0 (100.0F) -#define D65_Z0 (108.8827F) - -#define D50_X0 (96.4250F) -#define D50_Y0 (100.0F) -#define D50_Z0 (82.4680F) - -/* Structure for holding information about a display device. */ - -typedef unsigned char TIFFRGBValue; /* 8-bit samples */ - -typedef struct { - float d_mat[3][3]; /* XYZ -> luminance matrix */ - float d_YCR; /* Light o/p for reference white */ - float d_YCG; - float d_YCB; - uint32 d_Vrwr; /* Pixel values for ref. white */ - uint32 d_Vrwg; - uint32 d_Vrwb; - float d_Y0R; /* Residual light for black pixel */ - float d_Y0G; - float d_Y0B; - float d_gammaR; /* Gamma values for the three guns */ - float d_gammaG; - float d_gammaB; -} TIFFDisplay; - -typedef struct { /* YCbCr->RGB support */ - TIFFRGBValue* clamptab; /* range clamping table */ - int* Cr_r_tab; - int* Cb_b_tab; - int32* Cr_g_tab; - int32* Cb_g_tab; - int32* Y_tab; -} TIFFYCbCrToRGB; - -typedef struct { /* CIE Lab 1976->RGB support */ - int range; /* Size of conversion table */ -#define CIELABTORGB_TABLE_RANGE 1500 - float rstep, gstep, bstep; - float X0, Y0, Z0; /* Reference white point */ - TIFFDisplay display; - float Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr to r */ - float Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg to g */ - float Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb to b */ -} TIFFCIELabToRGB; - -/* - * RGBA-style image support. - */ -typedef struct _TIFFRGBAImage TIFFRGBAImage; -/* - * The image reading and conversion routines invoke - * ``put routines'' to copy/image/whatever tiles of - * raw image data. A default set of routines are - * provided to convert/copy raw image data to 8-bit - * packed ABGR format rasters. Applications can supply - * alternate routines that unpack the data into a - * different format or, for example, unpack the data - * and draw the unpacked raster on the display. - */ -typedef void (*tileContigRoutine) - (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32, - unsigned char*); -typedef void (*tileSeparateRoutine) - (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32, - unsigned char*, unsigned char*, unsigned char*, unsigned char*); -/* - * RGBA-reader state. - */ -struct _TIFFRGBAImage { - TIFF* tif; /* image handle */ - int stoponerr; /* stop on read error */ - int isContig; /* data is packed/separate */ - int alpha; /* type of alpha data present */ - uint32 width; /* image width */ - uint32 height; /* image height */ - uint16 bitspersample; /* image bits/sample */ - uint16 samplesperpixel; /* image samples/pixel */ - uint16 orientation; /* image orientation */ - uint16 req_orientation; /* requested orientation */ - uint16 photometric; /* image photometric interp */ - uint16* redcmap; /* colormap pallete */ - uint16* greencmap; - uint16* bluecmap; - /* get image data routine */ - int (*get)(TIFFRGBAImage*, uint32*, uint32, uint32); - /* put decoded strip/tile */ - union { - void (*any)(TIFFRGBAImage*); - tileContigRoutine contig; - tileSeparateRoutine separate; - } put; - TIFFRGBValue* Map; /* sample mapping array */ - uint32** BWmap; /* black&white map */ - uint32** PALmap; /* palette image map */ - TIFFYCbCrToRGB* ycbcr; /* YCbCr conversion state */ - TIFFCIELabToRGB* cielab; /* CIE L*a*b conversion state */ - - uint8* UaToAa; /* Unassociated alpha to associated alpha convertion LUT */ - uint8* Bitdepth16To8; /* LUT for conversion from 16bit to 8bit values */ - - int row_offset; - int col_offset; -}; - -/* - * Macros for extracting components from the - * packed ABGR form returned by TIFFReadRGBAImage. - */ -#define TIFFGetR(abgr) ((abgr) & 0xff) -#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff) -#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff) -#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff) - -/* - * A CODEC is a software package that implements decoding, - * encoding, or decoding+encoding of a compression algorithm. - * The library provides a collection of builtin codecs. - * More codecs may be registered through calls to the library - * and/or the builtin implementations may be overridden. - */ -typedef int (*TIFFInitMethod)(TIFF*, int); -typedef struct { - char* name; - uint16 scheme; - TIFFInitMethod init; -} TIFFCodec; - -#include -#include - -/* share internal LogLuv conversion routines? */ -#ifndef LOGLUV_PUBLIC -#define LOGLUV_PUBLIC 1 -#endif - -#if !defined(__GNUC__) && !defined(__attribute__) -# define __attribute__(x) /*nothing*/ -#endif - -#if defined(c_plusplus) || defined(__cplusplus) -extern "C" { -#endif -typedef void (*TIFFErrorHandler)(const char*, const char*, va_list); -typedef void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list); -typedef tmsize_t (*TIFFReadWriteProc)(thandle_t, void*, tmsize_t); -typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int); -typedef int (*TIFFCloseProc)(thandle_t); -typedef toff_t (*TIFFSizeProc)(thandle_t); -typedef int (*TIFFMapFileProc)(thandle_t, void** base, toff_t* size); -typedef void (*TIFFUnmapFileProc)(thandle_t, void* base, toff_t size); -typedef void (*TIFFExtendProc)(TIFF*); - -extern const char* TIFFGetVersion(void); - -extern const TIFFCodec* TIFFFindCODEC(uint16); -extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod); -extern void TIFFUnRegisterCODEC(TIFFCodec*); -extern int TIFFIsCODECConfigured(uint16); -extern TIFFCodec* TIFFGetConfiguredCODECs(void); - -/* - * Auxiliary functions. - */ - -extern void* _TIFFmalloc(tmsize_t s); -extern void* _TIFFrealloc(void* p, tmsize_t s); -extern void _TIFFmemset(void* p, int v, tmsize_t c); -extern void _TIFFmemcpy(void* d, const void* s, tmsize_t c); -extern int _TIFFmemcmp(const void* p1, const void* p2, tmsize_t c); -extern void _TIFFfree(void* p); - -/* -** Stuff, related to tag handling and creating custom tags. -*/ -extern int TIFFGetTagListCount( TIFF * ); -extern uint32 TIFFGetTagListEntry( TIFF *, int tag_index ); - -#define TIFF_ANY TIFF_NOTYPE /* for field descriptor searching */ -#define TIFF_VARIABLE -1 /* marker for variable length tags */ -#define TIFF_SPP -2 /* marker for SamplesPerPixel tags */ -#define TIFF_VARIABLE2 -3 /* marker for uint32 var-length tags */ - -#define FIELD_CUSTOM 65 - -typedef struct _TIFFField TIFFField; -typedef struct _TIFFFieldArray TIFFFieldArray; - -extern const TIFFField* TIFFFindField(TIFF *, uint32, TIFFDataType); -extern const TIFFField* TIFFFieldWithTag(TIFF*, uint32); -extern const TIFFField* TIFFFieldWithName(TIFF*, const char *); - -extern uint32 TIFFFieldTag(const TIFFField*); -extern const char* TIFFFieldName(const TIFFField*); -extern TIFFDataType TIFFFieldDataType(const TIFFField*); -extern int TIFFFieldPassCount(const TIFFField*); -extern int TIFFFieldReadCount(const TIFFField*); -extern int TIFFFieldWriteCount(const TIFFField*); - -typedef int (*TIFFVSetMethod)(TIFF*, uint32, va_list); -typedef int (*TIFFVGetMethod)(TIFF*, uint32, va_list); -typedef void (*TIFFPrintMethod)(TIFF*, FILE*, long); - -typedef struct { - TIFFVSetMethod vsetfield; /* tag set routine */ - TIFFVGetMethod vgetfield; /* tag get routine */ - TIFFPrintMethod printdir; /* directory print routine */ -} TIFFTagMethods; - -extern TIFFTagMethods *TIFFAccessTagMethods(TIFF *); -extern void *TIFFGetClientInfo(TIFF *, const char *); -extern void TIFFSetClientInfo(TIFF *, void *, const char *); - -extern void TIFFCleanup(TIFF* tif); -extern void TIFFClose(TIFF* tif); -extern int TIFFFlush(TIFF* tif); -extern int TIFFFlushData(TIFF* tif); -extern int TIFFGetField(TIFF* tif, uint32 tag, ...); -extern int TIFFVGetField(TIFF* tif, uint32 tag, va_list ap); -extern int TIFFGetFieldDefaulted(TIFF* tif, uint32 tag, ...); -extern int TIFFVGetFieldDefaulted(TIFF* tif, uint32 tag, va_list ap); -extern int TIFFReadDirectory(TIFF* tif); -extern int TIFFReadCustomDirectory(TIFF* tif, toff_t diroff, const TIFFFieldArray* infoarray); -extern int TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff); -extern uint64 TIFFScanlineSize64(TIFF* tif); -extern tmsize_t TIFFScanlineSize(TIFF* tif); -extern uint64 TIFFRasterScanlineSize64(TIFF* tif); -extern tmsize_t TIFFRasterScanlineSize(TIFF* tif); -extern uint64 TIFFStripSize64(TIFF* tif); -extern tmsize_t TIFFStripSize(TIFF* tif); -extern uint64 TIFFRawStripSize64(TIFF* tif, uint32 strip); -extern tmsize_t TIFFRawStripSize(TIFF* tif, uint32 strip); -extern uint64 TIFFVStripSize64(TIFF* tif, uint32 nrows); -extern tmsize_t TIFFVStripSize(TIFF* tif, uint32 nrows); -extern uint64 TIFFTileRowSize64(TIFF* tif); -extern tmsize_t TIFFTileRowSize(TIFF* tif); -extern uint64 TIFFTileSize64(TIFF* tif); -extern tmsize_t TIFFTileSize(TIFF* tif); -extern uint64 TIFFVTileSize64(TIFF* tif, uint32 nrows); -extern tmsize_t TIFFVTileSize(TIFF* tif, uint32 nrows); -extern uint32 TIFFDefaultStripSize(TIFF* tif, uint32 request); -extern void TIFFDefaultTileSize(TIFF*, uint32*, uint32*); -extern int TIFFFileno(TIFF*); -extern int TIFFSetFileno(TIFF*, int); -extern thandle_t TIFFClientdata(TIFF*); -extern thandle_t TIFFSetClientdata(TIFF*, thandle_t); -extern int TIFFGetMode(TIFF*); -extern int TIFFSetMode(TIFF*, int); -extern int TIFFIsTiled(TIFF*); -extern int TIFFIsByteSwapped(TIFF*); -extern int TIFFIsUpSampled(TIFF*); -extern int TIFFIsMSB2LSB(TIFF*); -extern int TIFFIsBigEndian(TIFF*); -extern TIFFReadWriteProc TIFFGetReadProc(TIFF*); -extern TIFFReadWriteProc TIFFGetWriteProc(TIFF*); -extern TIFFSeekProc TIFFGetSeekProc(TIFF*); -extern TIFFCloseProc TIFFGetCloseProc(TIFF*); -extern TIFFSizeProc TIFFGetSizeProc(TIFF*); -extern TIFFMapFileProc TIFFGetMapFileProc(TIFF*); -extern TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*); -extern uint32 TIFFCurrentRow(TIFF*); -extern uint16 TIFFCurrentDirectory(TIFF*); -extern uint16 TIFFNumberOfDirectories(TIFF*); -extern uint64 TIFFCurrentDirOffset(TIFF*); -extern uint32 TIFFCurrentStrip(TIFF*); -extern uint32 TIFFCurrentTile(TIFF* tif); -extern int TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size); -extern int TIFFWriteBufferSetup(TIFF* tif, void* bp, tmsize_t size); -extern int TIFFSetupStrips(TIFF *); -extern int TIFFWriteCheck(TIFF*, int, const char *); -extern void TIFFFreeDirectory(TIFF*); -extern int TIFFCreateDirectory(TIFF*); -extern int TIFFCreateCustomDirectory(TIFF*,const TIFFFieldArray*); -extern int TIFFCreateEXIFDirectory(TIFF*); -extern int TIFFLastDirectory(TIFF*); -extern int TIFFSetDirectory(TIFF*, uint16); -extern int TIFFSetSubDirectory(TIFF*, uint64); -extern int TIFFUnlinkDirectory(TIFF*, uint16); -extern int TIFFSetField(TIFF*, uint32, ...); -extern int TIFFVSetField(TIFF*, uint32, va_list); -extern int TIFFUnsetField(TIFF*, uint32); -extern int TIFFWriteDirectory(TIFF *); -extern int TIFFWriteCustomDirectory(TIFF *, uint64 *); -extern int TIFFCheckpointDirectory(TIFF *); -extern int TIFFRewriteDirectory(TIFF *); - -#if defined(c_plusplus) || defined(__cplusplus) -extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0); -extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0); -extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0); -extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0); -extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, - int = ORIENTATION_BOTLEFT, int = 0); -#else -extern void TIFFPrintDirectory(TIFF*, FILE*, long); -extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample); -extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample); -extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int); -extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int); -#endif - -extern int TIFFReadRGBAStrip(TIFF*, uint32, uint32 * ); -extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * ); -extern int TIFFRGBAImageOK(TIFF*, char [1024]); -extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]); -extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32); -extern void TIFFRGBAImageEnd(TIFFRGBAImage*); -extern TIFF* TIFFOpen(const char*, const char*); -# ifdef __WIN32__ -extern TIFF* TIFFOpenW(const wchar_t*, const char*); -# endif /* __WIN32__ */ -extern TIFF* TIFFFdOpen(int, const char*, const char*); -extern TIFF* TIFFClientOpen(const char*, const char*, - thandle_t, - TIFFReadWriteProc, TIFFReadWriteProc, - TIFFSeekProc, TIFFCloseProc, - TIFFSizeProc, - TIFFMapFileProc, TIFFUnmapFileProc); -extern const char* TIFFFileName(TIFF*); -extern const char* TIFFSetFileName(TIFF*, const char *); -extern void TIFFError(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3))); -extern void TIFFErrorExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4))); -extern void TIFFWarning(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3))); -extern void TIFFWarningExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4))); -extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler); -extern TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt); -extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler); -extern TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt); -extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc); -extern uint32 TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s); -extern int TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s); -extern uint32 TIFFNumberOfTiles(TIFF*); -extern tmsize_t TIFFReadTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s); -extern tmsize_t TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s); -extern uint32 TIFFComputeStrip(TIFF*, uint32, uint16); -extern uint32 TIFFNumberOfStrips(TIFF*); -extern tmsize_t TIFFReadEncodedStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size); -extern tmsize_t TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size); -extern tmsize_t TIFFReadEncodedTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size); -extern tmsize_t TIFFReadRawTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size); -extern tmsize_t TIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc); -extern tmsize_t TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc); -extern tmsize_t TIFFWriteEncodedTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc); -extern tmsize_t TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc); -extern int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */ -extern void TIFFSetWriteOffset(TIFF* tif, toff_t off); -extern void TIFFSwabShort(uint16*); -extern void TIFFSwabLong(uint32*); -extern void TIFFSwabLong8(uint64*); -extern void TIFFSwabFloat(float*); -extern void TIFFSwabDouble(double*); -extern void TIFFSwabArrayOfShort(uint16* wp, tmsize_t n); -extern void TIFFSwabArrayOfTriples(uint8* tp, tmsize_t n); -extern void TIFFSwabArrayOfLong(uint32* lp, tmsize_t n); -extern void TIFFSwabArrayOfLong8(uint64* lp, tmsize_t n); -extern void TIFFSwabArrayOfFloat(float* fp, tmsize_t n); -extern void TIFFSwabArrayOfDouble(double* dp, tmsize_t n); -extern void TIFFReverseBits(uint8* cp, tmsize_t n); -extern const unsigned char* TIFFGetBitRevTable(int); - -#ifdef LOGLUV_PUBLIC -#define U_NEU 0.210526316 -#define V_NEU 0.473684211 -#define UVSCALE 410. -extern double LogL16toY(int); -extern double LogL10toY(int); -extern void XYZtoRGB24(float*, uint8*); -extern int uv_decode(double*, double*, int); -extern void LogLuv24toXYZ(uint32, float*); -extern void LogLuv32toXYZ(uint32, float*); -#if defined(c_plusplus) || defined(__cplusplus) -extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER); -extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER); -extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER); -extern uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER); -extern uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER); -#else -extern int LogL16fromY(double, int); -extern int LogL10fromY(double, int); -extern int uv_encode(double, double, int); -extern uint32 LogLuv24fromXYZ(float*, int); -extern uint32 LogLuv32fromXYZ(float*, int); -#endif -#endif /* LOGLUV_PUBLIC */ - -extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, const TIFFDisplay *, float*); -extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32, - float *, float *, float *); -extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, - uint32 *, uint32 *, uint32 *); - -extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); -extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32, - uint32 *, uint32 *, uint32 *); - -/**************************************************************************** - * O B S O L E T E D I N T E R F A C E S - * - * Don't use this stuff in your applications, it may be removed in the future - * libtiff versions. - ****************************************************************************/ -typedef struct { - ttag_t field_tag; /* field's tag */ - short field_readcount; /* read count/TIFF_VARIABLE/TIFF_SPP */ - short field_writecount; /* write count/TIFF_VARIABLE */ - TIFFDataType field_type; /* type of associated data */ - unsigned short field_bit; /* bit in fieldsset bit vector */ - unsigned char field_oktochange; /* if true, can change while writing */ - unsigned char field_passcount; /* if true, pass dir count on set */ - char *field_name; /* ASCII name */ -} TIFFFieldInfo; - -extern int TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], uint32); - -#if defined(c_plusplus) || defined(__cplusplus) -} -#endif - -#endif /* _TIFFIO_ */ - -/* vim: set ts=8 sts=8 sw=8 noet: */ -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffvers.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffvers.h deleted file mode 100644 index 40edc813d5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/tiff/tiffvers.h +++ /dev/null @@ -1,9 +0,0 @@ -#define TIFFLIB_VERSION_STR "LIBTIFF, Version 4.0.3\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc." -/* - * This define can be used in code that requires - * compilation-related definitions specific to a - * version or versions of the library. Runtime - * version checking should be done based on the - * string returned by TIFFGetVersion. - */ -#define TIFFLIB_VERSION 20120922 diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/vorbis/codec.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/vorbis/codec.h deleted file mode 100644 index 999aa33510..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/vorbis/codec.h +++ /dev/null @@ -1,243 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - - ******************************************************************** - - function: libvorbis codec headers - last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $ - - ********************************************************************/ - -#ifndef _vorbis_codec_h_ -#define _vorbis_codec_h_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include - -typedef struct vorbis_info{ - int version; - int channels; - long rate; - - /* The below bitrate declarations are *hints*. - Combinations of the three values carry the following implications: - - all three set to the same value: - implies a fixed rate bitstream - only nominal set: - implies a VBR stream that averages the nominal bitrate. No hard - upper/lower limit - upper and or lower set: - implies a VBR bitstream that obeys the bitrate limits. nominal - may also be set to give a nominal rate. - none set: - the coder does not care to speculate. - */ - - long bitrate_upper; - long bitrate_nominal; - long bitrate_lower; - long bitrate_window; - - void *codec_setup; -} vorbis_info; - -/* vorbis_dsp_state buffers the current vorbis audio - analysis/synthesis state. The DSP state belongs to a specific - logical bitstream ****************************************************/ -typedef struct vorbis_dsp_state{ - int analysisp; - vorbis_info *vi; - - float **pcm; - float **pcmret; - int pcm_storage; - int pcm_current; - int pcm_returned; - - int preextrapolate; - int eofflag; - - long lW; - long W; - long nW; - long centerW; - - ogg_int64_t granulepos; - ogg_int64_t sequence; - - ogg_int64_t glue_bits; - ogg_int64_t time_bits; - ogg_int64_t floor_bits; - ogg_int64_t res_bits; - - void *backend_state; -} vorbis_dsp_state; - -typedef struct vorbis_block{ - /* necessary stream state for linking to the framing abstraction */ - float **pcm; /* this is a pointer into local storage */ - oggpack_buffer opb; - - long lW; - long W; - long nW; - int pcmend; - int mode; - - int eofflag; - ogg_int64_t granulepos; - ogg_int64_t sequence; - vorbis_dsp_state *vd; /* For read-only access of configuration */ - - /* local storage to avoid remallocing; it's up to the mapping to - structure it */ - void *localstore; - long localtop; - long localalloc; - long totaluse; - struct alloc_chain *reap; - - /* bitmetrics for the frame */ - long glue_bits; - long time_bits; - long floor_bits; - long res_bits; - - void *internal; - -} vorbis_block; - -/* vorbis_block is a single block of data to be processed as part of -the analysis/synthesis stream; it belongs to a specific logical -bitstream, but is independent from other vorbis_blocks belonging to -that logical bitstream. *************************************************/ - -struct alloc_chain{ - void *ptr; - struct alloc_chain *next; -}; - -/* vorbis_info contains all the setup information specific to the - specific compression/decompression mode in progress (eg, - psychoacoustic settings, channel setup, options, codebook - etc). vorbis_info and substructures are in backends.h. -*********************************************************************/ - -/* the comments are not part of vorbis_info so that vorbis_info can be - static storage */ -typedef struct vorbis_comment{ - /* unlimited user comment fields. libvorbis writes 'libvorbis' - whatever vendor is set to in encode */ - char **user_comments; - int *comment_lengths; - int comments; - char *vendor; - -} vorbis_comment; - - -/* libvorbis encodes in two abstraction layers; first we perform DSP - and produce a packet (see docs/analysis.txt). The packet is then - coded into a framed OggSquish bitstream by the second layer (see - docs/framing.txt). Decode is the reverse process; we sync/frame - the bitstream and extract individual packets, then decode the - packet back into PCM audio. - - The extra framing/packetizing is used in streaming formats, such as - files. Over the net (such as with UDP), the framing and - packetization aren't necessary as they're provided by the transport - and the streaming layer is not used */ - -/* Vorbis PRIMITIVES: general ***************************************/ - -extern void vorbis_info_init(vorbis_info *vi); -extern void vorbis_info_clear(vorbis_info *vi); -extern int vorbis_info_blocksize(vorbis_info *vi,int zo); -extern void vorbis_comment_init(vorbis_comment *vc); -extern void vorbis_comment_add(vorbis_comment *vc, const char *comment); -extern void vorbis_comment_add_tag(vorbis_comment *vc, - const char *tag, const char *contents); -extern char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count); -extern int vorbis_comment_query_count(vorbis_comment *vc, const char *tag); -extern void vorbis_comment_clear(vorbis_comment *vc); - -extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); -extern int vorbis_block_clear(vorbis_block *vb); -extern void vorbis_dsp_clear(vorbis_dsp_state *v); -extern double vorbis_granule_time(vorbis_dsp_state *v, - ogg_int64_t granulepos); - -extern const char *vorbis_version_string(void); - -/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/ - -extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op); -extern int vorbis_analysis_headerout(vorbis_dsp_state *v, - vorbis_comment *vc, - ogg_packet *op, - ogg_packet *op_comm, - ogg_packet *op_code); -extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op); - -extern int vorbis_bitrate_addblock(vorbis_block *vb); -extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, - ogg_packet *op); - -/* Vorbis PRIMITIVES: synthesis layer *******************************/ -extern int vorbis_synthesis_idheader(ogg_packet *op); -extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, - ogg_packet *op); - -extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_synthesis_restart(vorbis_dsp_state *v); -extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); -extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op); -extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm); -extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm); -extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); -extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); - -extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag); -extern int vorbis_synthesis_halfrate_p(vorbis_info *v); - -/* Vorbis ERRORS and return codes ***********************************/ - -#define OV_FALSE -1 -#define OV_EOF -2 -#define OV_HOLE -3 - -#define OV_EREAD -128 -#define OV_EFAULT -129 -#define OV_EIMPL -130 -#define OV_EINVAL -131 -#define OV_ENOTVORBIS -132 -#define OV_EBADHEADER -133 -#define OV_EVERSION -134 -#define OV_ENOTAUDIO -135 -#define OV_EBADPACKET -136 -#define OV_EBADLINK -137 -#define OV_ENOSEEK -138 - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/vorbis/vorbisfile.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/vorbis/vorbisfile.h deleted file mode 100644 index 9271331e72..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/include/vorbis/vorbisfile.h +++ /dev/null @@ -1,206 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: stdio-based convenience library for opening/seeking/decoding - last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ - - ********************************************************************/ - -#ifndef _OV_FILE_H_ -#define _OV_FILE_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include "codec.h" - -/* The function prototypes for the callbacks are basically the same as for - * the stdio functions fread, fseek, fclose, ftell. - * The one difference is that the FILE * arguments have been replaced with - * a void * - this is to be used as a pointer to whatever internal data these - * functions might need. In the stdio case, it's just a FILE * cast to a void * - * - * If you use other functions, check the docs for these functions and return - * the right values. For seek_func(), you *MUST* return -1 if the stream is - * unseekable - */ -typedef struct { - size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); - int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); - int (*close_func) (void *datasource); - long (*tell_func) (void *datasource); -} ov_callbacks; - -#ifndef OV_EXCLUDE_STATIC_CALLBACKS - -/* a few sets of convenient callbacks, especially for use under - * Windows where ov_open_callbacks() should always be used instead of - * ov_open() to avoid problems with incompatible crt.o version linking - * issues. */ - -static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){ - if(f==NULL)return(-1); - -#ifdef __MINGW32__ - return fseeko64(f,off,whence); -#elif defined (_WIN32) - return _fseeki64(f,off,whence); -#else - return fseek(f,off,whence); -#endif -} - -/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as - * static data. That means that every file which includes this header - * will get its own copy of these structs whether it uses them or - * not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS. - * These static symbols are essential on platforms such as Windows on - * which several different versions of stdio support may be linked to - * by different DLLs, and we need to be certain we know which one - * we're using (the same one as the main application). - */ - -static ov_callbacks OV_CALLBACKS_DEFAULT = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, - (int (*)(void *)) fclose, - (long (*)(void *)) ftell -}; - -static ov_callbacks OV_CALLBACKS_NOCLOSE = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, - (int (*)(void *)) NULL, - (long (*)(void *)) ftell -}; - -static ov_callbacks OV_CALLBACKS_STREAMONLY = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) NULL, - (int (*)(void *)) fclose, - (long (*)(void *)) NULL -}; - -static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) NULL, - (int (*)(void *)) NULL, - (long (*)(void *)) NULL -}; - -#endif - -#define NOTOPEN 0 -#define PARTOPEN 1 -#define OPENED 2 -#define STREAMSET 3 -#define INITSET 4 - -typedef struct OggVorbis_File { - void *datasource; /* Pointer to a FILE *, etc. */ - int seekable; - ogg_int64_t offset; - ogg_int64_t end; - ogg_sync_state oy; - - /* If the FILE handle isn't seekable (eg, a pipe), only the current - stream appears */ - int links; - ogg_int64_t *offsets; - ogg_int64_t *dataoffsets; - long *serialnos; - ogg_int64_t *pcmlengths; /* overloaded to maintain binary - compatibility; x2 size, stores both - beginning and end values */ - vorbis_info *vi; - vorbis_comment *vc; - - /* Decoding working state local storage */ - ogg_int64_t pcm_offset; - int ready_state; - long current_serialno; - int current_link; - - double bittrack; - double samptrack; - - ogg_stream_state os; /* take physical pages, weld into a logical - stream of packets */ - vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ - vorbis_block vb; /* local working space for packet->PCM decode */ - - ov_callbacks callbacks; - -} OggVorbis_File; - - -extern int ov_clear(OggVorbis_File *vf); -extern int ov_fopen(const char *path,OggVorbis_File *vf); -extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); -extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, - const char *initial, long ibytes, ov_callbacks callbacks); - -extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); -extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, - const char *initial, long ibytes, ov_callbacks callbacks); -extern int ov_test_open(OggVorbis_File *vf); - -extern long ov_bitrate(OggVorbis_File *vf,int i); -extern long ov_bitrate_instant(OggVorbis_File *vf); -extern long ov_streams(OggVorbis_File *vf); -extern long ov_seekable(OggVorbis_File *vf); -extern long ov_serialnumber(OggVorbis_File *vf,int i); - -extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); -extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); -extern double ov_time_total(OggVorbis_File *vf,int i); - -extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_time_seek(OggVorbis_File *vf,double pos); -extern int ov_time_seek_page(OggVorbis_File *vf,double pos); - -extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_time_seek_lap(OggVorbis_File *vf,double pos); -extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos); - -extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); -extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); -extern double ov_time_tell(OggVorbis_File *vf); - -extern vorbis_info *ov_info(OggVorbis_File *vf,int link); -extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); - -extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, - int *bitstream); -extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, - int bigendianp,int word,int sgned,int *bitstream, - void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param); -extern long ov_read(OggVorbis_File *vf,char *buffer,int length, - int bigendianp,int word,int sgned,int *bitstream); -extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2); - -extern int ov_halfrate(OggVorbis_File *vf,int flag); -extern int ov_halfrate_p(OggVorbis_File *vf); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/ao/libmacosx.so b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/ao/libmacosx.so deleted file mode 100644 index 05afa474b2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/ao/libmacosx.so and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libao.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libao.dylib deleted file mode 100644 index 1e73f0bcca..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libao.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavcodec-gd.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavcodec-gd.dylib deleted file mode 100644 index e7f70ddf9c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavcodec-gd.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavformat-gd.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavformat-gd.dylib deleted file mode 100644 index d55392b9a4..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavformat-gd.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavutil-gd.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavutil-gd.dylib deleted file mode 100644 index 38e75a7b92..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libavutil-gd.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libeb.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libeb.dylib deleted file mode 100644 index cc29832367..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libeb.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libhunspell-1.2.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libhunspell-1.2.dylib deleted file mode 100755 index 6588ab22d1..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libhunspell-1.2.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libiconv.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libiconv.dylib deleted file mode 100755 index e48f9d5c90..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libiconv.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/liblzma.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/liblzma.a deleted file mode 100644 index 8ed7369629..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/liblzma.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/liblzo2.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/liblzo2.dylib deleted file mode 100644 index f6c6ebc102..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/liblzo2.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libogg.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libogg.dylib deleted file mode 100755 index e14cf2654e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libogg.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libopencc.2.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libopencc.2.dylib deleted file mode 100644 index 8cddb06855..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libopencc.2.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libtiff.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libtiff.dylib deleted file mode 100644 index cd77a165f1..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libtiff.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libvorbis.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libvorbis.dylib deleted file mode 100755 index bc03887c77..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libvorbis.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libvorbisfile.dylib b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libvorbisfile.dylib deleted file mode 100755 index c9a9ce6152..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/lib/libvorbisfile.dylib and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/readme.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/readme.txt deleted file mode 100644 index 74b5dec197..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -This directory holds precompiled third-party libraries and their header files -used to build GoldenDict under Mac OS X. Those are supplied merely to ease -the build process. No other platform except Mac OS X uses those files, so they -can safely be removed for Linux builds etc. -Due credit goes to those created those libraries. The libraries are -copyrighted by their responsive copyright holders and distributed in -compliance to their respective licenses. No modifications were made except -those needed in order to build the libraries correctly. The source codes -aren't shipped here merely to shrink the size of the distribution, and can -be downloaded from the original libraries' websites separately. diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/scripts/libao-build.sh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/scripts/libao-build.sh deleted file mode 100644 index 1bc7d61881..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/scripts/libao-build.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# $1 - GoldenDict source directory - -if [ ${OSTYPE:0:6} != "darwin" ]; then - echo "OSX Only" - exit 1 -fi - - -if [[ -n "$1" && ! -d "$1" ]]; then - echo "Invalid GoldenDict source directory" - exit 1 -fi - -./configure \ - CFLAGS="-arch i386 -arch x86_64 -DCUSTOM_AO_PLUGIN_PATH=\\\"@executable_path/../Frameworks/ao\\\"" \ - LDFLAGS="-arch i386 -arch x86_64" \ - --disable-dependency-tracking - -make clean && make - - -install_name_tool \ - -id @executable_path/../Frameworks/libao.dylib \ - src/.libs/libao.dylib - -for PLUGIN_DIR in `find src/plugins -type d -maxdepth 1`; do - PLUGIN_NAME=$(basename "$PLUGIN_DIR") - PLUGIN_PATH=$PLUGIN_DIR/.libs/lib$PLUGIN_NAME.so - if [ -f "$PLUGIN_PATH" ]; then - install_name_tool \ - -id @executable_path/../Frameworks/ao/$PLUGIN_NAME.so \ - $PLUGIN_PATH - fi -done - -if [ -n "$1" ]; then - cp src/.libs/libao.dylib $1/maclibs/lib - # Copy plugins - mkdir -p $1/maclibs/lib/ao - find src/plugins -type f -maxdepth 3 -name "*.so" -exec cp {} $1/maclibs/lib/ao \; -fi diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/scripts/libao.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/scripts/libao.txt deleted file mode 100644 index e2fef53639..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maclibs/scripts/libao.txt +++ /dev/null @@ -1,9 +0,0 @@ -Patched libao source for OSX can be found here: -https://github.com/timonwong/libao/tree/goldendict - -You can checkout the source directly using git: - git clone -b goldendict https://github.com/timonwong/libao.git - -Then, copy libao-build.sh (along with this file) to libao source directory, and build using following commands: - chmod +x libao-build.sh - ./libao-build.sh [goldendict source directory] diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/macmouseover.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/macmouseover.hh deleted file mode 100644 index 0f528bc59d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/macmouseover.hh +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef __MACMOUSEOVER_HH_INCLUDED__ -#define __MACMOUSEOVER_HH_INCLUDED__ - -#include -#include -#include -#include "config.hh" -#include "keyboardstate.hh" -#include "mutex.hh" - -/// This is a mouseover feature interface, where you can point your mouse at -/// any word in any window and wait a little, and it would provide that word -/// for the translation. - -class MacMouseOver: public QObject, public KeyboardState -{ - Q_OBJECT - -public: - - /// The class is a singleton. - static MacMouseOver & instance(); - - /// Enables mouseover. The mouseover is initially disabled. - void enableMouseOver(); - /// Disables mouseover. - void disableMouseOver(); - - /// Set pointer to program configuration - void setPreferencesPtr( Config::Preferences const *ppref ) { pPref = ppref; }; - - /// Called from event loop callback - void mouseMoved(); - - static bool isAXAPIEnabled(); - -signals: - - /// Emitted when there was some text under cursor which was hovered over. - void hovered( QString const &, bool forcePopup ); - -private slots: - void timerShot(); - -private: - - MacMouseOver(); - ~MacMouseOver(); - void handlePosition(); - QString CFStringRefToQString( CFStringRef str ); - void handleRetrievedString( QString & wordSeq, int wordSeqPos ); - - Config::Preferences const *pPref; - QTimer mouseTimer; - CFMachPortRef tapRef; - CFRunLoopSourceRef loop; - Mutex mouseMutex; - AXUIElementRef elementSystemWide; - - bool mouseOverEnabled; - -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/macmouseover.mm b/office/misc/goldendict/files/goldendict-1.5.0-RC2/macmouseover.mm deleted file mode 100644 index 1a065401a4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/macmouseover.mm +++ /dev/null @@ -1,332 +0,0 @@ -#include "macmouseover.hh" -#include -#include -#include -#include -#include - -const int mouseOverInterval = 300; - -CGEventRef eventCallback( CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon ) -{ -(void) proxy; - if( type != kCGEventMouseMoved ) - return event; - static_cast< MacMouseOver * >( refcon )->mouseMoved(); - return event; -} - -static CGPoint carbonScreenPointFromCocoaScreenPoint( NSPoint cocoaPoint ) -{ - NSScreen *foundScreen = nil; - CGPoint thePoint; - - for (NSScreen *screen in [NSScreen screens]) { - if (NSPointInRect(cocoaPoint, [screen frame])) { - foundScreen = screen; - } - } - - if (foundScreen) { - CGFloat screenHeight = [foundScreen frame].size.height; - thePoint = CGPointMake(cocoaPoint.x, screenHeight - cocoaPoint.y - 1); - } - else - thePoint = CGPointMake(0.0, 0.0); - - return thePoint; -} - -MacMouseOver & MacMouseOver::instance() -{ - static MacMouseOver m; - - return m; -} - -MacMouseOver::MacMouseOver() : - pPref(NULL) -, tapRef( 0 ) -, loop( 0 ) -{ - mouseTimer.setSingleShot( true ); - connect( &mouseTimer, SIGNAL( timeout() ), this, SLOT( timerShot() ) ); - - elementSystemWide = AXUIElementCreateSystemWide(); -} - -MacMouseOver::~MacMouseOver() -{ - disableMouseOver(); - - if( tapRef ) - CFRelease( tapRef ); - - if( loop ) - CFRelease( loop ); - - if( elementSystemWide ) - CFRelease( elementSystemWide ); -} - -QString MacMouseOver::CFStringRefToQString( CFStringRef str ) -{ - int length = CFStringGetLength( str ); - if( length == 0 ) - return QString(); - - UniChar *chars = new UniChar[ length ]; - CFStringGetCharacters( str, CFRangeMake( 0, length ), chars ); - - QString result = QString::fromUtf16( chars, length ); - - delete chars; - return result; -} - -void MacMouseOver::mouseMoved() -{ - mouseTimer.start( mouseOverInterval ); -} - -void MacMouseOver::enableMouseOver() -{ - mouseTimer.stop(); - if( !isAXAPIEnabled() ) - return; - if( !tapRef ) - tapRef = CGEventTapCreate( kCGAnnotatedSessionEventTap, kCGHeadInsertEventTap, - kCGEventTapOptionListenOnly, - CGEventMaskBit( kCGEventMouseMoved ), - eventCallback, this ); - if( !tapRef ) - return; - if( !loop ) - loop = CFMachPortCreateRunLoopSource( kCFAllocatorDefault, tapRef, 0 ); - if( loop ) - CFRunLoopAddSource( CFRunLoopGetMain(), loop, kCFRunLoopCommonModes ); -} - -void MacMouseOver::disableMouseOver() -{ - mouseTimer.stop(); - if( loop ) - CFRunLoopRemoveSource( CFRunLoopGetMain(), loop, kCFRunLoopCommonModes ); -} - -void MacMouseOver::timerShot() -{ - if( mouseMutex.tryLock( 0 ) ) - mouseMutex.unlock(); - else - return; - if( !pPref ) - return; - if( !pPref->enableScanPopupModifiers || checkModifiersPressed( pPref->scanPopupModifiers ) ) - handlePosition(); -} - -void MacMouseOver::handlePosition() -{ - Mutex::Lock _( mouseMutex ); - - QString strToTranslate; - - NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ]; - CGPoint pt = carbonScreenPointFromCocoaScreenPoint( [NSEvent mouseLocation] ); - [ pool drain ]; - - CFArrayRef names = 0; - - AXUIElementRef elem = 0; - AXError err = AXUIElementCopyElementAtPosition( elementSystemWide, pt.x, pt.y, &elem ); - - if( err != kAXErrorSuccess ) - return; - - for( ; ; ) - { - CFTypeRef parameter = AXValueCreate( kAXValueCGPointType, &pt ); - CFTypeRef rangeValue; - err = AXUIElementCopyParameterizedAttributeNames( elem, &names ); - if( err != kAXErrorSuccess ) - break; - - int numOfAttributes = CFArrayGetCount( names ); - if( CFArrayContainsValue( names, CFRangeMake( 0, numOfAttributes ), CFSTR( "AXRangeForPosition" ) ) ) - { - // Standard interface - err = AXUIElementCopyParameterizedAttributeValue( elem, kAXRangeForPositionParameterizedAttribute, - parameter, ( CFTypeRef * )&rangeValue ); - CFRelease( parameter ); - if( err != kAXErrorSuccess ) - break; - - CFStringRef stringValue; - - CFRange decodedRange = CFRangeMake( 0, 0 ); - bool b = AXValueGetValue( (AXValueRef)rangeValue, kAXValueCFRangeType, &decodedRange ); - CFRelease( rangeValue ); - if( b ) - { - int fromPos = decodedRange.location - 127; - if( fromPos < 0 ) - fromPos = 0; - int wordPos = decodedRange.location - fromPos; // Cursor position in result string - - CFRange range = CFRangeMake( fromPos, wordPos + 1 ); - parameter = AXValueCreate( kAXValueCFRangeType, &range ); - err = AXUIElementCopyParameterizedAttributeValue( elem, kAXStringForRangeParameterizedAttribute, - parameter, (CFTypeRef *)&stringValue ); - CFRelease( parameter ); - if( err != kAXErrorSuccess ) - break; - - strToTranslate = CFStringRefToQString( stringValue ); - CFRelease( stringValue ); - - // Read string further - for( int i = 1; i < 128; i++ ) - { - range = CFRangeMake( decodedRange.location + i, 1 ); - parameter = AXValueCreate( kAXValueCFRangeType, &range ); - err = AXUIElementCopyParameterizedAttributeValue( elem, kAXStringForRangeParameterizedAttribute, - parameter, (CFTypeRef *)&stringValue ); - CFRelease( parameter ); - - if( err != kAXErrorSuccess ) - break; - - QString s = CFStringRefToQString( stringValue ); - CFRelease( stringValue ); - - if( s[ 0 ].isLetterOrNumber() || s[ 0 ] == '-' ) - strToTranslate += s; - else - break; - } - - handleRetrievedString( strToTranslate, wordPos ); - } - } - else if( CFArrayContainsValue( names, CFRangeMake( 0, numOfAttributes ), CFSTR( "AXTextMarkerForPosition" ) ) ) - { - // Safari interface - CFTypeRef marker, range; - CFStringRef str; - err = AXUIElementCopyParameterizedAttributeValue( elem, CFSTR( "AXTextMarkerForPosition" ), - parameter, ( CFTypeRef * )&marker ); - CFRelease( parameter ); - if( err != kAXErrorSuccess ) - break; - - err = AXUIElementCopyParameterizedAttributeValue( elem, CFSTR( "AXLeftWordTextMarkerRangeForTextMarker" ), - marker, ( CFTypeRef * )&range ); - CFRelease( marker ); - if( err != kAXErrorSuccess ) - break; - - err = AXUIElementCopyParameterizedAttributeValue( elem, CFSTR( "AXStringForTextMarkerRange" ), - range, ( CFTypeRef * )&str ); - CFRelease( range ); - if( err == kAXErrorSuccess ) - { - strToTranslate = CFStringRefToQString( str ); - CFRelease( str ); - handleRetrievedString( strToTranslate, 0 ); - } - } - break; - } - if( elem ) - CFRelease( elem ); - if( names ) - CFRelease( names ); -} - -void MacMouseOver::handleRetrievedString( QString & wordSeq, int wordSeqPos ) -{ - - if( wordSeq.isEmpty() ) - return; - - // locate the word inside the sequence - - QString word; - - if ( wordSeq[ wordSeqPos ].isSpace() ) - { - // Currently we ignore such cases - return; - } - else - if ( !wordSeq[ wordSeqPos ].isLetterOrNumber() ) - { - // Special case: the cursor points to something which doesn't look like a - // middle of the word -- assume that it's something that joins two words - // together. - - int begin = wordSeqPos; - - for( ; begin; --begin ) - if ( !wordSeq[ begin - 1 ].isLetterOrNumber() ) - break; - - int end = wordSeqPos; - - while( ++end < wordSeq.size() ) - if ( !wordSeq[ end ].isLetterOrNumber() ) - break; - - if ( end - begin == 1 ) - { - // Well, turns out it was just a single non-letter char, discard it - return; - } - - word = wordSeq.mid( begin, end - begin ); - } - else - { - // Cursor points to a letter -- cut the word it points to - - int begin = wordSeqPos; - - for( ; begin; --begin ) - if ( !wordSeq[ begin - 1 ].isLetterOrNumber() ) - break; - - int end = wordSeqPos; - - while( ++end < wordSeq.size() ) - { - if ( !wordSeq[ end ].isLetterOrNumber() ) - break; - } - word = wordSeq.mid( begin, end - begin ); - } - - // See if we have an RTL char. Reverse the whole string if we do. - - for( int x = 0; x < word.size(); ++x ) - { - QChar::Direction d = word[ x ].direction(); - - if ( d == QChar::DirR || d == QChar::DirAL || - d == QChar::DirRLE || d == QChar::DirRLO ) - { - std::reverse( word.begin(), word.end() ); - break; - } - } - - emit instance().hovered( word, false ); -} - -bool MacMouseOver::isAXAPIEnabled() -{ - if( NSFoundationVersionNumber >= 1000 ) // MacOS 10.9+ - return AXIsProcessTrusted(); - - return AXAPIEnabled(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/main.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/main.cc deleted file mode 100644 index 5b786ab749..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/main.cc +++ /dev/null @@ -1,337 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include "gdappstyle.hh" -#include "mainwindow.hh" -#include "config.hh" - -#include "processwrapper.hh" -#include "hotkeywrapper.hh" - -//#define __DO_DEBUG - -#define LOG_TO_FILE_KEY "--log-to-file" - -#ifdef Q_OS_WIN32 -#include -#endif - -#ifdef __DO_DEBUG -#include -#endif - -#include "termination.hh" -#include "atomic_rename.hh" - -#include -#include -#include -#include -#include - -#include "gddebug.hh" - -#if defined( Q_OS_MAC ) && QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -#include "lionsupport.h" -#endif - -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) - -void gdMessageHandler( QtMsgType type, const QMessageLogContext &context, const QString &mess ) -{ - Q_UNUSED( context ); - QString message( mess ); - const char * msg = message.toUtf8().constData(); - -#else - -void gdMessageHandler( QtMsgType type, const char *msg ) -{ - QString message = QString::fromUtf8( msg ); - -#endif - - switch (type) { - - case QtDebugMsg: - if( logFile.isOpen() ) - message.insert( 0, "Debug: " ); - else - fprintf(stderr, "Debug: %s\n", msg); - break; - - case QtWarningMsg: - if( logFile.isOpen() ) - message.insert( 0, "Warning: " ); - else - fprintf(stderr, "Warning: %s\n", msg); - break; - - case QtCriticalMsg: - if( logFile.isOpen() ) - message.insert( 0, "Critical: " ); - else - fprintf(stderr, "Critical: %s\n", msg); - break; - - case QtFatalMsg: - if( logFile.isOpen() ) - { - logFile.write( "Fatal: " ); - logFile.write( msg ); - logFile.flush(); - } - else - fprintf(stderr, "Fatal: %s\n", msg); - abort(); - -#if QT_VERSION >= QT_VERSION_CHECK( 5, 5, 0 ) - case QtInfoMsg: - if( logFile.isOpen() ) - message.insert( 0, "Info: " ); - else - fprintf(stderr, "Info: %s\n", msg); - break; -#endif - } - - if( logFile.isOpen() ) - { - message.append( "\n" ); - logFile.write( message.toUtf8() ); - logFile.flush(); - } -} - -int main( int argc, char ** argv ) -{ - #ifdef Q_OS_MAC - setenv("LANG", "en_US.UTF-8", 1); - -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - // Check for retina display - if( LionSupport::isRetinaDisplay() ) - QApplication::setGraphicsSystem( "native" ); - else - QApplication::setGraphicsSystem( "raster" ); -#endif - #endif - - // The following clause fixes a race in the MinGW runtime where throwing - // exceptions for the first time in several threads simultaneously can cause - // an abort(). This code throws first exception in a safe, single-threaded - // manner, thus avoiding that race. - { - class Dummy {}; - - try - { throw Dummy(); } - catch( Dummy ) - {} - } - - if ( argc == 3 && strcmp( argv[ 1 ], "--show-error-file" ) == 0 ) - { - // The program has crashed -- show a message about it - - QApplication app( argc, argv ); - - QFile errFile( argv[ 2 ] ); - - QString errorText; - - if ( errFile.open( QFile::ReadOnly ) ) - errorText = QString::fromUtf8( errFile.readAll() ); - - errorText += "\n" + QString( "This information is located in file %1, " - "which will be removed once you close this dialog.").arg( errFile.fileName() ); - - QMessageBox::critical( 0, "GoldenDict has crashed", errorText ); - - errFile.remove(); - - return 0; - } - - installTerminationHandler(); - - #ifdef __DO_DEBUG - { - rlimit limit; - - memset( &limit, 0, sizeof( limit ) ); - limit.rlim_cur = RLIM_INFINITY; - limit.rlim_max = RLIM_INFINITY; - setrlimit( RLIMIT_CORE, &limit ); - } - #endif - -#ifdef __WIN32 - - // Under Windows, increase the amount of fopen()-able file descriptors from - // the default 512 up to 2048. - _setmaxstdio( 2048 ); - -#endif - - QHotkeyApplication app( "GoldenDict", argc, argv ); - - if ( app.isRunning() ) - { - if( argc == 2 && strcmp( argv[ 1 ], LOG_TO_FILE_KEY ) != 0 ) -#ifdef Q_OS_WIN32 - { - LPWSTR * pstr; - int num; - pstr = CommandLineToArgvW( GetCommandLineW(), &num ); - if( pstr && num > 0 ) - app.sendMessage( QString( "translateWord: " ) + QString::fromWCharArray( pstr[1] ) ); - } -#else - app.sendMessage( QString( "translateWord: " ) + QString::fromLocal8Bit( argv[1] ) ); -#endif - else - app.sendMessage("bringToFront"); - return 0; // Another instance is running - } - - app.setApplicationName( "GoldenDict" ); - app.setOrganizationDomain( "http://goldendict.org/" ); -#if QT_VERSION >= 0x040600 - app.setStyle(new GdAppStyle); -#endif - - #ifndef Q_OS_MAC - app.setWindowIcon( QIcon( ":/icons/programicon.png" ) ); - #endif - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - // OpenCC needs to load it's data files by relative path on Windows and OS X - QDir::setCurrent( Config::getProgramDataDir() ); -#endif - - // Load translations for system locale - - QTranslator qtTranslator; - - QString localeName = QLocale::system().name(); - - if ( !qtTranslator.load( "qt_" + localeName, Config::getLocDir() ) ) - qtTranslator.load( "qt_" + localeName, - QLibraryInfo::location( QLibraryInfo::TranslationsPath ) ); - - app.installTranslator( &qtTranslator ); - - QTranslator translator; - - translator.load( Config::getLocDir() + "/" + localeName ); - - app.installTranslator( &translator ); - - Config::Class cfg; - for( ; ; ) - { - try - { - cfg = Config::load(); - } - catch( Config::exError ) - { - QMessageBox mb( QMessageBox::Warning, app.applicationName(), - app.translate( "Main", "Error in configuration file. Continue with default settings?" ), - QMessageBox::Yes | QMessageBox::No ); - mb.exec(); - if( mb.result() != QMessageBox::Yes ) - return -1; - - QString configFile = Config::getConfigFileName(); - renameAtomically( configFile, configFile + ".bad" ); - continue; - } - break; - } - - if( argc == 2 && strcmp( argv[ 1 ], LOG_TO_FILE_KEY ) == 0 ) - { - // Open log file - logFile.setFileName( Config::getConfigDir() + "gd_log.txt" ); - logFile.remove(); - logFile.open( QFile::ReadWrite ); - - // Write UTF-8 BOM - QByteArray line; - line.append( 0xEF ).append( 0xBB ).append( 0xBF ); - logFile.write( line ); - - // Install message handler -#if ( QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ) - qInstallMessageHandler( gdMessageHandler ); -#else - qInstallMsgHandler( gdMessageHandler ); -#endif - } - - if ( Config::isPortableVersion() ) - { - // For portable version, hardcode some settings - - cfg.paths.clear(); - cfg.paths.push_back( Config::Path( Config::getPortableVersionDictionaryDir(), true ) ); - cfg.soundDirs.clear(); - cfg.hunspell.dictionariesPath = Config::getPortableVersionMorphoDir(); - } - - // Reload translations for user selected locale is nesessary - - if( !cfg.preferences.interfaceLanguage.isEmpty() && localeName != cfg.preferences.interfaceLanguage ) - { - localeName = cfg.preferences.interfaceLanguage; - - if ( !qtTranslator.load( "qt_" + localeName, Config::getLocDir() ) ) - qtTranslator.load( "qt_" + localeName, - QLibraryInfo::location( QLibraryInfo::TranslationsPath ) ); - - translator.load( Config::getLocDir() + "/" + localeName ); - } - - // Prevent app from quitting spontaneously when it works with scan popup - // and with the main window closed. - app.setQuitOnLastWindowClosed( false ); - -#if QT_VERSION >= 0x040600 - // Add the dictionary scheme we use as local, so that the file:// links would - // work in the articles. The function was introduced in Qt 4.6. - QWebSecurityOrigin::addLocalScheme( "gdlookup" ); -#endif - - MainWindow m( cfg ); - - app.addDataCommiter( m ); - - QObject::connect( &app, SIGNAL(messageReceived(const QString&)), - &m, SLOT(messageFromAnotherInstanceReceived(const QString&))); - - if( argc == 2 && strcmp( argv[ 1 ], LOG_TO_FILE_KEY ) != 0) -#ifdef Q_OS_WIN32 - { - LPWSTR * pstr; - int num; - pstr = CommandLineToArgvW( GetCommandLineW(), &num ); - if( pstr && num > 0 ) - m.wordReceived( QString::fromWCharArray( pstr[1] ) ); - } -#else - m.wordReceived( QString::fromLocal8Bit( argv[1] ) ); -#endif - - int r = app.exec(); - - app.removeDataCommiter( m ); - - if( logFile.isOpen() ) - logFile.close(); - - return r; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainstatusbar.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainstatusbar.cc deleted file mode 100644 index fe41655b25..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainstatusbar.cc +++ /dev/null @@ -1,133 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "mainstatusbar.hh" - -#include -#include -#include -#include -#include -#include - -MainStatusBar::MainStatusBar( QWidget *parent ) : QWidget( parent ) -{ - textWidget = new QLabel( QString(), this ); - textWidget->setObjectName( "text" ); - textWidget->setFont( QApplication::font( "QStatusBar" ) ); - textWidget->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); - - picWidget = new QLabel( QString(), this ); - picWidget->setObjectName( "icon" ); - picWidget->setPixmap( QPixmap() ); - picWidget->setScaledContents( true ); - picWidget->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Ignored ); - - timer = new QTimer( this ); - timer->setSingleShot( true ); - - // layout - QHBoxLayout * layout = new QHBoxLayout; - layout->setSpacing( 0 ); - layout->setSizeConstraint( QLayout::SetFixedSize ); - layout->setAlignment( Qt::AlignLeft | Qt::AlignVCenter ); - layout->setContentsMargins( 0, 0, 0, 0 ); - layout->addWidget( picWidget ); - layout->addWidget( textWidget ); - setLayout( layout ); - - parentWidget()->installEventFilter( this ); - - connect( timer, SIGNAL( timeout() ), SLOT( clearMessage() ) ); -} - -bool MainStatusBar::hasImage() const -{ - return !picWidget->pixmap()->isNull(); -} - -void MainStatusBar::clearMessage() -{ - message.clear(); - textWidget->setText( backgroungMessage ); - picWidget->setPixmap( QPixmap() ); - timer->stop(); - refresh(); -} - -QString MainStatusBar::currentMessage() const -{ - return message; -} - -void MainStatusBar::setBackgroundMessage(const QString & bkg_message ) -{ - backgroungMessage = bkg_message; - if( message.isEmpty() ) - { - textWidget->setText( backgroungMessage ); - refresh(); - } -} - -void MainStatusBar::showMessage(const QString & str, int timeout, const QPixmap & pixmap) -{ - textWidget->setText( message = str ); - picWidget->setPixmap( pixmap ); - - // reload stylesheet - setStyleSheet( styleSheet() ); - - if ( timeout > 0 ) - { - timer->start( timeout ); - } - - refresh(); -} - -void MainStatusBar::refresh() -{ - if ( !textWidget->text().isEmpty() ) - { - adjustSize(); - - if ( !picWidget->pixmap()->isNull() ) - { - picWidget->setFixedSize( textWidget->height(), textWidget->height() ); - } - else - { - picWidget->setFixedSize( 0, 0 ); - } - - adjustSize(); - - move( QPoint( 0, parentWidget()->height() - height() ) ); - - show(); - raise(); - } - else - { - hide(); - } -} - -void MainStatusBar::mousePressEvent ( QMouseEvent * ) -{ - clearMessage(); -} - -bool MainStatusBar::eventFilter( QObject *, QEvent * e ) -{ - switch ( e->type() ) { - case QEvent::Resize: - refresh(); - break; - default: - break; - }; - - return false; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainstatusbar.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainstatusbar.hh deleted file mode 100644 index 68c673c83a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainstatusbar.hh +++ /dev/null @@ -1,47 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef MAINSTATUSBAR_HH -#define MAINSTATUSBAR_HH - -#include -#include -#include -#include - -class MainStatusBar : public QWidget -{ - Q_OBJECT - Q_PROPERTY(bool hasImage READ hasImage) - -public: - explicit MainStatusBar(QWidget * parent); - QString currentMessage() const; - -signals: - -public slots: - void showMessage(const QString & text, int timeout = 0, const QPixmap & pixmap = QPixmap()); - void clearMessage(); - void setBackgroundMessage( QString const & message ); - -protected: - virtual void mousePressEvent(QMouseEvent * event); - -private: - // component to display a small picture - QLabel * picWidget; - - // component to display text - QLabel * textWidget; - - QTimer * timer; - QString backgroungMessage; - QString message; - - bool eventFilter(QObject *obj, QEvent * event); - void refresh(); - bool hasImage() const; -}; - -#endif // MAINSTATUSBAR_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maintabwidget.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maintabwidget.cc deleted file mode 100644 index fdf3ca1518..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maintabwidget.cc +++ /dev/null @@ -1,78 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "maintabwidget.hh" -#include -#include -#include - -MainTabWidget::MainTabWidget( QWidget * parent) : QTabWidget( parent ) { - hideSingleTab = false; - installEventFilter( this ); - tabBar()->installEventFilter( this ); -} - -void MainTabWidget::setHideSingleTab(bool hide) -{ - hideSingleTab = hide; - updateTabBarVisibility(); -} - -void MainTabWidget::tabInserted(int index) -{ - (void) index; - updateTabBarVisibility(); - - // Avoid bug in Qt 4.8.0 - setUsesScrollButtons( count() > 10 ); -} - -void MainTabWidget::tabRemoved(int index) -{ - (void) index; - updateTabBarVisibility(); - - // Avoid bug in Qt 4.8.0 - setUsesScrollButtons( count() > 10 ); -} - -void MainTabWidget::updateTabBarVisibility() -{ - tabBar()->setVisible( !hideSingleTab || tabBar()->count() > 1 ); -} - -/* -void MainTabWidget::mouseDoubleClickEvent ( QMouseEvent * event ) -{ - (void) event; - emit doubleClicked(); -} -*/ - -bool MainTabWidget::eventFilter( QObject * obj, QEvent * ev ) -{ - // mouseDoubleClickEvent don't called under Ubuntu - if( ev->type() == QEvent::MouseButtonDblClick ) - { - QMouseEvent * mev = static_cast< QMouseEvent *>( ev ); - if( mev->y() >= tabBar()->rect().y() - && mev->y() <= tabBar()->rect().y() + tabBar()->rect().height() - && tabBar()->tabAt( mev->pos() ) == -1 ) - { - emit doubleClicked(); - return true; - } - } - - if( obj == tabBar() && ev->type() == QEvent::MouseButtonPress ) - { - QMouseEvent * mev = static_cast< QMouseEvent *>( ev ); - if( mev->button() == Qt::MidButton ) - { - emit tabCloseRequested( tabBar()->tabAt( mev->pos() ) ); - return true; - } - } - - return QTabWidget::eventFilter( obj, ev ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maintabwidget.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/maintabwidget.hh deleted file mode 100644 index bf13c8a547..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/maintabwidget.hh +++ /dev/null @@ -1,38 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef MAINTABWIDGET_HH -#define MAINTABWIDGET_HH - -#include -#include - -/// An extension of QTabWidget that allows to better control -/// the tabbar visibility. -class MainTabWidget: public QTabWidget -{ - Q_OBJECT - Q_PROPERTY(bool hideSingleTab READ isHideSingleTab WRITE setHideSingleTab) - -public: - MainTabWidget( QWidget * parent = 0 ); - - bool isHideSingleTab() const { return hideSingleTab; } - void setHideSingleTab(bool hide); - -signals: - void doubleClicked(); - -protected: -// virtual void mouseDoubleClickEvent ( QMouseEvent * event ); - -private: - virtual void tabInserted(int index); - virtual void tabRemoved(int index); - void updateTabBarVisibility(); - virtual bool eventFilter( QObject * obj, QEvent * ev ); - - bool hideSingleTab; -}; - -#endif // MAINTABWIDGET_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.cc deleted file mode 100644 index 443f871511..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.cc +++ /dev/null @@ -1,4235 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef NO_EPWING_SUPPORT -#include "epwing_book.hh" -#endif - -#include "mainwindow.hh" -#include "editdictionaries.hh" -#include "loaddictionaries.hh" -#include "preferences.hh" -#include "about.hh" -#include "mruqmenu.hh" -#include "gestures.hh" -#include "dictheadwords.hh" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include "gddebug.hh" - -#include "dictinfo.hh" -#include "fsencoding.hh" -#include "historypanewidget.hh" -#include "qt4x5.hh" -#include -#include "ui_authentication.h" - -#ifdef Q_OS_MAC -#include "lionsupport.h" -#include "macmouseover.hh" -#endif - -#ifdef Q_OS_WIN32 -#include -#include "mouseover_win32/GDDataTranfer.h" -#include "wstring.hh" -#include "wstring_qt.hh" - -#define gdStoreNormalGeometryEvent ( ( QEvent::Type )( QEvent::User + 1 ) ) -#define gdApplyNormalGeometryEvent ( ( QEvent::Type )( QEvent::User + 2 ) ) - -#endif - -#ifdef HAVE_X11 -#include -#include -#endif - -#define MIN_THREAD_COUNT 4 - -using std::set; -using std::wstring; -using std::map; -using std::pair; - -#ifndef QT_NO_OPENSSL - -class InitSSLRunnable : public QRunnable -{ - virtual void run() - { - /// This action force SSL library initialisation which may continue a few seconds - QSslConfiguration::setDefaultConfiguration( QSslConfiguration::defaultConfiguration() ); - } -}; - -#endif - -MainWindow::MainWindow( Config::Class & cfg_ ): - commitDataCompleted( false ), - trayIcon( 0 ), - groupLabel( &searchPaneTitleBar ), - foundInDictsLabel( &dictsPaneTitleBar ), - escAction( this ), - focusTranslateLineAction( this ), - addTabAction( this ), - closeCurrentTabAction( this ), - closeAllTabAction( this ), - closeRestTabAction( this ), - switchToNextTabAction( this ), - switchToPrevTabAction( this ), - showDictBarNamesAction( tr( "Show Names in Dictionary &Bar" ), this ), - useSmallIconsInToolbarsAction( tr( "Show Small Icons in &Toolbars" ), this ), - toggleMenuBarAction( tr( "&Menubar" ), this ), - switchExpandModeAction( this ), - focusHeadwordsDlgAction( this ), - focusArticleViewAction( this ), - trayIconMenu( this ), - addTab( this ), - cfg( cfg_ ), - history( History::Load(), cfg_.preferences.maxStringsInHistory, cfg_.maxHeadwordSize ), - dictionaryBar( this, configEvents, cfg.editDictionaryCommandLine, cfg.preferences.maxDictionaryRefsInContextMenu ), - articleMaker( dictionaries, groupInstances, cfg.preferences.displayStyle, - cfg.preferences.addonStyle ), - articleNetMgr( this, dictionaries, articleMaker, - cfg.preferences.disallowContentFromOtherSites, cfg.preferences.hideGoldenDictHeader ), - dictNetMgr( this ), - wordFinder( this ), - newReleaseCheckTimer( this ), - latestReleaseReply( 0 ), - wordListSelChanged( false ) -, wasMaximized( false ) -, blockUpdateWindowTitle( false ) -, headwordsDlg( 0 ) -, ftsIndexing( dictionaries ) -, ftsDlg( 0 ) -, helpWindow( 0 ) -#ifdef Q_OS_WIN32 -, gdAskMessage( 0xFFFFFFFF ) -#endif -{ - if( QThreadPool::globalInstance()->maxThreadCount() < MIN_THREAD_COUNT ) - QThreadPool::globalInstance()->setMaxThreadCount( MIN_THREAD_COUNT ); - -#ifndef QT_NO_OPENSSL - QThreadPool::globalInstance()->start( new InitSSLRunnable ); -#endif - -#ifndef NO_EPWING_SUPPORT - Epwing::initialize(); -#endif - - applyQtStyleSheet( cfg.preferences.displayStyle, cfg.preferences.addonStyle ); - - ui.setupUi( this ); - - articleMaker.setCollapseParameters( cfg.preferences.collapseBigArticles, cfg.preferences.articleSizeLimit ); - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - // Set own gesture recognizers - Gestures::registerRecognizers(); -#endif - - // use our own, custom statusbar - setStatusBar(0); - mainStatusBar = new MainStatusBar( this ); - - // Make the toolbar - navToolbar = addToolBar( tr( "&Navigation" ) ); - navToolbar->setObjectName( "navToolbar" ); - - navBack = navToolbar->addAction( QIcon( ":/icons/previous.png" ), tr( "Back" ) ); - navToolbar->widgetForAction( navBack )->setObjectName( "backButton" ); - navForward = navToolbar->addAction( QIcon( ":/icons/next.png" ), tr( "Forward" ) ); - navToolbar->widgetForAction( navForward )->setObjectName( "forwardButton" ); - - QWidget * translateBoxWidget = new QWidget( this ); - QHBoxLayout * translateBoxLayout = new QHBoxLayout( translateBoxWidget ); - translateBoxWidget->setLayout( translateBoxLayout ); - translateBoxLayout->setContentsMargins( 0, 0, 0, 0 ); - translateBoxLayout->setSpacing( 0 ); - - // translate box - groupListInToolbar = new GroupComboBox( navToolbar ); - groupListInToolbar->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred ); - groupListInToolbar->setSizeAdjustPolicy( QComboBox::AdjustToContents ); - translateBoxLayout->addWidget( groupListInToolbar ); - - translateBox = new TranslateBox( navToolbar ); - translateBox->setSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ); - translateBoxLayout->addWidget( translateBox ); - translateBoxToolBarAction = navToolbar->addWidget( translateBoxWidget ); - - // scan popup - beforeScanPopupSeparator = navToolbar->addSeparator(); - beforeScanPopupSeparator->setVisible( cfg.preferences.enableScanPopup ); - navToolbar->widgetForAction( beforeScanPopupSeparator )->setObjectName( "beforeScanPopupSeparator" ); - - enableScanPopup = navToolbar->addAction( QIcon( ":/icons/wizard.png" ), tr( "Scan Popup" ) ); - enableScanPopup->setCheckable( true ); - enableScanPopup->setVisible( cfg.preferences.enableScanPopup ); - navToolbar->widgetForAction( enableScanPopup )->setObjectName( "scanPopupButton" ); - if ( cfg.preferences.enableScanPopup && cfg.preferences.startWithScanPopupOn ) - enableScanPopup->setChecked( true ); - - connect( enableScanPopup, SIGNAL( toggled( bool ) ), - this, SLOT( scanEnableToggled( bool ) ) ); - - afterScanPopupSeparator = navToolbar->addSeparator(); - afterScanPopupSeparator->setVisible( cfg.preferences.enableScanPopup ); - navToolbar->widgetForAction( afterScanPopupSeparator )->setObjectName( "afterScanPopupSeparator" ); - - // sound - navPronounce = navToolbar->addAction( QIcon( ":/icons/playsound_full.png" ), tr( "Pronounce Word (Alt+S)" ) ); - navPronounce->setShortcut( QKeySequence( "Alt+S" ) ); - navPronounce->setEnabled( false ); - navToolbar->widgetForAction( navPronounce )->setObjectName( "soundButton" ); - - connect( navPronounce, SIGNAL( triggered() ), - this, SLOT( pronounce() ) ); - - // zooming - // named separator (to be able to hide it via CSS) - navToolbar->widgetForAction( navToolbar->addSeparator() )->setObjectName( "separatorBeforeZoom" ); - - zoomIn = navToolbar->addAction( QIcon( ":/icons/icon32_zoomin.png" ), tr( "Zoom In" ) ); - zoomIn->setShortcuts( QList< QKeySequence >() << - QKeySequence::ZoomIn << - QKeySequence( "Ctrl+=" ) ); - navToolbar->widgetForAction( zoomIn )->setObjectName( "zoomInButton" ); - - zoomOut = navToolbar->addAction( QIcon( ":/icons/icon32_zoomout.png" ), tr( "Zoom Out" ) ); - zoomOut->setShortcut( QKeySequence::ZoomOut ); - navToolbar->widgetForAction( zoomOut )->setObjectName( "zoomOutButton" ); - - zoomBase = navToolbar->addAction( QIcon( ":/icons/icon32_zoombase.png" ), tr( "Normal Size" ) ); - zoomBase->setShortcut( QKeySequence( "Ctrl+0" ) ); - navToolbar->widgetForAction( zoomBase )->setObjectName( "zoomBaseButton" ); - - // named separator (to be able to hide it via CSS) - navToolbar->widgetForAction( navToolbar->addSeparator() )->setObjectName( "separatorBeforeSave" ); - - navToolbar->addAction( ui.saveArticle ); - navToolbar->widgetForAction( ui.saveArticle )->setObjectName( "saveArticleButton" ); - - navToolbar->addAction( ui.print ); - navToolbar->widgetForAction( ui.print )->setObjectName( "printButton" ); - - beforeOptionsSeparator = navToolbar->addSeparator(); - navToolbar->widgetForAction( beforeOptionsSeparator )->setObjectName( "beforeOptionsSeparator" ); - beforeOptionsSeparator->setVisible( cfg.preferences.hideMenubar); - - QMenu * buttonMenu = new QMenu( this ); - buttonMenu->addAction( ui.dictionaries ); - buttonMenu->addAction( ui.preferences ); - buttonMenu->addSeparator(); - buttonMenu->addMenu( ui.menuHistory ); - buttonMenu->addSeparator(); - buttonMenu->addMenu( ui.menuFile ); - buttonMenu->addMenu( ui.menuView ); - buttonMenu->addMenu( ui.menuSearch ); - buttonMenu->addMenu( ui.menu_Help ); - - ui.fullTextSearchAction->setEnabled( cfg.preferences.fts.enabled ); - - menuButton = new QToolButton( navToolbar ); - menuButton->setPopupMode( QToolButton::InstantPopup ); - menuButton->setMenu( buttonMenu ); - menuButton->setIcon( QIcon (":/icons/menu_button.png") ); - menuButton->addAction( ui.menuOptions ); - menuButton->setToolTip( tr( "Menu Button" ) ); - menuButton->setObjectName( "menuButton" ); - menuButton->setFocusPolicy( Qt::NoFocus ); - - menuButtonAction = navToolbar->addWidget(menuButton); - menuButtonAction->setVisible( cfg.preferences.hideMenubar ); - - // Make the search pane's titlebar - groupLabel.setText( tr( "Look up in:" ) ); - groupListInDock = new GroupComboBox( &searchPaneTitleBar ); - - searchPaneTitleBarLayout.setContentsMargins( 8, 5, 8, 4 ); - searchPaneTitleBarLayout.addWidget( &groupLabel ); - searchPaneTitleBarLayout.addWidget( groupListInDock ); - searchPaneTitleBarLayout.addStretch(); - - searchPaneTitleBar.setLayout( &searchPaneTitleBarLayout ); - - ui.searchPane->setTitleBarWidget( &searchPaneTitleBar ); - connect( ui.searchPane->toggleViewAction(), SIGNAL( triggered( bool ) ), - this, SLOT( updateSearchPaneAndBar( bool ) ) ); - - if ( cfg.preferences.searchInDock ) - { - groupList = groupListInDock; - translateLine = ui.translateLine; - wordList = ui.wordList; - } - else - { - groupList = groupListInToolbar; - translateLine = translateBox->translateLine(); - wordList = translateBox->wordList(); - } - wordList->attachFinder( &wordFinder ); - - // for the old UI: - ui.wordList->setTranslateLine( ui.translateLine ); - - groupList->setFocusPolicy(Qt::ClickFocus); - wordList->setFocusPolicy(Qt::ClickFocus); - - wordListDefaultFont = wordList->font(); - translateLineDefaultFont = translateLine->font(); - - // Make the dictionaries pane's titlebar - foundInDictsLabel.setText( tr( "Found in Dictionaries:" ) ); - dictsPaneTitleBarLayout.addWidget( &foundInDictsLabel ); - dictsPaneTitleBarLayout.setContentsMargins(5, 5, 5, 5); - dictsPaneTitleBar.setLayout( &dictsPaneTitleBarLayout ); - dictsPaneTitleBar.setObjectName("dictsPaneTitleBar"); - ui.dictsPane->setTitleBarWidget( &dictsPaneTitleBar ); - ui.dictsList->setContextMenuPolicy( Qt::CustomContextMenu ); - - connect( ui.dictsPane, SIGNAL( visibilityChanged( bool ) ), - this, SLOT( dictsPaneVisibilityChanged ( bool ) ) ); - - connect( ui.dictsList, SIGNAL( itemClicked( QListWidgetItem * ) ), - this, SLOT( foundDictsPaneClicked( QListWidgetItem * ) ) ); - - connect( ui.dictsList, SIGNAL( customContextMenuRequested( const QPoint & ) ), - this, SLOT( foundDictsContextMenuRequested( const QPoint & ) ) ); - - connect( zoomIn, SIGNAL( triggered() ), - this, SLOT( zoomin() ) ); - connect( zoomOut, SIGNAL( triggered() ), - this, SLOT( zoomout() ) ); - connect( zoomBase, SIGNAL( triggered() ), - this, SLOT( unzoom() ) ); - - ui.menuZoom->addAction( zoomIn ); - ui.menuZoom->addAction( zoomOut ); - ui.menuZoom->addAction( zoomBase ); - - ui.menuZoom->addSeparator(); - - wordsZoomIn = ui.menuZoom->addAction( QIcon( ":/icons/icon32_zoomin.png" ), tr( "Words Zoom In" ) ); - wordsZoomIn->setShortcuts( QList< QKeySequence >() << - QKeySequence( "Alt++" ) << - QKeySequence( "Alt+=" ) ); - wordsZoomOut = ui.menuZoom->addAction( QIcon( ":/icons/icon32_zoomout.png" ), tr( "Words Zoom Out" ) ); - wordsZoomOut->setShortcut( QKeySequence( "Alt+-" ) ); - wordsZoomBase = ui.menuZoom->addAction( QIcon( ":/icons/icon32_zoombase.png" ), tr( "Words Normal Size" ) ); - wordsZoomBase->setShortcut( QKeySequence( "Alt+0" ) ); - - connect( wordsZoomIn, SIGNAL(triggered()), this, SLOT(doWordsZoomIn()) ); - connect( wordsZoomOut, SIGNAL(triggered()), this, SLOT(doWordsZoomOut()) ); - connect( wordsZoomBase, SIGNAL(triggered()), this, SLOT(doWordsZoomBase()) ); - - // tray icon - connect( trayIconMenu.addAction( tr( "Show &Main Window" ) ), SIGNAL( triggered() ), - this, SLOT( showMainWindow() ) ); - trayIconMenu.addAction( enableScanPopup ); - trayIconMenu.addSeparator(); - connect( trayIconMenu.addAction( tr( "&Quit" ) ), SIGNAL( triggered() ), - qApp, SLOT( quit() ) ); - - addGlobalAction( &escAction, SLOT( handleEsc() ) ); - escAction.setShortcut( QKeySequence( "Esc" ) ); - - addGlobalAction( &focusTranslateLineAction, SLOT( focusTranslateLine() ) ); - focusTranslateLineAction.setShortcuts( QList< QKeySequence >() << - QKeySequence( "Alt+D" ) << - QKeySequence( "Ctrl+L" ) ); - - addGlobalAction( &focusHeadwordsDlgAction, SLOT( focusHeadwordsDialog() ) ); - focusHeadwordsDlgAction.setShortcut( QKeySequence( "Ctrl+D" ) ); - - addGlobalAction( &focusArticleViewAction, SLOT( focusArticleView() ) ); - focusArticleViewAction.setShortcut( QKeySequence( "Ctrl+N" ) ); - - addGlobalAction( ui.fullTextSearchAction, SLOT( showFullTextSearchDialog() ) ); - - addTabAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - addTabAction.setShortcut( QKeySequence( "Ctrl+T" ) ); - - // Tab management - tabListMenu = new MRUQMenu(tr("Opened tabs"), ui.tabWidget); - - connect (tabListMenu, SIGNAL(ctrlReleased()), this, SLOT(ctrlReleased())); - - connect( &addTabAction, SIGNAL( triggered() ), - this, SLOT( addNewTab() ) ); - - addAction( &addTabAction ); - - closeCurrentTabAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - closeCurrentTabAction.setShortcut( QKeySequence( "Ctrl+W" ) ); - closeCurrentTabAction.setText( tr("Close current tab") ); - closeCurrentTabAction.setIcon( QIcon(":/icons/closetab.png") ); - - connect( &closeCurrentTabAction, SIGNAL( triggered() ), - this, SLOT( closeCurrentTab() ) ); - - addAction( &closeCurrentTabAction ); - - closeAllTabAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - closeAllTabAction.setShortcut( QKeySequence( "Ctrl+Shift+W" ) ); - closeAllTabAction.setText( tr("Close all tabs") ); - - connect( &closeAllTabAction, SIGNAL( triggered() ), - this, SLOT( closeAllTabs() ) ); - - addAction( &closeAllTabAction ); - - closeRestTabAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - closeRestTabAction.setText( tr("Close all tabs except current") ); - - connect( &closeRestTabAction, SIGNAL( triggered() ), - this, SLOT( closeRestTabs() ) ); - - addAction( &closeRestTabAction ); - - switchToNextTabAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - switchToNextTabAction.setShortcut( QKeySequence( "Ctrl+PgDown" ) ); - - connect( &switchToNextTabAction, SIGNAL( triggered() ), - this, SLOT( switchToNextTab() ) ); - - addAction( &switchToNextTabAction ); - - switchToPrevTabAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - switchToPrevTabAction.setShortcut( QKeySequence( "Ctrl+PgUp" ) ); - - connect( &switchToPrevTabAction, SIGNAL( triggered() ), - this, SLOT( switchToPrevTab() ) ); - - addAction( &switchToPrevTabAction ); - - switchExpandModeAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - switchExpandModeAction.setShortcuts( QList< QKeySequence >() << - QKeySequence( Qt::CTRL + Qt::Key_8 ) << - QKeySequence( Qt::CTRL + Qt::Key_Asterisk ) << - QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_8 ) ); - - connect( &switchExpandModeAction, SIGNAL( triggered() ), - this, SLOT(switchExpandOptionalPartsMode() ) ); - - addAction( &switchExpandModeAction ); - - tabMenu = new QMenu(this); - tabMenu->addAction( &closeCurrentTabAction ); - tabMenu->addAction( &closeRestTabAction ); - tabMenu->addSeparator(); - tabMenu->addAction( &closeAllTabAction ); - - // Dictionary bar names - - showDictBarNamesAction.setCheckable( true ); - showDictBarNamesAction.setChecked( cfg.showingDictBarNames ); - - connect( &showDictBarNamesAction, SIGNAL( triggered() ), - this, SLOT( showDictBarNamesTriggered() ) ); - - // Use small icons in toolbars - - useSmallIconsInToolbarsAction.setCheckable( true ); - useSmallIconsInToolbarsAction.setChecked( cfg.usingSmallIconsInToolbars ); - - connect( &useSmallIconsInToolbarsAction, SIGNAL( triggered() ), - this, SLOT( useSmallIconsInToolbarsTriggered() ) ); - - // Toggle Menubar - toggleMenuBarAction.setCheckable( true ); - toggleMenuBarAction.setChecked( !cfg.preferences.hideMenubar ); - toggleMenuBarAction.setShortcut( QKeySequence( "Ctrl+M" ) ); - - connect( &toggleMenuBarAction, SIGNAL( triggered() ), - this, SLOT( toggleMenuBarTriggered() ) ); - - // Populate 'View' menu - - ui.menuView->addAction( &toggleMenuBarAction ); - ui.menuView->addSeparator(); - ui.menuView->addAction( ui.searchPane->toggleViewAction() ); - ui.searchPane->toggleViewAction()->setShortcut( QKeySequence( "Ctrl+S" ) ); - ui.menuView->addAction( ui.dictsPane->toggleViewAction() ); - ui.dictsPane->toggleViewAction()->setShortcut( QKeySequence( "Ctrl+R" ) ); - ui.menuView->addAction( ui.historyPane->toggleViewAction() ); - ui.historyPane->toggleViewAction()->setShortcut( QKeySequence( "Ctrl+H" ) ); - ui.menuView->addSeparator(); - ui.menuView->addAction( dictionaryBar.toggleViewAction() ); - ui.menuView->addAction( navToolbar->toggleViewAction() ); - ui.menuView->addSeparator(); - ui.menuView->addAction( &showDictBarNamesAction ); - ui.menuView->addAction( &useSmallIconsInToolbarsAction ); - ui.menuView->addSeparator(); - ui.alwaysOnTop->setChecked( cfg.preferences.alwaysOnTop ); - ui.menuView->addAction( ui.alwaysOnTop ); - - // Dictionary bar - - Instances::Group const * igrp = groupInstances.findGroup( cfg.lastMainGroupId ); - if( cfg.lastMainGroupId == Instances::Group::AllGroupId ) - { - if( igrp ) - igrp->checkMutedDictionaries( &cfg.mutedDictionaries ); - dictionaryBar.setMutedDictionaries( &cfg.mutedDictionaries ); - } - else - { - Config::Group * grp = cfg.getGroup( cfg.lastMainGroupId ); - if( igrp && grp ) - igrp->checkMutedDictionaries( &grp->mutedDictionaries ); - dictionaryBar.setMutedDictionaries( grp ? &grp->mutedDictionaries : 0 ); - } - - showDictBarNamesTriggered(); // Make update its state according to initial - // setting - - useSmallIconsInToolbarsTriggered(); - - connect( this, SIGNAL( clickOnDictPane( QString const & ) ), - &dictionaryBar, SLOT( dictsPaneClicked( QString const & ) ) ); - - addToolBar( &dictionaryBar ); - - connect( dictionaryBar.toggleViewAction(), SIGNAL(triggered(bool)), - this, SLOT(dictionaryBarToggled(bool)) ); - // This one will be disconnected once the slot is activated. It exists - // only to handle the initial appearance of the dictionary bar. - connect( dictionaryBar.toggleViewAction(), SIGNAL(toggled(bool)), - this, SLOT(dictionaryBarToggled(bool)) ); - - connect( &dictionaryBar, SIGNAL(editGroupRequested()), - this, SLOT(editCurrentGroup()) ); - - connect( &dictionaryBar, SIGNAL( showDictionaryInfo( QString const & ) ), - this, SLOT( showDictionaryInfo( QString const & ) ) ); - - connect( &dictionaryBar, SIGNAL( showDictionaryHeadwords( QString const & ) ), - this, SLOT( showDictionaryHeadwords( QString const & ) ) ); - - connect( &dictionaryBar, SIGNAL( openDictionaryFolder( QString const & ) ), - this, SLOT( openDictionaryFolder( QString const & ) ) ); - - // History - ui.historyPaneWidget->setUp( &cfg, &history, ui.menuHistory ); - history.enableAdd( cfg.preferences.storeHistory ); - - connect( ui.historyPaneWidget, SIGNAL( historyItemRequested( QString const & ) ), - this, SLOT( showHistoryItem( QString const & ) ) ); - - connect( ui.historyPane, SIGNAL( visibilityChanged( bool ) ), - this, SLOT( updateHistoryMenu() ) ); - - connect( ui.menuHistory, SIGNAL( aboutToShow() ), - this, SLOT( updateHistoryMenu() ) ); - - // Show tray icon early so the user would be happy. It won't be functional - // though until the program inits fully. - - if ( cfg.preferences.enableTrayIcon ) - { - trayIcon = new QSystemTrayIcon( QIcon( ":/icons/programicon_old.png" ), this ); - trayIcon->setToolTip( tr( "Loading..." ) ); - trayIcon->show(); - } - - connect( navBack, SIGNAL( triggered() ), - this, SLOT( backClicked() ) ); - connect( navForward, SIGNAL( triggered() ), - this, SLOT( forwardClicked() ) ); - - addTab.setAutoRaise( true ); - addTab.setToolTip( tr( "New Tab" ) ); - addTab.setFocusPolicy(Qt::ClickFocus); - addTab.setIcon( QIcon( ":/icons/addtab.png" ) ); - - ui.tabWidget->setHideSingleTab(cfg.preferences.hideSingleTab); - ui.tabWidget->clear(); - - ui.tabWidget->setCornerWidget( &addTab, Qt::TopLeftCorner ); - //ui.tabWidget->setCornerWidget( &closeTab, Qt::TopRightCorner ); - -#if QT_VERSION >= 0x040500 - ui.tabWidget->setMovable( true ); -#endif - -#ifndef Q_OS_WIN32 - ui.tabWidget->setDocumentMode( true ); -#endif - - ui.tabWidget->setContextMenuPolicy( Qt::CustomContextMenu ); - - connect( &addTab, SIGNAL( clicked() ), - this, SLOT( addNewTab() ) ); - - connect( ui.tabWidget, SIGNAL( doubleClicked() ), - this, SLOT( addNewTab() ) ); - - connect( ui.tabWidget, SIGNAL( tabCloseRequested( int ) ), - this, SLOT( tabCloseRequested( int ) ) ); - - connect( ui.tabWidget, SIGNAL( currentChanged( int ) ), - this, SLOT( tabSwitched( int ) ) ); - - connect( ui.tabWidget, SIGNAL( customContextMenuRequested(QPoint)) , - this, SLOT( tabMenuRequested(QPoint)) ); - -#if QT_VERSION >= 0x040500 - ui.tabWidget->setTabsClosable( true ); -#endif - - connect( ui.quit, SIGNAL( triggered() ), - qApp, SLOT( quit() ) ); - - connect( ui.dictionaries, SIGNAL( triggered() ), - this, SLOT( editDictionaries() ) ); - - connect( ui.preferences, SIGNAL( triggered() ), - this, SLOT( editPreferences() ) ); - - connect( ui.visitHomepage, SIGNAL( triggered() ), - this, SLOT( visitHomepage() ) ); - connect( ui.visitForum, SIGNAL( triggered() ), - this, SLOT( visitForum() ) ); - connect( ui.openConfigFolder, SIGNAL( triggered() ), - this, SLOT( openConfigFolder() ) ); - connect( ui.about, SIGNAL( triggered() ), - this, SLOT( showAbout() ) ); - connect( ui.showReference, SIGNAL( triggered() ), - this, SLOT( showGDHelp() ) ); - - connect( groupListInDock, SIGNAL( currentIndexChanged( QString const & ) ), - this, SLOT( currentGroupChanged( QString const & ) ) ); - - connect( groupListInToolbar, SIGNAL( currentIndexChanged( QString const & ) ), - this, SLOT( currentGroupChanged( QString const & ) ) ); - - connect( ui.translateLine, SIGNAL( textChanged( QString const & ) ), - this, SLOT( translateInputChanged( QString const & ) ) ); - - connect( translateBox->translateLine(), SIGNAL( textChanged( QString const & ) ), - this, SLOT( translateInputChanged( QString const & ) ) ); - - connect( ui.translateLine, SIGNAL( returnPressed() ), - this, SLOT( translateInputFinished() ) ); - - connect( translateBox->translateLine(), SIGNAL( returnPressed() ), - this, SLOT( translateInputFinished() ) ); - - connect( ui.wordList, SIGNAL( itemSelectionChanged() ), - this, SLOT( wordListSelectionChanged() ) ); - - connect( translateBox->wordList(), SIGNAL( itemDoubleClicked ( QListWidgetItem * ) ), - this, SLOT( wordListItemActivated( QListWidgetItem * ) ) ); - - connect( ui.wordList, SIGNAL( itemClicked( QListWidgetItem * ) ), - this, SLOT( wordListItemActivated( QListWidgetItem * ) ) ); - - connect( ui.wordList, SIGNAL( statusBarMessage( QString const &, int, QPixmap const & ) ), - this, SLOT( showStatusBarMessage( QString const &, int, QPixmap const & ) ) ); - - connect( translateBox->wordList(), SIGNAL( statusBarMessage( QString const &, int, QPixmap const & ) ), - this, SLOT( showStatusBarMessage( QString const &, int, QPixmap const & ) ) ); - - connect( ui.dictsList, SIGNAL( itemSelectionChanged() ), - this, SLOT( dictsListSelectionChanged() ) ); - - connect( ui.dictsList, SIGNAL( itemDoubleClicked( QListWidgetItem * ) ), - this, SLOT( dictsListItemActivated( QListWidgetItem * ) ) ); - - connect( &configEvents, SIGNAL( mutedDictionariesChanged() ), - this, SLOT( mutedDictionariesChanged() ) ); - - this->installEventFilter( this ); - - ui.translateLine->installEventFilter( this ); - translateBox->translateLine()->installEventFilter( this ); - - ui.wordList->installEventFilter( this ); - translateBox->wordList()->installEventFilter( this ); - - ui.wordList->viewport()->installEventFilter( this ); - translateBox->wordList()->viewport()->installEventFilter( this ); - - ui.dictsList->installEventFilter( this ); - ui.dictsList->viewport()->installEventFilter( this ); - //tabWidget doesn't propagate Ctrl+Tab to the parent widget unless event filter is installed - ui.tabWidget->installEventFilter( this ); - - ui.historyList->installEventFilter( this ); - - connect( &ftsIndexing, SIGNAL( newIndexingName( QString ) ), this, SLOT( showFTSIndexingName( QString ) ) ); - -#ifdef Q_OS_WIN - if( cfg.normalMainWindowGeometry.width() <= 0 ) - { - QRect r = QApplication::desktop()->availableGeometry(); - cfg.normalMainWindowGeometry.setRect( r.width() / 4, r.height() / 4, r.width() / 2, r.height() / 2 ); - } - if( cfg.maximizedMainWindowGeometry.width() > 0 ) - { - setGeometry( cfg.maximizedMainWindowGeometry ); - if ( cfg.mainWindowGeometry.size() ) - restoreGeometry( cfg.mainWindowGeometry ); - if ( cfg.mainWindowState.size() ) - restoreState( cfg.mainWindowState, 1 ); - setWindowState( windowState() | Qt::WindowMaximized ); - } - else -#endif - { - if ( cfg.mainWindowGeometry.size() ) - restoreGeometry( cfg.mainWindowGeometry ); - if ( cfg.mainWindowState.size() ) - restoreState( cfg.mainWindowState, 1 ); - } - - updateSearchPaneAndBar( cfg.preferences.searchInDock ); - ui.searchPane->setVisible( cfg.preferences.searchInDock ); - - applyProxySettings(); - applyWebSettings(); - - connect( &dictNetMgr, SIGNAL( proxyAuthenticationRequired( QNetworkProxy, QAuthenticator * ) ), - this, SLOT( proxyAuthentication( QNetworkProxy, QAuthenticator * ) ) ); - - connect( &articleNetMgr, SIGNAL( proxyAuthenticationRequired( QNetworkProxy, QAuthenticator * ) ), - this, SLOT( proxyAuthentication( QNetworkProxy, QAuthenticator * ) ) ); - - makeDictionaries(); - - // After we have dictionaries and groups, we can populate history -// historyChanged(); - - setWindowTitle( "GoldenDict" ); - - blockUpdateWindowTitle = true; - addNewTab(); - - // Create tab list menu - createTabList(); - - // Show the initial welcome text - - { - ArticleView *view = getCurrentArticleView(); - - history.enableAdd( false ); - - blockUpdateWindowTitle = true; - - view->showDefinition( tr( "Welcome!" ), Instances::Group::HelpGroupId ); - - history.enableAdd( cfg.preferences.storeHistory ); - } - - translateLine->setFocus(); - - if ( trayIcon ) - { - // Upgrade existing dummy tray icon into a full-functional one - - trayIcon->setContextMenu( &trayIconMenu ); - trayIcon->show(); - - connect( trayIcon, SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ), - this, SLOT( trayIconActivated( QSystemTrayIcon::ActivationReason ) ) ); - } - - updateTrayIcon(); - - // Update zoomers - applyZoomFactor(); - applyWordsZoomLevel(); - - // Update autostart info - setAutostart(cfg.preferences.autoStart); - - // Initialize global hotkeys - installHotKeys(); - - if ( cfg.preferences.alwaysOnTop ) - { - on_alwaysOnTop_triggered( true ); - } - - // Only show window initially if it wasn't configured differently - if ( !cfg.preferences.enableTrayIcon || !cfg.preferences.startToTray ) - { - show(); - focusTranslateLine(); - } - - connect( &newReleaseCheckTimer, SIGNAL( timeout() ), - this, SLOT( checkForNewRelease() ) ); - - if ( cfg.preferences.hideMenubar ) - { - toggleMenuBarTriggered( false ); - } - - prepareNewReleaseChecks(); - - // makeDictionaries() didn't do deferred init - we do it here, at the end. - doDeferredInit( dictionaries ); - - updateStatusLine(); - -#ifdef Q_OS_MAC - if( cfg.preferences.startWithScanPopupOn && !MacMouseOver::isAXAPIEnabled() ) - mainStatusBar->showMessage( tr( "Accessibility API is not enabled" ), 10000, - QPixmap( ":/icons/error.png" ) ); -#endif - - wasMaximized = isMaximized(); - - history.setSaveInterval( cfg.preferences.historyStoreInterval ); - - #ifdef Q_OS_MAC - LionSupport::addFullscreen(this); - #endif -#ifdef Q_OS_WIN32 - gdAskMessage = RegisterWindowMessage( GD_MESSAGE_NAME ); - ( static_cast< QHotkeyApplication * >( qApp ) )->setMainWindow( this ); -#endif - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - ui.centralWidget->grabGesture( Gestures::GDPinchGestureType ); - ui.centralWidget->grabGesture( Gestures::GDSwipeGestureType ); -#endif - - if( layoutDirection() == Qt::RightToLeft ) - { - // Adjust button icons for Right-To-Left layout - navBack->setIcon( QIcon( ":/icons/next.png" ) ); - navForward->setIcon( QIcon( ":/icons/previous.png" ) ); - } -} - -void MainWindow::ctrlTabPressed() -{ - emit fillWindowsMenu(); - tabListButton->click(); -} - -void MainWindow::updateSearchPaneAndBar( bool searchInDock ) -{ - QString text = translateLine->text(); - - if ( searchInDock ) - { - cfg.preferences.searchInDock = true; - - navToolbar->setAllowedAreas( Qt::AllToolBarAreas ); - - groupList = groupListInDock; - translateLine = ui.translateLine; - wordList = ui.wordList; - - translateBoxToolBarAction->setVisible( false ); - } - else - { - cfg.preferences.searchInDock = false; - - // handle the main toolbar, it must not be on the side, since it should - // contain the group widget and the translate line. Valid locations: Top and Bottom. - navToolbar->setAllowedAreas( Qt::BottomToolBarArea | Qt::TopToolBarArea ); - if ( toolBarArea( navToolbar ) & ( Qt::LeftToolBarArea | Qt::RightToolBarArea ) ) - { - if ( toolBarArea( &dictionaryBar ) == Qt::TopToolBarArea ) - { - insertToolBar( &dictionaryBar, navToolbar ); - } - else - { - addToolBar( Qt::TopToolBarArea, navToolbar ); - } - } - - groupList = groupListInToolbar; - translateLine = translateBox->translateLine(); - wordList = translateBox->wordList(); - - translateBoxToolBarAction->setVisible( true ); - } - - translateLine->setToolTip( tr( "String to search in dictionaries. The wildcards '*', '?' and sets of symbols '[...]' are allowed.\nTo find '*', '?', '[', ']' symbols use '\\*', '\\?', '\\[', '\\]' respectively" ) ); - - // reset the flag when switching UI modes - wordListSelChanged = false; - - wordList->attachFinder( &wordFinder ); - - updateGroupList(); - applyWordsZoomLevel(); - - if ( cfg.preferences.searchInDock ) - translateLine->setText( text ); - else - translateBox->setText( text, false ); - - focusTranslateLine(); -} - -void MainWindow::mousePressEvent( QMouseEvent *event) -{ - - if (handleBackForwardMouseButtons( event ) ) - { - return; - } - - if (event->button() != Qt::MidButton) - return QMainWindow::mousePressEvent(event); - - // middle clicked - QString subtype = "plain"; - - QString str = QApplication::clipboard()->text(subtype, - QClipboard::Selection); - translateLine->setText(str); - - QKeyEvent ev(QEvent::KeyPress, Qt::Key_Enter, - Qt::NoModifier); - QApplication::sendEvent(translateLine, &ev); -} - -MainWindow::~MainWindow() -{ -#ifdef Q_OS_WIN - if( isMaximized() ) - { - cfg.maximizedMainWindowGeometry = geometry(); - } - else - { - cfg.maximizedMainWindowGeometry = QRect(); - if( !isMinimized() ) - cfg.normalMainWindowGeometry = geometry(); - } -#endif - - closeHeadwordsDialog(); - - ftsIndexing.stopIndexing(); - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - ui.centralWidget->ungrabGesture( Gestures::GDPinchGestureType ); - ui.centralWidget->ungrabGesture( Gestures::GDSwipeGestureType ); - Gestures::unregisterRecognizers(); -#endif - - // Close all tabs -- they should be destroyed before network managers - // do. - while( ui.tabWidget->count() ) - { - QWidget * w = ui.tabWidget->widget( 0 ); - - ui.tabWidget->removeTab( 0 ); - - delete w; - } - -#ifndef NO_EPWING_SUPPORT - Epwing::finalize(); -#endif - - commitData(); -} - -void MainWindow::addGlobalAction( QAction * action, const char * slot ) -{ - action->setShortcutContext( Qt::WidgetWithChildrenShortcut ); - connect( action, SIGNAL( triggered() ), this, slot ); - - ui.centralWidget->addAction( action ); - ui.dictsPane->addAction( action ); - ui.searchPaneWidget->addAction( action ); - ui.historyPane->addAction( action ); - groupList->addAction( action ); - translateBox->addAction( action ); -} - -void MainWindow::addGlobalActionsToDialog( QDialog * dialog ) -{ - dialog->addAction( &focusTranslateLineAction ); - dialog->addAction( &focusHeadwordsDlgAction ); - dialog->addAction( &focusArticleViewAction ); - dialog->addAction( ui.fullTextSearchAction ); -} - -void MainWindow::commitData( QSessionManager & ) -{ - commitData(); -} - -void MainWindow::commitData() -{ - if ( !commitDataCompleted ) - { - commitDataCompleted = true; - - // Save MainWindow state and geometry - cfg.mainWindowState = saveState( 1 ); - cfg.mainWindowGeometry = saveGeometry(); - - // Close the popup, so it would save its geometry to config - - scanPopup.reset(); - - // Save any changes in last chosen groups etc - try - { - Config::save( cfg ); - } - catch( std::exception & e ) - { - gdWarning( "Configuration saving failed, error: %s\n", e.what() ); - } - - history.save(); - } -} - -QPrinter & MainWindow::getPrinter() -{ - if ( printer.get() ) - return *printer; - - printer = new QPrinter( QPrinter::HighResolution ); - - return *printer; -} - -void MainWindow::applyQtStyleSheet( QString const & displayStyle, QString const & addonStyle ) -{ - QFile builtInCssFile( ":/qt-style.css" ); - builtInCssFile.open( QFile::ReadOnly ); - QByteArray css = builtInCssFile.readAll(); - -#if defined(Q_OS_MAC) - QFile macCssFile( ":/qt-style-macos.css" ); - macCssFile.open( QFile::ReadOnly ); - css += macCssFile.readAll(); -#endif - - if ( displayStyle.size() ) - { - // Load an additional stylesheet - QFile builtInCssFile( QString( ":/qt-style-st-%1.css" ).arg( displayStyle ) ); - builtInCssFile.open( QFile::ReadOnly ); - css += builtInCssFile.readAll(); - } - - // Try loading a style sheet if there's one - QFile cssFile( Config::getUserQtCssFileName() ); - - if ( cssFile.open( QFile::ReadOnly ) ) - css += cssFile.readAll(); - - if( !addonStyle.isEmpty() ) - { - QString name = Config::getStylesDir() + addonStyle - + QDir::separator() + "qt-style.css"; - QFile addonCss( name ); - if( addonCss.open( QFile::ReadOnly ) ) - css += addonCss.readAll(); - } - - setStyleSheet( css ); -} - -void MainWindow::updateTrayIcon() -{ - if ( !trayIcon && cfg.preferences.enableTrayIcon ) - { - // Need to show it - trayIcon = new QSystemTrayIcon( QIcon( ":/icons/programicon_old.png" ), this ); - trayIcon->setContextMenu( &trayIconMenu ); - trayIcon->show(); - - connect( trayIcon, SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ), - this, SLOT( trayIconActivated( QSystemTrayIcon::ActivationReason ) ) ); - } - else - if ( trayIcon && !cfg.preferences.enableTrayIcon ) - { - // Need to hide it - delete trayIcon; - - trayIcon = 0; - } - if ( trayIcon ) - { - // Update the icon to reflect the scanning mode - trayIcon->setIcon( QIcon( - enableScanPopup->isChecked() ? - ":/icons/programicon_scan.png" : - ":/icons/programicon_old.png" ) ); - - trayIcon->setToolTip( "GoldenDict" ); - } - - // The 'Close to tray' action is associated with the tray icon, so we hide - // or show it here. - ui.actionCloseToTray->setVisible( cfg.preferences.enableTrayIcon ); -} - -void MainWindow::wheelEvent( QWheelEvent *ev ) -{ - if ( ev->modifiers().testFlag( Qt::ControlModifier ) ) - { - if ( ev->delta() > 0 ) - { - zoomin(); - } - else if ( ev->delta() < 0 ) - { - zoomout(); - } - ev->accept(); - } - else - { - ev->ignore(); - } -} - -void MainWindow::closeEvent( QCloseEvent * ev ) -{ - if ( cfg.preferences.enableTrayIcon && cfg.preferences.closeToTray ) - { - ev->ignore(); - hide(); - } - else - { - ev->accept(); - qApp->quit(); - } -} - -void MainWindow::applyProxySettings() -{ - if( cfg.preferences.proxyServer.enabled && cfg.preferences.proxyServer.useSystemProxy ) - { - QList proxies = QNetworkProxyFactory::systemProxyForQuery(); - if( !cfg.preferences.proxyServer.systemProxyUser.isEmpty() ) - { - proxies.first().setUser( cfg.preferences.proxyServer.systemProxyUser ); - proxies.first().setPassword( cfg.preferences.proxyServer.systemProxyPassword ); - } - QNetworkProxy::setApplicationProxy( proxies.first() ); - return; - } - - QNetworkProxy::ProxyType type = QNetworkProxy::NoProxy; - - if ( cfg.preferences.proxyServer.enabled ) - { - switch( cfg.preferences.proxyServer.type ) - { - case Config::ProxyServer::Socks5: - type = QNetworkProxy::Socks5Proxy; - break; - case Config::ProxyServer::HttpConnect: - type = QNetworkProxy::HttpProxy; - break; - case Config::ProxyServer::HttpGet: - type = QNetworkProxy::HttpCachingProxy; - break; - - default: - break; - } - } - - QNetworkProxy proxy( type ); - - if ( cfg.preferences.proxyServer.enabled ) - { - proxy.setHostName( cfg.preferences.proxyServer.host ); - proxy.setPort( cfg.preferences.proxyServer.port ); - - if ( cfg.preferences.proxyServer.user.size() ) - proxy.setUser( cfg.preferences.proxyServer.user ); - - if ( cfg.preferences.proxyServer.password.size() ) - proxy.setPassword( cfg.preferences.proxyServer.password ); - } - - QNetworkProxy::setApplicationProxy( proxy ); -} - -void MainWindow::applyWebSettings() -{ - QWebSettings *defaultSettings = QWebSettings::globalSettings(); - defaultSettings->setAttribute(QWebSettings::PluginsEnabled, cfg.preferences.enableWebPlugins); - defaultSettings->setAttribute( QWebSettings::DeveloperExtrasEnabled, true ); -} - -void MainWindow::makeDictionaries() -{ - scanPopup.reset(); - - wordFinder.clear(); - - dictionariesUnmuted.clear(); - - ftsIndexing.stopIndexing(); - ftsIndexing.clearDictionaries(); - - loadDictionaries( this, isVisible(), cfg, dictionaries, dictNetMgr, false ); - - for( unsigned x = 0; x < dictionaries.size(); x++ ) - dictionaries[ x ]->setFTSParameters( cfg.preferences.fts ); - - ftsIndexing.setDictionaries( dictionaries ); - ftsIndexing.doIndexing(); - - updateStatusLine(); - updateGroupList(); - makeScanPopup(); -} - -void MainWindow::updateStatusLine() -{ - unsigned articleCount = 0, wordCount = 0; - - for( unsigned x = dictionaries.size(); x--; ) - { - articleCount += dictionaries[ x ]->getArticleCount(); - wordCount += dictionaries[ x ]->getWordCount(); - } - - mainStatusBar->showMessage( tr( "%1 dictionaries, %2 articles, %3 words" ). - arg( dictionaries.size() ).arg( articleCount ). - arg( wordCount ), 10000 ); -} - -void MainWindow::updateGroupList() -{ - bool haveGroups = cfg.groups.size(); - - groupList->setVisible( haveGroups ); - - groupLabel.setText( haveGroups ? tr( "Look up in:" ) : tr( "Look up:" ) ); - - // currentIndexChanged() signal is very trigger-happy. To avoid triggering - // it, we disconnect it while we're clearing and filling back groups. - disconnect( groupList, SIGNAL( currentIndexChanged( QString const & ) ), - this, SLOT( currentGroupChanged( QString const & ) ) ); - - groupInstances.clear(); - - // Add dictionaryOrder first, as the 'All' group. - { - Instances::Group g( cfg.dictionaryOrder, dictionaries ); - - // Add any missing entries to dictionary order - Instances::complementDictionaryOrder( g, - Instances::Group( cfg.inactiveDictionaries, dictionaries ), - dictionaries ); - - g.name = tr( "All" ); - g.id = Instances::Group::AllGroupId; - g.icon = "folder.png"; - - groupInstances.push_back( g ); - } - - for( int x = 0; x < cfg.groups.size(); ++x ) - groupInstances.push_back( Instances::Group( cfg.groups[ x ], dictionaries ) ); - - // Update names for dictionaries that are present, so that they could be - // found in case they got moved. - Instances::updateNames( cfg, dictionaries ); - - groupList->fill( groupInstances ); - groupList->setCurrentGroup( cfg.lastMainGroupId ); - updateCurrentGroupProperty(); - - updateDictionaryBar(); - -#ifdef QT_DEBUG - qDebug() << "Reloading all the tabs..."; -#endif - - for( int i = 0; i < ui.tabWidget->count(); ++i ) - { - ArticleView & view = - dynamic_cast< ArticleView & >( *( ui.tabWidget->widget( i ) ) ); - - view.reload(); - } - - connect( groupList, SIGNAL( currentIndexChanged( QString const & ) ), - this, SLOT( currentGroupChanged( QString const & ) ) ); -} - -void MainWindow::updateDictionaryBar() -{ - if ( !dictionaryBar.toggleViewAction()->isChecked() ) - return; // It's not enabled, therefore hidden -- don't waste time - - unsigned currentId = groupList -> getCurrentGroup(); - Instances::Group * grp = groupInstances.findGroup( currentId ); - - dictionaryBar.setMutedDictionaries( 0 ); - if ( grp ) { // Should always be !0, but check as a safeguard - if( currentId == Instances::Group::AllGroupId ) - dictionaryBar.setMutedDictionaries( &cfg.mutedDictionaries ); - else - { - Config::Group * grp = cfg.getGroup( currentId ); - dictionaryBar.setMutedDictionaries( grp ? &grp->mutedDictionaries : 0 ); - } - - dictionaryBar.setDictionaries( grp->dictionaries ); - - if ( useSmallIconsInToolbarsAction.isChecked() ) { - int extent = QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize); - dictionaryBar.setDictionaryIconSize( extent ); - } - } -} - -void MainWindow::makeScanPopup() -{ - scanPopup.reset(); - - if ( !cfg.preferences.enableScanPopup && - !cfg.preferences.enableClipboardHotkey ) - return; - - scanPopup = new ScanPopup( 0, cfg, articleNetMgr, dictionaries, groupInstances, - history ); - - scanPopup->setStyleSheet( styleSheet() ); - - if ( cfg.preferences.enableScanPopup && enableScanPopup->isChecked() ) - scanPopup->enableScanning(); - - connect( scanPopup.get(), SIGNAL(editGroupRequested( unsigned ) ), - this, SLOT(editDictionaries( unsigned )), Qt::QueuedConnection ); - - connect( scanPopup.get(), SIGNAL(sendWordToMainWindow( QString const & ) ), - this, SLOT(wordReceived( QString const & )), Qt::QueuedConnection ); - - connect( this, SIGNAL( setExpandOptionalParts( bool ) ), - scanPopup.get(), SIGNAL( setViewExpandMode( bool ) ) ); - - connect( scanPopup.get(), SIGNAL( setExpandMode( bool ) ), - this, SLOT( setExpandMode( bool ) ) ); - - connect( scanPopup.get(), SIGNAL( forceAddWordToHistory( const QString & ) ), - this, SLOT( forceAddWordToHistory( const QString & ) ) ); - - connect( scanPopup.get(), SIGNAL( showDictionaryInfo( const QString & ) ), - this, SLOT( showDictionaryInfo( const QString & ) ) ); - - connect( scanPopup.get(), SIGNAL( openDictionaryFolder( const QString & ) ), - this, SLOT( openDictionaryFolder( const QString & ) ) ); - - connect( scanPopup.get(), SIGNAL( sendWordToHistory( QString ) ), - this, SLOT( addWordToHistory( QString ) ) ); - -#ifdef Q_OS_WIN32 - connect( scanPopup.get(), SIGNAL( isGoldenDictWindow( HWND ) ), - this, SLOT( isGoldenDictWindow( HWND ) ) ); -#endif -} - -vector< sptr< Dictionary::Class > > const & MainWindow::getActiveDicts() -{ - if ( groupInstances.empty() ) - return dictionaries; - - int current = groupList->currentIndex(); - - if ( current < 0 || current >= (int) groupInstances.size() ) - { - // This shouldn't ever happen - return dictionaries; - } - - Config::MutedDictionaries const * mutedDictionaries = dictionaryBar.getMutedDictionaries(); - if ( !dictionaryBar.toggleViewAction()->isChecked() || mutedDictionaries == 0 ) - return groupInstances[ current ].dictionaries; - else - { - vector< sptr< Dictionary::Class > > const & activeDicts = - groupInstances[ current ].dictionaries; - - // Populate the special dictionariesUnmuted array with only unmuted - // dictionaries - - dictionariesUnmuted.clear(); - dictionariesUnmuted.reserve( activeDicts.size() ); - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - if ( !mutedDictionaries->contains( - QString::fromStdString( activeDicts[ x ]->getId() ) ) ) - dictionariesUnmuted.push_back( activeDicts[ x ] ); - - return dictionariesUnmuted; - } -} - -void MainWindow::createTabList() -{ - tabListMenu->setIcon(QIcon(":/icons/windows-list.png")); - connect(tabListMenu, SIGNAL(aboutToShow()), this, SLOT(fillWindowsMenu())); - connect(tabListMenu, SIGNAL(triggered(QAction*)), this, SLOT(switchToWindow(QAction*))); - - tabListButton = new QToolButton(ui.tabWidget); - tabListButton->setAutoRaise(true); - tabListButton->setIcon(tabListMenu->icon()); - tabListButton->setMenu(tabListMenu); - tabListButton->setToolTip( tr( "Open Tabs List" ) ); - tabListButton->setPopupMode(QToolButton::InstantPopup); - ui.tabWidget->setCornerWidget(tabListButton); - tabListButton->setFocusPolicy(Qt::ClickFocus); -} - -void MainWindow::fillWindowsMenu() -{ - tabListMenu->clear(); - - if(cfg.preferences.mruTabOrder) - { - for (int i = 0; i < mruList.count(); i++) - { - QAction *act = tabListMenu->addAction(ui.tabWidget->tabIcon(ui.tabWidget->indexOf(mruList.at(i))), ui.tabWidget->tabText(ui.tabWidget->indexOf(mruList.at(i)))); - - //remember the index of the Tab to be later used in ctrlReleased() - act->setData(ui.tabWidget->indexOf(mruList.at(i))); - - if (ui.tabWidget->currentIndex() == ui.tabWidget->indexOf(mruList.at(i))) - { - QFont f( act->font() ); - f.setBold( true ); - act->setFont( f ); - } - } - if (tabListMenu->actions().size() > 1) - { - tabListMenu->setActiveAction(tabListMenu->actions().at(1)); - } - } - else - { - for (int i = 0; i < ui.tabWidget->count(); i++) - { - QAction *act = tabListMenu->addAction( ui.tabWidget->tabIcon( i ), - ui.tabWidget->tabText( i ) ); - act->setData( i ); - if (ui.tabWidget->currentIndex() == i) - { - QFont f( act->font() ); - f.setBold( true ); - act->setFont( f ); - } - } - } - return; -} - -void MainWindow::switchToWindow(QAction *act) -{ - int idx = act->data().toInt(); - ui.tabWidget->setCurrentIndex(idx); -} - - -void MainWindow::addNewTab() -{ - createNewTab( true, tr( "(untitled)" ) ); -} - -ArticleView * MainWindow::createNewTab( bool switchToIt, - QString const & name ) -{ - ArticleView * view = new ArticleView( this, articleNetMgr, dictionaries, - groupInstances, false, cfg, - *ui.searchInPageAction, - dictionaryBar.toggleViewAction(), - groupList ); - - connect( view, SIGNAL( titleChanged( ArticleView *, QString const & ) ), - this, SLOT( titleChanged( ArticleView *, QString const & ) ) ); - - connect( view, SIGNAL( iconChanged( ArticleView *, QIcon const & ) ), - this, SLOT( iconChanged( ArticleView *, QIcon const & ) ) ); - - connect( view, SIGNAL( pageLoaded( ArticleView * ) ), - this, SLOT( pageLoaded( ArticleView * ) ) ); - - connect( view, SIGNAL( openLinkInNewTab( QUrl const &, QUrl const &, QString const &, ArticleView::Contexts const & ) ), - this, SLOT( openLinkInNewTab( QUrl const &, QUrl const &, QString const &, ArticleView::Contexts const & ) ) ); - - connect( view, SIGNAL( showDefinitionInNewTab( QString const &, unsigned, QString const &, ArticleView::Contexts const & ) ), - this, SLOT( showDefinitionInNewTab( QString const &, unsigned, QString const &, ArticleView::Contexts const & ) ) ); - - connect( view, SIGNAL( typingEvent( QString const & ) ), - this, SLOT( typingEvent( QString const & ) ) ); - - connect( view, SIGNAL( activeArticleChanged( ArticleView const *, const QString & ) ), - this, SLOT( activeArticleChanged( ArticleView const *, const QString & ) ) ); - - connect( view, SIGNAL( statusBarMessage( QString const &, int, QPixmap const & ) ), - this, SLOT( showStatusBarMessage( QString const &, int, QPixmap const & ) ) ); - - connect( view, SIGNAL( showDictsPane( ) ), this, SLOT( showDictsPane( ) ) ); - - connect( view, SIGNAL( forceAddWordToHistory( const QString & ) ), - this, SLOT( forceAddWordToHistory( const QString & ) ) ); - - connect( this, SIGNAL( setExpandOptionalParts( bool ) ), - view, SLOT( receiveExpandOptionalParts( bool ) ) ); - - connect( view, SIGNAL( setExpandMode( bool ) ), this, SLOT( setExpandMode( bool ) ) ); - - connect( view, SIGNAL( sendWordToHistory( QString ) ), - this, SLOT( addWordToHistory( QString ) ) ); - - connect( view, SIGNAL( sendWordToInputLine( QString const & ) ), - this, SLOT( sendWordToInputLine( QString const & ) ) ); - - connect( view, SIGNAL( storeResourceSavePath( QString const & ) ), - this, SLOT( storeResourceSavePath( QString const & ) ) ); - - connect( view, SIGNAL( zoomIn()), this, SLOT( zoomin() ) ); - - connect( view, SIGNAL( zoomOut()), this, SLOT( zoomout() ) ); - - view->setSelectionBySingleClick( cfg.preferences.selectWordBySingleClick ); - - int index = cfg.preferences.newTabsOpenAfterCurrentOne ? - ui.tabWidget->currentIndex() + 1 : ui.tabWidget->count(); - - QString escaped = name; - escaped.replace( "&", "&&" ); - - ui.tabWidget->insertTab( index, view, escaped ); - mruList.append(dynamic_cast(view)); - - if ( switchToIt ) - ui.tabWidget->setCurrentIndex( index ); - - view->setZoomFactor( cfg.preferences.zoomFactor ); - -#ifdef Q_OS_WIN32 - view->installEventFilter( this ); -#endif - return view; -} - -void MainWindow::tabCloseRequested( int x ) -{ - QWidget * w = ui.tabWidget->widget( x ); - - mruList.removeOne(w); - - // In MRU case: First, we switch to the appropriate tab - // and only then remove the old one. - - //activate a tab in accordance with MRU - if ( cfg.preferences.mruTabOrder && mruList.size() > 0 ) { - ui.tabWidget->setCurrentWidget(mruList.at(0)); - } - else if( ui.tabWidget->count() > 1 ) - { - //activate neighboring tab - int n = x >= ui.tabWidget->count() - 1 ? x - 1 : x + 1; - if( n >= 0 ) - ui.tabWidget->setCurrentIndex( n ); - } - - ui.tabWidget->removeTab( x ); - delete w; - - // if everything is closed, add a new tab - if ( ui.tabWidget->count() == 0 ) - addNewTab(); -} - -void MainWindow::closeCurrentTab() -{ - tabCloseRequested( ui.tabWidget->currentIndex() ); -} - -void MainWindow::closeAllTabs() -{ - while (ui.tabWidget->count() > 1) - closeCurrentTab(); - - // close last tab - closeCurrentTab(); -} - -void MainWindow::closeRestTabs() -{ - if ( ui.tabWidget->count() < 2 ) - return; - - int idx = ui.tabWidget->currentIndex(); - - for (int i = 0; i < idx; i++) - tabCloseRequested(0); - - ui.tabWidget->setCurrentIndex(0); - - while (ui.tabWidget->count() > 1) - tabCloseRequested(1); -} - -void MainWindow::switchToNextTab() -{ - if ( ui.tabWidget->count() < 2 ) - return; - - ui.tabWidget->setCurrentIndex( ( ui.tabWidget->currentIndex() + 1 ) % ui.tabWidget->count() ); -} - -void MainWindow::switchToPrevTab() -{ - if ( ui.tabWidget->count() < 2 ) - return; - - if ( !ui.tabWidget->currentIndex() ) - ui.tabWidget->setCurrentIndex( ui.tabWidget->count() - 1 ); - else - ui.tabWidget->setCurrentIndex( ui.tabWidget->currentIndex() - 1 ); -} - -//emitted by tabListMenu when user releases Ctrl -void MainWindow::ctrlReleased() -{ - if (tabListMenu->actions().size() > 1) - { - ui.tabWidget->setCurrentIndex(tabListMenu->activeAction()->data().toInt()); - } - tabListMenu->hide(); -} - -void MainWindow::backClicked() -{ - GD_DPRINTF( "Back\n" ); - - ArticleView *view = getCurrentArticleView(); - - view->back(); -} - -void MainWindow::forwardClicked() -{ - GD_DPRINTF( "Forward\n" ); - - ArticleView *view = getCurrentArticleView(); - - view->forward(); -} - -void MainWindow::titleChanged( ArticleView * view, QString const & title ) -{ - QString escaped = title; - escaped.replace( "&", "&&" ); - - if( escaped.isRightToLeft() ) - { - escaped.insert( 0, (ushort)0x202E ); // RLE, Right-to-Left Embedding - escaped.append( (ushort)0x202C ); // PDF, POP DIRECTIONAL FORMATTING - } - - ui.tabWidget->setTabText( ui.tabWidget->indexOf( view ), escaped ); - updateWindowTitle(); -} - -void MainWindow::iconChanged( ArticleView * view, QIcon const & icon ) -{ - ui.tabWidget->setTabIcon( ui.tabWidget->indexOf( view ), groupInstances.size() > 1 ? icon : QIcon() ); -} - -void MainWindow::updateWindowTitle() -{ - ArticleView *view = getCurrentArticleView(); - if ( view ) - { - QString str = view->getTitle(); - if( !str.isEmpty() ) - { - if( str.isRightToLeft() ) - { - str.insert( 0, (ushort)0x202E ); // RLE, Right-to-Left Embedding - str.append( (ushort)0x202C ); // PDF, POP DIRECTIONAL FORMATTING - } - if( !blockUpdateWindowTitle ) - setWindowTitle( tr( "%1 - %2" ).arg( str, "GoldenDict" ) ); - blockUpdateWindowTitle = false; - } - } -} - -void MainWindow::pageLoaded( ArticleView * view ) -{ - if( view != getCurrentArticleView() ) - return; // It was background action - - updateBackForwardButtons(); - - updatePronounceAvailability(); - - if ( cfg.preferences.pronounceOnLoadMain ) - pronounce( view ); - - updateFoundInDictsList(); -} - -void MainWindow::showStatusBarMessage( QString const & message, int timeout, QPixmap const & icon ) -{ - if( message.isEmpty() ) - mainStatusBar->clearMessage(); - else - mainStatusBar->showMessage( message, timeout, icon ); -} - -void MainWindow::tabSwitched( int ) -{ - translateBox->setPopupEnabled( false ); - updateBackForwardButtons(); - updatePronounceAvailability(); - updateFoundInDictsList(); - updateWindowTitle(); - if (mruList.size() > 1) - { - int from = mruList.indexOf( ui.tabWidget->widget( ui.tabWidget->currentIndex() ) ); - if ( from > 0) - mruList.move( from, 0 ); - } -} - -void MainWindow::tabMenuRequested(QPoint pos) -{ -// // dont show this menu for single tab -// if ( ui.tabWidget->count() < 2 ) -// return; - - tabMenu->popup(ui.tabWidget->mapToGlobal(pos)); -} - -void MainWindow::dictionaryBarToggled( bool ) -{ - // From now on, only the triggered() signal is interesting to us - disconnect( dictionaryBar.toggleViewAction(), SIGNAL(toggled(bool)), - this, SLOT(dictionaryBarToggled(bool)) ); - - updateDictionaryBar(); // Updates dictionary bar contents if it's shown - applyMutedDictionariesState(); // Visibility change affects searches and results -} - -void MainWindow::pronounce( ArticleView * view ) -{ - if ( view ) - view->playSound(); - else - getCurrentArticleView()->playSound(); -} - -void MainWindow::showDictsPane( ) -{ - if( !ui.dictsPane->isVisible() ) - ui.dictsPane->show(); -} - -void MainWindow::dictsPaneVisibilityChanged( bool visible ) -{ - if (visible) { - updateFoundInDictsList(); - } -} - -void MainWindow::updateFoundInDictsList() -{ - if (!ui.dictsList->isVisible()) - { - // nothing to do, the list is not visible - return; - } - - ui.dictsList->clear(); - - ArticleView *view = getCurrentArticleView(); - - if ( view ) - { - QStringList ids = view->getArticlesList(); - QString activeId = view->getActiveArticleId(); - - for( QStringList::const_iterator i = ids.constBegin(); i != ids.constEnd(); ++i) - { - // Find this dictionary - - for( unsigned x = dictionaries.size(); x--; ) - { - if ( dictionaries[ x ]->getId() == i->toUtf8().data() ) - { - QString dictName = QString::fromUtf8( dictionaries[ x ]->getName().c_str() ); - QString dictId = QString::fromUtf8( dictionaries[ x ]->getId().c_str() ); - QListWidgetItem * item = - new QListWidgetItem( - dictionaries[ x ]->getIcon().pixmap(32).scaledToHeight( 21, Qt::SmoothTransformation ), - dictName, - ui.dictsList, QListWidgetItem::Type ); - item->setData(Qt::UserRole, QVariant( dictId ) ); - item->setToolTip(dictName); - - ui.dictsList->addItem( item ); - if (dictId == activeId) - { - ui.dictsList->setCurrentItem(item); - } - break; - } - } - } - } -} - -void MainWindow::updateBackForwardButtons() -{ - ArticleView *view = getCurrentArticleView(); - - if ( view ) - { - navBack->setEnabled(view->canGoBack()); - navForward->setEnabled(view->canGoForward()); - } -} - -void MainWindow::updatePronounceAvailability() -{ - bool pronounceEnabled = ui.tabWidget->count() > 0 && - getCurrentArticleView()->hasSound(); - - navPronounce->setEnabled( pronounceEnabled ); -} - -void MainWindow::editDictionaries( unsigned editDictionaryGroup ) -{ - hotkeyWrapper.reset(); // No hotkeys while we're editing dictionaries - scanPopup.reset(); // No scan popup either. No one should use dictionaries. - closeHeadwordsDialog(); - closeFullTextSearchDialog(); - - ftsIndexing.stopIndexing(); - ftsIndexing.clearDictionaries(); - - wordFinder.clear(); - dictionariesUnmuted.clear(); - - hideGDHelp(); - - { // Limit existence of newCfg - - Config::Class newCfg = cfg; - EditDictionaries dicts( this, newCfg, dictionaries, groupInstances, dictNetMgr ); - - connect( &dicts, SIGNAL( showDictionaryInfo( QString const & ) ), - this, SLOT( showDictionaryInfo( QString const & ) ) ); - - connect( &dicts, SIGNAL( showDictionaryHeadwords( QString const & ) ), - this, SLOT( showDictionaryHeadwords( QString const & ) ) ); - - if ( editDictionaryGroup != Instances::Group::NoGroupId ) - dicts.editGroup( editDictionaryGroup ); - - dicts.exec(); - - if ( dicts.areDictionariesChanged() || dicts.areGroupsChanged() ) - { - - // Set muted dictionaries from old groups - for( int x = 0; x < newCfg.groups.size(); x++ ) - { - unsigned id = newCfg.groups[ x ].id; - if( id != Instances::Group::NoGroupId ) - { - Config::Group const * grp = cfg.getGroup( id ); - if( grp ) - { - newCfg.groups[ x ].mutedDictionaries = grp->mutedDictionaries; - newCfg.groups[ x ].popupMutedDictionaries = grp->popupMutedDictionaries; - } - } - } - - cfg = newCfg; - - updateGroupList(); - - Config::save( cfg ); - - translateInputChanged( translateLine->text() ); - } - - } - - makeScanPopup(); - installHotKeys(); - - for( unsigned x = 0; x < dictionaries.size(); x++ ) - dictionaries[ x ]->setFTSParameters( cfg.preferences.fts ); - - ftsIndexing.setDictionaries( dictionaries ); - ftsIndexing.doIndexing(); -} - -void MainWindow::editCurrentGroup() -{ - editDictionaries( groupList->getCurrentGroup() ); -} - -void MainWindow::editPreferences() -{ - hotkeyWrapper.reset(); // So we could use the keys it hooks - scanPopup.reset(); // No scan popup either. No one should use dictionaries. - closeHeadwordsDialog(); - closeFullTextSearchDialog(); - - ftsIndexing.stopIndexing(); - ftsIndexing.clearDictionaries(); - - Preferences preferences( this, cfg ); - - hideGDHelp(); - - preferences.show(); - - if ( preferences.exec() == QDialog::Accepted ) - { - Config::Preferences p = preferences.getPreferences(); - - // These parameters are not set in dialog - p.zoomFactor = cfg.preferences.zoomFactor; - p.helpZoomFactor = cfg.preferences.helpZoomFactor; - p.wordsZoomLevel = cfg.preferences.wordsZoomLevel; - p.hideMenubar = cfg.preferences.hideMenubar; - p.searchInDock = cfg.preferences.searchInDock; - p.alwaysOnTop = cfg.preferences.alwaysOnTop; -#ifndef Q_WS_X11 - p.trackClipboardChanges = cfg.preferences.trackClipboardChanges; -#endif - p.proxyServer.systemProxyUser = cfg.preferences.proxyServer.systemProxyUser; - p.proxyServer.systemProxyPassword = cfg.preferences.proxyServer.systemProxyPassword; - - p.fts.dialogGeometry = cfg.preferences.fts.dialogGeometry; - p.fts.matchCase = cfg.preferences.fts.matchCase; - p.fts.maxArticlesPerDictionary = cfg.preferences.fts.maxArticlesPerDictionary; - p.fts.maxDistanceBetweenWords = cfg.preferences.fts.maxDistanceBetweenWords; - p.fts.searchMode = cfg.preferences.fts.searchMode; - p.fts.useMaxArticlesPerDictionary = cfg.preferences.fts.useMaxArticlesPerDictionary; - p.fts.useMaxDistanceBetweenWords = cfg.preferences.fts.useMaxDistanceBetweenWords; - - bool needReload = false; - - // See if we need to reapply stylesheets - if ( cfg.preferences.displayStyle != p.displayStyle || cfg.preferences.addonStyle != p.addonStyle ) - { - applyQtStyleSheet( p.displayStyle, p.addonStyle ); - articleMaker.setDisplayStyle( p.displayStyle, p.addonStyle ); - needReload = true; - } - - if( cfg.preferences.collapseBigArticles != p.collapseBigArticles - || cfg.preferences.articleSizeLimit != p.articleSizeLimit ) - { - articleMaker.setCollapseParameters( p.collapseBigArticles, p.articleSizeLimit ); - } - - // See if we need to reapply expand optional parts mode - if( cfg.preferences.alwaysExpandOptionalParts != p.alwaysExpandOptionalParts ) - { - emit setExpandOptionalParts( p.alwaysExpandOptionalParts ); - // Signal setExpandOptionalParts reload all articles - needReload = false; - } - - // See if we need to change help language - if( cfg.preferences.helpLanguage != p.helpLanguage ) - closeGDHelp(); - - for( int x = 0; x < ui.tabWidget->count(); ++x ) - { - ArticleView & view = - dynamic_cast< ArticleView & >( *( ui.tabWidget->widget( x ) ) ); - - view.setSelectionBySingleClick( p.selectWordBySingleClick ); - - if( needReload ) - view.reload(); - } - - if( cfg.preferences.historyStoreInterval != p.historyStoreInterval ) - history.setSaveInterval( p.historyStoreInterval ); - - cfg.preferences = p; - - beforeScanPopupSeparator->setVisible( cfg.preferences.enableScanPopup ); - enableScanPopup->setVisible( cfg.preferences.enableScanPopup ); - afterScanPopupSeparator->setVisible( cfg.preferences.enableScanPopup ); - - if ( !cfg.preferences.enableScanPopup ) - enableScanPopup->setChecked( false ); - - updateTrayIcon(); - applyProxySettings(); - applyWebSettings(); - makeScanPopup(); - - ui.tabWidget->setHideSingleTab(cfg.preferences.hideSingleTab); - - setAutostart( cfg.preferences.autoStart ); - - prepareNewReleaseChecks(); - - history.enableAdd( cfg.preferences.storeHistory ); - history.setMaxSize( cfg.preferences.maxStringsInHistory ); - ui.historyPaneWidget->updateHistoryCounts(); - - for( unsigned x = 0; x < dictionaries.size(); x++ ) - dictionaries[ x ]->setFTSParameters( cfg.preferences.fts ); - - ui.fullTextSearchAction->setEnabled( cfg.preferences.fts.enabled ); - - Config::save( cfg ); - } - - makeScanPopup(); - installHotKeys(); - - ftsIndexing.setDictionaries( dictionaries ); - ftsIndexing.doIndexing(); -} - -void MainWindow::currentGroupChanged( QString const & ) -{ - cfg.lastMainGroupId = groupList->getCurrentGroup(); - Instances::Group const * igrp = groupInstances.findGroup( cfg.lastMainGroupId ); - if( cfg.lastMainGroupId == Instances::Group::AllGroupId ) - { - if( igrp ) - igrp->checkMutedDictionaries( &cfg.mutedDictionaries ); - dictionaryBar.setMutedDictionaries( &cfg.mutedDictionaries ); - } - else - { - Config::Group * grp = cfg.getGroup( cfg.lastMainGroupId ); - if( grp ) - { - if( igrp ) - igrp->checkMutedDictionaries( &grp->mutedDictionaries ); - dictionaryBar.setMutedDictionaries( &grp->mutedDictionaries ); - } - else - dictionaryBar.setMutedDictionaries( 0 ); - } - - updateDictionaryBar(); - - // Update word search results - translateBox->setPopupEnabled( false ); - translateInputChanged( translateLine->text() ); - translateInputFinished( false ); - - updateCurrentGroupProperty(); - - if( ftsDlg ) - ftsDlg->setCurrentGroup( cfg.lastMainGroupId ); -} - -void MainWindow::updateCurrentGroupProperty() -{ - // We maintain currentGroup property so styles could use that to change - // fonts based on group names - Instances::Group * grp = - groupInstances.findGroup( groupList->getCurrentGroup() ); - - if ( grp && translateLine->property( "currentGroup" ).toString() != - grp->name ) - { - translateLine->setProperty( "currentGroup", grp->name ); - wordList->setProperty( "currentGroup", grp->name ); - QString ss = styleSheet(); - - // Only update stylesheet if it mentions currentGroup, as updating the - // stylesheet is a slow operation - if ( ss.contains("currentGroup") ) - setStyleSheet( ss ); - } -} - -void MainWindow::translateInputChanged( QString const & newValue ) -{ - // If there's some status bar message present, clear it since it may be - // about the previous search that has failed. - if ( !mainStatusBar->currentMessage().isEmpty() ) - { - mainStatusBar->clearMessage(); - } - - // If some word is selected in the word list, unselect it. This prevents - // triggering a set of spurious activation signals when the list changes. - - if ( wordList->selectionModel()->hasSelection() ) - wordList->setCurrentItem( 0, QItemSelectionModel::Clear ); - - QString req = newValue.trimmed(); - - if ( !req.size() ) - { - // An empty request always results in an empty result - wordFinder.cancel(); - wordList->clear(); - wordList->unsetCursor(); - - // Reset the noResults mark if it's on right now - if ( translateLine->property( "noResults" ).toBool() ) - { - translateLine->setProperty( "noResults", false ); - setStyleSheet( styleSheet() ); - } - return; - } - - wordList->setCursor( Qt::WaitCursor ); - - wordFinder.prefixMatch( req, getActiveDicts() ); -} - -void MainWindow::translateInputFinished( bool checkModifiers, QString const & dictID ) -{ - QString word = Folding::unescapeWildcardSymbols( translateLine->text() ); - - if ( word.size() ) - { - Qt::KeyboardModifiers mods = QApplication::keyboardModifiers(); - if ( checkModifiers && ( mods & (Qt::ControlModifier | Qt::ShiftModifier) ) ) - addNewTab(); - - showTranslationFor( word, 0, dictID ); - - if ( cfg.preferences.searchInDock ) - { - if ( ui.searchPane->isFloating() ) - activateWindow(); - } - - getCurrentArticleView()->focus(); - } -} - -void MainWindow::handleEsc() -{ - ArticleView *view = getCurrentArticleView(); - if ( view && view->closeSearch() ) - return; - - if( cfg.preferences.escKeyHidesMainWindow ) - { - toggleMainWindow(); - } - else - focusTranslateLine(); -} - -void MainWindow::focusTranslateLine() -{ - if ( cfg.preferences.searchInDock ) - { - if ( ui.searchPane->isFloating() ) - ui.searchPane->activateWindow(); - } - else - { - if ( !isActiveWindow() ) - activateWindow(); - } - - translateLine->setFocus(); - translateLine->selectAll(); -} - -void MainWindow::applyMutedDictionariesState() -{ - translateBox->setPopupEnabled( false ); - - // Redo the current search request - translateInputChanged( translateLine->text() ); - - ArticleView *view = getCurrentArticleView(); - - if ( view ) - { - // Update active article view - view->updateMutedContents(); - } -} - -bool MainWindow::handleBackForwardMouseButtons ( QMouseEvent * event) { - if ( event->button() == Qt::XButton1 ) { - backClicked(); - return true; - } - else - if ( event->button() == Qt::XButton2 ) { - forwardClicked(); - return true; - } - else - return false; -} - -bool MainWindow::eventFilter( QObject * obj, QEvent * ev ) -{ -#ifdef Q_OS_WIN - if( obj == this && ev->type() == gdStoreNormalGeometryEvent ) - { - if( !isMaximized() && !isMinimized() && !isFullScreen() ) - cfg.normalMainWindowGeometry = normalGeometry(); - ev->accept(); - return true; - } - - if( obj == this && ev->type() == gdApplyNormalGeometryEvent ) - { - if( !isMaximized() && !isMinimized() && !isFullScreen() ) - setGeometry( cfg.normalMainWindowGeometry ); - ev->accept(); - return true; - } -#endif - if ( ev->type() == QEvent::ShortcutOverride - || ev->type() == QEvent::KeyPress ) - { - // Handle Ctrl+H to show the History Pane. - QKeyEvent * ke = static_cast( ev ); - if ( ke->key() == Qt::Key_H && ke->modifiers() == Qt::ControlModifier ) - { - if( ev->type() == QEvent::KeyPress ) - on_showHideHistory_triggered(); - ev->accept(); - return true; - } - - // Handle F3/Shift+F3 shortcuts - if ( ke->key() == Qt::Key_F3 ) - { - ArticleView * view = getCurrentArticleView(); - if ( view && view->handleF3( obj, ev ) ) - return true; - } - } - - // when the main window is moved or resized, hide the word list suggestions - if ( obj == this && ( ev->type() == QEvent::Move || ev->type() == QEvent::Resize ) ) - { -#ifdef Q_OS_WIN - if( !isMaximized() && !isMinimized() && !isFullScreen() && gdAskMessage != 0xFFFFFFFF ) - { - QEvent *ev = new QEvent( gdStoreNormalGeometryEvent ); - qApp->postEvent( this, ev ); - } -#endif - if ( !cfg.preferences.searchInDock ) - { - translateBox->setPopupEnabled( false ); - return false; - } - } - - if ( obj == this && ev->type() == QEvent::WindowStateChange ) - { - QWindowStateChangeEvent *stev = static_cast< QWindowStateChangeEvent *>( ev ); - wasMaximized = ( stev->oldState() == Qt::WindowMaximized && isMinimized() ); - -#ifdef Q_OS_WIN - if( stev->oldState() == Qt::WindowMaximized && !isMinimized() && cfg.normalMainWindowGeometry.width() > 0 ) - { - QEvent *ev = new QEvent( gdApplyNormalGeometryEvent ); - qApp->postEvent( this, ev ); - } -#endif - } - - if ( ev->type() == QEvent::MouseButtonPress ) { - QMouseEvent * event = static_cast< QMouseEvent * >( ev ); - - // clicks outside of the word list should hide it. - if (obj != translateBox->wordList() && obj != translateBox->wordList()->viewport()) { - translateBox->setPopupEnabled( false ); - } - - return handleBackForwardMouseButtons( event ); - } - - if (ev->type() == QEvent::KeyPress) - { - QKeyEvent *keyevent = static_cast(ev); - if (keyevent->modifiers() == Qt::ControlModifier && keyevent->key() == Qt::Key_Tab) - { - if (cfg.preferences.mruTabOrder) - { - ctrlTabPressed(); - return true; - } - return false; - } - } - - if ( obj == translateLine ) - { - if ( ev->type() == QEvent::KeyPress ) - { - QKeyEvent * keyEvent = static_cast< QKeyEvent * >( ev ); - - if ( cfg.preferences.searchInDock ) - { - if ( keyEvent->matches( QKeySequence::MoveToNextLine ) && wordList->count() ) - { - wordList->setFocus( Qt::ShortcutFocusReason ); - wordList->setCurrentRow( 0, QItemSelectionModel::ClearAndSelect ); - return true; - } - } - } - - if ( ev->type() == QEvent::FocusIn ) { - QFocusEvent * focusEvent = static_cast< QFocusEvent * >( ev ); - - // select all on mouse click - if ( focusEvent->reason() == Qt::MouseFocusReason ) { - QTimer::singleShot(0, this, SLOT(focusTranslateLine())); - } - return false; - } - - if ( ev->type() == QEvent::Resize ) { - QResizeEvent * resizeEvent = static_cast< QResizeEvent * >( ev ); - groupList->setFixedHeight( resizeEvent->size().height() ); - return false; - } - } - else - if ( obj == wordList ) - { - if ( ev->type() == QEvent::KeyPress ) - { - QKeyEvent * keyEvent = static_cast< QKeyEvent * >( ev ); - - if ( keyEvent->matches( QKeySequence::MoveToPreviousLine ) && - !wordList->currentRow() ) - { - wordList->setCurrentRow( 0, QItemSelectionModel::Clear ); - translateLine->setFocus( Qt::ShortcutFocusReason ); - return true; - } - - if ( keyEvent->matches( QKeySequence::InsertParagraphSeparator ) && - wordList->selectedItems().size() ) - { - if ( cfg.preferences.searchInDock ) - { - if ( ui.searchPane->isFloating() ) - activateWindow(); - } - - getCurrentArticleView()->focus(); - - return cfg.preferences.searchInDock; - } - - // Handle typing events used to initiate new lookups - // TODO: refactor to eliminate duplication (see below) - - if ( keyEvent->modifiers() & - ( Qt::ControlModifier | Qt::AltModifier | Qt::MetaModifier ) ) - return false; // A non-typing modifier is pressed - - if ( keyEvent->key() == Qt::Key_Space || - keyEvent->key() == Qt::Key_Backspace || - keyEvent->key() == Qt::Key_Tab || - keyEvent->key() == Qt::Key_Backtab ) - return false; // Those key have other uses than to start typing - // or don't make sense - - QString text = keyEvent->text(); - - if ( text.size() ) - { - typingEvent( text ); - return true; - } - } - } - else - if (obj == ui.dictsList) { - if ( ev->type() == QEvent::KeyPress ) - { - QKeyEvent * keyEvent = static_cast< QKeyEvent * >( ev ); - - // Handle typing events used to initiate new lookups - // TODO: refactor to eliminate duplication (see above) - - if ( keyEvent->modifiers() & - ( Qt::ControlModifier | Qt::AltModifier | Qt::MetaModifier ) ) - return false; // A non-typing modifier is pressed - - if ( keyEvent->key() == Qt::Key_Space || - keyEvent->key() == Qt::Key_Backspace || - keyEvent->key() == Qt::Key_Tab || - keyEvent->key() == Qt::Key_Backtab ) - return false; // Those key have other uses than to start typing - // or don't make sense - - QString text = keyEvent->text(); - - if ( text.size() ) - { - typingEvent( text ); - return true; - } - } - } - return QMainWindow::eventFilter( obj, ev ); - - return false; -} - -void MainWindow::wordListItemActivated( QListWidgetItem * item ) -{ - if( wordListSelChanged ) - wordListSelChanged = false; - else { - // TODO: code duplication with translateInputFinished! - - Qt::KeyboardModifiers mods = QApplication::keyboardModifiers(); - if ( mods & (Qt::ControlModifier | Qt::ShiftModifier) ) - addNewTab(); - - showTranslationFor( item->text() ); - getCurrentArticleView()->focus(); - } -} - -void MainWindow::wordListSelectionChanged() -{ - QList< QListWidgetItem * > selected = wordList->selectedItems(); - - if ( selected.size() ) - { - wordListSelChanged = true; - showTranslationFor( selected.front()->text() ); - } -} - -void MainWindow::dictsListItemActivated( QListWidgetItem * item ) -{ - jumpToDictionary( item, true ); -} - -void MainWindow::dictsListSelectionChanged() -{ - QList< QListWidgetItem * > selected = ui.dictsList->selectedItems(); - if ( selected.size() ) - jumpToDictionary( selected.front() ); -} - -void MainWindow::jumpToDictionary( QListWidgetItem * item, bool force ) -{ - ArticleView * view = getCurrentArticleView(); - if ( view ) - { - view->jumpToDictionary( item->data( Qt::UserRole ).toString(), force ); - } -} - -void MainWindow::openLinkInNewTab( QUrl const & url, - QUrl const & referrer, - QString const & fromArticle, - ArticleView::Contexts const & contexts ) -{ - createNewTab( !cfg.preferences.newTabsOpenInBackground, "" )-> - openLink( url, referrer, fromArticle, contexts ); -} - -void MainWindow::showDefinitionInNewTab( QString const & word, - unsigned group, - QString const & fromArticle, - ArticleView::Contexts const & contexts ) -{ - createNewTab( !cfg.preferences.newTabsOpenInBackground, word )-> - showDefinition( word, group, fromArticle, contexts ); -} - -void MainWindow::activeArticleChanged( ArticleView const * view, QString const & id ) -{ - if( view != getCurrentArticleView() ) - return; // It was background action - - // select the row with the corresponding id - for (int i = 0; i < ui.dictsList->count(); ++i) { - QListWidgetItem * w = ui.dictsList->item( i ); - QString dictId = w->data( Qt::UserRole ).toString(); - - if ( dictId == id ) - { - // update the current row, but only if necessary - if ( i != ui.dictsList->currentRow() ) - { - ui.dictsList->setCurrentRow(i); - } - return; - } - } -} - -void MainWindow::typingEvent( QString const & t ) -{ - if ( t == "\n" || t == "\r" ) - { - if( translateLine->isEnabled() ) - focusTranslateLine(); - } - else - { - if ( ( cfg.preferences.searchInDock && ui.searchPane->isFloating() ) || ui.dictsPane->isFloating() ) - ui.searchPane->activateWindow(); - - if( translateLine->isEnabled() ) - { - translateLine->setFocus(); - if ( cfg.preferences.searchInDock ) - translateLine->setText( t ); - else - translateBox->setText( t, true ); - translateLine->setCursorPosition( t.size() ); - } - } -} - -void MainWindow::mutedDictionariesChanged() -{ - if ( dictionaryBar.toggleViewAction()->isChecked() ) - applyMutedDictionariesState(); -} - -void MainWindow::showHistoryItem( QString const & word ) -{ - // qDebug() << "Showing history item" << word; - - history.enableAdd( false ); - - if ( cfg.preferences.searchInDock ) - translateLine->setText( Folding::escapeWildcardSymbols( word ) ); - else - translateBox->setText( Folding::escapeWildcardSymbols( word ), false ); - - showTranslationFor( word ); - - history.enableAdd( cfg.preferences.storeHistory ); -} - -void MainWindow::showTranslationFor( QString const & inWord, - unsigned inGroup, - QString const & dictID ) -{ - ArticleView *view = getCurrentArticleView(); - - navPronounce->setEnabled( false ); - - unsigned group = inGroup ? inGroup : - ( groupInstances.empty() ? 0 : - groupInstances[ groupList->currentIndex() ].id ); - - view->showDefinition( inWord, group, dictID ); - - updatePronounceAvailability(); - updateFoundInDictsList(); - - // Add to history - - addWordToHistory( inWord ); - - updateBackForwardButtons(); - - #if 0 - QUrl req; - - req.setScheme( "gdlookup" ); - req.setHost( "localhost" ); - req.addQueryItem( "word", inWord ); - req.addQueryItem( "group", - cfg.groups.empty() ? "" : - groupInstances[ groupList->currentIndex() ].name ); - - ui.definition->load( req ); - - return; -#endif - - #if 0 - wstring word = inWord.trimmed().toStdWString(); - - // Where to look? - - vector< sptr< Dictionary::Class > > const & activeDicts = getActiveDicts(); - - // Accumulate main forms - - vector< wstring > alts; - - { - set< wstring > altsSet; - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - { - vector< wstring > found = activeDicts[ x ]->findHeadwordsForSynonym( word ); - - altsSet.insert( found.begin(), found.end() ); - } - - alts.insert( alts.begin(), altsSet.begin(), altsSet.end() ); - } - - for( unsigned x = 0; x < alts.size(); ++x ) - { - DPRINTF( "Alt: %ls\n", alts[ x ].c_str() ); - } - - - string result = - "" - ""; - - QFile cssFile( Config::getUserCssFileName() ); - - if ( cssFile.open( QFile::ReadOnly ) ) - { - result += "\n"; - } - - result += ""; - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - { - try - { - string body = activeDicts[ x ]->getArticle( word, alts ); - - DPRINTF( "From %s: %s\n", activeDicts[ x ]->getName().c_str(), body.c_str() ); - - result += "
From " + activeDicts[ x ]->getName() + "
" + body; - } - catch( Dictionary::exNoSuchWord & ) - { - continue; - } - } - - result += ""; - - ArticleMaker am( dictionaries, groupInstances ); - - string result = am.makeDefinitionFor( inWord, "En" ); - - ui.definition->setContent( result.c_str(), QString() ); - - #endif - - //ui.tabWidget->setTabText( ui.tabWidget->indexOf(ui.tab), inWord.trimmed() ); -} - -void MainWindow::showTranslationFor( QString const & inWord, - QStringList const & dictIDs, - QRegExp const & searchRegExp ) -{ - ArticleView *view = getCurrentArticleView(); - - navPronounce->setEnabled( false ); - - view->showDefinition( inWord, dictIDs, searchRegExp, - groupInstances[ groupList->currentIndex() ].id ); - - updatePronounceAvailability(); - updateFoundInDictsList(); - - // Add to history - - addWordToHistory( inWord ); - - updateBackForwardButtons(); -} - -#ifdef HAVE_X11 -void MainWindow::toggleMainWindow( bool onlyShow, bool byIconClick ) -#else -void MainWindow::toggleMainWindow( bool onlyShow ) -#endif -{ - bool shown = false; - - if ( !isVisible() ) - { - show(); - qApp->setActiveWindow( this ); - activateWindow(); - raise(); - shown = true; - } - else - if ( isMinimized() ) - { - if( wasMaximized ) - showMaximized(); - else - showNormal(); - activateWindow(); - raise(); - shown = true; - } - else - if ( !isActiveWindow() ) - { - activateWindow(); - raise(); - shown = true; - } - else - if ( !onlyShow ) - { - if (cfg.preferences.enableTrayIcon) - hide(); - else - showMinimized(); - - if( headwordsDlg ) - headwordsDlg->hide(); - - if( ftsDlg ) - ftsDlg->hide(); - - if( helpWindow ) - helpWindow->hide(); - } - - if ( shown ) - { - if( headwordsDlg ) - headwordsDlg->show(); - - if( ftsDlg ) - ftsDlg->show(); - - focusTranslateLine(); -#ifdef HAVE_X11 - Window wh = 0; - int rev = 0; - XGetInputFocus( QX11Info::display(), &wh, &rev ); - if( wh != translateLine->internalWinId() && !byIconClick ) - { - QPoint p( 1, 1 ); - mapToGlobal( p ); - XEvent event; - memset( &event, 0, sizeof( event) ); - event.type = ButtonPress; - event.xbutton.x = 1; - event.xbutton.y = 1; - event.xbutton.x_root = p.x(); - event.xbutton.y_root = p.y(); - event.xbutton.window = internalWinId(); - event.xbutton.root = QX11Info::appRootWindow( QX11Info::appScreen() ); - event.xbutton.state = Button1Mask; - event.xbutton.button = Button1; - event.xbutton.same_screen = true; - event.xbutton.time = CurrentTime; - - XSendEvent( QX11Info::display(), internalWinId(), true, 0xfff, &event ); - XFlush( QX11Info::display() ); - event.type = ButtonRelease; - XSendEvent( QX11Info::display(), internalWinId(), true, 0xfff, &event ); - XFlush( QX11Info::display() ); - } -#endif - } -} - -void MainWindow::installHotKeys() -{ - hotkeyWrapper.reset(); // Remove the old one - - if ( cfg.preferences.enableMainWindowHotkey || - cfg.preferences.enableClipboardHotkey ) - { - try - { - hotkeyWrapper = new HotkeyWrapper( this ); - } - catch( HotkeyWrapper::exInit & ) - { - QMessageBox::critical( this, "GoldenDict", - tr( "Failed to initialize hotkeys monitoring mechanism.
" - "Make sure your XServer has RECORD extension turned on." ) ); - - return; - } - - if ( cfg.preferences.enableMainWindowHotkey ) - hotkeyWrapper->setGlobalKey( cfg.preferences.mainWindowHotkey.key1, - cfg.preferences.mainWindowHotkey.key2, - cfg.preferences.mainWindowHotkey.modifiers, - 0 ); - - if ( cfg.preferences.enableClipboardHotkey && scanPopup.get() ) - { - hotkeyWrapper->setGlobalKey( cfg.preferences.clipboardHotkey.key1, - cfg.preferences.clipboardHotkey.key2, - cfg.preferences.clipboardHotkey.modifiers, - 1 ); - } - - connect( hotkeyWrapper.get(), SIGNAL( hotkeyActivated( int ) ), - this, SLOT( hotKeyActivated( int ) ) ); - } -} - -void MainWindow::hotKeyActivated( int hk ) -{ - if ( !hk ) - toggleMainWindow(); - else - if ( scanPopup.get() ) - scanPopup->translateWordFromClipboard(); -} - -void MainWindow::prepareNewReleaseChecks() -{ - if ( cfg.preferences.checkForNewReleases ) - { - QDateTime now = QDateTime::currentDateTime(); - - if ( !cfg.timeForNewReleaseCheck.isValid() || - now.daysTo( cfg.timeForNewReleaseCheck ) > 2 ) - { - // The date is invalid, or the check is set to happen more than 2 days - // in the future -- fix that. - cfg.timeForNewReleaseCheck = now.addDays( 2 ); - } - - int secsToCheck = now.secsTo( cfg.timeForNewReleaseCheck ); - - if ( secsToCheck < 1 ) - secsToCheck = 1; - - newReleaseCheckTimer.setSingleShot( true ); - newReleaseCheckTimer.start( secsToCheck * 1000 ); - } - else - newReleaseCheckTimer.stop(); // In case it was started before -} - -void MainWindow::checkForNewRelease() -{ - if( latestReleaseReply ) - latestReleaseReply->deleteLater(); - latestReleaseReply = 0; - - QNetworkRequest req( - QUrl( "http://goldendict.org/latest_release.php?current=" - PROGRAM_VERSION "&platform=" -#ifdef HAVE_X11 - "x11" -#endif -#ifdef Q_OS_MAC - "mac" -#endif -#ifdef Q_WS_QWS - "qws" -#endif -#ifdef Q_OS_WIN - "win" -#endif - ) ); - - latestReleaseReply = articleNetMgr.get( req ); - - connect( latestReleaseReply, SIGNAL( finished() ), - this, SLOT( latestReleaseReplyReady() ), Qt::QueuedConnection ); -} - -void MainWindow::latestReleaseReplyReady() -{ - if ( !latestReleaseReply ) - return; // Some stray signal - - bool success = false; - QString latestVersion, downloadUrl; - - // See if we succeeded - - if ( latestReleaseReply->error() == QNetworkReply::NoError ) - { - QString latestReleaseInfo = QString::fromUtf8( latestReleaseReply->readLine() ).trimmed(); - QStringList parts = latestReleaseInfo.split( ' ' ); - if ( parts.size() == 2 ) - { - latestVersion = parts[ 0 ]; - downloadUrl = parts[ 1 ]; - success = true; - } - } - - latestReleaseReply->deleteLater(); - latestReleaseReply = 0; - - if ( !success ) - { - // Failed -- reschedule to check in two hours - newReleaseCheckTimer.start( 2 * 60 * 60 * 1000 ); - - GD_DPRINTF( "Failed to check program version, retry in two hours\n" ); - } - else - { - // Success -- reschedule for a normal check and save config - cfg.timeForNewReleaseCheck = QDateTime(); - - prepareNewReleaseChecks(); - - Config::save( cfg ); - - GD_DPRINTF( "Program version's check successful, current version is %ls\n", - latestVersion.toStdWString().c_str() ); - } - - if ( success && latestVersion > PROGRAM_VERSION && latestVersion != cfg.skippedRelease ) - { - QMessageBox msg( QMessageBox::Information, - tr( "New Release Available" ), - tr( "Version %1 of GoldenDict is now available for download.
" - "Click Download to get to the download page." ).arg( latestVersion ), - QMessageBox::NoButton, - this ); - - QPushButton * dload = msg.addButton( tr( "Download" ), QMessageBox::AcceptRole ); - QPushButton * skip = msg.addButton( tr( "Skip This Release" ), QMessageBox::DestructiveRole ); - msg.addButton( QMessageBox::Cancel ); - - msg.exec(); - - if ( msg.clickedButton() == dload ) - QDesktopServices::openUrl( QUrl( downloadUrl ) ); - else - if ( msg.clickedButton() == skip ) - { - cfg.skippedRelease = latestVersion; - Config::save( cfg ); - } - } -} - -void MainWindow::trayIconActivated( QSystemTrayIcon::ActivationReason r ) -{ - switch(r) { - case QSystemTrayIcon::Trigger: - // Left click toggles the visibility of main window -#ifdef HAVE_X11 - toggleMainWindow( false, true ); -#else - toggleMainWindow(); -#endif - break; - - case QSystemTrayIcon::MiddleClick: - // Middle mouse click on Tray translates selection - // it is functional like as stardict - if ( scanPopup.get() ) { - scanPopup->translateWordFromSelection(); - } - break; - default: - break; - - } -} - -void MainWindow::scanEnableToggled( bool on ) -{ - if ( !cfg.preferences.enableScanPopup ) - return; - - if ( scanPopup ) - { - if ( on ) - { - scanPopup->enableScanning(); -#ifdef Q_OS_MAC - if( !MacMouseOver::isAXAPIEnabled() ) - mainStatusBar->showMessage( tr( "Accessibility API is not enabled" ), 10000, - QPixmap( ":/icons/error.png" ) ); -#endif - } - else - scanPopup->disableScanning(); - } - - updateTrayIcon(); -} - -void MainWindow::showMainWindow() -{ - toggleMainWindow( true ); -} - -void MainWindow::visitHomepage() -{ - QDesktopServices::openUrl( QUrl( "http://goldendict.org/" ) ); -} - -void MainWindow::openConfigFolder() -{ - QDesktopServices::openUrl( QUrl::fromLocalFile( Config::getConfigDir() ) ); -} - -void MainWindow::visitForum() -{ - QDesktopServices::openUrl( QUrl( "http://goldendict.org/forum/" ) ); -} - -void MainWindow::showAbout() -{ - About about( this ); - - about.show(); - about.exec(); -} - -void MainWindow::showDictBarNamesTriggered() -{ - bool show = showDictBarNamesAction.isChecked(); - - dictionaryBar.setToolButtonStyle( show ? Qt::ToolButtonTextBesideIcon : - Qt::ToolButtonIconOnly ); - cfg.showingDictBarNames = show; -} - -void MainWindow::useSmallIconsInToolbarsTriggered() -{ - bool useSmallIcons = useSmallIconsInToolbarsAction.isChecked(); - - int extent = useSmallIcons ? QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) : - QApplication::style()->pixelMetric(QStyle::PM_ToolBarIconSize); - - navToolbar->setIconSize( QSize( extent, extent ) ); - - // additional fix for #176 - menuButton->setIconSize( QSize( extent, extent ) ); - - updateDictionaryBar(); - - cfg.usingSmallIconsInToolbars = useSmallIcons; - - if( scanPopup.get() ) - scanPopup->setDictionaryIconSize(); -} - -void MainWindow::toggleMenuBarTriggered(bool announce) -{ - cfg.preferences.hideMenubar = !toggleMenuBarAction.isChecked(); - - if ( announce ) - { - if ( cfg.preferences.hideMenubar ) - { - mainStatusBar->showMessage( - tr( "You have chosen to hide a menubar. Use %1 to show it back." ) - .arg( QString( "%1" ) ).arg( tr( "Ctrl+M" ) ), - 10000, - QPixmap( ":/icons/warning.png" ) ); - } - else - { - mainStatusBar->clearMessage(); - } - } - - // Obtain from the menubar all the actions with shortcuts - // and either add them to the main window or remove them, - // depending on the menubar state. - - QList allMenus = menuBar()->findChildren(); - QListIterator menuIter( allMenus ); - while( menuIter.hasNext() ) - { - QMenu * menu = menuIter.next(); - QList allMenuActions = menu->actions(); - QListIterator actionsIter( allMenuActions ); - while( actionsIter.hasNext() ) - { - QAction * action = actionsIter.next(); - if ( !action->shortcut().isEmpty() ) - { - if ( cfg.preferences.hideMenubar ) - { - // add all menubar actions to the main window, - // before we hide the menubar - addAction( action ); - } - else - { - // remove all menubar actions from the main window - removeAction( action ); - } - } - } - } - - menuBar()->setVisible( !cfg.preferences.hideMenubar ); - beforeOptionsSeparator->setVisible( cfg.preferences.hideMenubar); - menuButtonAction->setVisible( cfg.preferences.hideMenubar ); -} - -void MainWindow::on_clearHistory_triggered() -{ - history.clear(); - history.save(); -} - -void MainWindow::on_newTab_triggered() -{ - addNewTab(); -} - -void MainWindow::setAutostart(bool autostart) -{ -#ifdef Q_OS_WIN32 - QSettings reg("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", - QSettings::NativeFormat); - if (autostart) { - QString app_fname = QString("\"%1\"").arg( QCoreApplication::applicationFilePath() ); - app_fname.replace("/", "\\"); - reg.setValue(QCoreApplication::applicationName(), app_fname); - } - else { - reg.remove(QCoreApplication::applicationName()); - } - reg.sync(); -#else - // this is for KDE - QString app_fname = QFileInfo(QCoreApplication::applicationFilePath()).baseName(); - QString lnk(QDir::homePath()+"/.kde/Autostart/"+app_fname); - if (autostart) { - QFile f(QCoreApplication::applicationFilePath()); - f.link(lnk); - } else { - QFile::remove(lnk); - } -#endif -} - -void MainWindow::on_actionCloseToTray_triggered() -{ - toggleMainWindow( !cfg.preferences.enableTrayIcon ); -} - -void MainWindow::on_pageSetup_triggered() -{ - if ( getPrinter().isValid() ) - { - QPageSetupDialog dialog( &getPrinter(), this ); - - dialog.exec(); - } - else - QMessageBox::critical( this, tr( "Page Setup" ), - tr( "No printer is available. Please install one first." ) ); -} - -void MainWindow::on_printPreview_triggered() -{ - QPrintPreviewDialog dialog( &getPrinter(), this ); - - connect( &dialog, SIGNAL( paintRequested( QPrinter * ) ), - this, SLOT( printPreviewPaintRequested( QPrinter * ) ) ); - - dialog.showMaximized(); - dialog.exec(); -} - -void MainWindow::on_print_triggered() -{ - QPrintDialog dialog( &getPrinter(), this ); - - dialog.setWindowTitle( tr( "Print Article") ); - - if ( dialog.exec() != QDialog::Accepted ) - return; - - ArticleView *view = getCurrentArticleView(); - - view->print( &getPrinter() ); -} - -void MainWindow::printPreviewPaintRequested( QPrinter * printer ) -{ - ArticleView *view = getCurrentArticleView(); - - view->print( printer ); -} - -static void filterAndCollectResources( QString & html, QRegExp & rx, const QString & sep, - const QString & folder, set< QByteArray > & resourceIncluded, - vector< pair< QUrl, QString > > & downloadResources ) -{ - int pos = 0; - - while ( ( pos = rx.indexIn( html, pos ) ) != -1 ) - { - QUrl url( rx.cap( 1 ) ); - QString host = url.host(); - QString resourcePath = QString::fromLatin1( QUrl::toPercentEncoding( Qt4x5::Url::path( url ), "/" ) ); - - if ( !host.startsWith( '/' ) ) - host.insert( 0, '/' ); - if ( !resourcePath.startsWith( '/' ) ) - resourcePath.insert( 0, '/' ); - - QCryptographicHash hash( QCryptographicHash::Md5 ); - hash.addData( rx.cap().toUtf8() ); - - if ( resourceIncluded.insert( hash.result() ).second ) - { - // Gather resouce information (url, filename) to be download later - downloadResources.push_back( pair( url, folder + host + resourcePath ) ); - } - - // Modify original url, set to the native one - QString newUrl = sep + QDir( folder ).dirName() + host + resourcePath + sep; - html.replace( pos, rx.cap().length(), newUrl ); - pos += newUrl.length(); - } -} - -void MainWindow::on_saveArticle_triggered() -{ - ArticleView *view = getCurrentArticleView(); - - QString fileName = view->getTitle().simplified(); - - // Replace reserved filename characters - QRegExp rxName( "[/\\\\\\?\\*:\\|<>]" ); - fileName.replace( rxName, "_" ); - - fileName += ".html"; - QString savePath; - - if ( cfg.articleSavePath.isEmpty() ) - savePath = QDir::homePath(); - else - { - savePath = QDir::fromNativeSeparators( cfg.articleSavePath ); - if ( !QDir( savePath ).exists() ) - savePath = QDir::homePath(); - } - - QFileDialog::Options options = QFileDialog::HideNameFilterDetails; - QString selectedFilter; - QStringList filters; - filters.push_back( tr( "Article, Complete (*.html)" ) ); - filters.push_back( tr( "Article, HTML Only (*.html)" ) ); - - fileName = savePath + "/" + fileName; - fileName = QFileDialog::getSaveFileName( this, tr( "Save Article As" ), - fileName, - filters.join( ";;" ), - &selectedFilter, options ); - - bool complete = ( selectedFilter == filters[ 0 ] ); - - if ( !fileName.isEmpty() ) - { - - QFile file( fileName ); - - if ( !file.open( QIODevice::WriteOnly ) ) - { - QMessageBox::critical( this, tr( "Error" ), - tr( "Can't save article: %1" ).arg( file.errorString() ) ); - } - else - { - QString html = view->toHtml(); - QFileInfo fi( fileName ); - cfg.articleSavePath = QDir::toNativeSeparators( fi.absoluteDir().absolutePath() ); - - // Convert internal links - - QRegExp rx3( "href=\"(bword:|gdlookup://localhost/)([^\"]+)\"" ); - int pos = 0; - while ( ( pos = rx3.indexIn( html, pos ) ) != -1 ) - { - QString name = QUrl::fromPercentEncoding( rx3.cap( 2 ).simplified().toLatin1() ); - name.replace( rxName, "_" ); - name = QString( "href=\"" ) + QUrl::toPercentEncoding( name ) + ".html\""; - html.replace( pos, rx3.cap().length(), name ); - pos += name.length(); - } - - if ( complete ) - { - QString folder = fi.absoluteDir().absolutePath() + "/" + fi.baseName() + "_files"; - QRegExp rx1( "\"((?:bres|gico|gdau|qrcx)://[^\"]+)\"" ); - QRegExp rx2( "'((?:bres|gico|gdau|qrcx)://[^']+)'" ); - set< QByteArray > resourceIncluded; - vector< pair< QUrl, QString > > downloadResources; - - filterAndCollectResources( html, rx1, "\"", folder, resourceIncluded, downloadResources ); - filterAndCollectResources( html, rx2, "'", folder, resourceIncluded, downloadResources ); - - ArticleSaveProgressDialog * progressDialog = new ArticleSaveProgressDialog( this ); - // reserve '1' for saving main html file - int maxVal = 1; - - // Pull and save resources to files - for ( vector< pair< QUrl, QString > >::const_iterator i = downloadResources.begin(); - i != downloadResources.end(); i++ ) - { - vector< ResourceToSaveHandler * > handlerss = view->saveResource( i->first, i->second ); - maxVal += handlerss.size(); - - for ( vector< ResourceToSaveHandler * >::iterator j = handlerss.begin(); - j != handlerss.end(); j++ ) - { - connect( *j, SIGNAL( done() ), progressDialog, SLOT( perform() ) ); - } - } - - progressDialog->setLabelText( tr("Saving article...") ); - progressDialog->setRange( 0, maxVal ); - progressDialog->setValue( 0 ); - progressDialog->show(); - - file.write( html.toUtf8() ); - progressDialog->setValue( 1 ); - } - else - { - file.write( html.toUtf8() ); - } - } - } -} - -void MainWindow::on_rescanFiles_triggered() -{ - hotkeyWrapper.reset(); // No hotkeys while we're editing dictionaries - scanPopup.reset(); // No scan popup either. No one should use dictionaries. - closeHeadwordsDialog(); - closeFullTextSearchDialog(); - - ftsIndexing.stopIndexing(); - ftsIndexing.clearDictionaries(); - - groupInstances.clear(); // Release all the dictionaries they hold - dictionaries.clear(); - dictionariesUnmuted.clear(); - dictionaryBar.setDictionaries( dictionaries ); - - loadDictionaries( this, true, cfg, dictionaries, dictNetMgr ); - - for( unsigned x = 0; x < dictionaries.size(); x++ ) - dictionaries[ x ]->setFTSParameters( cfg.preferences.fts ); - - ftsIndexing.setDictionaries( dictionaries ); - ftsIndexing.doIndexing(); - - updateGroupList(); - - makeScanPopup(); - installHotKeys(); - - // Reload suggestion list - QString word = translateLine->text(); - translateInputChanged( word ); -} - -void MainWindow::on_alwaysOnTop_triggered( bool checked ) -{ - cfg.preferences.alwaysOnTop = checked; - - bool wasVisible = isVisible(); - - Qt::WindowFlags flags = this->windowFlags(); - if (checked) - { - setWindowFlags(flags | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint); - mainStatusBar->showMessage( - tr( "The main window is set to be always on top." ), - 10000, - QPixmap( ":/icons/warning.png" ) ); - } - else - { - setWindowFlags(flags ^ (Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint)); - mainStatusBar->clearMessage(); - } - - if ( wasVisible ) - { - show(); - } - - installHotKeys(); -} - -void MainWindow::zoomin() -{ - cfg.preferences.zoomFactor += 0.1; - applyZoomFactor(); -} - -void MainWindow::zoomout() -{ - cfg.preferences.zoomFactor -= 0.1; - applyZoomFactor(); -} - -void MainWindow::unzoom() -{ - cfg.preferences.zoomFactor = 1; - applyZoomFactor(); -} - -void MainWindow::applyZoomFactor() -{ - if ( cfg.preferences.zoomFactor >= 5 ) - cfg.preferences.zoomFactor = 5; - else if ( cfg.preferences.zoomFactor <= 0.1 ) - cfg.preferences.zoomFactor = 0.1; - - zoomIn->setEnabled( cfg.preferences.zoomFactor < 5 ); - zoomOut->setEnabled( cfg.preferences.zoomFactor > 0.1 ); - zoomBase->setEnabled( cfg.preferences.zoomFactor != 1.0 ); - - for ( int i = 0; i < ui.tabWidget->count(); i++ ) - { - ArticleView & view = - dynamic_cast< ArticleView & >( *( ui.tabWidget->widget(i) ) ); - view.setZoomFactor( cfg.preferences.zoomFactor ); - } - - if ( scanPopup.get() ) - scanPopup->applyZoomFactor(); -} - -void MainWindow::doWordsZoomIn() -{ - ++cfg.preferences.wordsZoomLevel; - - applyWordsZoomLevel(); -} - -void MainWindow::doWordsZoomOut() -{ - --cfg.preferences.wordsZoomLevel; - - applyWordsZoomLevel(); -} - -void MainWindow::doWordsZoomBase() -{ - cfg.preferences.wordsZoomLevel = 0; - - applyWordsZoomLevel(); -} - -void MainWindow::applyWordsZoomLevel() -{ - QFont font( wordListDefaultFont ); - - int ps = font.pointSize(); - - if ( cfg.preferences.wordsZoomLevel != 0 ) - { - ps += cfg.preferences.wordsZoomLevel; - - if ( ps < 1 ) - ps = 1; - - font.setPointSize( ps ); - } - - if ( wordList->font().pointSize() != ps ) - wordList->setFont( font ); - - font = translateLineDefaultFont; - - ps = font.pointSize(); - - if ( cfg.preferences.wordsZoomLevel != 0 ) - { - ps += cfg.preferences.wordsZoomLevel; - - if ( ps < 1 ) - ps = 1; - - font.setPointSize( ps ); - } - - if ( translateLine->font().pointSize() != ps ) - translateLine->setFont( font ); - - groupList->setFont(font); - - wordsZoomBase->setEnabled( cfg.preferences.wordsZoomLevel != 0 ); - // groupList->setFixedHeight(translateLine->height()); - groupList->parentWidget()->layout()->activate(); -} - -void MainWindow::messageFromAnotherInstanceReceived( QString const & message ) -{ - if ( message == "bringToFront" ) - { - toggleMainWindow( true ); - return; - } - if( message.left( 15 ) == "translateWord: " ) - { - if( scanPopup.get() ) - scanPopup->translateWord( message.mid( 15 ) ); - else - wordReceived( message.mid( 15 ) ); - } - else - qWarning() << "Unknown message received from another instance: " << message; -} - -ArticleView * MainWindow::getCurrentArticleView() -{ - if ( QWidget * cw = ui.tabWidget->currentWidget() ) - { - return dynamic_cast< ArticleView * >( cw ); - } - return 0; -} - -void MainWindow::wordReceived( const QString & word) -{ - toggleMainWindow( true ); - translateLine->setText( Folding::escapeWildcardSymbols( word ) ); - translateInputFinished( false ); -} - -void MainWindow::headwordReceived( const QString & word, const QString & ID ) -{ - toggleMainWindow( true ); - translateLine->setText( Folding::escapeWildcardSymbols( word ) ); - translateInputFinished( false, QString( "gdfrom-" )+ ID ); -} - -void MainWindow::updateHistoryMenu() -{ - if ( ui.historyPane->toggleViewAction()->isChecked() ) - { - ui.showHideHistory->setText( tr( "&Hide" ) ); - } - else - { - ui.showHideHistory->setText( tr( "&Show" ) ); - } -} - -void MainWindow::on_showHideHistory_triggered() -{ - ui.historyPane->toggleViewAction()->trigger(); - ui.historyPane->raise(); // useful when the Pane is tabbed. -} - -void MainWindow::on_exportHistory_triggered() -{ - QString exportPath; - if( cfg.historyExportPath.isEmpty() ) - exportPath = QDir::homePath(); - else - { - exportPath = QDir::fromNativeSeparators( cfg.historyExportPath ); - if( !QDir( exportPath ).exists() ) - exportPath = QDir::homePath(); - } - - QString fileName = QFileDialog::getSaveFileName( this, tr( "Export history to file" ), - exportPath, - tr( "Text files (*.txt);;All files (*.*)" ) ); - if( fileName.size() == 0) - return; - - cfg.historyExportPath = QDir::toNativeSeparators( QFileInfo( fileName ).absoluteDir().absolutePath() ); - QFile file( fileName ); - - for(;;) - { - if ( !file.open( QFile::WriteOnly | QIODevice::Text ) ) - break; - - // Write UTF-8 BOM - QByteArray line; - line.append( 0xEF ).append( 0xBB ).append( 0xBF ); - if ( file.write( line ) != line.size() ) - break; - - // Write history - QList< History::Item > const & items = history.getItems(); - - QList< History::Item >::const_iterator i; - for( i = items.constBegin(); i != items.constEnd(); ++i ) - { - line = i->word.toUtf8(); - - line.replace( '\n', ' ' ); - line.replace( '\r', ' ' ); - - line += "\n"; - - if ( file.write( line ) != line.size() ) - break; - } - - if( i != items.constEnd() ) - break; - - file.close(); - mainStatusBar->showMessage( tr( "History export complete" ), 5000 ); - return; - } - QString errStr = QString( tr( "Export error: " ) ) + file.errorString(); - file.close(); - mainStatusBar->showMessage( errStr, 10000, QPixmap( ":/icons/error.png" ) ); -} - -// TODO: consider moving parts of this method into History class. -void MainWindow::on_importHistory_triggered() -{ - QString importPath; - if( cfg.historyExportPath.isEmpty() ) - importPath = QDir::homePath(); - else - { - importPath = QDir::fromNativeSeparators( cfg.historyExportPath ); - if( !QDir( importPath ).exists() ) - importPath = QDir::homePath(); - } - - QString fileName = QFileDialog::getOpenFileName( this, tr( "Import history from file" ), - importPath, - tr( "Text files (*.txt);;All files (*.*)" ) ); - if( fileName.size() == 0) - return; - - QFileInfo fileInfo( fileName ); - cfg.historyExportPath = QDir::toNativeSeparators( fileInfo.absoluteDir().absolutePath() ); - QString errStr; - QFile file( fileName ); - - for(;;) - { - if ( !file.open( QFile::ReadOnly | QIODevice::Text ) ) - break; - - QTextStream fileStream( & file ); - QString itemStr, trimmedStr; - QList< QString > itemList; - - history.clear(); - - do - { - itemStr = fileStream.readLine(); - if( fileStream.status() >= QTextStream::ReadCorruptData ) - break; - - trimmedStr = itemStr.trimmed(); - if( trimmedStr.isEmpty() ) - continue; - - if( (unsigned)trimmedStr.size() <= history.getMaxItemLength( ) ) - itemList.prepend( trimmedStr ); - - } while( !fileStream.atEnd() && itemList.size() < (int)history.getMaxSize() ); - - history.enableAdd( true ); - - for( QList< QString >::const_iterator i = itemList.constBegin(); i != itemList.constEnd(); ++i ) - history.addItem( History::Item( 1, *i ) ); - - history.enableAdd( cfg.preferences.storeHistory ); - - if( file.error() != QFile::NoError ) - break; - - if( fileStream.status() >= QTextStream::ReadCorruptData ) - { - errStr = QString ( tr( "Import error: invalid data in file" ) ); - mainStatusBar->showMessage( errStr, 10000, QPixmap( ":/icons/error.png" ) ); - } - else - mainStatusBar->showMessage( tr( "History import complete" ), 5000 ); - return; - } - errStr = QString( tr( "Import error: " ) ) + file.errorString(); - file.close(); - mainStatusBar->showMessage( errStr, 10000, QPixmap( ":/icons/error.png" ) ); -} - -void MainWindow::fillWordListFromHistory() -{ - ui.wordList->setUpdatesEnabled( false ); - ui.wordList->clear(); - - QList< History::Item > const & items = history.getItems(); - for( int x = 0; x < items.size(); ++x ) - { - History::Item const * i = &items[ x ]; - QListWidgetItem * s = new QListWidgetItem( i->word, ui.wordList ); - if (s->text().at(0).direction() == QChar::DirR) - s->setTextAlignment(Qt::AlignRight); - if (s->text().at(0).direction() == QChar::DirL) - s->setTextAlignment(Qt::AlignLeft); - ui.wordList->addItem( s ); - } - - ui.wordList->setUpdatesEnabled( true ); -} - -void MainWindow::focusWordList() -{ - if( ui.wordList->count() > 0 ) - ui.wordList->setFocus(); -} - -void MainWindow::addWordToHistory( const QString & word ) -{ - history.addItem( History::Item( 1, word.trimmed() ) ); -} - -void MainWindow::forceAddWordToHistory( const QString & word ) -{ - history.enableAdd( true ); - history.addItem( History::Item( 1, word.trimmed() ) ); - history.enableAdd( cfg.preferences.storeHistory ); -} - -void MainWindow::setExpandMode( bool expand ) -{ - articleMaker.setExpandOptionalParts( expand ); -} - -void MainWindow::switchExpandOptionalPartsMode() -{ - ArticleView * view = getCurrentArticleView(); - if( view ) - view->switchExpandOptionalParts(); -} - -void MainWindow::foundDictsPaneClicked( QListWidgetItem * item ) -{ - if ( QApplication::keyboardModifiers() & - ( Qt::ControlModifier | Qt::ShiftModifier ) ) - { - QString id = item->data( Qt::UserRole ).toString(); - emit clickOnDictPane( id ); - } -} - -void MainWindow::showDictionaryInfo( const QString & id ) -{ - QWidget * owner = 0; - - if( sender()->objectName().compare( "EditDictionaries" ) == 0 ) - owner = qobject_cast< QWidget * >( sender() ); - - if( owner == 0 ) - owner = this; - - for( unsigned x = 0; x < dictionaries.size(); x++ ) - { - if( dictionaries[ x ]->getId() == id.toUtf8().data() ) - { - DictInfo infoMsg( cfg, this ); - infoMsg.showInfo( dictionaries[ x ] ); - int result = infoMsg.exec(); - - if ( result == DictInfo::OPEN_FOLDER ) - { - openDictionaryFolder( id ); - } - else if ( result == DictInfo::EDIT_DICTIONARY) - { - editDictionary( dictionaries[x].get() ); - } - else if( result == DictInfo::SHOW_HEADWORDS ) - { - showDictionaryHeadwords( owner, dictionaries[x].get() ); - } - - break; - } - } -} - -void MainWindow::showDictionaryHeadwords( const QString & id ) -{ - QWidget * owner = 0; - - if( sender()->objectName().compare( "EditDictionaries" ) == 0 ) - owner = qobject_cast< QWidget * >( sender() ); - - if( owner == 0 ) - owner = this; - - for( unsigned x = 0; x < dictionaries.size(); x++ ) - { - if( dictionaries[ x ]->getId() == id.toUtf8().data() ) - { - showDictionaryHeadwords( owner, dictionaries[ x ].get() ); - break; - } - } -} - -void MainWindow::showDictionaryHeadwords( QWidget * owner, Dictionary::Class * dict ) -{ - if( owner && owner != this ) - { - DictHeadwords headwords( owner, cfg, dict ); - headwords.exec(); - return; - } - - if( headwordsDlg == 0 ) - { - headwordsDlg = new DictHeadwords( this, cfg, dict ); - addGlobalActionsToDialog( headwordsDlg ); - connect( headwordsDlg, SIGNAL( headwordSelected( QString, QString ) ), - this, SLOT( headwordReceived( QString, QString ) ) ); - connect( headwordsDlg, SIGNAL( closeDialog() ), - this, SLOT( closeHeadwordsDialog() ) ); - } - else - headwordsDlg->setup( dict ); - - headwordsDlg->show(); -} - -void MainWindow::closeHeadwordsDialog() -{ - if( headwordsDlg ) - { - delete headwordsDlg; - headwordsDlg = NULL; - } -} - -void MainWindow::focusHeadwordsDialog() -{ - if( headwordsDlg ) - { - headwordsDlg->activateWindow(); - if ( ftsDlg ) - ftsDlg->lower(); - } -} - -void MainWindow::focusArticleView() -{ - ArticleView * view = getCurrentArticleView(); - if ( view ) - { - if ( !isActiveWindow() ) - activateWindow(); - view->focus(); - } -} - -void MainWindow::editDictionary( Dictionary::Class * dict ) -{ - QString dictFilename = dict->getMainFilename(); - if( !cfg.editDictionaryCommandLine.isEmpty() && !dictFilename.isEmpty() ) - { - QString command( cfg.editDictionaryCommandLine ); - command.replace( "%GDDICT%", "\"" + dictFilename + "\"" ); - if( !QProcess::startDetached( command ) ) - QApplication::beep(); - } -} - - -void MainWindow::openDictionaryFolder( const QString & id ) -{ - for( unsigned x = 0; x < dictionaries.size(); x++ ) - { - if( dictionaries[ x ]->getId() == id.toUtf8().data() ) - { - if( dictionaries[ x ]->getDictionaryFilenames().size() > 0 ) - { - QString fileName = FsEncoding::decode( dictionaries[ x ]->getDictionaryFilenames()[ 0 ].c_str() ); - bool explorerLaunched = false; - - // Platform-dependent way to launch a file explorer and to select a file, - // currently only on Windows. -#if defined(Q_OS_WIN) - if ( !QFileInfo( fileName ).isDir() ) - { - QString param = QLatin1String("explorer.exe ") - + QLatin1String("/select, \"") + QDir::toNativeSeparators( fileName ) + QLatin1String("\""); - - qDebug() << "Launching" << param; - - // We use CreateProcess() directly instead of QProcess::startDetached() since - // startDetached() does some evil things with quotes breaking explorer arguments. - // E.g., the following file cannot be properly selected via startDetached(), due to equals sign, - // which explorer considers as separator: - // Z:\GoldenDict\content\-=MDict=-\Test.mdx - PROCESS_INFORMATION pinfo; - STARTUPINFOW startupInfo = { sizeof( STARTUPINFO ), 0, 0, 0, - (ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT, - (ulong)CW_USEDEFAULT, (ulong)CW_USEDEFAULT, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - explorerLaunched = CreateProcess(0, (wchar_t*) param.utf16(), - 0, 0, FALSE, CREATE_UNICODE_ENVIRONMENT | CREATE_NEW_CONSOLE, 0, - 0, &startupInfo, &pinfo); - - if ( explorerLaunched ) { - CloseHandle( pinfo.hThread ); - CloseHandle( pinfo.hProcess ); - } - } -#endif - - if ( !explorerLaunched ) - { - QString folder = QFileInfo( fileName ).absoluteDir().absolutePath(); - if( !folder.isEmpty() ) - QDesktopServices::openUrl( QUrl::fromLocalFile( folder ) ); - } - } - break; - } - } -} - -void MainWindow::foundDictsContextMenuRequested( const QPoint &pos ) -{ - QListWidgetItem *item = ui.dictsList->itemAt( pos ); - if( item ) - { - QString id = item->data( Qt::UserRole ).toString(); - Dictionary::Class *pDict = NULL; - - for( unsigned i = 0; i < dictionaries.size(); i++ ) - { - if( id.compare( dictionaries[ i ]->getId().c_str() ) == 0 ) - { - pDict = dictionaries[ i ].get(); - break; - } - } - - if( pDict == NULL ) - return; - - if( !pDict->isLocalDictionary() ) - { - if ( scanPopup ) - scanPopup.get()->blockSignals( true ); - showDictionaryInfo( id ); - if ( scanPopup ) - scanPopup.get()->blockSignals( false ); - } - else - { - QMenu menu( ui.dictsList ); - QAction * infoAction = menu.addAction( tr( "Dictionary info" ) ); - - QAction * headwordsAction = NULL; - if( pDict->getWordCount() > 0 ) - headwordsAction = menu.addAction( tr( "Dictionary headwords" ) ); - - QAction * openDictFolderAction = menu.addAction( tr( "Open dictionary folder" ) ); - - QAction * editAction = NULL; - - QString dictFilename = pDict->getMainFilename(); - if( !cfg.editDictionaryCommandLine.isEmpty() && !dictFilename.isEmpty() ) - editAction = menu.addAction( tr( "Edit dictionary" ) ); - - QAction * result = menu.exec( ui.dictsList->mapToGlobal( pos ) ); - - if( result && result == infoAction ) - { - if ( scanPopup ) - scanPopup.get()->blockSignals( true ); - showDictionaryInfo( id ); - if ( scanPopup ) - scanPopup.get()->blockSignals( false ); - } - else - if( result && result == headwordsAction ) - { - if ( scanPopup ) - scanPopup.get()->blockSignals( true ); - showDictionaryHeadwords( this, pDict ); - if ( scanPopup ) - scanPopup.get()->blockSignals( false ); - } - else - if( result && result == openDictFolderAction ) - { - openDictionaryFolder( id ); - } - else - if( result && result == editAction ) - { - editDictionary( pDict ); - } - } - } -} - -void MainWindow::sendWordToInputLine( const QString & word ) -{ - translateLine->clear(); - translateLine->setText( word ); -} - -void MainWindow::storeResourceSavePath( const QString & newPath ) -{ - cfg.resourceSavePath = newPath; -} - -void MainWindow::proxyAuthentication( const QNetworkProxy &, - QAuthenticator * authenticator ) -{ - QNetworkProxy proxy = QNetworkProxy::applicationProxy(); - - QString * userStr, * passwordStr; - if( cfg.preferences.proxyServer.useSystemProxy ) - { - userStr = &cfg.preferences.proxyServer.systemProxyUser; - passwordStr = &cfg.preferences.proxyServer.systemProxyPassword; - } - else - { - userStr = &cfg.preferences.proxyServer.user; - passwordStr = &cfg.preferences.proxyServer.password; - } - - if( proxy.user().isEmpty() && !userStr->isEmpty() ) - { - authenticator->setUser( *userStr ); - authenticator->setPassword( *passwordStr ); - - proxy.setUser( *userStr ); - proxy.setPassword( *passwordStr ); - QNetworkProxy::setApplicationProxy( proxy ); - } - else - { - QDialog dlg; - Ui::Dialog ui; - ui.setupUi( &dlg ); - dlg.adjustSize(); - - ui.userEdit->setText( *userStr ); - ui.passwordEdit->setText( *passwordStr ); - - if ( dlg.exec() == QDialog::Accepted ) - { - *userStr = ui.userEdit->text(); - *passwordStr = ui.passwordEdit->text(); - - authenticator->setUser( *userStr ); - authenticator->setPassword( *passwordStr ); - - proxy.setUser( *userStr ); - proxy.setPassword( *passwordStr ); - QNetworkProxy::setApplicationProxy( proxy ); - } - } -} - -void MainWindow::showFullTextSearchDialog() -{ - if( !ftsDlg ) - { - ftsDlg = new FTS::FullTextSearchDialog( this, cfg, dictionaries, groupInstances, ftsIndexing ); - addGlobalActionsToDialog( ftsDlg ); - - connect( ftsDlg, SIGNAL( showTranslationFor( QString, QStringList, QRegExp ) ), - this, SLOT( showTranslationFor( QString, QStringList, QRegExp ) ) ); - connect( ftsDlg, SIGNAL( closeDialog() ), - this, SLOT( closeFullTextSearchDialog() ), Qt::QueuedConnection ); - connect( &configEvents, SIGNAL( mutedDictionariesChanged() ), - ftsDlg, SLOT( updateDictionaries() ) ); - - unsigned group = groupInstances.empty() ? 0 - : groupInstances[ groupList->currentIndex() ].id; - ftsDlg->setCurrentGroup( group ); - } - - if( !ftsDlg ->isVisible() ) - ftsDlg->show(); - else - { - ftsDlg->activateWindow(); - if ( headwordsDlg ) - headwordsDlg->lower(); - } -} - -void MainWindow::closeFullTextSearchDialog() -{ - if( ftsDlg ) - { - ftsDlg->stopSearch(); - delete ftsDlg; - ftsDlg = 0; - } -} - -void MainWindow::showGDHelp() -{ - if( !helpWindow ) - { - helpWindow = new Help::HelpWindow( this, cfg ); - - if( helpWindow->getHelpEngine() ) - { - connect( helpWindow, SIGNAL( needClose() ), this, SLOT( hideGDHelp() ) ); - helpWindow->showHelpFor( "Content" ); - helpWindow->show(); - } - else - { - delete helpWindow; - helpWindow = 0; - } - } - else - { - helpWindow->show(); - helpWindow->activateWindow(); - } -} - -void MainWindow::hideGDHelp() -{ - if( helpWindow ) - helpWindow->hide(); -} - -void MainWindow::showGDHelpForID( QString const & id ) -{ - if( !helpWindow ) - showGDHelp(); - - if( helpWindow ) - { - helpWindow->showHelpFor( id ); - if( !helpWindow->isVisible() ) - { - helpWindow->show(); - helpWindow->activateWindow(); - } - } -} - -void MainWindow::closeGDHelp() -{ - if( helpWindow ) - { - delete helpWindow; - helpWindow = 0; - } -} - -void MainWindow::showFTSIndexingName( QString const & name ) -{ - if( name.isEmpty() ) - mainStatusBar->setBackgroundMessage( QString() ); - else - mainStatusBar->setBackgroundMessage( tr( "Now indexing for full-text search: " ) + name ); -} - -#ifdef Q_OS_WIN32 - -bool MainWindow::handleGDMessage( MSG * message, long * result ) -{ - if( message->message != gdAskMessage ) - return false; - *result = 0; - - if( !isGoldenDictWindow( message->hwnd ) ) - return true; - - ArticleView * view = getCurrentArticleView(); - if( !view ) - return true; - - LPGDDataStruct lpdata = ( LPGDDataStruct ) message->lParam; - - QString str = view->wordAtPoint( lpdata->Pt.x, lpdata->Pt.y ); - - memset( lpdata->cwData, 0, lpdata->dwMaxLength * sizeof( WCHAR ) ); - str.truncate( lpdata->dwMaxLength - 1 ); - str.toWCharArray( lpdata->cwData ); - - *result = 1; - return true; -} - -bool MainWindow::isGoldenDictWindow( HWND hwnd ) -{ - return hwnd == (HWND)winId() || hwnd == (HWND)ui.centralWidget->winId(); -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.hh deleted file mode 100644 index 3685bd12b6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.hh +++ /dev/null @@ -1,490 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __MAINWINDOW_HH_INCLUDED__ -#define __MAINWINDOW_HH_INCLUDED__ - -#include -#include -#include -#include -#include -#include -#include "ui_mainwindow.h" -#include "folding.hh" -#include "config.hh" -#include "dictionary.hh" -#include "article_netmgr.hh" -#include "instances.hh" -#include "article_maker.hh" -#include "scanpopup.hh" -#include "articleview.hh" -#include "wordfinder.hh" -#include "dictionarybar.hh" -#include "history.hh" -#include "hotkeywrapper.hh" -#include "mainstatusbar.hh" -#include "mruqmenu.hh" -#include "translatebox.hh" -#include "wordlist.hh" -#include "dictheadwords.hh" -#include "fulltextsearch.hh" -#include "helpwindow.hh" - -#ifdef HAVE_X11 -#include -#endif - -using std::string; -using std::vector; - -class ExpandableToolBar : public QToolBar -{ - Q_OBJECT - -public: - explicit ExpandableToolBar(QString const & title, QWidget * parent = 0) - : QToolBar(title, parent) {} - virtual QSize sizeHint() const - { - if ( !isFloating() && parentWidget() ) - { - return QSize( parentWidget()->width(), QToolBar::sizeHint().height() ); - } - else - { - return QToolBar::sizeHint(); - } - } -}; - -class MainWindow: public QMainWindow, public DataCommitter -{ - Q_OBJECT - -public: - - MainWindow( Config::Class & cfg ); - ~MainWindow(); - - virtual void commitData( QSessionManager & ); - - void showGDHelpForID( QString const & id ); - void closeGDHelp(); - QString getTranslateLineText() const - { return translateLine->text(); } - -public slots: - - void messageFromAnotherInstanceReceived( QString const & ); - void showStatusBarMessage ( QString const &, int, QPixmap const & ); - void wordReceived( QString const & ); - void headwordReceived( QString const &, QString const & ); - void setExpandMode( bool expand ); - -private: - void addGlobalAction( QAction * action, const char * slot ); - void addGlobalActionsToDialog( QDialog * dialog ); - - void commitData(); - bool commitDataCompleted; - - QSystemTrayIcon * trayIcon; - - Ui::MainWindow ui; - - /// This widget is used as a title bar for the searchPane dock, and - /// incorporates the next three objects inside - QWidget searchPaneTitleBar; - QHBoxLayout searchPaneTitleBarLayout; - QLabel groupLabel; - GroupComboBox * groupList, * groupListInToolbar, * groupListInDock; - - // Needed to be able to show/hide the translate box in the toolbar, since hiding - // the list expilictily doesn't work, see docs for QToolBar::addWidget(). - QAction * translateBoxToolBarAction; - - QWidget dictsPaneTitleBar; - QHBoxLayout dictsPaneTitleBarLayout; - QLabel foundInDictsLabel; - - TranslateBox * translateBox; - - /// Fonts saved before words zooming is in effect, so it could be reset back. - QFont wordListDefaultFont, translateLineDefaultFont; - - QAction escAction, focusTranslateLineAction, addTabAction, closeCurrentTabAction, - closeAllTabAction, closeRestTabAction, - switchToNextTabAction, switchToPrevTabAction, - showDictBarNamesAction, useSmallIconsInToolbarsAction, toggleMenuBarAction, - switchExpandModeAction, focusHeadwordsDlgAction, focusArticleViewAction; - QToolBar * navToolbar; - MainStatusBar * mainStatusBar; - QAction * navBack, * navForward, * navPronounce, * enableScanPopup; - QAction * beforeScanPopupSeparator, * afterScanPopupSeparator, * beforeOptionsSeparator; - QAction * zoomIn, * zoomOut, * zoomBase; - QAction * wordsZoomIn, * wordsZoomOut, * wordsZoomBase; - QMenu trayIconMenu; - QMenu * tabMenu; - QAction * menuButtonAction; - QToolButton * menuButton; - MRUQMenu *tabListMenu; - //List that contains indexes of tabs arranged in a most-recently-used order - QList mruList; - QToolButton addTab, *tabListButton; - Config::Class & cfg; - Config::Events configEvents; - History history; - DictionaryBar dictionaryBar; - vector< sptr< Dictionary::Class > > dictionaries; - /// Here we store unmuted dictionaries when the dictionary bar is active - vector< sptr< Dictionary::Class > > dictionariesUnmuted; - Instances::Groups groupInstances; - ArticleMaker articleMaker; - ArticleNetworkAccessManager articleNetMgr; - QNetworkAccessManager dictNetMgr; // We give dictionaries a separate manager, - // since their requests can be destroyed - // in a separate thread - - WordList * wordList; - QLineEdit * translateLine; - - WordFinder wordFinder; - - sptr< ScanPopup > scanPopup; - - sptr< HotkeyWrapper > hotkeyWrapper; - - QTimer newReleaseCheckTimer; // Countdown to a check for the new program - // release, if enabled - QNetworkReply *latestReleaseReply; - - sptr< QPrinter > printer; // The printer we use for all printing operations - - bool wordListSelChanged; - - bool wasMaximized; // Window state before minimization - - bool blockUpdateWindowTitle; - - QPrinter & getPrinter(); // Creates a printer if it's not there and returns it - - DictHeadwords * headwordsDlg; - - FTS::FtsIndexing ftsIndexing; - - FTS::FullTextSearchDialog * ftsDlg; - - Help::HelpWindow * helpWindow; - - /// Applies the qt's stylesheet, given the style's name. - void applyQtStyleSheet( QString const & displayStyle, QString const & addonStyle ); - - /// Creates, destroys or otherwise updates tray icon, according to the - /// current configuration and situation. - void updateTrayIcon(); - - void wheelEvent( QWheelEvent * ); - void closeEvent( QCloseEvent * ); - - void applyProxySettings(); - void applyWebSettings(); - void makeDictionaries(); - void updateStatusLine(); - void updateGroupList(); - void updateDictionaryBar(); - void makeScanPopup(); - - void updatePronounceAvailability(); - - void updateFoundInDictsList(); - - void updateBackForwardButtons(); - - void updateWindowTitle(); - - /// Updates word search request and active article view in response to - /// muting or unmuting dictionaries, or showing/hiding dictionary bar. - void applyMutedDictionariesState(); - - virtual bool eventFilter( QObject *, QEvent * ); - - /// Returns the reference to dictionaries stored in the currently active - /// group, or to all dictionaries if there are no groups. - vector< sptr< Dictionary::Class > > const & getActiveDicts(); - - /// Brings the main window to front if it's not currently, or hides it - /// otherwise. The hiding part is omitted if onlyShow is true. -#ifdef HAVE_X11 - void toggleMainWindow( bool onlyShow = false, bool byIconClick = false ); -#else - void toggleMainWindow( bool onlyShow = false ); -#endif - - /// Creates hotkeyWrapper and hooks the currently set keys for it - void installHotKeys(); - - void applyZoomFactor(); - - void mousePressEvent ( QMouseEvent * event ); - - void updateCurrentGroupProperty(); - - /// Handles backward and forward mouse buttons and - /// returns true if the event is handled. - bool handleBackForwardMouseButtons(QMouseEvent *ev); - - ArticleView * getCurrentArticleView(); - void ctrlTabPressed(); - - void fillWordListFromHistory(); - - void showDictionaryHeadwords( QWidget * owner, Dictionary::Class * dict ); - -private slots: - - void hotKeyActivated( int ); - - /// If new release checks are on, santizies the next check time and starts - /// the timer. Does nothing otherwise. - void prepareNewReleaseChecks(); - -private slots: - - /// Does the new release check. - void checkForNewRelease(); - - /// Signalled when the lastestReleaseReply is finished() - void latestReleaseReplyReady(); - - /// Receive click on "Found in:" pane - void foundDictsPaneClicked( QListWidgetItem * item ); - - /// Receive right click on "Found in:" pane - void foundDictsContextMenuRequested( const QPoint & pos ); - - void showDictionaryInfo( QString const & id ); - - void showDictionaryHeadwords( QString const & id ); - - void openDictionaryFolder( QString const & id ); - - void editDictionary ( Dictionary::Class * dict ); - - void showFTSIndexingName( QString const & name ); - -private slots: - - // Executed in response to a user click on an 'add tab' tool button - void addNewTab(); - // Executed in response to a user click on an 'close' button on a tab - void tabCloseRequested( int ); - // Closes current tab. - void closeCurrentTab(); - void closeAllTabs(); - void closeRestTabs(); - void switchToNextTab(); - void switchToPrevTab(); - void ctrlReleased(); - - // Switch optional parts expand mode for current tab - void switchExpandOptionalPartsMode(); - - // Handling of active tab list - void createTabList(); - void fillWindowsMenu(); - void switchToWindow(QAction *act); - - /// Triggered by the actions in the nav toolbar - void backClicked(); - void forwardClicked(); - - /// ArticleView's title has changed - void titleChanged( ArticleView *, QString const & ); - /// ArticleView's icon has changed - void iconChanged( ArticleView *, QIcon const & ); - - void pageLoaded( ArticleView * ); - void tabSwitched( int ); - void tabMenuRequested(QPoint pos); - - void dictionaryBarToggled( bool checked ); - - /// Pronounces the currently displayed word by playing its first audio - /// reference, if it has any. - /// If view is 0, the operation is done for the currently open tab. - void pronounce( ArticleView * view = 0 ); - - void zoomin(); - void zoomout(); - void unzoom(); - - void doWordsZoomIn(); - void doWordsZoomOut(); - void doWordsZoomBase(); - - void applyWordsZoomLevel(); - - /// If editDictionaryGroup is specified, the dialog positions on that group - /// initially. - void editDictionaries( unsigned editDictionaryGroup = Instances::Group::NoGroupId ); - /// Edits current group when triggered from the dictionary bar. - void editCurrentGroup(); - void editPreferences(); - - void currentGroupChanged( QString const & ); - void translateInputChanged( QString const & ); - void translateInputFinished( bool checkModifiers = true, QString const & dictID = QString() ); - - /// Closes any opened search in the article view, and focuses the translateLine/close main window to tray. - void handleEsc(); - - /// Gives the keyboard focus to the translateLine and selects all the text - /// it has. - void focusTranslateLine(); - - void wordListItemActivated( QListWidgetItem * ); - void wordListSelectionChanged(); - - void dictsListItemActivated( QListWidgetItem * ); - void dictsListSelectionChanged(); - - void jumpToDictionary( QListWidgetItem *, bool force = false ); - - void showDictsPane( ); - void dictsPaneVisibilityChanged ( bool ); - - /// Creates a new tab, which is to be populated then with some content. - ArticleView * createNewTab( bool switchToIt, - QString const & name ); - - void openLinkInNewTab( QUrl const &, QUrl const &, QString const &, - ArticleView::Contexts const & contexts ); - void showDefinitionInNewTab( QString const & word, unsigned group, - QString const & fromArticle, - ArticleView::Contexts const & contexts ); - void typingEvent( QString const & ); - - void activeArticleChanged( ArticleView const *, QString const & id ); - - void mutedDictionariesChanged(); - - void showTranslationFor( QString const &, unsigned inGroup = 0, - QString const & dictID = QString() ); - - void showTranslationFor( QString const &, QStringList const & dictIDs, - QRegExp const & searchRegExp ); - - void showHistoryItem( QString const & ); - - void trayIconActivated( QSystemTrayIcon::ActivationReason ); - - void scanEnableToggled( bool ); - - void setAutostart( bool ); - - void showMainWindow(); - - void visitHomepage(); - void visitForum(); - void openConfigFolder(); - void showAbout(); - - void showDictBarNamesTriggered(); - void useSmallIconsInToolbarsTriggered(); - void toggleMenuBarTriggered( bool announce = true ); - - void on_clearHistory_triggered(); - - void on_newTab_triggered(); - - void on_actionCloseToTray_triggered(); - - void on_pageSetup_triggered(); - void on_printPreview_triggered(); - void on_print_triggered(); - void printPreviewPaintRequested( QPrinter * ); - - void on_saveArticle_triggered(); - - void on_rescanFiles_triggered(); - - void on_showHideHistory_triggered(); - void on_exportHistory_triggered(); - void on_importHistory_triggered(); - void on_alwaysOnTop_triggered( bool checked ); - void focusWordList(); - - void updateSearchPaneAndBar( bool searchInDock ); - - void updateHistoryMenu(); - - /// Add word to history - void addWordToHistory( const QString & word ); - /// Add word to history even if history is disabled in options - void forceAddWordToHistory( const QString & word); - - void sendWordToInputLine( QString const & word ); - - void storeResourceSavePath( QString const & ); - - void closeHeadwordsDialog(); - - void focusHeadwordsDialog(); - - void focusArticleView(); - - void proxyAuthentication( const QNetworkProxy & proxy, QAuthenticator * authenticator ); - - void showFullTextSearchDialog(); - void closeFullTextSearchDialog(); - - void showGDHelp(); - void hideGDHelp(); - -signals: - /// Set optional parts expand mode for all tabs - void setExpandOptionalParts( bool expand ); - - /// Retranslate Ctrl(Shift) + Click on dictionary pane to dictionary toolbar - void clickOnDictPane( QString const & id ); - -#ifdef Q_OS_WIN32 - /// For receiving message from scan libraries -protected: - unsigned gdAskMessage; -public: - bool handleGDMessage( MSG * message, long * result ); - -private slots: - /// Return true while scanning GoldenDict window - bool isGoldenDictWindow( HWND hwnd ); -#endif -}; - -class ArticleSaveProgressDialog : public QProgressDialog -{ -Q_OBJECT - -public: - explicit ArticleSaveProgressDialog( QWidget * parent = 0, Qt::WindowFlags f = 0 ): - QProgressDialog( parent, f ) - { - setAutoReset( false ); - setAutoClose( false ); - } - -public slots: - void perform() - { - int progress = value() + 1; - if ( progress == maximum() ) - { - emit close(); - deleteLater(); - } - setValue( progress ); - } -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.ui deleted file mode 100644 index 71ba354012..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mainwindow.ui +++ /dev/null @@ -1,638 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 653 - 538 - - - - GoldenDict - - - - - 1 - - - 2 - - - 1 - - - 0 - - - - - 0 - - - - 16 - 16 - - - - Qt::ElideRight - - - - Welcome! - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - - 0 - 0 - 653 - 18 - - - - - &File - - - - - - - - - - - - - - - - - &Edit - - - - - - - &Help - - - - - - - - - - - - - &View - - - - &Zoom - - - - - - - H&istory - - - - - - - - - - Search - - - - - - - - - - - - - - &Search Pane - - - 1 - - - - - 0 - 0 - - - - - 2 - - - 1 - - - 2 - - - 1 - - - - - - 200 - 0 - - - - - 0 - 0 - - - - - - - - - 254 - 253 - 235 - - - - - - - - - 254 - 253 - 235 - - - - - - - - - 255 - 255 - 255 - - - - - - - - true - - - - - - - - - - - - 254 - 253 - 235 - - - - - - - - - 254 - 253 - 235 - - - - - - - - - 255 - 255 - 255 - - - - - - - - - - - - - - &Results Navigation Pane - - - 2 - - - - - 2 - - - 1 - - - 2 - - - 1 - - - - - - - - - - &History Pane - - - 2 - - - - - 2 - - - 2 - - - 1 - - - 2 - - - 1 - - - - - - - - - - - :/icons/book.png:/icons/book.png - - - &Dictionaries... - - - F3 - - - QAction::NoRole - - - - - - :/icons/configure.png:/icons/configure.png - - - &Preferences... - - - F4 - - - QAction::PreferencesRole - - - - - &Homepage - - - QAction::NoRole - - - - - &About - - - About GoldenDict - - - QAction::AboutRole - - - - - &Quit - - - Quit from application - - - Ctrl+Q - - - QAction::QuitRole - - - - - &Forum - - - QAction::NoRole - - - - - &Close To Tray - - - Minimizes the window to tray - - - Ctrl+F4 - - - QAction::NoRole - - - - - - :/icons/filesave.png:/icons/filesave.png - - - &Save Article - - - Save Article - - - F2 - - - QAction::NoRole - - - - - - :/icons/print.png:/icons/print.png - - - &Print - - - Ctrl+P - - - QAction::NoRole - - - - - Page Set&up - - - QAction::NoRole - - - - - Print Pre&view - - - QAction::NoRole - - - - - &Rescan Files - - - Ctrl+F5 - - - QAction::NoRole - - - - - &Clear - - - QAction::NoRole - - - - - - :/icons/addtab.png:/icons/addtab.png - - - &New Tab - - - Ctrl+T - - - Qt::WidgetShortcut - - - QAction::NoRole - - - - - &Configuration Folder - - - QAction::NoRole - - - - - &Show - - - Ctrl+H - - - QAction::NoRole - - - - - &Export - - - QAction::NoRole - - - - - &Import - - - QAction::NoRole - - - - - true - - - &Always on Top - - - Always on Top - - - Ctrl+O - - - - - - :/icons/menu_button.png:/icons/menu_button.png - - - Menu Button - - - Menu Button - - - - - Search in page - - - Ctrl+F - - - QAction::TextHeuristicRole - - - - - Full-text search - - - Ctrl+Shift+F - - - Qt::WidgetWithChildrenShortcut - - - QAction::TextHeuristicRole - - - - - GoldenDict reference - - - F1 - - - - - - SearchPaneWidget - QWidget -
searchpanewidget.hh
- 1 -
- - DictsPaneWidget - QWidget -
dictspanewidget.hh
- 1 -
- - MainTabWidget - QTabWidget -
maintabwidget.hh
- 1 -
- - HistoryPaneWidget - QWidget -
historypanewidget.hh
- 1 -
- - WordList - QListWidget -
wordlist.hh
-
-
- - translateLine - tabWidget - dictsList - - - - - -
diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdictparser.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdictparser.cc deleted file mode 100644 index 1d00b3482c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdictparser.cc +++ /dev/null @@ -1,669 +0,0 @@ -// https://bitbucket.org/xwang/mdict-analysis -// https://github.com/zhansliu/writemdict/blob/master/fileformat.md -// Octopus MDict Dictionary File (.mdx) and Resource File (.mdd) Analyser -// -// Copyright (C) 2012, 2013 Xiaoqiang Wang -// Copyright (C) 2013 Timon Wong -// Copyright (C) 2015 Zhe Wang <0x1998 AT gmail DOT com> -// -// This program is a free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3 of the License. -// -// You can get a copy of GNU General Public License along this program -// But you can always get it from http://www.gnu.org/licenses/gpl.txt -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -#include "mdictparser.hh" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "decompress.hh" -#include "gddebug.hh" -#include "ripemd.hh" - -namespace Mdict -{ - -enum EncryptedSection -{ - EcryptedHeadWordHeader = 1, - EcryptedHeadWordIndex = 2 -}; - -static inline int u16StrSize( const ushort * unicode ) -{ - int size = 0; - if ( unicode ) - { - while ( unicode[size] != 0 ) - size++; - } - return size; -} - -static QDomNamedNodeMap parseHeaderAttributes( const QString & headerText ) -{ - QDomNamedNodeMap attributes; - QDomDocument doc; - doc.setContent( headerText ); - - QDomElement docElem = doc.documentElement(); - attributes = docElem.attributes(); - - for ( int i = 0; i < attributes.count(); i++ ) - { - QDomAttr attr = attributes.item( i ).toAttr(); - } - - return attributes; -} - -size_t MdictParser::RecordIndex::bsearch( const vector & offsets, qint64 val ) -{ - if ( offsets.size() == 0 ) - return ( size_t ) ( -1 ); - - size_t lo = 0; - size_t hi = offsets.size() - 1; - - while ( lo <= hi ) - { - size_t mid = ( lo + hi ) >> 1; - RecordIndex const & p = offsets[mid]; - if ( p == val ) - return mid; - else if ( p < val ) - lo = mid + 1; - else - hi = mid - 1; - } - - return ( size_t ) ( -1 ); -} - -MdictParser::MdictParser() : - version_( 0 ), - numHeadWordBlocks_( 0 ), - headWordBlockInfoSize_( 0 ), - headWordBlockSize_( 0 ), - headWordBlockInfoPos_( 0 ), - headWordPos_( 0 ), - totalRecordsSize_( 0 ), - recordPos_( 0 ), - wordCount_( 0 ), - numberTypeSize_( 0 ), - encrypted_( 0 ), - rtl_( false ) -{ -} - -bool MdictParser::open( const char * filename ) -{ - filename_ = QString::fromUtf8( filename ); - file_ = new QFile( filename_ ); - - GD_DPRINTF( "MdictParser: open %s\n", filename ); - - if ( file_.isNull() || !file_->exists() ) - return false; - - if ( !file_->open( QIODevice::ReadOnly ) ) - return false; - - QDataStream in( file_ ); - in.setByteOrder( QDataStream::BigEndian ); - - if ( !readHeader( in ) ) - return false; - - if ( !readHeadWordBlockInfos( in ) ) - return false; - - if ( !readRecordBlockInfos() ) - return false; - - return true; -} - -bool MdictParser::readNextHeadWordIndex( MdictParser::HeadWordIndex & headWordIndex ) -{ - if ( headWordBlockInfosIter_ == headWordBlockInfos_.end() ) - return false; - - qint64 compressedSize = headWordBlockInfosIter_->first; - qint64 decompressedSize = headWordBlockInfosIter_->second; - - if ( compressedSize < 8 ) - return false; - - ScopedMemMap compressed( *file_, headWordPos_, compressedSize ); - if ( !compressed.startAddress() ) - return false; - - headWordPos_ += compressedSize; - QByteArray decompressed; - if ( !parseCompressedBlock( compressedSize, ( char * )compressed.startAddress(), - decompressedSize, decompressed ) ) - return false; - - headWordIndex = splitHeadWordBlock( decompressed ); - headWordBlockInfosIter_++; - return true; -} - -bool MdictParser::checkAdler32(const char * buffer, unsigned int len, quint32 checksum) -{ - uLong adler = adler32( 0L, Z_NULL, 0 ); - adler = adler32( adler, ( const Bytef * ) buffer, len ); - return (adler & 0xFFFFFFFF) == checksum; -} - -QString MdictParser::toUtf16( const char * fromCode, const char * from, size_t fromSize ) -{ - if ( !fromCode || !from ) - return QString(); - - iconv_t conv = iconv_open( "UTF-16//IGNORE", fromCode ); - if ( conv == ( iconv_t ) - 1 ) - return QString(); - - vector result; - const static int CHUNK_SIZE = 512; - char buf[CHUNK_SIZE]; - char ** inBuf = ( char ** )&from; - - while ( fromSize ) - { - char * outBuf = buf; - size_t outBytesLeft = CHUNK_SIZE; - size_t ret = iconv( conv, inBuf, &fromSize, &outBuf, &outBytesLeft ); - - if ( ret == ( size_t ) - 1 ) - { - if ( errno != E2BIG ) - { - // Real problem - result.clear(); - break; - } - } - - result.insert( result.end(), buf, buf + CHUNK_SIZE - outBytesLeft ); - } - - iconv_close( conv ); - if ( result.size() <= 2 ) - return QString(); - return QString::fromUtf16( ( const ushort * )&result.front() ); -} - -bool MdictParser::decryptHeadWordIndex(char * buffer, qint64 len) -{ - RIPEMD128 ripemd; - ripemd.update( ( const uchar * ) buffer + 4, 4 ); - ripemd.update( ( const uchar * ) "\x95\x36\x00\x00", 4 ); - - uint8_t key[16]; - ripemd.digest( key ); - - buffer += 8; - len -= 8; - uint8_t prev = 0x36; - for (qint64 i = 0; i < len; ++i) - { - uint8_t byte = buffer[i]; - byte = (byte >> 4) | (byte << 4); - byte = byte ^ prev ^ (i & 0xFF) ^ key[i % 16]; - prev = buffer[i]; - buffer[i] = byte; - } - return true; -} - -bool MdictParser::parseCompressedBlock( qint64 compressedBlockSize, - const char * compressedBlockPtr, - qint64 decompressedBlockSize, - QByteArray & decompressedBlock ) -{ - if ( compressedBlockSize <= 8 ) - return false; - - // compression type - quint32 type = qFromBigEndian( ( const uchar * ) compressedBlockPtr ); - quint32 checksum = qFromBigEndian( ( const uchar * )compressedBlockPtr + 4 ); - const char * buf = compressedBlockPtr + 8; - qint64 size = compressedBlockSize - 8; - - switch ( type ) - { - case 0x00000000: - // No compression - if ( !checkAdler32( buf, size, checksum ) ) - { - gdWarning( "MDict: parseCompressedBlock: plain: checksum not match" ); - return false; - } - - decompressedBlock = QByteArray( buf, size ); - return true; - - case 0x01000000: - { - // LZO compression - int result; - lzo_uint blockSize = ( lzo_uint )decompressedBlockSize; - decompressedBlock.resize( blockSize ); - result = lzo1x_decompress_safe( ( const uchar * ) buf, size, - ( uchar * )decompressedBlock.data(), - &blockSize, NULL ); - - if ( result != LZO_E_OK || blockSize != ( lzo_uint )decompressedBlockSize ) - { - gdWarning( "MDict: parseCompressedBlock: decompression failed" ); - return false; - } - - if ( checksum != lzo_adler32( lzo_adler32( 0, NULL, 0 ), - ( const uchar * )decompressedBlock.constData(), - blockSize ) ) - { - gdWarning( "MDict: parseCompressedBlock: lzo: checksum does not match" ); - return false; - } - } - break; - - case 0x02000000: - // zlib compression - decompressedBlock = zlibDecompress( buf, size ); - - if ( !checkAdler32( decompressedBlock.constData(), decompressedBlock.size(), - checksum ) ) - { - gdWarning( "MDict: parseCompressedBlock: zlib: checksum does not match" ); - return false; - } - break; - - default: - gdWarning( "MDict: parseCompressedBlock: unknown type" ); - return false; - } - - return true; -} - -qint64 MdictParser::readNumber( QDataStream & in ) -{ - if ( numberTypeSize_ == 8 ) - { - qint64 val; - in >> val; - return val; - } - else - { - quint32 val; - in >> val; - return val; - } -} - -quint32 MdictParser::readU8OrU16( QDataStream & in, bool isU16 ) -{ - if ( isU16 ) - { - quint16 val; - in >> val; - return val; - } - else - { - quint8 val; - in >> val; - return val; - } -} - -bool MdictParser::readHeader( QDataStream & in ) -{ - qint32 headerTextSize; - in >> headerTextSize; - - QByteArray headerTextUtf16 = file_->read( headerTextSize ); - if ( headerTextUtf16.size() != headerTextSize ) - return false; - - QString headerText = toUtf16( "UTF-16LE", headerTextUtf16.constData(), headerTextUtf16.size() ); - - // Adler-32 checksum of the header text (little-endian) - quint32 checksum; - in.setByteOrder( QDataStream::LittleEndian ); - in >> checksum; - if ( !checkAdler32( headerTextUtf16.constData(), headerTextUtf16.size(), checksum ) ) - { - gdWarning( "MDict: readHeader: checksum does not match" ); - return false; - } - headerTextUtf16.clear(); - in.setByteOrder( QDataStream::BigEndian ); - - QDomNamedNodeMap headerAttributes = parseHeaderAttributes( headerText ); - - encoding_ = headerAttributes.namedItem( "Encoding" ).toAttr().value(); - if ( encoding_ == "GBK" || encoding_ == "GB2312" ) - { - encoding_ = "GB18030"; - } - else if ( encoding_.isEmpty() || encoding_ == "UTF-16" ) - { - encoding_ = "UTF-16LE"; - } - - // stylesheet attribute if present takes form of: - // styleId # 1-255 - // style.prefix - // style.suffix - if ( headerAttributes.contains( "StyleSheet" ) ) - { - QString styleSheets = headerAttributes.namedItem( "StyleSheet" ).toAttr().value(); - QStringList lines = styleSheets.split( QRegExp( "[\r\n]" ), QString::KeepEmptyParts ); - for ( int i = 0; i < lines.size() - 3; i += 3 ) - { - styleSheets_[lines[i].toInt()] = pair( lines[i + 1], lines[i + 2] ); - } - } - - // before version 2.0, number is 4 bytes integer - // version 2.0 and above uses 8 bytes - version_ = headerAttributes.namedItem( "GeneratedByEngineVersion" ).toAttr().value().toDouble(); - if ( version_ < 2.0 ) - numberTypeSize_ = 4; - else - numberTypeSize_ = 8; - - // Encrypted ? - encrypted_ = headerAttributes.namedItem("Encrypted").toAttr().value().toInt(); - - // Read metadata - rtl_ = headerAttributes.namedItem( "Left2Right" ).toAttr().value() != "Yes"; - QString title = headerAttributes.namedItem( "Title" ).toAttr().value(); - if ( title.isEmpty() || title.length() < 5 || title == "Title (No HTML code allowed)" ) - { - // Use filename instead - QFileInfo fi( filename_ ); - title_ = fi.baseName(); - } - else - { - if ( title.contains( '<' ) || title.contains( '>' ) ) - title_ = QTextDocumentFragment::fromHtml( title ).toPlainText(); - else - title_ = title; - } - QString description = headerAttributes.namedItem( "Description" ).toAttr().value(); - description_ = QTextDocumentFragment::fromHtml( description ).toPlainText(); - return true; -} - -bool MdictParser::readHeadWordBlockInfos( QDataStream & in ) -{ - QByteArray header = file_->read( version_ >= 2.0 ? ( numberTypeSize_ * 5 ) - : ( numberTypeSize_ * 4 ) ); - QDataStream stream( header ); - - // number of headword blocks - numHeadWordBlocks_ = readNumber( stream ); - // number of entries - wordCount_ = readNumber( stream ); - - // number of bytes of a headword block info after decompression - qint64 decompressedSize; - if ( version_ >= 2.0 ) - stream >> decompressedSize; - - // number of bytes of a headword block info before decompression - headWordBlockInfoSize_ = readNumber( stream ); - // number of bytes of a headword block - headWordBlockSize_ = readNumber( stream ); - - // Adler-32 checksum of the header. If those are encrypted, it is - // the checksum of the decrypted version - if ( version_ >= 2.0 ) - { - quint32 checksum; - in >> checksum; - if ( !checkAdler32( header.constData(), numberTypeSize_ * 5, checksum ) ) - return false; - } - - headWordBlockInfoPos_ = file_->pos(); - - // read headword block info - QByteArray headWordBlockInfo = file_->read( headWordBlockInfoSize_ ); - if ( headWordBlockInfo.size() != headWordBlockInfoSize_ ) - return false; - - if ( version_ >= 2.0 ) - { - // decrypt - if ( encrypted_ & EcryptedHeadWordIndex ) - { - if ( !decryptHeadWordIndex( headWordBlockInfo.data(), - headWordBlockInfo.size() ) ) - return false; - } - - QByteArray decompressed; - if ( !parseCompressedBlock( headWordBlockInfo.size(), headWordBlockInfo.data(), - decompressedSize, decompressed) ) - return false; - - headWordBlockInfos_ = decodeHeadWordBlockInfo( decompressed ); - } - else - { - headWordBlockInfos_ = decodeHeadWordBlockInfo( headWordBlockInfo ); - } - - headWordPos_ = file_->pos(); - headWordBlockInfosIter_ = headWordBlockInfos_.begin(); - return true; -} - -bool MdictParser::readRecordBlockInfos() -{ - file_->seek( headWordBlockInfoPos_ + headWordBlockInfoSize_ + - headWordBlockSize_ ); - - QDataStream in( file_ ); - in.setByteOrder( QDataStream::BigEndian ); - qint64 numRecordBlocks = readNumber( in ); - readNumber( in ); // total number of records, skip - qint64 recordInfoSize = readNumber( in ); - totalRecordsSize_ = readNumber( in ); - recordPos_ = file_->pos() + recordInfoSize; - - // Build record block index - recordBlockInfos_.reserve( numRecordBlocks ); - - qint64 acc1 = 0; - qint64 acc2 = 0; - for ( qint64 i = 0; i < numRecordBlocks; i++ ) - { - RecordIndex r; - r.compressedSize = readNumber( in ); - r.decompressedSize = readNumber( in ); - r.startPos = acc1; - r.endPos = acc1 + r.compressedSize; - r.shadowStartPos = acc2; - r.shadowEndPos = acc2 + r.decompressedSize; - recordBlockInfos_.push_back( r ); - - acc1 = r.endPos; - acc2 = r.shadowEndPos; - } - - return true; -} - -MdictParser::BlockInfoVector MdictParser::decodeHeadWordBlockInfo( QByteArray const & headWordBlockInfo ) -{ - BlockInfoVector headWordBlockInfos; - - QDataStream s( headWordBlockInfo ); - s.setByteOrder( QDataStream::BigEndian ); - - bool isU16 = false; - int textTermSize = 0; - - if ( version_ >= 2.0 ) - { - isU16 = true; - textTermSize = 1; - } - - while ( !s.atEnd() ) - { - // Number of keywords in the block - s.skipRawData( numberTypeSize_ ); - // Size of the first headword in the block - quint32 textHeadSize = readU8OrU16( s, isU16 ); - // The first headword - if ( encoding_ != "UTF-16LE" ) - s.skipRawData( textHeadSize + textTermSize ); - else - s.skipRawData( ( textHeadSize + textTermSize ) * 2 ); - // Size of the last headword in the block - quint32 textTailSize = readU8OrU16( s, isU16 ); - // The last headword - if ( encoding_ != "UTF-16LE" ) - s.skipRawData( textTailSize + textTermSize ); - else - s.skipRawData( ( textTailSize + textTermSize ) * 2 ); - - // headword block compressed size - qint64 compressedSize = readNumber( s ); - // headword block decompressed size - qint64 decompressedSize = readNumber( s ); - headWordBlockInfos.push_back( BlockInfoVector::value_type( compressedSize, decompressedSize ) ); - } - - return headWordBlockInfos; -} - -MdictParser::HeadWordIndex MdictParser::splitHeadWordBlock( QByteArray const & block ) -{ - HeadWordIndex index; - - const char * p = block.constData(); - const char * end = p + block.size(); - - while ( p < end ) - { - qint64 headWordId = ( numberTypeSize_ == 8 ) ? - qFromBigEndian( ( const uchar * )p ) : - qFromBigEndian( ( const uchar * )p ); - p += numberTypeSize_; - QByteArray headWordBuf; - - if ( encoding_ == "UTF-16LE" ) - { - int headWordLength = u16StrSize( ( const ushort * )p ); - headWordBuf = QByteArray( p, ( headWordLength + 1 ) * 2 ); - } - else - { - int headWordLength = strlen( p ); - headWordBuf = QByteArray( p, headWordLength + 1 ); - } - p += headWordBuf.size(); - QString headWord = toUtf16( encoding_, headWordBuf.constBegin(), headWordBuf.size() ); - index.push_back( HeadWordIndex::value_type( headWordId, headWord ) ); - } - - return index; -} - -bool MdictParser::readRecordBlock( MdictParser::HeadWordIndex & headWordIndex, - MdictParser::RecordHandler & recordHandler ) -{ - // cache the index, the headWordIndex is already sorted - size_t idx = 0; - - for ( HeadWordIndex::const_iterator i = headWordIndex.begin(); i != headWordIndex.end(); i++ ) - { - if ( recordBlockInfos_[idx].endPos <= i->first ) - idx = RecordIndex::bsearch( recordBlockInfos_, i->first ); - - if ( idx == ( size_t )( -1 ) ) - return false; - - RecordIndex const & recordIndex = recordBlockInfos_[idx]; - HeadWordIndex::const_iterator iNext = i + 1; - qint64 recordSize; - if ( iNext == headWordIndex.end() ) - recordSize = recordIndex.shadowEndPos - i->first; - else - recordSize = iNext->first - i->first; - - RecordInfo recordInfo; - recordInfo.compressedBlockPos = recordPos_ + recordIndex.startPos; - recordInfo.recordOffset = i->first - recordIndex.shadowStartPos; - recordInfo.decompressedBlockSize = recordIndex.decompressedSize; - recordInfo.compressedBlockSize = recordIndex.compressedSize; - recordInfo.recordSize = recordSize; - - recordHandler.handleRecord( i->second, recordInfo ); - } - - return true; -} - -QString & MdictParser::substituteStylesheet( QString & article, MdictParser::StyleSheets const & styleSheets ) -{ - QRegExp rx( "`(\\d+)`" ); - QString endStyle; - int pos = 0; - - while ( ( pos = rx.indexIn( article, pos ) ) != -1 ) - { - int styleId = rx.cap( 1 ).toInt(); - StyleSheets::const_iterator iter = styleSheets.find( styleId ); - - if ( iter != styleSheets.end() ) - { - QString rep = endStyle + iter->second.first; - article.replace( pos, rx.cap( 0 ).length(), rep ); - pos += rep.length(); - endStyle = iter->second.second; - } - else - { - article.replace( pos, rx.cap( 0 ).length(), endStyle ); - pos += endStyle.length(); - endStyle = ""; - } - } - article += endStyle; - return article; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdictparser.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdictparser.hh deleted file mode 100644 index b8dee43e49..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdictparser.hh +++ /dev/null @@ -1,219 +0,0 @@ -// https://bitbucket.org/xwang/mdict-analysis -// https://github.com/zhansliu/writemdict/blob/master/fileformat.md -// Octopus MDict Dictionary File (.mdx) and Resource File (.mdd) Analyser -// -// Copyright (C) 2012, 2013 Xiaoqiang Wang -// Copyright (C) 2013 Timon Wong -// Copyright (C) 2015 Zhe Wang <0x1998 AT gmail DOT com> -// -// This program is a free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3 of the License. -// -// You can get a copy of GNU General Public License along this program -// But you can always get it from http://www.gnu.org/licenses/gpl.txt -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -#ifndef __MDICTPARSER_HH_INCLUDED__ -#define __MDICTPARSER_HH_INCLUDED__ - -#include -#include -#include -#include - -#include -#include - -namespace Mdict -{ - -using std::string; -using std::vector; -using std::pair; -using std::map; - -// A helper class to handle memory map for QFile -class ScopedMemMap -{ - QFile & file; - uchar * address; - -public: - ScopedMemMap( QFile & file, qint64 offset, qint64 size ) : - file( file ), - address( file.map( offset, size ) ) - { - } - - ~ScopedMemMap() - { - if ( address ) - file.unmap( address ); - } - - inline uchar * startAddress() - { - return address; - } -}; - -class MdictParser -{ -public: - - enum - { - kParserVersion = 0x000000d - }; - - struct RecordIndex - { - qint64 startPos; - qint64 endPos; - qint64 shadowStartPos; - qint64 shadowEndPos; - qint64 compressedSize; - qint64 decompressedSize; - - inline bool operator==( qint64 rhs ) const - { - return ( shadowStartPos <= rhs ) && ( rhs < shadowEndPos ); - } - - inline bool operator<( qint64 rhs ) const - { - return shadowEndPos <= rhs; - } - - inline bool operator>( qint64 rhs ) const - { - return shadowStartPos > rhs; - } - - static size_t bsearch( vector const & offsets, qint64 val ); - }; - - struct RecordInfo - { - qint64 compressedBlockPos; - qint64 recordOffset; - - qint64 decompressedBlockSize; - qint64 compressedBlockSize; - qint64 recordSize; - }; - - class RecordHandler - { - public: - virtual void handleRecord( QString const & name, RecordInfo const & recordInfo ) = 0; - }; - - typedef vector< pair > BlockInfoVector; - typedef vector< pair > HeadWordIndex; - typedef map > StyleSheets; - - inline QString const & title() const - { - return title_; - } - - inline QString const & description() const - { - return description_; - } - - inline StyleSheets const & styleSheets() const - { - return styleSheets_; - } - - inline quint32 wordCount() const - { - return wordCount_; - } - - inline QString const & encoding() const - { - return encoding_; - } - - inline QString const & filename() const - { - return filename_; - } - - inline bool isRightToLeft() const - { - return rtl_; - } - - MdictParser(); - ~MdictParser() {} - - bool open( const char * filename ); - bool readNextHeadWordIndex( HeadWordIndex & headWordIndex ); - bool readRecordBlock( HeadWordIndex & headWordIndex, RecordHandler & recordHandler ); - - // helpers - static QString toUtf16( const char * fromCode, const char * from, size_t fromSize ); - static inline QString toUtf16( QString const & fromCode, const char * from, size_t fromSize ) - { - return toUtf16( fromCode.toLatin1().constData(), from, fromSize ); - } - static bool parseCompressedBlock( qint64 compressedBlockSize, const char * compressedBlockPtr, - qint64 decompressedBlockSize, QByteArray & decompressedBlock); - static QString & substituteStylesheet( QString & article, StyleSheets const & styleSheets ); - static inline string substituteStylesheet( string const & article, StyleSheets const & styleSheets ) - { - QString s = QString::fromUtf8( article.c_str() ); - substituteStylesheet( s, styleSheets ); - return string( s.toUtf8().constData() ); - } - -protected: - qint64 readNumber( QDataStream & in ); - static quint32 readU8OrU16( QDataStream & in, bool isU16 ); - static bool checkAdler32(const char * buffer, unsigned int len, quint32 checksum); - static bool decryptHeadWordIndex(char * buffer, qint64 len); - bool readHeader( QDataStream & in ); - bool readHeadWordBlockInfos( QDataStream & in ); - bool readRecordBlockInfos(); - BlockInfoVector decodeHeadWordBlockInfo( QByteArray const & headWordBlockInfo ); - HeadWordIndex splitHeadWordBlock( QByteArray const & block ); - -protected: - QString filename_; - QPointer file_; - StyleSheets styleSheets_; - BlockInfoVector headWordBlockInfos_; - BlockInfoVector::iterator headWordBlockInfosIter_; - vector recordBlockInfos_; - - QString encoding_; - QString title_; - QString description_; - - double version_; - qint64 numHeadWordBlocks_; - qint64 headWordBlockInfoSize_; - qint64 headWordBlockSize_; - qint64 headWordBlockInfoPos_; - qint64 headWordPos_; - qint64 totalRecordsSize_; - qint64 recordPos_; - - quint32 wordCount_; - int numberTypeSize_; - int encrypted_; - bool rtl_; -}; - -} - -#endif // __MDICTPARSER_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdx.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdx.cc deleted file mode 100644 index 875a8b868b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdx.cc +++ /dev/null @@ -1,1353 +0,0 @@ -/* This file is (c) 2013 Timon Wong - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "mdx.hh" -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include "file.hh" -#include "wstring.hh" -#include "wstring_qt.hh" -#include "chunkedstorage.hh" -#include "gddebug.hh" -#include "langcoder.hh" -#include "fsencoding.hh" -#include "audiolink.hh" -#include "ex.hh" -#include "mdictparser.hh" -#include "filetype.hh" -#include "ftshelpers.hh" -#include "htmlescape.hh" - -#include -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include "qt4x5.hh" - -namespace Mdx -{ - -using std::map; -using std::multimap; -using std::set; -using gd::wstring; -using gd::wchar; -using std::list; -using std::pair; -using std::string; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -using namespace Mdict; - -enum -{ - kSignature = 0x4349444d, // MDIC - kCurrentFormatVersion = 10 + BtreeIndexing::FormatVersion + Folding::Version -}; - -DEF_EX( exCorruptDictionary, "dictionary file was tampered or corrupted", std::exception ) - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, MDIC - uint32_t formatVersion; // File format version, currently 1. - uint32_t parserVersion; // Version of the parser used to parse the MDIC file. - // Version of the folding algorithm used when building - // index. If it's different from the current one, - // the file is to be rebuilt. - uint32_t foldingVersion; - - uint32_t articleCount; // Total number of articles, for informative purposes only - uint32_t wordCount; // Total number of words, for informative purposes only - - uint32_t isRightToLeft; // Right to left - uint32_t chunksOffset; // The offset to chunks' storage - - uint32_t descriptionAddress; // Address of the dictionary description in the chunks' storage - uint32_t descriptionSize; // Size of the description in the chunks' storage, 0 = no description - - uint32_t styleSheetAddress; - uint32_t styleSheetCount; - - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - - uint32_t langFrom; // Source language - uint32_t langTo; // Target language - - uint32_t mddIndexInfosOffset; // address of IndexInfos for resource files (.mdd) - uint32_t mddIndexInfosCount; // count of IndexInfos for resource files -} -#ifndef _MSC_VER -__attribute__( ( packed ) ) -#endif -; - -// A helper method to read resources from .mdd file -class IndexedMdd: public BtreeIndexing::BtreeIndex -{ - Mutex & idxMutex; - Mutex fileMutex; - ChunkedStorage::Reader & chunks; - QFile mddFile; - bool isFileOpen; - -public: - - IndexedMdd( Mutex & idxMutex, ChunkedStorage::Reader & chunks ): - idxMutex( idxMutex ), - chunks( chunks ), - isFileOpen( false ) - {} - - /// Opens the index. The values are those previously returned by buildIndex(). - using BtreeIndexing::BtreeIndex::openIndex; - - /// Opens the mdd file itself. Returns true if succeeded, false otherwise. - bool open( const char * fileName ) - { - mddFile.setFileName( QString::fromUtf8( fileName ) ); - isFileOpen = mddFile.open( QFile::ReadOnly ); - return isFileOpen; - } - - /// Returns true if the mdd is open, false otherwise. - inline bool isOpen() const - { - return isFileOpen; - } - - /// Checks whether the given file exists in the mdd file or not. - /// Note that this function is thread-safe, since it does not access mdd file. - bool hasFile( gd::wstring const & name ) - { - if ( !isFileOpen ) - return false; - vector< WordArticleLink > links = findArticles( name ); - return !links.empty(); - } - - /// Attempts loading the given file into the given vector. Returns true on - /// success, false otherwise. - bool loadFile( gd::wstring const & name, std::vector< char > & result ) - { - if ( !isFileOpen ) - return false; - - vector< WordArticleLink > links = findArticles( name ); - if ( links.empty() ) - return false; - - MdictParser::RecordInfo indexEntry; - vector< char > chunk; - Mutex::Lock _( idxMutex ); - const char * indexEntryPtr = chunks.getBlock( links[ 0 ].articleOffset, chunk ); - memcpy( &indexEntry, indexEntryPtr, sizeof( indexEntry ) ); - - ScopedMemMap compressed( mddFile, indexEntry.compressedBlockPos, indexEntry.compressedBlockSize ); - if ( !compressed.startAddress() ) - { - return false; - } - - QByteArray decompressed; - if ( !MdictParser::parseCompressedBlock( indexEntry.compressedBlockSize, ( char * )compressed.startAddress(), - indexEntry.decompressedBlockSize, decompressed ) ) - { - return false; - } - - result.resize( indexEntry.recordSize ); - memcpy( &result.front(), decompressed.constData() + indexEntry.recordOffset, indexEntry.recordSize ); - return true; - } - -}; - -class MdxDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - string dictionaryName; - string encoding; - ChunkedStorage::Reader chunks; - QFile dictFile; - vector< sptr< IndexedMdd > > mddResources; - MdictParser::StyleSheets styleSheets; - - QAtomicInt deferredInitDone; - Mutex deferredInitMutex; - bool deferredInitRunnableStarted; - QSemaphore deferredInitRunnableExited; - - string initError; - -public: - - MdxDictionary( string const & id, string const & indexFile, vector const & dictionaryFiles ); - - ~MdxDictionary(); - - virtual void deferredInit(); - - virtual string getName() throw() - { - return dictionaryName; - } - - virtual map< Dictionary::Property, string > getProperties() throw() - { - return map< Dictionary::Property, string >(); - } - - virtual unsigned long getArticleCount() throw() - { - return idxHeader.articleCount; - } - - virtual unsigned long getWordCount() throw() - { - return idxHeader.wordCount; - } - - inline virtual quint32 getLangFrom() const - { - return idxHeader.langFrom; - } - - inline virtual quint32 getLangTo() const - { - return idxHeader.langTo; - } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) throw( std::exception ); - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) throw( std::exception ); - virtual QString const & getDescription(); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - if( ensureInitDone().size() ) - return; - - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "MDICT", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } -protected: - - virtual void loadIcon() throw(); - -private: - - virtual string const & ensureInitDone(); - void doDeferredInit(); - - /// Loads an article with the given offset, filling the given strings. - void loadArticle( uint32_t offset, string & articleText, bool noFilter = false ); - - /// Process resource links (images, audios, etc) - QString & filterResource( QString const & articleId, QString & article ); - - friend class MdxHeadwordsRequest; - friend class MdxArticleRequest; - friend class MddResourceRequest; - friend class MdxDeferredInitRunnable; -}; - -MdxDictionary::MdxDictionary( string const & id, string const & indexFile, - vector const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - chunks( idx, idxHeader.chunksOffset ), - deferredInitRunnableStarted( false ) -{ - // Read the dictionary's name - idx.seek( sizeof( idxHeader ) ); - size_t len = idx.read< uint32_t >(); - vector< char > buf( len ); - idx.read( &buf.front(), len ); - dictionaryName = string( &buf.front(), len ); - - // then read the dictionary's encoding - len = idx.read< uint32_t >(); - buf.resize( len ); - idx.read( &buf.front(), len ); - encoding = string( &buf.front(), len ); - - dictFile.setFileName( QString::fromUtf8( dictionaryFiles[ 0 ].c_str() ) ); - dictFile.open( QIODevice::ReadOnly ); - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -MdxDictionary::~MdxDictionary() -{ - Mutex::Lock _( deferredInitMutex ); - - // Wait for init runnable to complete if it was ever started - if ( deferredInitRunnableStarted ) - deferredInitRunnableExited.acquire(); - - dictFile.close(); -} - -//////// MdxDictionary::deferredInit() - -class MdxDeferredInitRunnable: public QRunnable -{ - MdxDictionary & dictionary; - QSemaphore & hasExited; - -public: - - MdxDeferredInitRunnable( MdxDictionary & dictionary_, - QSemaphore & hasExited_ ): - dictionary( dictionary_ ), hasExited( hasExited_ ) - {} - - ~MdxDeferredInitRunnable() - { - hasExited.release(); - } - - virtual void run() - { - dictionary.doDeferredInit(); - } -}; - -void MdxDictionary::deferredInit() -{ - if ( !Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - { - Mutex::Lock _( deferredInitMutex ); - - if ( Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - return; - - if ( !deferredInitRunnableStarted ) - { - QThreadPool::globalInstance()->start( - new MdxDeferredInitRunnable( *this, deferredInitRunnableExited ), - -1000 ); - deferredInitRunnableStarted = true; - } - } -} - -string const & MdxDictionary::ensureInitDone() -{ - doDeferredInit(); - return initError; -} - -void MdxDictionary::doDeferredInit() -{ - if ( !Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - { - Mutex::Lock _( deferredInitMutex ); - - if ( Qt4x5::AtomicInt::loadAcquire( deferredInitDone ) ) - return; - - // Do deferred init - - try - { - // Retrieve stylesheets - idx.seek( idxHeader.styleSheetAddress ); - for ( uint32_t i = 0; i < idxHeader.styleSheetCount; i++ ) - { - qint32 key = idx.read< qint32 >(); - vector< char > buf; - quint32 sz; - - sz = idx.read< quint32 >(); - buf.resize( sz ); - idx.read( &buf.front(), sz ); - QString styleBegin = QString::fromUtf8( buf.data() ); - - sz = idx.read< quint32 >(); - buf.resize( sz ); - idx.read( &buf.front(), sz ); - QString styleEnd = QString::fromUtf8( buf.data() ); - - styleSheets[ key ] = pair( styleBegin, styleEnd ); - } - - // Initialize the index - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), idx, idxMutex ); - - vector< string > mddFileNames; - vector< IndexInfo > mddIndexInfos; - idx.seek( idxHeader.mddIndexInfosOffset ); - for ( uint32_t i = 0; i < idxHeader.mddIndexInfosCount; i++ ) - { - quint32 sz = idx.read< quint32 >(); - vector< char > buf( sz ); - idx.read( &buf.front(), sz ); - uint32_t btreeMaxElements = idx.read(); - uint32_t rootOffset = idx.read(); - mddFileNames.push_back( string( &buf.front() ) ); - mddIndexInfos.push_back( IndexInfo( btreeMaxElements, rootOffset ) ); - } - - vector< string > const dictFiles = getDictionaryFilenames(); - for ( uint32_t i = 1; i < dictFiles.size() && i < mddFileNames.size() + 1; i++ ) - { - QFileInfo fi( QString::fromUtf8( dictFiles[ i ].c_str() ) ); - QString mddFileName = QString::fromUtf8( mddFileNames[ i - 1 ].c_str() ); - - if ( fi.fileName() != mddFileName || !fi.exists() ) - continue; - - sptr< IndexedMdd > mdd = new IndexedMdd( idxMutex, chunks ); - mdd->openIndex( mddIndexInfos[ i - 1 ], idx, idxMutex ); - mdd->open( dictFiles[ i ].c_str() ); - mddResources.push_back( mdd ); - } - } - catch ( std::exception & e ) - { - initError = e.what(); - } - catch ( ... ) - { - initError = "Unknown error"; - } - - deferredInitDone.ref(); - } -} - -void MdxDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "MDict: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "MDict: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void MdxDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - headword.clear(); - string articleText; - - loadArticle( articleAddress, articleText, true ); - text = Html::unescape( QString::fromUtf8( articleText.data(), articleText.size() ) ); - } - catch( std::exception &ex ) - { - gdWarning( "MDict: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - -sptr< Dictionary::DataRequest > MdxDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -/// MdxDictionary::getArticle - -class MdxArticleRequest; - -class MdxArticleRequestRunnable: public QRunnable -{ - MdxArticleRequest & r; - QSemaphore & hasExited; - -public: - - MdxArticleRequestRunnable( MdxArticleRequest & r_, - QSemaphore & hasExited_ ): - r( r_ ), - hasExited( hasExited_ ) - {} - - ~MdxArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class MdxArticleRequest: public Dictionary::DataRequest -{ - friend class MdxArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - MdxDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - MdxArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - MdxDictionary & dict_ ): - word( word_ ), - alts( alts_ ), - dict( dict_ ) - { - QThreadPool::globalInstance()->start( new MdxArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); - - virtual void cancel() - { - isCancelled.ref(); - } - - ~MdxArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void MdxArticleRequestRunnable::run() -{ - r.run(); -} - -void MdxArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for ( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - // Some synonims make it that the articles appear several times. We combat this - // by only allowing them to appear once. - set< uint32_t > articlesIncluded; - // Sometimes the articles are physically duplicated. We store hashes of - // the bodies to account for this. - set< QByteArray > articleBodiesIncluded; - string articleText; - - for ( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Grab that article - string articleBody; - bool hasError = false; - QString errorMessage; - - try - { - dict.loadArticle( chain[ x ].articleOffset, articleBody ); - } - catch ( exCorruptDictionary & ) - { - errorMessage = tr( "Dictionary file was tampered or corrupted" ); - hasError = true; - } - catch ( std::exception & e ) - { - errorMessage = e.what(); - hasError = true; - } - - if ( hasError ) - { - setErrorString( tr( "Failed loading article from %1, reason: %2" ) - .arg( QString::fromUtf8( dict.getDictionaryFilenames()[ 0 ].c_str() ) ) - .arg( errorMessage ) ); - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - QCryptographicHash hash( QCryptographicHash::Md5 ); - hash.addData( articleBody.data(), articleBody.size() ); - if ( !articleBodiesIncluded.insert( hash.result() ).second ) - continue; // Already had this body - - // Handle internal redirects - if ( strncmp( articleBody.c_str(), "@@@LINK=", 8 ) == 0 ) - { - wstring target = Utf8::decode( articleBody.c_str() + 8 ); - target = Folding::trimWhitespace( target ); - // Make an additional query for this redirection - vector< WordArticleLink > altChain = dict.findArticles( target ); - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - continue; - } - - // See Issue #271: A mechanism to clean-up invalid HTML cards. - string cleaner = """""""""""" - """""""""""" - "" - "" - ""; - articleText += "
" + articleBody + cleaner + "
\n"; - hasAnyData = true; - } - - if ( hasAnyData ) - { - Mutex::Lock _( dataMutex ); - data.insert( data.end(), articleText.begin(), articleText.end() ); - } - - finish(); -} - -sptr MdxDictionary::getArticle( const wstring & word, const vector & alts, - const wstring & ) throw( std::exception ) -{ - return new MdxArticleRequest( word, alts, *this ); -} - -/// MdxDictionary::getResource - -class MddResourceRequest; - -class MddResourceRequestRunnable: public QRunnable -{ - MddResourceRequest & r; - QSemaphore & hasExited; - -public: - - MddResourceRequestRunnable( MddResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~MddResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class MddResourceRequest: public Dictionary::DataRequest -{ - friend class MddResourceRequestRunnable; - - MdxDictionary & dict; - wstring resourceName; - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - MddResourceRequest( MdxDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( Utf8::decode( resourceName_ ) ) - { - QThreadPool::globalInstance()->start( new MddResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by MddResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~MddResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void MddResourceRequestRunnable::run() -{ - r.run(); -} - -void MddResourceRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - // In order to prevent recursive internal redirection... - set< QByteArray > resourceIncluded; - - for ( ;; ) - { - // Some runnables linger enough that they are cancelled before they start - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - string u8ResourceName = Utf8::encode( resourceName ); - QCryptographicHash hash( QCryptographicHash::Md5 ); - hash.addData( u8ResourceName.data(), u8ResourceName.size() ); - if ( !resourceIncluded.insert( hash.result() ).second ) - continue; - - // Convert to the Windows separator - std::replace( resourceName.begin(), resourceName.end(), '/', '\\' ); - if ( resourceName[ 0 ] != '\\' ) - { - resourceName.insert( 0, 1, '\\' ); - } - - Mutex::Lock _( dataMutex ); - data.clear(); - - try - { - // local file takes precedence - string fn = FsEncoding::dirname( dict.getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + u8ResourceName; - File::loadFromFile( fn, data ); - } - catch ( File::exCantOpen & ) - { - for ( vector< sptr< IndexedMdd > >::const_iterator i = dict.mddResources.begin(); - i != dict.mddResources.end(); i++ ) - { - sptr< IndexedMdd > mddResource = *i; - if ( mddResource->loadFile( resourceName, data ) ) - break; - } - } - - // Check if this file has a redirection - // Always encoded in UTF16-LE - // L"@@@LINK=" - static const char pattern[16] = - { - '@', '\0', '@', '\0', '@', '\0', 'L', '\0', 'I', '\0', 'N', '\0', 'K', '\0', '=', '\0' - }; - - if ( data.size() > sizeof( pattern ) ) - { - if ( memcmp( &data.front(), pattern, sizeof( pattern ) ) == 0 ) - { - data.push_back( '\0' ); - data.push_back( '\0' ); - QString target = MdictParser::toUtf16( "UTF-16LE", &data.front() + sizeof( pattern ), - data.size() - sizeof( pattern ) ); - resourceName = gd::toWString( target.trimmed() ); - continue; - } - } - - if ( data.size() > 0 ) - { - hasAnyData = true; - - if ( Filetype::isNameOfCSS( u8ResourceName ) ) - { - QString css = QString::fromUtf8( data.data(), data.size() ); - - // Correct some url's - - QRegExp links( "url\\(\\s*(['\"]?)([^'\"]*)(['\"]?)\\s*\\)", Qt::CaseInsensitive, QRegExp::RegExp ); - QString id = QString::fromUtf8( dict.getId().c_str() ); - int pos = 0; - for( ; ; ) - { - pos = links.indexIn( css, pos ); - if( pos < 0 ) - break; - QString url = links.cap( 2 ); - - if( url.indexOf( ":/" ) >= 0 || url.indexOf( "data:" ) >= 0) - { - // External link or base64-encoded data - pos += links.cap().size(); - continue; - } - - QString newUrl = QString( "url(" ) + links.cap( 1 ) + "bres://" - + id + "/" + url + links.cap( 3 ) + ")"; - css.replace( pos, links.cap().size(), newUrl ); - pos += newUrl.size(); - } - - dict.isolateCSS( css, ".mdict" ); - QByteArray bytes = css.toUtf8(); - data.resize( bytes.size() ); - memcpy( &data.front(), bytes.constData(), bytes.size() ); - } - } - - break; - } - - finish(); -} - -sptr MdxDictionary::getResource( const string & name ) throw( std::exception ) -{ - return new MddResourceRequest( *this, name ); -} - -const QString & MdxDictionary::getDescription() -{ - if ( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - if ( idxHeader.descriptionSize == 0 ) - { - dictionaryDescription = "NONE"; - } - else - { - Mutex::Lock _( idxMutex ); - vector< char > chunk; - char * dictDescription = chunks.getBlock( idxHeader.descriptionAddress, chunk ); - string str( dictDescription ); - dictionaryDescription = QString::fromUtf8( str.c_str(), str.size() ); - } - - return dictionaryDescription; -} - -void MdxDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if ( !loadIconFromFile( fileName ) ) - { - // Use default icons - dictionaryIcon = dictionaryNativeIcon = QIcon( ":/icons/mdict.png" ); - } - - dictionaryIconLoaded = true; -} - -void MdxDictionary::loadArticle( uint32_t offset, string & articleText, bool noFilter ) -{ - vector< char > chunk; - Mutex::Lock _( idxMutex ); - - // Load record info from index - MdictParser::RecordInfo recordInfo; - char * pRecordInfo = chunks.getBlock( offset, chunk ); - memcpy( &recordInfo, pRecordInfo, sizeof( recordInfo ) ); - - // Make a sub unique id for this article - QString articleId; - articleId.setNum( ( quint64 )pRecordInfo, 16 ); - - ScopedMemMap compressed( dictFile, recordInfo.compressedBlockPos, recordInfo.compressedBlockSize ); - if ( !compressed.startAddress() ) - throw exCorruptDictionary(); - - QByteArray decompressed; - if ( !MdictParser::parseCompressedBlock( recordInfo.compressedBlockSize, ( char * )compressed.startAddress(), - recordInfo.decompressedBlockSize, decompressed ) ) - throw exCorruptDictionary(); - - QString article = MdictParser::toUtf16( encoding.c_str(), - decompressed.constData() + recordInfo.recordOffset, - recordInfo.recordSize ); - - article = MdictParser::substituteStylesheet( article, styleSheets ); - if( !noFilter ) - article = filterResource( articleId, article ); - articleText = string( article.toUtf8().constData() ); -} - -QString & MdxDictionary::filterResource( QString const & articleId, QString & article ) -{ - QString id = QString::fromStdString( getId() ); - QString uniquePrefix = id + "_" + articleId + "_"; - QRegExp anchorLinkRe( "(<\\s*a\\s+[^>]*\\b(?:name|id)\\b\\s*=\\s*[\"']*)(?=[^\"'])", Qt::CaseInsensitive ); - anchorLinkRe.setMinimal( true ); - - QRegExp wordCrossLink( "(href\\s*=\\s*[\"'])entry://([^#\"'/]+)(#?[^\"']*)", Qt::CaseInsensitive ); - - article = article - // anchors - .replace( anchorLinkRe, - "\\1" + uniquePrefix ) - .replace( QRegExp( "(href\\s*=\\s*[\"'])entry://#", Qt::CaseInsensitive ), - "\\1#" + uniquePrefix ) - // sounds, and audio link script - .replace( QRegExp( "(<\\s*(?:a|area)\\s+[^>]*\\bhref\\b\\s*=\\s*\")sound://([^\"']*)", Qt::CaseInsensitive ), - QString::fromStdString( addAudioLink( "\"gdau://" + getId() + "/\\2\"", getId() ) ) + - "\\1gdau://" + id + "/\\2" ) - // stylesheets - .replace( QRegExp( "(<\\s*link\\s+[^>]*\\bhref\\b\\s*=\\s*[\"']+)(?:file://)?[\\x00-\\x30\\x7f]*([^\"']*)", - Qt::CaseInsensitive, QRegExp::RegExp2 ), - "\\1bres://" + id + "/\\2" ) - .replace( QRegExp( "(<\\s*link\\s+[^>]*\\bhref\\b\\s*=\\s*)(?!['\"]+)(?!bres:|data:)(?:file://)?([^\\s>]+)", - Qt::CaseInsensitive, QRegExp::RegExp2 ), - "\\1\"bres://" + id + "/\\\"" ) - // javascripts - .replace( QRegExp( "(<\\s*script\\s+[^>]*\\bsrc\\b\\s*=\\s*)(?!['\"]+)(?!bres:|data:)(?:file://)?([^\\s>]+)", - Qt::CaseInsensitive, QRegExp::RegExp2 ), - "\\1\"bres://" + id + "/\\\"" ) - // images - .replace( QRegExp( "(<\\s*img\\s+[^>]*\\bsrc\\b\\s*=\\s*[\"']+)(?:file://)?[\\x00-\\x1f\\x7f]*([^\"']*)", - Qt::CaseInsensitive, QRegExp::RegExp2 ), - "\\1bres://" + id + "/\\2" ) - .replace( QRegExp( "(<\\s*img\\s+[^>]*\\bsrc\\b\\s*=\\s*)(?!['\"]+)(?!bres:|data:)(?:file://)?([^\\s>]+)", - Qt::CaseInsensitive, QRegExp::RegExp2 ), - "\\1\"bres://" + id + "/\\2\"" ); - - // word cross links - int pos = 0; - while( pos >= 0 ) - { - pos = wordCrossLink.indexIn( article, pos ); - if( pos < 0 ) - break; - - QString newLink = wordCrossLink.cap( 1 ) - + "gdlookup://localhost/" - + wordCrossLink.cap( 2 ); - - if( !wordCrossLink.cap( 3 ).isEmpty() ) - newLink += QString( "?gdanchor=" ) + uniquePrefix + wordCrossLink.cap( 3 ).mid( 1 ); - - article.replace( pos, wordCrossLink.cap( 0 ).size(), newLink ); - pos += newLink.size(); - } - - // javascripts - QRegExp regScript( "(<\\s*script\\s+[^>]*\\bsrc\\b\\s*=\\s*[\"']+)(?:file://)?[\\x00-\\x30\\x7f]*([^\"']*)", - Qt::CaseInsensitive, QRegExp::RegExp2 ); - QRegExp regDynamic( "<\\s*script\\s+src\\s*=\\s*[\"']+\\s*[\"']+\\s*\\+\\s*replace\\(" ); - pos = 0; - while( pos >= 0 ) - { - pos = regScript.indexIn( article, pos ); - if( pos < 0 ) - break; - - if( regScript.cap( 0 ).indexOf( regDynamic ) >= 0 ) - { - pos += regScript.cap( 0 ).size(); - continue; - } - - QString newLink = regScript.cap( 1 ) - + "bres://" + id + "/" - + regScript.cap( 2 ); - - article.replace( pos, regScript.cap( 0 ).size(), newLink ); - pos += newLink.size(); - } - - return article; -} - -static void addEntryToIndex( QString const & word, uint32_t offset, IndexedWords & indexedWords ) -{ - // Strip any leading or trailing whitespaces - QString wordTrimmed = word.trimmed(); - indexedWords.addWord( gd::toWString( wordTrimmed ), offset ); -} - -static void addEntryToIndexSingle( QString const & word, uint32_t offset, IndexedWords & indexedWords ) -{ - // Strip any leading or trailing whitespaces - QString wordTrimmed = word.trimmed(); - indexedWords.addSingleWord( gd::toWString( wordTrimmed ), offset ); -} - -class ArticleHandler: public MdictParser::RecordHandler -{ -public: - ArticleHandler( ChunkedStorage::Writer & chunks, IndexedWords & indexedWords ) : - chunks( chunks ), - indexedWords( indexedWords ) - { - } - - virtual void handleRecord( QString const & headWord, MdictParser::RecordInfo const & recordInfo ) - { - // Save the article's record info - uint32_t articleAddress = chunks.startNewBlock(); - chunks.addToBlock( &recordInfo, sizeof( recordInfo ) ); - // Add entries to the index - addEntryToIndex( headWord, articleAddress, indexedWords ); - } - -private: - ChunkedStorage::Writer & chunks; - IndexedWords & indexedWords; -}; - -class ResourceHandler: public MdictParser::RecordHandler -{ -public: - ResourceHandler( ChunkedStorage::Writer & chunks, IndexedWords & indexedWords ): - chunks( chunks ), - indexedWords( indexedWords ) - { - } - - virtual void handleRecord( QString const & fileName, MdictParser::RecordInfo const & recordInfo ) - { - uint32_t resourceInfoAddress = chunks.startNewBlock(); - chunks.addToBlock( &recordInfo, sizeof( recordInfo ) ); - // Add entries to the index - addEntryToIndexSingle( fileName, resourceInfoAddress, indexedWords ); - } - -private: - ChunkedStorage::Writer & chunks; - IndexedWords & indexedWords; -}; - - -static bool indexIsOldOrBad( vector< string > const & dictFiles, string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != kSignature || - header.formatVersion != kCurrentFormatVersion || - header.parserVersion != MdictParser::kParserVersion || - header.foldingVersion != Folding::Version || - header.mddIndexInfosCount != dictFiles.size() - 1; -} - -static void findResourceFiles( string const & mdx, vector< string > & dictFiles ) -{ - string base( mdx, 0, mdx.size() - 4 ); - // Check if there' is any file end with .mdd, which is the resource file for the dictionary - string resFile; - if ( File::tryPossibleName( base + ".mdd", resFile ) ) - { - dictFiles.push_back( resFile ); - // Find complementary .mdd file (volumes), like follows: - // demo.mdx <- main dictionary file - // demo.mdd <- main resource file ( 1st volume ) - // demo.1.mdd <- 2nd volume - // ... - // demo.n.mdd <- nth volume - QString baseU8 = QString::fromUtf8( base.c_str() ); - int vol = 1; - while ( File::tryPossibleName( string( QString( "%1.%2.mdd" ).arg( baseU8 ).arg( vol ) - .toUtf8().constBegin() ), resFile ) ) - { - dictFiles.push_back( resFile ); - vol++; - } - } -} - -vector< sptr< Dictionary::Class > > makeDictionaries( vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for ( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); i++ ) - { - // Skip files with the extensions different to .mdx to speed up the - // scanning - if ( i->size() < 4 || strcasecmp( i->c_str() + ( i->size() - 4 ), ".mdx" ) != 0 ) - continue; - - vector< string > dictFiles( 1, *i ); - findResourceFiles( *i, dictFiles ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( dictFiles, indexFile ) ) - { - // Building the index - - gdDebug( "MDict: Building the index for dictionary: %s\n", i->c_str() ); - - MdictParser parser; - list< sptr< MdictParser > > mddParsers; - - if ( !parser.open( i->c_str() ) ) - continue; - - string title = string( parser.title().toUtf8().constData() ); - initializing.indexingDictionary( title ); - - for ( vector< string >::const_iterator mddIter = dictFiles.begin() + 1; - mddIter != dictFiles.end(); mddIter++ ) - { - if ( File::exists( *mddIter ) ) - { - sptr< MdictParser > mddParser = new MdictParser(); - if ( !mddParser->open( mddIter->c_str() ) ) - { - gdWarning( "Warning: Broken mdd (resource) file: %s\n", mddIter->c_str() ); - continue; - } - mddParsers.push_back( mddParser ); - } - } - - File::Class idx( indexFile, "wb" ); - IdxHeader idxHeader; - memset( &idxHeader, 0, sizeof( idxHeader ) ); - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - idx.write( idxHeader ); - - // Write the title first - idx.write< uint32_t >( title.size() ); - idx.write( title.data(), title.size() ); - - // then the encoding - { - string encoding = string( parser.encoding().toUtf8().constData() ); - idx.write< uint32_t >( encoding.size() ); - idx.write( encoding.data(), encoding.size() ); - } - - // This is our index data that we accumulate during the loading process. - // For each new word encountered, we emit the article's body to the file - // immediately, inserting the word itself and its offset in this map. - // This map maps folded words to the original words and the corresponding - // articles' offsets. - IndexedWords indexedWords; - ChunkedStorage::Writer chunks( idx ); - - idxHeader.isRightToLeft = parser.isRightToLeft(); - - // Save dictionary description if there's one - { - string description = string( parser.description().toUtf8().constData() ); - idxHeader.descriptionAddress = chunks.startNewBlock(); - chunks.addToBlock( description.c_str(), description.size() + 1 ); - idxHeader.descriptionSize = description.size() + 1; - } - - ArticleHandler articleHandler( chunks, indexedWords ); - MdictParser::HeadWordIndex headWordIndex; - - // enumerating word and its definition - while ( parser.readNextHeadWordIndex( headWordIndex ) ) - { - parser.readRecordBlock( headWordIndex, articleHandler ); - } - - // enumerating resources if there's any - vector< sptr< IndexedWords > > mddIndices; - vector< string > mddFileNames; - while ( !mddParsers.empty() ) - { - sptr< MdictParser > mddParser = mddParsers.front(); - sptr< IndexedWords > mddIndexedWords = new IndexedWords(); - ResourceHandler resourceHandler( chunks, *mddIndexedWords ); - - while ( mddParser->readNextHeadWordIndex( headWordIndex ) ) - { - mddParser->readRecordBlock( headWordIndex, resourceHandler ); - } - - mddIndices.push_back( mddIndexedWords ); - // Save filename for .mdd files only - QFileInfo fi( mddParser->filename() ); - mddFileNames.push_back( string( fi.fileName().toUtf8().constData() ) ); - mddParsers.pop_front(); - } - - // Finish with the chunks - idxHeader.chunksOffset = chunks.finish(); - - GD_DPRINTF( "Writing index...\n" ); - - // Good. Now build the index - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - // Save dictionary stylesheets - { - MdictParser::StyleSheets const & styleSheets = parser.styleSheets(); - idxHeader.styleSheetAddress = idx.tell(); - idxHeader.styleSheetCount = styleSheets.size(); - - for ( MdictParser::StyleSheets::const_iterator iter = styleSheets.begin(); - iter != styleSheets.end(); iter++ ) - { - string styleBegin( iter->second.first.toUtf8().constData() ); - string styleEnd( iter->second.second.toUtf8().constData() ); - - // key - idx.write( iter->first ); - // styleBegin - idx.write( ( quint32 )styleBegin.size() + 1 ); - idx.write( styleBegin.c_str(), styleBegin.size() + 1 ); - // styleEnd - idx.write( ( quint32 )styleEnd.size() + 1 ); - idx.write( styleEnd.c_str(), styleEnd.size() + 1 ); - } - } - - // read languages - QPair langs = LangCoder::findIdsForFilename( QString::fromStdString( *i ) ); - - // if no languages found, try dictionary's name - if ( langs.first == 0 || langs.second == 0 ) - { - langs = LangCoder::findIdsForFilename( parser.title() ); - } - - idxHeader.langFrom = langs.first; - idxHeader.langTo = langs.second; - - // Build index info for each mdd file - vector< IndexInfo > mddIndexInfos; - for ( vector< sptr< IndexedWords > >::const_iterator mddIndexIter = mddIndices.begin(); - mddIndexIter != mddIndices.end(); mddIndexIter++ ) - { - IndexInfo resourceIdxInfo = BtreeIndexing::buildIndex( *( *mddIndexIter ), idx ); - mddIndexInfos.push_back( resourceIdxInfo ); - } - - // Save address of IndexInfos for resource files - idxHeader.mddIndexInfosOffset = idx.tell(); - idxHeader.mddIndexInfosCount = mddIndexInfos.size(); - for ( uint32_t mi = 0; mi < mddIndexInfos.size(); mi++ ) - { - const string & mddfile = mddFileNames[ mi ]; - - idx.write( ( quint32 )mddfile.size() + 1 ); - idx.write( mddfile.c_str(), mddfile.size() + 1 ); - idx.write( mddIndexInfos[ mi ].btreeMaxElements ); - idx.write( mddIndexInfos[ mi ].rootOffset ); - } - - // That concludes it. Update the header. - idxHeader.signature = kSignature; - idxHeader.formatVersion = kCurrentFormatVersion; - idxHeader.parserVersion = MdictParser::kParserVersion; - idxHeader.foldingVersion = Folding::Version; - idxHeader.articleCount = parser.wordCount(); - idxHeader.wordCount = parser.wordCount(); - - idx.rewind(); - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - - dictionaries.push_back( new MdxDictionary( dictId, indexFile, dictFiles ) ); - } - - return dictionaries; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdx.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdx.hh deleted file mode 100644 index 82d5223e01..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mdx.hh +++ /dev/null @@ -1,21 +0,0 @@ -/* This file is (c) 2013 Timon Wong - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __MDX_HH_INCLUDED__ -#define __MDX_HH_INCLUDED__ - -#include "dictionary.hh" - -namespace Mdx -{ - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) throw( std::exception ); - -} - -#endif // __MDX_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mediawiki.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mediawiki.cc deleted file mode 100644 index 67dbb52ebe..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mediawiki.cc +++ /dev/null @@ -1,523 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "mediawiki.hh" -#include "wstring_qt.hh" -#include -#include -#include -#include -#include -#include "gddebug.hh" -#include "audiolink.hh" -#include "langcoder.hh" -#include "qt4x5.hh" - -namespace MediaWiki { - -using namespace Dictionary; - -namespace { - -class MediaWikiDictionary: public Dictionary::Class -{ - string name; - QString url, icon; - QNetworkAccessManager & netMgr; - quint32 langId; - -public: - - MediaWikiDictionary( string const & id, string const & name_, - QString const & url_, - QString const & icon_, - QNetworkAccessManager & netMgr_ ): - Dictionary::Class( id, vector< string >() ), - name( name_ ), - url( url_ ), - icon( icon_ ), - netMgr( netMgr_ ), - langId( 0 ) - { - int n = url.indexOf( "." ); - if( n == 2 || ( n > 3 && url[ n-3 ] == '/' ) ) - langId = LangCoder::code2toInt( url.mid( n - 2, 2 ).toLatin1().data() ); - } - - virtual string getName() throw() - { return name; } - - virtual map< Property, string > getProperties() throw() - { return map< Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return 0; } - - virtual unsigned long getWordCount() throw() - { return 0; } - - virtual sptr< WordSearchRequest > prefixMatch( wstring const &, - unsigned long maxResults ) throw( std::exception ); - - virtual sptr< DataRequest > getArticle( wstring const &, vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual quint32 getLangFrom() const - { return langId; } - - virtual quint32 getLangTo() const - { return langId; } - -protected: - - virtual void loadIcon() throw(); - -}; - -void MediaWikiDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - if( !icon.isEmpty() ) - { - QFileInfo fInfo( QDir( Config::getConfigDir() ), icon ); - if( fInfo.isFile() ) - loadIconFromFile( fInfo.absoluteFilePath(), true ); - } - if( dictionaryIcon.isNull() ) - dictionaryIcon = dictionaryNativeIcon = QIcon(":/icons/icon32_wiki.png"); - dictionaryIconLoaded = true; -} - -class MediaWikiWordSearchRequest: public MediaWikiWordSearchRequestSlots -{ - sptr< QNetworkReply > netReply; - bool livedLongEnough; // Indicates that the request has lived long enough - // to be destroyed prematurely. Used to prevent excessive - // network loads when typing search terms rapidly. - bool isCancelling; - -public: - - MediaWikiWordSearchRequest( wstring const &, - QString const & url, QNetworkAccessManager & mgr ); - - ~MediaWikiWordSearchRequest(); - - virtual void cancel(); - -protected: - - virtual void timerEvent( QTimerEvent * ); - -private: - - virtual void downloadFinished(); -}; - -MediaWikiWordSearchRequest::MediaWikiWordSearchRequest( wstring const & str, - QString const & url, - QNetworkAccessManager & mgr ): - livedLongEnough( false ), isCancelling( false ) -{ - GD_DPRINTF( "request begin\n" ); - QUrl reqUrl( url + "/api.php?action=query&list=allpages&aplimit=40&format=xml" ); - - Qt4x5::Url::addQueryItem( reqUrl, "apfrom", gd::toQString( str ) ); - - netReply = mgr.get( QNetworkRequest( reqUrl ) ); - - connect( netReply.get(), SIGNAL( finished() ), - this, SLOT( downloadFinished() ) ); - -#ifndef QT_NO_OPENSSL - - connect( netReply.get(), SIGNAL( sslErrors( QList< QSslError > ) ), - netReply.get(), SLOT( ignoreSslErrors() ) ); - -#endif - - // We start a timer to postpone early destruction, so a rapid type won't make - // unnecessary network load - startTimer( 200 ); -} - -void MediaWikiWordSearchRequest::timerEvent( QTimerEvent * ev ) -{ - killTimer( ev->timerId() ); - livedLongEnough = true; - - if ( isCancelling ) - finish(); -} - -MediaWikiWordSearchRequest::~MediaWikiWordSearchRequest() -{ - GD_DPRINTF( "request end\n" ); -} - -void MediaWikiWordSearchRequest::cancel() -{ - // We either finish it in place, or in the timer handler - isCancelling = true; - - if ( netReply.get() ) - netReply.reset(); - - if ( livedLongEnough ) - { - finish(); - } - else - { - GD_DPRINTF("not long enough\n" ); - } -} - -void MediaWikiWordSearchRequest::downloadFinished() -{ - if ( isCancelling || isFinished() ) // Was cancelled - return; - - if ( netReply->error() == QNetworkReply::NoError ) - { - QDomDocument dd; - - QString errorStr; - int errorLine, errorColumn; - - if ( !dd.setContent( netReply.get(), false, &errorStr, &errorLine, &errorColumn ) ) - { - setErrorString( QString( tr( "XML parse error: %1 at %2,%3" ). - arg( errorStr ).arg( errorLine ).arg( errorColumn ) ) ); - } - else - { - QDomNode pages = dd.namedItem( "api" ).namedItem( "query" ).namedItem( "allpages" ); - - if ( !pages.isNull() ) - { - QDomNodeList nl = pages.toElement().elementsByTagName( "p" ); - - Mutex::Lock _( dataMutex ); - - for( Qt4x5::Dom::size_type x = 0; x < nl.length(); ++x ) - matches.push_back( gd::toWString( nl.item( x ).toElement().attribute( "title" ) ) ); - } - } - GD_DPRINTF( "done.\n" ); - } - else - setErrorString( netReply->errorString() ); - - finish(); -} - -class MediaWikiArticleRequest: public MediaWikiDataRequestSlots -{ - typedef std::list< std::pair< QNetworkReply *, bool > > NetReplies; - NetReplies netReplies; - QString url; - -public: - - MediaWikiArticleRequest( wstring const & word, vector< wstring > const & alts, - QString const & url, QNetworkAccessManager & mgr, - Class * dictPtr_ ); - - virtual void cancel(); - -private: - - void addQuery( QNetworkAccessManager & mgr, wstring const & word ); - - virtual void requestFinished( QNetworkReply * ); - Class * dictPtr; -}; - -void MediaWikiArticleRequest::cancel() -{ - finish(); -} - -MediaWikiArticleRequest::MediaWikiArticleRequest( wstring const & str, - vector< wstring > const & alts, - QString const & url_, - QNetworkAccessManager & mgr, - Class * dictPtr_ ): - url( url_ ), dictPtr( dictPtr_ ) -{ - connect( &mgr, SIGNAL( finished( QNetworkReply * ) ), - this, SLOT( requestFinished( QNetworkReply * ) ), - Qt::QueuedConnection ); - - addQuery( mgr, str ); - - for( unsigned x = 0; x < alts.size(); ++x ) - addQuery( mgr, alts[ x ] ); -} - -void MediaWikiArticleRequest::addQuery( QNetworkAccessManager & mgr, - wstring const & str ) -{ - gdDebug( "MediaWiki: requesting article %s\n", gd::toQString( str ).toUtf8().data() ); - - QUrl reqUrl( url + "/api.php?action=parse&prop=text|revid&format=xml&redirects" ); - - Qt4x5::Url::addQueryItem( reqUrl, "page", gd::toQString( str ) ); - - QNetworkReply * netReply = mgr.get( QNetworkRequest( reqUrl ) ); - -#ifndef QT_NO_OPENSSL - - connect( netReply, SIGNAL( sslErrors( QList< QSslError > ) ), - netReply, SLOT( ignoreSslErrors() ) ); - -#endif - - netReplies.push_back( std::make_pair( netReply, false ) ); -} - -void MediaWikiArticleRequest::requestFinished( QNetworkReply * r ) -{ - GD_DPRINTF( "Finished.\n" ); - - if ( isFinished() ) // Was cancelled - return; - - // Find this reply - - bool found = false; - - for( NetReplies::iterator i = netReplies.begin(); i != netReplies.end(); ++i ) - { - if ( i->first == r ) - { - i->second = true; // Mark as finished - found = true; - break; - } - } - - if ( !found ) - { - // Well, that's not our reply, don't do anything - return; - } - - bool updated = false; - - for( ; netReplies.size() && netReplies.front().second; netReplies.pop_front() ) - { - QNetworkReply * netReply = netReplies.front().first; - - if ( netReply->error() == QNetworkReply::NoError ) - { - QDomDocument dd; - - QString errorStr; - int errorLine, errorColumn; - - if ( !dd.setContent( netReply, false, &errorStr, &errorLine, &errorColumn ) ) - { - setErrorString( QString( tr( "XML parse error: %1 at %2,%3" ). - arg( errorStr ).arg( errorLine ).arg( errorColumn ) ) ); - } - else - { - QDomNode parseNode = dd.namedItem( "api" ).namedItem( "parse" ); - - if ( !parseNode.isNull() && parseNode.toElement().attribute( "revid" ) != "0" ) - { - QDomNode textNode = parseNode.namedItem( "text" ); - - if ( !textNode.isNull() ) - { - QString articleString = textNode.toElement().text(); - - // Replace all ":" in links, remove '#' part in links to other articles - int pos = 0; - QRegExp regLinks( "= 0 ) - { - // External link - pos += regLinks.cap().size(); - continue; - } - - if( link.indexOf( ':' ) >= 0 ) - link.replace( ':', "%3A" ); - - int n = link.indexOf( '#', 1 ); - if( n > 0 ) - { - QString anchor = link.mid( n + 1 ).replace( '_', "%5F" ); - link.truncate( n ); - link += QString( "?gdanchor=%1" ).arg( anchor ); - } - - QString newLink = QString( "", Qt::CaseInsensitive, QRegExp::RegExp2 ); - reg1.setMinimal( true ); - QRegExp reg2( "= 0 ) - { - QString tag = reg1.cap(); - if( reg2.indexIn( tag ) >= 0 ) - { - QString ref = reg2.cap( 1 ); - QString audio_url = "\"Play\"/"; - articleString.replace( pos, tag.length(), audio_url ); - } - pos += 1; - } - else - break; - } - - // audio url - articleString.replace( QRegExp( "dictPtr->getId() ) + "]*(upload\\.wikimedia\\.org/wikipedia/commons/[^\"'&]*\\.ogg)[^>]*>\\s*<[^<]*"), - QString::fromStdString(addAudioLink( string( "\"" ) + wikiUrl.scheme().toStdString() + "://\\1\"", this->dictPtr->getId() ) + - "\"Play\"" ) ); - // In those strings, change any underscores to spaces - for( ; ; ) - { - QString before = articleString; - articleString.replace( QRegExp( "#]*)_" ), "isToLanguageRTL() ? "
" : - "
" ); - articleBody.append( "
" ); - - Mutex::Lock _( dataMutex ); - - size_t prevSize = data.size(); - - data.resize( prevSize + articleBody.size() ); - - memcpy( &data.front() + prevSize, articleBody.data(), articleBody.size() ); - - hasAnyData = true; - - updated = true; - } - } - } - GD_DPRINTF( "done.\n" ); - } - else - setErrorString( netReply->errorString() ); - - netReply->deleteLater(); - } - - if ( netReplies.empty() ) - finish(); - else - if ( updated ) - update(); -} - -sptr< WordSearchRequest > MediaWikiDictionary::prefixMatch( wstring const & word, - unsigned long maxResults ) - throw( std::exception ) -{ - (void) maxResults; - if ( word.size() > 80 ) - { - // Don't make excessively large queries -- they're fruitless anyway - - return new WordSearchRequestInstant(); - } - else - return new MediaWikiWordSearchRequest( word, url, netMgr ); -} - -sptr< DataRequest > MediaWikiDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - if ( word.size() > 80 ) - { - // Don't make excessively large queries -- they're fruitless anyway - - return new DataRequestInstant( false ); - } - else - return new MediaWikiArticleRequest( word, alts, url, netMgr, this ); -} - -} - -vector< sptr< Dictionary::Class > > makeDictionaries( - Dictionary::Initializing &, - Config::MediaWikis const & wikis, - QNetworkAccessManager & mgr ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - for( int x = 0; x < wikis.size(); ++x ) - { - if ( wikis[ x ].enabled ) - result.push_back( new MediaWikiDictionary( wikis[ x ].id.toStdString(), - wikis[ x ].name.toUtf8().data(), - wikis[ x ].url, - wikis[ x ].icon, - mgr ) ); - } - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mediawiki.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mediawiki.hh deleted file mode 100644 index ca67e6ffb7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mediawiki.hh +++ /dev/null @@ -1,47 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __MEDIAWIKI_HH_INCLUDED__ -#define __MEDIAWIKI_HH_INCLUDED__ - -#include "dictionary.hh" -#include "config.hh" -#include - -/// Support for MediaWiki-based wikis, based on its public API. -namespace MediaWiki { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - Dictionary::Initializing &, - Config::MediaWikis const & wikis, - QNetworkAccessManager & ) - throw( std::exception ); - -/// Exposed here for moc -class MediaWikiWordSearchRequestSlots: public Dictionary::WordSearchRequest -{ - Q_OBJECT - -protected slots: - - virtual void downloadFinished() - {} -}; - -/// Exposed here for moc -class MediaWikiDataRequestSlots: public Dictionary::DataRequest -{ - Q_OBJECT - -protected slots: - - virtual void requestFinished( QNetworkReply * ) - {} -}; - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover.cc deleted file mode 100644 index 83ff9b59c6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover.cc +++ /dev/null @@ -1,387 +0,0 @@ -#include "mouseover.hh" -#include "utf8.hh" -#include -#include -#include - -#ifdef Q_OS_WIN32 -#undef WINVER -#define WINVER 0x0500 -#include -#include -#include -#include "mouseover_win32/ThTypes.h" -#include "wordbyauto.hh" -#include "x64.hh" -#endif - -MouseOver & MouseOver::instance() -{ - static MouseOver m; - - return m; -} - -#ifdef Q_OS_WIN32 -const UINT WM_MY_SHOW_TRANSLATION = WM_USER + 301; -static wchar_t className[] = L"GoldenDictMouseover"; -typedef BOOL ( WINAPI *ChangeWindowMessageFilterFunc )( UINT, DWORD ); - -#ifndef _MSC_VER -typedef struct tagCHANGEFILTERSTRUCT { - DWORD cbSize; - DWORD ExtStatus; -} CHANGEFILTERSTRUCT, *PCHANGEFILTERSTRUCT; -#endif - -typedef BOOL ( WINAPI *ChangeWindowMessageFilterExFunc )( HWND, UINT, DWORD, PCHANGEFILTERSTRUCT ); - -#endif // Q_OS_WIN32 - -#ifdef Q_OS_WIN32 - -#ifndef ConvertStringSecurityDescriptorToSecurityDescriptor - -extern "C" BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorW( - LPCWSTR StringSecurityDescriptor, - DWORD StringSDRevision, - PSECURITY_DESCRIPTOR *SecurityDescriptor, - PULONG SecurityDescriptorSize ); - -#endif - -static void SetLowLabelToGDSynchroObjects() -{ -// The LABEL_SECURITY_INFORMATION SDDL SACL to be set for low integrity -#define LOW_INTEGRITY_SDDL_SACL_W L"S:(ML;;NW;;;LW)" -// DWORD dwErr = ERROR_SUCCESS; - PSECURITY_DESCRIPTOR pSD = NULL; - - PACL pSacl = NULL; // not allocated - BOOL fSaclPresent = FALSE; - BOOL fSaclDefaulted = FALSE; -#ifdef Q_OS_WIN64 - LPCWSTR pwszMapFileName64 = L"GoldenDictTextOutHookSharedMem64"; -#endif - LPCWSTR pwszMapFileName = L"GoldenDictTextOutHookSharedMem"; - LPCWSTR pwszSpyMutexName = L"GoldenDictTextOutSpyMutex"; - - if( ConvertStringSecurityDescriptorToSecurityDescriptorW( LOW_INTEGRITY_SDDL_SACL_W, 1 /* SDDL_REVISION_1 */, &pSD, NULL ) ) - { - if( GetSecurityDescriptorSacl(pSD, &fSaclPresent, &pSacl, &fSaclDefaulted)) - { -// Note that psidOwner, psidGroup, and pDacl are -// all NULL and set the new LABEL_SECURITY_INFORMATION - -#ifdef Q_OS_WIN64 - /* dwErr = */ SetNamedSecurityInfoW( (LPWSTR)pwszMapFileName64, - SE_KERNEL_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl); -#endif - /* dwErr = */ SetNamedSecurityInfoW( (LPWSTR)pwszMapFileName, - SE_KERNEL_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl); - - /* dwErr = */ SetNamedSecurityInfoW( (LPWSTR)pwszSpyMutexName, - SE_KERNEL_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl); - - } - LocalFree(pSD); - } -} - -#endif // Q_OS_WIN32 - -MouseOver::MouseOver() : - pPref(NULL) -{ -#ifdef Q_OS_WIN32 -HMODULE hm; -ChangeWindowMessageFilterFunc changeWindowMessageFilterFunc = NULL; -ChangeWindowMessageFilterExFunc changeWindowMessageFilterExFunc = NULL; - mouseOverEnabled = false; - - ThTypes_Init(); - memset( GlobalData, 0, sizeof( TGlobalDLLData ) ); -#ifdef Q_OS_WIN64 - memset( GlobalData32, 0, sizeof( TGlobalDLLData32 ) ); -#endif -// strcpy( GlobalData->LibName, -// QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutHook.dll" ) ).toLocal8Bit().data() ); -#ifdef Q_OS_WIN64 - QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutHook64.dll" ) ).toWCharArray( GlobalData->LibName ); - QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() + "/x86" ).filePath( "GdTextOutHook.dll" ) ).toWCharArray( GlobalData32->LibName ); -#else - QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutHook.dll" ) ).toWCharArray( GlobalData->LibName ); -#endif - - // Create the window to recive spying results to - - WNDCLASSEX wcex; - - wcex.cbSize = sizeof( WNDCLASSEX ); - - wcex.style = 0; - wcex.lpfnWndProc = ( WNDPROC ) eventHandler; - wcex.cbClsExtra = 0; - wcex.cbWndExtra = 0; - wcex.hInstance = GetModuleHandle( 0 ); - wcex.hIcon = NULL; - wcex.hCursor = NULL, - wcex.hbrBackground = NULL; - wcex.lpszMenuName = NULL; - wcex.lpszClassName = className; - wcex.hIconSm = NULL; - - RegisterClassEx( &wcex ); - - GlobalData->ServerWND = CreateWindow( className, L"", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, GetModuleHandle( 0 ), 0 ); -#ifdef Q_OS_WIN64 - GlobalData32->ServerWND = HandleToLong( GlobalData->ServerWND ); -#endif - -#ifdef Q_OS_WIN64 - spyDll = LoadLibrary( QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutSpy64.dll" ) ).toStdWString().c_str() ); -#else - spyDll = LoadLibrary( QDir::toNativeSeparators( QDir( QCoreApplication::applicationDirPath() ).filePath( "GdTextOutSpy.dll" ) ).toStdWString().c_str() ); -#endif - - if ( spyDll ) - activateSpyFn = ( ActivateSpyFn ) GetProcAddress( spyDll, "ActivateTextOutSpying" ); - -// Allow messages from low intehrity process - for Vista and Win7 - hm = GetModuleHandle( __TEXT("user32.dll")); - if ( hm != NULL ) { - changeWindowMessageFilterExFunc = (ChangeWindowMessageFilterExFunc)GetProcAddress( hm, "ChangeWindowMessageFilterEx" ); - if( changeWindowMessageFilterExFunc ) { - CHANGEFILTERSTRUCT cfs = { sizeof( CHANGEFILTERSTRUCT ), 0 }; - changeWindowMessageFilterExFunc( GlobalData->ServerWND, WM_MY_SHOW_TRANSLATION, 1 /* MSGFLT_ALLOW */, &cfs ); - } else { - changeWindowMessageFilterFunc = (ChangeWindowMessageFilterFunc)GetProcAddress( hm, "ChangeWindowMessageFilter" ); - if( changeWindowMessageFilterFunc ) - changeWindowMessageFilterFunc( WM_MY_SHOW_TRANSLATION, 1 /* MSGFLT_ADD */ ); - } - } - -//Allow object access from low intehrity process - for Vista and Win7 - SetLowLabelToGDSynchroObjects(); - -#endif -} - -void MouseOver::enableMouseOver() -{ -#ifdef Q_OS_WIN32 - if ( !mouseOverEnabled && activateSpyFn ) - { - activateSpyFn( true ); - installx64Hooks(); - mouseOverEnabled = true; - } -#endif -} - -void MouseOver::disableMouseOver() -{ -#ifdef Q_OS_WIN32 - if ( mouseOverEnabled && activateSpyFn ) - { - activateSpyFn( false ); - removex64Hooks(); - mouseOverEnabled = false; - } -#endif -} - -#ifdef Q_OS_WIN32 - -LRESULT MouseOver::makeScanBitMask() -{ -LRESULT res = 0; - if( pPref == NULL ) - return 0; - if( !pPref->enableScanPopupModifiers || checkModifiersPressed( pPref->scanPopupModifiers ) ) { - res = GD_FLAG_METHOD_STANDARD; - if( pPref->scanPopupUseUIAutomation !=0 ) - res |= GD_FLAG_METHOD_UI_AUTOMATION; - if( pPref->scanPopupUseIAccessibleEx !=0 ) - res |= GD_FLAG_METHOD_IACCESSIBLEEX; - if( pPref->scanPopupUseGDMessage !=0 ) - res |= GD_FLAG_METHOD_GD_MESSAGE; - } - return res; -} - -#ifdef Q_OS_WIN64 -#define Global_Data GlobalData32 -#else -#define Global_Data GlobalData -#endif - -LRESULT CALLBACK MouseOver::eventHandler( HWND hwnd_, UINT msg, - WPARAM wparam, LPARAM lparam ) -{ - if ( msg == WM_MY_SHOW_TRANSLATION ) - { - LRESULT res = instance().makeScanBitMask(); - - if( res == 0 ) - return 0; // Don't handle word without necessity - - if( wparam != 0) //Ask for methods of word retrieving - return res; - - int wordSeqPos = 0; - QString wordSeq; - -#ifdef Q_OS_WIN64 - HWND hwnd = ( HWND )LongToHandle( Global_Data->LastWND ); -#else - HWND hwnd = Global_Data->LastWND; -#endif - - if( Global_Data->CurMod.WordLen == 0) - { - if( ( res & GD_FLAG_METHOD_UI_AUTOMATION ) == 0 ) - return 0; - POINT pt = Global_Data->LastPt; - WCHAR *pwstr = gdGetWordAtPointByAutomation( pt ); - if( pwstr == NULL ) return 0; - wordSeq = QString::fromWCharArray( pwstr ); - } - else - { - - // Is the string in utf8 or in locale encoding? - - gd::wchar testBuf[ 256 ]; - - long result = Utf8::decode( Global_Data->CurMod.MatchedWord, - strlen( Global_Data->CurMod.MatchedWord ), - testBuf ); - - if ( result >= 0 ) - { - // It seems to be - QString begin = QString::fromUtf8( Global_Data->CurMod.MatchedWord, - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - QString end = QString::fromUtf8( Global_Data->CurMod.MatchedWord + - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - wordSeq = begin + end; - wordSeqPos = begin.size(); - } - else - { - // It's not, so interpret it as in local encoding - QString begin = QString::fromLocal8Bit( Global_Data->CurMod.MatchedWord, - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - QString end = QString::fromLocal8Bit( Global_Data->CurMod.MatchedWord + - Global_Data->CurMod.BeginPos ).normalized( QString::NormalizationForm_C ); - - wordSeq = begin + end; - wordSeqPos = begin.size(); - } - } - - // Now locate the word inside the sequence - - QString word; - - if ( wordSeq[ wordSeqPos ].isSpace() ) - { - // Currently we ignore such cases - return 0; - } - else - if ( !wordSeq[ wordSeqPos ].isLetterOrNumber() ) - { - // Special case: the cursor points to something which doesn't look like a - // middle of the word -- assume that it's something that joins two words - // together. - - int begin = wordSeqPos; - - for( ; begin; --begin ) - if ( !wordSeq[ begin - 1 ].isLetterOrNumber() ) - break; - - int end = wordSeqPos; - - while( ++end < wordSeq.size() ) - if ( !wordSeq[ end ].isLetterOrNumber() ) - break; - - if ( end - begin == 1 ) - { - // Well, turns out it was just a single non-letter char, discard it - return 0; - } - - word = wordSeq.mid( begin, end - begin ); - } - else - { - // Cursor points to a letter -- cut the word it points to - - int begin = wordSeqPos; - - for( ; begin; --begin ) - if ( !wordSeq[ begin - 1 ].isLetterOrNumber() ) - break; - - int end = wordSeqPos; - - while( ++end < wordSeq.size() ) - { - if ( !wordSeq[ end ].isLetterOrNumber() ) - break; - } - word = wordSeq.mid( begin, end - begin ); - } - - // See if we have an RTL char. Reverse the whole string if we do. - - if( lparam == 0 ) - { - for( int x = 0; x < word.size(); ++x ) - { - QChar::Direction d = word[ x ].direction(); - - if ( d == QChar::DirR || d == QChar::DirAL || - d == QChar::DirRLE || d == QChar::DirRLO ) - { - std::reverse( word.begin(), word.end() ); - break; - } - } - } - - bool forcePopup = false; - forcePopup = emit instance().isGoldenDictWindow( hwnd ); - emit instance().hovered( word, forcePopup ); - return 0; - } - - return DefWindowProc( hwnd_, msg, wparam, lparam ); -} - -#endif - -MouseOver::~MouseOver() -{ -#ifdef Q_OS_WIN32 - - disableMouseOver(); - - FreeLibrary( spyDll ); - - DestroyWindow( GlobalData->ServerWND ); - - UnregisterClass( className, GetModuleHandle( 0 ) ); - - ThTypes_End(); - -#endif -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover.hh deleted file mode 100644 index 995b47c96f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover.hh +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef __MOUSEOVER_HH_INCLUDED__ -#define __MOUSEOVER_HH_INCLUDED__ - -#include -#include "config.hh" -#include "keyboardstate.hh" - -#ifdef Q_OS_WIN32 -#include -#endif - -/// This is a mouseover feature interface, where you can point your mouse at -/// any word in any window and wait a little, and it would provide that word -/// for the translation. -/// This interface always exists, even on platforms that don't support that -/// feature -- it just remains dormant on them. -/// -/// The Windows platform is the only one supported; it works with the help of -/// two external .dll files, -class MouseOver: public QObject, public KeyboardState -{ - Q_OBJECT - -public: - - /// The class is a singleton. - static MouseOver & instance(); - - /// Enables mouseover. The mouseover is initially disabled. - void enableMouseOver(); - /// Disables mouseover. - void disableMouseOver(); - - /// Set pointer to program configuration - void setPreferencesPtr( Config::Preferences const *ppref ) { pPref = ppref; }; - -signals: - - /// Emitted when there was some text under cursor which was hovered over. - void hovered( QString const &, bool forcePopup ); - -#ifdef Q_OS_WIN32 - /// Ask for source window is GoldenDict window - bool isGoldenDictWindow( HWND hwnd ); -#endif - -private: - - MouseOver(); - ~MouseOver(); - - Config::Preferences const *pPref; - -#ifdef Q_OS_WIN32 - - static LRESULT CALLBACK eventHandler( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ); - - typedef void ( *ActivateSpyFn )( bool ); - ActivateSpyFn activateSpyFn; - HINSTANCE spyDll; - bool mouseOverEnabled; - - /// Create mask for scan methods - LRESULT makeScanBitMask(); - -#endif - -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GDDataTranfer.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GDDataTranfer.h deleted file mode 100644 index 84bc483dfb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GDDataTranfer.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef __GDDATATRANSFER_H_ -#define __GDDATATRANSFER_H_ - -/* -Header for other program to interact with GoldenDict - -When GD needs to retrieve word under mouse cursor it can ask for this a target program -by sending a message. - -GD_MESSAGE_NAME - name of the this message -Message number must be retrieved through RegisterWindowMessage function - -Message parameters: -WPARAM - 0, not used -LPARAM - pointer to GDDataStruct structure - -GDDataStruct fields: -dwSize - Structure size -hWnd - Window with requested word -Pt - Request coordinates (in screen coordinates, device units) -dwMaxLength - Maximum word length to transfer (buffer size in unicode symbols) -cwData - Buffer for requested word in UNICODE - -If program process this message it must fill cwData and return TRUE -Otherwise GD will work by old technique -*/ - -#ifdef UNICODE -#define GD_MESSAGE_NAME L"GOLDENDICT_GET_WORD_IN_COORDINATES" -#else -#define GD_MESSAGE_NAME "GOLDENDICT_GET_WORD_IN_COORDINATES" -#endif - -#pragma pack(push,1) - -typedef struct { - DWORD dwSize; - HWND hWnd; - POINT Pt; - DWORD dwMaxLength; - WCHAR *cwData; -} GDDataStruct, *LPGDDataStruct; - -#pragma pack(pop) - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWord.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWord.c deleted file mode 100644 index 1a34d63413..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWord.c +++ /dev/null @@ -1,236 +0,0 @@ -#define _WIN32_WINNT 0x0501 - -#include "GetWord.h" -#include "TextOutHook.h" - -TKnownWndClass GetWindowType(HWND WND, const char* WNDClass) -{ - const char* StrKnownClasses[] = { - "RICHEDIT20A", - "RICHEDIT20W", - "RICHEDIT", - "EDIT", - "INTERNET EXPLORER_SERVER", - "CONSOLEWINDOWCLASS", // NT - "TTYGRAB", // 9x - "VIRTUALCONSOLECLASS", // ConEmu - }; - TKnownWndClass KnownClasses[] = { - kwcRichEdit, - kwcRichEdit, - kwcRichEdit, - kwcMultiLineEdit, - kwcInternetExplorer_Server, - kwcConsole, - kwcConsole, - kwcConEmu, - }; - int i; - for (i=0; i<8; i++) { - if (_stricmp(WNDClass, StrKnownClasses[i])==0) - break; - } - if (i<8) { - if (KnownClasses[i] == kwcMultiLineEdit) { - if ((GetWindowLong(WND, GWL_STYLE) & ES_MULTILINE) == 0) - return kwcSingleLineEdit; - } - else if (KnownClasses[i] == kwcConEmu) { - HWND hConsole = (HWND)(DWORD_PTR)GetWindowLongPtr(WND, 0); - if (!hConsole || !IsWindow(hConsole)) - return kwcUnknown; - } - return KnownClasses[i]; - } else - return kwcUnknown; -} - -static BOOL Is_XP_And_Later() -{ - OSVERSIONINFO stOSVI; - BOOL bRet; - - memset(&stOSVI, 0, sizeof(OSVERSIONINFO)); - stOSVI.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - bRet = GetVersionEx(&stOSVI); - if (FALSE == bRet) return FALSE; - return (VER_PLATFORM_WIN32_NT == stOSVI.dwPlatformId && (5 < stOSVI.dwMajorVersion || (5 == stOSVI.dwMajorVersion && 1 <= stOSVI.dwMinorVersion))); -} - -static char* ExtractWordFromRichEditPos(HWND WND, POINT Pt, DWORD *BeginPos) -{ - return ExtractFromEverything(WND, Pt, BeginPos); -} - -static char* ExtractWordFromEditPos(HWND hEdit, POINT Pt, DWORD *BeginPos) -{ - return ExtractFromEverything(hEdit, Pt, BeginPos); -} - -static char* ExtractWordFromIE(HWND WND, POINT Pt, DWORD *BeginPos) -{ - return ExtractFromEverything(WND, Pt, BeginPos); -} - -typedef struct TConsoleParams { - HWND WND; - POINT Pt; - RECT ClientRect; - WCHAR Buffer[256]; - int BeginPos; -} TConsoleParams; - -static int GetWordFromConsolePack(TConsoleParams *params, BOOL *pInvalidConsole) -{ - int WordLen=0; - - *pInvalidConsole = TRUE; - - HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); - if (hStdOut != INVALID_HANDLE_VALUE && hStdOut != 0) { - CONSOLE_SCREEN_BUFFER_INFO csbi; - if (GetConsoleScreenBufferInfo(hStdOut, &csbi)) { - - *pInvalidConsole = FALSE; - - COORD CurPos; - CurPos.X = csbi.srWindow.Left + (SHORT)(params->Pt.x * (csbi.srWindow.Right - csbi.srWindow.Left + 1) / params->ClientRect.right); - CurPos.Y = csbi.srWindow.Top + (SHORT)(params->Pt.y * (csbi.srWindow.Bottom - csbi.srWindow.Top + 1) / params->ClientRect.bottom); - if ((CurPos.X >= 0) && (CurPos.X <= csbi.dwSize.X - 1) && (CurPos.Y >= 0) && (CurPos.Y <= csbi.dwSize.Y - 1)) { - int BegPos; - WCHAR *Buf; - - params->BeginPos = CurPos.X; - CurPos.X = 0; - Buf = GlobalAlloc(GMEM_FIXED, (csbi.dwSize.X + 1)*sizeof(WCHAR)); - if (Buf) { - DWORD ActualRead; - if ((ReadConsoleOutputCharacterW(hStdOut, Buf, csbi.dwSize.X, CurPos, &ActualRead)) && (ActualRead == (DWORD)csbi.dwSize.X)) { - BegPos=0; - WordLen=ActualRead; - if(WordLen>85) { - while(params->BeginPos-BegPos>43 && WordLen>85) { - BegPos++; WordLen--; - } - if(WordLen>85) WordLen=85; - params->BeginPos -= BegPos; - } - if(WordLen) { - memset(params->Buffer, 0, sizeof(params->Buffer)); - lstrcpynW(params->Buffer, Buf + BegPos, WordLen+1); - } - } - GlobalFree(Buf); - } - } - } - } - return WordLen; -} - -static char* GetWordFromConsole(HWND WND, POINT Pt, DWORD *BeginPos) -{ - TConsoleParams *TP; - DWORD pid; - DWORD WordSize; - char *Result; - BOOL invalidConsole; - - *BeginPos=0; - if((TP = malloc(sizeof(TConsoleParams))) == NULL) - return(NULL); - ZeroMemory(TP,sizeof(TConsoleParams)); - TP->WND = WND; - TP->Pt = Pt; - ScreenToClient(WND, &(TP->Pt)); - GetClientRect(WND, &(TP->ClientRect)); - -// GetWindowThreadProcessId(GetParent(WND), &pid); - GetWindowThreadProcessId(WND, &pid); - - if (pid != GetCurrentProcessId()) { - if(Is_XP_And_Later()) { - if(AttachConsole(pid)) { - WordSize = GetWordFromConsolePack(TP, &invalidConsole); - FreeConsole(); - } else { - WordSize = 0; - } - } else { - WordSize = 0; - } - } else { - WordSize = GetWordFromConsolePack(TP, &invalidConsole); - if( invalidConsole ) { - /* - Under Win 8.1 GetWindowThreadProcessId return current "conhost" process ID - instead of target window process ID. - We try to attach console to parent process. - */ - - if(Is_XP_And_Later()) { - if(AttachConsole( (DWORD)-1 )) { - WordSize = GetWordFromConsolePack(TP, &invalidConsole); - FreeConsole(); - } else { - WordSize = 0; - } - } else { - WordSize = 0; - } - } - } - - if (WordSize > 0 && WordSize <= 255) { - TEverythingParams CParams; - - ZeroMemory(&CParams, sizeof(CParams)); - CParams.Unicode=1; - CParams.BeginPos=TP->BeginPos; - CParams.WordLen=WordSize; - CopyMemory(CParams.MatchedWordW, TP->Buffer, WordSize * sizeof(wchar_t)); - ConvertToMatchedWordA(&CParams); - *BeginPos = CParams.BeginPos; - Result = _strdup(CParams.MatchedWordA); - - } else { - Result = NULL; - } - free(TP); - return Result; -} - -static char* GetWordFromConEmu(HWND WND, POINT Pt, DWORD *BeginPos) -{ - HWND hConsole = (HWND)(DWORD_PTR)GetWindowLongPtr(WND, 0); - if (!hConsole || !IsWindow(hConsole)) - return NULL; - - RECT rcConEmu; - if (!GetWindowRect(WND, &rcConEmu) || rcConEmu.right <= rcConEmu.left || rcConEmu.bottom <= rcConEmu.top) - return NULL; - RECT rcConsole; - if (!GetClientRect(hConsole, &rcConsole) || rcConsole.right <= rcConsole.left || rcConsole.bottom <= rcConsole.top) - return NULL; - - POINT ptReal = { (Pt.x - rcConEmu.left) * (rcConsole.right - rcConsole.left + 1) / ( rcConEmu.right - rcConEmu.left + 1), - (Pt.y - rcConEmu.top) * (rcConsole.bottom - rcConsole.top + 1 ) / (rcConEmu.bottom - rcConEmu.top + 1) }; - ClientToScreen(hConsole, &ptReal); - - return GetWordFromConsole(hConsole, ptReal, BeginPos); -} - -char* TryGetWordFromAnyWindow(TKnownWndClass WndType, HWND WND, POINT Pt, DWORD *BeginPos) -{ - typedef char* (*GetWordFunction_t)(HWND, POINT, DWORD*); - const GetWordFunction_t GetWordFunction[]= { - ExtractFromEverything, - ExtractWordFromRichEditPos, - ExtractWordFromEditPos, - ExtractWordFromEditPos, - ExtractWordFromIE, - GetWordFromConsole, - GetWordFromConEmu, - }; - return GetWordFunction[WndType](WND, Pt, BeginPos); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWord.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWord.h deleted file mode 100644 index ab677194c5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWord.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _GetWord_H_ -#define _GetWord_H_ - -#include - -typedef enum TKnownWndClass { - kwcUnknown, - kwcRichEdit, - kwcMultiLineEdit, - kwcSingleLineEdit, - kwcInternetExplorer_Server, - kwcConsole, - kwcConEmu, -} TKnownWndClass; - -TKnownWndClass GetWindowType(HWND WND, const char* WNDClass); -char* TryGetWordFromAnyWindow(TKnownWndClass WndType, HWND WND, POINT Pt, DWORD *BeginPos); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWordByIAccEx.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWordByIAccEx.c deleted file mode 100644 index 7e831d8d5b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWordByIAccEx.c +++ /dev/null @@ -1,106 +0,0 @@ -#include -#include -#include "ThTypes.h" -#include "IAccExInt.h" -#include "GetWordByIAccEx.h" - -GetPhysicalCursorPosFunc getPhysicalCursorPosFunc; - -BOOL FindGetPhysicalCursorPos() -{ -HMODULE hm; - getPhysicalCursorPosFunc = NULL; - hm = GetModuleHandle( "user32.dll" ); - if( hm != NULL ) { - getPhysicalCursorPosFunc = (GetPhysicalCursorPosFunc)GetProcAddress( hm, "GetPhysicalCursorPos" ); - } - return( getPhysicalCursorPosFunc != NULL ); -} - - -HRESULT GetParentAccessibleObject( IAccessible* pAcc, IAccessible** ppAccParent ) -{ -IDispatch* pDispatch = NULL; - - *ppAccParent = NULL; - if ( pAcc == NULL ) - return E_INVALIDARG; - HRESULT hr = pAcc->lpVtbl->get_accParent( pAcc, &pDispatch ); - if ( ( hr == S_OK ) && ( pDispatch != NULL ) ) { - hr = pDispatch->lpVtbl->QueryInterface( pDispatch, &IID_IAccessible, (void**)ppAccParent ); - pDispatch->lpVtbl->Release( pDispatch ); - } - return hr; -} - - -BOOL getWordByAccEx( POINT pt ) -{ -HRESULT hr; -IAccessible *pAcc, *pAccParent; -ITextProvider *pText; -ITextRangeProvider *pTextRange; -VARIANT var; -BSTR bstr = NULL; -int n; -UiaPoint upt; -POINT ppt = { 0, 0 }; - - if( getPhysicalCursorPosFunc != NULL ) { - getPhysicalCursorPosFunc( &ppt ); - } else { - ppt = pt; - } - - upt.x = ppt.x; - upt.y = ppt.y; - - pAcc = NULL; - hr = AccessibleObjectFromPoint( ppt, &pAcc, &var ); - - if( hr != S_OK || pAcc == NULL) { - VariantClear( &var ); - return FALSE; - } - - pText = NULL; - while( pAcc != NULL) { - hr = GetPatternFromIAccessible( pAcc, 0, UIA_TextPatternId, &IID_ITextProvider, (void **)&pText ); - if( hr == S_OK && pText != NULL ) - break; - pAccParent = NULL; - hr = GetParentAccessibleObject( pAcc, &pAccParent ); - pAcc->lpVtbl->Release( pAcc ); - pAcc = pAccParent; - } - if( pAcc == NULL ) - return FALSE; - - pAcc->lpVtbl->Release( pAcc ); - - pTextRange = NULL; - hr = pText->lpVtbl->RangeFromPoint( pText, upt, &pTextRange ); - if( hr != S_OK || pTextRange == NULL ) { - pText->lpVtbl->Release( pText ); - return FALSE; - } - - hr = pTextRange->lpVtbl->ExpandToEnclosingUnit( pTextRange, TextUnit_Word ); - if( hr == S_OK) { - bstr = NULL; - hr = pTextRange->lpVtbl->GetText( pTextRange, 255, &bstr ); - if (hr == S_OK) { - n = SysStringLen( bstr ); - if( n != 0 ) { - n = WideCharToMultiByte( CP_UTF8, 0, (LPCWSTR)bstr, n, GlobalData->CurMod.MatchedWord, sizeof( GlobalData->CurMod.MatchedWord ) - 1, NULL, NULL ); - GlobalData->CurMod.WordLen = n; - GlobalData->CurMod.MatchedWord[n] = 0; - } - SysFreeString( bstr ); - } - } - pTextRange->lpVtbl->Release( pTextRange ); - pText->lpVtbl->Release( pText ); - - return TRUE; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWordByIAccEx.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWordByIAccEx.h deleted file mode 100644 index ace0c8b77c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/GetWordByIAccEx.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __GetWordByIAccEx_H_DEFINED_ -#define __GetWordByIAccEx_H_DEFINED_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef BOOL (*GetPhysicalCursorPosFunc)(LPPOINT); -extern GetPhysicalCursorPosFunc getPhysicalCursorPosFunc; - -BOOL FindGetPhysicalCursorPos(); - -BOOL getWordByAccEx( POINT pt ); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/HookImportFunction.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/HookImportFunction.c deleted file mode 100644 index 3324e4194c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/HookImportFunction.c +++ /dev/null @@ -1,138 +0,0 @@ -#include "HookImportFunction.h" -#include - - -// These code come from: http://dev.csdn.net/article/2/2786.shtm -// I fixed a bug in it and improved it to hook all the modules of a program. - -#define MakePtr(cast, ptr, AddValue) (cast)((size_t)(ptr)+(size_t)(AddValue)) - -static PIMAGE_IMPORT_DESCRIPTOR GetNamedImportDescriptor(HMODULE hModule, LPCSTR szImportModule) -{ - PIMAGE_DOS_HEADER pDOSHeader; - PIMAGE_NT_HEADERS pNTHeader; - PIMAGE_IMPORT_DESCRIPTOR pImportDesc; - - if ((szImportModule == NULL) || (hModule == NULL)) - return NULL; - pDOSHeader = (PIMAGE_DOS_HEADER) hModule; - if (IsBadReadPtr(pDOSHeader, sizeof(IMAGE_DOS_HEADER)) || (pDOSHeader->e_magic != IMAGE_DOS_SIGNATURE)) { - return NULL; - } - pNTHeader = MakePtr(PIMAGE_NT_HEADERS, pDOSHeader, pDOSHeader->e_lfanew); - if (IsBadReadPtr(pNTHeader, sizeof(IMAGE_NT_HEADERS)) || (pNTHeader->Signature != IMAGE_NT_SIGNATURE)) - return NULL; - if (pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress == 0) - return NULL; - pImportDesc = MakePtr(PIMAGE_IMPORT_DESCRIPTOR, pDOSHeader, pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress); - while (pImportDesc->Name) { - PSTR szCurrMod = MakePtr(PSTR, pDOSHeader, pImportDesc->Name); -// if (_stricmp(szCurrMod, szImportModule) == 0) - if (lstrcmpi(szCurrMod, szImportModule) == 0) - break; - pImportDesc++; - } - if (pImportDesc->Name == (DWORD)0) - return NULL; - return pImportDesc; -} - -static BOOL IsNT() -{ - OSVERSIONINFO stOSVI; - BOOL bRet; - - memset(&stOSVI, 0, sizeof(OSVERSIONINFO)); - stOSVI.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - bRet = GetVersionEx(&stOSVI); - if (FALSE == bRet) return FALSE; - return (VER_PLATFORM_WIN32_NT == stOSVI.dwPlatformId); -} - -static BOOL HookImportFunction(HMODULE hModule, LPCSTR szImportModule, LPCSTR szFunc, PROC paHookFuncs, PROC* paOrigFuncs) -{ - PIMAGE_IMPORT_DESCRIPTOR pImportDesc; - PIMAGE_THUNK_DATA pOrigThunk; - PIMAGE_THUNK_DATA pRealThunk; - - if (!IsNT() && ((size_t)hModule >= 0x80000000)) - return FALSE; - pImportDesc = GetNamedImportDescriptor(hModule, szImportModule); - if (pImportDesc == NULL) - return FALSE; - pOrigThunk = MakePtr(PIMAGE_THUNK_DATA, hModule, pImportDesc->OriginalFirstThunk); - pRealThunk = MakePtr(PIMAGE_THUNK_DATA, hModule, pImportDesc->FirstThunk); - while (pOrigThunk->u1.Function) { - if (IMAGE_ORDINAL_FLAG != (pOrigThunk->u1.Ordinal & IMAGE_ORDINAL_FLAG)) { - PIMAGE_IMPORT_BY_NAME pByName = MakePtr(PIMAGE_IMPORT_BY_NAME, hModule, pOrigThunk->u1.AddressOfData); - BOOL bDoHook; - // When hook EditPlus, read pByName->Name[0] will case this dll terminate, so call IsBadReadPtr() here. - if (IsBadReadPtr(pByName, sizeof(IMAGE_IMPORT_BY_NAME))) { - pOrigThunk++; - pRealThunk++; - continue; - } - if ('\0' == pByName->Name[0]) { - pOrigThunk++; - pRealThunk++; - continue; - } - bDoHook = FALSE; -// if ((szFunc[0] == pByName->Name[0]) && (_strcmpi(szFunc, (char*)pByName->Name) == 0)) { - if ((szFunc[0] == pByName->Name[0]) && (lstrcmpi(szFunc, (char*)pByName->Name) == 0)) { - if (paHookFuncs) - bDoHook = TRUE; - } - if (bDoHook) { - MEMORY_BASIC_INFORMATION mbi_thunk; - DWORD dwOldProtect; - if( VirtualQuery(pRealThunk, &mbi_thunk, sizeof(MEMORY_BASIC_INFORMATION)) != sizeof(MEMORY_BASIC_INFORMATION)) - return FALSE; - if( !VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, PAGE_READWRITE, &mbi_thunk.Protect) ) - return FALSE; - if (paOrigFuncs) - *paOrigFuncs = (PROC)InterlockedExchangePointer((PVOID)&(pRealThunk->u1.Function), paHookFuncs); - else - InterlockedExchangePointer((PVOID)&(pRealThunk->u1.Function), paHookFuncs); - - VirtualProtect(mbi_thunk.BaseAddress, mbi_thunk.RegionSize, mbi_thunk.Protect, &dwOldProtect); - return TRUE; - } - } - pOrigThunk++; - pRealThunk++; - } - return FALSE; -} - -BOOL HookAPI(LPCSTR szImportModule, LPCSTR szFunc, PROC paHookFuncs, PROC* paOrigFuncs) -{ - HANDLE hSnapshot; - MODULEENTRY32 me; - BOOL bOk; - DWORD err; - - ZeroMemory(&me,sizeof(me)); - me.dwSize=sizeof(me); - - if ((szImportModule == NULL) || (szFunc == NULL)) { - return FALSE; - } - - do { - hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,0); - if(hSnapshot != INVALID_HANDLE_VALUE) break; - err = GetLastError(); - if(err == ERROR_BAD_LENGTH) Sleep(100); - } while(err == ERROR_BAD_LENGTH); - - if(hSnapshot == INVALID_HANDLE_VALUE) return FALSE; - - bOk = Module32First(hSnapshot, &me); - while (bOk) { - HookImportFunction(me.hModule, szImportModule, szFunc, paHookFuncs, paOrigFuncs); - bOk = Module32Next(hSnapshot, &me); - } - CloseHandle(hSnapshot); - return TRUE; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/HookImportFunction.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/HookImportFunction.h deleted file mode 100644 index a335aae819..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/HookImportFunction.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _HookImportFunction_H_ -#define _HookImportFunction_H_ - -#include - -BOOL HookAPI(LPCSTR szImportModule, LPCSTR szFunc, PROC paHookFuncs, PROC* paOrigFuncs); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/IAccEx.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/IAccEx.c deleted file mode 100644 index 5202198f0f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/IAccEx.c +++ /dev/null @@ -1,113 +0,0 @@ -#include -#include -#include "IAccExInt.h" - -const long UIA_InvokePatternId = 10000; -const long UIA_SelectionPatternId = 10001; -const long UIA_ValuePatternId = 10002; -const long UIA_RangeValuePatternId = 10003; -const long UIA_ScrollPatternId = 10004; -const long UIA_ExpandCollapsePatternId = 10005; -const long UIA_GridPatternId = 10006; -const long UIA_GridItemPatternId = 10007; -const long UIA_MultipleViewPatternId = 10008; -const long UIA_WindowPatternId = 10009; -const long UIA_SelectionItemPatternId = 10010; -const long UIA_DockPatternId = 10011; -const long UIA_TablePatternId = 10012; -const long UIA_TableItemPatternId = 10013; -const long UIA_TextPatternId = 10014; -const long UIA_TogglePatternId = 10015; -const long UIA_TransformPatternId = 10016; -const long UIA_ScrollItemPatternId = 10017; -const long UIA_LegacyIAccessiblePatternId = 10018; -const long UIA_ItemContainerPatternId = 10019; -const long UIA_VirtualizedItemPatternId = 10020; -const long UIA_SynchronizedInputPatternId = 10021; - -HRESULT GetIAccessibleExFromIAccessible( IAccessible *pAcc, long idChild, IAccessibleEx **ppaex ) -{ -*ppaex = NULL; -IAccessibleEx *paex; -IServiceProvider *pSp = NULL; -//char s[500]; - HRESULT hr = pAcc->lpVtbl->QueryInterface( pAcc, &IID_IServiceProvider, (void **)&pSp ); -/* - wsprintf(s,"GD:QueryInterface (IServiceProvider) return hr=%08X, ptr=%p\n", hr, pSp); - OutputDebugString(s); -*/ - if( hr != S_OK ) return hr; - if( pSp == NULL ) return E_NOINTERFACE; - - paex = NULL; - hr = pSp->lpVtbl->QueryService( pSp, &IID_IAccessibleEx, &IID_IAccessibleEx, (void **)&paex ); - pSp->lpVtbl->Release( pSp ); -/* - wsprintf(s,"GD:QueryService (IAccessibleEx) return hr=%08X, ptr=%p\n", hr, paex); - OutputDebugString(s); -*/ - if( hr != S_OK ) return hr; - if( paex == NULL ) return E_NOINTERFACE; - - if(idChild == CHILDID_SELF) { - *ppaex = paex; - } else { - IAccessibleEx *paexChild = NULL; - hr = paex->lpVtbl->GetObjectForChild( paex, idChild, &paexChild ); -/* - wsprintf(s,"GD: GetObjectForChild return hr=%08X, ptr=%p (ChildID=%i)\n", hr, paexChild, idChild); - OutputDebugString(s); -*/ - paex->lpVtbl->Release( paex ); - if( hr != S_OK ) return hr; - if(paexChild == NULL) return E_NOINTERFACE; - *ppaex = paexChild; - } - return S_OK; -} - -HRESULT GetIRawElementProviderFromIAccessible( IAccessible * pAcc, long idChild, IRawElementProviderSimple **ppEl ) -{ -*ppEl = NULL; -IAccessibleEx *paex; -//char s[500]; - HRESULT hr = GetIAccessibleExFromIAccessible( pAcc, idChild, &paex ); - if( hr != S_OK ) return hr; - - hr = paex->lpVtbl->QueryInterface( paex, &IID_IRawElementProviderSimple, (void **)ppEl ); -/* - wsprintf(s,"GD:QueryInterface (IRawElementProviderSimple) return hr=%08X, ptr=%p\n", hr, ppEl); - OutputDebugString(s); -*/ - paex->lpVtbl->Release( paex ); - return hr; -} - -HRESULT GetPatternFromIAccessible( IAccessible * pAcc, long idChild, PATTERNID patternId, REFIID iid, void **ppv ) -{ -IRawElementProviderSimple * pel; -//char s[500]; - HRESULT hr = GetIRawElementProviderFromIAccessible( pAcc, idChild, &pel ); - if( hr != S_OK ) return hr; - if( pel == NULL ) return E_NOINTERFACE; - - IUnknown * pPatternObject = NULL; - hr = pel->lpVtbl->GetPatternProvider( pel, patternId, &pPatternObject ); -/* - wsprintf(s,"GD:GetPatternProvider return hr=%08X, ptr=%p\n", hr, pPatternObject); - OutputDebugString(s); -*/ - pel->lpVtbl->Release( pel ); - if( hr != S_OK ) return hr; - if( pPatternObject == NULL ) return E_NOINTERFACE; - - *ppv = NULL; - hr = pPatternObject->lpVtbl->QueryInterface( pPatternObject, iid, ppv ); -/* - wsprintf(s,"GD:QueryInterface (TextPattern) return hr=%08X, ptr=%p\n", hr, ppv); - OutputDebugString(s); -*/ - pPatternObject->lpVtbl->Release( pPatternObject ); - if( *ppv == NULL ) return E_NOINTERFACE; - return hr; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/IAccExInt.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/IAccExInt.h deleted file mode 100644 index 0831c30105..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/IAccExInt.h +++ /dev/null @@ -1,171 +0,0 @@ -#ifndef __UIAUTO_HH_INCLUDED__ -#define __UIAUTO_HH_INCLUDED__ - -//#include -#include -#include -#include -#include - -#ifdef INTERFACE -#undef INTERFACE -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern const IID IID_IAccessibleEx; -extern const IID IID_IRawElementProviderSimple; -extern const IID IID_ITextProvider; -extern const IID IID_ITextRangeProvider; - -typedef int PROPERTYID; -typedef int PATTERNID; -typedef int TEXTATTRIBUTEID; - -typedef struct _UiaPoint -{ - double x; - double y; -} UiaPoint; - -typedef enum -{ - ProviderOptions_ClientSideProvider = 0x1, - ProviderOptions_ServerSideProvider = 0x2, - ProviderOptions_NonClientAreaProvider = 0x4, - ProviderOptions_OverrideProvider = 0x8, - ProviderOptions_ProviderOwnsSetFocus = 0x10, - ProviderOptions_UseComThreading = 0x20 -} ProviderOptions; - -typedef enum -{ - SupportedTextSelection_None = 0, - SupportedTextSelection_Single = 1, - SupportedTextSelection_Multiple = 2 -} SupportedTextSelection; - -typedef enum -{ - TextUnit_Character = 0, - TextUnit_Format = 1, - TextUnit_Word = 2, - TextUnit_Line = 3, - TextUnit_Paragraph = 4, - TextUnit_Page = 5, - TextUnit_Document = 6 -} TextUnit; - -typedef enum -{ - TextPatternRangeEndpoint_Start = 0, - TextPatternRangeEndpoint_End = 1 -} TextPatternRangeEndpoint; - -/* UIA_PatternIds */ -extern const long UIA_InvokePatternId; -extern const long UIA_SelectionPatternId; -extern const long UIA_ValuePatternId; -extern const long UIA_RangeValuePatternId; -extern const long UIA_ScrollPatternId; -extern const long UIA_ExpandCollapsePatternId; -extern const long UIA_GridPatternId; -extern const long UIA_GridItemPatternId; -extern const long UIA_MultipleViewPatternId; -extern const long UIA_WindowPatternId; -extern const long UIA_SelectionItemPatternId; -extern const long UIA_DockPatternId; -extern const long UIA_TablePatternId; -extern const long UIA_TableItemPatternId; -extern const long UIA_TextPatternId; -extern const long UIA_TogglePatternId; -extern const long UIA_TransformPatternId; -extern const long UIA_ScrollItemPatternId; -extern const long UIA_LegacyIAccessiblePatternId; -extern const long UIA_ItemContainerPatternId; -extern const long UIA_VirtualizedItemPatternId; -extern const long UIA_SynchronizedInputPatternId; - -#define INTERFACE IRawElementProviderSimple -DECLARE_INTERFACE_(IRawElementProviderSimple, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(get_ProviderOptions)(THIS_ ProviderOptions *) PURE; - STDMETHOD(GetPatternProvider)(THIS_ PATTERNID, IUnknown **) PURE; - STDMETHOD(GetPropertyValue)(THIS_ PROPERTYID, VARIANT *) PURE; - STDMETHOD(get_HostRawElementProvider)(THIS_ IRawElementProviderSimple **) PURE; -}; -#undef INTERFACE - -#define INTERFACE ITextRangeProvider -DECLARE_INTERFACE_(ITextRangeProvider, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(Clone)(THIS_ ITextRangeProvider **) PURE; - STDMETHOD(Compare)(THIS_ ITextRangeProvider *, BOOL *) PURE; - STDMETHOD(CompareEndpoints)(THIS_ TextPatternRangeEndpoint, ITextRangeProvider *, TextPatternRangeEndpoint, int *) PURE; - STDMETHOD(ExpandToEnclosingUnit)(THIS_ TextUnit) PURE; - STDMETHOD(FindAttribute)(THIS_ TEXTATTRIBUTEID, VARIANT, BOOL, ITextRangeProvider **) PURE; - STDMETHOD(FindText)(THIS_ BSTR, BOOL, BOOL, ITextRangeProvider **) PURE; - STDMETHOD(GetAttributeValue)(THIS_ TEXTATTRIBUTEID, VARIANT *) PURE; - STDMETHOD(GetBoundingRectangles)(THIS_ SAFEARRAY **) PURE; - STDMETHOD(GetEnclosingElement)(THIS_ IRawElementProviderSimple **) PURE; - STDMETHOD(GetText)(THIS_ int, BSTR *) PURE; - STDMETHOD(Move)(THIS_ TextUnit, int, int *) PURE; - STDMETHOD(MoveEndpointByUnit)(THIS_ TextPatternRangeEndpoint, TextUnit, int *) PURE; - STDMETHOD(MoveEndpointByRange)(THIS_ TextPatternRangeEndpoint, ITextRangeProvider *, TextPatternRangeEndpoint) PURE; - STDMETHOD(Select)(THIS) PURE; - STDMETHOD(AddToSelection)(THIS) PURE; - STDMETHOD(RemoveFromSelection)(THIS) PURE; - STDMETHOD(ScrollIntoView)(THIS_ BOOL) PURE; - STDMETHOD(GetChildren)(THIS_ SAFEARRAY **) PURE; -}; -#undef INTERFACE - -#define INTERFACE ITextProvider -DECLARE_INTERFACE_(ITextProvider, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(GetSelection)(THIS_ SAFEARRAY **) PURE; - STDMETHOD(GetVisibleRanges)(THIS_ SAFEARRAY **) PURE; - STDMETHOD(RangeFromChild)(THIS_ IRawElementProviderSimple *, ITextRangeProvider **) PURE; - STDMETHOD(RangeFromPoint)(THIS_ UiaPoint, ITextRangeProvider **pRetVal) PURE; - STDMETHOD(get_DocumentRange)(THIS_ ITextRangeProvider **) PURE; - STDMETHOD(get_SupportedTextSelection)(THIS_ SupportedTextSelection *) PURE; -}; -#undef INTERFACE - -#define INTERFACE IAccessibleEx -DECLARE_INTERFACE_(IAccessibleEx, IUnknown) -{ - STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; - STDMETHOD_(ULONG,AddRef)(THIS) PURE; - STDMETHOD_(ULONG,Release)(THIS) PURE; - - STDMETHOD(GetObjectForChild)(THIS_ long, IAccessibleEx **) PURE; - STDMETHOD(GetIAccessiblePair)(THIS_ IAccessible **, long *) PURE; - STDMETHOD(GetRuntimeId)(THIS_ SAFEARRAY **) PURE; - STDMETHOD(ConvertReturnedElement)(THIS_ IRawElementProviderSimple *, IAccessibleEx **) PURE; -}; -#undef INTERFACE - -HRESULT GetIAccessibleExFromIAccessible( IAccessible *pAcc, long idChild, IAccessibleEx **ppaex ); -HRESULT GetIRawElementProviderFromIAccessible( IAccessible * pAcc, long idChild, IRawElementProviderSimple **ppEl ); -HRESULT GetPatternFromIAccessible( IAccessible * pAcc, long idChild, PATTERNID patternId, REFIID iid, void **ppv ); - -#ifdef __cplusplus -} -#endif - -#endif // UIAUTO_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutHook.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutHook.c deleted file mode 100644 index 65363e0994..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutHook.c +++ /dev/null @@ -1,629 +0,0 @@ -/* - * February 2, 2009: Konstantin Isakov - * Support for ETO_GLYPH_INDEX in ExtTextOutW() function added. This makes - * Firefox 3 work. -*/ - -#define _WIN32_WINNT 0x0500 - -#include "TextOutHook.h" -#include "GetWord.h" -#include "HookImportFunction.h" - -typedef BOOL (WINAPI *TextOutANextHook_t)(HDC hdc, int nXStart, int nYStart, LPCSTR lpszString,int cbString); -typedef BOOL (WINAPI *TextOutWNextHook_t)(HDC hdc, int nXStart, int nYStart, LPCWSTR lpszString,int cbString); -typedef BOOL (WINAPI *ExtTextOutANextHook_t)(HDC hdc, int nXStart, int nYStart, UINT fuOptions, CONST RECT *lprc, LPCSTR lpszString, UINT cbString, CONST INT *lpDx); -typedef BOOL (WINAPI *ExtTextOutWNextHook_t)(HDC hdc, int nXStart, int nYStart, UINT fuOptions, CONST RECT *lprc, LPCWSTR lpszString, UINT cbString, CONST INT *lpDx); -#ifdef __WIN64 -TextOutANextHook_t TextOutANextHook __attribute__ ((aligned (8))) = NULL; -TextOutWNextHook_t TextOutWNextHook __attribute__ ((aligned (8))) = NULL; -ExtTextOutANextHook_t ExtTextOutANextHook __attribute__ ((aligned (8))) = NULL; -ExtTextOutWNextHook_t ExtTextOutWNextHook __attribute__ ((aligned (8))) = NULL; -#else -TextOutANextHook_t TextOutANextHook __attribute__ ((aligned (4))) = NULL; -TextOutWNextHook_t TextOutWNextHook __attribute__ ((aligned (4))) = NULL; -ExtTextOutANextHook_t ExtTextOutANextHook __attribute__ ((aligned (4))) = NULL; -ExtTextOutWNextHook_t ExtTextOutWNextHook __attribute__ ((aligned (4))) = NULL; -#endif - -#define HOOKS_NUM 4 - -TEverythingParams *CurParams = NULL; -HANDLE installEvent = 0; -volatile long hookCounts[HOOKS_NUM] __attribute__ ((aligned (4))) = { 0, 0, 0, 0 }; -CRITICAL_SECTION hookCS; - -void ConvertToMatchedWordA(TEverythingParams *TP) -{ - if (TP->WordLen > 0 && TP->WordLen < (int)sizeof(TP->MatchedWordA) && TP->BeginPos >= 0 && TP->BeginPos < (int)sizeof(TP->MatchedWordA)) { - int BeginPos; - int BufSize; - if (!TP->Unicode) { - BeginPos = TP->BeginPos; - if (BeginPos > 0) { - BufSize = sizeof(TP->MatchedWordW)/sizeof(TP->MatchedWordW[0]) - 1; - TP->BeginPos = MultiByteToWideChar(CP_ACP, 0, TP->MatchedWordA, BeginPos, TP->MatchedWordW, BufSize); - if (TP->BeginPos == 0) { - TP->WordLen=0; - TP->MatchedWordA[0] = '\0'; - return; - } - } - BufSize = sizeof(TP->MatchedWordW)/sizeof(TP->MatchedWordW[0]) - 1 - TP->BeginPos; - if(BufSize > 0) - TP->WordLen = MultiByteToWideChar(CP_ACP, 0, TP->MatchedWordA + BeginPos, TP->WordLen - BeginPos, TP->MatchedWordW + TP->BeginPos, BufSize); - else TP->WordLen = 0; - if (TP->WordLen == 0) { - TP->WordLen=TP->BeginPos; - TP->MatchedWordA[TP->WordLen] = '\0'; - return; - } - TP->WordLen += TP->BeginPos; - if(TP->WordLen >= (int)sizeof(TP->MatchedWordA)) TP->WordLen = sizeof(TP->MatchedWordA) - 1; - } - BeginPos = TP->BeginPos; - if (BeginPos > 0) { - wchar_t temp = TP->MatchedWordW[BeginPos]; - TP->MatchedWordW[BeginPos] = 0; - TP->BeginPos = WideCharToMultiByte(CP_UTF8, 0, TP->MatchedWordW, BeginPos + 1, TP->MatchedWordA, sizeof(TP->MatchedWordA) - 1, NULL, NULL); - TP->MatchedWordW[BeginPos] = temp; - TP->BeginPos--; - if (TP->BeginPos<=0) { - TP->WordLen=0; - TP->MatchedWordA[0] = '\0'; - return; - } else if (TP->BeginPos >= (int)sizeof(TP->MatchedWordA)-1) { - TP->WordLen=sizeof(TP->MatchedWordA)-1; - TP->MatchedWordA[sizeof(TP->MatchedWordA)-1] = '\0'; - return; - } - } - TP->MatchedWordW[TP->WordLen] = 0; - BufSize = sizeof(TP->MatchedWordA) - TP->BeginPos; - if( BufSize > 0) - TP->WordLen = WideCharToMultiByte(CP_UTF8, 0, TP->MatchedWordW + BeginPos, TP->WordLen - BeginPos + 1, TP->MatchedWordA + TP->BeginPos, BufSize, NULL, NULL); - else TP->WordLen = 0; - TP->WordLen--; - if (TP->WordLen<=0) { - TP->WordLen=TP->BeginPos; - TP->MatchedWordA[TP->WordLen] = '\0'; - return; - } - TP->WordLen += TP->BeginPos; - if(TP->WordLen >= (int)sizeof(TP->MatchedWordA)) TP->WordLen = sizeof(TP->MatchedWordA) - 1; - TP->MatchedWordA[TP->WordLen] = '\0'; - } else { - TP->WordLen = 0; - TP->MatchedWordA[0] = '\0'; - } -} - -static int MyCopyMemory(char *a, const char *b, int len) -{ - int count = 0; - int i; - for (i=0; ix) && (p->x<=rec.right) && (rec.top<=p->y) && (p->y<=rec.bottom)) { - ZeroMemory(&info, sizeof(info)); - info.cbSize = sizeof(info); - info.fMask = MIIM_STRING | MIIM_SUBMENU; - if( !GetMenuItemInfo(menu, i, TRUE, &info) ) - break; - if (info.cch > 0 && info.cch < 255) { - char buf[256]; - ZeroMemory(buf, sizeof(buf)); - info.cch += 1; - info.dwTypeData = buf; - info.fMask = MIIM_STRING | MIIM_SUBMENU; - if( GetMenuItemInfo(menu, i, TRUE, &info) ) { - if( info.cch > 255 ) - break; - CurParams->WordLen = info.cch; - CurParams->Unicode = FALSE; - CurParams->WordLen = MyCopyMemory(CurParams->MatchedWordA, buf, CurParams->WordLen + 1); - CurParams->BeginPos = 0; - } - } - break; - } - } -} - -static void GetWordTextOutHook (TEverythingParams *TP) -{ - EnterCriticalSection(&hookCS); - CurParams = TP; - ScreenToClient(TP->WND, &(TP->Pt)); - if (TP->Pt.y<0) { - char buffer[256]; - HMENU menu=NULL; - char buffer2[256]; - int n, n2; - ZeroMemory(buffer, sizeof(buffer)); - ZeroMemory(buffer2, sizeof(buffer2)); - - if( ( n = GetWindowText(TP->WND, buffer, sizeof(buffer)-1) ) > 0 ) { - SetWindowText(TP->WND, ""); - if ( ( n2 = GetWindowText(TP->WND, buffer2, sizeof(buffer2)-1) ) > 0 ) { // MDI window. - char *p = strstr(buffer, buffer2); - if (p) { - if (p == buffer) { // FWS_PREFIXTITLE - if( n > n2 && n - n2 < (int)sizeof( buffer ) ) - memmove( buffer, buffer + n2, n - n2 + 1 ); -// strncpy(buffer, buffer+strlen(buffer2), sizeof(buffer)-1); - } else { - *p = '\0'; - } - } - } - CurParams->Active = TRUE; - SetWindowText(TP->WND, buffer); - CurParams->Active = FALSE; - } - menu = GetMenu(TP->WND); - if (menu && IsMenu( menu ) ) { - ClientToScreen(TP->WND, &(TP->Pt)); - IterateThroughItems(TP->WND, menu, &(TP->Pt)); - } - } - else { - RECT UpdateRect; - GetClientRect(TP->WND, &UpdateRect); - UpdateRect.top = TP->Pt.y; - UpdateRect.bottom = TP->Pt.y + 1; - if(!GetUpdateRect(TP->WND, NULL, FALSE)) { - CurParams->Active = TRUE; - InvalidateRect(TP->WND, &UpdateRect, FALSE); - UpdateWindow(TP->WND); - CurParams->Active = FALSE; - } - } - CurParams = NULL; - LeaveCriticalSection(&hookCS); -} - -char* ExtractFromEverything(HWND WND, POINT Pt, DWORD *BeginPos) -{ - TEverythingParams CParams; - - ZeroMemory(&CParams, sizeof(CParams)); - CParams.WND = WND; - CParams.Pt = Pt; - GetWordTextOutHook(&CParams); - ConvertToMatchedWordA(&CParams); - *BeginPos = CParams.BeginPos; - if(CParams.WordLen>0) { - return _strdup(CParams.MatchedWordA); - } else { - return(NULL); - } -} - -static void IsInsidePointA(const HDC DC, int X, int Y, LPCSTR Str, int Count) -{ - SIZE Size; - if ((Count > 0) && GetTextExtentPoint32A(DC, Str, Count, &Size)) { - DWORD Flags = GetTextAlign(DC); - POINT Pt; - RECT Rect; - - if (Flags & TA_UPDATECP) { - GetCurrentPositionEx(DC, &Pt); - } else { - Pt.x = X; - Pt.y = Y; - } - if (Flags & TA_CENTER) { - Pt.x-=(Size.cx/2); - } else if (Flags & TA_RIGHT) { - Pt.x-=Size.cx; - } - if (Flags & TA_BASELINE) { - TEXTMETRIC tm; - GetTextMetricsA(DC, &tm); - Pt.y-=tm.tmAscent; - } else if (Flags & TA_BOTTOM) { - Pt.y-=Size.cy; - } - LPtoDP(DC, &Pt, 1); - - Rect.left = Pt.x; - Rect.right = Pt.x + Size.cx; - Rect.top = Pt.y; - Rect.bottom = Pt.y + Size.cy; - if (((Rect.left <= Rect.right) && (CurParams->Pt.x >= Rect.left) && (CurParams->Pt.x <= Rect.right)) || - ((Rect.left > Rect.right) && (CurParams->Pt.x <= Rect.left) && (CurParams->Pt.x >= Rect.right))) { - int BegPos; - int Shift = 0; - - //if (PtInRect(&Rect, CurParams->Pt)) { - CurParams->Active = !PtInRect(&Rect, CurParams->Pt); - //CurParams->Active = FALSE; - BegPos = (int)((abs((CurParams->Pt.x - Rect.left) / (Rect.right - Rect.left)) * (Count - 1)) + 0.5); - while ((BegPos < Count - 1) && GetTextExtentPoint32A(DC, Str, BegPos + 1, &Size) && (Size.cx < CurParams->Pt.x - Rect.left)) - BegPos++; - while ((BegPos >= 0) && GetTextExtentPoint32A(DC, Str, BegPos + 1, &Size) && (Size.cx > CurParams->Pt.x - Rect.left)) - BegPos--; - if (BegPos < Count - 1) - BegPos++; - if( Count > 255 ) { - Shift = BegPos - 127; - if( Shift <= 0 ) - Shift = 0; - else { - if( Shift > Count - 255 ) - Shift = Count - 255; - } - BegPos -= Shift; - Count -= Shift; - if( Count > 255 ) - Count = 255; - } - if (BegPos>255) BegPos=255; - CurParams->BeginPos = BegPos; - CurParams->WordLen = Count; - CurParams->Unicode = FALSE; - CopyMemory(CurParams->MatchedWordA, Str + Shift, CurParams->WordLen); - } - } -} - -static void IsInsidePointW(const HDC DC, int X, int Y, LPCWSTR Str, int Count) -{ - SIZE Size; - if ((Count > 0) && GetTextExtentPoint32W(DC, Str, Count, &Size)) { - DWORD Flags = GetTextAlign(DC); - POINT Pt; - RECT Rect; - - if (Flags & TA_UPDATECP) { - GetCurrentPositionEx(DC, &Pt); - } else { - Pt.x = X; - Pt.y = Y; - } - if (Flags & TA_CENTER) { - Pt.x-=(Size.cx/2); - } else if (Flags & TA_RIGHT) { - Pt.x-=Size.cx; - } - if (Flags & TA_BASELINE) { - TEXTMETRICW tm; - GetTextMetricsW(DC, &tm); - Pt.y-=tm.tmAscent; - } else if (Flags & TA_BOTTOM) { - Pt.y-=Size.cy; - } - LPtoDP(DC, &Pt, 1); - - Rect.left = Pt.x; - Rect.right = Pt.x + Size.cx; - Rect.top = Pt.y; - Rect.bottom = Pt.y + Size.cy; - // Bug: We don't check Pt.y here, as don't call PtInRect() directly, because - // in Title bar, Start Menu, IE, FireFox, Opera etc., the Rect.top and Rect.bottom will be wrong. - // I try to use GetDCOrgEx(DC, &Pt), but they are not normal HDC that Pt.x and Pt.y will equal to 0 in these cases. - // And use GetWindowRect() then get Rect.left and Rect.top is only useful on Title bar. - if (((Rect.left <= Rect.right) && (CurParams->Pt.x >= Rect.left) && (CurParams->Pt.x <= Rect.right)) || - ((Rect.left > Rect.right) && (CurParams->Pt.x <= Rect.left) && (CurParams->Pt.x >= Rect.right))) { - int BegPos; - int Shift = 0; - - //if (PtInRect(&Rect, CurParams->Pt)) { - CurParams->Active = !PtInRect(&Rect, CurParams->Pt); - //CurParams->Active = FALSE; - BegPos = (int)((abs((CurParams->Pt.x - Rect.left) / (Rect.right - Rect.left)) * (Count - 1)) + 0.5); - while ((BegPos < Count - 1) && GetTextExtentPoint32W(DC, Str, BegPos + 1, &Size) && (Size.cx < CurParams->Pt.x - Rect.left)) - BegPos++; - while ((BegPos >= 0) && GetTextExtentPoint32W(DC, Str, BegPos + 1, &Size) && (Size.cx > CurParams->Pt.x - Rect.left)) - BegPos--; - if (BegPos < Count - 1) - BegPos++; - if( Count > 255 ) { - Shift = BegPos - 127; - if( Shift <= 0 ) - Shift = 0; - else { - if( Shift > Count - 255 ) - Shift = Count - 255; - } - BegPos -= Shift; - Count -= Shift; - if( Count > 255 ) - Count = 255; - } - if (BegPos>255) BegPos=255; - CurParams->BeginPos = BegPos; - CurParams->WordLen = Count; - CurParams->Unicode = TRUE; - CopyMemory(CurParams->MatchedWordW, Str + Shift, CurParams->WordLen * sizeof(wchar_t)); - } - } -} - -BOOL WINAPI TextOutACallbackProc(HDC hdc, int nXStart, int nYStart, LPCSTR lpszString, int cbString) -{ -BOOL res = FALSE; - WaitForSingleObject(installEvent, INFINITE); - InterlockedIncrement(hookCounts + 0); - if(TryEnterCriticalSection(&hookCS)) { - if (CurParams && CurParams->Active) - IsInsidePointA(hdc, nXStart, nYStart, lpszString, cbString); - LeaveCriticalSection(&hookCS); - } - if(TextOutANextHook) - res = TextOutANextHook(hdc, nXStart, nYStart, lpszString, cbString); - InterlockedDecrement(hookCounts + 0); - return res; -} - -BOOL WINAPI TextOutWCallbackProc(HDC hdc, int nXStart, int nYStart, LPCWSTR lpszString, int cbString) -{ -BOOL res = FALSE; - WaitForSingleObject(installEvent, INFINITE); - InterlockedIncrement(hookCounts + 1); - if(TryEnterCriticalSection(&hookCS)) { - if (CurParams && CurParams->Active) - IsInsidePointW(hdc, nXStart, nYStart, lpszString, cbString); - LeaveCriticalSection(&hookCS); - } - if(TextOutWNextHook) - res = TextOutWNextHook(hdc, nXStart, nYStart, lpszString, cbString); - InterlockedDecrement(hookCounts + 1); - return res; -} - -BOOL WINAPI ExtTextOutACallbackProc(HDC hdc, int nXStart, int nYStart, UINT fuOptions, CONST RECT *lprc, LPCSTR lpszString, UINT cbString, CONST INT *lpDx) -{ -BOOL res = FALSE; - WaitForSingleObject(installEvent, INFINITE); - InterlockedIncrement(hookCounts + 2); - if(TryEnterCriticalSection(&hookCS)) { - if (CurParams && CurParams->Active) - IsInsidePointA(hdc, nXStart, nYStart, lpszString, cbString); - LeaveCriticalSection(&hookCS); - } - if(ExtTextOutANextHook) - res = ExtTextOutANextHook(hdc, nXStart, nYStart, fuOptions, lprc, lpszString, cbString, lpDx); - InterlockedDecrement(hookCounts + 2); - return res; -} - -BOOL WINAPI ExtTextOutWCallbackProc(HDC hdc, int nXStart, int nYStart, UINT fuOptions, CONST RECT *lprc, LPCWSTR lpszString, UINT cbString, CONST INT *lpDx) -{ -BOOL res = FALSE; - WaitForSingleObject(installEvent, INFINITE); - InterlockedIncrement(hookCounts + 3); - if(TryEnterCriticalSection(&hookCS)) { - if (CurParams && CurParams->Active) - { - if ( fuOptions & ETO_GLYPH_INDEX ) - { - LPGLYPHSET ranges = NULL; - WCHAR * allChars, * ptr, * restoredString = NULL; - WORD * allIndices; - unsigned x; - - // Here we have to decode glyph indices back to chars. We do this - // by tedious and ineffective iteration. - - x = GetFontUnicodeRanges( hdc, 0 ); - if(x != 0) ranges = malloc(x); - if(ranges == NULL) { - LeaveCriticalSection(&hookCS); - if(ExtTextOutWNextHook) - res = ExtTextOutWNextHook(hdc, nXStart, nYStart, fuOptions, lprc, lpszString, cbString, lpDx); - InterlockedDecrement(hookCounts + 3); - return res; - } - x = GetFontUnicodeRanges( hdc, ranges ); - if(x == 0) { - free(ranges); - LeaveCriticalSection(&hookCS); - if(ExtTextOutWNextHook) - res = ExtTextOutWNextHook(hdc, nXStart, nYStart, fuOptions, lprc, lpszString, cbString, lpDx); - InterlockedDecrement(hookCounts + 3); - return res; - } - - // Render up all available chars into one ridiculously big string - - allChars = malloc( ( ranges->cGlyphsSupported ) * sizeof( WCHAR ) ); - allIndices = malloc( ( ranges->cGlyphsSupported ) * sizeof( WORD ) ); - - if(allChars == NULL || allIndices == NULL) { - if(allChars != NULL) free(allChars); - if(allIndices != NULL) free(allIndices); - free(ranges); - LeaveCriticalSection(&hookCS); - if(ExtTextOutWNextHook) - res = ExtTextOutWNextHook(hdc, nXStart, nYStart, fuOptions, lprc, lpszString, cbString, lpDx); - InterlockedDecrement(hookCounts + 3); - return res; - } - - ptr = allChars; - - for( x = 0; x < ranges->cRanges; ++x ) { - WCHAR c = ranges->ranges[ x ].wcLow; - unsigned y = ranges->ranges[ x ].cGlyphs; - - while( y-- ) - *ptr++ = c++; - } - - // Amazing. Now get glyph indices for this one nice string. - - if(GetGlyphIndicesW(hdc, allChars, ranges->cGlyphsSupported, allIndices, GGI_MARK_NONEXISTING_GLYPHS) != GDI_ERROR) { - - // Fascinating. Now translate our original input string back into - // its readable form. - - restoredString = malloc( cbString * sizeof( WCHAR ) ); - - if(restoredString != NULL) { - for( x = 0; x < cbString; ++x ) { - unsigned y; - WORD idx = lpszString[ x ]; - - for( y = 0; y < ranges->cGlyphsSupported; ++y ) - if ( allIndices[ y ] == idx ) { - restoredString[ x ] = allChars[ y ]; - break; - } - if ( y == ranges->cGlyphsSupported ) { - // Not found - restoredString[ x ] = L'?'; - } - } - } - } - - // And we're done. - - free( allIndices ); - free( allChars ); - free( ranges ); - - if(restoredString != NULL) { - IsInsidePointW( hdc, nXStart, nYStart, restoredString, cbString ); - free( restoredString ); - } - } - else // fuOptions & ETO_GLYPH_INDEX - IsInsidePointW(hdc, nXStart, nYStart, lpszString, cbString); - } - - LeaveCriticalSection(&hookCS); - } - if(ExtTextOutWNextHook) - res = ExtTextOutWNextHook(hdc, nXStart, nYStart, fuOptions, lprc, lpszString, cbString, lpDx); - InterlockedDecrement(hookCounts + 3); - return res; -} - -void WaitForAllHooks() -{ -HANDLE hTimer; -LARGE_INTEGER waitTime; - waitTime.LowPart = 50000000; // 5 s - waitTime.HighPart = 0; - waitTime.QuadPart = -waitTime.QuadPart; // RelativeTime - hTimer = CreateWaitableTimer(NULL, TRUE, NULL); - if(hTimer) - SetWaitableTimer(hTimer, &waitTime, 0, NULL, NULL, FALSE); - - while((hookCounts[0] > 0 || hookCounts[1] > 0 || hookCounts[2] > 0 || hookCounts[3] > 0) && - (!hTimer || WaitForSingleObject(hTimer, 0) != WAIT_OBJECT_0)) { - SwitchToThread(); - } - if(hTimer) - CloseHandle(hTimer); -} - -static void InstallTextOutHooks() -{ - if (TextOutANextHook==NULL) - HookAPI("gdi32.dll", "TextOutA", (PROC)TextOutACallbackProc, (PROC*)&TextOutANextHook); - if (TextOutWNextHook==NULL) - HookAPI("gdi32.dll", "TextOutW", (PROC)TextOutWCallbackProc, (PROC*)&TextOutWNextHook); - if (ExtTextOutANextHook==NULL) - HookAPI("gdi32.dll", "ExtTextOutA", (PROC)ExtTextOutACallbackProc, (PROC*)&ExtTextOutANextHook); - if (ExtTextOutWNextHook==NULL) - HookAPI("gdi32.dll", "ExtTextOutW", (PROC)ExtTextOutWCallbackProc, (PROC*)&ExtTextOutWNextHook); - SetEvent(installEvent); -} - -static void UninstallTextOutHooks() -{ - if (TextOutANextHook) { - HookAPI("gdi32.dll", "TextOutA", (PROC)TextOutANextHook, NULL); -// TextOutANextHook=NULL; - } - if (TextOutWNextHook) { - HookAPI("gdi32.dll", "TextOutW", (PROC)TextOutWNextHook, NULL); -// TextOutWNextHook=NULL; - } - if (ExtTextOutANextHook) { - HookAPI("gdi32.dll", "ExtTextOutA", (PROC)ExtTextOutANextHook, NULL); -// ExtTextOutANextHook=NULL; - } - if (ExtTextOutWNextHook) { - HookAPI("gdi32.dll", "ExtTextOutW", (PROC)ExtTextOutWNextHook, NULL); -// ExtTextOutWNextHook=NULL; - } -} - -DLLIMPORT DWORD __gdGetWord (TCurrentMode *P) -{ - TCHAR wClassName[64]; - TKnownWndClass WndClass; - char *p; - - if (GetClassName(P->WND, wClassName, sizeof(wClassName) / sizeof(TCHAR))==0) - wClassName[0] = '\0'; - WndClass = GetWindowType(P->WND, wClassName); - p = TryGetWordFromAnyWindow(WndClass, P->WND, P->Pt, &(P->BeginPos)); - if (p) { - P->WordLen = strlen(p); - strcpy(P->MatchedWord, p); - free(p); - } else { - P->WordLen = 0; - } - if(WndClass == kwcConsole || WndClass == kwcConEmu) - return 1; - - return 0; -} - - -BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , - DWORD reason /* Reason this function is being called. */ , - LPVOID reserved /* Not used. */ ) -{ -(void) hInst; -(void) reserved; - switch (reason) - { - case DLL_PROCESS_ATTACH: - if((installEvent = CreateEvent(0, TRUE, FALSE, 0)) == 0) - return FALSE; - InitializeCriticalSection(&hookCS); - InstallTextOutHooks(); - break; - - case DLL_PROCESS_DETACH: - UninstallTextOutHooks(); - WaitForAllHooks(); - CloseHandle(installEvent); - DeleteCriticalSection(&hookCS); - break; - - case DLL_THREAD_ATTACH: - break; - - case DLL_THREAD_DETACH: - break; - } - - /* Returns TRUE on success, FALSE on failure */ - return TRUE; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutHook.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutHook.h deleted file mode 100644 index de5256bdb0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutHook.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _TextOutHook_H_ -#define _TextOutHook_H_ - -#if BUILDING_DLL -# define DLLIMPORT __declspec (dllexport) -#else /* Not BUILDING_DLL */ -# define DLLIMPORT __declspec (dllimport) -#endif /* Not BUILDING_DLL */ - -#include "ThTypes.h" - -typedef struct TEverythingParams { - HWND WND; - POINT Pt; - int Active; - int WordLen; - int Unicode; - int BeginPos; - char MatchedWordA[256]; - wchar_t MatchedWordW[256]; -} TEverythingParams; - -char* ExtractFromEverything(HWND WND, POINT Pt, DWORD *BeginPos); - -DLLIMPORT void GetWord (TCurrentMode *P); - -void ConvertToMatchedWordA(TEverythingParams *TP); - -#endif /* _TextOutHook_H_ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutSpy.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutSpy.c deleted file mode 100644 index 4b2f2afb65..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutSpy.c +++ /dev/null @@ -1,365 +0,0 @@ -#include -#include -#include "TextOutSpy.h" -#include "ThTypes.h" -#include "GDDataTranfer.h" -#include "GetWordByIAccEx.h" - -const int MOUSEOVER_INTERVAL = 300; -const int REQUEST_MESSAGE_INTERVAL = 500; -const int WM_MY_SHOW_TRANSLATION = WM_USER + 301; - -HINSTANCE g_hInstance = NULL; -HANDLE hSynhroMutex = 0; -HINSTANCE hGetWordLib = 0; -UINT_PTR TimerID = 0; -typedef DWORD (*GetWordProc_t)(TCurrentMode *); -GetWordProc_t GetWordProc = NULL; -GDDataStruct gds; -UINT uGdAskMessage; -WCHAR Buffer[256]; -DWORD ourProcessID, gdProcessID, winProcessID; - -static HWND GetWindowFromPoint(POINT pt) -{ -HWND WndParent,WndChild; - WndParent = WindowFromPoint(pt); - if(WndParent == NULL) return WndParent; - ScreenToClient(WndParent, &pt); - WndChild = RealChildWindowFromPoint(WndParent, pt); - if(WndChild == NULL) return WndParent; - return WndChild; -}; - -static void SendWordToServer() -{ -DWORD_PTR SendMsgAnswer; -DWORD flags; -LRESULT lr; - - if( !IsWindow( GlobalData->ServerWND ) ) - return; - - // Ask for needing to retrieve word - WPARAM = 1 - lr = SendMessageTimeout(GlobalData->ServerWND, WM_MY_SHOW_TRANSLATION, 1, 0, SMTO_ABORTIFHUNG, MOUSEOVER_INTERVAL, &SendMsgAnswer); - if( lr == 0 || SendMsgAnswer == 0) //No answer or no needing - return; - - flags = SendMsgAnswer; - - if (hGetWordLib == 0 && ( flags & GD_FLAG_METHOD_STANDARD ) ) { - hGetWordLib = LoadLibraryW(GlobalData->LibName); - if (hGetWordLib) { - GetWordProc = (GetWordProc_t)GetProcAddress(hGetWordLib, "__gdGetWord"); - } - else { - hGetWordLib = INVALID_HANDLE_VALUE; - } - } - - GlobalData->CurMod.MatchedWord[0] = 0; - GlobalData->CurMod.WordLen = 0; - GlobalData->CurMod.BeginPos = 0; - - if( ( flags & GD_FLAG_METHOD_GD_MESSAGE ) != 0 && uGdAskMessage != 0 ) { - int n; - gds.dwSize = sizeof(gds); - gds.cwData = Buffer; - gds.dwMaxLength = sizeof(Buffer) / sizeof(Buffer[0]); - Buffer[0] = 0; - gds.hWnd = GlobalData->LastWND; - gds.Pt = GlobalData->LastPt; - lr = SendMessageTimeout(gds.hWnd, uGdAskMessage, 0, (LPARAM)&gds, SMTO_ABORTIFHUNG, REQUEST_MESSAGE_INTERVAL, &SendMsgAnswer); - if(lr != 0 && SendMsgAnswer != 0) { - n = WideCharToMultiByte(CP_UTF8, 0, gds.cwData, lstrlenW(gds.cwData), GlobalData->CurMod.MatchedWord, sizeof(GlobalData->CurMod.MatchedWord) - 1, 0, 0); - GlobalData->CurMod.MatchedWord[n] = 0; - GlobalData->CurMod.WordLen = n; - GlobalData->CurMod.BeginPos = 0; - if(n > 0) { - if( IsWindow( GlobalData->ServerWND ) ) { -#ifdef __WIN64 - GlobalData32->LastWND = HandleToLong( GlobalData->LastWND ); - GlobalData32->CurMod.WordLen = n; - GlobalData32->CurMod.BeginPos = 0; - lstrcpyn( GlobalData32->CurMod.MatchedWord, GlobalData->CurMod.MatchedWord, sizeof( GlobalData32->CurMod.MatchedWord ) ); -#endif - SendMessageTimeout(GlobalData->ServerWND, WM_MY_SHOW_TRANSLATION, 0, 1, SMTO_ABORTIFHUNG, MOUSEOVER_INTERVAL, &SendMsgAnswer); - } - } - return; - } - } - - // Don't use other methods for GD own windows - if( winProcessID == gdProcessID ) - return; - - if( ( flags & GD_FLAG_METHOD_STANDARD ) != 0 && GetWordProc != 0 ) { - GlobalData->CurMod.WND = GlobalData->LastWND; - GlobalData->CurMod.Pt = GlobalData->LastPt; - - LPARAM lparam = GetWordProc(&(GlobalData->CurMod)); - // lparam == 0 - need to reverse RTL text, else don't reverse - - if (GlobalData->CurMod.WordLen > 0) { - if( IsWindow( GlobalData->ServerWND ) ) { -#ifdef __WIN64 - GlobalData32->LastWND = HandleToLong( GlobalData->LastWND ); - GlobalData32->CurMod.WordLen = GlobalData->CurMod.WordLen; - GlobalData32->CurMod.BeginPos = GlobalData->CurMod.BeginPos; - lstrcpyn( GlobalData32->CurMod.MatchedWord, GlobalData->CurMod.MatchedWord, sizeof( GlobalData32->CurMod.MatchedWord ) ); -#endif - SendMessageTimeout(GlobalData->ServerWND, WM_MY_SHOW_TRANSLATION, 0, lparam, SMTO_ABORTIFHUNG, MOUSEOVER_INTERVAL, &SendMsgAnswer); - } - return; - } - } - - if( ( flags & GD_FLAG_METHOD_IACCESSIBLEEX ) != 0 ) { - getWordByAccEx( GlobalData->LastPt ); - if (GlobalData->CurMod.WordLen > 0 ) { - if( IsWindow( GlobalData->ServerWND ) ) { -#ifdef __WIN64 - GlobalData32->LastWND = HandleToLong( GlobalData->LastWND ); - GlobalData32->CurMod.WordLen = GlobalData->CurMod.WordLen; - GlobalData32->CurMod.BeginPos = GlobalData->CurMod.BeginPos; - lstrcpyn( GlobalData32->CurMod.MatchedWord, GlobalData->CurMod.MatchedWord, sizeof( GlobalData32->CurMod.MatchedWord ) ); -#endif - SendMessageTimeout(GlobalData->ServerWND, WM_MY_SHOW_TRANSLATION, 0, 1, SMTO_ABORTIFHUNG, MOUSEOVER_INTERVAL, &SendMsgAnswer); - } - return; - } - } - - if( ( flags & GD_FLAG_METHOD_UI_AUTOMATION ) != 0 && IsWindow( GlobalData->ServerWND ) ) { -#ifdef __WIN64 - GlobalData32->CurMod.MatchedWord[0] = 0; - GlobalData32->CurMod.WordLen = 0; - GlobalData32->CurMod.BeginPos = 0; - GlobalData32->LastPt = GlobalData->LastPt; -#endif - PostMessage( GlobalData->ServerWND, WM_MY_SHOW_TRANSLATION, 0, 1 ); - } -} - -void CALLBACK TimerFunc(HWND hWnd,UINT nMsg,UINT_PTR nTimerid,DWORD dwTime) -{ -(void) hWnd; -(void) nMsg; -(void) dwTime; -DWORD wso; - wso = WaitForSingleObject(hSynhroMutex, 0); - if (wso == WAIT_OBJECT_0 || wso == WAIT_ABANDONED) { - KillTimer(0, nTimerid); - TimerID = 0; - while( 1 ) { - POINT curPt; - HWND targetWnd; - winProcessID = 0; - - if( !GetCursorPos( &curPt ) ) - break; - - if( GlobalData == NULL || GlobalData->LastPt.x != curPt.x || GlobalData->LastPt.y != curPt.y) - break; - - if( ( targetWnd = GetWindowFromPoint( curPt ) ) == NULL ) - break; - - if( GlobalData->LastWND != targetWnd ) - break; - - GetWindowThreadProcessId( targetWnd, &winProcessID ); - if( winProcessID != ourProcessID ) { - char className[64]; - if( !GetClassName( targetWnd, className, sizeof(className) ) ) - break; - if( lstrcmpi( className, "ConsoleWindowClass" ) != 0 ) - break; - } - - SendWordToServer(); - - break; - } - ReleaseMutex(hSynhroMutex); - } -} - -void HookProc( POINT *ppt ) -{ -HWND WND; -TCHAR wClassName[64]; -DWORD winProcessID; - WND = GetWindowFromPoint( *ppt ); - if(WND == NULL) return; - - if ( !GetClassName(WND, wClassName, sizeof(wClassName) / sizeof(TCHAR)) ) - return; - - GetWindowThreadProcessId( WND, &winProcessID ); - - if( winProcessID != ourProcessID && lstrcmpi( wClassName, _T("ConsoleWindowClass") ) != 0 ) - return; - - if(TimerID && ( GlobalData->LastPt.x != ppt->x || GlobalData->LastPt.y != ppt->y ) ) - { - KillTimer(0, TimerID); - TimerID = 0; - } - - const char* DisableClasses[] = { - "gdkWindowChild", - "gdkWindowTemp", - "Progman", - "WorkerW", - }; - int i; - for (i=0; i<4; i++) { - if (lstrcmp(wClassName, DisableClasses[i])==0) - break; - } - if (i<4) return; - - if(GlobalData->LastPt.x != ppt->x || GlobalData->LastPt.y != ppt->y || GlobalData->LastWND != WND ) - { - GlobalData->LastWND = WND; - GlobalData->LastPt = *ppt; - TimerID = SetTimer(0, TimerID, MOUSEOVER_INTERVAL, TimerFunc); - } -} - -#ifdef __WIN64 - -LRESULT CALLBACK GetMessageHookProc(int nCode, WPARAM wParam, LPARAM lParam) -{ -PMSG pMsg; -DWORD wso; - if( nCode == HC_ACTION && wParam == PM_REMOVE ) - { - pMsg = (PMSG)lParam; - if( pMsg && ( pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_NCMOUSEMOVE ) ) - { - wso = WaitForSingleObject(hSynhroMutex, 0); - if (wso == WAIT_OBJECT_0 || wso == WAIT_ABANDONED) - { - POINT pt; - pt.x = GET_X_LPARAM( pMsg->lParam ); - pt.y = GET_Y_LPARAM( pMsg->lParam ); - if( pMsg->message == WM_MOUSEMOVE && pMsg->hwnd != NULL ) - ClientToScreen( pMsg->hwnd, &pt ); - HookProc( &pt ); - ReleaseMutex(hSynhroMutex); - } - } - } - return CallNextHookEx(GlobalData->g_hHook, nCode, wParam, lParam); -} - -#else - -LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) -{ -DWORD wso; - if ( (nCode == HC_ACTION) && ((wParam == WM_MOUSEMOVE) || (wParam == WM_NCMOUSEMOVE)) ) { - wso = WaitForSingleObject(hSynhroMutex, 0); - if (wso == WAIT_OBJECT_0 || wso == WAIT_ABANDONED) { - HookProc( &(((PMOUSEHOOKSTRUCT)lParam)->pt) ); - ReleaseMutex(hSynhroMutex); - } - } - return CallNextHookEx(GlobalData->g_hHook, nCode, wParam, lParam); -} - -#endif - -DLLIMPORT void ActivateTextOutSpying (int Activate) -{ - // After call SetWindowsHookEx(), when you move mouse to a application's window, - // this dll will load into this application automatically. And it is unloaded - // after call UnhookWindowsHookEx(). - if(GlobalData == NULL) return; - if (Activate) { - if (GlobalData->g_hHook != NULL) return; -#ifdef __WIN64 - GlobalData->g_hHook = SetWindowsHookEx(WH_GETMESSAGE, GetMessageHookProc, g_hInstance, 0); -#else - GlobalData->g_hHook = SetWindowsHookEx(WH_MOUSE, MouseHookProc, g_hInstance, 0); -#endif - } - else { - if (GlobalData->g_hHook == NULL) return; - WaitForSingleObject(hSynhroMutex, 2000); - UnhookWindowsHookEx(GlobalData->g_hHook); - if (TimerID) { - KillTimer(0, TimerID); - TimerID=0; - } - ReleaseMutex(hSynhroMutex); - GlobalData->g_hHook = NULL; - } -} - - -BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , - DWORD reason /* Reason this function is being called. */ , - LPVOID reserved /* Not used. */ ) -{ -(void) reserved; - switch (reason) - { - case DLL_PROCESS_ATTACH: - g_hInstance = hInst; - ThTypes_Init(); -#ifdef __WIN64 - if( GlobalData == NULL || GlobalData32 == NULL ) { -#else - if( GlobalData == NULL ) { -#endif - ThTypes_End(); - return FALSE; - } - ourProcessID = GetCurrentProcessId(); - GetWindowThreadProcessId( GlobalData->ServerWND, &gdProcessID ); - if(hSynhroMutex==0) { - hSynhroMutex = CreateMutex(NULL, FALSE, "GoldenDictTextOutSpyMutex"); - if(hSynhroMutex==0) { - return(FALSE); - } - } - uGdAskMessage = RegisterWindowMessage(GD_MESSAGE_NAME); - FindGetPhysicalCursorPos(); - break; - - case DLL_PROCESS_DETACH: -// if(hSynhroMutex) WaitForSingleObject(hSynhroMutex, INFINITE); - if(hSynhroMutex) WaitForSingleObject(hSynhroMutex, 2000); - if (TimerID) { - KillTimer(0, TimerID); - TimerID=0; - } - if(hSynhroMutex) { - ReleaseMutex(hSynhroMutex); - CloseHandle(hSynhroMutex); - hSynhroMutex=0; - } - { - MSG msg ; - while (PeekMessage (&msg, 0, WM_TIMER, WM_TIMER, PM_REMOVE)); - } - if ( (hGetWordLib != 0) && (hGetWordLib != INVALID_HANDLE_VALUE) ) { - FreeLibrary(hGetWordLib); - } - ThTypes_End(); - break; - - case DLL_THREAD_ATTACH: - break; - - case DLL_THREAD_DETACH: - break; - } - - /* Returns TRUE on success, FALSE on failure */ - return TRUE; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutSpy.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutSpy.h deleted file mode 100644 index 347843d43d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/TextOutSpy.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _TextOutSpy_H_ -#define _TextOutSpy_H_ - -#if BUILDING_DLL -# define DLLIMPORT __declspec (dllexport) -#else /* Not BUILDING_DLL */ -# define DLLIMPORT __declspec (dllimport) -#endif /* Not BUILDING_DLL */ - - -DLLIMPORT void ActivateTextOutSpying (int Activate); - - -#endif /* _TextOutSpy_H_ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/ThTypes.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/ThTypes.c deleted file mode 100644 index a8d8b8b378..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/ThTypes.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "ThTypes.h" - -HANDLE MMFHandle = 0; -TGlobalDLLData *GlobalData = NULL; - -#ifdef __WIN64 -HANDLE MMFHandle32 = 0; -TGlobalDLLData32 *GlobalData32 = NULL; -LPCSTR SHARE_NAME32 = "GoldenDictTextOutHookSharedMem"; -LPCSTR SHARE_NAME = "GoldenDictTextOutHookSharedMem64"; -#else -LPCSTR SHARE_NAME = "GoldenDictTextOutHookSharedMem"; -#endif - -void ThTypes_Init() -{ - if (!MMFHandle) { - MMFHandle = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(TGlobalDLLData), SHARE_NAME); - } - if (!MMFHandle) { - MMFHandle = OpenFileMappingA(FILE_MAP_READ | FILE_MAP_WRITE, 0, SHARE_NAME); - } - if (!GlobalData && MMFHandle != NULL) - GlobalData = MapViewOfFile(MMFHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0); -#ifdef __WIN64 - if (!MMFHandle32) { - MMFHandle32 = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(TGlobalDLLData32), SHARE_NAME32); - } - if (!MMFHandle32) { - MMFHandle32 = OpenFileMappingA(FILE_MAP_READ | FILE_MAP_WRITE, 0, SHARE_NAME32); - } - if (!GlobalData32 && MMFHandle32 != NULL) - GlobalData32 = MapViewOfFile(MMFHandle32, FILE_MAP_ALL_ACCESS, 0, 0, 0); -#endif -} - -void ThTypes_End() -{ - if (GlobalData) { - UnmapViewOfFile(GlobalData); - GlobalData = NULL; - } - if (MMFHandle) { - CloseHandle(MMFHandle); - MMFHandle = 0; - } -#ifdef __WIN64 - if (GlobalData32) { - UnmapViewOfFile(GlobalData32); - GlobalData32 = NULL; - } - if (MMFHandle32) { - CloseHandle(MMFHandle32); - MMFHandle32 = 0; - } -#endif -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/ThTypes.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/ThTypes.h deleted file mode 100644 index 7ecb89c40c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/ThTypes.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef _ThTypes_H_ -#define _ThTypes_H_ - -#include - -#define GD_FLAG_METHOD_STANDARD 0x00000001 -#define GD_FLAG_METHOD_GD_MESSAGE 0x00000002 -#define GD_FLAG_METHOD_IACCESSIBLEEX 0x00000004 -#define GD_FLAG_METHOD_UI_AUTOMATION 0x00000008 - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#pragma pack(push,4) - -typedef struct TCurrentMode { - HWND WND; - POINT Pt; - DWORD WordLen; - char MatchedWord[256]; - DWORD BeginPos; -} TCurrentMode; - -typedef struct TGlobalDLLData { - HWND ServerWND; - HHOOK g_hHook; - HWND LastWND; - POINT LastPt; - TCurrentMode CurMod; - WCHAR LibName[256]; -} TGlobalDLLData; - -#pragma pack(pop) - -extern TGlobalDLLData *GlobalData; - -#ifdef __WIN64 - -#pragma pack(push,4) - -typedef struct TCurrentMode32 { - DWORD WND; - POINT Pt; - DWORD WordLen; - char MatchedWord[256]; - DWORD BeginPos; -} TCurrentMode32; - -typedef struct TGlobalDLLData32 { - DWORD ServerWND; - DWORD g_hHook; - DWORD LastWND; - POINT LastPt; - TCurrentMode32 CurMod; - WCHAR LibName[256]; -} TGlobalDLLData32; - -#pragma pack(pop) - -extern TGlobalDLLData32 *GlobalData32; - -#endif - -void ThTypes_Init(); -void ThTypes_End(); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/guids.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/guids.c deleted file mode 100644 index 0f613c2ed7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/guids.c +++ /dev/null @@ -1,8 +0,0 @@ -#define INITGUID -#include - -DEFINE_GUID(IID_IAccessibleEx, 0xf8b80ada, 0x2c44, 0x48d0, 0x89, 0xbe, 0x5f, 0xf2, 0x3c, 0x9c, 0xd8, 0x75); -DEFINE_GUID(IID_IRawElementProviderSimple, 0xd6dd68d1, 0x86fd, 0x4332, 0x86, 0x66, 0x9a, 0xbe, 0xde, 0xa2, 0xd2, 0x4c); -DEFINE_GUID(IID_ITextProvider, 0x3589c92c, 0x63f3, 0x4367, 0x99, 0xbb, 0xad, 0xa6, 0x53, 0xb7, 0x7c, 0xf2); -DEFINE_GUID(IID_ITextRangeProvider, 0x5347ad7b, 0xc355, 0x46f8, 0xaf, 0xf5, 0x90, 0x90, 0x33, 0x58, 0x2f, 0x63); - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/readme.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/readme.txt deleted file mode 100644 index 12b509c03c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/readme.txt +++ /dev/null @@ -1,9 +0,0 @@ -These files were taken straight from StarDict 3.0.1. They didn't seem to -bear any copyright notices, and as such, no new initial notices were added. -Some global ids were changed to make sure that StarDict and GoldenDict -wouldn't interfere with each other when running simultaneously. Also, -Firefox 3 was made to work by implementing ETO_GLYPH_INDEX in ExtTextOutW() -function. - -The Makefile is made for mingw32 compilation, and is completely separate -from the main program build. diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/x64hooks.c b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/x64hooks.c deleted file mode 100644 index 3641eb3f53..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mouseover_win32/x64hooks.c +++ /dev/null @@ -1,223 +0,0 @@ -#define UNICODE -#define _UNICODE - -#ifndef __WIN64 -#define _WIN32_WINNT 0x0600 -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include "thtypes.h" - -typedef void ( *ActivateSpyFn )( BOOL ); - -HANDLE hGDProcess; -UINT_PTR timerID; - -typedef BOOL WINAPI ( *QueryFullProcessImageNameWFunc)( HANDLE, DWORD, LPWSTR, PDWORD ); - -#ifndef PROCESS_QUERY_LIMITED_INFORMATION -#define PROCESS_QUERY_LIMITED_INFORMATION 0x1000 -#endif - -void CALLBACK TimerFunc(HWND hWnd,UINT nMsg,UINT_PTR nTimerID,DWORD dwTime) -{ -(void) hWnd; -(void) nMsg; -(void) dwTime; - if( nTimerID == timerID ) - { - DWORD wso = WaitForSingleObject( hGDProcess, 0 ); - if( wso == WAIT_OBJECT_0 || wso == WAIT_ABANDONED ) - PostThreadMessage( GetCurrentThreadId(), WM_QUIT, 0, 0 ); - } -} - - -BOOL parentIsGD() -{ -HANDLE hSnapshot; -PROCESSENTRY32 pe; -#ifdef __WIN64 -MODULEENTRY32 me; -HANDLE hModuleSnapshot; -#else -HMODULE hm; -#endif -DWORD procID; -BOOL b; - procID = GetCurrentProcessId(); - hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); - if( hSnapshot == INVALID_HANDLE_VALUE ) - return FALSE; - ZeroMemory( &pe, sizeof(pe) ); - pe.dwSize = sizeof(pe); - b = Process32First( hSnapshot, &pe ); - while(b) { - if( pe.th32ProcessID == procID ) { -#ifdef __WIN64 - hModuleSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, pe.th32ParentProcessID ); - if( hModuleSnapshot == INVALID_HANDLE_VALUE ) { - b = FALSE; - break; - } - ZeroMemory( &me, sizeof(me) ); - me.dwSize = sizeof(me); - b = Module32First( hModuleSnapshot, &me ); - if( b ) { - int n = lstrlen( me.szExePath ); - b = n >= 14 && lstrcmpi( me.szExePath + n - 14, _T("GoldenDict.exe") ) == 0; - } - CloseHandle( hModuleSnapshot ); - - if( b ) - hGDProcess = OpenProcess( SYNCHRONIZE, FALSE, pe.th32ParentProcessID ); -#else - WCHAR name[4096]; - DWORD dwSize = 4096; - QueryFullProcessImageNameWFunc queryFullProcessImageNameWFunc = NULL; - hm = GetModuleHandle( __TEXT("kernel32.dll")); - if ( hm != NULL ) - queryFullProcessImageNameWFunc = (QueryFullProcessImageNameWFunc)GetProcAddress( hm, "QueryFullProcessImageNameW" ); - if( queryFullProcessImageNameWFunc == NULL ) { - b = FALSE; - break; - } - hGDProcess = OpenProcess( SYNCHRONIZE | PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pe.th32ParentProcessID ); - b = hGDProcess != NULL; - if( b ) { - b = queryFullProcessImageNameWFunc( hGDProcess, 0, name, &dwSize ); - if( b ) { - b = dwSize >= 14 && lstrcmpiW( name + dwSize - 14, L"GoldenDict.exe" ) == 0; - } - } - if( !b && hGDProcess != NULL ) - { - CloseHandle( hGDProcess ); - hGDProcess = NULL; - } -#endif - break; - } - b = Process32Next( hSnapshot, &pe ); - } - CloseHandle( hSnapshot ); - return b; -} - -#ifdef __WIN64 -void SetLowLabelToGDSynchroObjects() -{ -// The LABEL_SECURITY_INFORMATION SDDL SACL to be set for low integrity -#define LOW_INTEGRITY_SDDL_SACL_W L"S:(ML;;NW;;;LW)" - PSECURITY_DESCRIPTOR pSD = NULL; - - PACL pSacl = NULL; // not allocated - BOOL fSaclPresent = FALSE; - BOOL fSaclDefaulted = FALSE; - LPCWSTR pwszMapFileName = L"GoldenDictTextOutHookSharedMem64"; - - if( ConvertStringSecurityDescriptorToSecurityDescriptorW( LOW_INTEGRITY_SDDL_SACL_W, 1 /* SDDL_REVISION_1 */, &pSD, NULL ) ) - { - if( GetSecurityDescriptorSacl(pSD, &fSaclPresent, &pSacl, &fSaclDefaulted)) - { -// Note that psidOwner, psidGroup, and pDacl are -// all NULL and set the new LABEL_SECURITY_INFORMATION - - SetNamedSecurityInfoW( (LPWSTR)pwszMapFileName, SE_KERNEL_OBJECT, LABEL_SECURITY_INFORMATION, NULL, NULL, NULL, pSacl); - - } - LocalFree(pSD); - } -} -#endif - -int APIENTRY WinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPSTR lpCmdLine, - int nCmdShow) -{ -(void) hInstance; -(void) hPrevInstance; -(void) lpCmdLine; -(void) nCmdShow; - -TCHAR dir[MAX_PATH], libName[MAX_PATH], *pch; -#ifdef __WIN64 -HWND hServerWnd; -#endif -ActivateSpyFn activateSpyFn = NULL; -HINSTANCE spyDll = NULL; -int ret = -1; -MSG msg; - - if( !parentIsGD() ) - return -1; - if( hGDProcess == NULL ) - return -1; - - while( 1 ) { - ThTypes_Init(); -#ifdef __WIN64 - if( GlobalData == NULL || GlobalData32 == NULL) - break; - hServerWnd = LongToHandle( GlobalData32->ServerWND ); -#else - if( GlobalData == NULL ) - break; -#endif - - GetModuleFileName( NULL, dir, MAX_PATH ); - pch = dir + lstrlen( dir ); - while( pch != dir && *pch != '\\' ) pch--; - *(pch + 1) = 0; - lstrcpy( libName, dir ); -#ifdef __WIN64 - lstrcat( libName, _T("GdTextOutSpy64.dll") ); - SetLowLabelToGDSynchroObjects(); - - memset( GlobalData, 0, sizeof( TGlobalDLLData ) ); - lstrcpy( GlobalData->LibName, dir ); - lstrcat( GlobalData->LibName, _T("GdTextOutHook64.dll") ); - - GlobalData->ServerWND = hServerWnd; -#else - lstrcat( libName, _T("GdTextOutSpy.dll") ); -#endif - - spyDll = LoadLibrary( libName ); - if ( spyDll ) - activateSpyFn = ( ActivateSpyFn ) GetProcAddress( spyDll, "ActivateTextOutSpying" ); - if( !activateSpyFn ) { - ret = -2; - break; - } - - timerID = SetTimer( 0, 0, 1000, TimerFunc ); - - activateSpyFn( TRUE ); - - while( GetMessage( &msg, 0, 0, 0 ) ) - DispatchMessage( &msg ); - - if( timerID ) - KillTimer( NULL, timerID); - - activateSpyFn( FALSE ); - - ret = 0; - break; - } - - CloseHandle( hGDProcess ); - if( spyDll ) - FreeLibrary( spyDll ); - ThTypes_End(); - return ret; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mruqmenu.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mruqmenu.cc deleted file mode 100644 index e505880fc5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mruqmenu.cc +++ /dev/null @@ -1,21 +0,0 @@ -#include "mruqmenu.hh" -#include - -MRUQMenu::MRUQMenu(const QString title, QWidget *parent): - QMenu(title,parent) -{ - installEventFilter(this); -} - -bool MRUQMenu::eventFilter(QObject *obj, QEvent *event) -{ - (void) obj; - if (event->type() == QEvent::KeyRelease){ - QKeyEvent *keyevent = static_cast(event); - if (keyevent->key() == Qt::Key_Control){ - emit ctrlReleased(); - return true; - } - } - return false; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mruqmenu.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mruqmenu.hh deleted file mode 100644 index c2cf6fff64..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mruqmenu.hh +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef MRUQMENU_HH -#define MRUQMENU_HH - -#include -#include - -//The only difference between this class and QMenu is that this class emits -//a signal when Ctrl button is released -class MRUQMenu: public QMenu -{ - Q_OBJECT - -public: - MRUQMenu(const QString title, QWidget *parent = 0); - -private: - bool eventFilter (QObject*, QEvent*); - - signals: - void ctrlReleased(); -}; - - - -#endif // MRUQMENU_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mutex.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mutex.cc deleted file mode 100644 index 7afe694829..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mutex.cc +++ /dev/null @@ -1,14 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "mutex.hh" - -Mutex::Lock::Lock( Mutex & m_ ): m( m_ ) -{ - m.lock(); -} - -Mutex::Lock::~Lock() -{ - m.unlock(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mutex.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/mutex.hh deleted file mode 100644 index 2b5f717c1c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/mutex.hh +++ /dev/null @@ -1,32 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __MUTEX_HH_INCLUDED__ -#define __MUTEX_HH_INCLUDED__ - -#include - -/// This provides a mutex class. As you can see, it's just a Qt one, but it -/// does provide the Lock class which doesn't seem to exist in Qt, and it does -/// provide some abstraction for dictionaries in case they are to be ported -/// away from Qt. -class Mutex: public QMutex -{ -public: - - /// Locks the given mutex on construction and unlocks on destruction - class Lock - { - Mutex & m; - - public: - - Lock( Mutex & ); - ~Lock(); - - private: - Lock( Lock const & ); - }; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/myInfo.plist b/office/misc/goldendict/files/goldendict-1.5.0-RC2/myInfo.plist deleted file mode 100644 index 6030258195..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/myInfo.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleIconFile - @ICON@ - CFBundlePackageType - APPL - CFBundleGetInfoString - @SHORT_VERSION@ - CFBundleSignature - @TYPEINFO@ - CFBundleExecutable - @EXECUTABLE@ - CFBundleShortVersionString - @SHORT_VERSION@ - CFBundleIdentifier - org.goldendict - NSPrincipalClass - NSApplication - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/GoldenDict-EnRuEn.nsi b/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/GoldenDict-EnRuEn.nsi deleted file mode 100644 index 078759436e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/GoldenDict-EnRuEn.nsi +++ /dev/null @@ -1,420 +0,0 @@ -!include "MUI2.nsh" - - Name "GoldenDict" - OutFile "GoldenDict-1.0.1-1-EnRuEn-Install.exe" - - InstallDir "$PROGRAMFILES\GoldenDict" - - RequestExecutionLevel admin - - SetCompressor /final lzma - -Var StartMenuFolder - -;-------------------------------- -;Interface Settings - - !define MUI_ABORTWARNING - -;-------------------------------- -;Pages - - !insertmacro MUI_PAGE_WELCOME - !insertmacro MUI_PAGE_LICENSE "LICENSE.txt" - !insertmacro MUI_PAGE_DIRECTORY - - !insertmacro MUI_PAGE_STARTMENU GDApplication $StartMenuFolder - - !insertmacro MUI_PAGE_INSTFILES - !insertmacro MUI_PAGE_FINISH - - !insertmacro MUI_UNPAGE_WELCOME - !insertmacro MUI_UNPAGE_CONFIRM - !insertmacro MUI_UNPAGE_INSTFILES - !insertmacro MUI_UNPAGE_FINISH - -;-------------------------------- -;Languages - - !insertmacro MUI_LANGUAGE "Russian" - !insertmacro MUI_LANGUAGE "English" ;first language is the default language - !insertmacro MUI_LANGUAGE "French" - !insertmacro MUI_LANGUAGE "German" - !insertmacro MUI_LANGUAGE "Spanish" - !insertmacro MUI_LANGUAGE "SpanishInternational" - !insertmacro MUI_LANGUAGE "SimpChinese" - !insertmacro MUI_LANGUAGE "TradChinese" - !insertmacro MUI_LANGUAGE "Japanese" - !insertmacro MUI_LANGUAGE "Korean" - !insertmacro MUI_LANGUAGE "Italian" - !insertmacro MUI_LANGUAGE "Dutch" - !insertmacro MUI_LANGUAGE "Danish" - !insertmacro MUI_LANGUAGE "Swedish" - !insertmacro MUI_LANGUAGE "Norwegian" - !insertmacro MUI_LANGUAGE "NorwegianNynorsk" - !insertmacro MUI_LANGUAGE "Finnish" - !insertmacro MUI_LANGUAGE "Greek" - !insertmacro MUI_LANGUAGE "Portuguese" - !insertmacro MUI_LANGUAGE "PortugueseBR" - !insertmacro MUI_LANGUAGE "Polish" - !insertmacro MUI_LANGUAGE "Ukrainian" - !insertmacro MUI_LANGUAGE "Czech" - !insertmacro MUI_LANGUAGE "Slovak" - !insertmacro MUI_LANGUAGE "Croatian" - !insertmacro MUI_LANGUAGE "Bulgarian" - !insertmacro MUI_LANGUAGE "Hungarian" - !insertmacro MUI_LANGUAGE "Thai" - !insertmacro MUI_LANGUAGE "Romanian" - !insertmacro MUI_LANGUAGE "Latvian" - !insertmacro MUI_LANGUAGE "Macedonian" - !insertmacro MUI_LANGUAGE "Estonian" - !insertmacro MUI_LANGUAGE "Turkish" - !insertmacro MUI_LANGUAGE "Lithuanian" - !insertmacro MUI_LANGUAGE "Slovenian" - !insertmacro MUI_LANGUAGE "Serbian" - !insertmacro MUI_LANGUAGE "SerbianLatin" - !insertmacro MUI_LANGUAGE "Arabic" - !insertmacro MUI_LANGUAGE "Farsi" - !insertmacro MUI_LANGUAGE "Hebrew" - !insertmacro MUI_LANGUAGE "Indonesian" - !insertmacro MUI_LANGUAGE "Mongolian" - !insertmacro MUI_LANGUAGE "Luxembourgish" - !insertmacro MUI_LANGUAGE "Albanian" - !insertmacro MUI_LANGUAGE "Breton" - !insertmacro MUI_LANGUAGE "Belarusian" - !insertmacro MUI_LANGUAGE "Icelandic" - !insertmacro MUI_LANGUAGE "Malay" - !insertmacro MUI_LANGUAGE "Bosnian" - !insertmacro MUI_LANGUAGE "Kurdish" - !insertmacro MUI_LANGUAGE "Irish" - !insertmacro MUI_LANGUAGE "Uzbek" - !insertmacro MUI_LANGUAGE "Galician" - !insertmacro MUI_LANGUAGE "Afrikaans" - !insertmacro MUI_LANGUAGE "Catalan" - !insertmacro MUI_LANGUAGE "Esperanto" - -;-------------------------------- -;Installer Sections - -Section - - SetOutPath "$INSTDIR" - - CreateDirectory $INSTDIR\imageformats - SetOutPath $INSTDIR\imageformats - File ..\release\imageformats\* - - CreateDirectory $INSTDIR\phonon_backend - SetOutPath $INSTDIR\phonon_backend - File ..\release\phonon_backend\* - - CreateDirectory $INSTDIR\locale - SetOutPath $INSTDIR\locale - File ..\release\locale\* - - CreateDirectory $INSTDIR\content - SetOutPath $INSTDIR\content - File ..\release\content\* - CreateDirectory $INSTDIR\content\morphology - SetOutPath $INSTDIR\content\morphology - File ..\release\content\morphology\* - - SetOutPath $INSTDIR - File ..\release\*.dll - File LICENSE.txt - File /oname=$INSTDIR\GoldenDict.exe ..\release\goldendict.exe - - WriteUninstaller "$INSTDIR\Uninstall.exe" - - !insertmacro MUI_STARTMENU_WRITE_BEGIN GDApplication - - CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\GoldenDict.lnk" "$INSTDIR\GoldenDict.exe" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - !insertmacro MUI_STARTMENU_WRITE_END - - - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GoldenDict" \ - "DisplayName" "GoldenDict" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GoldenDict" \ - "UninstallString" "$INSTDIR\Uninstall.exe" - -SectionEnd - -!define PROGRAM_NAME "GoldenDict" - -Function .onInit - - !insertmacro MUI_LANGDLL_DISPLAY - - ReadRegStr $R0 HKLM \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \ - "UninstallString" - StrCmp $R0 "" done - - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ - "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \ - previous version or `Cancel` to cancel this upgrade." \ - IDOK uninst - Abort - -;Run the uninstaller -uninst: - ClearErrors - ExecWait '$R0 /NODELCFG=1 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file - - IfErrors no_remove_uninstaller done - ;You can either use Delete /REBOOTOK in the uninstaller or add some code - ;here to remove the uninstaller. Use a registry key to check - ;whether the user has chosen to uninstall. If you are using an uninstaller - ;components page, make sure all sections are uninstalled. - no_remove_uninstaller: - -done: - -FunctionEnd - -;-------------------------------- -;Uninstaller Section - -!define WND_CLASS "QWidget" -!define WND_TITLE "GoldenDict" -!define TO_MS 2000 -!define SYNC_TERM 0x00100001 - -!include WinMessages.nsh - -LangString termMsg ${LANG_ENGLISH} "Installer cannot stop running ${WND_TITLE}.$\nDo you want to terminate process?" -LangString stopMsg ${LANG_ENGLISH} "Stopping ${WND_TITLE}" - -!macro TerminateApp - - Push $0 ; window handle - Push $1 - Push $2 ; process handle - DetailPrint "$(stopMsg)" - FindWindow $0 '${WND_CLASS}' '' - IntCmp $0 0 done - System::Call 'user32.dll::GetWindowThreadProcessId(i r0, *i .r1) i .r2' - System::Call 'kernel32.dll::OpenProcess(i ${SYNC_TERM}, i 0, i r1) i .r2' - SendMessage $0 ${WM_CLOSE} 0 0 /TIMEOUT=${TO_MS} - System::Call 'kernel32.dll::WaitForSingleObject(i r2, i ${TO_MS}) i .r1' - terminate: - System::Call 'kernel32.dll::TerminateProcess(i r2, i 0) i .r1' - close: - System::Call 'kernel32.dll::CloseHandle(i r2) i .r1' - ; Make sure all process files are released - Sleep 2000 - done: - Pop $2 - Pop $1 - Pop $0 - -!macroend - -Function un.StrStr -/*After this point: - ------------------------------------------ - $R0 = SubString (input) - $R1 = String (input) - $R2 = SubStringLen (temp) - $R3 = StrLen (temp) - $R4 = StartCharPos (temp) - $R5 = TempStr (temp)*/ - - ;Get input from user - Exch $R0 - Exch - Exch $R1 - Push $R2 - Push $R3 - Push $R4 - Push $R5 - - ;Get "String" and "SubString" length - StrLen $R2 $R0 - StrLen $R3 $R1 - ;Start "StartCharPos" counter - StrCpy $R4 0 - - ;Loop until "SubString" is found or "String" reaches its end - loop: - ;Remove everything before and after the searched part ("TempStr") - StrCpy $R5 $R1 $R2 $R4 - - ;Compare "TempStr" with "SubString" - StrCmp $R5 $R0 done - ;If not "SubString", this could be "String"'s end - IntCmp $R4 $R3 done 0 done - ;If not, continue the loop - IntOp $R4 $R4 + 1 - Goto loop - done: - -/*After this point: - ------------------------------------------ - $R0 = ResultVar (output)*/ - - ;Remove part before "SubString" on "String" (if there has one) - StrCpy $R0 $R1 `` $R4 - - ;Return output to user - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 -FunctionEnd - - ; GetParameters - ; input, none - ; output, top of stack (replaces, with e.g. whatever) - ; modifies no other variables. - -Function un.GetParameters - - Push $R0 - Push $R1 - Push $R2 - Push $R3 - - StrCpy $R2 1 - StrLen $R3 $CMDLINE - - ;Check for quote or space - StrCpy $R0 $CMDLINE $R2 - StrCmp $R0 '"' 0 +3 - StrCpy $R1 '"' - Goto loop - StrCpy $R1 " " - - loop: - IntOp $R2 $R2 + 1 - StrCpy $R0 $CMDLINE 1 $R2 - StrCmp $R0 $R1 get - StrCmp $R2 $R3 get - Goto loop - - get: - IntOp $R2 $R2 + 1 - StrCpy $R0 $CMDLINE 1 $R2 - StrCmp $R0 " " get - StrCpy $R0 $CMDLINE "" $R2 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -Function un.GetParameterValue - Exch $R0 ; get the top of the stack(default parameter) into R0 - Exch ; exchange the top of the stack(default) with - ; the second in the stack(parameter to search for) - Exch $R1 ; get the top of the stack(search parameter) into $R1 - - ;Preserve on the stack the registers used in this function - Push $R2 - Push $R3 - Push $R4 - Push $R5 - - Strlen $R2 $R1+2 ; store the length of the search string into R2 - - Call un.GetParameters ; get the command line parameters - Pop $R3 ; store the command line string in R3 - - # search for quoted search string - StrCpy $R5 '"' ; later on we want to search for a open quote - Push $R3 ; push the 'search in' string onto the stack - Push '"/$R1=' ; push the 'search for' - Call un.StrStr ; search for the quoted parameter value - Pop $R4 - StrCpy $R4 $R4 "" 1 ; skip over open quote character, "" means no maxlen - StrCmp $R4 "" "" next ; if we didn't find an empty string go to next - - # search for non-quoted search string - StrCpy $R5 ' ' ; later on we want to search for a space since we - ; didn't start with an open quote '"' we shouldn't - ; look for a close quote '"' - Push $R3 ; push the command line back on the stack for searching - Push '/$R1=' ; search for the non-quoted search string - Call un.StrStr - Pop $R4 - - ; $R4 now contains the parameter string starting at the search string, - ; if it was found -next: - StrCmp $R4 "" check_for_switch ; if we didn't find anything then look for - ; usage as a command line switch - # copy the value after /$R1= by using StrCpy with an offset of $R2, - # the length of '/OUTPUT=' - StrCpy $R0 $R4 "" $R2 ; copy commandline text beyond parameter into $R0 - # search for the next parameter so we can trim this extra text off - Push $R0 - Push $R5 ; search for either the first space ' ', or the first - ; quote '"' - ; if we found '"/output' then we want to find the - ; ending ", as in '"/output=somevalue"' - ; if we found '/output' then we want to find the first - ; space after '/output=somevalue' - Call un.StrStr ; search for the next parameter - Pop $R4 - StrCmp $R4 "" done ; if 'somevalue' is missing, we are done - StrLen $R4 $R4 ; get the length of 'somevalue' so we can copy this - ; text into our output buffer - StrCpy $R0 $R0 -$R4 ; using the length of the string beyond the value, - ; copy only the value into $R0 - goto done ; if we are in the parameter retrieval path skip over - ; the check for a command line switch - -; See if the parameter was specified as a command line switch, like '/output' -check_for_switch: - Push $R3 ; push the command line back on the stack for searching - Push '/$R1' ; search for the non-quoted search string - Call un.StrStr - Pop $R4 - StrCmp $R4 "" done ; if we didn't find anything then use the default - StrCpy $R0 "" ; otherwise copy in an empty string since we found the - ; parameter, just didn't find a value - -done: - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 ; put the value in $R0 at the top of the stack -FunctionEnd - -Section "Uninstall" - - !insertmacro TerminateApp - - Push "NODELCFG" ; push the search string onto the stack - Push "0" ; push a default value onto the stack - Call un.GetParameterValue - Pop $2 - - StrCmp $2 "1" skip_cfg - - MessageBox MB_YESNO "Delete all configuration data and index? This will save a lot of space, but at the expense of reconfiguring and reindexing everyting if GoldenDict is ever installed again." IDNO skip_cfg - - RMDir /r $APPDATA\GoldenDict - - skip_cfg: - - !insertmacro MUI_STARTMENU_GETFOLDER GDApplication $StartMenuFolder - -; This file is auto-generated - !include "uninst.nsh" - - Delete "$INSTDIR\Uninstall.exe" - - RMDir "$INSTDIR" - - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GoldenDict" - -SectionEnd diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/GoldenDict.nsi b/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/GoldenDict.nsi deleted file mode 100644 index 6afb17956a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/GoldenDict.nsi +++ /dev/null @@ -1,424 +0,0 @@ -!include "MUI2.nsh" - - Name "GoldenDict" - OutFile "GoldenDict-1.5.0-Install.exe" - - InstallDir "$PROGRAMFILES\GoldenDict" - - RequestExecutionLevel admin - - SetCompressor /final lzma - -Var StartMenuFolder - -;-------------------------------- -;Interface Settings - - !define MUI_ABORTWARNING - -;-------------------------------- -;Pages - - !insertmacro MUI_PAGE_WELCOME - !insertmacro MUI_PAGE_LICENSE "../LICENSE.txt" - !insertmacro MUI_PAGE_DIRECTORY - - !insertmacro MUI_PAGE_STARTMENU GDApplication $StartMenuFolder - - !insertmacro MUI_PAGE_INSTFILES - !insertmacro MUI_PAGE_FINISH - - !insertmacro MUI_UNPAGE_WELCOME - !insertmacro MUI_UNPAGE_CONFIRM - !insertmacro MUI_UNPAGE_INSTFILES - !insertmacro MUI_UNPAGE_FINISH - -;-------------------------------- -;Languages - - !insertmacro MUI_LANGUAGE "English" ;first language is the default language - !insertmacro MUI_LANGUAGE "French" - !insertmacro MUI_LANGUAGE "German" - !insertmacro MUI_LANGUAGE "Spanish" - !insertmacro MUI_LANGUAGE "SpanishInternational" - !insertmacro MUI_LANGUAGE "SimpChinese" - !insertmacro MUI_LANGUAGE "TradChinese" - !insertmacro MUI_LANGUAGE "Japanese" - !insertmacro MUI_LANGUAGE "Korean" - !insertmacro MUI_LANGUAGE "Italian" - !insertmacro MUI_LANGUAGE "Dutch" - !insertmacro MUI_LANGUAGE "Danish" - !insertmacro MUI_LANGUAGE "Swedish" - !insertmacro MUI_LANGUAGE "Norwegian" - !insertmacro MUI_LANGUAGE "NorwegianNynorsk" - !insertmacro MUI_LANGUAGE "Finnish" - !insertmacro MUI_LANGUAGE "Greek" - !insertmacro MUI_LANGUAGE "Russian" - !insertmacro MUI_LANGUAGE "Portuguese" - !insertmacro MUI_LANGUAGE "PortugueseBR" - !insertmacro MUI_LANGUAGE "Polish" - !insertmacro MUI_LANGUAGE "Ukrainian" - !insertmacro MUI_LANGUAGE "Czech" - !insertmacro MUI_LANGUAGE "Slovak" - !insertmacro MUI_LANGUAGE "Croatian" - !insertmacro MUI_LANGUAGE "Bulgarian" - !insertmacro MUI_LANGUAGE "Hungarian" - !insertmacro MUI_LANGUAGE "Thai" - !insertmacro MUI_LANGUAGE "Romanian" - !insertmacro MUI_LANGUAGE "Latvian" - !insertmacro MUI_LANGUAGE "Macedonian" - !insertmacro MUI_LANGUAGE "Estonian" - !insertmacro MUI_LANGUAGE "Turkish" - !insertmacro MUI_LANGUAGE "Lithuanian" - !insertmacro MUI_LANGUAGE "Slovenian" - !insertmacro MUI_LANGUAGE "Serbian" - !insertmacro MUI_LANGUAGE "SerbianLatin" - !insertmacro MUI_LANGUAGE "Arabic" - !insertmacro MUI_LANGUAGE "Farsi" - !insertmacro MUI_LANGUAGE "Hebrew" - !insertmacro MUI_LANGUAGE "Indonesian" - !insertmacro MUI_LANGUAGE "Mongolian" - !insertmacro MUI_LANGUAGE "Luxembourgish" - !insertmacro MUI_LANGUAGE "Albanian" - !insertmacro MUI_LANGUAGE "Breton" - !insertmacro MUI_LANGUAGE "Belarusian" - !insertmacro MUI_LANGUAGE "Icelandic" - !insertmacro MUI_LANGUAGE "Malay" - !insertmacro MUI_LANGUAGE "Bosnian" - !insertmacro MUI_LANGUAGE "Kurdish" - !insertmacro MUI_LANGUAGE "Irish" - !insertmacro MUI_LANGUAGE "Uzbek" - !insertmacro MUI_LANGUAGE "Galician" - !insertmacro MUI_LANGUAGE "Afrikaans" - !insertmacro MUI_LANGUAGE "Catalan" - !insertmacro MUI_LANGUAGE "Esperanto" - -;-------------------------------- -;Installer Sections - -Section - - SetOutPath "$INSTDIR" - - CreateDirectory $INSTDIR\imageformats - SetOutPath $INSTDIR\imageformats - File ..\imageformats\* - - CreateDirectory $INSTDIR\codecs - SetOutPath $INSTDIR\codecs - File ..\codecs\* - - CreateDirectory $INSTDIR\x64 - SetOutPath $INSTDIR\x64 - File ..\x64\* - - CreateDirectory $INSTDIR\locale - SetOutPath $INSTDIR\locale - File ..\locale\* - - CreateDirectory $INSTDIR\content - CreateDirectory $INSTDIR\content\morphology - SetOutPath $INSTDIR\content\morphology - File ..\content\morphology\* - - SetOutPath $INSTDIR - File ..\*.dll - File ..\LICENSE.txt - File /oname=$INSTDIR\GoldenDict.exe ..\goldendict.exe - - WriteUninstaller "$INSTDIR\Uninstall.exe" - - !insertmacro MUI_STARTMENU_WRITE_BEGIN GDApplication - - SetShellVarContext all - CreateDirectory "$SMPROGRAMS\$StartMenuFolder" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\GoldenDict.lnk" "$INSTDIR\GoldenDict.exe" - CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" - !insertmacro MUI_STARTMENU_WRITE_END - - - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GoldenDict" \ - "DisplayName" "GoldenDict" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GoldenDict" \ - "UninstallString" "$INSTDIR\Uninstall.exe" - -SectionEnd - -!define PROGRAM_NAME "GoldenDict" - -Function .onInit - - !insertmacro MUI_LANGDLL_DISPLAY - - ReadRegStr $R0 HKLM \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROGRAM_NAME}" \ - "UninstallString" - StrCmp $R0 "" done - - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ - "${PROGRAM_NAME} is already installed. $\n$\nClick `OK` to remove the \ - previous version or `Cancel` to cancel this upgrade." \ - IDOK uninst - Abort - -;Run the uninstaller -uninst: - ClearErrors - ExecWait '$R0 /NODELCFG=1 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file - - IfErrors no_remove_uninstaller done - ;You can either use Delete /REBOOTOK in the uninstaller or add some code - ;here to remove the uninstaller. Use a registry key to check - ;whether the user has chosen to uninstall. If you are using an uninstaller - ;components page, make sure all sections are uninstalled. - no_remove_uninstaller: - -done: - -FunctionEnd - -;-------------------------------- -;Uninstaller Section - -!define WND_CLASS "QWidget" -!define WND_TITLE "GoldenDict" -!define TO_MS 2000 -!define SYNC_TERM 0x00100001 - -!include WinMessages.nsh - -LangString termMsg ${LANG_ENGLISH} "Installer cannot stop running ${WND_TITLE}.$\nDo you want to terminate process?" -LangString stopMsg ${LANG_ENGLISH} "Stopping ${WND_TITLE}" - -!macro TerminateApp - - Push $0 ; window handle - Push $1 - Push $2 ; process handle - DetailPrint "$(stopMsg)" - FindWindow $0 '${WND_CLASS}' '' - IntCmp $0 0 done - System::Call 'user32.dll::GetWindowThreadProcessId(i r0, *i .r1) i .r2' - System::Call 'kernel32.dll::OpenProcess(i ${SYNC_TERM}, i 0, i r1) i .r2' - SendMessage $0 ${WM_CLOSE} 0 0 /TIMEOUT=${TO_MS} - System::Call 'kernel32.dll::WaitForSingleObject(i r2, i ${TO_MS}) i .r1' - terminate: - System::Call 'kernel32.dll::TerminateProcess(i r2, i 0) i .r1' - close: - System::Call 'kernel32.dll::CloseHandle(i r2) i .r1' - ; Make sure all process files are released - Sleep 2000 - done: - Pop $2 - Pop $1 - Pop $0 - -!macroend - -Function un.StrStr -/*After this point: - ------------------------------------------ - $R0 = SubString (input) - $R1 = String (input) - $R2 = SubStringLen (temp) - $R3 = StrLen (temp) - $R4 = StartCharPos (temp) - $R5 = TempStr (temp)*/ - - ;Get input from user - Exch $R0 - Exch - Exch $R1 - Push $R2 - Push $R3 - Push $R4 - Push $R5 - - ;Get "String" and "SubString" length - StrLen $R2 $R0 - StrLen $R3 $R1 - ;Start "StartCharPos" counter - StrCpy $R4 0 - - ;Loop until "SubString" is found or "String" reaches its end - loop: - ;Remove everything before and after the searched part ("TempStr") - StrCpy $R5 $R1 $R2 $R4 - - ;Compare "TempStr" with "SubString" - StrCmp $R5 $R0 done - ;If not "SubString", this could be "String"'s end - IntCmp $R4 $R3 done 0 done - ;If not, continue the loop - IntOp $R4 $R4 + 1 - Goto loop - done: - -/*After this point: - ------------------------------------------ - $R0 = ResultVar (output)*/ - - ;Remove part before "SubString" on "String" (if there has one) - StrCpy $R0 $R1 `` $R4 - - ;Return output to user - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 -FunctionEnd - - ; GetParameters - ; input, none - ; output, top of stack (replaces, with e.g. whatever) - ; modifies no other variables. - -Function un.GetParameters - - Push $R0 - Push $R1 - Push $R2 - Push $R3 - - StrCpy $R2 1 - StrLen $R3 $CMDLINE - - ;Check for quote or space - StrCpy $R0 $CMDLINE $R2 - StrCmp $R0 '"' 0 +3 - StrCpy $R1 '"' - Goto loop - StrCpy $R1 " " - - loop: - IntOp $R2 $R2 + 1 - StrCpy $R0 $CMDLINE 1 $R2 - StrCmp $R0 $R1 get - StrCmp $R2 $R3 get - Goto loop - - get: - IntOp $R2 $R2 + 1 - StrCpy $R0 $CMDLINE 1 $R2 - StrCmp $R0 " " get - StrCpy $R0 $CMDLINE "" $R2 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -Function un.GetParameterValue - Exch $R0 ; get the top of the stack(default parameter) into R0 - Exch ; exchange the top of the stack(default) with - ; the second in the stack(parameter to search for) - Exch $R1 ; get the top of the stack(search parameter) into $R1 - - ;Preserve on the stack the registers used in this function - Push $R2 - Push $R3 - Push $R4 - Push $R5 - - Strlen $R2 $R1+2 ; store the length of the search string into R2 - - Call un.GetParameters ; get the command line parameters - Pop $R3 ; store the command line string in R3 - - # search for quoted search string - StrCpy $R5 '"' ; later on we want to search for a open quote - Push $R3 ; push the 'search in' string onto the stack - Push '"/$R1=' ; push the 'search for' - Call un.StrStr ; search for the quoted parameter value - Pop $R4 - StrCpy $R4 $R4 "" 1 ; skip over open quote character, "" means no maxlen - StrCmp $R4 "" "" next ; if we didn't find an empty string go to next - - # search for non-quoted search string - StrCpy $R5 ' ' ; later on we want to search for a space since we - ; didn't start with an open quote '"' we shouldn't - ; look for a close quote '"' - Push $R3 ; push the command line back on the stack for searching - Push '/$R1=' ; search for the non-quoted search string - Call un.StrStr - Pop $R4 - - ; $R4 now contains the parameter string starting at the search string, - ; if it was found -next: - StrCmp $R4 "" check_for_switch ; if we didn't find anything then look for - ; usage as a command line switch - # copy the value after /$R1= by using StrCpy with an offset of $R2, - # the length of '/OUTPUT=' - StrCpy $R0 $R4 "" $R2 ; copy commandline text beyond parameter into $R0 - # search for the next parameter so we can trim this extra text off - Push $R0 - Push $R5 ; search for either the first space ' ', or the first - ; quote '"' - ; if we found '"/output' then we want to find the - ; ending ", as in '"/output=somevalue"' - ; if we found '/output' then we want to find the first - ; space after '/output=somevalue' - Call un.StrStr ; search for the next parameter - Pop $R4 - StrCmp $R4 "" done ; if 'somevalue' is missing, we are done - StrLen $R4 $R4 ; get the length of 'somevalue' so we can copy this - ; text into our output buffer - StrCpy $R0 $R0 -$R4 ; using the length of the string beyond the value, - ; copy only the value into $R0 - goto done ; if we are in the parameter retrieval path skip over - ; the check for a command line switch - -; See if the parameter was specified as a command line switch, like '/output' -check_for_switch: - Push $R3 ; push the command line back on the stack for searching - Push '/$R1' ; search for the non-quoted search string - Call un.StrStr - Pop $R4 - StrCmp $R4 "" done ; if we didn't find anything then use the default - StrCpy $R0 "" ; otherwise copy in an empty string since we found the - ; parameter, just didn't find a value - -done: - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 ; put the value in $R0 at the top of the stack -FunctionEnd - -Section "Uninstall" - - !insertmacro TerminateApp - - Push "NODELCFG" ; push the search string onto the stack - Push "0" ; push a default value onto the stack - Call un.GetParameterValue - Pop $2 - - StrCmp $2 "1" skip_cfg - - MessageBox MB_YESNO "Delete all configuration data and index? This will save a lot of space, but at the expense of reconfiguring and reindexing everyting if GoldenDict is ever installed again." IDNO skip_cfg - - RMDir /r $APPDATA\GoldenDict - - skip_cfg: - - SetShellVarContext all - !insertmacro MUI_STARTMENU_GETFOLDER GDApplication $StartMenuFolder - -; This file is auto-generated - !include "uninst.nsh" - - Delete "$INSTDIR\Uninstall.exe" - - RMDir "$INSTDIR" - - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GoldenDict" - -SectionEnd diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.cc deleted file mode 100644 index cbbd8d5979..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.cc +++ /dev/null @@ -1,77 +0,0 @@ -// This program generates uninstallation script automatically, using the -// output of the makensis command. -// Why is this not part of NSIS? Ask NSIS developers. - -#include - -int main( int argc, char *argv[] ) -{ - QCoreApplication app( argc, argv ); - - QTextStream stream( stdin ); - - QRegExp setOutPath( "^SetOutPath: \"(.*)\"$" ); - QRegExp createDirectory( "^CreateDirectory: \"(.*)\"$" ); - QRegExp file( "^File: \"([^\"]*)\"(->\"([^\"]*)\")?.*$" ); - QRegExp createShortCut( "^CreateShortCut: \"([^\"]*)\"(->\"([^\"]*)\")?.*$" ); - - QStringList log; - - QString currentOutPath; - - for( QString line; !( line = stream.readLine() ).isNull(); ) - { - if ( setOutPath.exactMatch( line ) ) - { - qDebug( "Setting out path to %s", qPrintable( setOutPath.cap( 1 ) ) ); - - currentOutPath = setOutPath.cap( 1 ); - } - else - if ( createDirectory.exactMatch( line ) ) - { - qDebug( "Creating directory %s", qPrintable( createDirectory.cap( 1 ) ) ); - - log.append( "RMDir \"" + createDirectory.cap( 1 ) + "\"" ); - } - else - if ( file.exactMatch( line ) ) - { - QString command( "Delete \"" ); - - if ( file.cap( 3 ).isEmpty() ) - { - // Using the current out path - command += currentOutPath + "\\" + file.cap( 1 ); - } - else - { - // Use the complete path available - command += file.cap( 3 ); - } - - command += "\""; - - log.append( command ); - - qDebug( "Writing file %s (%s)", qPrintable( file.cap( 1 ) ), - qPrintable( file.cap( 3 ) ) ); - } - else - if ( createShortCut.exactMatch( line ) ) - { - qDebug( "Creating shortcut %s", qPrintable( createShortCut.cap( 1 ) ) ); - - log.append( "Delete \"" + createShortCut.cap( 1 ) + "\"" ); - } - } - - // Ok, replay the log back - - for( int x = log.size(); x--; ) - { - printf( "%s\n", qPrintable( log[ x ] ) ); - } - - return 0; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.exe.manifest b/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.exe.manifest deleted file mode 100644 index c1cb48310e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.exe.manifest +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.pro deleted file mode 100644 index ad7cf96c58..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.pro +++ /dev/null @@ -1,13 +0,0 @@ -###################################################################### -# Automatically generated by qmake (2.01a) ?? ???. 4 17:15:56 2010 -###################################################################### - -TEMPLATE = app -TARGET = -DEPENDPATH += . -INCLUDEPATH += . - -# Input -SOURCES += gen_uninstall.cc - -RC_FILE = gen_uninstall.rc diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.rc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.rc deleted file mode 100644 index 85f8f6b1bf..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/gen_uninstall/gen_uninstall.rc +++ /dev/null @@ -1,3 +0,0 @@ -#include - -1 RT_MANIFEST gen_uninstall.exe.manifest diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/makensis.sh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/makensis.sh deleted file mode 100755 index 6bc2e6a227..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/nsis/makensis.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -if [ $# != 1 ]; then - echo Usage: $0 infile.nsi - exit 1 -fi - -echo > uninst.nsh || exit 1 - -( makensis "-XSetCompress off" "$1" | tee log; exit ${PIPESTATUS[0]} ) || exit 1 - -./gen_uninstall/gen_uninstall < log > uninst.nsh || exit 1 - -exec makensis "$1" diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/HKVariants.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/HKVariants.ocd deleted file mode 100644 index 582c22c05a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/HKVariants.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/HKVariantsPhrases.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/HKVariantsPhrases.ocd deleted file mode 100644 index 4206c34361..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/HKVariantsPhrases.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/STCharacters.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/STCharacters.ocd deleted file mode 100644 index c1e49fe591..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/STCharacters.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/STPhrases.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/STPhrases.ocd deleted file mode 100644 index 691c51f725..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/STPhrases.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TSCharacters.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TSCharacters.ocd deleted file mode 100644 index de18b6870b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TSCharacters.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TSPhrases.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TSPhrases.ocd deleted file mode 100644 index 5922334951..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TSPhrases.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TWVariants.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TWVariants.ocd deleted file mode 100644 index faca6c17bd..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/TWVariants.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/s2hk.json b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/s2hk.json deleted file mode 100644 index 948544092d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/s2hk.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "Simplified Chinese to Traditional Chinese (Hong Kong standard)", - "segmentation": { - "type": "mmseg", - "dict": { - "type": "ocd", - "file": "STPhrases.ocd" - } - }, - "conversion_chain": [{ - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "STPhrases.ocd" - }, { - "type": "ocd", - "file": "STCharacters.ocd" - }] - } - }, { - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "HKVariantsPhrases.ocd" - }, { - "type": "ocd", - "file": "HKVariants.ocd" - }] - } - }] -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/s2tw.json b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/s2tw.json deleted file mode 100644 index 5fc6afe143..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/s2tw.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "Simplified Chinese to Traditional Chinese (Taiwan standard)", - "segmentation": { - "type": "mmseg", - "dict": { - "type": "ocd", - "file": "STPhrases.ocd" - } - }, - "conversion_chain": [{ - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "STPhrases.ocd" - }, { - "type": "ocd", - "file": "STCharacters.ocd" - }] - } - }, { - "dict": { - "type": "ocd", - "file": "TWVariants.ocd" - } - }] -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/t2s.json b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/t2s.json deleted file mode 100644 index 21ba6e4062..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/t2s.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Traditional Chinese to Simplified Chinese", - "segmentation": { - "type": "mmseg", - "dict": { - "type": "ocd", - "file": "TSPhrases.ocd" - } - }, - "conversion_chain": [{ - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "TSPhrases.ocd" - }, { - "type": "ocd", - "file": "TSCharacters.ocd" - }] - } - }] -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/HKVariants.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/HKVariants.ocd deleted file mode 100644 index 7c2e24c2a5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/HKVariants.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/HKVariantsPhrases.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/HKVariantsPhrases.ocd deleted file mode 100644 index 7cdc3aaab0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/HKVariantsPhrases.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/STCharacters.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/STCharacters.ocd deleted file mode 100644 index 6e88b13a3b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/STCharacters.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/STPhrases.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/STPhrases.ocd deleted file mode 100644 index a73289e4a3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/STPhrases.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TSCharacters.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TSCharacters.ocd deleted file mode 100644 index 471d7f38c1..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TSCharacters.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TSPhrases.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TSPhrases.ocd deleted file mode 100644 index 4c6d70505e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TSPhrases.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TWVariants.ocd b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TWVariants.ocd deleted file mode 100644 index c7c0c827da..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/TWVariants.ocd and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/s2hk.json b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/s2hk.json deleted file mode 100644 index 948544092d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/s2hk.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "Simplified Chinese to Traditional Chinese (Hong Kong standard)", - "segmentation": { - "type": "mmseg", - "dict": { - "type": "ocd", - "file": "STPhrases.ocd" - } - }, - "conversion_chain": [{ - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "STPhrases.ocd" - }, { - "type": "ocd", - "file": "STCharacters.ocd" - }] - } - }, { - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "HKVariantsPhrases.ocd" - }, { - "type": "ocd", - "file": "HKVariants.ocd" - }] - } - }] -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/s2tw.json b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/s2tw.json deleted file mode 100644 index 5fc6afe143..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/s2tw.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "Simplified Chinese to Traditional Chinese (Taiwan standard)", - "segmentation": { - "type": "mmseg", - "dict": { - "type": "ocd", - "file": "STPhrases.ocd" - } - }, - "conversion_chain": [{ - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "STPhrases.ocd" - }, { - "type": "ocd", - "file": "STCharacters.ocd" - }] - } - }, { - "dict": { - "type": "ocd", - "file": "TWVariants.ocd" - } - }] -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/t2s.json b/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/t2s.json deleted file mode 100644 index 21ba6e4062..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/opencc/x64/t2s.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Traditional Chinese to Simplified Chinese", - "segmentation": { - "type": "mmseg", - "dict": { - "type": "ocd", - "file": "TSPhrases.ocd" - } - }, - "conversion_chain": [{ - "dict": { - "type": "group", - "dicts": [{ - "type": "ocd", - "file": "TSPhrases.ocd" - }, { - "type": "ocd", - "file": "TSCharacters.ocd" - }] - } - }] -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/options.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/options.ui deleted file mode 100644 index 203fc58760..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/options.ui +++ /dev/null @@ -1,79 +0,0 @@ - - Options - - - - 0 - 0 - 400 - 81 - - - - Options - - - - - - Imagine searching for the word 'cats'. One dictionary lists -it as a synonym for 'cat', another one only knows 'cat' -alone. With this option on, the first dictionary would help -discover the main word 'cat' which would be added to the -query, and both dictionaries would include a definition for -'cat' in response to the 'cats' query. This is very useful in -most cases, and thus it is recommended to keep this on. - - - Inject main forms of synonyms into search queries - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - Options - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - Options - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.cc deleted file mode 100644 index a99221cf4a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.cc +++ /dev/null @@ -1,295 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "orderandprops.hh" -#include "instances.hh" -#include "langcoder.hh" -#include "language.hh" -#include "fsencoding.hh" -#include - -#include -#include - -using std::vector; -using std::sort; - -namespace { - -bool dictNameLessThan( sptr< Dictionary::Class > const & dict1, - sptr< Dictionary::Class > const & dict2 ) -{ - QString str1 = QString::fromUtf8( dict1->getName().c_str() ); - QString str2 = QString::fromUtf8( dict2->getName().c_str() ); - if( str1.isEmpty() && !str2.isEmpty() ) - return false; - if( !str1.isEmpty() && str2.isEmpty() ) - return true; - - return str1.localeAwareCompare( str2 ) < 0; -} - -bool dictLessThan( sptr< Dictionary::Class > const & dict1, - sptr< Dictionary::Class > const & dict2 ) -{ - int idFrom1 = dict1->getLangFrom(); - int idTo1 = dict1->getLangTo(); - if( idFrom1 == 0) - { - QPair ids = LangCoder::findIdsForName( QString::fromUtf8( dict1->getName().c_str() ) ); - idFrom1 = ids.first; - idTo1 = ids.second; - } - - int idFrom2 = dict2->getLangFrom(); - int idTo2 = dict2->getLangTo(); - if( idFrom2 == 0) - { - QPair ids = LangCoder::findIdsForName( QString::fromUtf8( dict2->getName().c_str() ) ); - idFrom2 = ids.first; - idTo2 = ids.second; - } - - QString str1 = LangCoder::decode( idFrom1 ); - QString str2 = LangCoder::decode( idFrom2 ); - if( str1.isEmpty() && !str2.isEmpty() ) - return false; - if( !str1.isEmpty() && str2.isEmpty() ) - return true; - int res = str1.localeAwareCompare( str2 ); - if( res ) - return res < 0; - - str1 = LangCoder::decode( idTo1 ); - str2 = LangCoder::decode( idTo2 ); - if( str1.isEmpty() && !str2.isEmpty() ) - return false; - if( !str1.isEmpty() && str2.isEmpty() ) - return true; - res = str1.localeAwareCompare( str2 ); - if( res ) - return res < 0; - - str1 = QString::fromUtf8( dict1->getName().c_str() ); - str2 = QString::fromUtf8( dict2->getName().c_str() ); - if( str1.isEmpty() && !str2.isEmpty() ) - return false; - if( !str1.isEmpty() && str2.isEmpty() ) - return true; - - return str1.localeAwareCompare( str2 ) < 0; -} - -} // namespace - -OrderAndProps::OrderAndProps( QWidget * parent, - Config::Group const & dictionaryOrder, - Config::Group const & inactiveDictionaries, - std::vector< sptr< Dictionary::Class > > const & - allDictionaries ): - QWidget( parent ) -{ - ui.setupUi( this ); - - Instances::Group order( dictionaryOrder, allDictionaries ); - Instances::Group inactive( inactiveDictionaries, allDictionaries ); - - Instances::complementDictionaryOrder( order, inactive, allDictionaries ); - - ui.dictionaryOrder->populate( order.dictionaries, allDictionaries ); - ui.inactiveDictionaries->populate( inactive.dictionaries, allDictionaries ); - - ui.searchLine->applyTo( ui.dictionaryOrder ); - addAction( ui.searchLine->getFocusAction() ); - - disableDictionaryDescription(); - - ui.dictionaryOrder->setContextMenuPolicy( Qt::CustomContextMenu ); - connect( ui.dictionaryOrder, SIGNAL( customContextMenuRequested( QPoint ) ), - this, SLOT( contextMenuRequested( QPoint ) ) ); - - connect( ui.dictionaryOrder, SIGNAL( gotFocus() ), - this, SLOT( dictListFocused() ) ); - connect( ui.inactiveDictionaries, SIGNAL( gotFocus() ), - this, SLOT( inactiveDictListFocused() ) ); - - connect ( ui.dictionaryOrder->selectionModel(), SIGNAL( selectionChanged ( const QItemSelection & , const QItemSelection & ) ), - this, SLOT( dictionarySelectionChanged( const QItemSelection & ) ) ); - connect ( ui.inactiveDictionaries->selectionModel(), SIGNAL( selectionChanged( const QItemSelection &, const QItemSelection & ) ), - this, SLOT( inactiveDictionarySelectionChanged( QItemSelection const & ) ) ); - - connect (ui.searchLine, SIGNAL( filterChanged( QString const & ) ), - this, SLOT( filterChanged( QString const &) ) ); - - connect( ui.dictionaryOrder->getModel(), SIGNAL( contentChanged() ), - this, SLOT( showDictNumbers() ) ); - connect( ui.inactiveDictionaries->getModel(), SIGNAL( contentChanged() ), - this, SLOT( showDictNumbers() ) ); - - showDictNumbers(); -} - -Config::Group OrderAndProps::getCurrentDictionaryOrder() const -{ - Instances::Group g( "" ); - - g.dictionaries = ui.dictionaryOrder->getCurrentDictionaries(); - - return g.makeConfigGroup(); -} - -Config::Group OrderAndProps::getCurrentInactiveDictionaries() const -{ - Instances::Group g( "" ); - - g.dictionaries = ui.inactiveDictionaries->getCurrentDictionaries(); - - return g.makeConfigGroup(); -} - -void OrderAndProps::filterChanged( QString const & filterText) -{ - // when the filter is active, disable the possibility - // to drop dictionaries to this filtered list - ui.dictionaryOrder->setAcceptDrops(filterText.isEmpty()); -} - -void OrderAndProps::dictListFocused() -{ - describeDictionary( ui.dictionaryOrder, ui.searchLine->mapToSource( ui.dictionaryOrder->currentIndex() ) ); -} - -void OrderAndProps::inactiveDictListFocused() -{ - describeDictionary( ui.inactiveDictionaries, ui.inactiveDictionaries->currentIndex() ); -} - -void OrderAndProps::dictionarySelectionChanged( const QItemSelection & current ) -{ - if ( current.empty() ) - return; - - describeDictionary( ui.dictionaryOrder, ui.searchLine->mapToSource( current.front().topLeft() ) ); -} - -void OrderAndProps::inactiveDictionarySelectionChanged( QItemSelection const & current ) -{ - if ( current.empty() ) - return; - describeDictionary( ui.inactiveDictionaries, current.front().topLeft() ); -} - -void OrderAndProps::disableDictionaryDescription() -{ - ui.dictionaryInformation->setEnabled( false ); - - ui.dictionaryName->clear(); - ui.dictionaryTotalArticles->clear(); - ui.dictionaryTotalWords->clear(); - ui.dictionaryTranslatesFrom->clear(); - ui.dictionaryTranslatesTo->clear(); - ui.dictionaryFileList->clear(); - - ui.dictionaryDescription->clear(); - ui.dictionaryDescription->setVisible( false ); - ui.dictionaryDescriptionLabel->setVisible( false ); - ui.infoVerticalSpacer->changeSize( 20, 5, QSizePolicy::Minimum, QSizePolicy::Expanding ); - ui.infoVerticalLayout->invalidate(); -} - -void OrderAndProps::describeDictionary( DictListWidget * lst, QModelIndex const & idx ) -{ - if ( !idx.isValid() || (unsigned) idx.row() >= lst->getCurrentDictionaries().size() ) - disableDictionaryDescription(); - else - { - sptr< Dictionary::Class > dict = lst->getCurrentDictionaries()[ idx.row() ]; - - if ( !dict ) - { - return; - } - - ui.dictionaryInformation->setEnabled( true ); - - ui.dictionaryName->setText( QString::fromUtf8( dict->getName().c_str() ) ); - - ui.dictionaryTotalArticles->setText( QString::number( dict->getArticleCount() ) ); - ui.dictionaryTotalWords->setText( QString::number( dict->getWordCount() ) ); - ui.dictionaryTranslatesFrom->setText( Language::localizedStringForId( dict->getLangFrom() ) ); - ui.dictionaryTranslatesTo->setText( Language::localizedStringForId( dict->getLangTo() ) ); - - std::vector< std::string > const & filenames = dict->getDictionaryFilenames(); - - QString filenamesText; - - for( unsigned x = 0; x < filenames.size(); x++ ) - { - filenamesText += FsEncoding::decode( filenames[ x ].c_str() ); - filenamesText += '\n'; - } - - ui.dictionaryFileList->setPlainText( filenamesText ); - - QString const& descText = dict->getDescription(); - if( !descText.isEmpty() && descText.compare( "NONE" ) != 0 ) - { - ui.dictionaryDescription->setPlainText( descText ); - ui.dictionaryDescription->setVisible( true ); - ui.dictionaryDescriptionLabel->setVisible( true ); - ui.infoVerticalSpacer->changeSize( 0, 0, QSizePolicy::Minimum, QSizePolicy::Minimum ); - } - else - { - ui.dictionaryDescription->setVisible( false ); - ui.dictionaryDescriptionLabel->setVisible( false ); - ui.infoVerticalSpacer->changeSize( 20, 5, QSizePolicy::Minimum, QSizePolicy::Expanding ); - } - ui.infoVerticalLayout->invalidate(); - } -} - -void OrderAndProps::contextMenuRequested( const QPoint & pos ) -{ - QMenu menu( this ); - QAction * sortNameAction = new QAction( tr( "Sort by name" ), &menu ); - menu.addAction( sortNameAction ); - QAction * sortLangAction = new QAction( tr( "Sort by languages" ), &menu ); - menu.addAction( sortLangAction ); - - QAction * showHeadwordsAction = NULL; - - QModelIndex idx = ui.searchLine->mapToSource( ui.dictionaryOrder->indexAt( pos ) ); - sptr< Dictionary::Class > dict; - if( idx.isValid() && (unsigned)idx.row() < ui.dictionaryOrder->getCurrentDictionaries().size() ) - dict = ui.dictionaryOrder->getCurrentDictionaries()[ idx.row() ]; - if ( dict && dict->getWordCount() > 0 ) - { - showHeadwordsAction = new QAction( tr( "Dictionary headwords" ), &menu ); - menu.addAction( showHeadwordsAction ); - } - - QAction * result = menu.exec( ui.dictionaryOrder->mapToGlobal( pos ) ); - - if( result == sortNameAction || result == sortLangAction ) - { - vector< sptr< Dictionary::Class > > sortedDicts = ui.dictionaryOrder->getCurrentDictionaries(); - if( result == sortNameAction ) - sort( sortedDicts.begin(), sortedDicts.end(), dictNameLessThan ); - else - sort( sortedDicts.begin(), sortedDicts.end(), dictLessThan ); - ui.dictionaryOrder->populate( sortedDicts ); - } - - if( result && result == showHeadwordsAction ) - { - emit showDictionaryHeadwords( QString::fromUtf8( dict->getId().c_str() ) ); - } -} - -void OrderAndProps::showDictNumbers() -{ - ui.dictionariesNumber->setText( tr( "Dictionaries active: %1, inactive: %2" ) - .arg( QString::number( ui.dictionaryOrder->getModel()->rowCount( QModelIndex() ) ) ) - .arg( QString::number( ui.inactiveDictionaries->getModel()->rowCount( QModelIndex() ) ) ) ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.hh deleted file mode 100644 index 79c49877ee..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.hh +++ /dev/null @@ -1,45 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ORDERANDPROPS_HH_INCLUDED__ -#define __ORDERANDPROPS_HH_INCLUDED__ - -#include "ui_orderandprops.h" -#include "groups_widgets.hh" -#include - -class OrderAndProps: public QWidget -{ - Q_OBJECT; - -public: - - OrderAndProps( QWidget * parent, Config::Group const & dictionaryOrder, - Config::Group const & inactiveDictionaries, - std::vector< sptr< Dictionary::Class > > const & allDictionaries ); - - Config::Group getCurrentDictionaryOrder() const; - Config::Group getCurrentInactiveDictionaries() const; - -private slots: - - void dictionarySelectionChanged( const QItemSelection ¤t ); - void inactiveDictionarySelectionChanged( const QItemSelection ¤t ); - void contextMenuRequested( const QPoint & pos ); - void filterChanged( QString const & filterText ); - void dictListFocused(); - void inactiveDictListFocused(); - void showDictNumbers(); - -private: - - Ui::OrderAndProps ui; - - void disableDictionaryDescription(); - void describeDictionary( DictListWidget *, QModelIndex const & ); - -signals: - void showDictionaryHeadwords( QString const & dictId ); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.ui deleted file mode 100644 index 62d485334d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/orderandprops.ui +++ /dev/null @@ -1,355 +0,0 @@ - - - OrderAndProps - - - - 0 - 0 - 606 - 585 - - - - Form - - - - - - - - - - - - - - - - - - - - - - - Dictionary order: - - - - - - - - - - - - - - - - Inactive (disabled) dictionaries: - - - - - - - - - - - - - - Dictionary information - - - - - - - - Name: - - - - - - - TextLabel - - - Qt::PlainText - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - TextLabel - - - Qt::PlainText - - - - - - - Total articles: - - - - - - - Total words: - - - - - - - TextLabel - - - Qt::PlainText - - - - - - - Translates from: - - - - - - - Translates to: - - - - - - - TextLabel - - - Qt::RichText - - - - - - - TextLabel - - - Qt::RichText - - - - - - - - - Description: - - - - - - - - - - - - 224 - 223 - 223 - - - - - - - - - 224 - 223 - 223 - - - - - - - - - 212 - 208 - 200 - - - - - - - - QFrame::NoFrame - - - true - - - - - - - Qt::Vertical - - - - 20 - 5 - - - - - - - - Qt::Horizontal - - - - 256 - 5 - - - - - - - - Files comprising this dictionary: - - - - - - - - 0 - 0 - - - - - 0 - 65 - - - - - 16777215 - 65 - - - - - - - - - 224 - 223 - 222 - - - - - - - - - 224 - 223 - 222 - - - - - - - - - 224 - 223 - 222 - - - - - - - - QFrame::NoFrame - - - QPlainTextEdit::NoWrap - - - true - - - - - - - - - - - - Adjust the order by dragging and dropping items in it. Drop dictionaries to the inactive group to disable their use. - - - true - - - - - - - - DictListWidget - QListWidget -
groups_widgets.hh
-
- - QuickFilterLine - QLineEdit -
groups_widgets.hh
-
-
- - dictionaryOrder - inactiveDictionaries - dictionaryDescription - dictionaryFileList - searchLine - - - -
diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/parsecmdline.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/parsecmdline.cc deleted file mode 100644 index ce6ae3ab8a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/parsecmdline.cc +++ /dev/null @@ -1,53 +0,0 @@ -#include "parsecmdline.hh" - -QStringList parseCommandLine( QString const & commandLine ) -{ - // Parse arguments. Handle quotes correctly. - QStringList args; - bool openQuote = false; - bool possibleDoubleQuote = false; - bool startNew = true; - for( QString::const_iterator c = commandLine.begin(), - e = commandLine.end(); c != e; ) - { - if ( *c == '"' && !possibleDoubleQuote ) - { - ++c; - if ( !openQuote ) - { - openQuote = true; - if ( startNew ) - { - args.push_back( QString() ); - startNew = false; - } - } - else - possibleDoubleQuote = true; - } - else - if ( possibleDoubleQuote && *c != '"' ) - { - openQuote = false; - possibleDoubleQuote = false; - } - else - if ( *c == ' ' && !openQuote ) - { - ++c; - startNew = true; - } - else - { - if ( startNew ) - { - args.push_back( QString() ); - startNew = false; - } - args.last().push_back( *c++ ); - possibleDoubleQuote = false; - } - } - - return args; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/parsecmdline.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/parsecmdline.hh deleted file mode 100644 index eda250fb30..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/parsecmdline.hh +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef PARSECMDLINE_HH -#define PARSECMDLINE_HH - -#include - -/// Given a command line (name of the executable with optional arguments), -/// separates-out the name and all the arguments into a list. Supports quotes -/// and double-quotes. -QStringList parseCommandLine( QString const & ); - -#endif // PARSECMDLINE_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.cc deleted file mode 100644 index 7e7763ad1e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.cc +++ /dev/null @@ -1,600 +0,0 @@ -#include "preferences.hh" -#include "keyboardstate.hh" -#include "language.hh" -#include "langcoder.hh" -#include -#include "broken_xrecord.hh" -#include "mainwindow.hh" - - -Preferences::Preferences( QWidget * parent, Config::Class & cfg_ ): - QDialog( parent ), prevInterfaceLanguage( 0 ) -, helpWindow( 0 ) -, cfg( cfg_ ) -, helpAction( this ) -{ - Config::Preferences const & p = cfg_.preferences; - ui.setupUi( this ); - - connect( ui.enableScanPopup, SIGNAL( toggled( bool ) ), - this, SLOT( enableScanPopupToggled( bool ) ) ); - - connect( ui.enableScanPopupModifiers, SIGNAL( toggled( bool ) ), - this, SLOT( enableScanPopupModifiersToggled( bool ) ) ); - - connect( ui.altKey, SIGNAL( clicked( bool ) ), - this, SLOT( wholeAltClicked( bool ) ) ); - connect( ui.ctrlKey, SIGNAL( clicked( bool ) ), - this, SLOT( wholeCtrlClicked( bool ) ) ); - connect( ui.shiftKey, SIGNAL( clicked( bool ) ), - this, SLOT( wholeShiftClicked( bool ) ) ); - - connect( ui.leftAlt, SIGNAL( clicked( bool ) ), - this, SLOT( sideAltClicked( bool ) ) ); - connect( ui.rightAlt, SIGNAL( clicked( bool ) ), - this, SLOT( sideAltClicked( bool ) ) ); - connect( ui.leftCtrl, SIGNAL( clicked( bool ) ), - this, SLOT( sideCtrlClicked( bool ) ) ); - connect( ui.rightCtrl, SIGNAL( clicked( bool ) ), - this, SLOT( sideCtrlClicked( bool ) ) ); - connect( ui.leftShift, SIGNAL( clicked( bool ) ), - this, SLOT( sideShiftClicked( bool ) ) ); - connect( ui.rightShift, SIGNAL( clicked( bool ) ), - this, SLOT( sideShiftClicked( bool ) ) ); - - connect( ui.buttonBox, SIGNAL( helpRequested() ), - this, SLOT( helpRequested() ) ); - - helpAction.setShortcut( QKeySequence( "F1" ) ); - helpAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - - connect( &helpAction, SIGNAL( triggered() ), - this, SLOT( helpRequested() ) ); - - addAction( &helpAction ); - - // Load values into form - - ui.interfaceLanguage->addItem( tr( "System default" ), QString() ); - ui.interfaceLanguage->addItem( QIcon( ":/flags/us.png" ), Language::localizedNameForId( LangCoder::code2toInt( "en" ) ), QString( "en_US" ) ); - - // See which other translations do we have - - QStringList availLocs = QDir( Config::getLocDir() ).entryList( QStringList( "*.qm" ), - QDir::Files ); - - // We need to sort by language name -- otherwise list looks really weird - QMap< QString, QPair< QIcon, QString > > sortedLocs; - - for( QStringList::iterator i = availLocs.begin(); i != availLocs.end(); ++i ) - { - // Here we assume the xx_YY naming, where xx is language and YY is region. - QString lang = i->mid( 0, 2 ); - - if ( lang == "qt" ) - continue; // We skip qt's own localizations - - sortedLocs.insertMulti( - Language::localizedNameForId( LangCoder::code2toInt( lang.toLatin1().data() ) ), - QPair< QIcon, QString >( - QIcon( QString( ":/flags/%1.png" ).arg( i->mid( 3, 2 ).toLower() ) ), - i->mid( 0, i->size() - 3 ) ) ); - } - - for( QMap< QString, QPair< QIcon, QString > >::iterator i = sortedLocs.begin(); - i != sortedLocs.end(); ++i ) - ui.interfaceLanguage->addItem( i.value().first, i.key(), i.value().second ); - - for( int x = 0; x < ui.interfaceLanguage->count(); ++x ) - if ( ui.interfaceLanguage->itemData( x ).toString() == p.interfaceLanguage ) - { - ui.interfaceLanguage->setCurrentIndex( x ); - prevInterfaceLanguage = x; - break; - } - - // Fill help languages combobox - - ui.helpLanguage->addItem( tr( "Default" ), QString() ); - - // See which helps do we have - - QStringList availHelps = QDir( Config::getHelpDir() ).entryList( QStringList( "*.qch" ), - QDir::Files ); - - QMap< QString, QPair< QIcon, QString > > sortedHelps; - - for( QStringList::iterator i = availHelps.begin(); i != availHelps.end(); ++i ) - { - QString loc = i->mid( 7, i->length() - 11 ); - QString lang = loc.mid( 0, 2 ); - QString reg; - if(loc.length() >= 5 ) - reg = loc.mid( 3, 2 ).toLower(); - else - { - if( lang.compare( "en", Qt::CaseInsensitive ) == 0 ) - reg = "US"; - else - reg = lang.toUpper(); - } - - sortedHelps.insertMulti( - Language::localizedNameForId( LangCoder::code2toInt( lang.toLatin1().data() ) ), - QPair< QIcon, QString >( - QIcon( QString( ":/flags/%1.png" ).arg( reg.toLower() ) ), lang + "_" + reg ) ); - } - - for( QMap< QString, QPair< QIcon, QString > >::iterator i = sortedHelps.begin(); - i != sortedHelps.end(); ++i ) - ui.helpLanguage->addItem( i.value().first, i.key(), i.value().second ); - - for( int x = 0; x < ui.helpLanguage->count(); ++x ) - if ( ui.helpLanguage->itemData( x ).toString() == p.helpLanguage ) - { - ui.helpLanguage->setCurrentIndex( x ); - break; - } - - ui.displayStyle->addItem( QIcon( ":/icons/programicon_old.png" ), tr( "Default" ), QString() ); - ui.displayStyle->addItem( QIcon( ":/icons/programicon.png" ), tr( "Modern" ), QString( "modern" ) ); - ui.displayStyle->addItem( QIcon( ":/icons/icon32_dsl.png" ), tr( "Lingvo" ), QString( "lingvo" ) ); - ui.displayStyle->addItem( QIcon( ":/icons/icon32_bgl.png" ), tr( "Babylon" ), QString( "babylon" ) ); - ui.displayStyle->addItem( QIcon( ":/icons/icon32_lingoes.png" ), tr( "Lingoes" ), QString( "lingoes" ) ); - ui.displayStyle->addItem( QIcon( ":/icons/icon32_lingoes.png" ), tr( "Lingoes-Blue" ), QString( "lingoes-blue" ) ); - - for( int x = 0; x < ui.displayStyle->count(); ++x ) - if ( ui.displayStyle->itemData( x ).toString() == p.displayStyle ) - { - ui.displayStyle->setCurrentIndex( x ); - break; - } - - ui.newTabsOpenAfterCurrentOne->setChecked( p.newTabsOpenAfterCurrentOne ); - ui.newTabsOpenInBackground->setChecked( p.newTabsOpenInBackground ); - ui.hideSingleTab->setChecked( p.hideSingleTab ); - ui.mruTabOrder->setChecked( p.mruTabOrder ); - ui.enableTrayIcon->setChecked( p.enableTrayIcon ); - ui.startToTray->setChecked( p.startToTray ); - ui.closeToTray->setChecked( p.closeToTray ); - ui.cbAutostart->setChecked( p.autoStart ); - ui.doubleClickTranslates->setChecked( p.doubleClickTranslates ); - ui.selectBySingleClick->setChecked( p.selectWordBySingleClick); - ui.escKeyHidesMainWindow->setChecked( p.escKeyHidesMainWindow ); - - ui.enableMainWindowHotkey->setChecked( p.enableMainWindowHotkey ); - ui.mainWindowHotkey->setHotKey( p.mainWindowHotkey ); - ui.enableClipboardHotkey->setChecked( p.enableClipboardHotkey ); - ui.clipboardHotkey->setHotKey( p.clipboardHotkey ); - - ui.enableScanPopup->setChecked( p.enableScanPopup ); - ui.startWithScanPopupOn->setChecked( p.startWithScanPopupOn ); - ui.enableScanPopupModifiers->setChecked( p.enableScanPopupModifiers ); - - ui.altKey->setChecked( p.scanPopupModifiers & KeyboardState::Alt ); - ui.ctrlKey->setChecked( p.scanPopupModifiers & KeyboardState::Ctrl ); - ui.shiftKey->setChecked( p.scanPopupModifiers & KeyboardState::Shift ); - ui.winKey->setChecked( p.scanPopupModifiers & KeyboardState::Win ); - ui.leftAlt->setChecked( p.scanPopupModifiers & KeyboardState::LeftAlt ); - ui.rightAlt->setChecked( p.scanPopupModifiers & KeyboardState::RightAlt ); - ui.leftCtrl->setChecked( p.scanPopupModifiers & KeyboardState::LeftCtrl ); - ui.rightCtrl->setChecked( p.scanPopupModifiers & KeyboardState::RightCtrl ); - ui.leftShift->setChecked( p.scanPopupModifiers & KeyboardState::LeftShift ); - ui.rightShift->setChecked( p.scanPopupModifiers & KeyboardState::RightShift ); - - ui.scanPopupAltMode->setChecked( p.scanPopupAltMode ); - ui.scanPopupAltModeSecs->setValue( p.scanPopupAltModeSecs ); - ui.scanToMainWindow->setChecked( p.scanToMainWindow ); - ui.scanPopupUseUIAutomation->setChecked( p.scanPopupUseUIAutomation ); - ui.scanPopupUseIAccessibleEx->setChecked( p.scanPopupUseIAccessibleEx ); - ui.scanPopupUseGDMessage->setChecked( p.scanPopupUseGDMessage ); - - ui.storeHistory->setChecked( p.storeHistory ); - ui.historyMaxSizeField->setValue( p.maxStringsInHistory ); - ui.historySaveIntervalField->setValue( p.historyStoreInterval ); - ui.alwaysExpandOptionalParts->setChecked( p.alwaysExpandOptionalParts ); - - ui.collapseBigArticles->setChecked( p.collapseBigArticles ); - ui.articleSizeLimit->setValue( p.articleSizeLimit ); - - ui.maxDictsInContextMenu->setValue( p.maxDictionaryRefsInContextMenu ); - - // Different platforms have different keys available - -#ifdef Q_OS_WIN32 - ui.winKey->hide(); -#else - ui.leftAlt->hide(); - ui.rightAlt->hide(); - ui.leftCtrl->hide(); - ui.rightCtrl->hide(); - ui.leftShift->hide(); - ui.rightShift->hide(); -#ifdef Q_OS_MAC - ui.altKey->setText( "Opt" ); - ui.winKey->setText( "Ctrl" ); - ui.ctrlKey->setText( "Cmd" ); -#endif -#endif - -//Platform-specific options - -#ifndef Q_OS_WIN32 - ui.groupBox_ScanPopupTechnologies->hide(); -// ui.tabWidget->removeTab( 5 ); -#endif - - // Sound - - ui.pronounceOnLoadMain->setChecked( p.pronounceOnLoadMain ); - ui.pronounceOnLoadPopup->setChecked( p.pronounceOnLoadPopup ); - -#ifdef DISABLE_INTERNAL_PLAYER - ui.useInternalPlayer->hide(); -#else - if ( p.useInternalPlayer ) - ui.useInternalPlayer->setChecked( true ); - else -#endif - ui.useExternalPlayer->setChecked( p.useExternalPlayer ); - - ui.audioPlaybackProgram->setText( p.audioPlaybackProgram ); - - if ( !isRECORDBroken() ) - ui.brokenXRECORD->hide(); - - // Proxy server - - ui.useProxyServer->setChecked( p.proxyServer.enabled ); - - ui.proxyType->addItem( "SOCKS5" ); - ui.proxyType->addItem( "HTTP Transp." ); - ui.proxyType->addItem( "HTTP Caching" ); - - ui.proxyType->setCurrentIndex( p.proxyServer.type ); - - ui.proxyHost->setText( p.proxyServer.host ); - ui.proxyPort->setValue( p.proxyServer.port ); - - ui.proxyUser->setText( p.proxyServer.user ); - ui.proxyPassword->setText( p.proxyServer.password ); - - if( p.proxyServer.useSystemProxy ) - { - ui.systemProxy->setChecked( true ); - ui.customSettingsGroup->setEnabled( false ); - } - else - { - ui.customProxy->setChecked( true ); - ui.customSettingsGroup->setEnabled( p.proxyServer.enabled ); - } - - connect( ui.customProxy, SIGNAL( toggled( bool ) ), - this, SLOT( customProxyToggled( bool ) ) ); - - connect( ui.useProxyServer, SIGNAL( toggled( bool ) ), - this, SLOT( customProxyToggled( bool ) ) ); - - ui.checkForNewReleases->setChecked( p.checkForNewReleases ); - ui.disallowContentFromOtherSites->setChecked( p.disallowContentFromOtherSites ); - ui.enableWebPlugins->setChecked( p.enableWebPlugins ); - ui.hideGoldenDictHeader->setChecked( p.hideGoldenDictHeader ); - - // Add-on styles - ui.addonStylesLabel->setVisible( ui.addonStyles->count() > 1 ); - ui.addonStyles->setCurrentStyle( p.addonStyle ); - - // Full-text search parameters - ui.ftsGroupBox->setChecked( p.fts.enabled ); - - ui.allowAard->setChecked( !p.fts.disabledTypes.contains( "AARD", Qt::CaseInsensitive ) ); - ui.allowBGL->setChecked( !p.fts.disabledTypes.contains( "BGL", Qt::CaseInsensitive ) ); - ui.allowDictD->setChecked( !p.fts.disabledTypes.contains( "DICTD", Qt::CaseInsensitive ) ); - ui.allowDSL->setChecked( !p.fts.disabledTypes.contains( "DSL", Qt::CaseInsensitive ) ); - ui.allowMDict->setChecked( !p.fts.disabledTypes.contains( "MDICT", Qt::CaseInsensitive ) ); - ui.allowSDict->setChecked( !p.fts.disabledTypes.contains( "SDICT", Qt::CaseInsensitive ) ); - ui.allowSlob->setChecked( !p.fts.disabledTypes.contains( "SLOB", Qt::CaseInsensitive ) ); - ui.allowStardict->setChecked( !p.fts.disabledTypes.contains( "STARDICT", Qt::CaseInsensitive ) ); - ui.allowXDXF->setChecked( !p.fts.disabledTypes.contains( "XDXF", Qt::CaseInsensitive ) ); - ui.allowZim->setChecked( !p.fts.disabledTypes.contains( "ZIM", Qt::CaseInsensitive ) ); - ui.allowEpwing->setChecked( !p.fts.disabledTypes.contains( "EPWING", Qt::CaseInsensitive ) ); -#ifndef MAKE_ZIM_SUPPORT - ui.allowZim->hide(); - ui.allowSlob->hide(); -#endif -#ifdef NO_EPWING_SUPPORT - ui.allowEpwing->hide(); -#endif - ui.maxDictionarySize->setValue( p.fts.maxDictionarySize ); -} - -Config::Preferences Preferences::getPreferences() -{ - Config::Preferences p; - - p.interfaceLanguage = - ui.interfaceLanguage->itemData( - ui.interfaceLanguage->currentIndex() ).toString(); - - p.helpLanguage = - ui.helpLanguage->itemData( - ui.helpLanguage->currentIndex() ).toString(); - - p.displayStyle = - ui.displayStyle->itemData( - ui.displayStyle->currentIndex() ).toString(); - - p.newTabsOpenAfterCurrentOne = ui.newTabsOpenAfterCurrentOne->isChecked(); - p.newTabsOpenInBackground = ui.newTabsOpenInBackground->isChecked(); - p.hideSingleTab = ui.hideSingleTab->isChecked(); - p.mruTabOrder = ui.mruTabOrder->isChecked(); - p.enableTrayIcon = ui.enableTrayIcon->isChecked(); - p.startToTray = ui.startToTray->isChecked(); - p.closeToTray = ui.closeToTray->isChecked(); - p.autoStart = ui.cbAutostart->isChecked(); - p.doubleClickTranslates = ui.doubleClickTranslates->isChecked(); - p.selectWordBySingleClick = ui.selectBySingleClick->isChecked(); - p.escKeyHidesMainWindow = ui.escKeyHidesMainWindow->isChecked(); - - p.enableMainWindowHotkey = ui.enableMainWindowHotkey->isChecked(); - p.mainWindowHotkey = ui.mainWindowHotkey->getHotKey(); - p.enableClipboardHotkey = ui.enableClipboardHotkey->isChecked(); - p.clipboardHotkey = ui.clipboardHotkey->getHotKey(); - - p.enableScanPopup = ui.enableScanPopup->isChecked(); - p.startWithScanPopupOn = ui.startWithScanPopupOn->isChecked(); - p.enableScanPopupModifiers = ui.enableScanPopupModifiers->isChecked(); - - p.scanPopupModifiers += ui.altKey->isChecked() ? KeyboardState::Alt : 0; - p.scanPopupModifiers += ui.ctrlKey->isChecked() ? KeyboardState::Ctrl: 0; - p.scanPopupModifiers += ui.shiftKey->isChecked() ? KeyboardState::Shift: 0; - p.scanPopupModifiers += ui.winKey->isChecked() ? KeyboardState::Win: 0; - p.scanPopupModifiers += ui.leftAlt->isChecked() ? KeyboardState::LeftAlt: 0; - p.scanPopupModifiers += ui.rightAlt->isChecked() ? KeyboardState::RightAlt: 0; - p.scanPopupModifiers += ui.leftCtrl->isChecked() ? KeyboardState::LeftCtrl: 0; - p.scanPopupModifiers += ui.rightCtrl->isChecked() ? KeyboardState::RightCtrl: 0; - p.scanPopupModifiers += ui.leftShift->isChecked() ? KeyboardState::LeftShift: 0; - p.scanPopupModifiers += ui.rightShift->isChecked() ? KeyboardState::RightShift: 0; - - p.scanPopupAltMode = ui.scanPopupAltMode->isChecked(); - p.scanPopupAltModeSecs = ui.scanPopupAltModeSecs->value(); - p.scanToMainWindow = ui.scanToMainWindow->isChecked(); - p.scanPopupUseUIAutomation = ui.scanPopupUseUIAutomation->isChecked(); - p.scanPopupUseIAccessibleEx = ui.scanPopupUseIAccessibleEx->isChecked(); - p.scanPopupUseGDMessage = ui.scanPopupUseGDMessage->isChecked(); - - p.storeHistory = ui.storeHistory->isChecked(); - p.maxStringsInHistory = ui.historyMaxSizeField->text().toUInt(); - p.historyStoreInterval = ui.historySaveIntervalField->text().toUInt(); - p.alwaysExpandOptionalParts = ui.alwaysExpandOptionalParts->isChecked(); - - p.collapseBigArticles = ui.collapseBigArticles->isChecked(); - p.articleSizeLimit = ui.articleSizeLimit->text().toInt(); - - p.maxDictionaryRefsInContextMenu = ui.maxDictsInContextMenu->text().toInt(); - - p.pronounceOnLoadMain = ui.pronounceOnLoadMain->isChecked(); - p.pronounceOnLoadPopup = ui.pronounceOnLoadPopup->isChecked(); - p.useExternalPlayer = ui.useExternalPlayer->isChecked(); - p.useInternalPlayer = ui.useInternalPlayer->isChecked(); - p.audioPlaybackProgram = ui.audioPlaybackProgram->text(); - - p.proxyServer.enabled = ui.useProxyServer->isChecked(); - p.proxyServer.useSystemProxy = ui.systemProxy->isChecked(); - - p.proxyServer.type = ( Config::ProxyServer::Type ) ui.proxyType->currentIndex(); - - p.proxyServer.host = ui.proxyHost->text(); - p.proxyServer.port = ( unsigned ) ui.proxyPort->value(); - - p.proxyServer.user = ui.proxyUser->text(); - p.proxyServer.password = ui.proxyPassword->text(); - - p.checkForNewReleases = ui.checkForNewReleases->isChecked(); - p.disallowContentFromOtherSites = ui.disallowContentFromOtherSites->isChecked(); - p.enableWebPlugins = ui.enableWebPlugins->isChecked(); - p.hideGoldenDictHeader = ui.hideGoldenDictHeader->isChecked(); - - p.addonStyle = ui.addonStyles->getCurrentStyle(); - - p.fts.enabled = ui.ftsGroupBox->isChecked(); - p.fts.maxDictionarySize = ui.maxDictionarySize->value(); - - if( !ui.allowAard->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "AARD"; - } - - if( !ui.allowBGL->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "BGL"; - } - - if( !ui.allowDictD->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "DICTD"; - } - - if( !ui.allowDSL->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "DSL"; - } - - if( !ui.allowMDict->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "MDICT"; - } - - if( !ui.allowSDict->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "SDICT"; - } - - if( !ui.allowSlob->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "SLOB"; - } - - if( !ui.allowStardict->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "STARDICT"; - } - - if( !ui.allowXDXF->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "XDXF"; - } - - if( !ui.allowZim->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "ZIM"; - } - - if( !ui.allowEpwing->isChecked() ) - { - if( !p.fts.disabledTypes.isEmpty() ) - p.fts.disabledTypes += ','; - p.fts.disabledTypes += "EPWING"; - } - - return p; -} - -void Preferences::enableScanPopupToggled( bool b ) -{ - ui.scanPopupModifiers->setEnabled( b && ui.enableScanPopupModifiers->isChecked() ); -} - -void Preferences::enableScanPopupModifiersToggled( bool b ) -{ - ui.scanPopupModifiers->setEnabled( b && ui.enableScanPopup->isChecked() ); -} - -void Preferences::wholeAltClicked( bool b ) -{ - if ( b ) - { - ui.leftAlt->setChecked( false ); - ui.rightAlt->setChecked( false ); - } -} - -void Preferences::wholeCtrlClicked( bool b ) -{ - if ( b ) - { - ui.leftCtrl->setChecked( false ); - ui.rightCtrl->setChecked( false ); - } -} - -void Preferences::wholeShiftClicked( bool b ) -{ - if ( b ) - { - ui.leftShift->setChecked( false ); - ui.rightShift->setChecked( false ); - } -} - -void Preferences::sideAltClicked( bool ) -{ - if ( ui.leftAlt->isChecked() || ui.rightAlt->isChecked() ) - ui.altKey->setChecked( false ); -} - -void Preferences::sideCtrlClicked( bool ) -{ - if ( ui.leftCtrl->isChecked() || ui.rightCtrl->isChecked() ) - ui.ctrlKey->setChecked( false ); -} - -void Preferences::sideShiftClicked( bool ) -{ - if ( ui.leftShift->isChecked() || ui.rightShift->isChecked() ) - ui.shiftKey->setChecked( false ); -} - -void Preferences::on_enableMainWindowHotkey_toggled( bool checked ) -{ - ui.mainWindowHotkey->setEnabled( checked ); -} - -void Preferences::on_enableClipboardHotkey_toggled( bool checked ) -{ - ui.clipboardHotkey->setEnabled( checked ); -} - -void Preferences::on_buttonBox_accepted() -{ - if ( prevInterfaceLanguage != ui.interfaceLanguage->currentIndex() ) - QMessageBox::information( this, tr( "Changing Language" ), - tr( "Restart the program to apply the language change." ) ); -} - -void Preferences::on_useExternalPlayer_toggled( bool enabled ) -{ - ui.audioPlaybackProgram->setEnabled( enabled ); -} - -void Preferences::customProxyToggled( bool ) -{ - ui.customSettingsGroup->setEnabled( ui.customProxy->isChecked() - && ui.useProxyServer->isChecked() ); -} - -void Preferences::helpRequested() -{ - if( !helpWindow ) - { - MainWindow * mainWindow = qobject_cast< MainWindow * >( parentWidget() ); - if( mainWindow ) - mainWindow->closeGDHelp(); - - helpWindow = new Help::HelpWindow( this, cfg ); - - if( helpWindow ) - { - helpWindow->setWindowFlags( Qt::Window ); - - connect( helpWindow, SIGNAL( needClose() ), - this, SLOT( closeHelp() ) ); - helpWindow->showHelpFor( "Preferences" ); - helpWindow->show(); - } - } - else - { - if( !helpWindow->isVisible() ) - helpWindow->show(); - - helpWindow->activateWindow(); - } -} - -void Preferences::closeHelp() -{ - if( helpWindow ) - helpWindow->hide(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.hh deleted file mode 100644 index c922b76764..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.hh +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef __PREFERENCES_HH_INCLUDED__ -#define __PREFERENCES_HH_INCLUDED__ - -#include -#include "config.hh" -#include "helpwindow.hh" -#include "ui_preferences.h" - -/// Preferences dialog -- allows changing various program options. -class Preferences: public QDialog -{ - Q_OBJECT - - int prevInterfaceLanguage; - - Help::HelpWindow * helpWindow; - Config::Class & cfg; - QAction helpAction; - -public: - - Preferences( QWidget * parent, Config::Class & cfg_ ); - ~Preferences() - { if( helpWindow ) delete helpWindow; } - - Config::Preferences getPreferences(); - -private: - - Ui::Preferences ui; - -private slots: - - void enableScanPopupToggled( bool ); - void enableScanPopupModifiersToggled( bool ); - - void wholeAltClicked( bool ); - void wholeCtrlClicked( bool ); - void wholeShiftClicked( bool ); - - void sideAltClicked( bool ); - void sideCtrlClicked( bool ); - void sideShiftClicked( bool ); - - void on_enableMainWindowHotkey_toggled( bool checked ); - void on_enableClipboardHotkey_toggled( bool checked ); - - void on_buttonBox_accepted(); - - void on_useExternalPlayer_toggled( bool enabled ); - - void customProxyToggled( bool ); - - void helpRequested(); - void closeHelp(); -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.ui deleted file mode 100644 index 69b358b357..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/preferences.ui +++ /dev/null @@ -1,1685 +0,0 @@ - - - Preferences - - - - 0 - 0 - 636 - 403 - - - - Preferences - - - - :/icons/configure.png:/icons/configure.png - - - true - - - - - - 0 - - - - 15 - 15 - - - - false - - - false - - - - - :/icons/interface.png:/icons/interface.png - - - &Interface - - - - - - Startup - - - - - - Automatically starts GoldenDict after operation system bootup. - - - Start with system - - - - - - - - - - - - Add-on style: - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - When enabled, an icon appears in the sytem tray area which can be used -to open main window and perform other tasks. - - - Enable system tray icon - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - false - - - true - - - false - - - - - - With this on, the application starts directly to system tray without showing -its main window. - - - Start to system tray - - - - - - - With this on, an attempt to close main window would hide it instead of closing -the application. - - - Close to system tray - - - - - - - - - - Double-click translates the word clicked - - - - - - - Normally, pressing ESC key moves focus to the translation line. -With this on however, it will hide the main window. - - - ESC key hides main window - - - - - - - Turn this option on if you want to select words by single mouse click - - - Select word by single click - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Tabbed browsing - - - - - - Normally, opening a new tab switches to it immediately. -With this on however, new tabs will be opened without -switching to them. - - - Open new tabs in background - - - - - - - With this on, new tabs are opened just after the -current, active one. Otherwise they are added to -be the last ones. - - - Open new tabs after the current one - - - - - - - Select this option if you don't want to see the main tab bar when only a single tab is opened. - - - Hide single tab - - - - - - - Ctrl-Tab navigates tabs in MRU order - - - - - - - - - - - - Interface language: - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - Display style: - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Help language - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 0 - 0 - - - - Adjust this value to avoid huge context menus. - - - Context menu dictionaries limit: - - - - - - - - 0 - 0 - - - - 9999 - - - 20 - - - - - - - - 0 - 0 - - - - - - - - - - - - - - - :/icons/wizard.png:/icons/wizard.png - - - &Scan Popup - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - When enabled, a translation popup window would be shown each time -you point your mouse on any word on the screen (Windows) or select -any word with mouse (Linux). When enabled, you can switch it on and -off from main window or tray icon. - - - Enable scan popup functionality - - - true - - - false - - - - - - Chooses whether the scan popup mode is on by default or not. If checked, -the program would always start with the scan popup active. - - - Start with scan popup turned on - - - - - - - With this enabled, the popup would only show up if all chosen keys are -in the pressed state when the word selection changes. - - - Only show popup when all selected keys are kept pressed: - - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - 0 - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Left Ctrl only - - - Left Ctrl - - - - - - - Right Shift only - - - Right Shift - - - - - - - Alt key - - - Alt - - - - - - - Ctrl key - - - Ctrl - - - - - - - Left Alt only - - - Left Alt - - - - - - - Shift key - - - Shift - - - - - - - Right Alt only - - - Right Alt - - - - - - - Right Ctrl only - - - Right Ctrl - - - - - - - Left Shift only - - - Left Shift - - - - - - - Windows key or Meta key - - - Win/Meta - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - 0 - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - - - - - - Normally, in order to activate a popup you have to -maintain the chosen keys pressed while you select -a word. With this enabled, the chosen keys may also -be pressed shortly after the selection is done. - - - Keys may also be pressed afterwards, within - - - - - - - To avoid false positives, the keys are only monitored -after the selection's done for a limited amount of -seconds, which is specified here. - - - false - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 1 - - - 99 - - - - - - - secs - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Send translated word to main window instead of to show it in popup window - - - Send translated word to main window - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - :/icons/hotkeys.png:/icons/hotkeys.png - - - Hotkeys - - - - - - Qt::Vertical - - - - 20 - 19 - - - - - - - - Use the following hotkey to show or hide the main window: - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - - - - - - Use the following hotkey to translate a word from clipboard: - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 16 - - - - - - - - The hotkeys are global and work from any program and within any context as long as GoldenDict is running in background. - - - true - - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Note: You appear to be running an X.Org XServer release which has the RECORD extension broken. Hotkeys in GoldenDict will probably not work. This must be fixed in the server itself. Please refer to the following </span><a href="https://bugs.freedesktop.org/show_bug.cgi?id=20500"><span style=" text-decoration: underline; color:#0000ff;">bug entry</span></a><span style=" color:#ff0000;"> and leave a comment there if you like.</span></p></body></html> - - - Qt::RichText - - - true - - - true - - - - - - - Qt::Vertical - - - - 20 - 53 - - - - - - - - - - :/icons/playsound_color.png:/icons/playsound_color.png - - - &Audio - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Pronunciation - - - - - - Auto-pronounce words in main window - - - - - - - Auto-pronounce words in scan popup - - - - - - - - - - Playback - - - - - - Play audio files via FFmpeg(libav) and libao - - - Use internal player - - - - - - - - - Use any external program to play audio files - - - Use external program: - - - - - - - false - - - - - - - - - - - - Qt::Vertical - - - - 20 - 46 - - - - - - - - - - :/icons/network.png:/icons/network.png - - - &Network - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Enable if you wish to use a proxy server -for all program's network requests. - - - Use proxy server - - - true - - - false - - - - - - System proxy - - - - - - - Custom proxy - - - - - - - Custom settings - - - - - - - - Type: - - - - - - - - - - Host: - - - - - - - - - - Port: - - - - - - - 65535 - - - 8080 - - - - - - - - - - - User: - - - - - - - - - - Password: - - - - - - - QLineEdit::Password - - - - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 10 - - - - - - - - Enabling this would make GoldenDict block most advertisements -by disallowing content (images, frames) not originating from the site -you are browsing. If some site breaks because of this, try disabling this. - - - Disallow loading content from other sites (hides most advertisements) - - - - - - - Enabling this would allow to listen to sound pronunciations from -online dictionaries that rely on Flash or other web plugins. -Plugin must be installed for this option to work. - - - Enable web plugins - - - - - - - Some sites detect GoldenDict via HTTP headers and block the requests. -Enable this option to workaround the problem. - - - Do not identify GoldenDict in HTTP headers - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 10 - - - - - - - - When this is enabled, the program periodically -checks if a new, updated version of GoldenDict -is available for download. If it is so, the program -informs the user about it and prompts to open a -download page. - - - Check for new program releases periodically - - - - - - - Qt::Vertical - - - - 20 - 39 - - - - - - - - - - :/icons/system-search.png:/icons/system-search.png - - - Full-text search - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Allow full-text search for: - - - true - - - true - - - - - - Aard - - - - - - - BGL - - - - - - - DictD - - - - - - - DSL - - - - - - - MDict - - - - - - - SDict - - - - - - - Slob - - - - - - - Stardict - - - - - - - XDXF - - - - - - - Zim - - - - - - - - - Don't search in dictionaries containing more than - - - - - - - 10000000 - - - 10000 - - - - - - - articles (0 - unlimited) - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Epwing - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Ad&vanced - - - - - - ScanPopup extra technologies - - - - - - Try to use IAccessibleEx technology to retrieve word under cursor. -This technology works only with some programs that support it - (for example Internet Explorer 9). -It is not needed to select this option if you don't use such programs. - - - Use &IAccessibleEx - - - - - - - Try to use UI Automation technology to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - Use &UIAutomation - - - - - - - Try to use special GoldenDict message to retrieve word under cursor. -This technology works only with some programs that support it. -It is not needed to select this option if you don't use such programs. - - - Use &GoldenDict message - - - - - - - - - - History - - - - - - Turn this option on to store history of the translated words - - - Store &history - - - true - - - - - - - 0 - - - - - Specify the maximum number of entries to keep in history. - - - Maximum history size: - - - - - - - true - - - 99999 - - - 500 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - History saving interval. If set to 0 history will be saved only during exit. - - - - - - Save every - - - - - - - - - - 120 - - - - - - - minutes - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Articles - - - - - - Turn this option on to always expand optional parts of articles - - - Expand optional &parts - - - - - - - - - Select this option to automatic collapse big articles - - - Collapse articles more than - - - - - - - Articles longer than this size will be collapsed - - - 100000 - - - 50 - - - 2000 - - - - - - - symbols - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok - - - - - - - - HotKeyEdit - QLineEdit -
hotkeyedit.hh
-
- - StylesComboBox - QComboBox -
stylescombobox.hh
-
-
- - tabWidget - buttonBox - newTabsOpenInBackground - newTabsOpenAfterCurrentOne - enableTrayIcon - startToTray - closeToTray - cbAutostart - interfaceLanguage - startWithScanPopupOn - enableScanPopupModifiers - leftCtrl - rightShift - altKey - ctrlKey - leftAlt - shiftKey - rightAlt - rightCtrl - leftShift - winKey - scanPopupAltMode - scanPopupAltModeSecs - useProxyServer - proxyType - proxyHost - proxyPort - proxyUser - proxyPassword - - - - - - - buttonBox - accepted() - Preferences - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - Preferences - reject() - - - 316 - 260 - - - 286 - 274 - - - - -
diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/processwrapper.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/processwrapper.cc deleted file mode 100644 index 9d52583067..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/processwrapper.cc +++ /dev/null @@ -1,141 +0,0 @@ -#include "processwrapper.hh" - -#include - -#ifdef Q_OS_WIN32 - -#include -#include -#include - -unsigned int ProcessWrapper::currentProcessId() -{ - return GetCurrentProcessId(); -} - -bool ProcessWrapper::processExists(unsigned int pid) -{ - DWORD aProcesses[1024], cbNeeded, cProcesses; - unsigned int i; - - if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) - return false; - - cProcesses = cbNeeded / sizeof(DWORD); - for ( i = 0; i < cProcesses; i++ ) - { - unsigned int processID = aProcesses[i]; - if ( processID == pid ) - return true; - } - - return false; -} - -unsigned int ProcessWrapper::findProcess(const char *name, unsigned int pid_skip) -{ - DWORD aProcesses[1024], cbNeeded, cProcesses; - unsigned int i; - QString pname(name); pname += ".exe"; - - if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) - return 0; - - // Calculate how many process identifiers were returned. - - cProcesses = cbNeeded / sizeof(DWORD); - - // Print the name and process identifier for each process. - - for ( i = 0; i < cProcesses; i++ ) - { - unsigned int processID = aProcesses[i]; - if( processID != 0 && processID != pid_skip ) - { - char szProcessName[MAX_PATH] = ""; - - // Get a handle to the process. - - HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | - PROCESS_VM_READ, - FALSE, processID ); - - // Get the process name. - - if (NULL != hProcess ) - { - HMODULE hMod; - DWORD cbNeeded; - - if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), - &cbNeeded) ) - { - GetModuleBaseNameA( hProcess, hMod, szProcessName, - sizeof(szProcessName)/sizeof(TCHAR) ); - - if (QString(szProcessName) == pname) { - CloseHandle( hProcess ); - return processID; - } - } - - CloseHandle( hProcess ); - } - - // Print the process name and identifier. - - //_tprintf( TEXT("%s (PID: %u)\n"), szProcessName, processID ); - - } - } - - return 0; -} - -#else - -#include - -unsigned int ProcessWrapper::currentProcessId() -{ - return getpid(); -} - -bool ProcessWrapper::processExists(unsigned int pid) -{ - return QFile::exists(QString("/proc/%1").arg(pid)); -} - -unsigned int ProcessWrapper::findProcess(const char *name, unsigned int pid_skip) -{ - QString pname("(" + QString(name) + ")"); - QDir pd("/proc"); - QFileInfoList list = pd.entryInfoList(QDir::Dirs | QDir::NoSymLinks | QDir::NoDotAndDotDot); - QFileInfoList::iterator it, it_end = list.end(); - for (it = list.begin(); it != it_end; it++) - { - const QFileInfo &fi = *it; - if (fi.baseName().at(0).isDigit()) { - QFile f(fi.absoluteFilePath()+"/stat"); - if (f.open(QIODevice::ReadOnly)) { - QTextStream ts(&f); - unsigned int pid; ts >> pid; - if (pid == pid_skip) - continue; - QString pn; ts >> pn; - if (pn == pname) - return pid; - } - } - } - - return 0; -} - -#endif - - -ProcessWrapper::ProcessWrapper() -{ -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/processwrapper.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/processwrapper.hh deleted file mode 100644 index 9aa6f1b55e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/processwrapper.hh +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef PROCESSWRAPPER_H -#define PROCESSWRAPPER_H - -class ProcessWrapper -{ -public: - ProcessWrapper(); - - static unsigned int findProcess(const char *name, unsigned int pid_skip = 0); - static unsigned int currentProcessId(); - static bool processExists(unsigned int pid); -}; - -#endif // PROCESSWRAPPER_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/programs.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/programs.cc deleted file mode 100644 index f0a4b513b9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/programs.cc +++ /dev/null @@ -1,317 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "programs.hh" -#include "audiolink.hh" -#include "htmlescape.hh" -#include "utf8.hh" -#include "wstring_qt.hh" -#include "parsecmdline.hh" -#include "qt4x5.hh" - -#include -#include - -namespace Programs { - -using namespace Dictionary; - -namespace { - -class ProgramsDictionary: public Dictionary::Class -{ - Config::Program prg; -public: - - ProgramsDictionary( Config::Program const & prg_ ): - Dictionary::Class( prg_.id.toStdString(), vector< string >() ), - prg( prg_ ) - { - } - - virtual string getName() throw() - { return prg.name.toUtf8().data(); } - - virtual map< Property, string > getProperties() throw() - { return map< Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return 0; } - - virtual unsigned long getWordCount() throw() - { return 0; } - - virtual sptr< WordSearchRequest > prefixMatch( wstring const & word, - unsigned long maxResults ) - throw( std::exception ); - - virtual sptr< DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - -protected: - - virtual void loadIcon() throw(); -}; - -sptr< WordSearchRequest > ProgramsDictionary::prefixMatch( wstring const & word, - unsigned long /*maxResults*/ ) - throw( std::exception ) -{ - if ( prg.type == Config::Program::PrefixMatch ) - return new ProgramWordSearchRequest( gd::toQString( word ), prg ); - else - { - sptr< WordSearchRequestInstant > sr = new WordSearchRequestInstant; - - sr->setUncertain( true ); - - return sr; - } -} - -sptr< Dictionary::DataRequest > ProgramsDictionary::getArticle( - wstring const & word, vector< wstring > const &, wstring const & ) - throw( std::exception ) -{ - switch( prg.type ) - { - case Config::Program::Audio: - { - // Audio results are instantaneous - string result; - - string wordUtf8( Utf8::encode( word ) ); - - result += ""; - - QUrl url; - url.setScheme( "gdprg" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( wordUtf8.c_str() ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += ""; - result += ""; - result += "
\"Play\"/" + - Html::escape( wordUtf8 ) + "
"; - - sptr< DataRequestInstant > ret = new DataRequestInstant( true ); - - ret->getData().resize( result.size() ); - - memcpy( &(ret->getData().front()), result.data(), result.size() ); - return ret; - } - - case Config::Program::Html: - case Config::Program::PlainText: - return new ProgramDataRequest( gd::toQString( word ), prg ); - - default: - return new DataRequestInstant( false ); - } -} - -void ProgramsDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - if( !prg.iconFilename.isEmpty() ) - { - QFileInfo fInfo( QDir( Config::getConfigDir() ), prg.iconFilename ); - if( fInfo.isFile() ) - loadIconFromFile( fInfo.absoluteFilePath(), true ); - } - if( dictionaryIcon.isNull() ) - dictionaryIcon = dictionaryNativeIcon = QIcon(":/icons/programs.png"); - dictionaryIconLoaded = true; -} - -} - -RunInstance::RunInstance(): process( this ) -{ - connect( this, SIGNAL(processFinished()), this, - SLOT(handleProcessFinished()), Qt::QueuedConnection ); - connect( &process, SIGNAL(finished(int)), this, SIGNAL(processFinished())); - connect( &process, SIGNAL(error(QProcess::ProcessError)), this, - SIGNAL(processFinished()) ); -} - -bool RunInstance::start( Config::Program const & prg, QString const & word, - QString & error ) -{ - QStringList args = parseCommandLine( prg.commandLine ); - - if ( !args.empty() ) - { - QString programName = args.first(); - args.pop_front(); - - bool writeToStdInput = true; - - for( int x = 0; x < args.size(); ++x ) - if( args[ x ].indexOf( "%GDWORD%" ) >= 0 ) - { - writeToStdInput = false; - args[ x ].replace( "%GDWORD%", word ); - } - - process.start( programName, args ); - if( writeToStdInput ) - { - process.write( word.toLocal8Bit() ); - process.closeWriteChannel(); - } - - return true; - } - else - { - error = tr( "No program name was given." ); - return false; - } -} - -void RunInstance::handleProcessFinished() -{ - // It seems that sometimes the process isn't finished yet despite being - // signalled as such. So we wait for it here, which should hopefully be - // nearly instant. - process.waitForFinished(); - - QByteArray output = process.readAllStandardOutput(); - - QString error; - if ( process.exitStatus() != QProcess::NormalExit ) - error = tr( "The program has crashed." ); - else - if ( int code = process.exitCode() ) - error = tr( "The program has returned exit code %1." ).arg( code ); - - if ( !error.isEmpty() ) - { - QByteArray err = process.readAllStandardError(); - - if ( !err.isEmpty() ) - error += "\n\n" + QString::fromLocal8Bit( err ); - } - - emit finished( output, error ); -} - -ProgramDataRequest::ProgramDataRequest( QString const & word, - Config::Program const & prg_ ): - prg( prg_ ) -{ - connect( &instance, SIGNAL(finished(QByteArray,QString)), - this, SLOT(instanceFinished(QByteArray,QString)) ); - - QString error; - if ( !instance.start( prg, word, error ) ) - { - setErrorString( error ); - finish(); - } -} - -void ProgramDataRequest::instanceFinished( QByteArray output, QString error ) -{ - if ( !isFinished() ) - { - if ( !output.isEmpty() ) - { - string result = "
"; - result += Html::preformat( QString::fromLocal8Bit( output ).toUtf8().data() ); - break; - default: - result += "html'>"; - // We assume html data is in utf8 encoding already. - result += output.data(); - } - - result += "
"; - - Mutex::Lock _( dataMutex ); - data.resize( result.size() ); - memcpy( data.data(), result.data(), data.size() ); - hasAnyData = true; - } - - if ( !error.isEmpty() ) - setErrorString( error ); - - finish(); - } -} - -void ProgramDataRequest::cancel() -{ - finish(); -} - -ProgramWordSearchRequest::ProgramWordSearchRequest( QString const & word, - Config::Program const & prg_ ): - prg( prg_ ) -{ - connect( &instance, SIGNAL(finished(QByteArray,QString)), - this, SLOT(instanceFinished(QByteArray,QString)) ); - - QString error; - if ( !instance.start( prg, word, error ) ) - { - setErrorString( error ); - finish(); - } -} - -void ProgramWordSearchRequest::instanceFinished( QByteArray output, QString error ) -{ - if ( !isFinished() ) - { - // Handle any Windows artifacts - output.replace( "\r\n", "\n" ); - QStringList result = - QString::fromUtf8( output ).split( "\n", QString::SkipEmptyParts ); - - for( int x = 0; x < result.size(); ++x ) - matches.push_back( Dictionary::WordMatch( gd::toWString( result[ x ] ) ) ); - - if ( !error.isEmpty() ) - setErrorString( error ); - - finish(); - } -} - -void ProgramWordSearchRequest::cancel() -{ - finish(); -} - -vector< sptr< Dictionary::Class > > makeDictionaries( - Config::Programs const & programs ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - for( Config::Programs::const_iterator i = programs.begin(); - i != programs.end(); ++i ) - if ( i->enabled ) - result.push_back( new ProgramsDictionary( *i ) ); - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/programs.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/programs.hh deleted file mode 100644 index 581482acc7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/programs.hh +++ /dev/null @@ -1,84 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __PROGRAMS_HH_INCLUDED__ -#define __PROGRAMS_HH_INCLUDED__ - -#include -#include "dictionary.hh" -#include "config.hh" -#include "wstring.hh" - -/// Support for arbitrary programs. -namespace Programs { - -using std::vector; -using std::string; -using gd::wstring; - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::Programs const & ) - throw( std::exception ); - -class RunInstance: public QObject -{ - Q_OBJECT - QProcess process; - -public: - - RunInstance(); - - // Starts the process. Should only be used once. The finished() signal will - // be emitted once it finishes. If there's an error, returns false and the - // description is saved to 'error'. - bool start( Config::Program const &, QString const & word, QString & error ); - -signals: - // Connect to this signal to get run results - void finished( QByteArray output, QString error ); - - // Used internally only -signals: - void processFinished(); -private slots: - - void handleProcessFinished(); -}; - -class ProgramDataRequest: public Dictionary::DataRequest -{ - Q_OBJECT - Config::Program prg; - RunInstance instance; - -public: - - ProgramDataRequest( QString const & word, Config::Program const & ); - - virtual void cancel(); - -private slots: - - void instanceFinished( QByteArray output, QString error ); -}; - -class ProgramWordSearchRequest: public Dictionary::WordSearchRequest -{ - Q_OBJECT - Config::Program prg; - RunInstance instance; - -public: - - ProgramWordSearchRequest( QString const & word, Config::Program const & ); - - virtual void cancel(); - -private slots: - - void instanceFinished( QByteArray output, QString error ); -}; - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-macos.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-macos.css deleted file mode 100644 index 80ba54b261..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-macos.css +++ /dev/null @@ -1,32 +0,0 @@ -#navToolbar #translateLine -{ - margin-top: 1px; -} - -#navToolbar GroupComboBox -{ - margin-bottom: 1px; - margin-top: 0px; - padding: 2px 18px 2px 4px; -} - -#navToolbar GroupComboBox::drop-down { - padding-right: 2px; - border-right: 1px solid darkgray; -} - -ScanPopup #translateLine -{ - padding: 3px 3px 3px 3px; -} - -ScanPopup GroupComboBox -{ - margin: 2px 0px 4px 1px; - padding: 1px 18px 1px 4px; -} - -ScanPopup GroupComboBox::drop-down { - padding-right: 2px; - border-right: 1px solid darkgray; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-babylon.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-babylon.css deleted file mode 100644 index d80a776053..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-babylon.css +++ /dev/null @@ -1,10 +0,0 @@ -MainWindow #translateLine, ScanPopup #translateLine, MainWindow #searchPane #wordList, MainWindow #dictsPane #dictsList, -MainWindow #historyPane #historyList -{ - background: white; -} - -MainWindow #searchPane #translateLine -{ - font-weight: bold; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-lingoes-blue.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-lingoes-blue.css deleted file mode 100644 index ccb1ad9608..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-lingoes-blue.css +++ /dev/null @@ -1,95 +0,0 @@ -MainWindow { - background-color: #CFDDF0; -} - -MainWindow #menubar { - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0 #F0F6FF, stop:0.5 #D2E0F5, stop:0.9 #DCEBFF, stop:1 #F0F6FF); -} - -MainWindow #menubar::item { - padding: 2px 8px; - background: transparent; -} - -MainWindow #menubar::item:selected { /* when selected using mouse or keyboard */ - background: #839EC7; -} - -MainWindow #menubar::item:pressed { - background: #728AAD; -} - -MainWindow #translateLine, ScanPopup #translateLine, MainWindow #wordList { - background-color: #fff; -} - -MainWindow #centralWidget QTabBar::tab { - border: 1px solid #667B9B; - border-bottom-color: #667B9B; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - padding: 1px 3px; - margin-left: 1px; - margin-top: 2px; - margin-bottom: 2px; - background-color: #CFDDF0; - color: darkslategray; -} - -MainWindow #centralWidget QTabBar::tab:selected { - background-color: #839EC7; - color: #fff; - border-bottom-style: none; -} - -MainWindow #dictsPane #dictsList { - background: #EAF0F8; - color: darkblue; -} - -ArticleView #searchFrame QMenu {background-color: none} -ArticleView QMenu {background-color: none} - -MainWindow #dictionaryBar QToolTip { - background: #839EC7; - color: white; - border-style: none; -} - -QMainWindow::separator { - width: 1px; /* when vertical */ - height: 1px; /* when horizontal */ -} - -#dictsPaneTitleBar { - background: #A8C0E4; - margin: 2px; -} - -/* Colored header for the History Pane */ -#historyPaneTitleBar { - background: #A8C0E4; - margin: 2px; -} - -MainWindow #historyPane #historyList { - background: #EAF0F8; - color: #52627C; -} - -MainStatusBar #text -{ - background: #839EC7; - color: #fff; -} - -ScanPopup #outerFrame -{ - background-color: #CEDDEF; -} - -ScanPopup #dictionaryBar -{ - background: #CEDDEF; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-lingvo.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-lingvo.css deleted file mode 100644 index 04fa8ea9be..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-lingvo.css +++ /dev/null @@ -1,5 +0,0 @@ -MainWindow #translateLine, ScanPopup #translateLine, MainWindow #wordList, MainWindow #dictsPane #dictsList, -MainWindow #historyPane #historyList -{ - background: white; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-modern.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-modern.css deleted file mode 100644 index 04c925bcca..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style-st-modern.css +++ /dev/null @@ -1,68 +0,0 @@ -MainWindow #translateLine, ScanPopup #translateLine, MainWindow #wordList, MainWindow #dictsPane #dictsList, -MainWindow #historyPane #historyList -{ - background: white; -} - -/* WARNING: hides all separators! */ -#navToolbar::separator { - width: 0px; -} - -/* Another way to hide specific separators */ -#navToolbar #beforeOptionsSeparator, #navToolbar #beforeScanPopupSeparator, #navToolbar #afterScanPopupSeparator, #navToolbar #separatorBeforeZoom, #navToolbar #separatorBeforeSave { - background: rgba(0,0,0,0%); - width: 0px; - margin: -3px; -} - - -/* Hide various buttons in the toolbar: */ -#navToolbar #menuButtonXX, #navToolbar #soundButtonXX, #navToolbar #backButtonXX, #navToolbar #forwardButtonXX, #navToolbar #zoomInButtonXX, #navToolbar #zoomOutButtonXX, #navToolbar #zoomBaseButtonXX, #navToolbar #saveArticleButton, #navToolbar #printButton { - width: 0px; - height: 0px; - margin: -3px; -} - -/* remove the main toolbar handle */ -#navToolbar::handle, #dictionaryBar::handle { - image: none; - width: 0px; - margin-left: 1px; -} - -#navToolbar #scanPopupButton { - margin-left: 5px; -} - -/* Colored header for the "Found in Dictionaries:" pane */ -#dictsPaneTitleBar { - background: lightblue; - margin: 2px; -} - -/* Colored header for the History Pane */ -#historyPaneTitleBar { - background: lightsteelblue; - margin: 2px; -} - -/* Thin separators between the main UI and sidebars */ -QMainWindow::separator { - width: 1px; /* when vertical */ - height: 1px; /* when horizontal */ -} - -ScanPopup #goBackButtonAA, -/* ScanPopup #queryError, */ -ScanPopup #goForwardButtonAA, -ScanPopup #wordListButtonXX, -ScanPopup #pronounceButtonAA, -ScanPopup #sendWordButtonXX -/* ScanPopup #showDictionaryBar, */ -/* ScanPopup #pinButton */ -{ - width: 0px; - height: 0px; - margin: -4px; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style.css deleted file mode 100644 index 382dfec779..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt-style.css +++ /dev/null @@ -1,155 +0,0 @@ -MainWindow #translateLine, ScanPopup #translateLine, MainWindow #wordList, MainWindow #dictsPane #dictsList, MainWindow #historyPane #historyList -{ - background: #fefdeb; - color: black; -} - -MainWindow #translateLine[noResults="true"], -ScanPopup #translateLine[noResults="true"] -{ - background: #febb7d; -} - -#navToolbar #menuButton::menu-indicator { - image: none; -} - -#navToolbar #translateLine -{ - border: 1px solid gray; - border-radius: 3px; - padding: 1px 3px 2px 3px; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; - margin-left: 0px; -} - -#navToolbar GroupComboBox -{ - margin-right: 0px; - border: 1px solid gray; - border-right: 1px transparent; - border-radius: 3px; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; - padding: 2px 4px 2px 4px; - background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, - stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); -} - -#navToolbar GroupComboBox:on { - padding: 3px 3px 1px 5px; - background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #D3D3D3, stop: 0.4 #D8D8D8, - stop: 0.5 #DDDDDD, stop: 1.0 #E1E1E1); -} - -#navToolbar GroupComboBox::drop-down { - subcontrol-origin: padding; - subcontrol-position: top right; - width: 15px; - border-left: 1px solid darkgray; - border-right: 1px transparent; -} - -#navToolbar GroupComboBox::down-arrow { - image: url(:/icons/1downarrow.png); -} - -#navToolbar GroupComboBox::down-arrow:on { /* shift the arrow when popup is open */ - top: 1px; - left: 1px; -} - -ArticleView #searchText[noResults="true"] -{ - background: #febb7d; -} - -MainStatusBar #text -{ - border-top-right-radius: 3px; - border-top: 1px solid palette(dark); - border-right: 1px solid palette(dark); - background: palette(window); - padding: 2px; -} - -MainStatusBar #icon -{ - border-top: 1px solid palette(dark); - background: palette(window); - padding: 2px; - padding-left: 4px; - padding-right: 0px; -} - -ScanPopup #translateLine -{ - margin: 0px; - padding: 1px 3px 1px 3px; - border: 1px solid gray; - border-radius: 3px; - border-top-left-radius: 0px; - border-bottom-left-radius: 0px; -} - -ScanPopup GroupComboBox -{ - margin: 0px 0px 0px 1px; - padding: 1px 4px 1px 4px; - border: 1px solid gray; - border-right: 1px transparent; - border-radius: 3px; - border-top-right-radius: 0px; - border-bottom-right-radius: 0px; - background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, - stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); -} - -ScanPopup GroupComboBox:on { - padding: 3px 3px 1px 5px; - background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #D3D3D3, stop: 0.4 #D8D8D8, - stop: 0.5 #DDDDDD, stop: 1.0 #E1E1E1); -} - -ScanPopup GroupComboBox::drop-down { - subcontrol-origin: padding; - subcontrol-position: top right; - width: 15px; - border-left: 1px solid darkgray; - border-right: 1px transparent; -} - -ScanPopup GroupComboBox::down-arrow { - image: url(:/icons/1downarrow.png); -} - -ScanPopup GroupComboBox::down-arrow:on { /* shift the arrow when popup is open */ - top: 1px; - left: 1px; -} - -.ScanPopup #outerFrame -{ - border: 1px solid palette(dark); -} - -.ScanPopup MainStatusBar #text -{ - border-bottom: 1px solid palette(dark); -} - -.ScanPopup MainStatusBar[hasImage="false"] #text -{ - border-left: 1px solid palette(dark); -} - -.ScanPopup MainStatusBar #icon -{ - border-left: 1px solid palette(dark); - border-bottom: 1px solid palette(dark); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt4x5.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt4x5.hh deleted file mode 100644 index 10494a3a6c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qt4x5.hh +++ /dev/null @@ -1,146 +0,0 @@ -/* Thin wrappers for retaining compatibility for both Qt4.x and Qt5.x */ - -#ifndef QT4X5_HH -#define QT4X5_HH - -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) -# define IS_QT_5 0 -#else -# define IS_QT_5 1 -#endif - -#include -#include -#include - -#include -#if IS_QT_5 -#include -#endif - -namespace Qt4x5 -{ - -inline QString escape( QString const & plain ) -{ -#if IS_QT_5 - return plain.toHtmlEscaped(); -#else - return Qt::escape( plain ); -#endif - -} - -namespace AtomicInt -{ - -inline int loadAcquire( QAtomicInt const & ref ) -{ -#if IS_QT_5 - return ref.loadAcquire(); -#else - return ( int )ref; -#endif -} - -} - -namespace Url -{ - -// This wrapper is created due to behavior change of the setPath() method -// See: https://bugreports.qt-project.org/browse/QTBUG-27728 -// https://codereview.qt-project.org/#change,38257 -inline QString ensureLeadingSlash( const QString & path ) -{ - QLatin1Char slash( '/' ); - if ( path.startsWith( slash ) ) - return path; - return slash + path; -} - -inline bool hasQueryItem( QUrl const & url, QString const & key ) -{ -#if IS_QT_5 - return QUrlQuery( url ).hasQueryItem( key ); -#else - return url.hasQueryItem( key ); -#endif -} - -inline QString queryItemValue( QUrl const & url, QString const & item ) -{ -#if IS_QT_5 - return QUrlQuery( url ).queryItemValue( item ); -#else - return url.queryItemValue( item ); -#endif -} - -inline QByteArray encodedQueryItemValue( QUrl const & url, QString const & item ) -{ -#if IS_QT_5 - return QUrlQuery( url ).queryItemValue( item, QUrl::FullyEncoded ).toLatin1(); -#else - return url.encodedQueryItemValue( item.toLatin1() ); -#endif -} - -inline void addQueryItem( QUrl & url, QString const & key, QString const & value ) -{ -#if IS_QT_5 - QUrlQuery urlQuery( url ); - urlQuery.addQueryItem( key, value ); - url.setQuery( urlQuery ); -#else - url.addQueryItem( key, value ); -#endif -} - -inline void removeQueryItem( QUrl & url, QString const & key ) -{ -#if IS_QT_5 - QUrlQuery urlQuery( url ); - urlQuery.removeQueryItem( key ); - url.setQuery( urlQuery ); -#else - url.removeQueryItem( key ); -#endif -} - -inline void setQueryItems( QUrl & url, QList< QPair< QString, QString > > const & query ) -{ -#if IS_QT_5 - QUrlQuery urlQuery( url ); - urlQuery.setQueryItems( query ); - url.setQuery( urlQuery ); -#else - url.setQueryItems( query ); -#endif -} - -inline QString path( QUrl const & url ) -{ -#if IS_QT_5 - return url.path( QUrl::FullyDecoded ); -#else - return url.path(); -#endif -} - -} - -namespace Dom -{ - -#if IS_QT_5 -typedef int size_type; -#else -typedef uint size_type; -#endif - -} - -} - -#endif // QT4X5_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/INSTALL.TXT b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/INSTALL.TXT deleted file mode 100644 index bbb74a9d1f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/INSTALL.TXT +++ /dev/null @@ -1,254 +0,0 @@ -INSTALLATION INSTRUCTIONS - -These instructions refer to the package you are installing as -some-package.tar.gz or some-package.zip. The .zip file is intended for use -on Windows. - -The directory you choose for the installation will be referred to as -your-install-dir. - -Note to Qt Visual Studio Integration users: In the instructions below, -instead of building from command line with nmake, you can use the menu -command 'Qt->Open Solution from .pro file' on the .pro files in the -example and plugin directories, and then build from within Visual -Studio. - -Unpacking and installation --------------------------- - -1. Unpacking the archive (if you have not done so already). - - On Unix and Mac OS X (in a terminal window): - - cd your-install-dir - gunzip some-package.tar.gz - tar xvf some-package.tar - - This creates the subdirectory some-package containing the files. - - On Windows: - - Unpack the .zip archive by right-clicking it in explorer and - choosing "Extract All...". If your version of Windows does not - have zip support, you can use the infozip tools available - from www.info-zip.org. - - If you are using the infozip tools (in a command prompt window): - cd your-install-dir - unzip some-package.zip - -2. Configuring the package. - - The configure script is called "configure" on unix/mac and - "configure.bat" on Windows. It should be run from a command line - after cd'ing to the package directory. - - You can choose whether you want to use the component by including - its source code directly into your project, or build the component - as a dynamic shared library (DLL) that is loaded into the - application at run-time. The latter may be preferable for - technical or licensing (LGPL) reasons. If you want to build a DLL, - run the configure script with the argument "-library". Also see - the note about usage below. - - (Components that are Qt plugins, e.g. styles and image formats, - are by default built as a plugin DLL.) - - The configure script will prompt you in some cases for further - information. Answer these questions and carefully read the license text - before accepting the license conditions. The package cannot be used if - you do not accept the license conditions. - -3. Building the component and examples (when required). - - If a DLL is to be built, or if you would like to build the - examples, next give the commands - - qmake - make [or nmake if your are using Microsoft Visual C++] - - The example program(s) can be found in the directory called - "examples" or "example". - - Components that are Qt plugins, e.g. styles and image formats, are - ready to be used as soon as they are built, so the rest of this - installation instruction can be skipped. - -4. Building the Qt Designer plugin (optional). - - Some of the widget components are provided with plugins for Qt - Designer. To build and install the plugin, cd into the - some-package/plugin directory and give the commands - - qmake - make [or nmake if your are using Microsoft Visual C++] - - Restart Qt Designer to make it load the new widget plugin. - - Note: If you are using the built-in Qt Designer from the Qt Visual - Studio Integration, you will need to manually copy the plugin DLL - file, i.e. copy - %QTDIR%\plugins\designer\some-component.dll - to the Qt Visual Studio Integration plugin path, typically: - C:\Program Files\Trolltech\Qt VS Integration\plugins - - Note: If you for some reason are using a Qt Designer that is built - in debug mode, you will need to build the plugin in debug mode - also. Edit the file plugin.pro in the plugin directory, changing - 'release' to 'debug' in the CONFIG line, before running qmake. - - - -Solutions components are intended to be used directly from the package -directory during development, so there is no 'make install' procedure. - - -Using a component in your project ---------------------------------- - -To use this component in your project, add the following line to the -project's .pro file (or do the equivalent in your IDE): - - include(your-install-dir/some-package/src/some-package.pri) - -This adds the package's sources and headers to the SOURCES and HEADERS -project variables respectively (or, if the component has been -configured as a DLL, it adds that library to the LIBS variable), and -updates INCLUDEPATH to contain the package's src -directory. Additionally, the .pri file may include some dependencies -needed by the package. - -To include a header file from the package in your sources, you can now -simply use: - - #include - -or alternatively, in pre-Qt 4 style: - - #include - -Refer to the documentation to see the classes and headers this -components provides. - - - -Install documentation (optional) --------------------------------- - -The HTML documentation for the package's classes is located in the -your-install-dir/some-package/doc/html/index.html. You can open this -file and read the documentation with any web browser. - -To install the documentation into Qt Assistant (for Qt version 4.4 and -later): - -1. In Assistant, open the Edit->Preferences dialog and choose the - Documentation tab. Click the Add... button and select the file - your-install-dir/some-package/doc/html/some-package.qch - -For Qt versions prior to 4.4, do instead the following: - -1. The directory your-install-dir/some-package/doc/html contains a - file called some-package.dcf. Execute the following commands in a - shell, command prompt or terminal window: - - cd your-install-dir/some-package/doc/html/ - assistant -addContentFile some-package.dcf - -The next time you start Qt Assistant, you can access the package's -documentation. - - -Removing the documentation from assistant ------------------------------------------ - -If you have installed the documentation into Qt Assistant, and want to uninstall it, do as follows, for Qt version 4.4 and later: - -1. In Assistant, open the Edit->Preferences dialog and choose the - Documentation tab. In the list of Registered Documentation, select - the item com.nokia.qtsolutions.some-package_version, and click - the Remove button. - -For Qt versions prior to 4.4, do instead the following: - -1. The directory your-install-dir/some-package/doc/html contains a - file called some-package.dcf. Execute the following commands in a - shell, command prompt or terminal window: - - cd your-install-dir/some-package/doc/html/ - assistant -removeContentFile some-package.dcf - - - -Using the component as a DLL ----------------------------- - -1. Normal components - - The shared library (DLL) is built and placed in the - some-package/lib directory. It is intended to be used directly - from there during development. When appropriate, both debug and - release versions are built, since the run-time linker will in some - cases refuse to load a debug-built DLL into a release-built - application or vice versa. - - The following steps are taken by default to help the dynamic - linker to locate the DLL at run-time (during development): - - Unix: The some-package.pri file will add linker instructions to - add the some-package/lib directory to the rpath of the - executable. (When distributing, or if your system does not support - rpath, you can copy the shared library to another place that is - searched by the dynamic linker, e.g. the "lib" directory of your - Qt installation.) - - Mac: The full path to the library is hardcoded into the library - itself, from where it is copied into the executable at link time, - and ready by the dynamic linker at run-time. (When distributing, - you will want to edit these hardcoded paths in the same way as for - the Qt DLLs. Refer to the document "Deploying an Application on - Mac OS X" in the Qt Reference Documentation.) - - Windows: the .dll file(s) are copied into the "bin" directory of - your Qt installation. The Qt installation will already have set up - that directory to be searched by the dynamic linker. - - -2. Plugins - - For Qt Solutions plugins (e.g. image formats), both debug and - release versions of the plugin are built by default when - appropriate, since in some cases the release Qt library will not - load a debug plugin, and vice versa. The plugins are automatically - copied into the plugins directory of your Qt installation when - built, so no further setup is required. - - Plugins may also be built statically, i.e. as a library that will be - linked into your application executable, and so will not need to - be redistributed as a separate plugin DLL to end users. Static - building is required if Qt itself is built statically. To do it, - just add "static" to the CONFIG variable in the plugin/plugin.pro - file before building. Refer to the "Static Plugins" section in the - chapter "How to Create Qt Plugins" for explanation of how to use a - static plugin in your application. The source code of the example - program(s) will also typically contain the relevant instructions - as comments. - - - -Uninstalling ------------- - - The following command will remove any fils that have been - automatically placed outside the package directory itself during - installation and building - - make distclean [or nmake if your are using Microsoft Visual C++] - - If Qt Assistant documentation or Qt Designer plugins have been - installed, they can be uninstalled manually, ref. above. - - -Enjoy! :) - -- The Qt Solutions Team. diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/README.TXT b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/README.TXT deleted file mode 100644 index 06abb09559..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/README.TXT +++ /dev/null @@ -1,33 +0,0 @@ -Qt Solutions Component: Single Application - -The QtSingleApplication component provides support for -applications that can be only started once per user. - - - -Version history: - -2.0: - Version 1.3 ported to Qt 4. - -2.1: - Fix compilation problem on Mac. - -2.2: - Really fix the Mac compilation problem. - - Mac: fix crash due to wrong object releasing. - - Mac: Fix memory leak. - -2.3: - Windows: Force creation of internal widget to make it work - with Qt 4.2. - -2.4: - Fix the system for automatic window raising on message - reception. NOTE: minor API change. - -2.5: - Mac: Fix isRunning() to work and report correctly. - -2.6: - - initialize() is now obsolete, no longer necessary to call - it - - - Fixed race condition where multiple instances migth be started - - - QtSingleCoreApplication variant provided for non-GUI (console) - usage - - Complete reimplementation. Visible changes: - - LGPL release. - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/buildlib/buildlib.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/buildlib/buildlib.pro deleted file mode 100644 index 37dddcdaa0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/buildlib/buildlib.pro +++ /dev/null @@ -1,13 +0,0 @@ -TEMPLATE=lib -CONFIG += qt dll qtsingleapplication-buildlib -mac:CONFIG += absolute_library_soname -win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release build_all -include(../src/qtsingleapplication.pri) -TARGET = $$QTSINGLEAPPLICATION_LIBNAME -DESTDIR = $$QTSINGLEAPPLICATION_LIBDIR -win32 { - DLLDESTDIR = $$[QT_INSTALL_BINS] - QMAKE_DISTCLEAN += $$[QT_INSTALL_BINS]\\$${QTSINGLEAPPLICATION_LIBNAME}.dll -} -target.path = $$DESTDIR -INSTALLS += target diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/common.pri b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/common.pri deleted file mode 100644 index bae27173d5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/common.pri +++ /dev/null @@ -1,6 +0,0 @@ -exists(config.pri):infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtsingleapplication-uselib -TEMPLATE += fakelib -QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleApplication-head) -TEMPLATE -= fakelib -QTSINGLEAPPLICATION_LIBDIR = $$PWD/lib -unix:qtsingleapplication-uselib:!qtsingleapplication-buildlib:QMAKE_RPATHDIR += $$QTSINGLEAPPLICATION_LIBDIR diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/configure b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/configure deleted file mode 100755 index 3c4edfff2b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/configure +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -if [ "x$1" != "x" -a "x$1" != "x-library" ]; then - echo "Usage: $0 [-library]" - echo - echo "-library: Build the component as a dynamic library (DLL). Default is to" - echo " include the component source code directly in the application." - echo - exit 0 -fi - -rm -f config.pri -if [ "x$1" = "x-library" ]; then - echo "Configuring to build this component as a dynamic library." - echo "SOLUTIONS_LIBRARY = yes" > config.pri -fi - -echo -echo "This component is now configured." -echo -echo "To build the component library (if requested) and example(s)," -echo "run qmake and your make command." -echo -echo "To remove or reconfigure, run make distclean." -echo diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/configure.bat b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/configure.bat deleted file mode 100644 index 339d3cf0fb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/configure.bat +++ /dev/null @@ -1,79 +0,0 @@ -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: -:: Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -:: Contact: http://www.qt-project.org/legal -:: -:: This file is part of the Qt Solutions component. -:: -:: $QT_BEGIN_LICENSE:BSD$ -:: You may use this file under the terms of the BSD license as follows: -:: -:: "Redistribution and use in source and binary forms, with or without -:: modification, are permitted provided that the following conditions are -:: met: -:: * Redistributions of source code must retain the above copyright -:: notice, this list of conditions and the following disclaimer. -:: * Redistributions in binary form must reproduce the above copyright -:: notice, this list of conditions and the following disclaimer in -:: the documentation and/or other materials provided with the -:: distribution. -:: * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -:: of its contributors may be used to endorse or promote products derived -:: from this software without specific prior written permission. -:: -:: -:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -:: "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -:: LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -:: A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -:: OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -:: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -:: LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -:: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -:: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -:: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -:: OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -:: -:: $QT_END_LICENSE$ -:: -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -@echo off - -rem -rem "Main" -rem - -if not "%1"=="" ( - if not "%1"=="-library" ( - call :PrintUsage - goto EOF - ) -) - -if exist config.pri. del config.pri -if "%1"=="-library" ( - echo Configuring to build this component as a dynamic library. - echo SOLUTIONS_LIBRARY = yes > config.pri -) - -echo . -echo This component is now configured. -echo . -echo To build the component library (if requested) and example(s), -echo run qmake and your make or nmake command. -echo . -echo To remove or reconfigure, run make (nmake) distclean. -echo . - -:PrintUsage -echo Usage: configure.bat [-library] -echo . -echo -library: Build the component as a dynamic library (DLL). Default is to -echo include the component source directly in the application. -echo A DLL may be preferable for technical or licensing (LGPL) reasons. -echo . -goto EOF - - -:EOF diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/classic.css b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/classic.css deleted file mode 100644 index b8cae8e1ed..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/classic.css +++ /dev/null @@ -1,284 +0,0 @@ -BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { - font-family: Arial, Geneva, Helvetica, sans-serif; -} -H1 { - text-align: center; - font-size: 160%; -} -H2 { - font-size: 120%; -} -H3 { - font-size: 100%; -} - -h3.fn,span.fn -{ - background-color: #eee; - border-width: 1px; - border-style: solid; - border-color: #ddd; - font-weight: bold; - padding: 6px 0px 6px 10px; - margin: 42px 0px 0px 0px; -} - -hr { - border: 0; - color: #a0a0a0; - background-color: #ccc; - height: 1px; - width: 100%; - text-align: left; - margin: 34px 0px 34px 0px; -} - -table.valuelist { - border-width: 1px 1px 1px 1px; - border-style: solid; - border-color: #dddddd; - border-collapse: collapse; - background-color: #f0f0f0; -} - -table.indextable { - border-width: 1px 1px 1px 1px; - border-style: solid; - border-collapse: collapse; - background-color: #f0f0f0; - border-color:#555; - font-size: 100%; -} - -table td.largeindex { - border-width: 1px 1px 1px 1px; - border-collapse: collapse; - background-color: #f0f0f0; - border-color:#555; - font-size: 120%; -} - -table.valuelist th { - border-width: 1px 1px 1px 2px; - padding: 4px; - border-style: solid; - border-color: #666; - color:white; - background-color:#666; -} - -th.titleheader { - border-width: 1px 0px 1px 0px; - padding: 2px; - border-style: solid; - border-color: #666; - color:white; - background-color:#555; - background-image:url('images/gradient.png')}; - background-repeat: repeat-x; - font-size: 100%; -} - - -th.largeheader { - border-width: 1px 0px 1px 0px; - padding: 4px; - border-style: solid; - border-color: #444; - color:white; - background-color:#555555; - font-size: 120%; -} - -p { - - margin-left: 4px; - margin-top: 8px; - margin-bottom: 8px; -} - -a:link -{ - color: #0046ad; - text-decoration: none -} - -a:visited -{ - color: #672967; - text-decoration: none -} - -a.obsolete -{ - color: #661100; - text-decoration: none -} - -a.compat -{ - color: #661100; - text-decoration: none -} - -a.obsolete:visited -{ - color: #995500; - text-decoration: none -} - -a.compat:visited -{ - color: #995500; - text-decoration: none -} - -body -{ - background: #ffffff; - color: black -} - -table.generic, table.annotated -{ - border-width: 1px; - border-color:#bbb; - border-style:solid; - border-collapse:collapse; -} - -table td.memItemLeft { - width: 180px; - padding: 2px 0px 0px 8px; - margin: 4px; - border-width: 1px; - border-color: #E0E0E0; - border-style: none; - font-size: 100%; - white-space: nowrap -} - -table td.memItemRight { - padding: 2px 8px 0px 8px; - margin: 4px; - border-width: 1px; - border-color: #E0E0E0; - border-style: none; - font-size: 100%; -} - -table tr.odd { - background: #f0f0f0; - color: black; -} - -table tr.even { - background: #e4e4e4; - color: black; -} - -table.annotated th { - padding: 3px; - text-align: left -} - -table.annotated td { - padding: 3px; -} - -table tr pre -{ - padding-top: 0px; - padding-bottom: 0px; - padding-left: 0px; - padding-right: 0px; - border: none; - background: none -} - -tr.qt-style -{ - background: #96E066; - color: black -} - -body pre -{ - padding: 0.2em; - border: #e7e7e7 1px solid; - background: #f1f1f1; - color: black -} - -table tr.qt-code pre -{ - padding: 0.2em; - border: #e7e7e7 1px solid; - background: #f1f1f1; - color: black -} - -span.preprocessor, span.preprocessor a -{ - color: darkblue; -} - -span.comment -{ - color: darkred; - font-style: italic -} - -span.string,span.char -{ - color: darkgreen; -} - -.title -{ - text-align: center -} - -.subtitle -{ - font-size: 0.8em -} - -.small-subtitle -{ - font-size: 0.65em -} - -.qmlitem { - padding: 0; -} - -.qmlname { - white-space: nowrap; -} - -.qmltype { - text-align: center; - font-size: 160%; -} - -.qmlproto { - background-color: #eee; - border-width: 1px; - border-style: solid; - border-color: #ddd; - font-weight: bold; - padding: 6px 10px 6px 10px; - margin: 42px 0px 0px 0px; -} - -.qmlreadonly { - float: right; - color: red -} - -.qmldoc { -} - -*.qmlitem p { -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/images/qt-logo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/images/qt-logo.png deleted file mode 100644 index 794162f5af..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/images/qt-logo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/index.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/index.html deleted file mode 100644 index af9dab10a9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - Single Application - - - - - - - -
  Home

Single Application
-

-
-

Description

-

The QtSingleApplication component provides support for applications that can be only started once per user.

-

For some applications it is useful or even critical that they are started only once by any user. Future attempts to start the application should activate any already running instance, and possibly perform requested actions, e.g. loading a file, in that instance.

-

The QtSingleApplication class provides an interface to detect a running instance, and to send command strings to that instance. For console (non-GUI) applications, the QtSingleCoreApplication variant is provided, which avoids dependency on QtGui.

- -

Classes

- - -

Examples

- - -

Tested platforms

-
    -
  • Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005
  • -
  • Qt 4.4, 4.5 / Linux / gcc
  • -
  • Qt 4.4, 4.5 / MacOS X 10.5 / gcc
  • -
-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-example-loader.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-example-loader.html deleted file mode 100644 index 6a3663298c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-example-loader.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - Loading Documents - - - - - - - -
  Home

Loading Documents
-

-

The application in this example loads or prints the documents passed as commandline parameters to further instances of this application.

-
 /****************************************************************************
- **
- ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
- ** Contact: http://www.qt-project.org/legal
- **
- ** This file is part of the Qt Solutions component.
- **
- ** You may use this file under the terms of the BSD license as follows:
- **
- ** "Redistribution and use in source and binary forms, with or without
- ** modification, are permitted provided that the following conditions are
- ** met:
- **   * Redistributions of source code must retain the above copyright
- **     notice, this list of conditions and the following disclaimer.
- **   * Redistributions in binary form must reproduce the above copyright
- **     notice, this list of conditions and the following disclaimer in
- **     the documentation and/or other materials provided with the
- **     distribution.
- **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
- **     the names of its contributors may be used to endorse or promote
- **     products derived from this software without specific prior written
- **     permission.
- **
- ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
- **
- ****************************************************************************/
-
- #include <qtsingleapplication.h>
- #include <QtCore/QFile>
- #include <QtGui/QMainWindow>
- #include <QtGui/QPrinter>
- #include <QtGui/QPainter>
- #include <QtGui/QTextEdit>
- #include <QtGui/QMdiArea>
- #include <QtCore/QTextStream>
-
- class MainWindow : public QMainWindow
- {
-     Q_OBJECT
- public:
-     MainWindow();
-
- public slots:
-     void handleMessage(const QString& message);
-
- signals:
-     void needToShow();
-
- private:
-     QMdiArea *workspace;
- };
-

The user interface in this application is a QMainWindow subclass with a QMdiArea as the central widget. It implements a slot handleMessage() that will be connected to the messageReceived() signal of the QtSingleApplication class.

-
 MainWindow::MainWindow()
- {
-     workspace = new QMdiArea(this);
-
-     setCentralWidget(workspace);
- }
-

The MainWindow constructor creates a minimal user interface.

-
 void MainWindow::handleMessage(const QString& message)
- {
-     enum Action {
-         Nothing,
-         Open,
-         Print
-     } action;
-
-     action = Nothing;
-     QString filename = message;
-     if (message.toLower().startsWith("/print ")) {
-         filename = filename.mid(7);
-         action = Print;
-     } else if (!message.isEmpty()) {
-         action = Open;
-     }
-     if (action == Nothing) {
-         emit needToShow();
-         return;
-     }
-
-     QFile file(filename);
-     QString contents;
-     if (file.open(QIODevice::ReadOnly))
-         contents = file.readAll();
-     else
-         contents = "[[Error: Could not load file " + filename + "]]";
-
-     QTextEdit *view = new QTextEdit;
-     view->setPlainText(contents);
-
-     switch(action) {
-

The handleMessage() slot interprets the message passed in as a filename that can be prepended with /print to indicate that the file should just be printed rather than loaded.

-
     case Print:
-         {
-             QPrinter printer;
-             view->print(&printer);
-             delete view;
-         }
-         break;
-
-     case Open:
-         {
-             workspace->addSubWindow(view);
-             view->setWindowTitle(message);
-             view->show();
-             emit needToShow();
-         }
-         break;
-     default:
-         break;
-     };
- }
-

Loading the file will also activate the window.

-
 #include "main.moc"
-
- int main(int argc, char **argv)
- {
-     QtSingleApplication instance("File loader QtSingleApplication example", argc, argv);
-     QString message;
-     for (int a = 1; a < argc; ++a) {
-         message += argv[a];
-         if (a < argc-1)
-             message += " ";
-     }
-
-     if (instance.sendMessage(message))
-         return 0;
-

The main entry point function creates a QtSingleApplication object, and creates a message to send to a running instance of the application. If the message was sent successfully the process exits immediately.

-
     MainWindow mw;
-     mw.handleMessage(message);
-     mw.show();
-
-     QObject::connect(&instance, SIGNAL(messageReceived(const QString&)),
-                      &mw, SLOT(handleMessage(const QString&)));
-
-     instance.setActivationWindow(&mw, false);
-     QObject::connect(&mw, SIGNAL(needToShow()), &instance, SLOT(activateWindow()));
-
-     return instance.exec();
- }
-

If the message could not be sent the application starts up. Note that false is passed to the call to setActivationWindow() to prevent automatic activation for every message received, e.g. when the application should just print a file. Instead, the message handling function determines whether activation is requested, and signals that by emitting the needToShow() signal. This is then simply connected directly to QtSingleApplication's activateWindow() slot.

-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-example-trivial.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-example-trivial.html deleted file mode 100644 index 5e60cfa4f5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-example-trivial.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - A Trivial Example - - - - - - - -
  Home

A Trivial Example
-

-

The application in this example has a log-view that displays messages sent by further instances of the same application.

-

The example demonstrates the use of the QtSingleApplication class to detect and communicate with a running instance of the application using the sendMessage() API. The messageReceived() signal is used to display received messages in a QTextEdit log.

-
 /****************************************************************************
- **
- ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
- ** Contact: http://www.qt-project.org/legal
- **
- ** This file is part of the Qt Solutions component.
- **
- ** You may use this file under the terms of the BSD license as follows:
- **
- ** "Redistribution and use in source and binary forms, with or without
- ** modification, are permitted provided that the following conditions are
- ** met:
- **   * Redistributions of source code must retain the above copyright
- **     notice, this list of conditions and the following disclaimer.
- **   * Redistributions in binary form must reproduce the above copyright
- **     notice, this list of conditions and the following disclaimer in
- **     the documentation and/or other materials provided with the
- **     distribution.
- **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
- **     the names of its contributors may be used to endorse or promote
- **     products derived from this software without specific prior written
- **     permission.
- **
- ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
- **
- ****************************************************************************/
-
- #include <qtsingleapplication.h>
- #include <QtGui/QTextEdit>
-
- class TextEdit : public QTextEdit
- {
-     Q_OBJECT
- public:
-     TextEdit(QWidget *parent = 0)
-         : QTextEdit(parent)
-     {}
- public slots:
-     void append(const QString &str)
-     {
-         QTextEdit::append(str);
-     }
- };
-
- #include "main.moc"
-
- int main(int argc, char **argv)
- {
-     QtSingleApplication instance(argc, argv);
-

The example has only the main entry point function. A QtSingleApplication object is created immediately.

-
     if (instance.sendMessage("Wake up!"))
-         return 0;
-

If another instance of this application is already running, sendMessage() will succeed, and this instance just exits immediately.

-
     TextEdit logview;
-     logview.setReadOnly(true);
-     logview.show();
-

Otherwise the instance continues as normal and creates the user interface.

-
     instance.setActivationWindow(&logview);
-
-     QObject::connect(&instance, SIGNAL(messageReceived(const QString&)),
-                      &logview, SLOT(append(const QString&)));
-
-     return instance.exec();
-

The logview object is also set as the application's activation window. Every time a message is received, the window will be raised and activated automatically.

-

The messageReceived() signal is also connected to the QTextEdit's append() slot. Every message received from further instances of this application will be displayed in the log.

-

Finally the event loop is entered.

-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-members.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-members.html deleted file mode 100644 index c995ce3f88..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-members.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - List of All Members for QtSingleApplication - - - - - - - -
  Home

List of All Members for QtSingleApplication

-

This is the complete list of members for QtSingleApplication, including inherited members.

-

- -
-

-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-obsolete.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-obsolete.html deleted file mode 100644 index 0d07dfae33..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication-obsolete.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Obsolete Members for QtSingleApplication - - - - - - - -
  Home

Obsolete Members for QtSingleApplication

-

The following class members are obsolete. They are provided to keep old source code working. We strongly advise against using them in new code.

-

-

Public Functions

- - -
void initialize ( bool dummy = true )   (obsolete)
-
-

Member Function Documentation

-

void QtSingleApplication::initialize ( bool dummy = true )

-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.dcf b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.dcf deleted file mode 100644 index d81f87fbb7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.dcf +++ /dev/null @@ -1,40 +0,0 @@ - - -
-
- QtSingleApplication - activateWindow - activationWindow - id - isRunning - messageReceived - sendMessage - setActivationWindow -
-
-
-
- QtSingleCoreApplication - id - isRunning - messageReceived - sendMessage -
-
-
-
-
- A non-GUI example -
-
- A Trivial Example -
-
- Loading Documents -
-
- Single Application -
-
-
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.html deleted file mode 100644 index 2754a3b9ea..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - QtSingleApplication Class Reference - - - - - - - -
  Home

QtSingleApplication Class Reference

-

The QtSingleApplication class provides an API to detect and communicate with running instances of an application. More...

-
 #include <QtSingleApplication>

Inherits QApplication.

- -
- -

Public Functions

- - - - - - - - - - - -
QtSingleApplication ( int & argc, char ** argv, bool GUIenabled = true )
QtSingleApplication ( const QString & appId, int & argc, char ** argv )
QtSingleApplication ( int & argc, char ** argv, Type type )
QtSingleApplication ( Display * dpy, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )
QtSingleApplication ( Display * dpy, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )
QtSingleApplication ( Display * dpy, const QString & appId, int argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )
QWidget * activationWindow () const
QString id () const
bool isRunning ()
void setActivationWindow ( QWidget * aw, bool activateOnMessage = true )
- -
- -

Public Slots

- - - -
void activateWindow ()
bool sendMessage ( const QString & message, int timeout = 5000 )
- -
- -

Signals

- - -
void messageReceived ( const QString & message )
- -

Additional Inherited Members

- - -
-

Detailed Description

-

The QtSingleApplication class provides an API to detect and communicate with running instances of an application.

-

This class allows you to create applications where only one instance should be running at a time. I.e., if the user tries to launch another instance, the already running instance will be activated instead. Another usecase is a client-server system, where the first started instance will assume the role of server, and the later instances will act as clients of that server.

-

By default, the full path of the executable file is used to determine whether two processes are instances of the same application. You can also provide an explicit identifier string that will be compared instead.

-

The application should create the QtSingleApplication object early in the startup phase, and call isRunning() to find out if another instance of this application is already running. If isRunning() returns false, it means that no other instance is running, and this instance has assumed the role as the running instance. In this case, the application should continue with the initialization of the application user interface before entering the event loop with exec(), as normal.

-

The messageReceived() signal will be emitted when the running application receives messages from another instance of the same application. When a message is received it might be helpful to the user to raise the application so that it becomes visible. To facilitate this, QtSingleApplication provides the setActivationWindow() function and the activateWindow() slot.

-

If isRunning() returns true, another instance is already running. It may be alerted to the fact that another instance has started by using the sendMessage() function. Also data such as startup parameters (e.g. the name of the file the user wanted this new instance to open) can be passed to the running instance with this function. Then, the application should terminate (or enter client mode).

-

If isRunning() returns true, but sendMessage() fails, that is an indication that the running instance is frozen.

-

Here's an example that shows how to convert an existing application to use QtSingleApplication. It is very simple and does not make use of all QtSingleApplication's functionality (see the examples for that).

-
 // Original
- int main(int argc, char **argv)
- {
-     QApplication app(argc, argv);
-
-     MyMainWidget mmw;
-     mmw.show();
-     return app.exec();
- }
-
- // Single instance
- int main(int argc, char **argv)
- {
-     QtSingleApplication app(argc, argv);
-
-     if (app.isRunning())
-         return !app.sendMessage(someDataString);
-
-     MyMainWidget mmw;
-     app.setActivationWindow(&mmw);
-     mmw.show();
-     return app.exec();
- }
-

Once this QtSingleApplication instance is destroyed (normally when the process exits or crashes), when the user next attempts to run the application this instance will not, of course, be encountered. The next instance to call isRunning() or sendMessage() will assume the role as the new running instance.

-

For console (non-GUI) applications, QtSingleCoreApplication may be used instead of this class, to avoid the dependency on the QtGui library.

-

See also QtSingleCoreApplication.

-
-

Member Function Documentation

-

QtSingleApplication::QtSingleApplication ( int & argc, char ** argv, bool GUIenabled = true )

-

Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). argc, argv, and GUIenabled are passed on to the QAppliation constructor.

-

If you are creating a console application (i.e. setting GUIenabled to false), you may consider using QtSingleCoreApplication instead.

-

QtSingleApplication::QtSingleApplication ( const QString & appId, int & argc, char ** argv )

-

Creates a QtSingleApplication object with the application identifier appId. argc and argv are passed on to the QAppliation constructor.

-

QtSingleApplication::QtSingleApplication ( int & argc, char ** argv, Type type )

-

Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). argc, argv, and type are passed on to the QAppliation constructor.

-

QtSingleApplication::QtSingleApplication ( Display * dpy, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )

-

Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). dpy, visual, and cmap are passed on to the QApplication constructor.

-

QtSingleApplication::QtSingleApplication ( Display * dpy, int & argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )

-

Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). dpy, argc, argv, visual, and cmap are passed on to the QApplication constructor.

-

QtSingleApplication::QtSingleApplication ( Display * dpy, const QString & appId, int argc, char ** argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap = 0 )

-

Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be appId. dpy, argc, argv, visual, and cmap are passed on to the QApplication constructor.

-

void QtSingleApplication::activateWindow ()   [slot]

-

De-minimizes, raises, and activates this application's activation window. This function does nothing if no activation window has been set.

-

This is a convenience function to show the user that this application instance has been activated when he has tried to start another instance.

-

This function should typically be called in response to the messageReceived() signal. By default, that will happen automatically, if an activation window has been set.

-

See also setActivationWindow(), messageReceived(), and initialize().

-

QWidget * QtSingleApplication::activationWindow () const

-

Returns the applications activation window if one has been set by calling setActivationWindow(), otherwise returns 0.

-

See also setActivationWindow().

-

QString QtSingleApplication::id () const

-

Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application.

-

bool QtSingleApplication::isRunning ()

-

Returns true if another instance of this application is running; otherwise false.

-

This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session).

-

See also sendMessage().

-

void QtSingleApplication::messageReceived ( const QString & message )   [signal]

-

This signal is emitted when the current instance receives a message from another instance of this application.

-

See also sendMessage(), setActivationWindow(), and activateWindow().

-

bool QtSingleApplication::sendMessage ( const QString & message, int timeout = 5000 )   [slot]

-

Tries to send the text message to the currently running instance. The QtSingleApplication object in the running instance will emit the messageReceived() signal when it receives the message.

-

This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within timeout milliseconds, this function return false.

-

See also isRunning() and messageReceived().

-

void QtSingleApplication::setActivationWindow ( QWidget * aw, bool activateOnMessage = true )

-

Sets the activation window of this application to aw. The activation window is the widget that will be activated by activateWindow(). This is typically the application's main window.

-

If activateOnMessage is true (the default), the window will be activated automatically every time a message is received, just prior to the messageReceived() signal being emitted.

-

See also activationWindow(), activateWindow(), and messageReceived().

-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.index b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.index deleted file mode 100644 index 56052c2a2d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.index +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.qhp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.qhp deleted file mode 100644 index ff42d9df48..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsingleapplication.qhp +++ /dev/null @@ -1,53 +0,0 @@ - - - com.nokia.qtsolutions.qtsingleapplication_head - qdoc - - qt - solutions - qtsingleapplication - - - qt - solutions - qtsingleapplication - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - qtsingleapplication.html - index.html - qtsingleapplication-example-trivial.html - qtsinglecoreapplication.html - qtsingleapplication-example-loader.html - qtsinglecoreapplication-example-console.html - classic.css - images/qt-logo.png - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication-example-console.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication-example-console.html deleted file mode 100644 index 18a9ae89bf..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication-example-console.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - A non-GUI example - - - - - - - -
  Home

A non-GUI example
-

-

This example shows how to use the single-application functionality in a console application. It does not require the QtGui library at all.

-

The only differences from the GUI application usage demonstrated in the other examples are:

-

1) The .pro file should include qtsinglecoreapplication.pri instead of qtsingleapplication.pri

-

2) The class name is QtSingleCoreApplication instead of QtSingleApplication.

-

3) No calls are made regarding window activation, for obvious reasons.

-

console.pro:

-
 TEMPLATE   = app
- CONFIG    += console
- SOURCES   += main.cpp
- include(../../src/qtsinglecoreapplication.pri)
- QT -= gui
-

main.cpp:

-
 /****************************************************************************
- **
- ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
- ** Contact: http://www.qt-project.org/legal
- **
- ** This file is part of the Qt Solutions component.
- **
- ** You may use this file under the terms of the BSD license as follows:
- **
- ** "Redistribution and use in source and binary forms, with or without
- ** modification, are permitted provided that the following conditions are
- ** met:
- **   * Redistributions of source code must retain the above copyright
- **     notice, this list of conditions and the following disclaimer.
- **   * Redistributions in binary form must reproduce the above copyright
- **     notice, this list of conditions and the following disclaimer in
- **     the documentation and/or other materials provided with the
- **     distribution.
- **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
- **     the names of its contributors may be used to endorse or promote
- **     products derived from this software without specific prior written
- **     permission.
- **
- ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
- **
- ****************************************************************************/
-
- #include "qtsinglecoreapplication.h"
- #include <QtCore/QDebug>
-
- void report(const QString& msg)
- {
-     qDebug("[%i] %s", (int)QCoreApplication::applicationPid(), qPrintable(msg));
- }
-
- class MainClass : public QObject
- {
-     Q_OBJECT
- public:
-     MainClass()
-         : QObject()
-         {}
-
- public slots:
-     void handleMessage(const QString& message)
-         {
-             report( "Message received: \"" + message + "\"");
-         }
- };
-
- int main(int argc, char **argv)
- {
-     report("Starting up");
-
-     QtSingleCoreApplication app(argc, argv);
-
-     if (app.isRunning()) {
-         QString msg(QString("Hi master, I am %1.").arg(QCoreApplication::applicationPid()));
-         bool sentok = app.sendMessage(msg, 2000);
-         QString rep("Another instance is running, so I will exit.");
-         rep += sentok ? " Message sent ok." : " Message sending failed; the other instance may be frozen.";
-         report(rep);
-         return 0;
-     } else {
-         report("No other instance is running; so I will.");
-         MainClass mainObj;
-         QObject::connect(&app, SIGNAL(messageReceived(const QString&)),
-                          &mainObj, SLOT(handleMessage(const QString&)));
-         return app.exec();
-     }
- }
-
- #include "main.moc"
-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication-members.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication-members.html deleted file mode 100644 index 69fb858167..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication-members.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - List of All Members for QtSingleCoreApplication - - - - - - - -
  Home

List of All Members for QtSingleCoreApplication

-

This is the complete list of members for QtSingleCoreApplication, including inherited members.

-

- -
-

-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication.html b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication.html deleted file mode 100644 index a20cf2f4f3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/html/qtsinglecoreapplication.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - QtSingleCoreApplication Class Reference - - - - - - - -
  Home

QtSingleCoreApplication Class Reference

-

A variant of the QtSingleApplication class for non-GUI applications. More...

-
 #include <QtSingleCoreApplication>

Inherits QCoreApplication.

- -
- -

Public Functions

- - - - - -
QtSingleCoreApplication ( int & argc, char ** argv )
QtSingleCoreApplication ( const QString & appId, int & argc, char ** argv )
QString id () const
bool isRunning ()
- -
- -

Public Slots

- - -
bool sendMessage ( const QString & message, int timeout = 5000 )
- -
- -

Signals

- - -
void messageReceived ( const QString & message )
- -

Additional Inherited Members

- - -
-

Detailed Description

-

A variant of the QtSingleApplication class for non-GUI applications.

-

This class is a variant of QtSingleApplication suited for use in console (non-GUI) applications. It is an extension of QCoreApplication (instead of QApplication). It does not require the QtGui library.

-

The API and usage is identical to QtSingleApplication, except that functions relating to the "activation window" are not present, for obvious reasons. Please refer to the QtSingleApplication documentation for explanation of the usage.

-

A QtSingleCoreApplication instance can communicate to a QtSingleApplication instance if they share the same application id. Hence, this class can be used to create a light-weight command-line tool that sends commands to a GUI application.

-

See also QtSingleApplication.

-
-

Member Function Documentation

-

QtSingleCoreApplication::QtSingleCoreApplication ( int & argc, char ** argv )

-

Creates a QtSingleCoreApplication object. The application identifier will be QCoreApplication::applicationFilePath(). argc and argv are passed on to the QCoreAppliation constructor.

-

QtSingleCoreApplication::QtSingleCoreApplication ( const QString & appId, int & argc, char ** argv )

-

Creates a QtSingleCoreApplication object with the application identifier appId. argc and argv are passed on to the QCoreAppliation constructor.

-

QString QtSingleCoreApplication::id () const

-

Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application.

-

bool QtSingleCoreApplication::isRunning ()

-

Returns true if another instance of this application is running; otherwise false.

-

This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session).

-

See also sendMessage().

-

void QtSingleCoreApplication::messageReceived ( const QString & message )   [signal]

-

This signal is emitted when the current instance receives a message from another instance of this application.

-

See also sendMessage().

-

bool QtSingleCoreApplication::sendMessage ( const QString & message, int timeout = 5000 )   [slot]

-

Tries to send the text message to the currently running instance. The QtSingleCoreApplication object in the running instance will emit the messageReceived() signal when it receives the message.

-

This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within timeout milliseconds, this function return false.

-

See also isRunning() and messageReceived().

-


- - - - -
Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)Trademarks
Qt Solutions
- diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/images/qt-logo.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/images/qt-logo.png deleted file mode 100644 index 794162f5af..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/images/qt-logo.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/index.qdoc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/index.qdoc deleted file mode 100644 index 6a2a768a73..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/doc/index.qdoc +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page index.html - \title Single Application - - \section1 Description - - The QtSingleApplication component provides support - for applications that can be only started once per user. - - - - For some applications it is useful or even critical that they are started - only once by any user. Future attempts to start the application should - activate any already running instance, and possibly perform requested - actions, e.g. loading a file, in that instance. - - The QtSingleApplication class provides an interface to detect a running - instance, and to send command strings to that instance. - For console (non-GUI) applications, the QtSingleCoreApplication variant is provided, which avoids dependency on QtGui. - - - - - \section1 Classes - \list - \i QtSingleApplication \i QtSingleCoreApplication\endlist - - \section1 Examples - \list - \i \link qtsingleapplication-example-trivial.html A Trivial Example \endlink \i \link qtsingleapplication-example-loader.html Loading Documents \endlink \i \link qtsinglecoreapplication-example-console.html A Non-GUI Example \endlink \endlist - - - - - - - \section1 Tested platforms - \list - \i Qt 4.4, 4.5 / Windows XP / MSVC.NET 2005 - \i Qt 4.4, 4.5 / Linux / gcc - \i Qt 4.4, 4.5 / MacOS X 10.5 / gcc - \endlist - - - - -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/console.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/console.pro deleted file mode 100644 index e0390e2335..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/console.pro +++ /dev/null @@ -1,5 +0,0 @@ -TEMPLATE = app -CONFIG += console -SOURCES += main.cpp -include(../../src/qtsinglecoreapplication.pri) -QT -= gui diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/console.qdoc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/console.qdoc deleted file mode 100644 index 77b0d736e8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/console.qdoc +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! \page qtsinglecoreapplication-example-console.html - \title A non-GUI example - - This example shows how to use the single-application functionality - in a console application. It does not require the \c QtGui library - at all. - - The only differences from the GUI application usage demonstrated - in the other examples are: - - 1) The \c.pro file should include \c qtsinglecoreapplication.pri - instead of \c qtsingleapplication.pri - - 2) The class name is \c QtSingleCoreApplication instead of \c - QtSingleApplication. - - 3) No calls are made regarding window activation, for obvious reasons. - - console.pro: - \quotefile console/console.pro - - main.cpp: - \quotefile console/main.cpp - -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/main.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/main.cpp deleted file mode 100644 index 652feb931b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/console/main.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include "qtsinglecoreapplication.h" -#include - - -void report(const QString& msg) -{ - qDebug("[%i] %s", (int)QCoreApplication::applicationPid(), qPrintable(msg)); -} - -class MainClass : public QObject -{ - Q_OBJECT -public: - MainClass() - : QObject() - {} - -public slots: - void handleMessage(const QString& message) - { - report( "Message received: \"" + message + "\""); - } -}; - -int main(int argc, char **argv) -{ - report("Starting up"); - - QtSingleCoreApplication app(argc, argv); - - if (app.isRunning()) { - QString msg(QString("Hi master, I am %1.").arg(QCoreApplication::applicationPid())); - bool sentok = app.sendMessage(msg, 2000); - QString rep("Another instance is running, so I will exit."); - rep += sentok ? " Message sent ok." : " Message sending failed; the other instance may be frozen."; - report(rep); - return 0; - } else { - report("No other instance is running; so I will."); - MainClass mainObj; - QObject::connect(&app, SIGNAL(messageReceived(const QString&)), - &mainObj, SLOT(handleMessage(const QString&))); - return app.exec(); - } -} - - -#include "main.moc" diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/examples.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/examples.pro deleted file mode 100644 index 36b8fd3831..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/examples.pro +++ /dev/null @@ -1,4 +0,0 @@ -TEMPLATE = subdirs -SUBDIRS = trivial \ - loader \ - console diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/file1.qsl b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/file1.qsl deleted file mode 100644 index 50fcd26d6c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/file1.qsl +++ /dev/null @@ -1 +0,0 @@ -File 1 diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/file2.qsl b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/file2.qsl deleted file mode 100644 index 4475433e27..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/file2.qsl +++ /dev/null @@ -1 +0,0 @@ -File 2 diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/loader.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/loader.pro deleted file mode 100644 index 3e52586b32..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/loader.pro +++ /dev/null @@ -1,6 +0,0 @@ -greaterThan(QT_MAJOR_VERSION, 4): QT += printsupport -TEMPLATE = app - -include(../../src/qtsingleapplication.pri) - -SOURCES += main.cpp diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/loader.qdoc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/loader.qdoc deleted file mode 100644 index bfd15d0623..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/loader.qdoc +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! \page qtsingleapplication-example-loader.html - \title Loading Documents - - The application in this example loads or prints the documents - passed as commandline parameters to further instances of this - application. - - \quotefromfile loader/main.cpp - \printuntil }; - The user interface in this application is a QMainWindow subclass - with a QMdiArea as the central widget. It implements a slot - \c handleMessage() that will be connected to the messageReceived() - signal of the QtSingleApplication class. - - \printuntil } - The MainWindow constructor creates a minimal user interface. - - \printto case Print: - The handleMessage() slot interprets the message passed in as a - filename that can be prepended with \e /print to indicate that - the file should just be printed rather than loaded. - - \printto #include - Loading the file will also activate the window. - - \printto mw - The \c main entry point function creates a QtSingleApplication - object, and creates a message to send to a running instance - of the application. If the message was sent successfully the - process exits immediately. - - \printuntil } - If the message could not be sent the application starts up. Note - that \c false is passed to the call to setActivationWindow() to - prevent automatic activation for every message received, e.g. when - the application should just print a file. Instead, the message - handling function determines whether activation is requested, and - signals that by emitting the needToShow() signal. This is then - simply connected directly to QtSingleApplication's - activateWindow() slot. -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/main.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/main.cpp deleted file mode 100644 index f55e57ac36..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/loader/main.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include - -class MainWindow : public QMainWindow -{ - Q_OBJECT -public: - MainWindow(); - -public slots: - void handleMessage(const QString& message); - -signals: - void needToShow(); - -private: - QMdiArea *workspace; -}; - -MainWindow::MainWindow() -{ - workspace = new QMdiArea(this); - - setCentralWidget(workspace); -} - -void MainWindow::handleMessage(const QString& message) -{ - enum Action { - Nothing, - Open, - Print - } action; - - action = Nothing; - QString filename = message; - if (message.toLower().startsWith("/print ")) { - filename = filename.mid(7); - action = Print; - } else if (!message.isEmpty()) { - action = Open; - } - if (action == Nothing) { - emit needToShow(); - return; - } - - QFile file(filename); - QString contents; - if (file.open(QIODevice::ReadOnly)) - contents = file.readAll(); - else - contents = "[[Error: Could not load file " + filename + "]]"; - - QTextEdit *view = new QTextEdit; - view->setPlainText(contents); - - switch(action) { - case Print: - { - QPrinter printer; - view->print(&printer); - delete view; - } - break; - - case Open: - { - workspace->addSubWindow(view); - view->setWindowTitle(message); - view->show(); - emit needToShow(); - } - break; - default: - break; - }; -} - -#include "main.moc" - -int main(int argc, char **argv) -{ - QtSingleApplication instance("File loader QtSingleApplication example", argc, argv); - QString message; - for (int a = 1; a < argc; ++a) { - message += argv[a]; - if (a < argc-1) - message += " "; - } - - if (instance.sendMessage(message)) - return 0; - - MainWindow mw; - mw.handleMessage(message); - mw.show(); - - QObject::connect(&instance, SIGNAL(messageReceived(const QString&)), - &mw, SLOT(handleMessage(const QString&))); - - instance.setActivationWindow(&mw, false); - QObject::connect(&mw, SIGNAL(needToShow()), &instance, SLOT(activateWindow())); - - return instance.exec(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/main.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/main.cpp deleted file mode 100644 index 69e102f3fb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/main.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include - -class TextEdit : public QTextEdit -{ - Q_OBJECT -public: - TextEdit(QWidget *parent = 0) - : QTextEdit(parent) - {} -public slots: - void append(const QString &str) - { - QTextEdit::append(str); - } -}; - -#include "main.moc" - - - -int main(int argc, char **argv) -{ - QtSingleApplication instance(argc, argv); - if (instance.sendMessage("Wake up!")) - return 0; - - TextEdit logview; - logview.setReadOnly(true); - logview.show(); - - instance.setActivationWindow(&logview); - - QObject::connect(&instance, SIGNAL(messageReceived(const QString&)), - &logview, SLOT(append(const QString&))); - - return instance.exec(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/trivial.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/trivial.pro deleted file mode 100644 index 673497a408..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/trivial.pro +++ /dev/null @@ -1,5 +0,0 @@ -TEMPLATE = app - -include(../../src/qtsingleapplication.pri) - -SOURCES += main.cpp diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/trivial.qdoc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/trivial.qdoc deleted file mode 100644 index 9491cb65e5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/examples/trivial/trivial.qdoc +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! \page qtsingleapplication-example-trivial.html - \title A Trivial Example - - The application in this example has a log-view that displays - messages sent by further instances of the same application. - - The example demonstrates the use of the QtSingleApplication - class to detect and communicate with a running instance of - the application using the sendMessage() API. The messageReceived() - signal is used to display received messages in a QTextEdit log. - - \quotefromfile trivial/main.cpp - \printuntil instance - The example has only the \c main entry point function. - A QtSingleApplication object is created immediately. - - \printuntil return - If another instance of this application is already running, - sendMessage() will succeed, and this instance just exits - immediately. - - \printuntil show() - Otherwise the instance continues as normal and creates the - user interface. - - \printuntil return instance.exec(); - The \c logview object is also set as the application's activation - window. Every time a message is received, the window will be raised - and activated automatically. - - The messageReceived() signal is also connected to the QTextEdit's - append() slot. Every message received from further instances of - this application will be displayed in the log. - - Finally the event loop is entered. -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/qtsingleapplication.pro b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/qtsingleapplication.pro deleted file mode 100644 index 07257c5d44..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/qtsingleapplication.pro +++ /dev/null @@ -1,5 +0,0 @@ -TEMPLATE=subdirs -CONFIG += ordered -include(common.pri) -qtsingleapplication-uselib:SUBDIRS=buildlib -SUBDIRS+=examples diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/source.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/source.txt deleted file mode 100644 index fa6ec65670..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/source.txt +++ /dev/null @@ -1,3 +0,0 @@ -This package was copied from the cloned qtsolutions git for GoldenDict: - - git clone git://gitorious.org/qt-solutions/qt-solutions.git diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/QtLockedFile b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/QtLockedFile deleted file mode 100644 index 16b48ba9dd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/QtLockedFile +++ /dev/null @@ -1 +0,0 @@ -#include "qtlockedfile.h" diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/QtSingleApplication b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/QtSingleApplication deleted file mode 100644 index d111bf72d8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/QtSingleApplication +++ /dev/null @@ -1 +0,0 @@ -#include "qtsingleapplication.h" diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlocalpeer.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlocalpeer.cpp deleted file mode 100644 index 8c277fb785..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlocalpeer.cpp +++ /dev/null @@ -1,203 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include "qtlocalpeer.h" -#include -#include -#include - -#if defined(Q_OS_WIN) -#include -#include -typedef BOOL(WINAPI*PProcessIdToSessionId)(DWORD,DWORD*); -static PProcessIdToSessionId pProcessIdToSessionId = 0; -#endif -#if defined(Q_OS_UNIX) -#include -#include -#include -#endif - -namespace QtLP_Private { -#include "qtlockedfile.cpp" -#if defined(Q_OS_WIN) -#include "qtlockedfile_win.cpp" -#else -#include "qtlockedfile_unix.cpp" -#endif -} - -const char* QtLocalPeer::ack = "ack"; - -QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) - : QObject(parent), id(appId) -{ - QString prefix = id; - if (id.isEmpty()) { - id = QCoreApplication::applicationFilePath(); -#if defined(Q_OS_WIN) - id = id.toLower(); -#endif - prefix = id.section(QLatin1Char('/'), -1); - } - prefix.remove(QRegExp("[^a-zA-Z]")); - prefix.truncate(6); - - QByteArray idc = id.toUtf8(); - quint16 idNum = qChecksum(idc.constData(), idc.size()); - socketName = QLatin1String("qtsingleapp-") + prefix - + QLatin1Char('-') + QString::number(idNum, 16); - -#if defined(Q_OS_WIN) - if (!pProcessIdToSessionId) { - QLibrary lib("kernel32"); - pProcessIdToSessionId = (PProcessIdToSessionId)lib.resolve("ProcessIdToSessionId"); - } - if (pProcessIdToSessionId) { - DWORD sessionId = 0; - pProcessIdToSessionId(GetCurrentProcessId(), &sessionId); - socketName += QLatin1Char('-') + QString::number(sessionId, 16); - } -#else - socketName += QLatin1Char('-') + QString::number(::getuid(), 16); -#endif - - server = new QLocalServer(this); - QString lockName = QDir(QDir::tempPath()).absolutePath() - + QLatin1Char('/') + socketName - + QLatin1String("-lockfile"); - lockFile.setFileName(lockName); - lockFile.open(QIODevice::ReadWrite); -} - - - -bool QtLocalPeer::isClient() -{ - if (lockFile.isLocked()) - return false; - - if (!lockFile.lock(QtLP_Private::QtLockedFile::WriteLock, false)) - return true; - - bool res = server->listen(socketName); -#if defined(Q_OS_UNIX) && (QT_VERSION >= QT_VERSION_CHECK(4,5,0)) - // ### Workaround - if (!res && server->serverError() == QAbstractSocket::AddressInUseError) { - QFile::remove(QDir::cleanPath(QDir::tempPath())+QLatin1Char('/')+socketName); - res = server->listen(socketName); - } -#endif - if (!res) - qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString())); - QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection())); - return false; -} - - -bool QtLocalPeer::sendMessage(const QString &message, int timeout) -{ - if (!isClient()) - return false; - - QLocalSocket socket; - bool connOk = false; - for(int i = 0; i < 2; i++) { - // Try twice, in case the other instance is just starting up - socket.connectToServer(socketName); - connOk = socket.waitForConnected(timeout/2); - if (connOk || i) - break; - int ms = 250; -#if defined(Q_OS_WIN) - Sleep(DWORD(ms)); -#else - struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 }; - nanosleep(&ts, NULL); -#endif - } - if (!connOk) - return false; - - QByteArray uMsg(message.toUtf8()); - QDataStream ds(&socket); - ds.writeBytes(uMsg.constData(), uMsg.size()); - bool res = socket.waitForBytesWritten(timeout); - if (res) { - res &= socket.waitForReadyRead(timeout); // wait for ack - if (res) - res &= (socket.read(qstrlen(ack)) == ack); - } - return res; -} - - -void QtLocalPeer::receiveConnection() -{ - QLocalSocket* socket = server->nextPendingConnection(); - if (!socket) - return; - - while (socket->bytesAvailable() < (int)sizeof(quint32)) - socket->waitForReadyRead(); - QDataStream ds(socket); - QByteArray uMsg; - quint32 remaining; - ds >> remaining; - uMsg.resize(remaining); - int got = 0; - char* uMsgBuf = uMsg.data(); - do { - got = ds.readRawData(uMsgBuf, remaining); - remaining -= got; - uMsgBuf += got; - } while (remaining && got >= 0 && socket->waitForReadyRead(2000)); - if (got < 0) { - qWarning("QtLocalPeer: Message reception failed %s", socket->errorString().toLatin1().constData()); - delete socket; - return; - } - QString message(QString::fromUtf8(uMsg)); - socket->write(ack, qstrlen(ack)); - socket->waitForBytesWritten(1000); - delete socket; - emit messageReceived(message); //### (might take a long time to return) -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlocalpeer.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlocalpeer.h deleted file mode 100644 index 1b533b1ab2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlocalpeer.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTLOCALPEER_H -#define QTLOCALPEER_H - -#include -#include -#include - -#include "qtlockedfile.h" - -class QtLocalPeer : public QObject -{ - Q_OBJECT - -public: - QtLocalPeer(QObject *parent = 0, const QString &appId = QString()); - bool isClient(); - bool sendMessage(const QString &message, int timeout); - QString applicationId() const - { return id; } - -Q_SIGNALS: - void messageReceived(const QString &message); - -protected Q_SLOTS: - void receiveConnection(); - -protected: - QString id; - QString socketName; - QLocalServer* server; - QtLP_Private::QtLockedFile lockFile; - -private: - static const char* ack; -}; - -#endif // QTLOCALPEER_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile.cpp deleted file mode 100644 index c142a863a9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtlockedfile.h" - -/*! - \class QtLockedFile - - \brief The QtLockedFile class extends QFile with advisory locking - functions. - - A file may be locked in read or write mode. Multiple instances of - \e QtLockedFile, created in multiple processes running on the same - machine, may have a file locked in read mode. Exactly one instance - may have it locked in write mode. A read and a write lock cannot - exist simultaneously on the same file. - - The file locks are advisory. This means that nothing prevents - another process from manipulating a locked file using QFile or - file system functions offered by the OS. Serialization is only - guaranteed if all processes that access the file use - QLockedFile. Also, while holding a lock on a file, a process - must not open the same file again (through any API), or locks - can be unexpectedly lost. - - The lock provided by an instance of \e QtLockedFile is released - whenever the program terminates. This is true even when the - program crashes and no destructors are called. -*/ - -/*! \enum QtLockedFile::LockMode - - This enum describes the available lock modes. - - \value ReadLock A read lock. - \value WriteLock A write lock. - \value NoLock Neither a read lock nor a write lock. -*/ - -/*! - Constructs an unlocked \e QtLockedFile object. This constructor - behaves in the same way as \e QFile::QFile(). - - \sa QFile::QFile() -*/ -QtLockedFile::QtLockedFile() - : QFile() -{ -#ifdef Q_OS_WIN - wmutex = 0; - rmutex = 0; -#endif - m_lock_mode = NoLock; -} - -/*! - Constructs an unlocked QtLockedFile object with file \a name. This - constructor behaves in the same way as \e QFile::QFile(const - QString&). - - \sa QFile::QFile() -*/ -QtLockedFile::QtLockedFile(const QString &name) - : QFile(name) -{ -#ifdef Q_OS_WIN - wmutex = 0; - rmutex = 0; -#endif - m_lock_mode = NoLock; -} - -/*! - Opens the file in OpenMode \a mode. - - This is identical to QFile::open(), with the one exception that the - Truncate mode flag is disallowed. Truncation would conflict with the - advisory file locking, since the file would be modified before the - write lock is obtained. If truncation is required, use resize(0) - after obtaining the write lock. - - Returns true if successful; otherwise false. - - \sa QFile::open(), QFile::resize() -*/ -bool QtLockedFile::open(OpenMode mode) -{ - if (mode & QIODevice::Truncate) { - qWarning("QtLockedFile::open(): Truncate mode not allowed."); - return false; - } - return QFile::open(mode); -} - -/*! - Returns \e true if this object has a in read or write lock; - otherwise returns \e false. - - \sa lockMode() -*/ -bool QtLockedFile::isLocked() const -{ - return m_lock_mode != NoLock; -} - -/*! - Returns the type of lock currently held by this object, or \e - QtLockedFile::NoLock. - - \sa isLocked() -*/ -QtLockedFile::LockMode QtLockedFile::lockMode() const -{ - return m_lock_mode; -} - -/*! - \fn bool QtLockedFile::lock(LockMode mode, bool block = true) - - Obtains a lock of type \a mode. The file must be opened before it - can be locked. - - If \a block is true, this function will block until the lock is - aquired. If \a block is false, this function returns \e false - immediately if the lock cannot be aquired. - - If this object already has a lock of type \a mode, this function - returns \e true immediately. If this object has a lock of a - different type than \a mode, the lock is first released and then a - new lock is obtained. - - This function returns \e true if, after it executes, the file is - locked by this object, and \e false otherwise. - - \sa unlock(), isLocked(), lockMode() -*/ - -/*! - \fn bool QtLockedFile::unlock() - - Releases a lock. - - If the object has no lock, this function returns immediately. - - This function returns \e true if, after it executes, the file is - not locked by this object, and \e false otherwise. - - \sa lock(), isLocked(), lockMode() -*/ - -/*! - \fn QtLockedFile::~QtLockedFile() - - Destroys the \e QtLockedFile object. If any locks were held, they - are released. -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile.h deleted file mode 100644 index 84c18e5c9a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile.h +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTLOCKEDFILE_H -#define QTLOCKEDFILE_H - -#include -#ifdef Q_OS_WIN -#include -#endif - -#if defined(Q_OS_WIN) -# if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT) -# define QT_QTLOCKEDFILE_EXPORT -# elif defined(QT_QTLOCKEDFILE_IMPORT) -# if defined(QT_QTLOCKEDFILE_EXPORT) -# undef QT_QTLOCKEDFILE_EXPORT -# endif -# define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport) -# elif defined(QT_QTLOCKEDFILE_EXPORT) -# undef QT_QTLOCKEDFILE_EXPORT -# define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport) -# endif -#else -# define QT_QTLOCKEDFILE_EXPORT -#endif - -namespace QtLP_Private { - -class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile -{ -public: - enum LockMode { NoLock = 0, ReadLock, WriteLock }; - - QtLockedFile(); - QtLockedFile(const QString &name); - ~QtLockedFile(); - - bool open(OpenMode mode); - - bool lock(LockMode mode, bool block = true); - bool unlock(); - bool isLocked() const; - LockMode lockMode() const; - -private: -#ifdef Q_OS_WIN - Qt::HANDLE wmutex; - Qt::HANDLE rmutex; - QVector rmutexes; - QString mutexname; - - Qt::HANDLE getMutexHandle(int idx, bool doCreate); - bool waitMutex(Qt::HANDLE mutex, bool doBlock); - -#endif - LockMode m_lock_mode; -}; -} -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile_unix.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile_unix.cpp deleted file mode 100644 index 976c1b9ee6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile_unix.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include -#include - -#include "qtlockedfile.h" - -bool QtLockedFile::lock(LockMode mode, bool block) -{ - if (!isOpen()) { - qWarning("QtLockedFile::lock(): file is not opened"); - return false; - } - - if (mode == NoLock) - return unlock(); - - if (mode == m_lock_mode) - return true; - - if (m_lock_mode != NoLock) - unlock(); - - struct flock fl; - fl.l_whence = SEEK_SET; - fl.l_start = 0; - fl.l_len = 0; - fl.l_type = (mode == ReadLock) ? F_RDLCK : F_WRLCK; - int cmd = block ? F_SETLKW : F_SETLK; - int ret = fcntl(handle(), cmd, &fl); - - if (ret == -1) { - if (errno != EINTR && errno != EAGAIN) - qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); - return false; - } - - - m_lock_mode = mode; - return true; -} - - -bool QtLockedFile::unlock() -{ - if (!isOpen()) { - qWarning("QtLockedFile::unlock(): file is not opened"); - return false; - } - - if (!isLocked()) - return true; - - struct flock fl; - fl.l_whence = SEEK_SET; - fl.l_start = 0; - fl.l_len = 0; - fl.l_type = F_UNLCK; - int ret = fcntl(handle(), F_SETLKW, &fl); - - if (ret == -1) { - qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); - return false; - } - - m_lock_mode = NoLock; - return true; -} - -QtLockedFile::~QtLockedFile() -{ - if (isOpen()) - unlock(); -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile_win.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile_win.cpp deleted file mode 100644 index 5e2126204b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtlockedfile_win.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qtlockedfile.h" -#include -#include - -#define MUTEX_PREFIX "QtLockedFile mutex " -// Maximum number of concurrent read locks. Must not be greater than MAXIMUM_WAIT_OBJECTS -#define MAX_READERS MAXIMUM_WAIT_OBJECTS - -#if QT_VERSION >= 0x050000 -#define QT_WA(unicode, ansi) unicode -#endif - -Qt::HANDLE QtLockedFile::getMutexHandle(int idx, bool doCreate) -{ - if (mutexname.isEmpty()) { - QFileInfo fi(*this); - mutexname = QString::fromLatin1(MUTEX_PREFIX) - + fi.absoluteFilePath().toLower(); - } - QString mname(mutexname); - if (idx >= 0) - mname += QString::number(idx); - - Qt::HANDLE mutex; - if (doCreate) { - QT_WA( { mutex = CreateMutexW(NULL, FALSE, (TCHAR*)mname.utf16()); }, - { mutex = CreateMutexA(NULL, FALSE, mname.toLocal8Bit().constData()); } ); - if (!mutex) { - qErrnoWarning("QtLockedFile::lock(): CreateMutex failed"); - return 0; - } - } - else { - QT_WA( { mutex = OpenMutexW(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, (TCHAR*)mname.utf16()); }, - { mutex = OpenMutexA(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, mname.toLocal8Bit().constData()); } ); - if (!mutex) { - if (GetLastError() != ERROR_FILE_NOT_FOUND) - qErrnoWarning("QtLockedFile::lock(): OpenMutex failed"); - return 0; - } - } - return mutex; -} - -bool QtLockedFile::waitMutex(Qt::HANDLE mutex, bool doBlock) -{ - Q_ASSERT(mutex); - DWORD res = WaitForSingleObject(mutex, doBlock ? INFINITE : 0); - switch (res) { - case WAIT_OBJECT_0: - case WAIT_ABANDONED: - return true; - break; - case WAIT_TIMEOUT: - break; - default: - qErrnoWarning("QtLockedFile::lock(): WaitForSingleObject failed"); - } - return false; -} - - - -bool QtLockedFile::lock(LockMode mode, bool block) -{ - if (!isOpen()) { - qWarning("QtLockedFile::lock(): file is not opened"); - return false; - } - - if (mode == NoLock) - return unlock(); - - if (mode == m_lock_mode) - return true; - - if (m_lock_mode != NoLock) - unlock(); - - if (!wmutex && !(wmutex = getMutexHandle(-1, true))) - return false; - - if (!waitMutex(wmutex, block)) - return false; - - if (mode == ReadLock) { - int idx = 0; - for (; idx < MAX_READERS; idx++) { - rmutex = getMutexHandle(idx, false); - if (!rmutex || waitMutex(rmutex, false)) - break; - CloseHandle(rmutex); - } - bool ok = true; - if (idx >= MAX_READERS) { - qWarning("QtLockedFile::lock(): too many readers"); - rmutex = 0; - ok = false; - } - else if (!rmutex) { - rmutex = getMutexHandle(idx, true); - if (!rmutex || !waitMutex(rmutex, false)) - ok = false; - } - if (!ok && rmutex) { - CloseHandle(rmutex); - rmutex = 0; - } - ReleaseMutex(wmutex); - if (!ok) - return false; - } - else { - Q_ASSERT(rmutexes.isEmpty()); - for (int i = 0; i < MAX_READERS; i++) { - Qt::HANDLE mutex = getMutexHandle(i, false); - if (mutex) - rmutexes.append(mutex); - } - if (rmutexes.size()) { - DWORD res = WaitForMultipleObjects(rmutexes.size(), rmutexes.constData(), - TRUE, block ? INFINITE : 0); - if (res != WAIT_OBJECT_0 && res != WAIT_ABANDONED) { - if (res != WAIT_TIMEOUT) - qErrnoWarning("QtLockedFile::lock(): WaitForMultipleObjects failed"); - m_lock_mode = WriteLock; // trick unlock() to clean up - semiyucky - unlock(); - return false; - } - } - } - - m_lock_mode = mode; - return true; -} - -bool QtLockedFile::unlock() -{ - if (!isOpen()) { - qWarning("QtLockedFile::unlock(): file is not opened"); - return false; - } - - if (!isLocked()) - return true; - - if (m_lock_mode == ReadLock) { - ReleaseMutex(rmutex); - CloseHandle(rmutex); - rmutex = 0; - } - else { - foreach(Qt::HANDLE mutex, rmutexes) { - ReleaseMutex(mutex); - CloseHandle(mutex); - } - rmutexes.clear(); - ReleaseMutex(wmutex); - } - - m_lock_mode = QtLockedFile::NoLock; - return true; -} - -QtLockedFile::~QtLockedFile() -{ - if (isOpen()) - unlock(); - if (wmutex) - CloseHandle(wmutex); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.cpp deleted file mode 100644 index 48bb458593..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.cpp +++ /dev/null @@ -1,347 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include "qtsingleapplication.h" -#include "qtlocalpeer.h" -#include - - -/*! - \class QtSingleApplication qtsingleapplication.h - \brief The QtSingleApplication class provides an API to detect and - communicate with running instances of an application. - - This class allows you to create applications where only one - instance should be running at a time. I.e., if the user tries to - launch another instance, the already running instance will be - activated instead. Another usecase is a client-server system, - where the first started instance will assume the role of server, - and the later instances will act as clients of that server. - - By default, the full path of the executable file is used to - determine whether two processes are instances of the same - application. You can also provide an explicit identifier string - that will be compared instead. - - The application should create the QtSingleApplication object early - in the startup phase, and call isRunning() to find out if another - instance of this application is already running. If isRunning() - returns false, it means that no other instance is running, and - this instance has assumed the role as the running instance. In - this case, the application should continue with the initialization - of the application user interface before entering the event loop - with exec(), as normal. - - The messageReceived() signal will be emitted when the running - application receives messages from another instance of the same - application. When a message is received it might be helpful to the - user to raise the application so that it becomes visible. To - facilitate this, QtSingleApplication provides the - setActivationWindow() function and the activateWindow() slot. - - If isRunning() returns true, another instance is already - running. It may be alerted to the fact that another instance has - started by using the sendMessage() function. Also data such as - startup parameters (e.g. the name of the file the user wanted this - new instance to open) can be passed to the running instance with - this function. Then, the application should terminate (or enter - client mode). - - If isRunning() returns true, but sendMessage() fails, that is an - indication that the running instance is frozen. - - Here's an example that shows how to convert an existing - application to use QtSingleApplication. It is very simple and does - not make use of all QtSingleApplication's functionality (see the - examples for that). - - \code - // Original - int main(int argc, char **argv) - { - QApplication app(argc, argv); - - MyMainWidget mmw; - mmw.show(); - return app.exec(); - } - - // Single instance - int main(int argc, char **argv) - { - QtSingleApplication app(argc, argv); - - if (app.isRunning()) - return !app.sendMessage(someDataString); - - MyMainWidget mmw; - app.setActivationWindow(&mmw); - mmw.show(); - return app.exec(); - } - \endcode - - Once this QtSingleApplication instance is destroyed (normally when - the process exits or crashes), when the user next attempts to run the - application this instance will not, of course, be encountered. The - next instance to call isRunning() or sendMessage() will assume the - role as the new running instance. - - For console (non-GUI) applications, QtSingleCoreApplication may be - used instead of this class, to avoid the dependency on the QtGui - library. - - \sa QtSingleCoreApplication -*/ - - -void QtSingleApplication::sysInit(const QString &appId) -{ - actWin = 0; - peer = new QtLocalPeer(this, appId); - connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); -} - - -/*! - Creates a QtSingleApplication object. The application identifier - will be QCoreApplication::applicationFilePath(). \a argc, \a - argv, and \a GUIenabled are passed on to the QAppliation constructor. - - If you are creating a console application (i.e. setting \a - GUIenabled to false), you may consider using - QtSingleCoreApplication instead. -*/ - -QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled) - : QApplication(argc, argv, GUIenabled) -{ - sysInit(); -} - - -/*! - Creates a QtSingleApplication object with the application - identifier \a appId. \a argc and \a argv are passed on to the - QAppliation constructor. -*/ - -QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv) - : QApplication(argc, argv) -{ - sysInit(appId); -} - -#if QT_VERSION < 0x050000 - -/*! - Creates a QtSingleApplication object. The application identifier - will be QCoreApplication::applicationFilePath(). \a argc, \a - argv, and \a type are passed on to the QAppliation constructor. -*/ -QtSingleApplication::QtSingleApplication(int &argc, char **argv, Type type) - : QApplication(argc, argv, type) -{ - sysInit(); -} - - -# if defined(HAVE_X11) -/*! - Special constructor for X11, ref. the documentation of - QApplication's corresponding constructor. The application identifier - will be QCoreApplication::applicationFilePath(). \a dpy, \a visual, - and \a cmap are passed on to the QApplication constructor. -*/ -QtSingleApplication::QtSingleApplication(Display* dpy, Qt::HANDLE visual, Qt::HANDLE cmap) - : QApplication(dpy, visual, cmap) -{ - sysInit(); -} - -/*! - Special constructor for X11, ref. the documentation of - QApplication's corresponding constructor. The application identifier - will be QCoreApplication::applicationFilePath(). \a dpy, \a argc, \a - argv, \a visual, and \a cmap are passed on to the QApplication - constructor. -*/ -QtSingleApplication::QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) - : QApplication(dpy, argc, argv, visual, cmap) -{ - sysInit(); -} - -/*! - Special constructor for X11, ref. the documentation of - QApplication's corresponding constructor. The application identifier - will be \a appId. \a dpy, \a argc, \a - argv, \a visual, and \a cmap are passed on to the QApplication - constructor. -*/ -QtSingleApplication::QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) - : QApplication(dpy, argc, argv, visual, cmap) -{ - sysInit(appId); -} -# endif // HAVE_X11 -#endif // QT_VERSION < 0x050000 - - -/*! - Returns true if another instance of this application is running; - otherwise false. - - This function does not find instances of this application that are - being run by a different user (on Windows: that are running in - another session). - - \sa sendMessage() -*/ - -bool QtSingleApplication::isRunning() -{ - return peer->isClient(); -} - - -/*! - Tries to send the text \a message to the currently running - instance. The QtSingleApplication object in the running instance - will emit the messageReceived() signal when it receives the - message. - - This function returns true if the message has been sent to, and - processed by, the current instance. If there is no instance - currently running, or if the running instance fails to process the - message within \a timeout milliseconds, this function return false. - - \sa isRunning(), messageReceived() -*/ -bool QtSingleApplication::sendMessage(const QString &message, int timeout) -{ - return peer->sendMessage(message, timeout); -} - - -/*! - Returns the application identifier. Two processes with the same - identifier will be regarded as instances of the same application. -*/ -QString QtSingleApplication::id() const -{ - return peer->applicationId(); -} - - -/*! - Sets the activation window of this application to \a aw. The - activation window is the widget that will be activated by - activateWindow(). This is typically the application's main window. - - If \a activateOnMessage is true (the default), the window will be - activated automatically every time a message is received, just prior - to the messageReceived() signal being emitted. - - \sa activateWindow(), messageReceived() -*/ - -void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage) -{ - actWin = aw; - if (activateOnMessage) - connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); - else - disconnect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); -} - - -/*! - Returns the applications activation window if one has been set by - calling setActivationWindow(), otherwise returns 0. - - \sa setActivationWindow() -*/ -QWidget* QtSingleApplication::activationWindow() const -{ - return actWin; -} - - -/*! - De-minimizes, raises, and activates this application's activation window. - This function does nothing if no activation window has been set. - - This is a convenience function to show the user that this - application instance has been activated when he has tried to start - another instance. - - This function should typically be called in response to the - messageReceived() signal. By default, that will happen - automatically, if an activation window has been set. - - \sa setActivationWindow(), messageReceived(), initialize() -*/ -void QtSingleApplication::activateWindow() -{ - if (actWin) { - actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized); - actWin->raise(); - actWin->activateWindow(); - } -} - - -/*! - \fn void QtSingleApplication::messageReceived(const QString& message) - - This signal is emitted when the current instance receives a \a - message from another instance of this application. - - \sa sendMessage(), setActivationWindow(), activateWindow() -*/ - - -/*! - \fn void QtSingleApplication::initialize(bool dummy = true) - - \obsolete -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.h deleted file mode 100644 index eb7eeb79fb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.h +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTSINGLEAPPLICATION_H -#define QTSINGLEAPPLICATION_H - -#include - -class QtLocalPeer; - -#if defined(Q_OS_WIN) -# if !defined(QT_QTSINGLEAPPLICATION_EXPORT) && !defined(QT_QTSINGLEAPPLICATION_IMPORT) -# define QT_QTSINGLEAPPLICATION_EXPORT -# elif defined(QT_QTSINGLEAPPLICATION_IMPORT) -# if defined(QT_QTSINGLEAPPLICATION_EXPORT) -# undef QT_QTSINGLEAPPLICATION_EXPORT -# endif -# define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllimport) -# elif defined(QT_QTSINGLEAPPLICATION_EXPORT) -# undef QT_QTSINGLEAPPLICATION_EXPORT -# define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllexport) -# endif -#else -# define QT_QTSINGLEAPPLICATION_EXPORT -#endif - -class QT_QTSINGLEAPPLICATION_EXPORT QtSingleApplication : public QApplication -{ - Q_OBJECT - -public: - QtSingleApplication(int &argc, char **argv, bool GUIenabled = true); - QtSingleApplication(const QString &id, int &argc, char **argv); -#if QT_VERSION < 0x050000 - QtSingleApplication(int &argc, char **argv, Type type); -# if defined(HAVE_X11) - QtSingleApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); - QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0); - QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); -# endif // HAVE_X11 -#endif // QT_VERSION < 0x050000 - - bool isRunning(); - QString id() const; - - void setActivationWindow(QWidget* aw, bool activateOnMessage = true); - QWidget* activationWindow() const; - - // Obsolete: - void initialize(bool dummy = true) - { isRunning(); Q_UNUSED(dummy) } - -public Q_SLOTS: - bool sendMessage(const QString &message, int timeout = 5000); - void activateWindow(); - - -Q_SIGNALS: - void messageReceived(const QString &message); - - -private: - void sysInit(const QString &appId = QString()); - QtLocalPeer *peer; - QWidget *actWin; -}; - -#endif // QTSINGLEAPPLICATION_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.pri b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.pri deleted file mode 100644 index 6f2bced94d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsingleapplication.pri +++ /dev/null @@ -1,17 +0,0 @@ -include(../common.pri) -INCLUDEPATH += $$PWD -DEPENDPATH += $$PWD -QT *= network -greaterThan(QT_MAJOR_VERSION, 4): QT *= widgets - -qtsingleapplication-uselib:!qtsingleapplication-buildlib { - LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME -} else { - SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp - HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h -} - -win32 { - contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLEAPPLICATION_EXPORT - else:qtsingleapplication-uselib:DEFINES += QT_QTSINGLEAPPLICATION_IMPORT -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.cpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.cpp deleted file mode 100644 index 563453732f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include "qtsinglecoreapplication.h" -#include "qtlocalpeer.h" - -/*! - \class QtSingleCoreApplication qtsinglecoreapplication.h - \brief A variant of the QtSingleApplication class for non-GUI applications. - - This class is a variant of QtSingleApplication suited for use in - console (non-GUI) applications. It is an extension of - QCoreApplication (instead of QApplication). It does not require - the QtGui library. - - The API and usage is identical to QtSingleApplication, except that - functions relating to the "activation window" are not present, for - obvious reasons. Please refer to the QtSingleApplication - documentation for explanation of the usage. - - A QtSingleCoreApplication instance can communicate to a - QtSingleApplication instance if they share the same application - id. Hence, this class can be used to create a light-weight - command-line tool that sends commands to a GUI application. - - \sa QtSingleApplication -*/ - -/*! - Creates a QtSingleCoreApplication object. The application identifier - will be QCoreApplication::applicationFilePath(). \a argc and \a - argv are passed on to the QCoreAppliation constructor. -*/ - -QtSingleCoreApplication::QtSingleCoreApplication(int &argc, char **argv) - : QCoreApplication(argc, argv) -{ - peer = new QtLocalPeer(this); - connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); -} - - -/*! - Creates a QtSingleCoreApplication object with the application - identifier \a appId. \a argc and \a argv are passed on to the - QCoreAppliation constructor. -*/ -QtSingleCoreApplication::QtSingleCoreApplication(const QString &appId, int &argc, char **argv) - : QCoreApplication(argc, argv) -{ - peer = new QtLocalPeer(this, appId); - connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); -} - - -/*! - Returns true if another instance of this application is running; - otherwise false. - - This function does not find instances of this application that are - being run by a different user (on Windows: that are running in - another session). - - \sa sendMessage() -*/ - -bool QtSingleCoreApplication::isRunning() -{ - return peer->isClient(); -} - - -/*! - Tries to send the text \a message to the currently running - instance. The QtSingleCoreApplication object in the running instance - will emit the messageReceived() signal when it receives the - message. - - This function returns true if the message has been sent to, and - processed by, the current instance. If there is no instance - currently running, or if the running instance fails to process the - message within \a timeout milliseconds, this function return false. - - \sa isRunning(), messageReceived() -*/ - -bool QtSingleCoreApplication::sendMessage(const QString &message, int timeout) -{ - return peer->sendMessage(message, timeout); -} - - -/*! - Returns the application identifier. Two processes with the same - identifier will be regarded as instances of the same application. -*/ - -QString QtSingleCoreApplication::id() const -{ - return peer->applicationId(); -} - - -/*! - \fn void QtSingleCoreApplication::messageReceived(const QString& message) - - This signal is emitted when the current instance receives a \a - message from another instance of this application. - - \sa sendMessage() -*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.h deleted file mode 100644 index b87fffe41f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the Qt Solutions component. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTSINGLECOREAPPLICATION_H -#define QTSINGLECOREAPPLICATION_H - -#include - -class QtLocalPeer; - -class QtSingleCoreApplication : public QCoreApplication -{ - Q_OBJECT - -public: - QtSingleCoreApplication(int &argc, char **argv); - QtSingleCoreApplication(const QString &id, int &argc, char **argv); - - bool isRunning(); - QString id() const; - -public Q_SLOTS: - bool sendMessage(const QString &message, int timeout = 5000); - - -Q_SIGNALS: - void messageReceived(const QString &message); - - -private: - QtLocalPeer* peer; -}; - -#endif // QTSINGLECOREAPPLICATION_H diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.pri b/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.pri deleted file mode 100644 index d2d6cc3e14..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/qtsingleapplication/src/qtsinglecoreapplication.pri +++ /dev/null @@ -1,10 +0,0 @@ -INCLUDEPATH += $$PWD -DEPENDPATH += $$PWD -HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h -SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp - -QT *= network - -win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { - DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT=__declspec(dllexport) -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/redist/goldendict.desktop b/office/misc/goldendict/files/goldendict-1.5.0-RC2/redist/goldendict.desktop deleted file mode 100755 index d14a1c7ccc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/redist/goldendict.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Application -Terminal=false -Categories=Office;Dictionary;Education;Qt -Name=GoldenDict -GenericName=Multiformat Dictionary -Comment=GoldenDict -Encoding=UTF-8 -Icon=goldendict -Exec=goldendict diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/redist/icons/goldendict.png b/office/misc/goldendict/files/goldendict-1.5.0-RC2/redist/icons/goldendict.png deleted file mode 100755 index 50c1804c2f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/redist/icons/goldendict.png and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/resources.qrc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/resources.qrc deleted file mode 100644 index 97e3345100..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/resources.qrc +++ /dev/null @@ -1,83 +0,0 @@ - - - version.txt - icons/print.png - icons/arrow.png - icons/prefix.png - icons/pushpin.png - icons/playsound.png - icons/closetab.png - icons/addtab.png - icons/next.png - icons/previous.png - icons/home.png - icons/reload.png - icons/programicon.png - icons/programicon_scan.png - icons/programs.png - icons/wizard.png - icons/warning.png - article-style.css - article-style-print.css - qt-style.css - icons/icon32_dsl.png - icons/icon32_stardict.png - icons/icon32_xdxf.png - icons/icon32_bgl.png - icons/icon32_dictd.png - icons/icon32_hunspell.png - icons/fileopen.png - icons/filesave.png - icons/icon32_wiki.png - icons/icon32_zoombase.png - icons/icon32_zoomin.png - icons/icon32_zoomout.png - icons/network.png - icons/hotkeys.png - icons/interface.png - icons/configure.png - icons/book.png - icons/bookcase.png - qt-style-st-lingvo.css - article-style-st-lingvo.css - icons/internet.png - icons/icon_dsl_native.png - icons/forvo.png - icons/windows-list.png - CREDITS.txt - icons/highlighter.png - icons/error.png - icons/macicon.png - icons/icon32_sdict.png - icons/icon32_aard.png - icons/expand_opt.png - icons/collapse_opt.png - article-style-st-babylon.css - qt-style-st-babylon.css - icons/1downarrow.png - icons/system-search.png - icons/menu_button.png - icons/clear.png - article-style-st-modern.css - qt-style-st-modern.css - article-style-st-lingoes.css - icons/icon32_lingoes.png - article-style-st-lingoes-blue.css - qt-style-st-lingoes-blue.css - qt-style-macos.css - icons/mdict.png - icons/downarrow.png - icons/blank.png - icons/expand_article_hovered.png - icons/expand_article.png - icons/collapse_article_hovered.png - icons/collapse_article.png - icons/video.png - icons/programicon_old.png - icons/playsound_color.png - icons/playsound_full.png - icons/icon32_zim.png - icons/icon32_epwing.png - icons/icon32_slob.png - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ripemd.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ripemd.cc deleted file mode 100644 index bad8fc710e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ripemd.cc +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright (C) 2007 Michael Niedermayer -// Copyright (C) 2013 James Almer -// Copyright (C) 2015 Zhe Wang <0x1998@gmail.com> -// -// Based on the RIPEMD-128 implementation from libavutil -// -// This program is a free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3 of the License. -// -// You can get a copy of GNU General Public License along this program -// But you can always get it from http://www.gnu.org/licenses/gpl.txt -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -#include "ripemd.hh" - -#include -#include - - -static const uint32_t KA[4] = { - 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e -}; - -static const uint32_t KB[4] = { - 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9 -}; - -static const int ROTA[80] = { - 11, 14, 15, 12, 5, 8, 7 , 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7 , 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 -}; - -static const int ROTB[80] = { - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 -}; - -static const int WA[80] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 -}; - -static const int WB[80] = { - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 -}; - -#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) - -#define ROUND128_0_TO_15(a,b,c,d,e,f,g,h) \ - a = rol(a + (( b ^ c ^ d) + block[WA[n]]), ROTA[n]); \ - e = rol(e + ((((f ^ g) & h) ^ g) + block[WB[n]] + KB[0]), ROTB[n]); \ - n++ - -#define ROUND128_16_TO_31(a,b,c,d,e,f,g,h) \ - a = rol(a + ((((c ^ d) & b) ^ d) + block[WA[n]] + KA[0]), ROTA[n]); \ - e = rol(e + (((~g | f) ^ h) + block[WB[n]] + KB[1]), ROTB[n]); \ - n++ - -#define ROUND128_32_TO_47(a,b,c,d,e,f,g,h) \ - a = rol(a + (((~c | b) ^ d) + block[WA[n]] + KA[1]), ROTA[n]); \ - e = rol(e + ((((g ^ h) & f) ^ h) + block[WB[n]] + KB[2]), ROTB[n]); \ - n++ - -#define ROUND128_48_TO_63(a,b,c,d,e,f,g,h) \ - a = rol(a + ((((b ^ c) & d) ^ c) + block[WA[n]] + KA[2]), ROTA[n]); \ - e = rol(e + (( f ^ g ^ h) + block[WB[n]]), ROTB[n]); \ - n++ - -#define R128_0 \ - ROUND128_0_TO_15(a,b,c,d,e,f,g,h); \ - ROUND128_0_TO_15(d,a,b,c,h,e,f,g); \ - ROUND128_0_TO_15(c,d,a,b,g,h,e,f); \ - ROUND128_0_TO_15(b,c,d,a,f,g,h,e) - -#define R128_16 \ - ROUND128_16_TO_31(a,b,c,d,e,f,g,h); \ - ROUND128_16_TO_31(d,a,b,c,h,e,f,g); \ - ROUND128_16_TO_31(c,d,a,b,g,h,e,f); \ - ROUND128_16_TO_31(b,c,d,a,f,g,h,e) - -#define R128_32 \ - ROUND128_32_TO_47(a,b,c,d,e,f,g,h); \ - ROUND128_32_TO_47(d,a,b,c,h,e,f,g); \ - ROUND128_32_TO_47(c,d,a,b,g,h,e,f); \ - ROUND128_32_TO_47(b,c,d,a,f,g,h,e) - -#define R128_48 \ - ROUND128_48_TO_63(a,b,c,d,e,f,g,h); \ - ROUND128_48_TO_63(d,a,b,c,h,e,f,g); \ - ROUND128_48_TO_63(c,d,a,b,g,h,e,f); \ - ROUND128_48_TO_63(b,c,d,a,f,g,h,e) - - -RIPEMD128::RIPEMD128() - : count(0) - , buffer() - , state() -{ - state[0] = 0x67452301; - state[1] = 0xEFCDAB89; - state[2] = 0x98BADCFE; - state[3] = 0x10325476; -} - -void RIPEMD128::transform( const uint8_t buffer[64] ) -{ - uint32_t a, b, c, d, e, f, g, h; - uint32_t block[16]; - int n; - - a = e = state[0]; - b = f = state[1]; - c = g = state[2]; - d = h = state[3]; - - for (n = 0; n < 16; n++) - block[n] = qFromLittleEndian( buffer + 4 * n ); - n = 0; - - R128_0; R128_0; R128_0; R128_0; - - R128_16; R128_16; R128_16; R128_16; - - R128_32; R128_32; R128_32; R128_32; - - R128_48; R128_48; R128_48; R128_48; - - h += c + state[1]; - state[1] = state[2] + d + e; - state[2] = state[3] + a + f; - state[3] = state[0] + b + g; - state[0] = h; -} - -void RIPEMD128::update( const uint8_t * data, size_t len ) -{ - size_t i, j; - - j = count & 63; - count += len; - if ( ( j + len ) > 63 ) - { - memcpy( &buffer[j], data, ( i = 64 - j ) ); - transform( buffer ); - for ( ; i + 63 < len; i += 64 ) - transform( &data[i] ); - j = 0; - } - else - { - i = 0; - } - memcpy( &buffer[j], &data[i], len - i ); -} - -void RIPEMD128::digest( uint8_t * digest ) -{ - uint64_t finalcount = qFromLittleEndian( count << 3 ); - update( (const uint8_t *) "\200", 1 ); - while ( ( count & 63 ) != 56 ) - update( ( const uint8_t * ) "", 1 ); - update( ( uint8_t * ) &finalcount, 8 ); /* Should cause a transform() */ - for ( int i = 0; i < 4; i++ ) - qToLittleEndian( state[i], digest + i*4 ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ripemd.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ripemd.hh deleted file mode 100644 index 9b17f63650..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ripemd.hh +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2007 Michael Niedermayer -// Copyright (C) 2013 James Almer -// Copyright (C) 2015 Zhe Wang <0x1998@gmail.com> -// -// Based on the RIPEMD-128 implementation from libavutil -// -// This program is a free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, version 3 of the License. -// -// You can get a copy of GNU General Public License along this program -// But you can always get it from http://www.gnu.org/licenses/gpl.txt -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -#ifndef __RIPEMD_HH_INCLUDED__ -#define __RIPEMD_HH_INCLUDED__ - -#include - -#if defined( _MSC_VER ) && _MSC_VER < 1800 // VS2012 and older -#include -#else -#include -#endif - -class RIPEMD128 -{ -public: - RIPEMD128(); - - // Update hash value - void update( const uint8_t * data, size_t len ); - - // Finish hashing and output digest value. - void digest( uint8_t * digest ); - -private: - uint64_t count; // number of bytes in buffer - uint8_t buffer[64]; // 512-bit buffer of input values used in hash updating - uint32_t state[10]; // current hash value - - void transform( const uint8_t buffer[64] ); -}; - -#endif // __RIPEMD_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/romaji.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/romaji.cc deleted file mode 100644 index 26d0014c1b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/romaji.cc +++ /dev/null @@ -1,126 +0,0 @@ -#include "romaji.hh" -#include - -namespace Romaji { - -class HepburnHiragana: public Transliteration::Table -{ -public: - - HepburnHiragana(); -}; - -HepburnHiragana::HepburnHiragana() -{ - // Raw UTF8 -- handle with care. We'd better remap those to \xAB hex encoding - ins( "a", "あ" ); ins( "i", "い" ); ins( "u", "う" ); ins( "e", "え" ); ins( "o", "お" ); - - ins( "ka", "か" ); ins( "ki", "き" ); ins( "ku", "く" ); ins( "ke", "け" ); ins( "ko", "こ" ); ins( "kya", "きゃ" ); ins( "kyu", "きゅ" ); ins( "kyo", "きょ" ); - ins( "sa", "さ" ); ins( "shi", "し" ); ins( "su", "す" ); ins( "se", "せ" ); ins( "so", "そ" ); ins( "sha", "しゃ" ); ins( "shu", "しゅ" ); ins( "sho", "しょ" ); - ins( "ta", "た" ); ins( "chi", "ち" ); ins( "tsu", "つ" ); ins( "te", "て" ); ins( "to", "と" ); ins( "cha", "ちゃ" ); ins( "chu", "ちゅ" ); ins( "cho", "ちょ" ); - ins( "na", "な" ); ins( "ni", "に" ); ins( "nu", "ぬ" ); ins( "ne", "ね" ); ins( "no", "の" ); ins( "nya", "にゃ" ); ins( "nyu", "にゅ" ); ins( "nyo", "にょ" ); - ins( "ha", "は" ); ins( "hi", "ひ" ); ins( "fu", "ふ" ); ins( "he", "へ" ); ins( "ho", "ほ" ); ins( "hya", "ひゃ" ); ins( "hyu", "ひゅ" ); ins( "hyo", "ひょ" ); - ins( "ma", "ま" ); ins( "mi", "み" ); ins( "mu", "む" ); ins( "me", "め" ); ins( "mo", "も" ); ins( "mya", "みゃ" ); ins( "myu", "みゅ" ); ins( "myo", "みょ" ); - ins( "ya", "や" ); ins( "yu", "ゆ" ); ins( "yo", "よ" ); - ins( "ra", "ら" ); ins( "ri", "り" ); ins( "ru", "る" ); ins( "re", "れ" ); ins( "ro", "ろ" ); ins( "rya", "りゃ" ); ins( "ryu", "りゅ" ); ins( "ryo", "りょ" ); - ins( "wa", "わ" ); /*ゐ wi† ゑ we† */ ins( "wo", "を" ); - ins( "n", "ん" ); - ins( "ga", "が" ); ins( "gi", "ぎ" ); ins( "gu", "ぐ" ); ins( "ge", "げ" ); ins( "go", "ご" ); ins( "gya", "ぎゃ" ); ins( "gyu", "ぎゅ" ); ins( "gyo", "ぎょ" ); - ins( "za", "ざ" ); ins( "ji", "じ" ); ins( "zu", "ず" ); ins( "ze", "ぜ" ); ins( "zo", "ぞ" ); ins( "ja", "じゃ" ); ins( "ju", "じゅ" ); ins( "jo", "じょ" ); - ins( "da", "だ" ); ins( "(ji)", "ぢ" ); ins( "(zu)", "づ" ); ins( "de", "で" ); ins( "do", "ど" ); ins( "(ja)", "ぢゃ" ); ins( "(ju)", "ぢゅ" ); ins( "(jo)", "ぢょ" ); - ins( "ba", "ば" ); ins( "bi", "び" ); ins( "bu", "ぶ" ); ins( "be", "べ" ); ins( "bo", "ぼ" ); ins( "bya", "びゃ" ); ins( "byu", "びゅ" ); ins( "byo", "びょ" ); - ins( "pa", "ぱ" ); ins( "pi", "ぴ" ); ins( "pu", "ぷ" ); ins( "pe", "ぺ" ); ins( "po", "ぽ" ); ins( "pya", "ぴゃ" ); ins( "pyu", "ぴゅ" ); ins( "pyo", "ぴょ" ); - -// Double consonants - - ins( "kka", "っか" ); ins( "kki", "っき" ); ins( "kku", "っく" ); ins( "kke", "っけ" ); ins( "kko", "っこ" ); ins( "kkya", "っきゃ" ); ins( "kkyu", "っきゅ" ); ins( "kkyo", "っきょ" ); - ins( "ssa", "っさ" ); ins( "sshi", "っし" ); ins( "ssu", "っす" ); ins( "sse", "っせ" ); ins( "sso", "っそ" ); ins( "ssha", "っしゃ" ); ins( "sshu", "っしゅ" ); ins( "ssho", "っしょ" ); - ins( "tta", "った" ); ins( "tchi", "っち" ); ins( "ttsu", "っつ" ); ins( "tte", "って" ); ins( "tto", "っと" ); ins( "tcha", "っちゃ" ); ins( "tchu", "っちゅ" ); ins( "tcho", "っちょ" ); - ins( "ppa", "っぱ" ); ins( "ppi", "っぴ" ); ins( "ppu", "っぷ" ); ins( "ppe", "っぺ" ); ins( "ppo", "っぽ" ); ins( "ppya", "っぴゃ" ); ins( "ppyu", "っぴゅ" ); ins( "ppyo", "っぴょ" ); - -} - -class HepburnKatakana: public Transliteration::Table -{ -public: - - HepburnKatakana(); -}; - -HepburnKatakana::HepburnKatakana() -{ - // Raw UTF8 -- handle with care. We'd better remap those to \xAB hex encoding - ins( "a", "ア" ); ins( "i", "イ" ); ins( "u", "ウ" ); ins( "e", "エ" ); ins( "o", "オ" ); - - ins( "ka", "カ" ); ins( "ki", "キ" ); ins( "ku", "ク" ); ins( "ke", "ケ" ); ins( "ko", "コ" ); ins( "kya", "キャ" ); ins( "kyu", "キュ" ); ins( "kyo", "キョ" ); - ins( "sa", "サ" ); ins( "shi", "シ" ); ins( "su", "ス" ); ins( "se", "セ" ); ins( "so", "ソ" ); ins( "sha", "シャ" ); ins( "shu", "シュ" ); ins( "sho", "ショ" ); - ins( "ta", "タ" ); ins( "chi", "チ" ); ins( "tsu", "ツ" ); ins( "te", "テ" ); ins( "to", "ト" ); ins( "cha", "チャ" ); ins( "chu", "チュ" ); ins( "cho", "チョ" ); - ins( "na", "ナ" ); ins( "ni", "ニ" ); ins( "nu", "ヌ" ); ins( "ne", "ネ" ); ins( "no", "ノ" ); ins( "nya", "ニャ" ); ins( "nyu", "ニュ" ); ins( "nyo", "ニョ" ); - ins( "ha", "ハ" ); ins( "hi", "ヒ" ); ins( "fu", "フ" ); ins( "he", "ヘ" ); ins( "ho", "ホ" ); ins( "hya", "ヒャ" ); ins( "hyu", "ヒュ" ); ins( "hyo", "ヒョ" ); - ins( "ma", "マ" ); ins( "mi", "ミ" ); ins( "mu", "ム" ); ins( "me", "メ" ); ins( "mo", "モ" ); ins( "mya", "ミャ" ); ins( "myu", "ミュ" ); ins( "myo", "ミョ" ); - ins( "ya", "ヤ" ); ins( "yu", "ユ" ); ins( "yo", "ヨ" ); - ins( "ra", "ラ" ); ins( "ri", "リ" ); ins( "ru", "ル" ); ins( "re", "レ" ); ins( "ro", "ロ" ); ins( "rya", "リャ" ); ins( "ryu", "リュ" ); ins( "ryo", "リョ" ); - ins( "wa", "ワ" ); /*ヰ wi† ヱ we† ヲ wo‡ */ - ins( "n", "ン" ); - ins( "ga", "ガ" ); ins( "gi", "ギ" ); ins( "gu", "グ" ); ins( "ge", "ゲ" ); ins( "go", "ゴ" ); ins( "gya", "ギャ" ); ins( "gyu", "ギュ" ); ins( "gyo", "ギョ" ); - ins( "za", "ザ" ); ins( "ji", "ジ" ); ins( "zu", "ズ" ); ins( "ze", "ゼ" ); ins( "zo", "ゾ" ); ins( "ja", "ジャ" ); ins( "ju", "ジュ" ); ins( "jo", "ジョ" ); - ins( "da", "ダ" ); ins( "(ji)", "ヂ" ); ins( "(zu)", "ヅ" ); ins( "de", "デ" ); ins( "do", "ド" ); ins( "(ja)", "ヂャ" ); ins( "(ju)", "ヂュ" ); ins( "(jo)", "ヂョ" ); - ins( "ba", "バ" ); ins( "bi", "ビ" ); ins( "bu", "ブ" ); ins( "be", "ベ" ); ins( "bo", "ボ" ); ins( "bya", "ビャ" ); ins( "byu", "ビュ" ); ins( "byo", "ビョ" ); - ins( "pa", "パ" ); ins( "pi", "ピ" ); ins( "pu", "プ" ); ins( "pe", "ペ" ); ins( "po", "ポ" ); ins( "pya", "ピャ" ); ins( "pyu", "ピュ" ); ins( "pyo", "ピョ" ); - ins( "ye", "イェ" ); - ins( "wi", "ウィ" ); ins( "we", "ウェ" ); ins( "wo", "ウォ" ); - ins( "va", "ヷ" ); /*ヸ vi† ヹ ve†*/ ins( "vo", "ヺ" ); - ins( "va", "ヴァ" ); ins( "vi", "ヴィ" ); ins( "vu", "ヴ" ); ins( "ve", "ヴェ" ); ins( "vo", "ヴォ" ); - ins( "she", "シェ" ); - ins( "je", "ジェ" ); - ins( "che", "チェ" ); - ins( "ti", "ティ" ); ins( "tu", "トゥ" ); - ins( "tyu", "テュ" ); - ins( "di", "ディ" ); ins( "du", "ドゥ" ); - ins( "dyu", "デュ" ); - ins( "tsa", "ツァ" ); ins( "tse", "ツェ" ); ins( "tso", "ツォ" ); - ins( "fa", "ファ" ); ins( "fi", "フィ" ); ins( "fe", "フェ" ); ins( "fo", "フォ" ); - ins( "fyu", "フュ" ); - // Long vowel mark - ins( "-", "ー" ); - // Double consonants - - ins( "kka", "ッカ" ); ins( "kki", "ッキ" ); ins( "kku", "ック" ); ins( "kke", "ッケ" ); ins( "kko", "ッコ" ); ins( "kkya", "ッキャ" ); ins( "kkyu", "ッキュ" ); ins( "kkyo", "ッキョ" ); - ins( "ssa", "ッサ" ); ins( "sshi", "ッシ" ); ins( "ssu", "ッス" ); ins( "sse", "ッセ" ); ins( "sso", "ッソ" ); ins( "ssha", "ッシャ" ); ins( "sshu", "ッシュ" ); ins( "ssho", "ッショ" ); - ins( "tta", "ッタ" ); ins( "tchi", "ッチ" ); ins( "ttsu", "ッツ" ); ins( "tte", "ッテ" ); ins( "tto", "ット" ); ins( "tcha", "ッチャ" ); ins( "tchu", "ッチュ" ); ins( "tcho", "ッチョ" ); - ins( "ppa", "ッパ" ); ins( "ppi", "ッピ" ); ins( "ppu", "ップ" ); ins( "ppe", "ッペ" ); ins( "ppo", "ッポ" ); ins( "ppya", "ッピャ" ); ins( "ppyu", "ッピュ" ); ins( "ppyo", "ッピョ" ); -} - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::Romaji const & r ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - if ( r.enable ) - { - if ( r.enableHepburn ) - { - if ( r.enableHiragana ) - { - static HepburnHiragana t; - - result.push_back( new Transliteration::TransliterationDictionary( "94eae5a5aaf5b0a900490f4d6b36aac0", - QCoreApplication::translate( "Romaji", "Hepburn Romaji for Hiragana" ).toUtf8().data(), - QIcon( ":/flags/jp.png" ), t, false ) ); - } - - if ( r.enableKatakana ) - { - static HepburnKatakana t; - - result.push_back( new Transliteration::TransliterationDictionary( "3252a35767d3f6e85e3e39069800dd2f", - QCoreApplication::translate( "Romaji", "Hepburn Romaji for Katakana" ).toUtf8().data(), - QIcon( ":/flags/jp.png" ), t, false ) ); - } - } - } - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/romaji.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/romaji.hh deleted file mode 100644 index aaaff187db..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/romaji.hh +++ /dev/null @@ -1,20 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ROMAJI_HH_INCLUDED__ -#define __ROMAJI_HH_INCLUDED__ - -#include "transliteration.hh" -#include "config.hh" - -/// Japanese romanization (Romaji) support. -namespace Romaji { - -using std::vector; - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::Romaji const & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/russiantranslit.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/russiantranslit.cc deleted file mode 100644 index 9b68217dd2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/russiantranslit.cc +++ /dev/null @@ -1,112 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "russiantranslit.hh" -#include "transliteration.hh" -#include - -namespace RussianTranslit { - -class RussianTable: public Transliteration::Table -{ -public: - - RussianTable(); -}; - -RussianTable::RussianTable() -{ - // Utf8 - - // Lowercase - ins( "a", "а" ); - ins( "b", "б" ); - ins( "v", "в" ); - ins( "w", "в" ); - ins( "g", "г" ); - ins( "d", "д" ); - ins( "e", "е" ); - ins( "yo", "ё" ); - ins( "zh", "ж" ); - ins( "z", "з" ); - ins( "i", "и" ); - ins( "j", "й" ); - ins( "k", "к" ); - ins( "l", "л" ); - ins( "m", "м" ); - ins( "n", "н" ); - ins( "o", "о" ); - ins( "p", "п" ); - ins( "r", "р" ); - ins( "s", "с" ); - ins( "t", "т" ); - ins( "u", "у" ); - ins( "f", "ф" ); - ins( "h", "х" ); - ins( "ts", "ц" ); - ins( "c", "ц" ); - ins( "ch", "ч" ); - ins( "sh", "ш" ); - ins( "shch", "щ" ); - ins( "\"", "ъ" ); - ins( "y", "ы" ); - ins( "'", "ь" ); - ins( "'e", "э" ); - ins( "yu", "ю" ); - ins( "ya", "я" ); - - // Uppercase - ins( "A", "А" ); - ins( "B", "Б" ); - ins( "V", "В" ); - ins( "W", "В" ); - ins( "G", "Г" ); - ins( "D", "Д" ); - ins( "E", "Е" ); - ins( "YO", "Ё" ); - ins( "Yo", "Ё" ); - ins( "ZH", "Ж" ); - ins( "Zh", "Ж" ); - ins( "Z", "З" ); - ins( "I", "И" ); - ins( "J", "Й" ); - ins( "K", "К" ); - ins( "L", "Л" ); - ins( "M", "М" ); - ins( "N", "Н" ); - ins( "O", "О" ); - ins( "P", "П" ); - ins( "R", "Р" ); - ins( "S", "С" ); - ins( "T", "Т" ); - ins( "U", "У" ); - ins( "F", "Ф" ); - ins( "H", "Х" ); - ins( "TS", "Ц" ); - ins( "Ts", "Ц" ); - ins( "C", "Ц" ); - ins( "CH", "Ч" ); - ins( "Ch", "Ч" ); - ins( "SH", "Ш" ); - ins( "Sh", "Ш" ); - ins( "SHCH", "Щ" ); - ins( "ShCh", "Щ" ); - ins( "Y", "Ы" ); - ins( "'E", "Э" ); - ins( "YU", "Ю" ); - ins( "Yu", "Ю" ); - ins( "YA", "Я" ); - ins( "Ya", "Я" ); -} - -sptr< Dictionary::Class > makeDictionary() throw( std::exception ) -{ - static RussianTable t; - - return new Transliteration::TransliterationDictionary( "cf1b74acd98adea9b2bba16af38f1086", - QCoreApplication::translate( "RussianTranslit", "Russian Transliteration" ).toUtf8().data(), - QIcon( ":/flags/ru.png" ), t ); -} - -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/russiantranslit.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/russiantranslit.hh deleted file mode 100644 index ff05254592..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/russiantranslit.hh +++ /dev/null @@ -1,17 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __RUSSIANTRANSLIT_HH_INCLUDED__ -#define __RUSSIANTRANSLIT_HH_INCLUDED__ - -#include "dictionary.hh" - -// Support for Russian transliteration -namespace RussianTranslit { - -sptr< Dictionary::Class > makeDictionary() throw( std::exception ); - -} - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sapi.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sapi.hh deleted file mode 100644 index 6d1bee2a60..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sapi.hh +++ /dev/null @@ -1,330 +0,0 @@ -#ifndef __SAPI_HH_INCLUDED__ -#define __SAPI_HH_INCLUDED__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#undef INTERFACE - -#define SPCAT_VOICES L"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices" - -typedef void __stdcall SPNOTIFYCALLBACK( WPARAM wParam, LPARAM lParam ); - -typedef struct SPEVENTSOURCEINFO -{ - ULONGLONG ullEventInterest; - ULONGLONG ullQueuedInterest; - ULONG ulCount; -} SPEVENTSOURCEINFO; - -typedef enum SPEVENTENUM -{ - SPEI_UNDEFINED = 0, - SPEI_START_INPUT_STREAM = 1, - SPEI_END_INPUT_STREAM = 2, - SPEI_VOICE_CHANGE = 3, - SPEI_TTS_BOOKMARK = 4, - SPEI_WORD_BOUNDARY = 5, - SPEI_PHONEME = 6, - SPEI_SENTENCE_BOUNDARY = 7, - SPEI_VISEME = 8, - SPEI_TTS_AUDIO_LEVEL = 9, - SPEI_TTS_PRIVATE = 15, - SPEI_MIN_TTS = 1, - SPEI_MAX_TTS = 15, - SPEI_END_SR_STREAM = 34, - SPEI_SOUND_START = 35, - SPEI_SOUND_END = 36, - SPEI_PHRASE_START = 37, - SPEI_RECOGNITION = 38, - SPEI_HYPOTHESIS = 39, - SPEI_SR_BOOKMARK = 40, - SPEI_PROPERTY_NUM_CHANGE = 41, - SPEI_PROPERTY_STRING_CHANGE = 42, - SPEI_FALSE_RECOGNITION = 43, - SPEI_INTERFERENCE = 44, - SPEI_REQUEST_UI = 45, - SPEI_RECO_STATE_CHANGE = 46, - SPEI_ADAPTATION = 47, - SPEI_START_SR_STREAM = 48, - SPEI_RECO_OTHER_CONTEXT = 49, - SPEI_SR_AUDIO_LEVEL = 50, - SPEI_SR_RETAINEDAUDIO = 51, - SPEI_SR_PRIVATE = 52, - SPEI_RESERVED4 = 53, - SPEI_RESERVED5 = 54, - SPEI_RESERVED6 = 55, - SPEI_MIN_SR = 34, - SPEI_MAX_SR = 55, - SPEI_RESERVED1 = 30, - SPEI_RESERVED2 = 33, - SPEI_RESERVED3 = 63 -} SPEVENTENUM; - -typedef enum SPEVENTLPARAMTYPE -{ - SPET_LPARAM_IS_UNDEFINED = 0, - SPET_LPARAM_IS_TOKEN = ( SPET_LPARAM_IS_UNDEFINED + 1 ) , - SPET_LPARAM_IS_OBJECT = ( SPET_LPARAM_IS_TOKEN + 1 ) , - SPET_LPARAM_IS_POINTER = ( SPET_LPARAM_IS_OBJECT + 1 ) , - SPET_LPARAM_IS_STRING = ( SPET_LPARAM_IS_POINTER + 1 ) -} SPEVENTLPARAMTYPE; - -typedef struct SPEVENT -{ - SPEVENTENUM eEventId : 16; - SPEVENTLPARAMTYPE elParamType : 16; - ULONG ulStreamNum; - ULONGLONG ullAudioStreamOffset; - WPARAM wParam; - LPARAM lParam; -} SPEVENT; - -typedef WCHAR SPPHONEID; - -typedef enum SPVISEMES -{ - SP_VISEME_0 = 0, - SP_VISEME_1 = ( SP_VISEME_0 + 1 ) , - SP_VISEME_2 = ( SP_VISEME_1 + 1 ) , - SP_VISEME_3 = ( SP_VISEME_2 + 1 ) , - SP_VISEME_4 = ( SP_VISEME_3 + 1 ) , - SP_VISEME_5 = ( SP_VISEME_4 + 1 ) , - SP_VISEME_6 = ( SP_VISEME_5 + 1 ) , - SP_VISEME_7 = ( SP_VISEME_6 + 1 ) , - SP_VISEME_8 = ( SP_VISEME_7 + 1 ) , - SP_VISEME_9 = ( SP_VISEME_8 + 1 ) , - SP_VISEME_10 = ( SP_VISEME_9 + 1 ) , - SP_VISEME_11 = ( SP_VISEME_10 + 1 ) , - SP_VISEME_12 = ( SP_VISEME_11 + 1 ) , - SP_VISEME_13 = ( SP_VISEME_12 + 1 ) , - SP_VISEME_14 = ( SP_VISEME_13 + 1 ) , - SP_VISEME_15 = ( SP_VISEME_14 + 1 ) , - SP_VISEME_16 = ( SP_VISEME_15 + 1 ) , - SP_VISEME_17 = ( SP_VISEME_16 + 1 ) , - SP_VISEME_18 = ( SP_VISEME_17 + 1 ) , - SP_VISEME_19 = ( SP_VISEME_18 + 1 ) , - SP_VISEME_20 = ( SP_VISEME_19 + 1 ) , - SP_VISEME_21 = ( SP_VISEME_20 + 1 ) -} SPVISEMES; - -typedef enum SPDATAKEYLOCATION -{ - SPDKL_DefaultLocation = 0, - SPDKL_CurrentUser = 1, - SPDKL_LocalMachine = 2, - SPDKL_CurrentConfig = 5 -} SPDATAKEYLOCATION; - -typedef struct SPVOICESTATUS -{ - ULONG ulCurrentStream; - ULONG ulLastStreamQueued; - HRESULT hrLastResult; - DWORD dwRunningState; - ULONG ulInputWordPos; - ULONG ulInputWordLen; - ULONG ulInputSentPos; - ULONG ulInputSentLen; - LONG lBookmarkId; - SPPHONEID PhonemeId; - SPVISEMES VisemeId; - DWORD dwReserved1; - DWORD dwReserved2; -} SPVOICESTATUS; - -typedef enum SPVPRIORITY -{ - SPVPRI_NORMAL = 0, - SPVPRI_ALERT = ( 1L << 0 ) , - SPVPRI_OVER = ( 1L << 1 ) -} SPVPRIORITY; - -typedef enum SPEAKFLAGS -{ - SPF_DEFAULT = 0, - SPF_ASYNC = ( 1L << 0 ) , - SPF_PURGEBEFORESPEAK = ( 1L << 1 ) , - SPF_IS_FILENAME = ( 1L << 2 ) , - SPF_IS_XML = ( 1L << 3 ) , - SPF_IS_NOT_XML = ( 1L << 4 ) , - SPF_PERSIST_XML = ( 1L << 5 ) , - SPF_NLP_SPEAK_PUNC = ( 1L << 6 ) , - SPF_PARSE_SAPI = ( 1L << 7 ) , - SPF_PARSE_SSML = ( 1L << 8 ) , - SPF_PARSE_AUTODETECT = 0, - SPF_NLP_MASK = SPF_NLP_SPEAK_PUNC, - SPF_PARSE_MASK = ( SPF_PARSE_SAPI | SPF_PARSE_SSML ) , - SPF_VOICE_MASK = ( ( ( ( ( ( ( SPF_ASYNC | SPF_PURGEBEFORESPEAK ) | SPF_IS_FILENAME ) | SPF_IS_XML ) | SPF_IS_NOT_XML ) | SPF_NLP_MASK ) | SPF_PERSIST_XML ) | SPF_PARSE_MASK ) , - SPF_UNUSED_FLAGS = ~SPF_VOICE_MASK -} SPEAKFLAGS; - -typedef enum SPRUNSTATE -{ - SPRS_DONE = ( 1L << 0 ) , - SPRS_IS_SPEAKING = ( 1L << 1 ) -} SPRUNSTATE; - -EXTERN_C const IID CLSID_SpVoice; -EXTERN_C const IID IID_ISpVoice; -EXTERN_C const IID IID_ISpObjectToken; -EXTERN_C const IID CLSID_SpObjectToken; -EXTERN_C const IID IID_IEnumSpObjectTokens; -EXTERN_C const IID IID_ISpEventSource; -EXTERN_C const IID IID_ISpNotifySource; -EXTERN_C const IID IID_ISpNotifySink; -EXTERN_C const IID IID_ISpObjectTokenCategory; -EXTERN_C const IID CLSID_SpObjectTokenCategory; - -typedef interface ISpVoice ISpVoice; -typedef interface ISpObjectToken ISpObjectToken; -typedef interface ISpObjectTokenCategory ISpObjectTokenCategory; -typedef interface IEnumSpObjectTokens IEnumSpObjectTokens; -typedef interface ISpEventSource ISpEventSource; -typedef interface ISpNotifySource ISpNotifySource; -typedef interface ISpNotifySink ISpNotifySink; -typedef interface ISpNotifyCallback ISpNotifyCallback; -typedef interface ISpDataKey ISpDataKey; -typedef interface ISpStreamFormat ISpStreamFormat; - -#define INTERFACE ISpNotifyCallback -DECLARE_INTERFACE( ISpNotifyCallback ) -{ - STDMETHOD( NotifyCallback )( THIS_ WPARAM, LPARAM ) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpNotifySink -DECLARE_INTERFACE_(ISpNotifySink, IUnknown ) -{ - STDMETHOD(Notify)( THIS) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpNotifySource -DECLARE_INTERFACE_(ISpNotifySource, IUnknown ) -{ - STDMETHOD( SetNotifySink )( THIS_ ISpNotifySink * ) PURE; - STDMETHOD( SetNotifyWindowMessage )( THIS_ HWND, UINT, WPARAM, LPARAM ) PURE; - STDMETHOD( SetNotifyCallbackFunction )( THIS_ SPNOTIFYCALLBACK ) PURE; - STDMETHOD( SetNotifyCallbackInterface )( THIS_ ISpNotifyCallback *, WPARAM, LPARAM ) PURE; - STDMETHOD( SetNotifyWin32Event )( THIS) PURE; - STDMETHOD( WaitForNotifyEvent )( THIS_ DWORD ) PURE; - STDMETHOD( GetNotifyEventHandle )( THIS_ DWORD ) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpDataKey -DECLARE_INTERFACE_( ISpDataKey, IUnknown ) -{ - STDMETHOD( SetData )( THIS_ LPCWSTR, ULONG, const BYTE * ) PURE; - STDMETHOD( GetData )( THIS_ LPCWSTR, ULONG *, const BYTE * ) PURE; - STDMETHOD( SetStringValue )( THIS_ LPCWSTR, LPCWSTR ) PURE; - STDMETHOD( GetStringValue )( THIS_ LPCWSTR, LPWSTR * ) PURE; - STDMETHOD( SetDWORD )( THIS_ LPCWSTR, DWORD ) PURE; - STDMETHOD( GetDWORD )( THIS_ LPCWSTR, DWORD * ) PURE; - STDMETHOD( OpenKey )( THIS_ LPCWSTR, ISpDataKey * * ) PURE; - STDMETHOD( CreateKey )( THIS_ LPCWSTR, ISpDataKey * * ) PURE; - STDMETHOD( DeleteKey )( THIS_ LPCWSTR ) PURE; - STDMETHOD( DeleteValue )( THIS_ LPCWSTR ) PURE; - STDMETHOD( EnumKeys )( THIS_ ULONG, LPWSTR * ) PURE; - STDMETHOD( EnumValues )( THIS_ ULONG, LPWSTR * ) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpEventSource -DECLARE_INTERFACE_( ISpEventSource, ISpNotifySource ) -{ - STDMETHOD( SetInterest )( THIS_ ULONGLONG, ULONGLONG ) PURE; - STDMETHOD( GetEvents )( THIS_ ULONG, SPEVENT *, ULONG ) PURE; - STDMETHOD( GetInfo )( THIS_ SPEVENTSOURCEINFO * ) PURE; -}; -#undef INTERFACE - -#define INTERFACE IEnumSpObjectTokens -DECLARE_INTERFACE_( IEnumSpObjectTokens, IUnknown ) -{ - STDMETHOD( Next )( THIS_ ULONG, ISpObjectToken * *, ULONG * ) PURE; - STDMETHOD( Skip )( THIS_ ULONG ) PURE; - STDMETHOD( Reset )( THIS ) PURE; - STDMETHOD( Clone )( THIS_ IEnumSpObjectTokens * * ) PURE; - STDMETHOD( Item )( THIS_ ULONG, ISpObjectToken * * ) PURE; - STDMETHOD( GetCount )( THIS_ ULONG * ) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpObjectToken -DECLARE_INTERFACE_( ISpObjectToken, ISpDataKey ) -{ - STDMETHOD( SetId )( THIS_ LPCWSTR, LPCWSTR, BOOL ) PURE; - STDMETHOD( GetId )( THIS_ LPWSTR * ) PURE; - STDMETHOD( GetCategory )( THIS_ ISpObjectTokenCategory * * ) PURE; - STDMETHOD( CreateInstance )( THIS_ IUnknown *, DWORD, REFIID, void * * ) PURE; - STDMETHOD( GetStorageFileName )( THIS_ REFCLSID, LPCWSTR, LPCWSTR, ULONG, LPWSTR * ) PURE; - STDMETHOD( RemoveStorageFileName )( THIS_ REFCLSID, LPCWSTR, BOOL ) PURE; - STDMETHOD( Remove )( THIS_ const CLSID * ) PURE; - STDMETHOD( IsUISupported )( THIS_ LPCWSTR, void *, ULONG, IUnknown *, BOOL * ) PURE; - STDMETHOD( DisplayUI )( THIS_ HWND, LPCWSTR, LPCWSTR, void *, ULONG, IUnknown * ) PURE; - STDMETHOD( MatchesAttributes )( THIS_ LPCWSTR, BOOL * ) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpObjectTokenCategory -DECLARE_INTERFACE_(ISpObjectTokenCategory, ISpDataKey) -{ - STDMETHOD(SetId)( THIS_ LPCWSTR, BOOL) PURE; - STDMETHOD(GetId)( THIS_ LPWSTR *) PURE; - STDMETHOD(GetDataKey)( THIS_ SPDATAKEYLOCATION, ISpDataKey * *) PURE; - STDMETHOD(EnumTokens)( THIS_ LPCWSTR, LPCWSTR, IEnumSpObjectTokens * *) PURE; - STDMETHOD(SetDefaultTokenId)( THIS_ LPCWSTR) PURE; - STDMETHOD(GetDefaultTokenId)( THIS_ LPWSTR *) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpStreamFormat -DECLARE_INTERFACE_( ISpStreamFormat, IStream ) -{ - STDMETHOD( GetFormat )( THIS_ GUID *, WAVEFORMATEX * * ) PURE; -}; -#undef INTERFACE - -#define INTERFACE ISpVoice -DECLARE_INTERFACE_( ISpVoice, ISpEventSource ) -{ - STDMETHOD( SetOutput )( THIS_ IUnknown *, BOOL ) PURE; - STDMETHOD( GetOutputObjectToken )( THIS_ ISpObjectToken * * ) PURE; - STDMETHOD( GetOutputStream )( THIS_ ISpStreamFormat * * ) PURE; - STDMETHOD( Pause )( THIS ) PURE; - STDMETHOD( Resume )( THIS ) PURE; - STDMETHOD( SetVoice )( THIS_ ISpObjectToken * ) PURE; - STDMETHOD( GetVoice )( THIS_ ISpObjectToken * * ) PURE; - STDMETHOD( Speak )( THIS_ LPCWSTR, DWORD, ULONG * ) PURE; - STDMETHOD( SpeakStream )( THIS_ IStream *, DWORD, ULONG * ) PURE; - STDMETHOD( GetStatus )( THIS_ SPVOICESTATUS *, LPWSTR * ) PURE; - STDMETHOD( Skip )( THIS_ LPCWSTR, long, ULONG * ) PURE; - STDMETHOD( SetPriority )( THIS_ SPVPRIORITY ) PURE; - STDMETHOD( GetPriority )( THIS_ SPVPRIORITY * ) PURE; - STDMETHOD( SetAlertBoundary )( THIS_ SPEVENTENUM ) PURE; - STDMETHOD( GetAlertBoundary )( THIS_ SPEVENTENUM * ) PURE; - STDMETHOD( SetRate )( THIS_ long ) PURE; - STDMETHOD( GetRate )( THIS_ long * ) PURE; - STDMETHOD( SetVolume )( THIS_ USHORT ) PURE; - STDMETHOD( GetVolume )( THIS_ USHORT * ) PURE; - STDMETHOD( WaitUntilDone )( THIS_ ULONG ) PURE; - STDMETHOD( SetSyncSpeakTimeout )( THIS_ ULONG ) PURE; - STDMETHOD( GetSyncSpeakTimeout )( THIS_ ULONG * ) PURE; - STDMETHOD( SpeakCompleteEvent )( THIS ) PURE; - STDMETHOD( IsUISupported )( THIS_ LPCWSTR, void *, ULONG, BOOL * ) PURE; - STDMETHOD( DisplayUI )( THIS_ HWND, LPCWSTR, LPCWSTR, LPCWSTR, void *, ULONG ) PURE; -}; -#undef INTERFACE - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.cc deleted file mode 100644 index 8e1f2d6d5a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.cc +++ /dev/null @@ -1,1050 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "scanpopup.hh" -#include "folding.hh" -#include "wstring_qt.hh" -#include -#include -#include -#include -#include -#include -#include "gddebug.hh" -#include "gestures.hh" - -#ifdef Q_OS_MAC -#include "macmouseover.hh" -#define MouseOver MacMouseOver -#else -#include "mouseover.hh" -#endif - -using std::wstring; - -/// We use different window flags under Windows and X11 due to slight differences -/// in their behavior on those platforms. -static Qt::WindowFlags popupWindowFlags = - -#if defined (Q_OS_WIN) || ( defined (Q_OS_MAC) && QT_VERSION < QT_VERSION_CHECK( 5, 3, 0 ) ) -Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint -#else -Qt::Popup -#endif -; - -ScanPopup::ScanPopup( QWidget * parent, - Config::Class & cfg_, - ArticleNetworkAccessManager & articleNetMgr, - std::vector< sptr< Dictionary::Class > > const & allDictionaries_, - Instances::Groups const & groups_, - History & history_ ): - QMainWindow( parent ), - cfg( cfg_ ), - isScanningEnabled( false ), - allDictionaries( allDictionaries_ ), - groups( groups_ ), - history( history_ ), - escapeAction( this ), - switchExpandModeAction( this ), - focusTranslateLineAction( this ), - openSearchAction( this ), - wordFinder( this ), - dictionaryBar( this, configEvents, cfg.editDictionaryCommandLine, cfg.preferences.maxDictionaryRefsInContextMenu ), - mouseEnteredOnce( false ), - mouseIntercepted( false ), - hideTimer( this ) -{ - ui.setupUi( this ); - - openSearchAction.setShortcut( QKeySequence( "Ctrl+F" ) ); - - if( layoutDirection() == Qt::RightToLeft ) - { - // Adjust button icons for Right-To-Left layout - ui.goBackButton->setIcon( QIcon( ":/icons/next.png" ) ); - ui.goForwardButton->setIcon( QIcon( ":/icons/previous.png" ) ); - } - - mainStatusBar = new MainStatusBar( this ); - - ui.queryError->hide(); - - definition = new ArticleView( ui.outerFrame, articleNetMgr, allDictionaries, - groups, true, cfg, - openSearchAction, - dictionaryBar.toggleViewAction() - ); - - connect( this, SIGNAL(switchExpandMode() ), - definition, SLOT( switchExpandOptionalParts() ) ); - connect( this, SIGNAL(setViewExpandMode( bool ) ), - definition, SLOT( receiveExpandOptionalParts( bool ) ) ); - connect( definition, SIGNAL( setExpandMode( bool ) ), - this, SIGNAL( setExpandMode( bool ) ) ); - connect( definition, SIGNAL( forceAddWordToHistory( QString ) ), - this, SIGNAL( forceAddWordToHistory( QString ) ) ); - connect( this, SIGNAL( closeMenu() ), - definition, SIGNAL( closePopupMenu() ) ); - connect( definition, SIGNAL( sendWordToHistory( QString ) ), - this, SIGNAL( sendWordToHistory( QString ) ) ); - connect( definition, SIGNAL( typingEvent( QString const & ) ), - this, SLOT( typingEvent( QString const & ) ) ); - - applyZoomFactor(); - - ui.mainLayout->addWidget( definition ); - - ui.translateBox->wordList()->attachFinder( &wordFinder ); - ui.translateBox->wordList()->setFocusPolicy(Qt::ClickFocus); - ui.translateBox->translateLine()->installEventFilter( this ); - - connect( ui.translateBox->translateLine(), SIGNAL( textChanged( QString const & ) ), - this, SLOT( translateInputChanged( QString const & ) ) ); - - connect( ui.translateBox->translateLine(), SIGNAL( returnPressed() ), - this, SLOT( translateInputFinished() ) ); - - connect( ui.translateBox->wordList(), SIGNAL( itemClicked( QListWidgetItem * ) ), - this, SLOT( wordListItemActivated( QListWidgetItem * ) ) ); - - connect( ui.translateBox->wordList(), SIGNAL( itemDoubleClicked ( QListWidgetItem * ) ), - this, SLOT( wordListItemActivated( QListWidgetItem * ) ) ); - - connect( ui.translateBox->wordList(), SIGNAL( statusBarMessage( QString const &, int, QPixmap const & ) ), - this, SLOT( showStatusBarMessage( QString const &, int, QPixmap const & ) ) ); - - ui.pronounceButton->hide(); - - ui.groupList->fill( groups ); - ui.groupList->setCurrentGroup( cfg.lastPopupGroupId ); - - dictionaryBar.setFloatable( false ); - - Instances::Group const * igrp = groups.findGroup( cfg.lastPopupGroupId ); - if( cfg.lastPopupGroupId == Instances::Group::AllGroupId ) - { - if( igrp ) - igrp->checkMutedDictionaries( &cfg.popupMutedDictionaries ); - dictionaryBar.setMutedDictionaries( &cfg.popupMutedDictionaries ); - } - else - { - Config::Group * grp = cfg.getGroup( cfg.lastPopupGroupId ); - if( igrp && grp ) - igrp->checkMutedDictionaries( &grp->popupMutedDictionaries ); - dictionaryBar.setMutedDictionaries( grp ? &grp->popupMutedDictionaries : 0 ); - } - - addToolBar( Qt::RightToolBarArea, &dictionaryBar ); - - connect( &dictionaryBar, SIGNAL(editGroupRequested()), - this, SLOT(editGroupRequested()) ); - connect( this, SIGNAL( closeMenu() ), - &dictionaryBar, SIGNAL( closePopupMenu() ) ); - connect( &dictionaryBar, SIGNAL( showDictionaryInfo( QString const & ) ), - this, SIGNAL( showDictionaryInfo( QString const & ) ) ); - connect( &dictionaryBar, SIGNAL( openDictionaryFolder( QString const & ) ), - this, SIGNAL( openDictionaryFolder( QString const & ) ) ); - - if ( cfg.popupWindowGeometry.size() ) - restoreGeometry( cfg.popupWindowGeometry ); - - if ( cfg.popupWindowState.size() ) - restoreState( cfg.popupWindowState, 1 ); - - ui.pinButton->setChecked( cfg.pinPopupWindow ); - - if ( cfg.pinPopupWindow ) - { - dictionaryBar.setMovable( true ); - setWindowFlags( Qt::Dialog ); - } - else - { - dictionaryBar.setMovable( false ); - setWindowFlags( popupWindowFlags ); - } - - connect( &configEvents, SIGNAL( mutedDictionariesChanged() ), - this, SLOT( mutedDictionariesChanged() ) ); - - definition->focus(); - - #if 0 // Experimental code to give window a non-rectangular shape (i.e. - // balloon) using a colorkey mask. - QPixmap pixMask( size() ); - render( &pixMask ); - - setMask( pixMask.createMaskFromColor( QColor( 255, 0, 0 ) ) ); - - // This helps against flickering - setAttribute( Qt::WA_NoSystemBackground ); - #endif - - escapeAction.setShortcut( QKeySequence( "Esc" ) ); - addAction( &escapeAction ); - connect( &escapeAction, SIGNAL( triggered() ), - this, SLOT( escapePressed() ) ); - - focusTranslateLineAction.setShortcutContext( Qt::WidgetWithChildrenShortcut ); - addAction( &focusTranslateLineAction ); - focusTranslateLineAction.setShortcuts( QList< QKeySequence >() << - QKeySequence( "Alt+D" ) << - QKeySequence( "Ctrl+L" ) ); - - connect( &focusTranslateLineAction, SIGNAL( triggered() ), - this, SLOT( focusTranslateLine() ) ); - - - switchExpandModeAction.setShortcuts( QList< QKeySequence >() << - QKeySequence( Qt::CTRL + Qt::Key_8 ) << - QKeySequence( Qt::CTRL + Qt::Key_Asterisk ) << - QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_8 ) ); - - addAction( &switchExpandModeAction ); - connect( &switchExpandModeAction, SIGNAL( triggered() ), - this, SLOT(switchExpandOptionalPartsMode() ) ); - - connect( ui.groupList, SIGNAL( currentIndexChanged( QString const & ) ), - this, SLOT( currentGroupChanged( QString const & ) ) ); - - connect( &wordFinder, SIGNAL( finished() ), - this, SLOT( prefixMatchFinished() ) ); - - connect( ui.pinButton, SIGNAL( clicked( bool ) ), - this, SLOT( pinButtonClicked( bool ) ) ); - - connect( definition, SIGNAL( pageLoaded( ArticleView * ) ), - this, SLOT( pageLoaded( ArticleView * ) ) ); - - connect( definition, SIGNAL( statusBarMessage( QString const &, int, QPixmap const & ) ), - this, SLOT( showStatusBarMessage( QString const &, int, QPixmap const & ) ) ); - -#ifdef HAVE_X11 - connect( QApplication::clipboard(), SIGNAL( changed( QClipboard::Mode ) ), - this, SLOT( clipboardChanged( QClipboard::Mode ) ) ); -#else - if( cfg.preferences.trackClipboardChanges ) - connect( QApplication::clipboard(), SIGNAL( changed( QClipboard::Mode ) ), - this, SLOT( clipboardChanged( QClipboard::Mode ) ) ); -#endif - - connect( &MouseOver::instance(), SIGNAL( hovered( QString const &, bool ) ), - this, SLOT( mouseHovered( QString const &, bool ) ) ); - -#ifdef Q_OS_WIN32 - connect( &MouseOver::instance(), SIGNAL( isGoldenDictWindow( HWND ) ), - this, SIGNAL( isGoldenDictWindow( HWND ) ) ); -#endif - - hideTimer.setSingleShot( true ); - hideTimer.setInterval( 400 ); - - connect( &hideTimer, SIGNAL( timeout() ), - this, SLOT( hideTimerExpired() ) ); - - altModeExpirationTimer.setSingleShot( true ); - altModeExpirationTimer.setInterval( cfg.preferences.scanPopupAltModeSecs * 1000 ); - - connect( &altModeExpirationTimer, SIGNAL( timeout() ), - this, SLOT( altModeExpired() ) ); - - // This one polls constantly for modifiers while alt mode lasts - altModePollingTimer.setSingleShot( false ); - altModePollingTimer.setInterval( 50 ); - connect( &altModePollingTimer, SIGNAL( timeout() ), - this, SLOT( altModePoll() ) ); - - mouseGrabPollTimer.setSingleShot( false ); - mouseGrabPollTimer.setInterval( 10 ); - connect( &mouseGrabPollTimer, SIGNAL( timeout() ), - this, SLOT(mouseGrabPoll()) ); - - MouseOver::instance().setPreferencesPtr( &( cfg.preferences ) ); - - ui.goBackButton->setEnabled( false ); - ui.goForwardButton->setEnabled( false ); - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - grabGesture( Gestures::GDPinchGestureType ); - grabGesture( Gestures::GDSwipeGestureType ); -#endif -} - -ScanPopup::~ScanPopup() -{ - // Save state, geometry and pin status - cfg.popupWindowState = saveState( 1 ); - cfg.popupWindowGeometry = saveGeometry(); - cfg.pinPopupWindow = ui.pinButton->isChecked(); - - disableScanning(); - -#if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) - ungrabGesture( Gestures::GDPinchGestureType ); - ungrabGesture( Gestures::GDSwipeGestureType ); -#endif -} - -void ScanPopup::enableScanning() -{ - if ( !isScanningEnabled ) - { - isScanningEnabled = true; - MouseOver::instance().enableMouseOver(); - } -} - -void ScanPopup::disableScanning() -{ - if ( isScanningEnabled ) - { - MouseOver::instance().disableMouseOver(); - isScanningEnabled = false; - } -} - -void ScanPopup::applyZoomFactor() -{ - definition->setZoomFactor( cfg.preferences.zoomFactor ); -} - -void ScanPopup::translateWordFromClipboard() -{ - return translateWordFromClipboard(QClipboard::Clipboard); -} - -void ScanPopup::translateWordFromSelection() -{ - return translateWordFromClipboard(QClipboard::Selection); -} - -void ScanPopup::editGroupRequested() -{ - emit editGroupRequested( ui.groupList->getCurrentGroup() ); -} - -void ScanPopup::translateWordFromClipboard(QClipboard::Mode m) -{ - GD_DPRINTF( "translating from clipboard or selection\n" ); - - QString subtype = "plain"; - - QString str = QApplication::clipboard()->text( subtype, m); - - translateWord( str ); -} - -void ScanPopup::translateWord( QString const & word ) -{ - QString str = pendingInputWord = gd::toQString( Folding::trimWhitespaceOrPunct( gd::toWString( word ) ) ).simplified(); - - if ( !str.size() ) - return; // Nothing there - - // In case we had any timers engaged before, cancel them now. - altModePollingTimer.stop(); - altModeExpirationTimer.stop(); - - inputWord = str; - engagePopup( false, -#ifdef Q_OS_WIN - true // We only focus popup under Windows when activated via Ctrl+C+C - // -- on Linux it already has an implicit focus -#else - false -#endif - ); -} - -void ScanPopup::clipboardChanged( QClipboard::Mode m ) -{ - if ( !isScanningEnabled ) - return; - - GD_DPRINTF( "clipboard changed\n" ); - - QString subtype = "plain"; - - handleInputWord( QApplication::clipboard()->text( subtype, m ) ); -} - -void ScanPopup::mouseHovered( QString const & str, bool forcePopup ) -{ - handleInputWord( str, forcePopup ); -} - -void ScanPopup::handleInputWord( QString const & str, bool forcePopup ) -{ - QString sanitizedStr = gd::toQString( Folding::trimWhitespaceOrPunct( gd::toWString( str ) ) ); - - if ( isVisible() && sanitizedStr == inputWord ) - { - // Attempt to translate the same word we already have shown in scan popup. - // Ignore it, as it is probably a spurious mouseover event. - return; - } - - pendingInputWord = sanitizedStr; - - if ( !pendingInputWord.size() ) - { - if ( cfg.preferences.scanPopupAltMode ) - { - // In case we had any timers engaged before, cancel them now, since - // we're not going to translate anything anymore. - altModePollingTimer.stop(); - altModeExpirationTimer.stop(); - } - return; - } - - // Check key modifiers - - if ( cfg.preferences.enableScanPopupModifiers && !checkModifiersPressed( cfg.preferences.scanPopupModifiers ) ) - { - if ( cfg.preferences.scanPopupAltMode ) - { - altModePollingTimer.start(); - altModeExpirationTimer.start(); - } - - return; - } - - inputWord = pendingInputWord; - engagePopup( forcePopup ); -} - -void ScanPopup::engagePopup( bool forcePopup, bool giveFocus ) -{ - if( cfg.preferences.scanToMainWindow && !forcePopup ) - { - // Send translated word to main window istead of show popup - emit sendWordToMainWindow( inputWord ); - return; - } - - definition->setSelectionBySingleClick( cfg.preferences.selectWordBySingleClick ); - - if ( !isVisible() ) - { - // Need to show the window - - if ( !ui.pinButton->isChecked() ) - { - // Decide where should the window land - - QPoint currentPos = QCursor::pos(); - - QRect desktop = QApplication::desktop()->screenGeometry(); - - QSize windowSize = geometry().size(); - - int x, y; - - /// Try the to-the-right placement - if ( currentPos.x() + 4 + windowSize.width() <= desktop.topRight().x() ) - x = currentPos.x() + 4; - else - /// Try the to-the-left placement - if ( currentPos.x() - 4 - windowSize.width() >= desktop.x() ) - x = currentPos.x() - 4 - windowSize.width(); - else - // Center it - x = desktop.x() + ( desktop.width() - windowSize.width() ) / 2; - - /// Try the to-the-bottom placement - if ( currentPos.y() + 15 + windowSize.height() <= desktop.bottomLeft().y() ) - y = currentPos.y() + 15; - else - /// Try the to-the-top placement - if ( currentPos.y() - 15 - windowSize.height() >= desktop.y() ) - y = currentPos.y() - 15 - windowSize.height(); - else - // Center it - y = desktop.y() + ( desktop.height() - windowSize.height() ) / 2; - - move( x, y ); - } - - show(); - - if ( giveFocus ) - { - activateWindow(); - raise(); - } - - if ( !ui.pinButton->isChecked() ) - { - mouseEnteredOnce = false; - // Need to monitor the mouse so we know when to hide the window - interceptMouse(); - } - - // This produced some funky mouse grip-related bugs so we commented it out - //QApplication::processEvents(); // Make window appear immediately no matter what - } - else - if ( ui.pinButton->isChecked() ) - { - // Pinned-down window isn't always on top, so we need to raise it - show(); - activateWindow(); - raise(); - } - - if ( ui.pinButton->isChecked() ) - setWindowTitle( tr( "%1 - %2" ).arg( elideInputWord(), "GoldenDict" ) ); - - /// Too large strings make window expand which is probably not what user - /// wants - ui.translateBox->setText( inputWord, false ); - - showTranslationFor( inputWord ); -} - -QString ScanPopup::elideInputWord() -{ - return inputWord.size() > 32 ? inputWord.mid( 0, 32 ) + "..." : inputWord; -} - -void ScanPopup::currentGroupChanged( QString const & ) -{ - cfg.lastPopupGroupId = ui.groupList->getCurrentGroup(); - Instances::Group const * igrp = groups.findGroup( cfg.lastPopupGroupId ); - if( cfg.lastPopupGroupId == Instances::Group::AllGroupId ) - { - if( igrp ) - igrp->checkMutedDictionaries( &cfg.popupMutedDictionaries ); - dictionaryBar.setMutedDictionaries( &cfg.popupMutedDictionaries ); - } - else - { - Config::Group * grp = cfg.getGroup( cfg.lastPopupGroupId ); - if( grp ) - { - if( igrp ) - igrp->checkMutedDictionaries( &grp->popupMutedDictionaries ); - dictionaryBar.setMutedDictionaries( &grp->popupMutedDictionaries ); - } - else - dictionaryBar.setMutedDictionaries( 0 ); - } - - updateDictionaryBar(); - - if ( isVisible() ) - { - translateInputChanged( ui.translateBox->translateLine()->text() ); - translateInputFinished(); - } - - cfg.lastPopupGroupId = ui.groupList->getCurrentGroup(); -} - -void ScanPopup::wordListItemActivated( QListWidgetItem * item ) -{ - showTranslationFor( item->text() ); -} - -void ScanPopup::translateInputChanged( QString const & text ) -{ - mainStatusBar->clearMessage(); - ui.translateBox->wordList()->setCurrentItem( 0, QItemSelectionModel::Clear ); - - QString req = text.trimmed(); - - if ( !req.size() ) - { - // An empty request always results in an empty result - wordFinder.cancel(); - ui.translateBox->wordList()->clear(); - ui.translateBox->wordList()->unsetCursor(); - - // Reset the noResults mark if it's on right now - if ( ui.translateBox->translateLine()->property( "noResults" ).toBool() ) - { - ui.translateBox->translateLine()->setProperty( "noResults", false ); - setStyleSheet( styleSheet() ); - } - return; - } - - ui.translateBox->wordList()->setCursor( Qt::WaitCursor ); - - wordFinder.prefixMatch( req, getActiveDicts() ); -} - -void ScanPopup::translateInputFinished() -{ - inputWord = ui.translateBox->translateLine()->text().trimmed(); - showTranslationFor( inputWord ); -} - -void ScanPopup::showTranslationFor( QString const & inputWord ) -{ - ui.pronounceButton->hide(); - - definition->showDefinition( inputWord, ui.groupList->getCurrentGroup() ); - definition->focus(); - - // Add to history - emit sendWordToHistory( inputWord.trimmed() ); -} - -vector< sptr< Dictionary::Class > > const & ScanPopup::getActiveDicts() -{ - int current = ui.groupList->currentIndex(); - - if ( current < 0 || current >= (int) groups.size() ) - { - // This shouldn't ever happen - return allDictionaries; - } - - Config::MutedDictionaries const * mutedDictionaries = dictionaryBar.getMutedDictionaries(); - if ( !dictionaryBar.toggleViewAction()->isChecked() || mutedDictionaries == 0 ) - return groups[ current ].dictionaries; - else - { - vector< sptr< Dictionary::Class > > const & activeDicts = - groups[ current ].dictionaries; - - // Populate the special dictionariesUnmuted array with only unmuted - // dictionaries - - dictionariesUnmuted.clear(); - dictionariesUnmuted.reserve( activeDicts.size() ); - - for( unsigned x = 0; x < activeDicts.size(); ++x ) - if ( !mutedDictionaries->contains( - QString::fromStdString( activeDicts[ x ]->getId() ) ) ) - dictionariesUnmuted.push_back( activeDicts[ x ] ); - - return dictionariesUnmuted; - } -} - -void ScanPopup::typingEvent( QString const & t ) -{ - if ( t == "\n" || t == "\r" ) - { - focusTranslateLine(); - } - else - { - ui.translateBox->translateLine()->setFocus(); - ui.translateBox->setText( t, true ); - ui.translateBox->translateLine()->setCursorPosition( t.size() ); - } -} - -bool ScanPopup::eventFilter( QObject * watched, QEvent * event ) -{ - if ( event->type() == QEvent::FocusIn && watched == ui.translateBox->translateLine() ) - { - QFocusEvent * focusEvent = static_cast< QFocusEvent * >( event ); - - // select all on mouse click - if ( focusEvent->reason() == Qt::MouseFocusReason ) { - QTimer::singleShot(0, this, SLOT(focusTranslateLine())); - } - return false; - } - - if ( mouseIntercepted ) - { - // We're only interested in our events - - if ( event->type() == QEvent::MouseMove ) - { -// DPRINTF( "Object: %s\n", watched->objectName().toUtf8().data() ); - QMouseEvent * mouseEvent = ( QMouseEvent * ) event; - reactOnMouseMove( mouseEvent->globalPos() ); - } - } - - return QMainWindow::eventFilter( watched, event ); -} - -void ScanPopup::reactOnMouseMove( QPoint const & p ) -{ - if ( geometry().contains( p ) ) - { -// DPRINTF( "got inside\n" ); - - hideTimer.stop(); - mouseEnteredOnce = true; - uninterceptMouse(); - } - else - { -// DPRINTF( "outside\n" ); - // We're in grab mode and outside the window - calculate the - // distance from it. We might want to hide it. - - // When the mouse has entered once, we don't allow it stayng outside, - // but we give a grace period for it to return. - int proximity = mouseEnteredOnce ? 0 : 60; - - // Note: watched == this ensures no other child objects popping out are - // receiving this event, meaning there's basically nothing under the - // cursor. - if ( /*watched == this &&*/ - !frameGeometry().adjusted( -proximity, -proximity, proximity, proximity ). - contains( p ) ) - { - // We've way too far from the window -- hide the popup - - // If the mouse never entered the popup, hide the window instantly -- - // the user just moved the cursor further away from the window. - - if ( !mouseEnteredOnce ) - hideWindow(); - else - hideTimer.start(); - } - } -} - -void ScanPopup::mousePressEvent( QMouseEvent * ev ) -{ - // With mouse grabs, the press can occur anywhere on the screen, which - // might mean hiding the window. - - if ( !frameGeometry().contains( ev->globalPos() ) ) - { - hideWindow(); - - return; - } - - if ( ev->button() == Qt::LeftButton ) - { - startPos = ev->globalPos(); - setCursor( Qt::ClosedHandCursor ); - } - - QMainWindow::mousePressEvent( ev ); -} - -void ScanPopup::mouseMoveEvent( QMouseEvent * event ) -{ - if ( event->buttons() && cursor().shape() == Qt::ClosedHandCursor ) - { - QPoint newPos = event->globalPos(); - - QPoint delta = newPos - startPos; - - startPos = newPos; - - // Move the window - - move( pos() + delta ); - } - - QMainWindow::mouseMoveEvent( event ); -} - -void ScanPopup::mouseReleaseEvent( QMouseEvent * ev ) -{ - unsetCursor(); - QMainWindow::mouseReleaseEvent( ev ); -} - -void ScanPopup::leaveEvent( QEvent * event ) -{ - QMainWindow::leaveEvent( event ); - - // We hide the popup when the mouse leaves it. - - // Combo-boxes seem to generate leave events for their parents when - // unfolded, so we check coordinates as well. - // If the dialog is pinned, we don't hide the popup. - // If some mouse buttons are pressed, we don't hide the popup either, - // since it indicates the move operation is underway. - if ( !ui.pinButton->isChecked() && !geometry().contains( QCursor::pos() ) && - QApplication::mouseButtons() == Qt::NoButton ) - { - hideTimer.start(); - } -} - -void ScanPopup::enterEvent( QEvent * event ) -{ - QMainWindow::enterEvent( event ); - - if ( mouseEnteredOnce ) - { - // We "enter" first time via our event filter. This seems to evade some - // unexpected behavior under Windows. - - // If there was a countdown to hide the window, stop it. - hideTimer.stop(); - } -} - -void ScanPopup::requestWindowFocus() -{ - // One of the rare, actually working workarounds for requesting a user keyboard focus on X11, - // works for Qt::Popup windows, exactly like our Scan Popup (in unpinned state). - // Modern window managers actively resist to automatically focus pop-up windows. -#ifdef HAVE_X11 - if ( !ui.pinButton->isChecked() ) - { - QMenu m( this ); - m.addAction( "" ); - m.show(); - m.hide(); - } -#endif -} - -void ScanPopup::showEvent( QShowEvent * ev ) -{ - QMainWindow::showEvent( ev ); - - QTimer::singleShot(100, this, SLOT( requestWindowFocus() ) ); - - if ( groups.size() <= 1 ) // Only the default group? Hide then. - ui.groupList->hide(); - - if ( ui.showDictionaryBar->isChecked() != dictionaryBar.isVisible() ) - { - ui.showDictionaryBar->setChecked( dictionaryBar.isVisible() ); - updateDictionaryBar(); - } -} - -void ScanPopup::prefixMatchFinished() -{ - // Check that there's a window there at all - if ( isVisible() ) - { - if ( wordFinder.getErrorString().size() ) - { - ui.queryError->setToolTip( wordFinder.getErrorString() ); - ui.queryError->show(); - } - else - ui.queryError->hide(); - } -} - -void ScanPopup::on_pronounceButton_clicked() -{ - definition->playSound(); -} - -void ScanPopup::pinButtonClicked( bool checked ) -{ - if ( checked ) - { - uninterceptMouse(); - - setWindowFlags( Qt::Dialog ); - setWindowTitle( tr( "%1 - %2" ).arg( elideInputWord(), "GoldenDict" ) ); - dictionaryBar.setMovable( true ); - hideTimer.stop(); - } - else - { - dictionaryBar.setMovable( false ); - setWindowFlags( popupWindowFlags ); - - mouseEnteredOnce = true; - } - - show(); -} - -void ScanPopup::focusTranslateLine() -{ - if ( !isActiveWindow() ) - activateWindow(); - - ui.translateBox->translateLine()->setFocus(); - ui.translateBox->translateLine()->selectAll(); -} - -void ScanPopup::on_showDictionaryBar_clicked( bool checked ) -{ - dictionaryBar.setVisible( checked ); - updateDictionaryBar(); - definition->updateMutedContents(); -} - -void ScanPopup::hideTimerExpired() -{ - if ( isVisible() ) - hideWindow(); -} - -void ScanPopup::altModeExpired() -{ - // The alt mode duration has expired, so there's no need to poll for modifiers - // anymore. - altModePollingTimer.stop(); -} - -void ScanPopup::altModePoll() -{ - if ( !pendingInputWord.size() ) - { - altModePollingTimer.stop(); - altModeExpirationTimer.stop(); - } - else - if ( checkModifiersPressed( cfg.preferences.scanPopupModifiers ) ) - { - altModePollingTimer.stop(); - altModeExpirationTimer.stop(); - - inputWord = pendingInputWord; - engagePopup( false ); - } -} - -void ScanPopup::pageLoaded( ArticleView * ) -{ - ui.pronounceButton->setVisible( definition->hasSound() ); - - updateBackForwardButtons(); - - if ( cfg.preferences.pronounceOnLoadPopup ) - definition->playSound(); -} - -void ScanPopup::showStatusBarMessage( QString const & message, int timeout, QPixmap const & icon ) -{ - mainStatusBar->showMessage( message, timeout, icon ); -} - -void ScanPopup::escapePressed() -{ - if ( !definition->closeSearch() ) - hideWindow(); -} - -void ScanPopup::hideWindow() -{ - uninterceptMouse(); - - emit closeMenu(); - hideTimer.stop(); - unsetCursor(); - ui.translateBox->setPopupEnabled( false ); - ui.translateBox->translateLine()->deselect(); - hide(); -} - -void ScanPopup::interceptMouse() -{ - if ( !mouseIntercepted ) - { - // We used to grab the mouse -- but this doesn't always work reliably - // (e.g. doesn't work at all in Windows 7 for some reason). Therefore - // we use a polling timer now. - -// grabMouse(); - mouseGrabPollTimer.start(); - - qApp->installEventFilter( this ); - - mouseIntercepted = true; - } -} - -void ScanPopup::mouseGrabPoll() -{ - if ( mouseIntercepted ) - reactOnMouseMove( QCursor::pos() ); -} - -void ScanPopup::uninterceptMouse() -{ - if ( mouseIntercepted ) - { - qApp->removeEventFilter( this ); - mouseGrabPollTimer.stop(); -// releaseMouse(); - - mouseIntercepted = false; - } -} - -void ScanPopup::updateDictionaryBar() -{ - if ( !dictionaryBar.toggleViewAction()->isChecked() ) - return; // It's not enabled, therefore hidden -- don't waste time - - unsigned currentId = ui.groupList->getCurrentGroup(); - Instances::Group const * grp = groups.findGroup( currentId ); - - if ( grp ) // Should always be !0, but check as a safeguard - dictionaryBar.setDictionaries( grp->dictionaries ); - - if( currentId == Instances::Group::AllGroupId ) - dictionaryBar.setMutedDictionaries( &cfg.popupMutedDictionaries ); - else - { - Config::Group * grp = cfg.getGroup( currentId ); - dictionaryBar.setMutedDictionaries( grp ? &grp->popupMutedDictionaries : 0 ); - } - - setDictionaryIconSize(); -} - -void ScanPopup::mutedDictionariesChanged() -{ - // Update suggestion list - translateInputChanged( ui.translateBox->translateLine()->text() ); - - if ( dictionaryBar.toggleViewAction()->isChecked() ) - definition->updateMutedContents(); -} - -void ScanPopup::on_sendWordButton_clicked() -{ - if ( !isVisible() ) - return; - if( !ui.pinButton->isChecked() ) - { - definition->closeSearch(); - hideWindow(); - } - emit sendWordToMainWindow( definition->getTitle() ); -} - -void ScanPopup::switchExpandOptionalPartsMode() -{ - if( isVisible() ) - emit switchExpandMode(); -} - -void ScanPopup::updateBackForwardButtons() -{ - ui.goBackButton->setEnabled(definition->canGoBack()); - ui.goForwardButton->setEnabled(definition->canGoForward()); -} - -void ScanPopup::on_goBackButton_clicked() -{ - definition->back(); -} - -void ScanPopup::on_goForwardButton_clicked() -{ - definition->forward(); -} - -void ScanPopup::setDictionaryIconSize() -{ - int extent = cfg.usingSmallIconsInToolbars ? - QApplication::style()->pixelMetric( QStyle::PM_SmallIconSize ) : - 21; - dictionaryBar.setDictionaryIconSize( extent ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.hh deleted file mode 100644 index c7645c7778..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.hh +++ /dev/null @@ -1,195 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __SCANPOPUP_HH_INCLUDED__ -#define __SCANPOPUP_HH_INCLUDED__ - -#include "article_netmgr.hh" -#include "articleview.hh" -#include "wordfinder.hh" -#include "keyboardstate.hh" -#include "config.hh" -#include "ui_scanpopup.h" -#include -#include -#include "history.hh" -#include "dictionarybar.hh" -#include "mainstatusbar.hh" - -/// This is a popup dialog to show translations when clipboard scanning mode -/// is enabled. -class ScanPopup: public QMainWindow, KeyboardState -{ - Q_OBJECT - -public: - - ScanPopup( QWidget * parent, - Config::Class & cfg, - ArticleNetworkAccessManager &, - std::vector< sptr< Dictionary::Class > > const & allDictionaries, - Instances::Groups const &, - History & ); - - ~ScanPopup(); - - /// Enables scanning. When the object is created, the scanning is disabled - /// initially. - void enableScanning(); - /// Disables scanning. - void disableScanning(); - - /// Applies current zoom factor to the popup's view. Should be called when - /// it's changed. - void applyZoomFactor(); - /// Translate the word - void translateWord( QString const & word ); - - void setDictionaryIconSize(); - -signals: - - /// Forwarded from the dictionary bar, so that main window could act on this. - void editGroupRequested( unsigned id ); - /// Send word to main window - void sendWordToMainWindow( QString const & word ); - /// Close opened menus when window hide - void closeMenu(); - /// Signals to set expand optional parts mode (retranslation from/to MainWindow and dictionary bar) - void setExpandMode( bool expand ); - void setViewExpandMode( bool expand ); - /// Signal to switch expand optional parts mode - void switchExpandMode(); - /// Signal to add word to history even if history is disabled - void forceAddWordToHistory( const QString & word); - /// Retranslate signal from dictionary bar - void showDictionaryInfo( QString const & id ); - void openDictionaryFolder( QString const & id ); - /// Put translated word into history - void sendWordToHistory( QString const & word ); - -#ifdef Q_OS_WIN32 - /// Ask for source window is current translate tab - bool isGoldenDictWindow( HWND hwnd ); -#endif - -public slots: - void requestWindowFocus(); - - /// Translates the word from the clipboard, showing the window etc. - void translateWordFromClipboard(); - /// Translates the word from the clipboard selection - void translateWordFromSelection(); - /// From the dictionary bar. - void editGroupRequested(); - -private: - - // Translates the word from the clipboard or the clipboard selection - void translateWordFromClipboard(QClipboard::Mode m); - - // Hides the popup window, effectively closing it. - void hideWindow(); - - // Grabs mouse and installs global event filter to track it thoroughly. - void interceptMouse(); - // Ungrabs mouse and uninstalls global event filter. - void uninterceptMouse(); - - void updateDictionaryBar(); - - Config::Class & cfg; - bool isScanningEnabled; - std::vector< sptr< Dictionary::Class > > const & allDictionaries; - std::vector< sptr< Dictionary::Class > > dictionariesUnmuted; - Instances::Groups const & groups; - History & history; - Ui::ScanPopup ui; - ArticleView * definition; - QAction escapeAction, switchExpandModeAction, focusTranslateLineAction; - QAction openSearchAction; - QString pendingInputWord, inputWord; - WordFinder wordFinder; - Config::Events configEvents; - DictionaryBar dictionaryBar; - MainStatusBar * mainStatusBar; - - bool mouseEnteredOnce; - bool mouseIntercepted; - - QPoint startPos; // For window moving - - QTimer hideTimer; // When mouse leaves the window, a grace period is - // given for it to return back. If it doesn't before - // this timer expires, the window gets hidden. - QTimer altModeExpirationTimer, altModePollingTimer; // Timers for alt mode - - QTimer mouseGrabPollTimer; - - void handleInputWord( QString const & , bool forcePopup = false ); - void engagePopup( bool forcePopup, bool giveFocus = false ); - - vector< sptr< Dictionary::Class > > const & getActiveDicts(); - - virtual bool eventFilter( QObject * watched, QEvent * event ); - - /// Called from event filter or from mouseGrabPoll to handle mouse event - /// while it is being intercepted. - void reactOnMouseMove( QPoint const & p ); - - virtual void mousePressEvent( QMouseEvent * ); - virtual void mouseMoveEvent( QMouseEvent * ); - virtual void mouseReleaseEvent( QMouseEvent * ); - virtual void leaveEvent( QEvent * event ); - virtual void enterEvent( QEvent * event ); - virtual void showEvent( QShowEvent * ); - - /// Returns inputWord, chopped with appended ... if it's too long/ - QString elideInputWord(); - - void updateBackForwardButtons(); - - void showTranslationFor( QString const & inputWord ); - -private slots: - - void clipboardChanged( QClipboard::Mode ); - void mouseHovered( QString const & , bool forcePopup); - void currentGroupChanged( QString const & ); - void prefixMatchFinished(); - void on_pronounceButton_clicked(); - void pinButtonClicked( bool checked ); - void on_showDictionaryBar_clicked( bool checked ); - void showStatusBarMessage ( QString const &, int, QPixmap const & ); - void on_sendWordButton_clicked(); - void on_goBackButton_clicked(); - void on_goForwardButton_clicked(); - - void hideTimerExpired(); - void altModeExpired(); - void altModePoll(); - - /// Called repeatedly once the popup is initially engaged and we monitor the - /// mouse as it may move away from the window. This simulates mouse grab, in - /// essense, but seems more reliable. Once the mouse enters the window, the - /// polling stops. - void mouseGrabPoll(); - - void pageLoaded( ArticleView * ); - - void escapePressed(); - - void mutedDictionariesChanged(); - - void switchExpandOptionalPartsMode(); - - void translateInputChanged(QString const & text); - void translateInputFinished(); - void wordListItemActivated( QListWidgetItem * ); - - void focusTranslateLine(); - - void typingEvent( QString const & ); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.ui deleted file mode 100644 index f432827fd2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/scanpopup.ui +++ /dev/null @@ -1,258 +0,0 @@ - - - ScanPopup - - - - 0 - 0 - 557 - 403 - - - - Dialog - - - - - 280 - 100 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::NoFrame - - - QFrame::Raised - - - 0 - - - - 3 - - - 3 - - - 3 - - - 3 - - - 3 - - - - - - - 0 - - - - - - 0 - 0 - - - - QComboBox::AdjustToContents - - - - - - - - 0 - 0 - - - - - - - - - - - - true - - - - - - :/icons/warning.png - - - - - - - Back - - - ... - - - - :/icons/previous.png:/icons/previous.png - - - - - - - Forward - - - ... - - - - :/icons/next.png:/icons/next.png - - - - - - - Pronounce Word (Alt+S) - - - ... - - - - :/icons/playsound.png:/icons/playsound.png - - - Alt+S - - - false - - - - - - - Send word to main window (Alt+W) - - - ... - - - - :/icons/programicon.png:/icons/programicon.png - - - Alt+W - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - Shows or hides the dictionary bar - - - ... - - - - :/icons/bookcase.png:/icons/bookcase.png - - - true - - - false - - - true - - - - - - - Use this to pin down the window so it would stay on screen, -could be resized or managed in other ways. - - - ... - - - - :/icons/pushpin.png:/icons/pushpin.png - - - true - - - true - - - - - - - - - - - - - - - - GroupComboBox - QComboBox -
groupcombobox.hh
-
- - TranslateBox - QLineEdit -
translatebox.hh
-
-
- - - - -
diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sdict.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sdict.cc deleted file mode 100644 index 1eddf6cfec..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sdict.cc +++ /dev/null @@ -1,869 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "sdict.hh" -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include "chunkedstorage.hh" -#include "langcoder.hh" -#include "gddebug.hh" -#include "fsencoding.hh" -#include "decompress.hh" -#include "htmlescape.hh" -#include "ftshelpers.hh" -#include "wstring_qt.hh" - -#include -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include -#include -#include - -#include "ufile.hh" -#include "qt4x5.hh" - -namespace Sdict { - -using std::map; -using std::multimap; -using std::pair; -using std::set; -using std::string; -using gd::wstring; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX_STR( exNotDctFile, "Not an Sdictionary file", Dictionary::Ex ) -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX_STR( exWordIsTooLarge, "Enountered a word that is too large:", Dictionary::Ex ) -DEF_EX_STR( exSuddenEndOfFile, "Sudden end of file", Dictionary::Ex ) - -#pragma pack( push, 1 ) - -/// DCT file header -struct DCT_header -{ - char signature[4]; - char inputLang[3]; - char outputLang[3]; - uint8_t compression; - uint32_t wordCount; - uint32_t shortIndexLength; - uint32_t titleOffset; - uint32_t copyrightOffset; - uint32_t versionOffset; - uint32_t shortIndexOffset; - uint32_t fullIndexOffset; - uint32_t articlesOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct IndexElement -{ - uint16_t nextWord; - uint16_t previousWord; - uint32_t articleOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -enum -{ - Signature = 0x43494453, // SDIC on little-endian, CIDS on big-endian - CurrentFormatVersion = 1 + BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, SDIC - uint32_t formatVersion; // File format version (CurrentFormatVersion) - uint32_t chunksOffset; // The offset to chunks' storage - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t wordCount; - uint32_t articleCount; - uint32_t compressionType; // Data compression in file. 0 - no compression, 1 - zip, 2 - bzip2 - uint32_t langFrom; // Source language - uint32_t langTo; // Target language -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -#pragma pack( pop ) - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -class SdictDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex, sdictMutex; - File::Class idx; - IdxHeader idxHeader; - ChunkedStorage::Reader chunks; - string dictionaryName; - File::Class df; - - public: - - SdictDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - ~SdictDictionary(); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual QString const & getDescription(); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "SDICT", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } -protected: - - void loadIcon() throw(); - -private: - - /// Loads the article. - void loadArticle( uint32_t address, - string & articleText ); - string convert( string const & in_data ); - - friend class SdictArticleRequest; -}; - -SdictDictionary::SdictDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - chunks( idx, idxHeader.chunksOffset ), - df( dictionaryFiles[ 0 ], "rb" ) -{ - // Read dictionary name - - idx.seek( sizeof( idxHeader ) ); - vector< char > dName( idx.read< uint32_t >() ); - idx.read( &dName.front(), dName.size() ); - dictionaryName = string( &dName.front(), dName.size() ); - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -SdictDictionary::~SdictDictionary() -{ - df.close(); -} - -void SdictDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_sdict.png"); - } - - dictionaryIconLoaded = true; -} - -string SdictDictionary::convert( string const & in ) -{ -// DPRINTF( "Source>>>>>>>>>>: %s\n\n\n", in.c_str() ); - - string inConverted; - - inConverted.reserve( in.size() ); - - bool afterEol = false; - - for( string::const_iterator i = in.begin(), j = in.end(); i != j; ++i ) - { - switch( *i ) - { - case '\n': - afterEol = true; - inConverted.append( "
" ); - break; - - case ' ': - if ( afterEol ) - { - inConverted.append( " " ); - break; - } - // Fall-through - - default: - inConverted.push_back( *i ); - afterEol = false; - } - } - - QString result = QString::fromUtf8( inConverted.c_str(), inConverted.size() ); - - result.replace( QRegExp( "<\\s*(p|br)\\s*>", Qt::CaseInsensitive ), "
" ); - result.remove( QRegExp( "<\\s*/p\\s*>", Qt::CaseInsensitive ) ); - - result.replace( QRegExp( "<\\s*t\\s*>", Qt::CaseInsensitive ), "" ); - result.replace( QRegExp( "<\\s*f\\s*>", Qt::CaseInsensitive ), "" ); - result.replace( QRegExp( "<\\s*/(t|f)\\s*>", Qt::CaseInsensitive ), "" ); - - result.replace( QRegExp( "<\\s*l\\s*>", Qt::CaseInsensitive ), "
    " ); - result.replace( QRegExp( "<\\s*/l\\s*>", Qt::CaseInsensitive ), "
" ); - - // Links handling - - int n = 0; - for( ; ; ) - { - static QRegExp start_link_tag( "<\\s*r\\s*>", Qt::CaseInsensitive ); - static QRegExp end_link_tag( "<\\s*/r\\s*>", Qt::CaseInsensitive ); - - n = result.indexOf( start_link_tag, n ); - if( n < 0 ) - break; - - int end = result.indexOf( end_link_tag, n ); - if( end < 0 ) - break; - - int tag_len = start_link_tag.cap().length(); - QString link_text = result.mid( n + tag_len, end - n - tag_len ); - - result.replace( end, end_link_tag.cap().length(), "" ); - result.replace( n, tag_len, QString( ""); - } - - // Adjust text direction for lines - - n = 0; - bool b = true; - while( b ) - { - int next = result.indexOf( "
", n ); - if( next < 0 ) - { - next = result.length(); - b = false; - } - - if( !result.mid( n, next - n ).contains( '<' ) ) - { - if( Html::unescape( result.mid( n, next - n ) ).isRightToLeft() != isToLanguageRTL() ) - { - result.insert( next, "
" ); - result.insert( n, - QString( "" - ); - next = result.indexOf( "
", n ); - } - } - - n = next + 5; - } - - return result.toUtf8().data(); -} - -void SdictDictionary::loadArticle( uint32_t address, - string & articleText ) -{ - uint32_t articleOffset = address; - uint32_t articleSize; - - vector< char > articleBody; - - { - Mutex::Lock _( sdictMutex ); - df.seek( articleOffset ); - df.read( &articleSize, sizeof(articleSize) ); - articleBody.resize( articleSize ); - df.read( &articleBody.front(), articleSize ); - } - - if ( articleBody.empty() ) - throw exCantReadFile( getDictionaryFilenames()[ 0 ] ); - - if( idxHeader.compressionType == 1 ) - articleText = decompressZlib( articleBody.data(), articleSize ); - else if( idxHeader.compressionType == 2 ) - articleText = decompressBzip2( articleBody.data(), articleSize ); - else - articleText = string( articleBody.data(), articleSize ); - - articleText = convert( articleText ); - - string div = "
" ); -} - -void SdictDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "SDict: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "SDict: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void SdictDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - string articleStr; - headword.clear(); - text.clear(); - - loadArticle( articleAddress, articleStr ); - - try - { - wstring wstr = Utf8::decode( articleStr ); - text = Html::unescape( gd::toQString( wstr ) ); - } - catch( std::exception & ) - { - } - } - catch( std::exception &ex ) - { - gdWarning( "SDict: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - -sptr< Dictionary::DataRequest > SdictDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -/// SdictDictionary::getArticle() - -class SdictArticleRequest; - -class SdictArticleRequestRunnable: public QRunnable -{ - SdictArticleRequest & r; - QSemaphore & hasExited; - -public: - - SdictArticleRequestRunnable( SdictArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~SdictArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class SdictArticleRequest: public Dictionary::DataRequest -{ - friend class SdictArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - SdictDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - SdictArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - SdictDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new SdictArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by DslArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~SdictArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void SdictArticleRequestRunnable::run() -{ - r.run(); -} - -void SdictArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now grab that article - - string headword, articleText; - - headword = chain[ x ].word; - - try - { - dict.loadArticle( chain[ x ].articleOffset, articleText ); - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ); - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - catch( std::exception &ex ) - { - gdWarning( "SDict: Failed loading article from \"%s\", reason: %s\n", dict.getName().c_str(), ex.what() ); - } - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result; - - multimap< wstring, pair< string, string > >::const_iterator i; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - result += dict.isFromLanguageRTL() ? "

" : "

"; - result += i->second.first; - result += "

"; - result += i->second.second; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - result += dict.isFromLanguageRTL() ? "

" : "

"; - result += i->second.first; - result += "

"; - if( dict.isToLanguageRTL() ) - result += ""; - result += i->second.second; - if( dict.isToLanguageRTL() ) - result += ""; - } - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - - finish(); -} - -sptr< Dictionary::DataRequest > SdictDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new SdictArticleRequest( word, alts, *this ); -} - -QString const& SdictDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - dictionaryDescription = QString::fromLatin1( "Title: " ) - + QString::fromUtf8( getName().c_str() ); - - try - { - Mutex::Lock _( sdictMutex ); - - DCT_header dictHeader; - - df.seek( 0 ); - if( df.readRecords( &dictHeader, sizeof(dictHeader), 1 ) != 1 ) - throw exCantReadFile( getDictionaryFilenames()[ 0 ] ); - - int compression = dictHeader.compression & 0x0F; - - vector< char > data; - uint32_t size; - string str; - - df.seek( dictHeader.copyrightOffset ); - df.read( &size, sizeof( size ) ); - data.resize( size ); - df.read( &data.front(), size ); - - if( compression == 1 ) - str = decompressZlib( data.data(), size ); - else if( compression == 2 ) - str = decompressBzip2( data.data(), size ); - else - str = string( data.data(), size ); - - dictionaryDescription += QString::fromLatin1( "\n\nCopyright: " ) - + QString::fromUtf8( str.c_str(), str.size() ); - - df.seek( dictHeader.versionOffset ); - df.read( &size, sizeof( size ) ); - data.resize( size ); - df.read( &data.front(), size ); - - if( compression == 1 ) - str = decompressZlib( data.data(), size ); - else if( compression == 2 ) - str = decompressBzip2( data.data(), size ); - else - str = string( data.data(), size ); - - dictionaryDescription += QString::fromLatin1( "\n\nVersion: " ) - + QString::fromUtf8( str.c_str(), str.size() ); - } - catch( std::exception &ex ) - { - gdWarning( "SDict: Failed description reading for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } - - if( dictionaryDescription.isEmpty() ) - dictionaryDescription = "NONE"; - - return dictionaryDescription; -} - -} // anonymous namespace - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Skip files with the extensions different to .dct to speed up the - // scanning - if ( i->size() < 4 || - strcasecmp( i->c_str() + ( i->size() - 4 ), ".dct" ) != 0 ) - continue; - - // Got the file -- check if we need to rebuid the index - - vector< string > dictFiles( 1, *i ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - try - { - gdDebug( "SDict: Building the index for dictionary: %s\n", i->c_str() ); - - File::Class df( *i, "rb" ); - - DCT_header dictHeader; - - df.read( &dictHeader, sizeof(dictHeader) ); - if( strncmp( dictHeader.signature, "sdct", 4 ) ) - { - gdWarning( "File \"%s\" is not valid SDictionary file", i->c_str() ); - continue; - } - int compression = dictHeader.compression & 0x0F; - - vector< char > data; - uint32_t size; - - df.seek( dictHeader.titleOffset ); - df.read( &size, sizeof( size ) ); - data.resize( size ); - df.read( &data.front(), size ); - - string dictName; - - if( compression == 1 ) - dictName = decompressZlib( data.data(), size ); - else if( compression == 2 ) - dictName = decompressBzip2( data.data(), size ); - else - dictName = string( data.data(), size ); - - initializing.indexingDictionary( dictName ); - - File::Class idx( indexFile, "wb" ); - IdxHeader idxHeader; - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - idx.write( (uint32_t) dictName.size() ); - idx.write( dictName.data(), dictName.size() ); - - IndexedWords indexedWords; - - ChunkedStorage::Writer chunks( idx ); - - uint32_t wordCount = 0; - set< uint32_t > articleOffsets; - uint32_t pos = dictHeader.fullIndexOffset; - - for( uint32_t j = 0; j < dictHeader.wordCount; j++ ) - { - IndexElement el; - df.seek( pos ); - df.read( &el, sizeof(el) ); - uint32_t articleOffset = dictHeader.articlesOffset + el.articleOffset; - size = el.nextWord - sizeof(el); - if( el.nextWord < sizeof(el) ) - break; - wordCount++; - data.resize( size ); - df.read( &data.front(), size ); - - if( articleOffsets.find( articleOffset ) == articleOffsets.end() ) - articleOffsets.insert( articleOffset ); - - // Insert new entry - - indexedWords.addWord( Utf8::decode( string( data.data(), size ) ), articleOffset); - - pos += el.nextWord; - } - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - indexedWords.clear(); // Release memory -- no need for this data - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.articleCount = articleOffsets.size(); - idxHeader.wordCount = wordCount; - - idxHeader.langFrom = LangCoder::code2toInt( dictHeader.inputLang ); - idxHeader.langTo = LangCoder::code2toInt( dictHeader.outputLang ); - idxHeader.compressionType = compression; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - catch( std::exception & e ) - { - gdWarning( "Sdictionary dictionary indexing failed: %s, error: %s\n", - i->c_str(), e.what() ); - continue; - } - catch( ... ) - { - qWarning( "Sdictionary dictionary indexing failed\n" ); - continue; - } - } // if need to rebuild - try - { - dictionaries.push_back( new SdictDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Sdictionary dictionary initializing failed: %s, error: %s\n", - i->c_str(), e.what() ); - } - } - return dictionaries; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sdict.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sdict.hh deleted file mode 100644 index b2cadd7bda..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sdict.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __SDICT_HH_INCLUDED__ -#define __SDICT_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for the Sdict dictionaries. -namespace Sdict { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/searchpanewidget.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/searchpanewidget.hh deleted file mode 100644 index 3b80d9accc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/searchpanewidget.hh +++ /dev/null @@ -1,24 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __SEARCHPANEWIDGET_HH_INCLUDED__ -#define __SEARCHPANEWIDGET_HH_INCLUDED__ - -#include -#include - -/// A widget holding the contents of the 'Search pane' docklet. -class SearchPaneWidget: public QWidget -{ -public: - - SearchPaneWidget( QWidget * parent = 0 ): QWidget( parent ) - {} - - virtual QSize sizeHint() const - { return QSize( 204, 204 ); } - -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/slob.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/slob.cc deleted file mode 100644 index b8ebb5f460..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/slob.cc +++ /dev/null @@ -1,1579 +0,0 @@ -/* This file is (c) 2015 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifdef MAKE_ZIM_SUPPORT - -#include "slob.hh" -#include "btreeidx.hh" -#include "fsencoding.hh" -#include "folding.hh" -#include "gddebug.hh" -#include "utf8.hh" -#include "decompress.hh" -#include "langcoder.hh" -#include "wstring.hh" -#include "wstring_qt.hh" -#include "ftshelpers.hh" -#include "htmlescape.hh" -#include "filetype.hh" -#include "tiff.hh" -#include "qt4x5.hh" - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -namespace Slob { - -using std::string; -using std::map; -using std::vector; -using std::multimap; -using std::pair; -using std::set; -using gd::wstring; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -DEF_EX_STR( exNotSlobFile, "Not an Slob file", Dictionary::Ex ) -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX_STR( exCantDecodeFile, "Can't decode file", Dictionary::Ex ) -DEF_EX_STR( exNoCodecFound, "No text codec found", Dictionary::Ex ) -DEF_EX( exUserAbort, "User abort", Dictionary::Ex ) -DEF_EX( exNoResource, "No resource found", Dictionary::Ex ) - -#pragma pack( push, 1 ) - -enum -{ - Signature = 0x58424C53, // SLBX on little-endian, XBLS on big-endian - CurrentFormatVersion = 2 + BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - quint32 signature; // First comes the signature, SLBX - quint32 formatVersion; // File format version (CurrentFormatVersion) - quint32 indexBtreeMaxElements; // Two fields from IndexInfo - quint32 indexRootOffset; - quint32 resourceIndexBtreeMaxElements; // Two fields from IndexInfo - quint32 resourceIndexRootOffset; - quint32 wordCount; - quint32 articleCount; - quint32 langFrom; // Source language - quint32 langTo; // Target language -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -#pragma pack( pop ) - -const char SLOB_MAGIC[ 8 ] = { 0x21, 0x2d, 0x31, 0x53, 0x4c, 0x4f, 0x42, 0x1f }; - -struct RefEntry -{ - QString key; - quint32 itemIndex; - quint16 binIndex; - QString fragment; -}; - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - - -class SlobFile -{ - enum Compressions - { UNKNOWN = 0, ZLIB, BZ2, LZMA2 }; - - QFile file; - QString fileName, dictionaryName; - Compressions compression; - QString encoding; - unsigned char uuid[ 16 ]; - QTextCodec *codec; - QMap< QString, QString > tags; - QVector< QString > contentTypes; - quint32 blobCount; - quint64 storeOffset, fileSize, refsOffset; - quint32 refsCount, itemsCount; - quint64 itemsOffset, itemsDataOffset; - quint32 currentItem; - quint32 contentTypesCount; - string currentItemData; - - QString readTinyText(); - QString readText(); - QString readLargeText(); - QString readString( unsigned lenght ); - -public: - SlobFile() : - compression( UNKNOWN ) - , codec( 0 ) - , blobCount( 0 ) - , storeOffset( 0 ) - , fileSize( 0 ) - , refsOffset( 0 ) - , refsCount( 0 ) - , itemsCount( 0 ) - , itemsOffset( 0 ) - , itemsDataOffset( 0 ) - , currentItem( 0xFFFFFFFF ) - , contentTypesCount( 0 ) - {} - - ~SlobFile(); - - Compressions getCompression() const - { return compression; } - - QString const & getEncoding() const - { return encoding; } - - QString const & getDictionaryName() const - { return dictionaryName; } - - quint32 blobsCount() const - { return blobCount; } - - quint64 dataOffset() const - { return storeOffset; } - - quint32 getRefsCount() const - { return refsCount; } - - quint32 getContentTypesCount() const - { return contentTypesCount; } - - QTextCodec * getCodec() const - { return codec; } - - QString getContentType( quint8 content_id ) const - { return content_id < contentTypes.size() ? contentTypes[ content_id ] : QString(); } - - QMap< QString, QString > const & getTags() const - { return tags; } - - void open( const QString & name ); - - void getRefEntry( quint32 ref_nom, RefEntry & entry ); - - quint8 getItem( RefEntry const & entry, string * data ); -}; - -SlobFile::~SlobFile() -{ - file.close(); -} - -QString SlobFile::readString( unsigned length ) -{ - QByteArray data = file.read( length ); - QString str; - - if( codec != 0 && !data.isEmpty() ) - str = codec->toUnicode( data ); - else - str = QString( data ); - - char term = 0; - int n = str.indexOf( term ); - if( n >= 0 ) - str.resize( n ); - - return str; -} - -QString SlobFile::readTinyText() -{ - unsigned char len; - if( !file.getChar( ( char * )&len ) ) - { - QString error = fileName + ": " + file.errorString(); - throw exCantReadFile( string( error.toUtf8().data() ) ); - } - return readString( len ); -} - -QString SlobFile::readText() -{ - quint16 len; - if( file.read( ( char * )&len, sizeof( len ) ) != sizeof( len ) ) - { - QString error = fileName + ": " + file.errorString(); - throw exCantReadFile( string( error.toUtf8().data() ) ); - } - return readString( qFromBigEndian( len ) ); -} - -QString SlobFile::readLargeText() -{ - quint32 len; - if( file.read( ( char * )&len, sizeof( len ) ) != sizeof( len ) ) - { - QString error = fileName + ": " + file.errorString(); - throw exCantReadFile( string( error.toUtf8().data() ) ); - } - return readString( qFromBigEndian( len ) ); -} - -void SlobFile::open( const QString & name ) -{ -QString error( name + ": " ); - - if( file.isOpen() ) - file.close(); - - fileName = name; - - file.setFileName( name ); - - { - QFileInfo fi( name ); - dictionaryName = fi.fileName(); - } - - for( ; ; ) - { - - if( !file.open( QFile::ReadOnly ) ) - break; - - char magic[ 8 ]; - if( file.read( magic, sizeof( magic ) ) != sizeof( magic ) ) - break; - - if( memcmp( magic, SLOB_MAGIC, sizeof( magic ) ) != 0 ) - throw exNotSlobFile( string( name.toUtf8().data() ) ); - - if( file.read( ( char * )uuid, sizeof( uuid ) ) != sizeof( uuid ) ) - break; - - // Read encoding - - encoding = readTinyText(); - - codec = QTextCodec::codecForName( encoding.toLatin1() ); - if( codec == 0 ) - { - error = QString( "for encoding \"") + encoding + "\""; - throw exNoCodecFound( string( error.toUtf8().data() ) ); - } - - // Read compression type - - QString compr = readTinyText(); - - if( compr.compare( "zlib", Qt::CaseInsensitive ) == 0 ) - compression = ZLIB; - else - if( compr.compare( "bz2", Qt::CaseInsensitive ) == 0 ) - compression = BZ2; - else - if( compr.compare( "lzma2", Qt::CaseInsensitive ) == 0 ) - compression = LZMA2; - - // Read tags - - unsigned char count; - if( !file.getChar( ( char * )&count ) ) - break; - - for( unsigned i = 0; i < count; i++ ) - { - QString key = readTinyText(); - QString value = readTinyText(); - tags[ key ] = value; - - if( key.compare( "label", Qt::CaseInsensitive ) == 0 - || key.compare( "name", Qt::CaseInsensitive ) == 0) - dictionaryName = value; - } - - // Read content types - - if( !file.getChar( ( char * )&count ) ) - break; - - for( unsigned i = 0; i < count; i++ ) - { - QString type = readText(); - contentTypes.append( type ); - } - contentTypesCount = count; - - // Read data parameters - - quint32 cnt; - if( file.read( ( char * )&cnt, sizeof( cnt ) ) != sizeof( cnt ) ) - break; - blobCount = qFromBigEndian( cnt ); - - quint64 tmp; - if( file.read( ( char * )&tmp, sizeof( tmp ) ) != sizeof( tmp ) ) - break; - storeOffset = qFromBigEndian( tmp ); - - if( file.read( ( char * )&tmp, sizeof( tmp ) ) != sizeof( tmp ) ) - break; - fileSize = qFromBigEndian( tmp ); - - if( file.read( ( char * )&cnt, sizeof( cnt ) ) != sizeof( cnt ) ) - break; - refsCount = qFromBigEndian( cnt ); - - refsOffset = file.pos(); - - if( !file.seek( storeOffset ) ) - break; - - if( file.read( ( char * )&cnt, sizeof( cnt ) ) != sizeof( cnt ) ) - break; - itemsCount = qFromBigEndian( cnt ); - - itemsOffset = storeOffset + sizeof( itemsCount ); - itemsDataOffset = itemsOffset + itemsCount * sizeof( quint64 ); - - return; - } - error += file.errorString(); - throw exCantReadFile( string( error.toUtf8().data() ) ); -} - -void SlobFile::getRefEntry( quint32 ref_nom, RefEntry & entry ) -{ - quint64 pos = refsOffset + ref_nom * sizeof( quint64 ); - quint64 offset, tmp; - - for( ; ; ) - { - if( !file.seek( pos ) || file.read( ( char * )&tmp, sizeof( tmp ) ) != sizeof( tmp ) ) - break; - offset = qFromBigEndian( tmp ) + refsOffset + refsCount * sizeof( quint64 ); - - if( !file.seek( offset ) ) - break; - - entry.key = readText(); - - quint32 index; - if( file.read( ( char * )&index, sizeof( index ) ) != sizeof( index ) ) - break; - entry.itemIndex = qFromBigEndian( index ); - - quint16 binIndex; - if( file.read( ( char * )&binIndex, sizeof( binIndex ) ) != sizeof( binIndex ) ) - break; - entry.binIndex = qFromBigEndian( binIndex ); - - entry.fragment = readTinyText(); - - return; - } - QString error = fileName + ": " + file.errorString(); - throw exCantReadFile( string( error.toUtf8().data() ) ); -} - -quint8 SlobFile::getItem( RefEntry const & entry, string * data ) -{ - quint64 pos = itemsOffset + entry.itemIndex * sizeof( quint64 ); - quint64 offset, tmp; - - for( ; ; ) - { - // Read item data types - - if( !file.seek( pos ) || file.read( ( char * )&tmp, sizeof( tmp ) ) != sizeof( tmp ) ) - break; - - offset = qFromBigEndian( tmp ) + itemsDataOffset; - - if( !file.seek( offset ) ) - break; - - quint32 bins, bins_be; - if( file.read( ( char * )&bins_be, sizeof( bins_be ) ) != sizeof( bins_be ) ) - break; - bins = qFromBigEndian( bins_be ); - - if( entry.binIndex >= bins ) - return 0xFF; - - QVector< quint8 > ids; - ids.resize( bins ); - if( file.read( ( char * )ids.data(), bins ) != bins ) - break; - - quint8 id = ids[ entry.binIndex ]; - - if( id >= (unsigned)contentTypes.size() ) - return 0xFF; - - if( data != 0 ) - { - // Read item data - if( currentItem != entry.itemIndex ) - { - currentItemData.clear(); - quint32 length, length_be; - if( file.read( ( char * )&length_be, sizeof( length_be ) ) != sizeof( length_be ) ) - break; - length = qFromBigEndian( length_be ); - - QByteArray compressedData = file.read( length ); - - if( compression == ZLIB ) - currentItemData = decompressZlib( compressedData.data(), length ); - else - if( compression == ZLIB ) - currentItemData = decompressBzip2( compressedData.data(), length ); - else - currentItemData = decompressLzma2( compressedData.data(), length, true ); - - if( currentItemData.empty() ) - { - currentItem = 0xFFFFFFFF; - return 0xFF; - } - currentItem = entry.itemIndex; - } - - // Find bin data inside item - - const char * ptr = currentItemData.c_str(); - quint32 pos = entry.binIndex * sizeof( quint32 ); - - if( pos >= currentItemData.length() - sizeof( quint32 ) ) - return 0xFF; - - quint32 offset, offset_be; - memcpy( &offset_be, ptr + pos, sizeof( offset_be ) ); - offset = qFromBigEndian( offset_be ); - - pos = bins * sizeof( quint32 ) + offset; - - if( pos >= currentItemData.length() - sizeof( quint32 ) ) - return 0xFF; - - quint32 length, len_be; - memcpy( &len_be, ptr + pos, sizeof( len_be ) ); - length = qFromBigEndian( len_be ); - - *data = currentItemData.substr( pos + sizeof( len_be ), length ); - } - - return ids[ entry.binIndex ]; - } - QString error = fileName + ": " + file.errorString(); - throw exCantReadFile( string( error.toUtf8().data() ) ); -} - -// SlobDictionary - -class SlobDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - Mutex slobMutex, idxResourceMutex; - File::Class idx; - BtreeIndex resourceIndex; - IdxHeader idxHeader; - string dictionaryName; - SlobFile sf; - QString texCgiPath, texCachePath; - - public: - - SlobDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - ~SlobDictionary(); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - - virtual QString const& getDescription(); - - /// Loads the resource. - void loadResource( std::string &resourceName, string & data ); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "SLOB", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } - - virtual uint32_t getFtsIndexVersion() - { return 2; } - -protected: - - virtual void loadIcon() throw(); - -private: - - /// Loads the article. - void loadArticle( quint32 address, - string & articleText ); - - quint32 readArticle( quint32 address, - string & articleText, - RefEntry & entry ); - - string convert( string const & in_data, RefEntry const & entry ); - - void removeDirectory( QString const & directory ); - - friend class SlobArticleRequest; - friend class SlobResourceRequest; -}; - -SlobDictionary::SlobDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ) -{ - // Open data file - - try - { - sf.open( FsEncoding::decode( dictionaryFiles[ 0 ].c_str() ) ); - } - catch( std::exception & e ) - { - gdWarning( "Slob dictionary initializing failed: %s, error: %s\n", - dictionaryFiles[ 0 ].c_str(), e.what() ); - } - - // Initialize the indexes - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - resourceIndex.openIndex( IndexInfo( idxHeader.resourceIndexBtreeMaxElements, - idxHeader.resourceIndexRootOffset ), - idx, idxResourceMutex ); - - // Read dictionary name - - dictionaryName = string( sf.getDictionaryName().toUtf8().constData() ); - if( dictionaryName.empty() ) - { - QString name = QDir::fromNativeSeparators( FsEncoding::decode( dictionaryFiles[ 0 ].c_str() ) ); - int n = name.lastIndexOf( '/' ); - dictionaryName = string( name.mid( n + 1 ).toUtf8().constData() ); - } - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); - - texCgiPath = Config::getProgramDataDir() + "/mimetex.cgi"; - if( QFileInfo( texCgiPath ).exists() ) - { - QString dirName = QString::fromStdString( getId() ); - QDir( QDir::tempPath() ).mkdir( dirName ); - texCachePath = QDir::tempPath() + "/" + dirName; - } - else - texCgiPath.clear(); -} - -SlobDictionary::~SlobDictionary() -{ - if( !texCachePath.isEmpty() ) - removeDirectory( texCachePath ); -} - -void SlobDictionary::removeDirectory( QString const & directory ) -{ - QDir dir( directory ); - Q_FOREACH( QFileInfo info, dir.entryInfoList( QDir::NoDotAndDotDot - | QDir::AllDirs - | QDir::Files, - QDir::DirsFirst)) - { - if( info.isDir() ) - removeDirectory( info.absoluteFilePath() ); - else - QFile::remove( info.absoluteFilePath() ); - } - - dir.rmdir( directory ); -} - -void SlobDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 4 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_slob.png"); - } - - dictionaryIconLoaded = true; -} - -QString const& SlobDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - QMap< QString, QString > const & tags = sf.getTags(); - - QMap< QString, QString >::const_iterator it; - for( it = tags.begin(); it != tags.end(); ++it ) - { - if( it != tags.begin() ) - dictionaryDescription += "\n\n"; - - dictionaryDescription += it.key() + ": " +it.value(); - } - - return dictionaryDescription; -} - -void SlobDictionary::loadArticle( quint32 address, - string & articleText ) -{ - articleText.clear(); - - RefEntry entry; - - readArticle( address, articleText, entry ); - - if( !articleText.empty() ) - { - articleText = convert( articleText, entry ); - } - else - articleText = string( QObject::tr( "Article decoding error" ).toUtf8().constData() ); - - // See Issue #271: A mechanism to clean-up invalid HTML cards. - string cleaner = """""""""""" - """""""""""" - "" - "" - "
"; - - string prefix( "
"; -} - -string SlobDictionary::convert( const string & in, RefEntry const & entry ) -{ - QString text = QString::fromUtf8( in.c_str() ); - - // pattern of img and script - text.replace( QRegExp( "<\\s*(img|script)\\s*([^>]*)src=\"(|/)([^\"]*)\"" ), - QString( "<\\1 \\2src=\"bres://%1/\\4\"").arg( getId().c_str() ) ); - - // pattern - text.replace( QRegExp( "<\\s*link\\s*([^>]*)href=\"" ), - QString( ", excluding any known protocols such as http://, mailto:, #(comment) - // these links will be translated into local definitions - QRegExp rxLink( "<\\s*a\\s+([^>]*)href=\"(?!(\\w+://|#|mailto:|tel:))(/|)([^\"]*)\"\\s*(title=\"[^\"]*\")?[^>]*>", - Qt::CaseSensitive, - QRegExp::RegExp2 ); - - QString anchor; - - int pos = 0; - while( (pos = rxLink.indexIn( text, pos )) >= 0 ) - { - QStringList list = rxLink.capturedTexts(); - QString tag = list[3]; - if ( !list[4].isEmpty() ) - tag = list[4].split("\"")[1]; - - // Find anchor - int n = list[ 3 ].indexOf( '#' ); - if( n > 0 ) - anchor = QString( "?gdanchor=" ) + list[ 3 ].mid( n + 1 ); - else - anchor.clear(); - - tag.remove( QRegExp(".*/") ). - remove( QRegExp( "\\.(s|)htm(l|)$", Qt::CaseInsensitive ) ). - replace( "_", "%20" ). - prepend( "" ); - - text.replace( pos, list[0].length(), tag ); - pos += tag.length() + 1; - } - - // Handle TeX formulas via mimetex.cgi - - if( !texCgiPath.isEmpty() ) - { - QRegExp texImage( "<\\s*img\\s*class=\"([^\"]+)\"\\s*alt=\"([^\"]+)\"[^>]*>", - Qt::CaseSensitive, - QRegExp::RegExp2 ); - pos = 0; - unsigned texCount = 0; - QString imgName; - - QRegExp regFrac = QRegExp( "\\\\[dt]frac" ); - - while( (pos = texImage.indexIn( text, pos )) >= 0 ) - { - QStringList list = texImage.capturedTexts(); - - if( list[ 1 ].compare( "tex" ) == 0 - || list[ 1 ].endsWith( " tex" ) ) - { - QString name; - name.sprintf( "%04X%04X%04X.gif", entry.itemIndex, entry.binIndex, texCount ); - imgName = texCachePath + "/" + name; - - if( !QFileInfo( imgName ).exists() ) - { - - // Replace some TeX commands which don't support by mimetex.cgi - - QString tex = list[ 2 ]; - tex.replace( regFrac, "\\frac" ); - tex.replace( "\\leqslant", "\\leq" ); - tex.replace( "\\geqslant", "\\geq" ); - tex.replace( "\\infin", "\\infty" ); - tex.replace( "\\iff", "\\Longleftrightarrow" ); - tex.replace( "\\tbinom", "\\binom" ); - - QString command = texCgiPath + " -e " + imgName - + " \"" + tex + "\""; - QProcess::execute( command ); - } - - QString tag = QString( "\"""; - - text.replace( pos, list[0].length(), tag ); - pos += tag.length() + 1; - - texCount += 1; - } - else - pos += list[ 0 ].length(); - } - } - - // Fix outstanding elements - text += "
"; - - return text.toUtf8().data(); -} - -void SlobDictionary::loadResource( std::string & resourceName, string & data ) -{ - vector< WordArticleLink > link; - string resData; - RefEntry entry; - - link = resourceIndex.findArticles( Utf8::decode( resourceName ) ); - - if( link.empty() ) - return; - - readArticle( link[ 0 ].articleOffset, data, entry ); -} - -quint32 SlobDictionary::readArticle( quint32 articleNumber, std::string & result, - RefEntry & entry ) -{ - string data; - quint8 contentId; - - { - Mutex::Lock _( slobMutex ); - if( entry.key.isEmpty() ) - sf.getRefEntry( articleNumber, entry ); - contentId = sf.getItem( entry, &data ); - } - - if( contentId == 0xFF ) - return 0xFFFFFFFF; - - QString contentType = sf.getContentType( contentId ); - - if( contentType.contains( "text/html", Qt::CaseInsensitive ) - || contentType.contains( "text/plain", Qt::CaseInsensitive ) - || contentType.contains( "/css", Qt::CaseInsensitive ) - || contentType.contains( "/javascript", Qt::CaseInsensitive ) - || contentType.contains( "/json", Qt::CaseInsensitive )) - { - QTextCodec *codec = sf.getCodec(); - QString content = codec->toUnicode( data.c_str(), data.size() ); - result = string( content.toUtf8().data() ); - } - else - result = data; - - return contentId; -} - -void SlobDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "Slob: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - Mutex::Lock _( getFtsMutex() ); - - File::Class ftsIdx( ftsIndexName(), "wb" ); - - FtsHelpers::FtsIdxHeader ftsIdxHeader; - memset( &ftsIdxHeader, 0, sizeof( ftsIdxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - ftsIdx.write( ftsIdxHeader ); - - ChunkedStorage::Writer chunks( ftsIdx ); - - BtreeIndexing::IndexedWords indexedWords; - - QSet< uint32_t > setOfOffsets; - - findArticleLinks( 0, &setOfOffsets, 0, &isCancelled ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QVector< uint32_t > offsets; - offsets.resize( setOfOffsets.size() ); - uint32_t * ptr = &offsets.front(); - - for( QSet< uint32_t >::ConstIterator it = setOfOffsets.constBegin(); - it != setOfOffsets.constEnd(); ++it ) - { - *ptr = *it; - ptr++; - } - - // Free memory - setOfOffsets.clear(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - qSort( offsets ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QMap< QString, QVector< uint32_t > > ftsWords; - - set< quint64 > indexedArticles; - RefEntry entry; - string articleText; - quint32 htmlType = 0xFFFFFFFF; - - for( unsigned i = 0; i < sf.getContentTypesCount(); i++ ) - { - if( sf.getContentType( i ).startsWith( "text/html", Qt::CaseInsensitive ) ) - { - htmlType = i; - break; - } - } - - // index articles for full-text search - for( int i = 0; i < offsets.size(); i++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QString articleStr; - quint32 articleNom = offsets.at( i ); - - sf.getRefEntry( articleNom, entry ); - - quint64 articleID = ( ( (quint64)entry.itemIndex ) << 32 ) | entry.binIndex; - - set< quint64 >::iterator it = indexedArticles.find( articleID ); - if( it != indexedArticles.end() ) - continue; - - indexedArticles.insert( articleID ); - - quint32 type = readArticle( 0, articleText, entry ); - - articleStr = QString::fromUtf8( articleText.c_str(), articleText.length() ); - - if( type == htmlType ) - articleStr = Html::unescape( articleStr ); - - FtsHelpers::parseArticleForFts( articleNom, articleStr, ftsWords ); - } - - // Free memory - offsets.clear(); - - QMap< QString, QVector< uint32_t > >::iterator it = ftsWords.begin(); - while( it != ftsWords.end() ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - uint32_t offset = chunks.startNewBlock(); - uint32_t size = it.value().size(); - - chunks.addToBlock( &size, sizeof(uint32_t) ); - chunks.addToBlock( it.value().data(), size * sizeof(uint32_t) ); - - indexedWords.addSingleWord( gd::toWString( it.key() ), offset ); - - it = ftsWords.erase( it ); - } - - // Free memory - ftsWords.clear(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - ftsIdxHeader.chunksOffset = chunks.finish(); - ftsIdxHeader.wordCount = indexedWords.size(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - BtreeIndexing::IndexInfo ftsIdxInfo = BtreeIndexing::buildIndex( indexedWords, ftsIdx ); - - // Free memory - indexedWords.clear(); - - ftsIdxHeader.indexBtreeMaxElements = ftsIdxInfo.btreeMaxElements; - ftsIdxHeader.indexRootOffset = ftsIdxInfo.rootOffset; - - ftsIdxHeader.signature = FtsHelpers::FtsSignature; - ftsIdxHeader.formatVersion = FtsHelpers::CurrentFtsFormatVersion + getFtsIndexVersion(); - - ftsIdx.rewind(); - ftsIdx.writeRecords( &ftsIdxHeader, sizeof(ftsIdxHeader), 1 ); - - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "Slob: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void SlobDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - RefEntry entry; - string articleText; - - quint32 htmlType = 0xFFFFFFFF; - - for( unsigned i = 0; i < sf.getContentTypesCount(); i++ ) - { - if( sf.getContentType( i ).startsWith( "text/html", Qt::CaseInsensitive ) ) - { - htmlType = i; - break; - } - } - - quint32 type = readArticle( articleAddress, articleText, entry ); - headword = entry.key; - - text = QString::fromUtf8( articleText.data(), articleText.size() ); - - if( type == htmlType ) - text = Html::unescape( text ); - } - catch( std::exception &ex ) - { - gdWarning( "Slob: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - - -sptr< Dictionary::DataRequest > SlobDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString, searchMode, matchCase, distanceBetweenWords, maxResults ); -} - - -/// SlobDictionary::getArticle() - -class SlobArticleRequest; - -class SlobArticleRequestRunnable: public QRunnable -{ - SlobArticleRequest & r; - QSemaphore & hasExited; - -public: - - SlobArticleRequestRunnable( SlobArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~SlobArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class SlobArticleRequest: public Dictionary::DataRequest -{ - friend class SlobArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - SlobDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - SlobArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - SlobDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new SlobArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by DslArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~SlobArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void SlobArticleRequestRunnable::run() -{ - r.run(); -} - -void SlobArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< quint32 > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now grab that article - - string headword, articleText; - - headword = chain[ x ].word; - try - { - dict.loadArticle( chain[ x ].articleOffset, articleText ); - } - catch(...) - { - } - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ); - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result; - - multimap< wstring, pair< string, string > >::const_iterator i; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - result += "

"; - result += i->second.first; - result += "

"; - result += i->second.second; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - result += "

"; - result += i->second.first; - result += "

"; - result += i->second.second; - } - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - - finish(); -} - -sptr< Dictionary::DataRequest > SlobDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new SlobArticleRequest( word, alts, *this ); -} - -//// SlobDictionary::getResource() - -class SlobResourceRequest; - -class SlobResourceRequestRunnable: public QRunnable -{ - SlobResourceRequest & r; - QSemaphore & hasExited; - -public: - - SlobResourceRequestRunnable( SlobResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~SlobResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class SlobResourceRequest: public Dictionary::DataRequest -{ - friend class SlobResourceRequestRunnable; - - SlobDictionary & dict; - - string resourceName; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - SlobResourceRequest( SlobDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( resourceName_ ) - { - QThreadPool::globalInstance()->start( - new SlobResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by ZimResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~SlobResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void SlobResourceRequestRunnable::run() -{ - r.run(); -} - -void SlobResourceRequest::run() -{ - // Some runnables linger enough that they are cancelled before they start - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - try - { - string resource; - dict.loadResource( resourceName, resource ); - if( resource.empty() ) - throw exNoResource(); - - if( Filetype::isNameOfCSS( resourceName ) ) - { - QString css = QString::fromUtf8( resource.data(), resource.size() ); - dict.isolateCSS( css, ".slobdict" ); - QByteArray bytes = css.toUtf8(); - data.resize( bytes.size() ); - memcpy( &data.front(), bytes.constData(), bytes.size() ); - } - else - if ( Filetype::isNameOfTiff( resourceName ) ) - { - // Convert it - - dataMutex.lock(); - - QImage img = QImage::fromData( reinterpret_cast< const uchar * >( resource.data() ), resource.size() ); - -#ifdef MAKE_EXTRA_TIFF_HANDLER - if( img.isNull() ) - GdTiff::tiffToQImage( &data.front(), data.size(), img ); -#endif - - dataMutex.unlock(); - - if ( !img.isNull() ) - { - // Managed to load -- now store it back as BMP - - QByteArray ba; - QBuffer buffer( &ba ); - buffer.open( QIODevice::WriteOnly ); - img.save( &buffer, "BMP" ); - - Mutex::Lock _( dataMutex ); - - data.resize( buffer.size() ); - - memcpy( &data.front(), buffer.data(), data.size() ); - } - } - else - { - Mutex::Lock _( dataMutex ); - data.resize( resource.size() ); - memcpy( &data.front(), resource.data(), data.size() ); - } - - hasAnyData = true; - } - catch( std::exception &ex ) - { - gdWarning( "SLOB: Failed loading resource \"%s\" from \"%s\", reason: %s\n", - resourceName.c_str(), dict.getName().c_str(), ex.what() ); - // Resource not loaded -- we don't set the hasAnyData flag then - } - - finish(); -} - -sptr< Dictionary::DataRequest > SlobDictionary::getResource( string const & name ) - throw( std::exception ) -{ - return new SlobResourceRequest( *this, name ); -} - - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Skip files with the extensions different to .slob to speed up the - // scanning - - QString firstName = QDir::fromNativeSeparators( FsEncoding::decode( i->c_str() ) ); - if( !firstName.endsWith( ".slob") ) - continue; - - // Got the file -- check if we need to rebuid the index - - vector< string > dictFiles( 1, *i ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - try - { - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - SlobFile sf; - - gdDebug( "Slob: Building the index for dictionary: %s\n", i->c_str() ); - - sf.open( firstName ); - - initializing.indexingDictionary( sf.getDictionaryName().toUtf8().constData() ); - - File::Class idx( indexFile, "wb" ); - IdxHeader idxHeader; - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - RefEntry refEntry; - quint32 entries = sf.getRefsCount(); - - IndexedWords indexedWords, indexedResources; - - set< quint64 > articlesPos; - quint32 articleCount = 0, wordCount = 0; - - for( quint32 i = 0; i < entries; i++ ) - { - sf.getRefEntry( i, refEntry ); - - quint8 type = sf.getItem( refEntry, 0 ); - - QString contentType = sf.getContentType( type ); - - if( contentType.startsWith( "text/html", Qt::CaseInsensitive ) - || contentType.startsWith( "text/plain", Qt::CaseInsensitive ) ) - { - //Article - indexedWords.addWord( gd::toWString( refEntry.key ), i ); - - wordCount += 1; - - quint64 pos = ( ( (quint64)refEntry.itemIndex ) << 32 ) + refEntry.binIndex; - if( articlesPos.find( pos ) == articlesPos.end() ) - { - articleCount += 1; - articlesPos.insert( pos ); - } - } - else - { - indexedResources.addSingleWord( gd::toWString( refEntry.key ), i ); - } - } - - // Build index - - { - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - indexedWords.clear(); // Release memory -- no need for this data - } - - { - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedResources, idx ); - - idxHeader.resourceIndexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.resourceIndexRootOffset = idxInfo.rootOffset; - - indexedResources.clear(); // Release memory -- no need for this data - } - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.articleCount = articleCount; - idxHeader.wordCount = wordCount; - - QPair langs = - LangCoder::findIdsForFilename( QString::fromStdString( dictFiles[ 0 ] ) ); - - idxHeader.langFrom = langs.first; - idxHeader.langTo = langs.second; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - - } - dictionaries.push_back( new SlobDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Slob dictionary initializing failed: %s, error: %s\n", - i->c_str(), e.what() ); - continue; - } - catch( ... ) - { - qWarning( "Slob dictionary initializing failed\n" ); - continue; - } - } - return dictionaries; -} - -} // namespace Slob - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/slob.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/slob.hh deleted file mode 100644 index 9fdbde94b4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/slob.hh +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef __SLOB_HH_INCLUDED__ -#define __SLOB_HH_INCLUDED__ - -#ifdef MAKE_ZIM_SUPPORT - -#include "dictionary.hh" - -/// Support for the Slob dictionaries. -namespace Slob { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif - -#endif // __SLOB_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sounddir.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sounddir.cc deleted file mode 100644 index 39ab7680cb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sounddir.cc +++ /dev/null @@ -1,489 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "sounddir.hh" -#include "file.hh" -#include "folding.hh" -#include "utf8.hh" -#include "btreeidx.hh" -#include "chunkedstorage.hh" -#include "filetype.hh" -#include "htmlescape.hh" -#include "audiolink.hh" -#include "wstring_qt.hh" -#include "fsencoding.hh" -#include "qt4x5.hh" - -#include -#include -#include -#include - -namespace SoundDir { - -using std::string; -using gd::wstring; -using std::map; -using std::multimap; -using std::set; -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -enum -{ - Signature = 0x58524453, // SDRX on little-endian, XRDS on big-endian - CurrentFormatVersion = 1+ BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, SDRX - uint32_t formatVersion; // File format version, is to be CurrentFormatVersion - uint32_t soundsCount; // Total number of sounds, for informative purposes only - uint32_t chunksOffset; // The offset to chunks' storage - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -class SoundDirDictionary: public BtreeIndexing::BtreeDictionary -{ - string name; - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - ChunkedStorage::Reader chunks; - QString iconFilename; - -public: - - SoundDirDictionary( string const & id, string const & name, - string const & indexFile, - vector< string > const & dictionaryFiles, - QString const & iconFilename_ ); - - virtual string getName() throw() - { return name; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.soundsCount; } - - virtual unsigned long getWordCount() throw() - { return getArticleCount(); } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - -protected: - - virtual void loadIcon() throw(); -}; - -SoundDirDictionary::SoundDirDictionary( string const & id, - string const & name_, - string const & indexFile, - vector< string > const & dictionaryFiles, - QString const & iconFilename_ ): - BtreeDictionary( id, dictionaryFiles ), - name( name_ ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - chunks( idx, idxHeader.chunksOffset ), - iconFilename( iconFilename_ ) -{ - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); -} - -sptr< Dictionary::DataRequest > SoundDirDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - vector< WordArticleLink > chain = findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - // maps to the chain number - multimap< wstring, unsigned > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ); - - multimap< wstring, unsigned > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( std::pair< wstring, uint32_t >( - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ), x ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - return new Dictionary::DataRequestInstant( false ); // No such word - - string result; - - multimap< wstring, uint32_t >::const_iterator i; - - string displayedName; - vector< char > chunk; - char * nameBlock; - - result += ""; - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - if( mainArticles.size() + alternateArticles.size() <= 1 ) - displayedName = chain[ i->second ].word; - else - { - try - { - Mutex::Lock _( idxMutex ); - nameBlock = chunks.getBlock( chain[ i->second ].articleOffset, chunk ); - - if ( nameBlock >= &chunk.front() + chunk.size() ) - { - // chunks reader thinks it's okay since zero-sized records can exist, - // but we don't allow that. - throw ChunkedStorage::exAddressOutOfRange(); - } - - chunk.back() = 0; // It must end with 0 anyway, but just in case - displayedName = string( nameBlock ); - } - catch( ChunkedStorage::exAddressOutOfRange & ) - { - // Bad address - continue; - } - } - - result += ""; - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::number( chain[ i->second ].articleOffset ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += ""; - result += ""; - result += ""; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - if( mainArticles.size() + alternateArticles.size() <= 1 ) - displayedName = chain[ i->second ].word; - else - { - try - { - Mutex::Lock _( idxMutex ); - nameBlock = chunks.getBlock( chain[ i->second ].articleOffset, chunk ); - - if ( nameBlock >= &chunk.front() + chunk.size() ) - { - // chunks reader thinks it's okay since zero-sized records can exist, - // but we don't allow that. - throw ChunkedStorage::exAddressOutOfRange(); - } - - chunk.back() = 0; // It must end with 0 anyway, but just in case - displayedName = string( nameBlock ); - } - catch( ChunkedStorage::exAddressOutOfRange & ) - { - // Bad address - continue; - } - } - - result += ""; - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::number( chain[ i->second ].articleOffset ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += ""; - result += ""; - result += ""; - } - - result += "
\"Play\"/" + Html::escape( displayedName ) + "
\"Play\"/" + Html::escape( displayedName ) + "
"; - - Dictionary::DataRequestInstant * ret = - new Dictionary::DataRequestInstant( true ); - - ret->getData().resize( result.size() ); - - memcpy( &(ret->getData().front()), result.data(), result.size() ); - - return ret; -} - -void SoundDirDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - if( !iconFilename.isEmpty() ) - { - QFileInfo fInfo( QDir( Config::getConfigDir() ), iconFilename ); - if( fInfo.isFile() ) - loadIconFromFile( fInfo.absoluteFilePath(), true ); - } - if( dictionaryIcon.isNull() ) - dictionaryIcon = dictionaryNativeIcon = QIcon(":/icons/playsound.png"); - dictionaryIconLoaded = true; -} - -sptr< Dictionary::DataRequest > SoundDirDictionary::getResource( string const & name ) - throw( std::exception ) -{ - bool isNumber = false; - - uint32_t articleOffset = QString::fromUtf8( name.c_str() ).toULong( &isNumber ); - - if ( !isNumber ) - return new Dictionary::DataRequestInstant( false ); // No such resource - - vector< char > chunk; - char * articleData; - - try - { - Mutex::Lock _( idxMutex ); - - articleData = chunks.getBlock( articleOffset, chunk ); - - if ( articleData >= &chunk.front() + chunk.size() ) - { - // chunks reader thinks it's okay since zero-sized records can exist, - // but we don't allow that. - throw ChunkedStorage::exAddressOutOfRange(); - } - } - catch( ChunkedStorage::exAddressOutOfRange & ) - { - // Bad address - return new Dictionary::DataRequestInstant( false ); // No such resource - } - - chunk.back() = 0; // It must end with 0 anyway, but just in case - - QDir dir( QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ) ); - - QString fileName = QDir::toNativeSeparators( dir.filePath( QString::fromUtf8( articleData ) ) ); - - // Now try loading that file - - try - { - File::Class f( FsEncoding::encode( fileName ), "rb" ); - - sptr< Dictionary::DataRequestInstant > dr = new - Dictionary::DataRequestInstant( true ); - - vector< char > & data = dr->getData(); - - f.seekEnd(); - - data.resize( f.tell() ); - - f.rewind(); - f.read( &data.front(), data.size() ); - - return dr; - } - catch( File::Ex ) - { - return new Dictionary::DataRequestInstant( false ); // No such resource - } -} - -void addDir( QDir const & baseDir, QDir const & dir, IndexedWords & indexedWords, - uint32_t & soundsCount, ChunkedStorage::Writer & chunks ) -{ - QFileInfoList entries = dir.entryInfoList( QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot ); - - for( QFileInfoList::const_iterator i = entries.constBegin(); - i != entries.constEnd(); ++i ) - { - if ( i->isDir() ) - addDir( baseDir, QDir( i->absoluteFilePath() ), indexedWords, soundsCount, chunks ); - else - if ( Filetype::isNameOfSound( i->fileName().toUtf8().data() ) ) - { - // Add this sound to index - - string fileName = baseDir.relativeFilePath( i->filePath() ).toUtf8().data(); - - uint32_t articleOffset = chunks.startNewBlock(); - chunks.addToBlock( fileName.c_str(), fileName.size() + 1 ); - - wstring name = gd::toWString( i->fileName() ); - - wstring::size_type pos = name.rfind( L'.' ); - - if ( pos != wstring::npos ) - name.erase( pos ); - - indexedWords.addWord( name, articleOffset ); - - ++soundsCount; - } - } -} - -} - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::SoundDirs const & soundDirs, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( Config::SoundDirs::const_iterator i = soundDirs.begin(); i != soundDirs.end(); - ++i ) - { - QDir dir( i->path ); - - if ( !dir.exists() ) - continue; // No such dir, no dictionary then - - vector< string > dictFiles( 1, - FsEncoding::encode( QDir::toNativeSeparators( dir.canonicalPath() ) ) ); - - dictFiles.push_back( "SoundDir" ); // A mixin - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - dictFiles.pop_back(); // Remove mixin - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || indexIsOldOrBad( indexFile ) ) - { - // Building the index - - qDebug() << "Sounds: Building the index for directory: " << i->path; - - initializing.indexingDictionary( i->name.toUtf8().data() ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - IndexedWords indexedWords; - - ChunkedStorage::Writer chunks( idx ); - - uint32_t soundsCount = 0; // Header's one is packed, we can't ref it - - addDir( dir, dir, indexedWords, soundsCount, chunks ); - - idxHeader.soundsCount = soundsCount; - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build the index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - - dictionaries.push_back( new SoundDirDictionary( dictId, - i->name.toUtf8().data(), - indexFile, - dictFiles, - i->iconFilename ) ); - } - - return dictionaries; -} - - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sounddir.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sounddir.hh deleted file mode 100644 index 738085da8e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sounddir.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __SOUNDDIR_HH_INCLUDED__ -#define __SOUNDDIR_HH_INCLUDED__ - -#include "dictionary.hh" -#include "config.hh" - -/// Support for sound dirs, arbitrary directories full of audio files. -namespace SoundDir { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::SoundDirs const &, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.cc deleted file mode 100644 index 48925aa405..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.cc +++ /dev/null @@ -1,1422 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "sources.hh" -#include -#include -#include -#include "gddebug.hh" - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT -#include "chineseconversion.hh" -#endif - - -Sources::Sources( QWidget * parent, Config::Class const & cfg): - QWidget( parent ), -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - chineseConversion( new ChineseConversion( this, cfg.transliteration.chinese ) ), -#endif -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) - textToSpeechSource( NULL ), -#endif - itemDelegate( new QItemDelegate( this ) ), - itemEditorFactory( new QItemEditorFactory() ), - mediawikisModel( this, cfg.mediawikis ), - webSitesModel( this, cfg.webSites ), - dictServersModel( this, cfg.dictServers ), - programsModel( this, cfg.programs ), - pathsModel( this, cfg.paths ), - soundDirsModel( this, cfg.soundDirs ), - hunspellDictsModel( this, cfg.hunspell ) -{ - ui.setupUi( this ); - - Config::Hunspell const & hunspell = cfg.hunspell; - Config::Transliteration const & trs = cfg.transliteration; - Config::Forvo const & forvo = cfg.forvo; - - // TODO: will programTypeEditorCreator and itemEditorFactory be destoryed by - // anyone? - QItemEditorCreatorBase * programTypeEditorCreator = - new QStandardItemEditorCreator< ProgramTypeEditor >(); - - itemEditorFactory->registerEditor( QVariant::Int, programTypeEditorCreator ); - - itemDelegate->setItemEditorFactory( itemEditorFactory ); - - ui.mediaWikis->setTabKeyNavigation( true ); - ui.mediaWikis->setModel( &mediawikisModel ); - ui.mediaWikis->resizeColumnToContents( 0 ); - ui.mediaWikis->resizeColumnToContents( 1 ); - ui.mediaWikis->resizeColumnToContents( 2 ); - ui.mediaWikis->resizeColumnToContents( 3 ); - - ui.webSites->setTabKeyNavigation( true ); - ui.webSites->setModel( &webSitesModel ); - ui.webSites->resizeColumnToContents( 0 ); - ui.webSites->resizeColumnToContents( 1 ); - ui.webSites->resizeColumnToContents( 2 ); - ui.webSites->resizeColumnToContents( 3 ); - - ui.dictServers->setTabKeyNavigation( true ); - ui.dictServers->setModel( &dictServersModel ); - ui.dictServers->resizeColumnToContents( 0 ); - ui.dictServers->resizeColumnToContents( 1 ); - ui.dictServers->resizeColumnToContents( 2 ); - ui.dictServers->resizeColumnToContents( 3 ); - ui.dictServers->resizeColumnToContents( 4 ); - ui.dictServers->resizeColumnToContents( 5 ); - - ui.programs->setTabKeyNavigation( true ); - ui.programs->setModel( &programsModel ); - ui.programs->resizeColumnToContents( 0 ); - // Make sure this thing will be large enough - ui.programs->setColumnWidth( 1, - QFontMetrics( QFont() ).width( - ProgramTypeEditor::getNameForType( Config::Program::PrefixMatch ) ) + 16 ); - ui.programs->resizeColumnToContents( 2 ); - ui.programs->resizeColumnToContents( 3 ); - ui.programs->resizeColumnToContents( 4 ); - ui.programs->setItemDelegate( itemDelegate ); - - ui.paths->setTabKeyNavigation( true ); - ui.paths->setModel( &pathsModel ); - - fitPathsColumns(); - - ui.soundDirs->setTabKeyNavigation( true ); - ui.soundDirs->setModel( &soundDirsModel ); - - fitSoundDirsColumns(); - - ui.hunspellPath->setText( hunspell.dictionariesPath ); - ui.hunspellDictionaries->setTabKeyNavigation( true ); - ui.hunspellDictionaries->setModel( &hunspellDictsModel ); - - fitHunspellDictsColumns(); - - ui.enableRussianTransliteration->setChecked( trs.enableRussianTransliteration ); - ui.enableGermanTransliteration->setChecked( trs.enableGermanTransliteration ); - ui.enableGreekTransliteration->setChecked( trs.enableGreekTransliteration ); - ui.enableBelarusianTransliteration->setChecked( trs.enableBelarusianTransliteration ); - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - ui.transliterationLayout->addWidget(chineseConversion); - ui.transliterationLayout->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding)); -#endif - - ui.enableRomaji->setChecked( trs.romaji.enable ); - ui.enableHepburn->setChecked( trs.romaji.enableHepburn ); - ui.enableNihonShiki->setChecked( trs.romaji.enableNihonShiki ); - ui.enableKunreiShiki->setChecked( trs.romaji.enableKunreiShiki ); - ui.enableHiragana->setChecked( trs.romaji.enableHiragana ); - ui.enableKatakana->setChecked( trs.romaji.enableKatakana ); - - ui.forvoEnabled->setChecked( forvo.enable ); - ui.forvoApiKey->setText( forvo.apiKey ); - ui.forvoLanguageCodes->setText( forvo.languageCodes ); - - // Text to speech -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) - textToSpeechSource = new TextToSpeechSource( this, cfg.voiceEngines ); - ui.tabWidget->addTab( textToSpeechSource, QIcon(":/icons/playsound_color.png"), tr( "Text to Speech" ) ); -#endif - - if ( Config::isPortableVersion() ) - { - // Paths - - ui.paths->setEnabled( false ); - ui.addPath->setEnabled( false ); - ui.removePath->setEnabled( false ); - - // Sound dirs - - { - QStandardItemModel * model = new QStandardItemModel( this ); - model->setHorizontalHeaderLabels( QStringList() << " " ); - model->invisibleRootItem()->appendRow( new QStandardItem( tr( "(not available in portable version)" ) ) ); - ui.soundDirs->setModel( model ); - ui.soundDirs->setEnabled( false ); - - ui.addSoundDir->setEnabled( false ); - ui.removeSoundDir->setEnabled( false ); - } - - // Morpho - - ui.hunspellPath->setEnabled( false ); - ui.changeHunspellPath->setEnabled( false ); - } -} - -void Sources::fitPathsColumns() -{ - ui.paths->resizeColumnToContents( 0 ); - ui.paths->resizeColumnToContents( 1 ); -} - -void Sources::fitSoundDirsColumns() -{ - ui.soundDirs->resizeColumnToContents( 0 ); - ui.soundDirs->resizeColumnToContents( 1 ); - ui.soundDirs->resizeColumnToContents( 2 ); -} - -void Sources::fitHunspellDictsColumns() -{ - ui.hunspellDictionaries->resizeColumnToContents( 0 ); - ui.hunspellDictionaries->resizeColumnToContents( 1 ); -} - -void Sources::on_addPath_clicked() -{ - QString dir = - QFileDialog::getExistingDirectory( this, tr( "Choose a directory" ) ); - - if ( !dir.isEmpty() ) - { - pathsModel.addNewPath( dir ); - fitPathsColumns(); - } -} - -void Sources::on_removePath_clicked() -{ - QModelIndex current = ui.paths->currentIndex(); - - if ( current.isValid() && - QMessageBox::question( this, tr( "Confirm removal" ), - tr( "Remove directory %1 from the list?" ).arg( pathsModel.getCurrentPaths()[ current.row() ].path ), - QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) - { - pathsModel.removePath( current.row() ); - fitPathsColumns(); - } -} - -void Sources::on_addSoundDir_clicked() -{ - QString dir = - QFileDialog::getExistingDirectory( this, tr( "Choose a directory" ) ); - - if ( !dir.isEmpty() ) - { - soundDirsModel.addNewSoundDir( dir, QDir( dir ).dirName() ); - fitSoundDirsColumns(); - } -} - -void Sources::on_removeSoundDir_clicked() -{ - QModelIndex current = ui.soundDirs->currentIndex(); - - if ( current.isValid() && - QMessageBox::question( this, tr( "Confirm removal" ), - tr( "Remove directory %1 from the list?" ).arg( soundDirsModel.getCurrentSoundDirs()[ current.row() ].path ), - QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) - { - soundDirsModel.removeSoundDir( current.row() ); - fitSoundDirsColumns(); - } -} - -void Sources::on_changeHunspellPath_clicked() -{ - QString dir = - QFileDialog::getExistingDirectory( this, tr( "Choose a directory" ) ); - - if ( !dir.isEmpty() ) - { - ui.hunspellPath->setText( dir ); - hunspellDictsModel.changePath( dir ); - fitHunspellDictsColumns(); - } -} - -void Sources::on_addMediaWiki_clicked() -{ - mediawikisModel.addNewWiki(); - QModelIndex result = - mediawikisModel.index( mediawikisModel.rowCount( QModelIndex() ) - 1, - 1, QModelIndex() ); - - ui.mediaWikis->scrollTo( result ); - //ui.mediaWikis->setCurrentIndex( result ); - ui.mediaWikis->edit( result ); -} - -void Sources::on_removeMediaWiki_clicked() -{ - QModelIndex current = ui.mediaWikis->currentIndex(); - - if ( current.isValid() && - QMessageBox::question( this, tr( "Confirm removal" ), - tr( "Remove site %1 from the list?" ).arg( mediawikisModel.getCurrentWikis()[ current.row() ].name ), - QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) - mediawikisModel.removeWiki( current.row() ); -} - -void Sources::on_addWebSite_clicked() -{ - webSitesModel.addNewSite(); - - QModelIndex result = - webSitesModel.index( webSitesModel.rowCount( QModelIndex() ) - 1, - 1, QModelIndex() ); - - ui.webSites->scrollTo( result ); - ui.webSites->edit( result ); -} - -void Sources::on_removeWebSite_clicked() -{ - QModelIndex current = ui.webSites->currentIndex(); - - if ( current.isValid() && - QMessageBox::question( this, tr( "Confirm removal" ), - tr( "Remove site %1 from the list?" ).arg( webSitesModel.getCurrentWebSites()[ current.row() ].name ), - QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) - webSitesModel.removeSite( current.row() ); -} - -void Sources::on_addDictServer_clicked() -{ - dictServersModel.addNewServer(); - - QModelIndex result = - dictServersModel.index( dictServersModel.rowCount( QModelIndex() ) - 1, - 1, QModelIndex() ); - - ui.dictServers->scrollTo( result ); - ui.dictServers->edit( result ); -} - -void Sources::on_removeDictServer_clicked() -{ - QModelIndex current = ui.dictServers->currentIndex(); - - if ( current.isValid() && - QMessageBox::question( this, tr( "Confirm removal" ), - tr( "Remove site %1 from the list?" ).arg( dictServersModel.getCurrentDictServers()[ current.row() ].name ), - QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) - dictServersModel.removeServer( current.row() ); -} - -void Sources::on_addProgram_clicked() -{ - programsModel.addNewProgram(); - - QModelIndex result = - programsModel.index( programsModel.rowCount( QModelIndex() ) - 1, - 1, QModelIndex() ); - - ui.programs->scrollTo( result ); - ui.programs->edit( result ); -} - -void Sources::on_removeProgram_clicked() -{ - QModelIndex current = ui.programs->currentIndex(); - - if ( current.isValid() && - QMessageBox::question( this, tr( "Confirm removal" ), - tr( "Remove program %1 from the list?" ).arg( programsModel.getCurrentPrograms()[ current.row() ].name ), - QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) - programsModel.removeProgram( current.row() ); -} - -Config::VoiceEngines Sources::getVoiceEngines() const -{ -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) - if ( !textToSpeechSource ) - return Config::VoiceEngines(); - return textToSpeechSource->getVoiceEnginesModel().getCurrentVoiceEngines(); -#else - return Config::VoiceEngines(); -#endif -} - -Config::Hunspell Sources::getHunspell() const -{ - Config::Hunspell h; - - h.dictionariesPath = ui.hunspellPath->text(); - h.enabledDictionaries = hunspellDictsModel.getEnabledDictionaries(); - - return h; -} - -Config::Transliteration Sources::getTransliteration() const -{ - Config::Transliteration tr; - - tr.enableRussianTransliteration = ui.enableRussianTransliteration->isChecked(); - tr.enableGermanTransliteration = ui.enableGermanTransliteration->isChecked(); - tr.enableGreekTransliteration = ui.enableGreekTransliteration->isChecked(); - tr.enableBelarusianTransliteration = ui.enableBelarusianTransliteration->isChecked(); -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - chineseConversion->getConfig( tr.chinese ); -#endif - tr.romaji.enable = ui.enableRomaji->isChecked(); - tr.romaji.enableHepburn = ui.enableHepburn->isChecked(); - tr.romaji.enableNihonShiki = ui.enableNihonShiki->isChecked(); - tr.romaji.enableKunreiShiki = ui.enableKunreiShiki->isChecked(); - tr.romaji.enableHiragana = ui.enableHiragana->isChecked(); - tr.romaji.enableKatakana = ui.enableKatakana->isChecked(); - - return tr; -} - -Config::Forvo Sources::getForvo() const -{ - Config::Forvo forvo; - - forvo.enable = ui.forvoEnabled->isChecked(); - forvo.apiKey = ui.forvoApiKey->text(); - forvo.languageCodes = ui.forvoLanguageCodes->text(); - - return forvo; -} - -////////// MediaWikisModel - -MediaWikisModel::MediaWikisModel( QWidget * parent, - Config::MediaWikis const & mediawikis_ ): - QAbstractItemModel( parent ), mediawikis( mediawikis_ ) -{ -} -void MediaWikisModel::removeWiki( int index ) -{ - beginRemoveRows( QModelIndex(), index, index ); - mediawikis.erase( mediawikis.begin() + index ); - endRemoveRows(); -} - -void MediaWikisModel::addNewWiki() -{ - Config::MediaWiki w; - - w.enabled = false; - - w.id = Dictionary::generateRandomDictionaryId(); - - w.url = "http://"; - - beginInsertRows( QModelIndex(), mediawikis.size(), mediawikis.size() ); - mediawikis.push_back( w ); - endInsertRows(); -} - -QModelIndex MediaWikisModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex MediaWikisModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags MediaWikisModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() ) - { - if ( !index.column() ) - result |= Qt::ItemIsUserCheckable; - else - result |= Qt::ItemIsEditable; - } - - return result; -} - -int MediaWikisModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return mediawikis.size(); -} - -int MediaWikisModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return 4; -} - -QVariant MediaWikisModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - switch( section ) - { - case 0: - return tr( "Enabled" ); - case 1: - return tr( "Name" ); - case 2: - return tr( "Address" ); - case 3: - return tr( "Icon" ); - default: - return QVariant(); - } - - return QVariant(); -} - -QVariant MediaWikisModel::data( QModelIndex const & index, int role ) const -{ - if ( index.row() >= mediawikis.size() ) - return QVariant(); - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - { - switch( index.column() ) - { - case 1: - return mediawikis[ index.row() ].name; - case 2: - return mediawikis[ index.row() ].url; - case 3: - return mediawikis[ index.row() ].icon; - default: - return QVariant(); - } - } - - if ( role == Qt::CheckStateRole && !index.column() ) - return mediawikis[ index.row() ].enabled ? Qt::Checked : Qt::Unchecked; - - return QVariant(); -} - -bool MediaWikisModel::setData( QModelIndex const & index, const QVariant & value, - int role ) -{ - if ( index.row() >= mediawikis.size() ) - return false; - - if ( role == Qt::CheckStateRole && !index.column() ) - { - //DPRINTF( "type = %d\n", (int)value.type() ); - //DPRINTF( "value = %d\n", (int)value.toInt() ); - - // XXX it seems to be always passing Int( 2 ) as a value, so we just toggle - mediawikis[ index.row() ].enabled = !mediawikis[ index.row() ].enabled; - - dataChanged( index, index ); - return true; - } - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - switch( index.column() ) - { - case 1: - mediawikis[ index.row() ].name = value.toString(); - dataChanged( index, index ); - return true; - case 2: - mediawikis[ index.row() ].url = value.toString(); - dataChanged( index, index ); - return true; - case 3: - mediawikis[ index.row() ].icon = value.toString(); - dataChanged( index, index ); - return true; - default: - return false; - } - - return false; -} - - -////////// WebSitesModel - -WebSitesModel::WebSitesModel( QWidget * parent, - Config::WebSites const & webSites_ ): - QAbstractItemModel( parent ), webSites( webSites_ ) -{ -} -void WebSitesModel::removeSite( int index ) -{ - beginRemoveRows( QModelIndex(), index, index ); - webSites.erase( webSites.begin() + index ); - endRemoveRows(); -} - -void WebSitesModel::addNewSite() -{ - Config::WebSite w; - - w.enabled = false; - - w.id = Dictionary::generateRandomDictionaryId(); - - w.url = "http://"; - - beginInsertRows( QModelIndex(), webSites.size(), webSites.size() ); - webSites.push_back( w ); - endInsertRows(); -} - -QModelIndex WebSitesModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex WebSitesModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags WebSitesModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() ) - { - if ( !index.column() ) - result |= Qt::ItemIsUserCheckable; - else - result |= Qt::ItemIsEditable; - } - - return result; -} - -int WebSitesModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return webSites.size(); -} - -int WebSitesModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return 4; -} - -QVariant WebSitesModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - switch( section ) - { - case 0: - return tr( "Enabled" ); - case 1: - return tr( "Name" ); - case 2: - return tr( "Address" ); - case 3: - return tr( "Icon" ); - default: - return QVariant(); - } - - return QVariant(); -} - -QVariant WebSitesModel::data( QModelIndex const & index, int role ) const -{ - if ( index.row() >= webSites.size() ) - return QVariant(); - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - { - switch( index.column() ) - { - case 1: - return webSites[ index.row() ].name; - case 2: - return webSites[ index.row() ].url; - case 3: - return webSites[ index.row() ].iconFilename; - default: - return QVariant(); - } - } - - if ( role == Qt::CheckStateRole && !index.column() ) - return webSites[ index.row() ].enabled ? Qt::Checked : Qt::Unchecked; - - return QVariant(); -} - -bool WebSitesModel::setData( QModelIndex const & index, const QVariant & value, - int role ) -{ - if ( index.row() >= webSites.size() ) - return false; - - if ( role == Qt::CheckStateRole && !index.column() ) - { - //DPRINTF( "type = %d\n", (int)value.type() ); - //DPRINTF( "value = %d\n", (int)value.toInt() ); - - // XXX it seems to be always passing Int( 2 ) as a value, so we just toggle - webSites[ index.row() ].enabled = !webSites[ index.row() ].enabled; - - dataChanged( index, index ); - return true; - } - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - switch( index.column() ) - { - case 1: - webSites[ index.row() ].name = value.toString(); - dataChanged( index, index ); - return true; - case 2: - webSites[ index.row() ].url = value.toString(); - dataChanged( index, index ); - return true; - case 3: - webSites[ index.row() ].iconFilename = value.toString(); - dataChanged( index, index ); - return true; - default: - return false; - } - - return false; -} - -////////// DictServersModel - -DictServersModel::DictServersModel( QWidget * parent, - Config::DictServers const & dictServers_ ): - QAbstractItemModel( parent ), dictServers( dictServers_ ) -{ -} -void DictServersModel::removeServer( int index ) -{ - beginRemoveRows( QModelIndex(), index, index ); - dictServers.erase( dictServers.begin() + index ); - endRemoveRows(); -} - -void DictServersModel::addNewServer() -{ - Config::DictServer d; - - d.enabled = false; - - d.id = Dictionary::generateRandomDictionaryId(); - - d.url = "dict://"; - - beginInsertRows( QModelIndex(), dictServers.size(), dictServers.size() ); - dictServers.push_back( d ); - endInsertRows(); -} - -QModelIndex DictServersModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex DictServersModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags DictServersModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() ) - { - if ( !index.column() ) - result |= Qt::ItemIsUserCheckable; - else - result |= Qt::ItemIsEditable; - } - - return result; -} - -int DictServersModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return dictServers.size(); -} - -int DictServersModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return 6; -} - -QVariant DictServersModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - switch( section ) - { - case 0: - return tr( "Enabled" ); - case 1: - return tr( "Name" ); - case 2: - return tr( "Address" ); - case 3: - return tr( "Databases" ); - case 4: - return tr( "Strategies" ); - case 5: - return tr( "Icon" ); - default: - return QVariant(); - } - - return QVariant(); -} - -QVariant DictServersModel::data( QModelIndex const & index, int role ) const -{ - if ( index.row() >= dictServers.size() ) - return QVariant(); - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - { - switch( index.column() ) - { - case 1: - return dictServers[ index.row() ].name; - case 2: - return dictServers[ index.row() ].url; - case 3: - return dictServers[ index.row() ].databases; - case 4: - return dictServers[ index.row() ].strategies; - case 5: - return dictServers[ index.row() ].iconFilename; - default: - return QVariant(); - } - } - - if( role == Qt::ToolTipRole && index.column() == 3 ) - return tr( "Comma-delimited list of databases\n(empty string or \"*\" matches all databases)" ); - - if( role == Qt::ToolTipRole && index.column() == 4 ) - return tr( "Comma-delimited list of search strategies\n(empty string mean \"prefix\" strategy)" ); - - if ( role == Qt::CheckStateRole && !index.column() ) - return dictServers[ index.row() ].enabled ? Qt::Checked : Qt::Unchecked; - - return QVariant(); -} - -bool DictServersModel::setData( QModelIndex const & index, const QVariant & value, - int role ) -{ - if ( index.row() >= dictServers.size() ) - return false; - - if ( role == Qt::CheckStateRole && !index.column() ) - { - // XXX it seems to be always passing Int( 2 ) as a value, so we just toggle - dictServers[ index.row() ].enabled = !dictServers[ index.row() ].enabled; - - dataChanged( index, index ); - return true; - } - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - switch( index.column() ) - { - case 1: - dictServers[ index.row() ].name = value.toString(); - dataChanged( index, index ); - return true; - case 2: - dictServers[ index.row() ].url = value.toString(); - dataChanged( index, index ); - return true; - case 3: - dictServers[ index.row() ].databases = value.toString(); - dataChanged( index, index ); - return true; - case 4: - dictServers[ index.row() ].strategies = value.toString(); - dataChanged( index, index ); - return true; - case 5: - dictServers[ index.row() ].iconFilename = value.toString(); - dataChanged( index, index ); - return true; - default: - return false; - } - - return false; -} - - -////////// ProgramsModel - -ProgramsModel::ProgramsModel( QWidget * parent, - Config::Programs const & programs_ ): - QAbstractItemModel( parent ), programs( programs_ ) -{ -} - -void ProgramsModel::removeProgram( int index ) -{ - beginRemoveRows( QModelIndex(), index, index ); - programs.erase( programs.begin() + index ); - endRemoveRows(); -} - -void ProgramsModel::addNewProgram() -{ - Config::Program p; - - p.enabled = false; - p.type = Config::Program::Audio; - - p.id = Dictionary::generateRandomDictionaryId(); - - beginInsertRows( QModelIndex(), programs.size(), programs.size() ); - programs.push_back( p ); - endInsertRows(); -} - -QModelIndex ProgramsModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex ProgramsModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags ProgramsModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() ) - { - if ( !index.column() ) - result |= Qt::ItemIsUserCheckable; - else - result |= Qt::ItemIsEditable; - } - - return result; -} - -int ProgramsModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return programs.size(); -} - -int ProgramsModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return 5; -} - -QVariant ProgramsModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - switch( section ) - { - case 0: - return tr( "Enabled" ); - case 1: - return tr( "Type" ); - case 2: - return tr( "Name" ); - case 3: - return tr( "Command Line" ); - case 4: - return tr( "Icon" ); - default: - return QVariant(); - } - - return QVariant(); -} - -QVariant ProgramsModel::data( QModelIndex const & index, int role ) const -{ - if ( index.row() >= programs.size() ) - return QVariant(); - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - { - switch( index.column() ) - { - case 1: - if ( role == Qt::DisplayRole ) - return ProgramTypeEditor::getNameForType( programs[ index.row() ].type ); - else - return QVariant( ( int ) programs[ index.row() ].type ); - case 2: - return programs[ index.row() ].name; - case 3: - return programs[ index.row() ].commandLine; - case 4: - return programs[ index.row() ].iconFilename; - default: - return QVariant(); - } - } - - if ( role == Qt::CheckStateRole && !index.column() ) - return programs[ index.row() ].enabled ? Qt::Checked : Qt::Unchecked; - - return QVariant(); -} - -bool ProgramsModel::setData( QModelIndex const & index, const QVariant & value, - int role ) -{ - if ( index.row() >= programs.size() ) - return false; - - if ( role == Qt::CheckStateRole && !index.column() ) - { - programs[ index.row() ].enabled = !programs[ index.row() ].enabled; - - dataChanged( index, index ); - return true; - } - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - switch( index.column() ) - { - case 1: - programs[ index.row() ].type = Config::Program::Type( value.toInt() ); - dataChanged( index, index ); - return true; - case 2: - programs[ index.row() ].name = value.toString(); - dataChanged( index, index ); - return true; - case 3: - programs[ index.row() ].commandLine = value.toString(); - dataChanged( index, index ); - return true; - case 4: - programs[ index.row() ].iconFilename = value.toString(); - dataChanged( index, index ); - return true; - default: - return false; - } - - return false; -} - -QString ProgramTypeEditor::getNameForType( int v ) -{ - switch( v ) - { - case Config::Program::Audio: - return tr( "Audio" ); - case Config::Program::PlainText: - return tr( "Plain Text" ); - case Config::Program::Html: - return tr( "Html" ); - case Config::Program::PrefixMatch: - return tr( "Prefix Match" ); - default: - return tr( "Unknown" ); - } -} - -ProgramTypeEditor::ProgramTypeEditor( QWidget * widget ): QComboBox( widget ) -{ - for( int x = 0; x < Config::Program::MaxTypeValue; ++x ) - addItem( getNameForType( x ) ); -} - -int ProgramTypeEditor::getType() const -{ - return currentIndex(); -} - -void ProgramTypeEditor::setType( int t ) -{ - setCurrentIndex( t ); -} - -////////// PathsModel - -PathsModel::PathsModel( QWidget * parent, - Config::Paths const & paths_ ): - QAbstractItemModel( parent ), paths( paths_ ) -{ -} - -void PathsModel::removePath( int index ) -{ - beginRemoveRows( QModelIndex(), index, index ); - paths.erase( paths.begin() + index ); - endRemoveRows(); -} - -void PathsModel::addNewPath( QString const & path ) -{ - beginInsertRows( QModelIndex(), paths.size(), paths.size() ); - paths.push_back( Config::Path( path, false ) ); - endInsertRows(); -} - -QModelIndex PathsModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex PathsModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags PathsModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() && index.column() == 1 ) - result |= Qt::ItemIsUserCheckable; - - return result; -} - -int PathsModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return paths.size(); -} - -int PathsModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return 2; -} - -QVariant PathsModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - switch( section ) - { - case 0: - return tr( "Path" ); - case 1: - return tr( "Recursive" ); - default: - return QVariant(); - } - - return QVariant(); -} - -QVariant PathsModel::data( QModelIndex const & index, int role ) const -{ - if ( index.row() >= paths.size() ) - return QVariant(); - - if ( ( role == Qt::DisplayRole || role == Qt::EditRole ) && !index.column() ) - return paths[ index.row() ].path; - - if ( role == Qt::CheckStateRole && index.column() == 1 ) - return paths[ index.row() ].recursive ? Qt::Checked : Qt::Unchecked; - - return QVariant(); -} - -bool PathsModel::setData( QModelIndex const & index, const QVariant & /*value*/, - int role ) -{ - if ( index.row() >= paths.size() ) - return false; - - if ( role == Qt::CheckStateRole && index.column() == 1 ) - { - paths[ index.row() ].recursive = !paths[ index.row() ].recursive; - - dataChanged( index, index ); - return true; - } - - return false; -} - - -////////// SoundDirsModel - -SoundDirsModel::SoundDirsModel( QWidget * parent, - Config::SoundDirs const & soundDirs_ ): - QAbstractItemModel( parent ), soundDirs( soundDirs_ ) -{ -} - -void SoundDirsModel::removeSoundDir( int index ) -{ - beginRemoveRows( QModelIndex(), index, index ); - soundDirs.erase( soundDirs.begin() + index ); - endRemoveRows(); -} - -void SoundDirsModel::addNewSoundDir( QString const & path, QString const & name ) -{ - beginInsertRows( QModelIndex(), soundDirs.size(), soundDirs.size() ); - soundDirs.push_back( Config::SoundDir( path, name ) ); - endInsertRows(); -} - -QModelIndex SoundDirsModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex SoundDirsModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags SoundDirsModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() && index.column() < 3 ) - result |= Qt::ItemIsEditable; - - return result; -} - -int SoundDirsModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return soundDirs.size(); -} - -int SoundDirsModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return 3; -} - -QVariant SoundDirsModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - switch( section ) - { - case 0: - return tr( "Path" ); - case 1: - return tr( "Name" ); - case 2: - return tr( "Icon" ); - default: - return QVariant(); - } - - return QVariant(); -} - -QVariant SoundDirsModel::data( QModelIndex const & index, int role ) const -{ - if ( index.row() >= soundDirs.size() ) - return QVariant(); - - if ( ( role == Qt::DisplayRole || role == Qt::EditRole ) && !index.column() ) - return soundDirs[ index.row() ].path; - - if ( ( role == Qt::DisplayRole || role == Qt::EditRole ) && index.column() == 1 ) - return soundDirs[ index.row() ].name; - - if ( ( role == Qt::DisplayRole || role == Qt::EditRole ) && index.column() == 2 ) - return soundDirs[ index.row() ].iconFilename; - - return QVariant(); -} - -bool SoundDirsModel::setData( QModelIndex const & index, const QVariant & value, - int role ) -{ - if ( index.row() >= soundDirs.size() ) - return false; - - if ( ( role == Qt::DisplayRole || role == Qt::EditRole ) && index.column() < 3 ) - { - if ( !index.column() ) - soundDirs[ index.row() ].path = value.toString(); - else if ( index.column() == 1 ) - soundDirs[ index.row() ].name = value.toString(); - else - soundDirs[ index.row() ].iconFilename = value.toString(); - - dataChanged( index, index ); - return true; - } - - return false; -} - - -////////// HunspellDictsModel - -HunspellDictsModel::HunspellDictsModel( QWidget * parent, - Config::Hunspell const & hunspell ): - QAbstractItemModel( parent ), enabledDictionaries( hunspell.enabledDictionaries ) -{ - changePath( hunspell.dictionariesPath ); -} - -void HunspellDictsModel::changePath( QString const & newPath ) -{ - dataFiles = HunspellMorpho::findDataFiles( newPath ); - beginResetModel(); - endResetModel(); -} - -QModelIndex HunspellDictsModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex HunspellDictsModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags HunspellDictsModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() ) - { - if ( !index.column() ) - result |= Qt::ItemIsUserCheckable; - } - - return result; -} - -int HunspellDictsModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return dataFiles.size(); -} - -int HunspellDictsModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - else - return 2; -} - -QVariant HunspellDictsModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - switch( section ) - { - case 0: - return tr( "Enabled" ); - case 1: - return tr( "Name" ); - default: - return QVariant(); - } - - return QVariant(); -} - -QVariant HunspellDictsModel::data( QModelIndex const & index, int role ) const -{ - if ( (unsigned)index.row() >= dataFiles.size() ) - return QVariant(); - - if ( role == Qt::DisplayRole && index.column() == 1 ) - return dataFiles[ index.row() ].dictName; - - if ( role == Qt::CheckStateRole && !index.column() ) - { - for( unsigned x = enabledDictionaries.size(); x--; ) - { - if ( enabledDictionaries[ x ] == dataFiles[ index.row() ].dictId ) - return Qt::Checked; - } - - return Qt::Unchecked; - } - - return QVariant(); -} - -bool HunspellDictsModel::setData( QModelIndex const & index, const QVariant & /*value*/, - int role ) -{ - if ( (unsigned)index.row() >= dataFiles.size() ) - return false; - - if ( role == Qt::CheckStateRole && !index.column() ) - { - for( unsigned x = enabledDictionaries.size(); x--; ) - { - if ( enabledDictionaries[ x ] == dataFiles[ index.row() ].dictId ) - { - // Remove it now - enabledDictionaries.erase( enabledDictionaries.begin() + x ); - dataChanged( index, index ); - return true; - } - } - - // Add it - - enabledDictionaries.push_back( dataFiles[ index.row() ].dictId ); - - dataChanged( index, index ); - return true; - } - - return false; -} - -void Sources::on_rescan_clicked() -{ - emit rescan(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.hh deleted file mode 100644 index fb9c1753ce..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.hh +++ /dev/null @@ -1,340 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __SOURCES_HH_INCLUDED__ -#define __SOURCES_HH_INCLUDED__ - -#include "ui_sources.h" -#include "config.hh" -#include "hunspell.hh" -#include -#include -#include -#include - -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) -#include "texttospeechsource.hh" -#endif - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT -// Forward declaration -class ChineseConversion; -#endif - -/// A model to be projected into the mediawikis view, according to Qt's MVC model -class MediaWikisModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - MediaWikisModel( QWidget * parent, Config::MediaWikis const & ); - - void removeWiki( int index ); - void addNewWiki(); - - /// Returns the wikis the model currently has listed - Config::MediaWikis const & getCurrentWikis() const - { return mediawikis; } - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::MediaWikis mediawikis; -}; - -/// A model to be projected into the webSites view, according to Qt's MVC model -class WebSitesModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - WebSitesModel( QWidget * parent, Config::WebSites const & ); - - void removeSite( int index ); - void addNewSite(); - - /// Returns the sites the model currently has listed - Config::WebSites const & getCurrentWebSites() const - { return webSites; } - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::WebSites webSites; -}; - -/// A model to be projected into the dictServers view, according to Qt's MVC model -class DictServersModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - DictServersModel( QWidget * parent, Config::DictServers const & ); - - void removeServer( int index ); - void addNewServer(); - - /// Returns the sites the model currently has listed - Config::DictServers const & getCurrentDictServers() const - { return dictServers; } - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::DictServers dictServers; -}; - -/// A model to be projected into the programs view, according to Qt's MVC model -class ProgramsModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - ProgramsModel( QWidget * parent, Config::Programs const & ); - - void removeProgram( int index ); - void addNewProgram(); - - /// Returns the sites the model currently has listed - Config::Programs const & getCurrentPrograms() const - { return programs; } - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::Programs programs; -}; - -class ProgramTypeEditor: public QComboBox -{ -Q_OBJECT -Q_PROPERTY(int type READ getType WRITE setType USER true) - -public: - ProgramTypeEditor( QWidget * widget = 0 ); - - // Returns localized name for the given program type - static QString getNameForType( int ); - -public: - int getType() const; - void setType( int ); -}; - -/// A model to be projected into the paths view, according to Qt's MVC model -class PathsModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - PathsModel( QWidget * parent, Config::Paths const & ); - - void removePath( int index ); - void addNewPath( QString const & ); - - /// Returns the paths the model currently has listed - Config::Paths const & getCurrentPaths() const - { return paths; } - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::Paths paths; -}; - -/// A model to be projected into the soundDirs view, according to Qt's MVC model -class SoundDirsModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - SoundDirsModel( QWidget * parent, Config::SoundDirs const & ); - - void removeSoundDir( int index ); - void addNewSoundDir( QString const & path, QString const & name ); - - /// Returns the soundDirs the model currently has listed - Config::SoundDirs const & getCurrentSoundDirs() const - { return soundDirs; } - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::SoundDirs soundDirs; -}; - -/// A model to be projected into the hunspell dictionaries view, according to Qt's MVC model -class HunspellDictsModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - HunspellDictsModel( QWidget * parent, Config::Hunspell const & ); - - void changePath( QString const & newPath ); - - /// Returns the dictionaries currently enabled - Config::Hunspell::Dictionaries const & getEnabledDictionaries() const - { return enabledDictionaries; } - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::Hunspell::Dictionaries enabledDictionaries; - std::vector< HunspellMorpho::DataFiles > dataFiles; -}; - - -class Sources: public QWidget -{ - Q_OBJECT - -public: - Sources( QWidget * parent, Config::Class const &); - - Config::Paths const & getPaths() const - { return pathsModel.getCurrentPaths(); } - - Config::SoundDirs const & getSoundDirs() const - { return soundDirsModel.getCurrentSoundDirs(); } - - Config::MediaWikis const & getMediaWikis() const - { return mediawikisModel.getCurrentWikis(); } - - Config::WebSites const & getWebSites() const - { return webSitesModel.getCurrentWebSites(); } - - Config::DictServers const & getDictServers() const - { return dictServersModel.getCurrentDictServers(); } - - Config::Programs const & getPrograms() const - { return programsModel.getCurrentPrograms(); } - - Config::VoiceEngines getVoiceEngines() const; - - Config::Hunspell getHunspell() const; - - Config::Transliteration getTransliteration() const; - - Config::Forvo getForvo() const; - -signals: - - /// Emitted when a 'Rescan' button is clicked. - void rescan(); - -private: - Ui::Sources ui; - -#ifdef MAKE_CHINESE_CONVERSION_SUPPORT - ChineseConversion *chineseConversion; -#endif - -#if defined( Q_OS_WIN32 ) || defined( Q_OS_MAC ) - TextToSpeechSource *textToSpeechSource; -#endif - - QItemDelegate * itemDelegate; - QItemEditorFactory * itemEditorFactory; - - MediaWikisModel mediawikisModel; - WebSitesModel webSitesModel; - DictServersModel dictServersModel; - ProgramsModel programsModel; - PathsModel pathsModel; - SoundDirsModel soundDirsModel; - HunspellDictsModel hunspellDictsModel; - - void fitPathsColumns(); - void fitSoundDirsColumns(); - void fitHunspellDictsColumns(); - -private slots: - - void on_addPath_clicked(); - void on_removePath_clicked(); - - void on_addSoundDir_clicked(); - void on_removeSoundDir_clicked(); - - void on_changeHunspellPath_clicked(); - - void on_addMediaWiki_clicked(); - void on_removeMediaWiki_clicked(); - - void on_addWebSite_clicked(); - void on_removeWebSite_clicked(); - - void on_removeDictServer_clicked(); - void on_addDictServer_clicked(); - - void on_addProgram_clicked(); - void on_removeProgram_clicked(); - - void on_rescan_clicked(); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.ui deleted file mode 100644 index e7ce83db71..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sources.ui +++ /dev/null @@ -1,867 +0,0 @@ - - - Sources - - - - 0 - 0 - 811 - 336 - - - - Sources - - - - - - 0 - - - - 15 - 15 - - - - false - - - - - :/icons/filesave.png:/icons/filesave.png - - - Files - - - - - - Paths to search for the dictionary files: - - - - - - - - - - - - - - &Add... - - - - - - - &Remove - - - - - - - Qt::Vertical - - - - 17 - 68 - - - - - - - - Re&scan now - - - - - - - - - - - - - :/icons/fileopen.png:/icons/fileopen.png - - - Sound Dirs - - - - - - Make dictionaries from bunches of audiofiles by adding paths here: - - - - - - - - - - - - - - &Add... - - - - - - - &Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - :/icons/icon32_hunspell.png:/icons/icon32_hunspell.png - - - Morphology - - - - - - Path to a directory with Hunspell/Myspell dictionaries: - - - - - - - - - true - - - - - - - &Change... - - - - - - - - - Available morphology dictionaries: - - - - - - - - - - - - Each morphology dictionary appears as a -separate auxiliary dictionary which -provides stem words for searches and -spelling suggestions for mistyped words. -Add appropriate dictionaries to the bottoms -of the appropriate groups to use them. - - - Qt::PlainText - - - false - - - - - - - - - - - :/icons/icon32_wiki.png:/icons/icon32_wiki.png - - - Wikipedia - - - - - - Wikipedia (MediaWiki) sites: - - - - - - - - - - - - - - &Add... - - - - - - - &Remove - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - - - - - - - :/icons/internet.png:/icons/internet.png - - - Websites - - - - - - Any websites. A string %GDWORD% will be replaced with the query word: - - - - - - - - - - - - - - &Add... - - - - - - - &Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Alternatively, use %GD1251% for CP1251, %GDISO1%...%GDISO16% for ISO 8859-1...ISO 8859-16 respectively, -%GDBIG5% for Big-5, %GDBIG5HKSCS% for Big5-HKSCS, %GDGBK% for GBK and GB18030, %GDSHIFTJIS% for Shift-JIS. - - - - - - - - - :/icons/network.png:/icons/network.png - - - DICT servers - - - - - - DICT servers: - - - - - - - - - - - - - - &Add... - - - - - - - &Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - :/icons/programs.png:/icons/programs.png - - - Programs - - - - - - Any external programs. A string %GDWORD% will be replaced with the query word. If such string is not presented, the word will be fed into standard input. - - - true - - - - - - - - - - - - - - &Add... - - - - - - - &Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - :/icons/forvo.png:/icons/forvo.png - - - Forvo - - - - - - - 0 - 0 - - - - Live pronunciations from <a href="http://www.forvo.com/">forvo.com</a>. The site allows people to record and share word pronunciations. You can listen to them from GoldenDict. - - - true - - - true - - - - - - - Enable pronunciations from Forvo - - - true - - - true - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - QFormLayout::ExpandingFieldsGrow - - - - - API Key: - - - - - - - Use of Forvo currently requires an API key. Leave this field -blank to use the default key, which may become unavailable -in the future, or register on the site to get your own key. - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 18 - 20 - - - - - - - - Get your own key <a href="http://api.forvo.com/key/">here</a>, or leave blank to use the default one. - - - false - - - true - - - - - - - Language codes (comma-separated): - - - - - - - List of language codes you would like to have. Example: "en, ru". - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 18 - 20 - - - - - - - - Full list of language codes is available <a href="http://www.forvo.com/languages-codes/">here</a>. - - - true - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - Transliteration - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - Russian transliteration - - - - :/flags/ru.png:/flags/ru.png - - - - - - - Greek transliteration - - - - :/flags/gr.png:/flags/gr.png - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - German transliteration - - - - :/flags/de.png:/flags/de.png - - - - - - - Belarusian transliteration - - - - :/flags/by.png:/flags/by.png - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Enables to use the Latin alphabet to write the Japanese language - - - Japanese Romaji - - - true - - - true - - - - - - Systems: - - - - - - - The most widely used method of transcription of Japanese, -based on English phonology - - - Hepburn - - - - - - - false - - - The most regular system, having a one-to-one relation to the -kana writing systems. Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - - - Nihon-shiki - - - - - - - false - - - Based on Nihon-shiki system, but modified for modern standard Japanese. -Standardized as ISO 3602 - -Not implemented yet in GoldenDict. - - - Kunrei-shiki - - - - - - - Syllabaries: - - - - - - - Hiragana Japanese syllabary - - - Hiragana - - - - - - - Katakana Japanese syllabary - - - Katakana - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - enableRussianTransliteration - enableGermanTransliteration - enableRomaji - enableHepburn - enableNihonShiki - enableKunreiShiki - enableHiragana - enableKatakana - hunspellPath - changeHunspellPath - hunspellDictionaries - mediaWikis - addMediaWiki - removeMediaWiki - tabWidget - addPath - removePath - rescan - soundDirs - addSoundDir - removeSoundDir - paths - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient.hh deleted file mode 100644 index da97adff1a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient.hh +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef __SPEECHCLIENT_HH_INCLUDED__ -#define __SPEECHCLIENT_HH_INCLUDED__ - -#include -#include "config.hh" - -class SpeechClient: public QObject -{ -Q_OBJECT - -public: - - struct Engine - { - QString id; - QString name; - // Volume and rate may vary from 0 to 100 - int volume; - int rate; - Engine( Config::VoiceEngine const & e ) : - id( e.id ) - , name( e.name ) - , volume( e.volume ) - , rate( e.rate ) - {} - }; - - typedef QList Engines; - - SpeechClient( Config::VoiceEngine const & e, QObject * parent = 0L ); - virtual ~SpeechClient(); - - static Engines availableEngines(); - - const Engine & engine() const; - - bool tell( QString const & text, int volume = -1, int rate = -1 ); - bool say( QString const & text, int volume = -1, int rate = -1 ); - -signals: - void started( bool ok ); - void finished(); - -protected: - virtual void timerEvent( QTimerEvent * evt ); - -private: - struct InternalData; - InternalData * internalData; - -}; - -#endif // __SPEECHCLIENT_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient_mac.mm b/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient_mac.mm deleted file mode 100644 index 92db6c53e1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient_mac.mm +++ /dev/null @@ -1,191 +0,0 @@ -#include "speechclient.hh" - -#include -#include -#include -#include -#include -#include - -static QString NSStringToQString(const NSString * nsstr ) -{ - return QString::fromUtf8( [ nsstr UTF8String ] ); -} - -static NSString * QStringToNSString( QString const & qstr, bool needAlloc = false ) -{ - if( needAlloc ) - return [ [ NSString alloc ] initWithUTF8String : qstr.toUtf8().data() ]; - return [ NSString stringWithUTF8String : qstr.toUtf8().data() ]; -} - -struct SpeechClient::InternalData -{ - InternalData( Config::VoiceEngine const & e ): - waitingFinish( false ) - , engine( e ) - , oldVolume( -1 ) - , oldRate( -1 ) - , stringToPlay( nil ) - { - NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ]; - sp = [ [ NSSpeechSynthesizer alloc ] initWithVoice : QStringToNSString( e.id ) ]; - [ pool drain ]; - } - - ~InternalData() - { - [ sp release ]; - if( stringToPlay != nil ) - [ stringToPlay release ]; - } - - NSSpeechSynthesizer * sp; - bool waitingFinish; - SpeechClient::Engine engine; - float oldVolume; - float oldRate; - QString oldMode; - NSString * stringToPlay; -}; - -SpeechClient::SpeechClient( Config::VoiceEngine const & e, QObject * parent ): - QObject( parent ), - internalData( new InternalData( e ) ) -{ -} - -SpeechClient::~SpeechClient() -{ - delete internalData; -} - -SpeechClient::Engines SpeechClient::availableEngines() -{ - Engines engines; - NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ]; - - NSArray * voices = [ NSSpeechSynthesizer availableVoices ]; - int voicesNum = [ voices count ]; - for( int i = 0; i < voicesNum; i++ ) - { - QString id = NSStringToQString( [ voices objectAtIndex : i ] ); - QString name; - int n = id.lastIndexOf( '.' ); - if( n >= 0 ) - name = id.right( id.size() - n - 1 ); - else - name = id; - engines.push_back( SpeechClient::Engine( Config::VoiceEngine( - id, name, 50, 50 ) ) ); - } - - [ pool drain ]; - return engines; -} - -const SpeechClient::Engine & SpeechClient::engine() const -{ - return internalData->engine; -} - -bool SpeechClient::tell( QString const & text, int volume, int rate ) -{ - if( !internalData->sp || [ NSSpeechSynthesizer isAnyApplicationSpeaking ] ) - return false; - - if ( internalData->waitingFinish ) - return false; - - if( volume < 0 ) - volume = engine().volume; - if( rate < 0 ) - rate = engine().rate; - - NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ]; - - internalData->oldVolume = [ internalData->sp volume ]; - [ internalData->sp setVolume : ( volume / 100.0 ) ]; - - internalData->oldRate = [ internalData->sp rate ]; - [ internalData->sp setRate : ( rate * 2.0 + 100 ) ]; - - NSError * err = nil; - NSString * oldMode = [ internalData->sp objectForProperty : NSSpeechInputModeProperty error : &err ]; - if( err == nil || [ err code ] == 0 ) - { - internalData->oldMode = NSStringToQString( oldMode ); - [ internalData->sp setObject : NSSpeechModeText forProperty : NSSpeechInputModeProperty error : &err ]; - } - else - internalData->oldMode.clear(); - - internalData->stringToPlay = QStringToNSString( text, true ); - - bool ok = [ internalData->sp startSpeakingString : internalData->stringToPlay ]; - - emit started( ok ); - - if ( ok ) - { - internalData->waitingFinish = true; - startTimer( 50 ); - } - else - { - if( internalData->stringToPlay != nil ) - [ internalData->stringToPlay release ]; - internalData->stringToPlay = nil; - emit finished(); - } - - [ pool drain ]; - - return ok; -} - -bool SpeechClient::say( QString const & text, int volume, int rate ) -{ -(void) text; -(void) volume; -(void) rate; - return false; -} - -void SpeechClient::timerEvent( QTimerEvent * evt ) -{ - QObject::timerEvent( evt ); - - if ( !internalData->waitingFinish ) - return; - - if ( ![ internalData->sp isSpeaking ] ) - { - killTimer( evt->timerId() ) ; - internalData->waitingFinish = false; - - NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ]; - - if( internalData->oldVolume >=0 ) - [ internalData->sp setVolume : internalData->oldVolume ]; - if( internalData->oldRate >=0 ) - [ internalData->sp setRate : internalData->oldRate ]; - internalData->oldVolume = -1; - internalData->oldRate = -1; - - NSError * err; - if( !internalData->oldMode.isEmpty() ) - [ internalData->sp setObject : QStringToNSString( internalData->oldMode ) - forProperty : NSSpeechInputModeProperty error : &err ]; - - internalData->oldMode.clear(); - - if( internalData->stringToPlay != nil ) - [ internalData->stringToPlay release ]; - internalData->stringToPlay = nil; - - [ pool drain ]; - - emit finished(); - } -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient_win.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient_win.cc deleted file mode 100644 index 5b5be4d0e8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechclient_win.cc +++ /dev/null @@ -1,144 +0,0 @@ -#include "speechclient.hh" - -#include -#include "speechhlp.hh" - -#include - -struct SpeechClient::InternalData -{ - InternalData( Config::VoiceEngine const & e ): - waitingFinish( false ) - , engine( e ) - , oldVolume( -1 ) - , oldRate( -1 ) - { - sp = speechCreate( e.id.toStdWString().c_str() ); - } - - ~InternalData() - { - speechDestroy( sp ); - } - - SpeechHelper sp; - bool waitingFinish; - Engine engine; - int oldVolume; - int oldRate; -}; - -SpeechClient::SpeechClient( Config::VoiceEngine const & e, QObject * parent ): - QObject( parent ), - internalData( new InternalData( e ) ) -{ -} - -SpeechClient::~SpeechClient() -{ - delete internalData; -} - -static bool enumEngines( void * /* token */, - const wchar_t * id, - const wchar_t * name, - void * userData ) -{ - SpeechClient::Engines * pEngines = ( SpeechClient::Engines * )userData; - SpeechClient::Engine engine( Config::VoiceEngine( - QString::fromWCharArray( id ), - QString::fromWCharArray( name ), - 50, 50 ) ); - pEngines->push_back( engine ); - return true; -} - -SpeechClient::Engines SpeechClient::availableEngines() -{ - Engines engines; - speechEnumerateAvailableEngines( enumEngines, &engines ); - return engines; -} - -const SpeechClient::Engine & SpeechClient::engine() const -{ - return internalData->engine; -} - -bool SpeechClient::tell( QString const & text, int volume, int rate ) -{ - if ( !speechAvailable( internalData->sp ) ) - return false; - - if ( internalData->waitingFinish ) - return false; - - if( volume < 0 ) - volume = engine().volume; - if( rate < 0 ) - rate = engine().rate; - - internalData->oldVolume = setSpeechVolume( internalData->sp, volume ); - internalData->oldRate = setSpeechRate( internalData->sp, rate ); - - bool ok = speechTell( internalData->sp, text.toStdWString().c_str() ); - - emit started( ok ); - - if ( ok ) - { - internalData->waitingFinish = true; - startTimer( 50 ); - } - else - { - emit finished(); - } - return ok; -} - -bool SpeechClient::say( QString const & text, int volume, int rate ) -{ - if ( !speechAvailable( internalData->sp ) ) - return false; - - if( volume < 0 ) - volume = engine().volume; - if( rate < 0 ) - rate = engine().rate; - - int oldVolume = setSpeechVolume( internalData->sp, volume ); - int oldRate = setSpeechRate( internalData->sp, rate ); - - bool ok = speechSay( internalData->sp, text.toStdWString().c_str() ); - - if( oldVolume >=0 ) - setSpeechVolume( internalData->sp, oldVolume ); - if( oldRate >=0 ) - setSpeechRate( internalData->sp, oldRate ); - - return ok; -} - -void SpeechClient::timerEvent( QTimerEvent * evt ) -{ - QObject::timerEvent( evt ); - - if ( !internalData->waitingFinish ) - return; - - if ( speechTellFinished( internalData->sp ) ) - { - killTimer( evt->timerId() ) ; - internalData->waitingFinish = false; - - if( internalData->oldVolume >=0 ) - setSpeechVolume( internalData->sp, internalData->oldVolume ); - if( internalData->oldRate >=0 ) - setSpeechRate( internalData->sp, internalData->oldRate ); - internalData->oldVolume = -1; - internalData->oldRate = -1; - - emit finished(); - } -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechhlp.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechhlp.cc deleted file mode 100644 index 3bfbd25bf3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechhlp.cc +++ /dev/null @@ -1,191 +0,0 @@ -#define WINVER 0x0500 // At least WinXP required -#include -#include - -#include "speechhlp.hh" -#include -#include "sapi.hh" -#include "sphelper.hh" - -using std::wstring; - -struct _SpeechHelper -{ - ISpVoice * voice; - wstring engineId; - wstring engineName; - bool willInvokeCoUninitialize; - - _SpeechHelper() : - willInvokeCoUninitialize(false) - { - HRESULT hr; - hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); - willInvokeCoUninitialize = (hr != RPC_E_CHANGED_MODE); - CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**)&voice); - } - - ~_SpeechHelper() - { - if (voice) - voice->Release(); - - if (willInvokeCoUninitialize) - CoUninitialize(); - } -}; - -SpeechHelper speechCreate(const wchar_t *engineId) -{ - SpeechHelper sp = new _SpeechHelper(); - HRESULT hr; - ISpObjectToken * spToken; - - hr = SpGetTokenFromId(engineId, &spToken); - - if (SUCCEEDED(hr)) - { - if (SUCCEEDED(hr) && sp->voice) - { - sp->voice->SetVoice(spToken); - - WCHAR * engineName = NULL; - SpGetDescription( spToken, &engineName ); - sp->engineId = engineId; - if (engineName) - { - sp->engineName = engineName; - CoTaskMemFree(engineName); - } - } - - spToken->Release(); - } - - return sp; -} - -void speechDestroy(SpeechHelper sp) -{ - delete sp; -} - -bool speechAvailable(SpeechHelper sp) -{ - if (!sp) - return false; - - return !!(sp->voice); -} - -void speechEnumerateAvailableEngines(EnumerateCallback callback, void *userData) -{ - HRESULT hr; - IEnumSpObjectTokens * enumSpTokens = NULL; - ULONG count = 0; - bool next = true; - hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); - bool willInvokeCoUninitialize = (hr != RPC_E_CHANGED_MODE); - hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &enumSpTokens); - if (SUCCEEDED(hr)) - hr = enumSpTokens->GetCount(&count); - - for (ULONG i = 0; i < count && next; i++) - { - ISpObjectToken * spToken = NULL; - WCHAR * engineName = NULL; - WCHAR * engineId = NULL; - - if (SUCCEEDED(hr)) - hr = enumSpTokens->Next(1, &spToken, NULL); - if (SUCCEEDED(hr)) - hr = SpGetDescription(spToken, &engineName); - if (SUCCEEDED(hr)) - hr = spToken->GetId(&engineId); - - if (SUCCEEDED(hr)) - next = callback(spToken, engineId, engineName, userData); - - if( spToken ) - spToken->Release(); - - if (engineName) - CoTaskMemFree(engineName); - if (engineId) - CoTaskMemFree(engineId); - } - - if( enumSpTokens ) - enumSpTokens->Release(); - - if (willInvokeCoUninitialize) - CoUninitialize(); -} - -const wchar_t * speechEngineId(SpeechHelper sp) -{ - if (!sp) - return NULL; - - return sp->engineId.c_str(); -} - -const wchar_t * speechEngineName(SpeechHelper sp) -{ - if (!sp) - return NULL; - - return sp->engineName.c_str(); -} - -bool speechTell(SpeechHelper sp, const wchar_t *text) -{ - if (!sp || !sp->voice || !text) - return false; - - HRESULT hr = sp->voice->Speak(text, SPF_ASYNC | SPF_IS_NOT_XML, 0); - return !!SUCCEEDED(hr); -} - -bool speechTellFinished(SpeechHelper sp) -{ - if (!sp || !sp->voice) - return true; - - SPVOICESTATUS es; - sp->voice->GetStatus(&es, NULL); - return es.dwRunningState == SPRS_DONE; -} - -bool speechSay(SpeechHelper sp, const wchar_t *text) -{ - if (!sp || !sp->voice || !text) - return false; - - HRESULT hr = sp->voice->Speak(text, SPF_IS_NOT_XML, 0); - return !!SUCCEEDED(hr); -} - -int setSpeechVolume( SpeechHelper sp, int newVolume ) -{ - if( !sp || !sp->voice || newVolume < 0 || newVolume > 100 ) - return -1; - unsigned short oldVolume; - HRESULT hr = sp->voice->GetVolume( &oldVolume ); - if( !SUCCEEDED( hr ) ) - return -1; - sp->voice->SetVolume( (unsigned short) newVolume ); - return oldVolume; -} - -int setSpeechRate( SpeechHelper sp, int newRate ) -{ - if( !sp || !sp->voice || newRate < 0 || newRate > 100 ) - return -1; - long oldRate; - HRESULT hr = sp->voice->GetRate( &oldRate ); - if( !SUCCEEDED( hr ) ) - return -1; - sp->voice->SetRate( ( newRate - 50 ) / 5 ); - return oldRate * 5 + 50; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechhlp.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechhlp.hh deleted file mode 100644 index 2e7eed5497..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/speechhlp.hh +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef __SPEECHHLP_H__ -#define __SPEECHHLP_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _SpeechHelper *SpeechHelper; -typedef bool (*EnumerateCallback)(void *token, const wchar_t *id, const wchar_t *name, void *userData); - -SpeechHelper speechCreate(const wchar_t *engineId); -void speechDestroy(SpeechHelper sp); -bool speechAvailable(SpeechHelper sp); -void speechEnumerateAvailableEngines(EnumerateCallback callback, void *userData); -const wchar_t * speechEngineId(SpeechHelper sp); -const wchar_t * speechEngineName(SpeechHelper sp); -bool speechTell(SpeechHelper sp, const wchar_t *text); -bool speechTellFinished(SpeechHelper sp); -bool speechSay(SpeechHelper sp, const wchar_t *text); -int setSpeechVolume( SpeechHelper sp, int newVolume ); -int setSpeechRate( SpeechHelper sp, int newRate ); - -#ifdef __cplusplus -} -#endif - -#endif // __SPEECHHLP_H__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sphelper.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sphelper.hh deleted file mode 100644 index 75029d02cd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sphelper.hh +++ /dev/null @@ -1,247 +0,0 @@ -#ifndef __SPHELPER_HH_INCLUDED__ -#define __SPHELPER_HH_INCLUDED__ - -#ifndef SR_LOCALIZED_DESCRIPTION -#define SR_LOCALIZED_DESCRIPTION L"Description" -#endif - -#ifndef REG_MUI_STRING_TRUNCATE -#define REG_MUI_STRING_TRUNCATE 0x00000001 -#endif - -#ifndef SPERR_NOT_FOUND -#define FACILITY_SAPI FACILITY_ITF -#define SAPI_ERROR_BASE 0x5000 -#define MAKE_SAPI_HRESULT(sev, err) MAKE_HRESULT(sev, FACILITY_SAPI, err) -#define MAKE_SAPI_ERROR(err) MAKE_SAPI_HRESULT(SEVERITY_ERROR, err + SAPI_ERROR_BASE) -#define SPERR_NOT_FOUND MAKE_SAPI_ERROR(0x03a) -#endif - -#ifdef _SAPI_VER -#undef _SAPI_VER -#endif -#define _SAPI_VER 0x053 - -inline void SpHexFromUlong(WCHAR * psz, ULONG ul) -{ - // If for some reason we cannot convert a number, set it to 0 - - if (_ultow(ul, psz, 16)) - { - psz[0] = L'0'; - psz[1] = 0; - } -} - -inline HRESULT SpGetTokenFromId( - const WCHAR * pszTokenId, - ISpObjectToken ** ppToken, - BOOL fCreateIfNotExist = FALSE) -{ - HRESULT hr; - ISpObjectToken * cpToken; - hr = CoCreateInstance(CLSID_SpObjectToken, NULL, CLSCTX_INPROC_SERVER, - IID_ISpObjectToken, (void**)&cpToken); - - if (SUCCEEDED(hr)) - { - hr = cpToken->SetId(NULL, pszTokenId, fCreateIfNotExist); - if (SUCCEEDED(hr)) - { - *ppToken = cpToken; - } - else - cpToken->Release(); - } - - return hr; -} - -inline HRESULT SpGetCategoryFromId( - const WCHAR * pszCategoryId, - ISpObjectTokenCategory ** ppCategory, - BOOL fCreateIfNotExist = FALSE) -{ - HRESULT hr; - - ISpObjectTokenCategory * cpTokenCategory; - hr = CoCreateInstance(CLSID_SpObjectTokenCategory, NULL, CLSCTX_INPROC_SERVER, - IID_ISpObjectTokenCategory, (void**)&cpTokenCategory ); - - if (SUCCEEDED(hr)) - { - hr = cpTokenCategory->SetId(pszCategoryId, fCreateIfNotExist); - if (SUCCEEDED(hr)) - { - *ppCategory = cpTokenCategory; - } - else - cpTokenCategory->Release(); - } - - return hr; -} - -HRESULT SpEnumTokens( - const WCHAR * pszCategoryId, - const WCHAR * pszReqAttribs, - const WCHAR * pszOptAttribs, - IEnumSpObjectTokens ** ppEnum) -{ - HRESULT hr = S_OK; - - ISpObjectTokenCategory * cpCategory; - hr = SpGetCategoryFromId(pszCategoryId, &cpCategory); - - if (SUCCEEDED(hr)) - { - hr = cpCategory->EnumTokens( - pszReqAttribs, - pszOptAttribs, - ppEnum); - cpCategory->Release(); - } - - return hr; -} - -inline HRESULT SpGetDescription(ISpObjectToken * pObjToken, WCHAR ** ppszDescription, LANGID Language = GetUserDefaultUILanguage()) -{ - WCHAR szLangId[10]; - HRESULT hr = S_OK; - - if (ppszDescription == NULL) - { - return E_POINTER; - } - *ppszDescription = NULL; - -#if _SAPI_VER >= 0x053 - WCHAR* pRegKeyPath = 0; - WCHAR* pszTemp = 0; - HKEY Handle = NULL; - - // Windows Vista does not encourage localized strings in the registry - // When running on Windows Vista query the localized engine name from a resource dll - OSVERSIONINFO ver; - ver.dwOSVersionInfoSize = sizeof( ver ); - - if( ( ::GetVersionEx( &ver ) == TRUE ) && ( ver.dwMajorVersion >= 6 ) ) - { - // If we reach this code we are running under Windows Vista - HMODULE hmodAdvapi32Dll = NULL; - typedef HRESULT (WINAPI* LPFN_RegLoadMUIStringW)(HKEY, LPCWSTR, LPWSTR, DWORD, LPDWORD, DWORD, LPCWSTR); - LPFN_RegLoadMUIStringW pfnRegLoadMUIStringW = NULL; - - // Delay bind with RegLoadMUIStringW since this function is not supported on previous versions of advapi32.dll - // RegLoadMUIStringW is supported only on advapi32.dll that ships with Windows Vista and above - // Calling RegLoadMUIStringW directly makes the loader try to resolve the function reference at load time which breaks, - // hence we manually load advapi32.dll, query for the function pointer and invoke it. - hmodAdvapi32Dll = ::LoadLibrary(TEXT("advapi32.dll")); - if(hmodAdvapi32Dll) - { - pfnRegLoadMUIStringW = (LPFN_RegLoadMUIStringW) ::GetProcAddress(hmodAdvapi32Dll, "RegLoadMUIStringW"); - if (!pfnRegLoadMUIStringW) - { - // This should not happen in Vista - // _ASSERT (pfnRegLoadMUIStringW); - hr = TYPE_E_DLLFUNCTIONNOTFOUND; - } - } - else - { - hr = HRESULT_FROM_WIN32(ERROR_DLL_NOT_FOUND); - } - - if (SUCCEEDED(hr)) - { - hr = pObjToken->GetId(&pszTemp); - } - - if (SUCCEEDED(hr)) - { - LONG lErrorCode = ERROR_SUCCESS; - - pRegKeyPath = wcschr(pszTemp, L'\\'); // Find the first occurance of '\\' in the absolute registry key path - if(pRegKeyPath) - { - *pRegKeyPath = L'\0'; - pRegKeyPath++; // pRegKeyPath now points to the path to the recognizer token under the HKLM or HKCR hive - *ppszDescription = 0; - - // Open the registry key for read and get the handle - if (wcsncmp(pszTemp, L"HKEY_LOCAL_MACHINE", MAX_PATH) == 0) - { - lErrorCode = RegOpenKeyExW(HKEY_LOCAL_MACHINE, pRegKeyPath, 0, KEY_QUERY_VALUE, &Handle); - } - else if (wcsncmp(pszTemp, L"HKEY_CURRENT_USER", MAX_PATH) == 0) - { - lErrorCode = RegOpenKeyExW(HKEY_CURRENT_USER, pRegKeyPath, 0, KEY_QUERY_VALUE, &Handle); - } - else - { - lErrorCode = ERROR_BAD_ARGUMENTS; - } - - // Use MUI RegLoadMUIStringW API to load the localized string - if(ERROR_SUCCESS == lErrorCode) - { - *ppszDescription = (WCHAR*) CoTaskMemAlloc(MAX_PATH * sizeof(WCHAR)); // This should be enough memory to allocate the localized Engine Name - lErrorCode = (*pfnRegLoadMUIStringW) (Handle, SR_LOCALIZED_DESCRIPTION, *ppszDescription, MAX_PATH * sizeof(WCHAR), NULL, REG_MUI_STRING_TRUNCATE, NULL); - } - } - else - { - // pRegKeyPath should never be 0 if we are querying for relative hkey path - lErrorCode = ERROR_BAD_ARGUMENTS; - } - - hr = HRESULT_FROM_WIN32(lErrorCode); - } - - // Close registry key handle - if(Handle) - { - RegCloseKey(Handle); - } - // Free memory allocated to locals - if(pszTemp) - { - CoTaskMemFree(pszTemp); - } - if (hmodAdvapi32Dll) - { - ::FreeLibrary(hmodAdvapi32Dll); - } - } - else - { - hr = HRESULT_FROM_WIN32(ERROR_NOT_SUPPORTED); - } - - // If running on OSes released before Windows Vista query the localized string from the registry - // If RegLoadMUIStringW failed to retrieved the localized Engine name retrieve the localized string from the fallback (Default) attribute -#else - hr = E_FAIL; -#endif // _SAPI_VER >= 0x053 - if (FAILED(hr)) - { - // Free memory allocated above if necessary - if (*ppszDescription != NULL) - { - CoTaskMemFree(*ppszDescription); - *ppszDescription = NULL; - } - - SpHexFromUlong(szLangId, Language); - hr = pObjToken->GetStringValue(szLangId, ppszDescription); - if (hr == SPERR_NOT_FOUND) - { - hr = pObjToken->GetStringValue(NULL, ppszDescription); - } - } - - return hr; -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sptr.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/sptr.hh deleted file mode 100644 index ab8fad06d1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/sptr.hh +++ /dev/null @@ -1,157 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __SPTR_HH_INCLUDED__ -#define __SPTR_HH_INCLUDED__ - -// A generic non-intrusive smart-pointer template. We could use boost::, tr1:: -// or whatever, but since there's no standard solution yet, it isn't worth -// the dependency given the simplicity of the template. - -template< class T > -class sptr_base -{ - template< class TT > friend class sptr_base; - - T * p; - unsigned * count; - - - void increment() - { - if ( count ) - ++*count; - } - -public: - - sptr_base(): p( 0 ), count( 0 ) {} - - sptr_base( T * p_ ): p( p_ ), count( p ? new unsigned( 1 ) : 0 ) - { - } - - sptr_base( sptr_base< T > const & other ): p( other.p ), count( other.count ) - { increment(); } - - // TT is meant to be a derivative of T - template< class TT > - sptr_base( sptr_base< TT > const & other ): p( ( T * ) other.p ), - count( other.count ) - { increment(); } - - void reset() - { - if ( count ) - { - if ( ! -- *count ) - { - delete count; - - count = 0; - - if ( p ) - { - T * p_ = p; - - p = 0; - - delete p_; - } - } - else - { - p = 0; - count = 0; - } - } - } - - unsigned use_count() const - { return count; } - - sptr_base & operator = ( sptr_base const & other ) - { if ( &other != this ) { reset(); p = other.p; count = other.count; increment(); } - return * this; } - - bool operator ! ( void ) const - { return !p; } - - bool operator == ( sptr_base const & other ) const - { return p == other.p; } - - bool operator != ( sptr_base const & other ) const - { return p != other.p; } - - ~sptr_base() - { reset(); } - -protected: - - T * get_base( void ) const - { return p; } -}; - -template< class T > -class sptr: public sptr_base< T > -{ -public: - - sptr() {} - - sptr( T * p ): sptr_base< T >( p ) {} - - // TT is meant to be a derivative of T - template< class TT > - sptr( sptr< TT > const & other ): sptr_base< T >( other ) {} - - // Retrieval - - T * get( void ) const - { return sptr_base< T > :: get_base(); } - - T * operator -> ( void ) const - { return get(); } - - T & operator * ( void ) const - { return * get(); } - - // Check - - operator bool( void ) const - { return get(); } - - bool operator ! ( void ) const - { return !get(); } -}; - -template< class T > -class const_sptr: public sptr_base< T > -{ -public: - - const_sptr() {} - - const_sptr( T * p_ ): sptr_base< T >( p_ ) {} - - const_sptr( sptr< T > const & other ): sptr_base< T >( other ) {} - - // TT is meant to be a derivative of T - template< class TT > - const_sptr( sptr_base< TT > const & other ): sptr_base< T >( other ) {} - - // Retrieval - - T const * get( void ) const - { return sptr_base< T > :: get_base(); } - - T const * operator -> ( void ) const - { return get(); } - - T const & operator * ( void ) const - { return * get(); } -}; - - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stardict.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/stardict.cc deleted file mode 100644 index afb8666d67..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stardict.cc +++ /dev/null @@ -1,1979 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "stardict.hh" -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include "chunkedstorage.hh" -#include "dictzip.h" -#include "xdxf2html.hh" -#include "htmlescape.hh" -#include "langcoder.hh" -#include "gddebug.hh" -#include "fsencoding.hh" -#include "filetype.hh" -#include "indexedzip.hh" -#include "tiff.hh" -#include "ftshelpers.hh" -#include "wstring_qt.hh" - -#include -#include -#include -#include -#ifndef __WIN32 -#include -#else -#include -#endif -#include - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include "ufile.hh" -#include "qt4x5.hh" - -namespace Stardict { - -using std::map; -using std::multimap; -using std::pair; -using std::set; -using std::string; -using gd::wstring; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX( exNotAnIfoFile, "Not an .ifo file", Dictionary::Ex ) -DEF_EX_STR( exBadFieldInIfo, "Bad field in .ifo file encountered:", Dictionary::Ex ) -DEF_EX_STR( exNoIdxFile, "No corresponding .idx file was found for", Dictionary::Ex ) -DEF_EX_STR( exNoDictFile, "No corresponding .dict file was found for", Dictionary::Ex ) -DEF_EX_STR( exNoSynFile, "No corresponding .syn file was found for", Dictionary::Ex ) - -DEF_EX( ex64BitsNotSupported, "64-bit indices are not presently supported, sorry", Dictionary::Ex ) -DEF_EX( exDicttypeNotSupported, "Dictionaries with dicttypes are not supported, sorry", Dictionary::Ex ) - -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX_STR( exWordIsTooLarge, "Enountered a word that is too large:", Dictionary::Ex ) -DEF_EX_STR( exSuddenEndOfFile, "Sudden end of file", Dictionary::Ex ) -DEF_EX_STR( exDictzipError, "DICTZIP error", Dictionary::Ex ) - -DEF_EX_STR( exIncorrectOffset, "Incorrect offset encountered in file", Dictionary::Ex ) - -/// Contents of an ifo file -struct Ifo -{ - string version; - string bookname; - uint32_t wordcount, synwordcount, idxfilesize, idxoffsetbits; - string sametypesequence, dicttype, description; - string copyright, author, email; - - Ifo( File::Class & ); -}; - -enum -{ - Signature = 0x58444953, // SIDX on little-endian, XDIS on big-endian - CurrentFormatVersion = 9 + BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, SIDX - uint32_t formatVersion; // File format version (CurrentFormatVersion) - uint32_t chunksOffset; // The offset to chunks' storage - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t wordCount; // Saved from Ifo::wordcount - uint32_t synWordCount; // Saved from Ifo::synwordcount - uint32_t bookNameSize; // Book name's length. Used to read it then. - uint32_t sameTypeSequenceSize; // That string's size. Used to read it then. - uint32_t langFrom; // Source language - uint32_t langTo; // Target language - uint32_t hasZipFile; // Non-zero means there's a zip file with resources present - uint32_t zipIndexBtreeMaxElements; // Two fields from IndexInfo of the zip - // resource index. - uint32_t zipIndexRootOffset; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -class StardictDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - string bookName; - string sameTypeSequence; - ChunkedStorage::Reader chunks; - Mutex dzMutex; - dictData * dz; - Mutex resourceZipMutex; - IndexedZip resourceZip; - -public: - - StardictDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - ~StardictDictionary(); - - virtual string getName() throw() - { return bookName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.wordCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount + idxHeader.synWordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::WordSearchRequest > findHeadwordsForSynonym( wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - - virtual QString const& getDescription(); - - virtual QString getMainFilename(); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "STARDICT", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } -protected: - - void loadIcon() throw(); - -private: - - /// Retrives the article's offset/size in .dict file, and its headword. - void getArticleProps( uint32_t articleAddress, - string & headword, - uint32_t & offset, uint32_t & size ); - - /// Loads the article, storing its headword and formatting the data it has - /// into an html. - void loadArticle( uint32_t address, - string & headword, - string & articleText ); - - string loadString( size_t size ); - - string handleResource( char type, char const * resource, size_t size ); - - void pangoToHtml( QString & text ); - - friend class StardictResourceRequest; - friend class StardictArticleRequest; - friend class StardictHeadwordsRequest; -}; - -StardictDictionary::StardictDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - bookName( loadString( idxHeader.bookNameSize ) ), - sameTypeSequence( loadString( idxHeader.sameTypeSequenceSize ) ), - chunks( idx, idxHeader.chunksOffset ) -{ - // Open the .dict file - - DZ_ERRORS error; - dz = dict_data_open( dictionaryFiles[ 2 ].c_str(), &error, 0 ); - - if ( !dz ) - throw exDictzipError( string( dz_error_str( error ) ) - + "(" + dictionaryFiles[ 2 ] + ")" ); - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - // Open a resource zip file, if there's one - - if ( idxHeader.hasZipFile && - ( idxHeader.zipIndexBtreeMaxElements || - idxHeader.zipIndexRootOffset ) ) - { - resourceZip.openIndex( IndexInfo( idxHeader.zipIndexBtreeMaxElements, - idxHeader.zipIndexRootOffset ), - idx, idxMutex ); - - QString zipName = QDir::fromNativeSeparators( - FsEncoding::decode( getDictionaryFilenames().back().c_str() ) ); - - if ( zipName.endsWith( ".zip", Qt::CaseInsensitive ) ) // Sanity check - resourceZip.openZipFile( zipName ); - } - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -StardictDictionary::~StardictDictionary() -{ - if ( dz ) - dict_data_close( dz ); -} - -void StardictDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_stardict.png"); - } - - dictionaryIconLoaded = true; -} - -string StardictDictionary::loadString( size_t size ) -{ - vector< char > data( size ); - - idx.read( &data.front(), data.size() ); - - return string( &data.front(), data.size() ); -} - -void StardictDictionary::getArticleProps( uint32_t articleAddress, - string & headword, - uint32_t & offset, uint32_t & size ) -{ - vector< char > chunk; - - Mutex::Lock _( idxMutex ); - - char * articleData = chunks.getBlock( articleAddress, chunk ); - - memcpy( &offset, articleData, sizeof( uint32_t ) ); - articleData += sizeof( uint32_t ); - memcpy( &size, articleData, sizeof( uint32_t ) ); - articleData += sizeof( uint32_t ); - - headword = articleData; -} - -/// This function tries to make an html of the Stardict's resource typed -/// 'type', contained in a block pointed to by 'resource', 'size' bytes long. -string StardictDictionary::handleResource( char type, char const * resource, size_t size ) -{ - QString text; - switch( type ) - { - case 'x': // Xdxf content - return Xdxf2Html::convert( string( resource, size ), Xdxf2Html::STARDICT, NULL, this, &resourceZip ); - case 'h': // Html content - { - QString articleText = QString( "
" ) + QString::fromUtf8( resource, size ) + "
"; - - articleText.replace( QRegExp( "(<\\s*img\\s+[^>]*src\\s*=\\s*[\"']+)((?!data:)[^\"']*)", Qt::CaseInsensitive ), - "\\1bres://" + QString::fromStdString( getId() ) + "/\\2" ) - .replace( QRegExp( "(<\\s*link\\s+[^>]*href\\s*=\\s*[\"']+)((?!data:)[^\"']*)", Qt::CaseInsensitive ), - "\\1bres://" + QString::fromStdString( getId() ) + "/\\2" ); - - // Handle links to articles - - QRegExp linksReg( "]*)href=['\"]([^'\"]+)['\"]" ); - - int pos = 0; - while( pos >= 0 ) - { - pos = linksReg.indexIn( articleText, pos ); - if( pos < 0 ) - break; - - QString link = linksReg.cap( 2 ); - if( link.indexOf( ':' ) < 0 ) - { - QString newLink; - if( link.indexOf( '#' ) < 0 ) - newLink = QString( " 0 ) - { - newLink = QString( "" + Html::preformat( string( resource, size ), isToLanguageRTL() ) + "
"; - case 'l': // Same as 'm', but not in utf8, instead in current locale's - // encoding. - // We just use Qt here, it should know better about system's - // locale. - return "
" + Html::preformat( QString::fromLocal8Bit( resource, size ).toUtf8().data(), - isToLanguageRTL() ) - + "
"; - case 'g': // Pango markup. - text = QString::fromUtf8( resource, size ); - pangoToHtml( text ); - return "
" + string( text.toUtf8().data() ) + "
"; - case 't': // Transcription - return "
" + Html::escape( string( resource, size ) ) + "
"; - case 'y': // Chinese YinBiao or Japanese KANA. Examples are needed. For now, - // just output as pure escaped utf8. - return "
" + Html::escape( string( resource, size ) ) + "
"; - case 'k': // KingSoft PowerWord data. We don't know how to handle that. - return "
" + Html::escape( string( resource, size ) ) + "
"; - case 'w': // MediaWiki markup. We don't handle this right now. - return "
" + Html::escape( string( resource, size ) ) + "
"; - case 'n': // WordNet data. We don't know anything about it. - return "
" + Html::escape( string( resource, size ) ) + "
"; - - case 'r': // Resource file list. For now, resources aren't handled. - return "
" + Html::escape( string( resource, size ) ) + "
"; - - case 'W': // An embedded Wav file. Unhandled yet. - return "
(an embedded .wav file)
"; - case 'P': // An embedded picture file. Unhandled yet. - return "
(an embedded picture file)
"; - } - - if ( islower( type ) ) - { - return string( "Unknown textual entry type " ) + string( 1, type ) + ": " + Html::escape( string( resource, size ) ) + "
"; - } - else - return string( "Unknown blob entry type " ) + string( 1, type ) + "
"; -} - -void StardictDictionary::pangoToHtml( QString & text ) -{ -/* - * Partially support for Pango Markup Language - * Attributes "fallback", "lang", "gravity", "gravity_hint" just ignored - */ - - QRegExp spanRegex( "]*)>", Qt::CaseInsensitive ); - QRegExp styleRegex( "(\\w+)=\"([^\"]*)\"" ); - - text.replace( "\n", "
" ); - - int pos = 0; - do - { - pos = spanRegex.indexIn( text, pos ); - if( pos >= 0 ) - { - QString styles = spanRegex.cap( 1 ); - QString newSpan( "= 0 ) - { - if( style.compare( "font_desc", Qt::CaseInsensitive ) == 0 - || style.compare( "font", Qt::CaseInsensitive ) == 0 ) - { - // Parse font description - - QStringList list = styleRegex.cap( 2 ).split( " ", QString::SkipEmptyParts ); - int n; - QString sizeStr, stylesStr, familiesStr; - for( n = list.size() - 1; n >= 0; n-- ) - { - QString str = list.at( n ); - - // font size - if( str[ 0 ].isNumber() ) - { - sizeStr = QString( "font-size:" ) + str + ";"; - continue; - } - - // font style - if( str.compare( "normal", Qt::CaseInsensitive ) == 0 - || str.compare( "oblique", Qt::CaseInsensitive ) == 0 - || str.compare( "italic", Qt::CaseInsensitive ) == 0 ) - { - if( !stylesStr.contains( "font-style:" ) ) - stylesStr += QString( "font-style:" ) + str + ";"; - continue; - } - - // font variant - if( str.compare( "smallcaps", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-variant:small-caps" ) ; - continue; - } - - // font weight - if( str.compare( "ultralight", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-weight:100;" ); - continue; - } - if( str.compare( "light", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-weight:200;" ); - continue; - } - if( str.compare( "bold", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-weight:bold;" ); - continue; - } - if( str.compare( "ultrabold", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-weight:800;" ); - continue; - } - if( str.compare( "heavy", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-weight:900" ); - continue; - } - - // font stretch - if( str.compare( "ultracondensed", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-stretch:ultra-condensed;" ); - continue; - } - if( str.compare( "extracondensed", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-stretch:extra-condensed;" ); - continue; - } - if( str.compare( "semicondensed", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-stretch:semi-condensed;" ); - continue; - } - if( str.compare( "semiexpanded", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-stretch:semi-expanded;" ); - continue; - } - if( str.compare( "extraexpanded", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-stretch:extra-expanded;" ); - continue; - } - if( str.compare( "ultraexpanded", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-stretch:ultra-expanded;" ); - continue; - } - if( str.compare( "condensed", Qt::CaseInsensitive ) == 0 - || str.compare( "expanded", Qt::CaseInsensitive ) == 0 ) - { - stylesStr += QString( "font-stretch:" ) + str + ";"; - continue; - } - - // gravity - if( str.compare( "south", Qt::CaseInsensitive ) == 0 - || str.compare( "east", Qt::CaseInsensitive ) == 0 - || str.compare( "north", Qt::CaseInsensitive ) == 0 - || str.compare( "west", Qt::CaseInsensitive ) == 0 - || str.compare( "auto", Qt::CaseInsensitive ) == 0 ) - { - continue; - } - break; - } - - // last words is families list - if( n >= 0 ) - { - familiesStr = QString( "font-family:" ); - for( int i = 0; i <= n; i++ ) - { - if( i > 0 && !familiesStr.endsWith( ',' ) ) - familiesStr += ","; - familiesStr += list.at( i ); - } - familiesStr += ";"; - } - - newSpan += familiesStr + stylesStr + sizeStr; - } - else if( style.compare( "font_family", Qt::CaseInsensitive ) == 0 - || style.compare( "face", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-family:" ) + styleRegex.cap( 2 ) + ";"; - else if( style.compare( "font_size", Qt::CaseInsensitive ) == 0 - || style.compare( "size", Qt::CaseInsensitive ) == 0 ) - { - if( styleRegex.cap( 2 )[ 0 ].isLetter() - || styleRegex.cap( 2 ).endsWith( "px", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "pt", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "em", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "%" ) ) - newSpan += QString( "font-size:" ) + styleRegex.cap( 2 ) +";"; - else - { - int size = styleRegex.cap( 2 ).toInt(); - if( size ) - newSpan += QString( "font-size:%1pt;" ).arg( size / 1024.0, 0, 'f', 3 ); - } - } - else if( style.compare( "font_style", Qt::CaseInsensitive ) == 0 - || style.compare( "style", Qt::CaseInsensitive ) == 0) - newSpan += QString( "font-style:" ) + styleRegex.cap( 2 ) + ";"; - else if( style.compare( "weight", Qt::CaseInsensitive ) == 0 - || style.compare( "weight", Qt::CaseInsensitive ) == 0) - { - QString str = styleRegex.cap( 2 ); - if( str.compare( "ultralight", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-weight:100;" ); - else if( str.compare( "light", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-weight:200;" ); - else if( str.compare( "ultrabold", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-weight:800;" ); - else if( str.compare( "heavy", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-weight:900" ); - else - newSpan += QString( "font-weight:" ) + str + ";"; - } - else if( style.compare( "font_variant", Qt::CaseInsensitive ) == 0 - || style.compare( "variant", Qt::CaseInsensitive ) == 0 ) - { - if( styleRegex.cap( 2 ).compare( "smallcaps", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-variant:small-caps" ); - else - newSpan += QString( "font-variant:" ) + styleRegex.cap( 2 ) + ";"; - } - else if( style.compare( "font_stretch", Qt::CaseInsensitive ) == 0 - || style.compare( "stretch", Qt::CaseInsensitive ) == 0 ) - { - QString str = styleRegex.cap( 2 ); - if( str.compare( "ultracondensed", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-stretch:ultra-condensed;" ); - else if( str.compare( "extracondensed", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-stretch:extra-condensed;" ); - else if( str.compare( "semicondensed", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-stretch:semi-condensed;" ); - else if( str.compare( "semiexpanded", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-stretch:semi-expanded;" ); - else if( str.compare( "extraexpanded", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-stretch:extra-expanded;" ); - else if( str.compare( "ultraexpanded", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "font-stretch:ultra-expanded;" ); - else - newSpan += QString( "font-stretch:" ) + str + ";"; - } - else if( style.compare( "foreground", Qt::CaseInsensitive ) == 0 - || style.compare( "fgcolor", Qt::CaseInsensitive ) == 0 - || style.compare( "color", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "color:" ) + styleRegex.cap( 2 ) + ";"; - else if( style.compare( "background", Qt::CaseInsensitive ) == 0 - || style.compare( "bgcolor", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "background-color:" ) + styleRegex.cap( 2 ) + ";"; - else if( style.compare( "underline_color", Qt::CaseInsensitive ) == 0 - || style.compare( "strikethrough_color", Qt::CaseInsensitive ) == 0 ) - newSpan += QString( "text-decoration-color:" ) + styleRegex.cap( 2 ) + ";"; - else if( style.compare( "underline", Qt::CaseInsensitive ) == 0 ) - { - if( styleRegex.cap( 2 ).compare( "none", Qt::CaseInsensitive ) ) - newSpan += QString( "text-decoration-line:none;" ); - else - { - newSpan += QString( "text-decoration-line:underline; " ); - if( styleRegex.cap( 2 ).compare( "low", Qt::CaseInsensitive ) ) - newSpan += QString( "text-decoration-style:dotted;" ); - else if( styleRegex.cap( 2 ).compare( "single", Qt::CaseInsensitive ) ) - newSpan += QString( "text-decoration-style:solid;" ); - else if( styleRegex.cap( 2 ).compare( "error", Qt::CaseInsensitive ) ) - newSpan += QString( "text-decoration-style:wavy;" ); - else - newSpan += QString( "text-decoration-style:" ) + styleRegex.cap( 2 ) + ";"; - } - } - else if( style.compare( "strikethrough", Qt::CaseInsensitive ) == 0 ) - { - if( styleRegex.cap( 2 ).compare( "true", Qt::CaseInsensitive ) ) - newSpan += QString( "text-decoration-line:line-through;" ); - else - newSpan += QString( "text-decoration-line:none;" ); - } - else if( style.compare( "rise", Qt::CaseInsensitive ) == 0 ) - { - if( styleRegex.cap( 2 ).endsWith( "px", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "pt", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "em", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "%" ) ) - newSpan += QString( "vertical-align:" ) + styleRegex.cap( 2 ) +";"; - else - { - int riseValue = styleRegex.cap( 2 ).toInt(); - if( riseValue ) - newSpan += QString( "vertical-align:%1pt;" ).arg( riseValue / 1024.0, 0, 'f', 3 ); - } - } - else if( style.compare( "letter_spacing", Qt::CaseInsensitive ) == 0 ) - { - if( styleRegex.cap( 2 ).endsWith( "px", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "pt", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "em", Qt::CaseInsensitive ) - || styleRegex.cap( 2 ).endsWith( "%" ) ) - newSpan += QString( "letter-spacing:" ) + styleRegex.cap( 2 ) +";"; - else - { - int spacing = styleRegex.cap( 2 ).toInt(); - if( spacing ) - newSpan += QString( "letter-spacing:%1pt;" ).arg( spacing / 1024.0, 0, 'f', 3 ); - } - } - - stylePos += styleRegex.matchedLength(); - } - } - while( stylePos >= 0 ); - - newSpan += "\">"; - text.replace( pos, spanRegex.matchedLength(), newSpan ); - pos += newSpan.size(); - } - } - while( pos >= 0 ); - - text.replace( " ", "  " ); -} - -void StardictDictionary::loadArticle( uint32_t address, - string & headword, - string & articleText ) -{ - uint32_t offset, size; - - getArticleProps( address, headword, offset, size ); - - char * articleBody; - - { - Mutex::Lock _( dzMutex ); - - // Note that the function always zero-pads the result. - articleBody = dict_data_read_( dz, offset, size, 0, 0 ); - } - - if ( !articleBody ) - { -// throw exCantReadFile( getDictionaryFilenames()[ 2 ] ); - articleText = string( "
DICTZIP error: " ) + dict_error_str( dz ) + "
"; - return; - } - - articleText.clear(); - - char * ptr = articleBody; - - if ( sameTypeSequence.size() ) - { - /// The sequence is known, it's not stored in the article itself - for( unsigned seq = 0; seq < sameTypeSequence.size(); ++seq ) - { - // Last entry doesn't have size info -- it is inferred from - // the bytes left - bool entrySizeKnown = ( seq == sameTypeSequence.size() - 1 ); - - uint32_t entrySize = 0; - - if ( entrySizeKnown ) - entrySize = size; - else - if ( !size ) - { - gdWarning( "Stardict: short entry for the word %s encountered in \"%s\".\n", headword.c_str(), getName().c_str() ); - break; - } - - char type = sameTypeSequence[ seq ]; - - if ( islower( type ) ) - { - // Zero-terminated entry, unless it's the last one - if ( !entrySizeKnown ) - entrySize = strlen( ptr ); - - if ( size < entrySize ) - { - gdWarning( "Stardict: malformed entry for the word %s encountered in \"%s\".\n", headword.c_str(), getName().c_str() ); - break; - } - - articleText += handleResource( type, ptr, entrySize ); - - if ( !entrySizeKnown ) - ++entrySize; // Need to skip the zero byte - - ptr += entrySize; - size -= entrySize; - } - else - if ( isupper( *ptr ) ) - { - // An entry which has its size before contents, unless it's the last one - - if ( !entrySizeKnown ) - { - if ( size < sizeof( uint32_t ) ) - { - gdWarning( "Stardict: malformed entry for the word %s encountered in \"%s\".\n", headword.c_str(), getName().c_str() ); - break; - } - - memcpy( &entrySize, ptr, sizeof( uint32_t ) ); - - entrySize = ntohl( entrySize ); - - ptr += sizeof( uint32_t ); - size -= sizeof( uint32_t ); - } - - if ( size < entrySize ) - { - gdWarning( "Stardict: malformed entry for the word %s encountered in \"%s\".\n", headword.c_str(), getName().c_str() ); - break; - } - - articleText += handleResource( type, ptr, entrySize ); - - ptr += entrySize; - size -= entrySize; - } - else - { - gdWarning( "Stardict: non-alpha entry type 0x%x for the word %s encountered in \"%s\".\n", - type, headword.c_str(), getName().c_str() ); - break; - } - } - } - else - { - // The sequence is stored in each article separately - while( size ) - { - if ( islower( *ptr ) ) - { - // Zero-terminated entry - size_t len = strlen( ptr + 1 ); - - if ( size < len + 2 ) - { - gdWarning( "Stardict: malformed entry for the word %s encountered in \"%s\".\n", headword.c_str(), getName().c_str() ); - break; - } - - articleText += handleResource( *ptr, ptr + 1, len ); - - ptr += len + 2; - size -= len + 2; - } - else - if ( isupper( *ptr ) ) - { - // An entry which havs its size before contents - if ( size < sizeof( uint32_t ) + 1 ) - { - gdWarning( "Stardict: malformed entry for the word %s encountered in \"%s\".\n", headword.c_str(), getName().c_str() ); - break; - } - - uint32_t entrySize; - - memcpy( &entrySize, ptr + 1, sizeof( uint32_t ) ); - - entrySize = ntohl( entrySize ); - - if ( size < sizeof( uint32_t ) + 1 + entrySize ) - { - gdWarning( "Stardict: malformed entry for the word %s encountered in \"%s\".\n", headword.c_str(), getName().c_str() ); - break; - } - - articleText += handleResource( *ptr, ptr + 1 + sizeof( uint32_t ), entrySize ); - - ptr += sizeof( uint32_t ) + 1 + entrySize; - size -= sizeof( uint32_t ) + 1 + entrySize; - } - else - { - gdWarning( "Stardict: non-alpha entry type 0x%x for the word %s encountered in \"%s\".\n", - (unsigned)*ptr, headword.c_str(), getName().c_str() ); - break; - } - } - } - - free( articleBody ); -} - -QString const& StardictDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - File::Class ifoFile( getDictionaryFilenames()[ 0 ], "r" ); - Ifo ifo( ifoFile ); - - if( !ifo.copyright.empty() ) - dictionaryDescription += "Copyright: " - + QString::fromUtf8( ifo.copyright.c_str() ) - .replace( "
", "\n", Qt::CaseInsensitive ) - + "\n\n"; - - if( !ifo.author.empty() ) - dictionaryDescription += "Author: " + QString::fromUtf8( ifo.author.c_str() ) + "\n\n"; - - if( !ifo.email.empty() ) - dictionaryDescription += "E-mail: " + QString::fromUtf8( ifo.email.c_str() ) + "\n\n"; - - if( !ifo.description.empty() ) - { - QString desc = QString::fromUtf8( ifo.description.c_str() ); - desc.replace( "\t", "
" ); - desc.replace( "\\n", "\n" ); - desc.replace( "
", "\n", Qt::CaseInsensitive ); - dictionaryDescription += Html::unescape( desc ); - } - - if( dictionaryDescription.isEmpty() ) - dictionaryDescription = "NONE"; - - return dictionaryDescription; -} - -QString StardictDictionary::getMainFilename() -{ - return FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ); -} - -void StardictDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "Stardict: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "Stardict: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void StardictDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - string headwordStr, articleStr; - loadArticle( articleAddress, headwordStr, articleStr ); - - headword = QString::fromUtf8( headwordStr.data(), headwordStr.size() ); - - wstring wstr = Utf8::decode( articleStr ); - - text = Html::unescape( gd::toQString( wstr ) ); - } - catch( std::exception &ex ) - { - gdWarning( "Stardict: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - -sptr< Dictionary::DataRequest > StardictDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -/// StardictDictionary::findHeadwordsForSynonym() - -class StardictHeadwordsRequest; - -class StardictHeadwordsRequestRunnable: public QRunnable -{ - StardictHeadwordsRequest & r; - QSemaphore & hasExited; - -public: - - StardictHeadwordsRequestRunnable( StardictHeadwordsRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~StardictHeadwordsRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class StardictHeadwordsRequest: public Dictionary::WordSearchRequest -{ - friend class StardictHeadwordsRequestRunnable; - - wstring word; - StardictDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - StardictHeadwordsRequest( wstring const & word_, - StardictDictionary & dict_ ): - word( word_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new StardictHeadwordsRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by StardictHeadwordsRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~StardictHeadwordsRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void StardictHeadwordsRequestRunnable::run() -{ - r.run(); -} - -void StardictHeadwordsRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - try - { - vector< WordArticleLink > chain = dict.findArticles( word ); - - wstring caseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - string headword, articleText; - - dict.loadArticle( chain[ x ].articleOffset, - headword, articleText ); - - wstring headwordDecoded = Utf8::decode( headword ); - - if ( caseFolded != Folding::applySimpleCaseOnly( headwordDecoded ) ) - { - // The headword seems to differ from the input word, which makes the - // input word its synonym. - Mutex::Lock _( dataMutex ); - - matches.push_back( headwordDecoded ); - } - } - } - catch( std::exception & e ) - { - setErrorString( QString::fromUtf8( e.what() ) ); - } - - finish(); -} - -sptr< Dictionary::WordSearchRequest > - StardictDictionary::findHeadwordsForSynonym( wstring const & word ) - throw( std::exception ) -{ - return new StardictHeadwordsRequest( word, *this ); -} - - -/// StardictDictionary::getArticle() - -class StardictArticleRequest; - -class StardictArticleRequestRunnable: public QRunnable -{ - StardictArticleRequest & r; - QSemaphore & hasExited; - -public: - - StardictArticleRequestRunnable( StardictArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~StardictArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class StardictArticleRequest: public Dictionary::DataRequest -{ - friend class StardictArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - StardictDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - StardictArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - StardictDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new StardictArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by StardictArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~StardictArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void StardictArticleRequestRunnable::run() -{ - r.run(); -} - -void StardictArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - try - { - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now grab that article - - string headword, articleText; - - dict.loadArticle( chain[ x ].articleOffset, headword, articleText ); - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ); - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result; - - multimap< wstring, pair< string, string > >::const_iterator i; - - string cleaner = """""""""""" - """""""""""" - "" - ""; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - result += dict.isFromLanguageRTL() ? "

" : "

"; - result += i->second.first; - result += "

"; - if( dict.isToLanguageRTL() ) - result += ""; - result += i->second.second; - result += cleaner; - if( dict.isToLanguageRTL() ) - result += ""; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - result += dict.isFromLanguageRTL() ? "

" : "

"; - result += i->second.first; - result += "

"; - if( dict.isToLanguageRTL() ) - result += ""; - result += i->second.second; - result += cleaner; - if( dict.isToLanguageRTL() ) - result += ""; - } - result = QString::fromUtf8( result.c_str() ) - .replace( QRegExp( "(<\\s*a\\s+[^>]*href\\s*=\\s*[\"']\\s*)bword://", Qt::CaseInsensitive ), - "\\1bword:" ) - .toUtf8().data(); - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - } - catch( std::exception & e ) - { - setErrorString( QString::fromUtf8( e.what() ) ); - } - - finish(); -} - -sptr< Dictionary::DataRequest > StardictDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new StardictArticleRequest( word, alts, *this ); -} - - -static char const * beginsWith( char const * substr, char const * str ) -{ - size_t len = strlen( substr ); - - return strncmp( str, substr, len ) == 0 ? str + len : 0; -} - -Ifo::Ifo( File::Class & f ): - wordcount( 0 ), synwordcount( 0 ), idxfilesize( 0 ), idxoffsetbits( 32 ) -{ - static string const versionEq( "version=" ); - - static string const booknameEq( "bookname=" ); - - //DPRINTF( "%s<\n", f.gets().c_str() ); - //DPRINTF( "%s<\n", f.gets().c_str() ); - - if ( QString::fromUtf8(f.gets().c_str()) != "StarDict's dict ifo file" || - f.gets().compare( 0, versionEq.size(), versionEq ) ) - throw exNotAnIfoFile(); - - /// Now go through the file and parse options - - try - { - char option[ 16384 ]; - - for( ; ; ) - { - if ( !f.gets( option, sizeof( option ), true ) ) - break; - - if ( char const * val = beginsWith( "bookname=", option ) ) - bookname = val; - else - if ( char const * val = beginsWith( "wordcount=", option ) ) - { - if ( sscanf( val, "%u", & wordcount ) != 1 ) - throw exBadFieldInIfo( option ); - } - else - if ( char const * val = beginsWith( "synwordcount=", option ) ) - { - if ( sscanf( val, "%u", & synwordcount ) != 1 ) - throw exBadFieldInIfo( option ); - } - else - if ( char const * val = beginsWith( "idxfilesize=", option ) ) - { - if ( sscanf( val, "%u", & idxfilesize ) != 1 ) - throw exBadFieldInIfo( option ); - } - else - if ( char const * val = beginsWith( "idxoffsetbits=", option ) ) - { - if ( sscanf( val, "%u", & idxoffsetbits ) != 1 || ( idxoffsetbits != 32 - && idxoffsetbits != 64 ) ) - throw exBadFieldInIfo( option ); - } - else - if ( char const * val = beginsWith( "sametypesequence=", option ) ) - sametypesequence = val; - else - if ( char const * val = beginsWith( "dicttype=", option ) ) - dicttype = val; - else - if ( char const * val = beginsWith( "description=", option ) ) - description = val; - else - if ( char const * val = beginsWith( "copyright=", option ) ) - copyright = val; - else - if ( char const * val = beginsWith( "author=", option ) ) - author = val; - else - if ( char const * val = beginsWith( "email=", option ) ) - email = val; - } - } - catch( File::exReadError & ) - { - } -} - -//// StardictDictionary::getResource() - -class StardictResourceRequest; - -class StardictResourceRequestRunnable: public QRunnable -{ - StardictResourceRequest & r; - QSemaphore & hasExited; - -public: - - StardictResourceRequestRunnable( StardictResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~StardictResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class StardictResourceRequest: public Dictionary::DataRequest -{ - friend class StardictResourceRequestRunnable; - - StardictDictionary & dict; - - string resourceName; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - StardictResourceRequest( StardictDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( resourceName_ ) - { - QThreadPool::globalInstance()->start( - new StardictResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by StardictResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~StardictResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void StardictResourceRequestRunnable::run() -{ - r.run(); -} - -void StardictResourceRequest::run() -{ - // Some runnables linger enough that they are cancelled before they start - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - try - { - if( resourceName.at( 0 ) == '\x1E' ) - resourceName = resourceName.erase( 0, 1 ); - if( resourceName.at( resourceName.length() - 1 ) == '\x1F' ) - resourceName.erase( resourceName.length() - 1, 1 ); - - string n = - FsEncoding::dirname( dict.getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + - "res" + - FsEncoding::separator() + - FsEncoding::encode( resourceName ); - - GD_DPRINTF( "n is %s\n", n.c_str() ); - - try - { - Mutex::Lock _( dataMutex ); - - File::loadFromFile( n, data ); - } - catch( File::exCantOpen ) - { - // Try reading from zip file - - if ( dict.resourceZip.isOpen() ) - { - Mutex::Lock _( dict.resourceZipMutex ); - - Mutex::Lock __( dataMutex ); - - if ( !dict.resourceZip.loadFile( Utf8::decode( resourceName ), data ) ) - throw; // Make it fail since we couldn't read the archive - } - else - throw; - } - - if ( Filetype::isNameOfTiff( resourceName ) ) - { - // Convert it - - dataMutex.lock(); - - QImage img = QImage::fromData( (unsigned char *) &data.front(), - data.size() ); - -#ifdef MAKE_EXTRA_TIFF_HANDLER - if( img.isNull() ) - GdTiff::tiffToQImage( &data.front(), data.size(), img ); -#endif - - dataMutex.unlock(); - - if ( !img.isNull() ) - { - // Managed to load -- now store it back as BMP - - QByteArray ba; - QBuffer buffer( &ba ); - buffer.open( QIODevice::WriteOnly ); - img.save( &buffer, "BMP" ); - - Mutex::Lock _( dataMutex ); - - data.resize( buffer.size() ); - - memcpy( &data.front(), buffer.data(), data.size() ); - } - } - - if( Filetype::isNameOfCSS( resourceName ) ) - { - Mutex::Lock _( dataMutex ); - - QString css = QString::fromUtf8( data.data(), data.size() ); - - // Correct some url's - - QRegExp links( "url\\(\\s*(['\"]?)([^'\"]*)(['\"]?)\\s*\\)", Qt::CaseInsensitive, QRegExp::RegExp ); - QString id = QString::fromUtf8( dict.getId().c_str() ); - int pos = 0; - for( ; ; ) - { - pos = links.indexIn( css, pos ); - if( pos < 0 ) - break; - QString url = links.cap( 2 ); - - if( url.indexOf( ":/" ) >= 0 || url.indexOf( "data:" ) >= 0) - { - // External link - pos += links.cap().size(); - continue; - } - - QString newUrl = QString( "url(" ) + links.cap( 1 ) + "bres://" - + id + "/" + url + links.cap( 3 ) + ")"; - css.replace( pos, links.cap().size(), newUrl ); - pos += newUrl.size(); - } - - dict.isolateCSS( css ); - QByteArray bytes = css.toUtf8(); - data.resize( bytes.size() ); - memcpy( &data.front(), bytes.constData(), bytes.size() ); - } - - hasAnyData = true; - } - catch( std::exception &ex ) - { - gdWarning( "Stardict: Failed loading resource \"%s\" for \"%s\", reason: %s\n", - resourceName.c_str(), dict.getName().c_str(), ex.what() ); - // Resource not loaded -- we don't set the hasAnyData flag then - } - catch( ... ) - { - } - - finish(); -} - -sptr< Dictionary::DataRequest > StardictDictionary::getResource( string const & name ) - throw( std::exception ) -{ - return new StardictResourceRequest( *this, name ); -} - -} // anonymous namespace - -static void findCorrespondingFiles( string const & ifo, - string & idx, string & dict, string & syn ) -{ - string base( ifo, 0, ifo.size() - 3 ); - - if ( !( - File::tryPossibleName( base + "idx", idx ) || - File::tryPossibleName( base + "idx.gz", idx ) || - File::tryPossibleName( base + "idx.dz", idx ) || - File::tryPossibleName( base + "IDX", idx ) || - File::tryPossibleName( base + "IDX.GZ", idx ) || - File::tryPossibleName( base + "IDX.DZ", idx ) - ) ) - throw exNoIdxFile( ifo ); - - if ( !( - File::tryPossibleName( base + "dict", dict ) || - File::tryPossibleName( base + "dict.dz", dict ) || - File::tryPossibleName( base + "DICT", dict ) || - File::tryPossibleName( base + "dict.DZ", dict ) - ) ) - throw exNoDictFile( ifo ); - - if ( !( - File::tryPossibleName( base + "syn", syn ) || - File::tryPossibleName( base + "syn.gz", syn ) || - File::tryPossibleName( base + "syn.dz", syn ) || - File::tryPossibleName( base + "SYN", syn ) || - File::tryPossibleName( base + "SYN.GZ", syn ) || - File::tryPossibleName( base + "SYN.DZ", syn ) - ) ) - syn.clear(); -} - -static void handleIdxSynFile( string const & fileName, - IndexedWords & indexedWords, - ChunkedStorage::Writer & chunks, - vector< uint32_t > * articleOffsets, - bool isSynFile ) -{ - gzFile stardictIdx = gd_gzopen( fileName.c_str() ); - if ( !stardictIdx ) - throw exCantReadFile( fileName ); - - vector< char > image; - - for( ; ; ) - { - size_t oldSize = image.size(); - - image.resize( oldSize + 65536 ); - - int rd = gzread( stardictIdx, &image.front() + oldSize, 65536 ); - - if ( rd < 0 ) - { - gzclose( stardictIdx ); - throw exCantReadFile( fileName ); - } - - if ( rd != 65536 ) - { - image.resize( oldSize + rd + 1 ); - break; - } - } - gzclose( stardictIdx ); - - // We append one zero byte to catch runaway string at the end, if any - - image.back() = 0; - - // Now parse it - - for( char const * ptr = &image.front(); ptr != &image.back(); ) - { - size_t wordLen = strlen( ptr ); - - if ( ptr + wordLen + 1 + ( isSynFile ? sizeof( uint32_t ) : - sizeof( uint32_t ) * 2 ) > - &image.back() ) - { - GD_FDPRINTF( stderr, "Warning: sudden end of file %s\n", fileName.c_str() ); - break; - } - - char const * word = ptr; - - ptr += wordLen + 1; - - uint32_t offset; - - if( strstr( word, "&#" ) ) - { - // Decode some html-coded symbols in headword - string unescapedWord = Html::unescapeUtf8( word ); - strncpy( (char *)word, unescapedWord.c_str(), wordLen ); - wordLen = strlen( word ); - } - - if ( !isSynFile ) - { - // We're processing the .idx file - uint32_t articleOffset, articleSize; - - memcpy( &articleOffset, ptr, sizeof( uint32_t ) ); - ptr += sizeof( uint32_t ); - memcpy( &articleSize, ptr, sizeof( uint32_t ) ); - ptr += sizeof( uint32_t ); - - articleOffset = ntohl( articleOffset ); - articleSize = ntohl( articleSize ); - - // Create an entry for the article in the chunked storage - - offset = chunks.startNewBlock(); - - if ( articleOffsets ) - articleOffsets->push_back( offset ); - - chunks.addToBlock( &articleOffset, sizeof( uint32_t ) ); - chunks.addToBlock( &articleSize, sizeof( uint32_t ) ); - chunks.addToBlock( word, wordLen + 1 ); - } - else - { - // We're processing the .syn file - uint32_t offsetInIndex; - - memcpy( &offsetInIndex, ptr, sizeof( uint32_t ) ); - ptr += sizeof( uint32_t ); - - offsetInIndex = ntohl( offsetInIndex ); - - if ( offsetInIndex >= articleOffsets->size() ) - throw exIncorrectOffset( fileName ); - - offset = (*articleOffsets)[ offsetInIndex ]; - - // Some StarDict dictionaries are in fact badly converted Babylon ones. - // They contain a lot of superfluous slashed entries with dollar signs. - // We try to filter them out here, since those entries become much more - // apparent in GoldenDict than they were in StarDict because of - // punctuation folding. Hopefully there are not a whole lot of valid - // synonyms which really start from slash and contain dollar signs, or - // end with dollar and contain slashes. - if ( *word == '/' ) - { - if ( strchr( word, '$' ) ) - continue; // Skip this entry - } - else - if ( wordLen && word[ wordLen - 1 ] == '$' ) - { - if ( strchr( word, '/' ) ) - continue; // Skip this entry - } - } - - // Insert new entry into an index - - indexedWords.addWord( Utf8::decode( word ), offset ); - } - - GD_DPRINTF( "%u entires made\n", (unsigned) indexedWords.size() ); -} - - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - if ( i->size() < 4 || - strcasecmp( i->c_str() + ( i->size() - 4 ), ".ifo" ) != 0 ) - continue; - - try - { - vector< string > dictFiles( 1, *i ); - - string idxFileName, dictFileName, synFileName; - - findCorrespondingFiles( *i, idxFileName, dictFileName, synFileName ); - - dictFiles.push_back( idxFileName ); - dictFiles.push_back( dictFileName ); - - if ( synFileName.size() ) - dictFiles.push_back( synFileName ); - - // See if there's a zip file with resources present. If so, include it. - - string zipFileName; - string baseName = FsEncoding::dirname( idxFileName ) + FsEncoding::separator(); - - if ( File::tryPossibleName( baseName + "res.zip", zipFileName ) || - File::tryPossibleName( baseName + "RES.ZIP", zipFileName ) || - File::tryPossibleName( baseName + "res" + FsEncoding::separator() + "res.zip", zipFileName ) ) - dictFiles.push_back( zipFileName ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - // Building the index - - File::Class ifoFile( *i, "r" ); - - Ifo ifo( ifoFile ); - - gdDebug( "Stardict: Building the index for dictionary: %s\n", ifo.bookname.c_str() ); - - if ( ifo.idxoffsetbits == 64 ) - throw ex64BitsNotSupported(); - - if ( ifo.dicttype.size() ) - throw exDicttypeNotSupported(); - - if( synFileName.empty() ) - { - if ( ifo.synwordcount ) - { - GD_DPRINTF( "Warning: dictionary has synwordcount specified, but no " - "corresponding .syn file was found\n" ); - ifo.synwordcount = 0; // Pretend it wasn't there - } - } - else - if ( !ifo.synwordcount ) - { - GD_DPRINTF( "Warning: ignoring .syn file %s, since there's no synwordcount in .ifo specified\n", - synFileName.c_str() ); - } - - - GD_DPRINTF( "bookname = %s\n", ifo.bookname.c_str() ); - GD_DPRINTF( "wordcount = %u\n", ifo.wordcount ); - - initializing.indexingDictionary( ifo.bookname ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - idx.write( ifo.bookname.data(), ifo.bookname.size() ); - idx.write( ifo.sametypesequence.data(), ifo.sametypesequence.size() ); - - IndexedWords indexedWords; - - ChunkedStorage::Writer chunks( idx ); - - // Load indices - if ( !ifo.synwordcount ) - handleIdxSynFile( idxFileName, indexedWords, chunks, 0, false ); - else - { - vector< uint32_t > articleOffsets; - - articleOffsets.reserve( ifo.wordcount ); - - handleIdxSynFile( idxFileName, indexedWords, chunks, &articleOffsets, - false ); - - handleIdxSynFile( synFileName, indexedWords, chunks, &articleOffsets, - true ); - } - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.wordCount = ifo.wordcount; - idxHeader.synWordCount = ifo.synwordcount; - idxHeader.bookNameSize = ifo.bookname.size(); - idxHeader.sameTypeSequenceSize = ifo.sametypesequence.size(); - - // read languages - QPair langs = - LangCoder::findIdsForFilename( QString::fromStdString( dictFileName ) ); - - // if no languages found, try dictionary's name - if ( langs.first == 0 || langs.second == 0 ) - { - langs = - LangCoder::findIdsForFilename( QString::fromStdString( ifo.bookname ) ); - } - - idxHeader.langFrom = langs.first; - idxHeader.langTo = langs.second; - - // If there was a zip file, index it too - - if ( zipFileName.size() ) - { - GD_DPRINTF( "Indexing zip file\n" ); - - idxHeader.hasZipFile = 1; - - IndexedWords zipFileNames; - IndexedZip zipFile; - if( zipFile.openZipFile( QDir::fromNativeSeparators( - FsEncoding::decode( zipFileName.c_str() ) ) ) ) - zipFile.indexFile( zipFileNames ); - - if( !zipFileNames.empty() ) - { - // Build the resulting zip file index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( zipFileNames, idx ); - - idxHeader.zipIndexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.zipIndexRootOffset = idxInfo.rootOffset; - } - else - { - // Bad zip file -- no index (though the mark that we have one - // remains) - idxHeader.zipIndexBtreeMaxElements = 0; - idxHeader.zipIndexRootOffset = 0; - } - } - else - idxHeader.hasZipFile = 0; - - // That concludes it. Update the header. - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - - dictionaries.push_back( new StardictDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Stardict dictionary initializing failed: %s, error: %s\n", - i->c_str(), e.what() ); - } - } - - return dictionaries; -} - - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stardict.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/stardict.hh deleted file mode 100644 index 052c8d889d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stardict.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __STARTDICT_HH_INCLUDED__ -#define __STARTDICT_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for the Stardict (ifo+dict+idx+syn) dictionaries. -namespace Stardict { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stylescombobox.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/stylescombobox.cc deleted file mode 100644 index 93fd577ccd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stylescombobox.cc +++ /dev/null @@ -1,47 +0,0 @@ -/* Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "stylescombobox.hh" -#include "config.hh" -#include - -StylesComboBox::StylesComboBox( QWidget * parent ): - QComboBox( parent ) -{ - fill(); - setVisible( count() > 1 ); -} - -void StylesComboBox::fill() -{ - clear(); - addItem( tr( "None" ) ); - QString stylesDir = Config::getStylesDir(); - if( !stylesDir.isEmpty() ) - { - QDir dir( stylesDir ); - QStringList styles = dir.entryList( QDir::Dirs | QDir::NoDotAndDotDot, QDir::LocaleAware ); - addItems( styles ); - } -} - -void StylesComboBox::setCurrentStyle( QString const & style ) -{ - int nom = 0; - if( !style.isEmpty() ) - { - for( int i = 1; i < count(); i++ ) - if( style.compare( itemText( i ) ) == 0 ) - { - nom = i; - break; - } - } - setCurrentIndex( nom ); -} - -QString StylesComboBox::getCurrentStyle() const -{ - if( currentIndex() == 0 ) - return QString(); - return itemText( currentIndex() ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stylescombobox.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/stylescombobox.hh deleted file mode 100644 index 853ef69870..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/stylescombobox.hh +++ /dev/null @@ -1,30 +0,0 @@ -/* Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __STYLESCOMBOBOX_HH_INCLUDED__ -#define __STYLESCOMBOBOX_HH_INCLUDED__ - -#include -#include - -/// This is a combo box which is for choosing the add-on styles -class StylesComboBox : public QComboBox -{ - Q_OBJECT - -public: - - StylesComboBox( QWidget * parent ); - - /// Fills combo-box with the given groups - void fill(); - - /// Chooses the given style in the combobox. If there's no such style, - /// set to "None". - void setCurrentStyle( QString const & style ); - - /// Returns current style. - QString getCurrentStyle() const; - -}; - -#endif // __STYLESCOMBOBOX_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/termination.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/termination.cc deleted file mode 100644 index 6aec0b12cc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/termination.cc +++ /dev/null @@ -1,167 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "termination.hh" -#include -#include - -#ifndef _MSC_VER -#include -#endif - -#include - -#ifndef __WIN32 -#include -#endif - -#include -#include - -#include - -#include - -using std::string; - -static void termHandler() -{ - if( logFile.isOpen() ) - logFile.close(); - - std::string message( "GoldenDict has crashed with an unexpected exception\n\n" ); - - int status; - char * function = 0; - size_t functionLength = 0; - -#ifdef _MSC_VER - std::type_info * ti = 0; -#else - std::type_info * ti = __cxxabiv1::__cxa_current_exception_type(); -#endif - - if ( ti ) - { - char const * name = ti->name(); - -#ifdef _MSC_VER - char * ret = 0; - // avoid 'unused' warnings - (void) status; - (void) functionLength; -#else - char * ret = abi::__cxa_demangle( name, function, &functionLength, &status ); -#endif - - if ( ret ) - { - function = ret; - name = function; - } - - message += "Exception: "; - message += name; - message += '\n'; - - try - { - throw; - } - catch( std::exception & e ) - { - message += "Message: "; - - message += e.what(); - - message += '\n'; - } - catch( ... ) - { - } - } - else - { - message += "terminate() called without active exception\n"; - } - -#ifndef __WIN32 - - message += "\nBacktrace:\n"; - - const size_t maxDepth = 200; - size_t stackDepth; - void * stackAddrs[ maxDepth ]; - char ** stackStrings; - - stackDepth = backtrace( stackAddrs, maxDepth ); - stackStrings = backtrace_symbols( stackAddrs, stackDepth ); - - for (size_t i = 1; i < stackDepth; i++) - { - char * begin = 0, * end = 0; - - for (char *j = stackStrings[i]; *j; ++j) - { - if (*j == '(') - begin = j + 1; - else if ( begin && ( *j == '+' || *j == ')' ) ) - { - end = j; - break; - } - } - - string line; - - if ( end ) - { - char endSymbol = *end; - - *end = 0; - - char * ret = abi::__cxa_demangle( begin, function, &functionLength, &status ); - - *end = endSymbol; - - if ( ret ) - { - function = ret; - - line = string( stackStrings[ i ], begin ); - line += function; - line += string( end ); - } - } - - message += " "; - message += line.size() ? line.c_str() : stackStrings[ i ]; - message += '\n'; - } - -#endif - - QTemporaryFile file; - - if ( file.open() ) - { - file.setAutoRemove( false ); - file.write( message.data(), message.size() ); - - QStringList args; - - args << "--show-error-file"; - args << file.fileName(); - - file.close(); - - QProcess::execute( QCoreApplication::applicationFilePath(), args ); - - abort(); - } -} - -void installTerminationHandler() -{ - std::set_terminate( termHandler ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/termination.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/termination.hh deleted file mode 100644 index 020a3ec732..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/termination.hh +++ /dev/null @@ -1,15 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef TERMINATION_HH -#define TERMINATION_HH - -#include - -extern QFile logFile; - -// Installs the termination handler which attempts to pop Qt's dialog showing -// the exception and backtrace, and then aborts. -void installTerminationHandler(); - -#endif // TERMINATION_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.cc deleted file mode 100644 index 21500658b3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.cc +++ /dev/null @@ -1,397 +0,0 @@ -/* This file is (c) 2013 Timon Wong - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "texttospeechsource.hh" - -#include - -TextToSpeechSource::TextToSpeechSource( QWidget * parent, - Config::VoiceEngines voiceEngines ): - QWidget( parent ), - voiceEnginesModel( this, voiceEngines ) -{ - ui.setupUi( this ); - - SpeechClient::Engines engines = SpeechClient::availableEngines(); - - ui.selectedVoiceEngines->setTabKeyNavigation( true ); - ui.selectedVoiceEngines->setModel( &voiceEnginesModel ); - ui.selectedVoiceEngines->hideColumn( VoiceEnginesModel::kColumnEngineId ); - fitSelectedVoiceEnginesColumns(); - ui.selectedVoiceEngines->setItemDelegateForColumn( VoiceEnginesModel::kColumnEngineName, - new VoiceEngineItemDelegate( engines, this ) ); - - foreach ( SpeechClient::Engine engine, engines ) - { - ui.availableVoiceEngines->addItem( engine.name, engine.id ); - } - - if( voiceEngines.count() > 0 ) - { - QModelIndex const &idx = ui.selectedVoiceEngines->model()->index( 0, 0 ); - if( idx.isValid() ) - ui.selectedVoiceEngines->setCurrentIndex( idx ); - } - - adjustSliders(); - - connect( ui.volumeSlider, SIGNAL( valueChanged( int ) ), - this, SLOT( slidersChanged() ) ); - connect( ui.rateSlider, SIGNAL( valueChanged( int ) ), - this, SLOT( slidersChanged() ) ); - connect( ui.selectedVoiceEngines->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), - this, SLOT( selectionChanged() ) ); -} - -void TextToSpeechSource::slidersChanged() -{ - if( ui.selectedVoiceEngines->selectionModel()->hasSelection() ) - voiceEnginesModel.setEngineParams( ui.selectedVoiceEngines->currentIndex(), - ui.volumeSlider->value(), - ui.rateSlider->value()) ; -} - -void TextToSpeechSource::on_addVoiceEngine_clicked() -{ - if ( ui.availableVoiceEngines->count() == 0 ) - { - QMessageBox::information( this, tr( "No TTS voice available" ), - tr( "Cannot find available TTS voice.
" - "Please make sure that at least one TTS engine installed on your computer already." ) ); - return; - } - - int idx = ui.availableVoiceEngines->currentIndex(); - if( idx >= 0 ) - { - QString name = ui.availableVoiceEngines->itemText( idx ); - QString id = ui.availableVoiceEngines->itemData( idx ).toString(); - voiceEnginesModel.addNewVoiceEngine( id, name, ui.volumeSlider->value(), ui.rateSlider->value() ); - fitSelectedVoiceEnginesColumns(); - } -} - -void TextToSpeechSource::on_removeVoiceEngine_clicked() -{ - QModelIndex current = ui.selectedVoiceEngines->currentIndex(); - - if ( current.isValid() && - QMessageBox::question( this, tr( "Confirm removal" ), - tr( "Remove voice engine %1 from the list?" ).arg( - voiceEnginesModel.getCurrentVoiceEngines()[ current.row() ].name ), - QMessageBox::Ok, - QMessageBox::Cancel ) == QMessageBox::Ok ) - { - voiceEnginesModel.removeVoiceEngine( current.row() ); - } -} - -void TextToSpeechSource::on_previewVoice_clicked() -{ - int idx = ui.availableVoiceEngines->currentIndex(); - if ( idx < 0 ) - return; - - QString engineId = ui.availableVoiceEngines->itemData( idx ).toString(); - QString name = ui.availableVoiceEngines->itemText( idx ); - QString text = ui.previewText->text(); - int volume = ui.volumeSlider->value(); - int rate = ui.rateSlider->value(); - - SpeechClient * speechClient = new SpeechClient( Config::VoiceEngine( engineId, name, volume, rate ), this ); - - connect( speechClient, SIGNAL( started( bool ) ), ui.previewVoice, SLOT( setDisabled( bool ) ) ); - connect( speechClient, SIGNAL( finished() ), this, SLOT( previewVoiceFinished() ) ); - connect( speechClient, SIGNAL( finished() ), speechClient, SLOT( deleteLater() ) ); - speechClient->tell( text ); -} - -void TextToSpeechSource::previewVoiceFinished() -{ - ui.previewVoice->setDisabled( false ); -} - -void TextToSpeechSource::fitSelectedVoiceEnginesColumns() -{ - ui.selectedVoiceEngines->resizeColumnToContents( VoiceEnginesModel::kColumnEnabled ); - ui.selectedVoiceEngines->resizeColumnToContents( VoiceEnginesModel::kColumnEngineName ); - ui.selectedVoiceEngines->resizeColumnToContents( VoiceEnginesModel::kColumnIcon ); -} - -void TextToSpeechSource::adjustSliders() -{ - QModelIndex const & index = ui.selectedVoiceEngines->currentIndex(); - if ( index.isValid() ) - { - Config::VoiceEngines const &engines = voiceEnginesModel.getCurrentVoiceEngines(); - ui.volumeSlider->setValue( engines[ index.row() ].volume ); - ui.rateSlider->setValue( engines[ index.row() ].rate ); - return; - } - ui.volumeSlider->setValue( 50 ); - ui.rateSlider->setValue( 50 ); -} - -void TextToSpeechSource::selectionChanged() -{ - disconnect( ui.volumeSlider, SIGNAL( valueChanged( int ) ), - this, SLOT( slidersChanged() ) ); - disconnect( ui.rateSlider, SIGNAL( valueChanged( int ) ), - this, SLOT( slidersChanged() ) ); - - adjustSliders(); - - connect( ui.volumeSlider, SIGNAL( valueChanged( int ) ), - this, SLOT( slidersChanged() ) ); - connect( ui.rateSlider, SIGNAL( valueChanged( int ) ), - this, SLOT( slidersChanged() ) ); -} - -VoiceEnginesModel::VoiceEnginesModel( QWidget * parent, - Config::VoiceEngines const & voiceEngines ): - QAbstractItemModel( parent ), voiceEngines( voiceEngines ) -{ -} - -void VoiceEnginesModel::removeVoiceEngine( int index ) -{ - beginRemoveRows( QModelIndex(), index, index ); - voiceEngines.erase( voiceEngines.begin() + index ); - endRemoveRows(); -} - -void VoiceEnginesModel::addNewVoiceEngine( QString const & id, QString const & name, - int volume, int rate ) -{ - if ( id.isEmpty() || name.isEmpty() ) - return; - - Config::VoiceEngine v; - v.enabled = true; - v.id = id; - v.name = name; - v.volume = volume; - v.rate = rate; - - beginInsertRows( QModelIndex(), voiceEngines.size(), voiceEngines.size() ); - voiceEngines.push_back( v ); - endInsertRows(); -} - -QModelIndex VoiceEnginesModel::index( int row, int column, QModelIndex const & /*parent*/ ) const -{ - return createIndex( row, column ); -} - -QModelIndex VoiceEnginesModel::parent( QModelIndex const & /*parent*/ ) const -{ - return QModelIndex(); -} - -Qt::ItemFlags VoiceEnginesModel::flags( QModelIndex const & index ) const -{ - Qt::ItemFlags result = QAbstractItemModel::flags( index ); - - if ( index.isValid() ) - { - switch ( index.column() ) - { - case kColumnEnabled: - result |= Qt::ItemIsUserCheckable; - break; - case kColumnEngineName: - case kColumnIcon: - result |= Qt::ItemIsEditable; - break; - } - } - - return result; -} - -int VoiceEnginesModel::rowCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - return voiceEngines.size(); -} - -int VoiceEnginesModel::columnCount( QModelIndex const & parent ) const -{ - if ( parent.isValid() ) - return 0; - return kColumnCount; -} - -QVariant VoiceEnginesModel::headerData( int section, Qt::Orientation /*orientation*/, int role ) const -{ - if ( role == Qt::DisplayRole ) - { - switch ( section ) - { - case kColumnEnabled: - return tr( "Enabled" ); - case kColumnEngineName: - return tr( "Name" ); - case kColumnEngineId: - return tr( "Id" ); - case kColumnIcon: - return tr( "Icon" ); - } - } - - return QVariant(); -} - -QVariant VoiceEnginesModel::data( QModelIndex const & index, int role ) const -{ - if ( index.row() >= voiceEngines.size() ) - return QVariant(); - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - { - switch ( index.column() ) - { - case kColumnEngineId: - return voiceEngines[ index.row() ].id; - case kColumnEngineName: - return voiceEngines[ index.row() ].name; - case kColumnIcon: - return voiceEngines[ index.row() ].iconFilename; - default: - return QVariant(); - } - } - - if ( role == Qt::CheckStateRole && index.column() == kColumnEnabled ) - return voiceEngines[ index.row() ].enabled ? Qt::Checked : Qt::Unchecked; - - return QVariant(); -} - -bool VoiceEnginesModel::setData( QModelIndex const & index, const QVariant & value, - int role ) -{ - if ( index.row() >= voiceEngines.size() ) - return false; - - if ( role == Qt::CheckStateRole && index.column() == kColumnEnabled ) - { - voiceEngines[ index.row() ].enabled = !voiceEngines[ index.row() ].enabled; - dataChanged( index, index ); - return true; - } - - if ( role == Qt::DisplayRole || role == Qt::EditRole ) - { - switch ( index.column() ) - { - case kColumnEngineId: - voiceEngines[ index.row() ].id = value.toString(); - dataChanged( index, index ); - return true; - case kColumnEngineName: - voiceEngines[ index.row() ].name = value.toString(); - dataChanged( index, index ); - return true; - case kColumnIcon: - voiceEngines[ index.row() ].iconFilename = value.toString(); - dataChanged( index, index ); - return true; - default: - return false; - } - } - - return false; -} - -void VoiceEnginesModel::setEngineParams( QModelIndex idx, int volume, int rate ) -{ - if ( idx.isValid() ) - { - voiceEngines[ idx.row() ].volume = volume; - voiceEngines[ idx.row() ].rate = rate; - } -} - -VoiceEngineEditor::VoiceEngineEditor( SpeechClient::Engines const & engines, QWidget * parent ): - QComboBox( parent ) -{ - foreach ( SpeechClient::Engine engine, engines ) - { - addItem( engine.name, engine.id ); - } -} - -QString VoiceEngineEditor::engineName() const -{ - int idx = currentIndex(); - if ( idx < 0 ) - return ""; - return itemText( idx ); -} - -QString VoiceEngineEditor::engineId() const -{ - int idx = currentIndex(); - if ( idx < 0 ) - return ""; - return itemData( idx ).toString(); -} - -void VoiceEngineEditor::setEngineId( QString const & engineId ) -{ - // Find index for the id - int idx = -1; - for ( int i = 0; i < count(); ++i ) - { - if ( engineId == itemData( i ).toString() ) - { - idx = i; - break; - } - } - setCurrentIndex( idx ); -} - -VoiceEngineItemDelegate::VoiceEngineItemDelegate( SpeechClient::Engines const & engines, QObject * parent ) : - QStyledItemDelegate( parent ), - engines( engines ) -{ -} - -QWidget * VoiceEngineItemDelegate::createEditor( QWidget * parent, - QStyleOptionViewItem const & option, - QModelIndex const & index ) const -{ - if ( index.column() != VoiceEnginesModel::kColumnEngineName ) - return QStyledItemDelegate::createEditor( parent, option, index ); - return new VoiceEngineEditor( engines, parent ); -} - -void VoiceEngineItemDelegate::setEditorData( QWidget * uncastedEditor, const QModelIndex & index ) const -{ - VoiceEngineEditor * editor = qobject_cast< VoiceEngineEditor * >( uncastedEditor ); - if ( !editor ) - return; - - int currentRow = index.row(); - QModelIndex engineIdIndex = index.sibling( currentRow, VoiceEnginesModel::kColumnEngineId ); - QString engineId = index.model()->data( engineIdIndex ).toString(); - editor->setEngineId( engineId ); -} - -void VoiceEngineItemDelegate::setModelData( QWidget * uncastedEditor, QAbstractItemModel * model, - const QModelIndex & index ) const -{ - VoiceEngineEditor * editor = qobject_cast< VoiceEngineEditor * >( uncastedEditor ); - if ( !editor ) - return; - - int currentRow = index.row(); - QModelIndex engineIdIndex = index.sibling( currentRow, VoiceEnginesModel::kColumnEngineId ); - QModelIndex engineNameIndex = index.sibling( currentRow, VoiceEnginesModel::kColumnEngineName ); - model->setData( engineIdIndex, editor->engineId() ); - model->setData( engineNameIndex, editor->engineName() ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.hh deleted file mode 100644 index aea4fdc6fc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.hh +++ /dev/null @@ -1,110 +0,0 @@ -/* This file is (c) 2013 Timon Wong - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __TEXTTOSPEECHSOURCE_HH_INCLUDED__ -#define __TEXTTOSPEECHSOURCE_HH_INCLUDED__ - -#include "ui_texttospeechsource.h" -#include "config.hh" -#include "speechclient.hh" - -#include -#include - -/// A model to be projected into the text to speech view, according to Qt's MVC model -class VoiceEnginesModel: public QAbstractItemModel -{ - Q_OBJECT - -public: - - enum { - kColumnEnabled = 0, - kColumnEngineId, - kColumnEngineName, - kColumnIcon, - kColumnCount - }; - - VoiceEnginesModel( QWidget * parent, Config::VoiceEngines const & voiceEngines ); - - void removeVoiceEngine( int index ); - void addNewVoiceEngine( QString const & id, QString const & name, - int volume, int rate ); - - Config::VoiceEngines const & getCurrentVoiceEngines() const - { return voiceEngines; } - void setEngineParams( QModelIndex idx, int volume, int rate ); - - QModelIndex index( int row, int column, QModelIndex const & parent ) const; - QModelIndex parent( QModelIndex const & parent ) const; - Qt::ItemFlags flags( QModelIndex const & index ) const; - int rowCount( QModelIndex const & parent ) const; - int columnCount( QModelIndex const & parent ) const; - QVariant headerData( int section, Qt::Orientation orientation, int role ) const; - QVariant data( QModelIndex const & index, int role ) const; - bool setData( QModelIndex const & index, const QVariant & value, int role ); - -private: - - Config::VoiceEngines voiceEngines; -}; - -class VoiceEngineEditor: public QComboBox -{ - Q_OBJECT - -public: - VoiceEngineEditor( SpeechClient::Engines const & engines, QWidget * parent = 0 ); - -public: - QString engineName() const; - QString engineId() const; - void setEngineId( QString const & engineId ); -}; - -class VoiceEngineItemDelegate: public QStyledItemDelegate -{ - Q_OBJECT - -public: - VoiceEngineItemDelegate( SpeechClient::Engines const & engines, QObject * parent = 0 ); - - virtual QWidget * createEditor( QWidget *parent, - QStyleOptionViewItem const & option, - QModelIndex const & index ) const; - virtual void setEditorData( QWidget *uncastedEditor, const QModelIndex & index ) const; - virtual void setModelData( QWidget *uncastedEditor, QAbstractItemModel * model, - const QModelIndex & index ) const; - -private: - SpeechClient::Engines engines; -}; - -class TextToSpeechSource: public QWidget -{ - Q_OBJECT - -public: - TextToSpeechSource( QWidget * parent, Config::VoiceEngines voiceEngines ); - - const VoiceEnginesModel & getVoiceEnginesModel() const - { return voiceEnginesModel; } - -private slots: - void on_addVoiceEngine_clicked(); - void on_removeVoiceEngine_clicked(); - void on_previewVoice_clicked(); - void previewVoiceFinished(); - void slidersChanged(); - void selectionChanged(); - -private: - Ui::TextToSpeechSource ui; - VoiceEnginesModel voiceEnginesModel; - - void fitSelectedVoiceEnginesColumns(); - void adjustSliders(); -}; - -#endif // __TEXTTOSPEECHSOURCE_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.ui b/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.ui deleted file mode 100644 index 9af0daea55..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/texttospeechsource.ui +++ /dev/null @@ -1,250 +0,0 @@ - - - TextToSpeechSource - - - - 0 - 0 - 498 - 393 - - - - Form - - - - - - Qt::Vertical - - - - 20 - 17 - - - - - - - - Selected voice engines: - - - - - - - - - - - - - - - 80 - 16777215 - - - - &Add - - - - - - - &Remove - - - - - - - Qt::Vertical - - - - 20 - 18 - - - - - - - - - - - - Preferences - - - - - - Volume: - - - - - - - 100 - - - 50 - - - false - - - Qt::Horizontal - - - QSlider::TicksAbove - - - 10 - - - - - - - Rate: - - - - - - - 100 - - - 50 - - - false - - - Qt::Horizontal - - - QSlider::TicksAbove - - - 10 - - - - - - - - - - Preview - - - - - - - - - 0 - 0 - - - - Available voice engines: - - - - - - - - - - - - - 0 - 0 - - - - Text to be previewed: - - - - - - - Type text to be previewed here. - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - &Preview - - - - - - - - - - - - Qt::Vertical - - - - 20 - 10 - - - - - - - - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/tiff.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/tiff.cc deleted file mode 100644 index e3cb8bf5b1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/tiff.cc +++ /dev/null @@ -1,144 +0,0 @@ -/* This file is (c) 2014 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifdef MAKE_EXTRA_TIFF_HANDLER - -#include "tiff.hh" - -#if defined (Q_OS_MAC) || defined (Q_OS_WIN) -#include "tiff/tiff.h" -#include "tiff/tiffio.h" -#else -#include "tiff.h" -#include "tiffio.h" -#endif - -#include - -namespace GdTiff -{ - -tsize_t tiffReadProc( thandle_t fd, tdata_t buf, tsize_t size ) -{ - return static_cast< QIODevice * >( fd )->read( static_cast< char * >( buf ), size ); -} - -tsize_t tiffWriteProc( thandle_t fd, tdata_t buf, tsize_t size ) -{ -Q_UNUSED( fd ) -Q_UNUSED( buf ) -Q_UNUSED( size ) - return 0; -} - -toff_t tiffSeekProc( thandle_t fd, toff_t off, int whence ) -{ - QIODevice * device = static_cast< QIODevice * >( fd ); - switch (whence) { - case SEEK_SET: - device->seek( off ); - break; - case SEEK_CUR: - device->seek( device->pos() + off ); - break; - case SEEK_END: - device->seek( device->size() + off ); - break; - } - - return device->pos(); -} - -int tiffCloseProc( thandle_t fd ) -{ -Q_UNUSED( fd ) - return 0; -} - -toff_t tiffSizeProc( thandle_t fd ) -{ - return static_cast< QIODevice * >( fd )->size(); -} - -int tiffMapProc( thandle_t fd, tdata_t * pbase, toff_t * psize ) -{ -Q_UNUSED( fd ) -Q_UNUSED( pbase ) -Q_UNUSED( psize ) - return 0; -} - -void tiffUnmapProc( thandle_t fd, tdata_t base, toff_t size ) -{ -Q_UNUSED( fd ) -Q_UNUSED( base ) -Q_UNUSED( size ) -} - - -bool tiffToQImage( const char * data, int size, QImage & image ) -{ - QByteArray arr = QByteArray::fromRawData( data, size ); - QBuffer buf; - buf.setData( arr ); - buf.open( QIODevice::ReadOnly ); - - TIFF *const tiff = TIFFClientOpen( "foo", - "r", - &buf, - tiffReadProc, - tiffWriteProc, - tiffSeekProc, - tiffCloseProc, - tiffSizeProc, - tiffMapProc, - tiffUnmapProc ); - if( !tiff ) - return false; - - uint32 width, height; - if( !TIFFGetField( tiff, TIFFTAG_IMAGEWIDTH, &width ) - || !TIFFGetField( tiff, TIFFTAG_IMAGELENGTH, &height ) ) - { - TIFFClose( tiff ); - return false; - } - - uint16 bitPerSample; - if( !TIFFGetField( tiff, TIFFTAG_BITSPERSAMPLE, &bitPerSample ) ) - bitPerSample = 1; - - uint16 samplesPerPixel; // they may be e.g. grayscale with 2 samples per pixel - if( !TIFFGetField( tiff, TIFFTAG_SAMPLESPERPIXEL, &samplesPerPixel ) ) - samplesPerPixel = 1; - - if( bitPerSample == 1 && samplesPerPixel == 1 ) - { - QImage tiffImage( width, height, QImage::Format_Mono ); - - QVector colortable( 2 ); - colortable[0] = 0xffffffff; - colortable[1] = 0xff000000; - tiffImage.setColorTable( colortable ); - - for ( uint32 y = 0; y < height; ++y ) - { - if( TIFFReadScanline( tiff, tiffImage.scanLine( y ), y, 0 ) < 0 ) - { - TIFFClose( tiff ); - return false; - } - } - - image = tiffImage; - TIFFClose( tiff ); - return true; - } - - TIFFClose( tiff ); - return false; -} - -} // namespace - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/tiff.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/tiff.hh deleted file mode 100644 index 51a8dd404f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/tiff.hh +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __TIFF_HH_INCLUDED__ -#define __TIFF_HH_INCLUDED__ - -#ifdef MAKE_EXTRA_TIFF_HANDLER - -#include - -namespace GdTiff -{ - -// QImage don't handle TIFF files if TIFFTAG_PHOTOMETRIC is not set -// We will handle such 1-bit b/w images with default photometric - -bool tiffToQImage( const char * data, int size, QImage & image ); - -} - -#endif - -#endif // TIFF_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/translatebox.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/translatebox.cc deleted file mode 100644 index 19f3042d61..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/translatebox.cc +++ /dev/null @@ -1,307 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "translatebox.hh" - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace -{ -#define MAX_POPUP_ROWS 17 -} - -CompletionList::CompletionList(TranslateBox * parent) : WordList(parent), - translateBox(parent) -{ -#ifdef Q_OS_WIN - setWindowFlags(Qt::ToolTip); -#else - setParent( parent->window() ); - setAutoFillBackground( true ); -#endif - - setMaximumWidth(1000); - - connect(this, SIGNAL( activated( QModelIndex ) ), - this, SLOT( acceptCurrentEntry() ) ); - - connect(this, SIGNAL( itemClicked( QListWidgetItem * ) ), - this, SLOT( acceptCurrentEntry() ) ); - - translateBox->window()->installEventFilter(this); -} - -bool CompletionList::eventFilter( QObject * obj, QEvent * ev ) -{ - // when the main window is moved or resized, hide the word list suggestions - if ( ev->type() == QEvent::Move || ev->type() == QEvent::Resize ) - { - translateBox->setPopupEnabled( false ); - return false; - } - - return QWidget::eventFilter( obj, ev ); -} - -int CompletionList::preferredHeight() const -{ - const QSize itemSizeHint = itemDelegate()->sizeHint(viewOptions(), model()->index( 0, 0 ) ); - int rows = qMin( count(), MAX_POPUP_ROWS ); - - int scrollBarHeight = 0; - - bool hBarIsVisible = horizontalScrollBar()->maximum() > 0; - - if ( hBarIsVisible ) - scrollBarHeight += QApplication::style()->pixelMetric( QStyle::PM_ScrollBarExtent ); - - return rows == 0 ? 0 : itemSizeHint.height() * rows + frameWidth() * 2 + scrollBarHeight; -} - -bool CompletionList::acceptCurrentEntry() -{ - if (!isVisible()) - { - return false; - } - - const QModelIndex index = currentIndex(); - if ( !index.isValid() ) - { - return false; - } - - emit doubleClicked(index); - translateBox->setPopupEnabled( false ); - - return true; -} - -TranslateBox::TranslateBox(QWidget *parent) : QWidget(parent), - word_list(new CompletionList(this)), translate_line(new ExtLineEdit(this)), m_popupEnabled(false) -{ - // initially hidden - word_list->hide(); - - resize(200, 90); - QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); - sizePolicy.setHorizontalStretch(0); - sizePolicy.setVerticalStretch(0); - setSizePolicy(sizePolicy); - // setMinimumSize(QSize(800, 0)); - - setFocusProxy(translate_line); - translate_line->setObjectName("translateLine"); -#if QT_VERSION >= 0x040700 - translate_line->setPlaceholderText( tr( "Type a word or phrase to search dictionaries" ) ); -#endif - - word_list->setTranslateLine(translate_line); - - // completer = new QCompleter(m_completionList->model(), this); - // completer->setCaseSensitivity(Qt::CaseInsensitive); - // completer->setCompletionMode(QCompleter::InlineCompletion); - - QHBoxLayout *layout = new QHBoxLayout(this); - setLayout(layout); - layout->setMargin(0); - layout->addWidget(translate_line); - - QPixmap image(":/icons/system-search.png"); - translate_line->setButtonPixmap(ExtLineEdit::Left, image.scaled(18, 18, Qt::KeepAspectRatio, Qt::SmoothTransformation)); - // translate_line->setButtonToolTip(ExtLineEdit::Left, tr("Options")); - translate_line->setButtonVisible(ExtLineEdit::Left, true); - translate_line->setButtonFocusPolicy(ExtLineEdit::Left, Qt::ClickFocus); - - QPixmap right(":/icons/1downarrow.png"); - translate_line->setButtonPixmap(ExtLineEdit::Right, right); - translate_line->setButtonToolTip(ExtLineEdit::Right, tr("Drop-down")); - translate_line->setButtonVisible(ExtLineEdit::Right, true); - translate_line->setButtonFocusPolicy(ExtLineEdit::Right, Qt::NoFocus); - - translate_line->setFocusPolicy(Qt::ClickFocus); - - translate_line->installEventFilter( this ); - this->installEventFilter( this ); - - connect(translate_line, SIGNAL( textChanged( QString const & ) ), - this, SLOT( onTextEdit() ) ); - - connect(translate_line, SIGNAL( rightButtonClicked() ), - this, SLOT( rightButtonClicked() ) ); - - connect(word_list, SIGNAL( contentChanged() ), - this, SLOT( showPopup() ) ); -} - -bool TranslateBox::eventFilter(QObject *obj, QEvent *event) -{ - // hide the suggestions list when the window is not active - if ( event->type() == QEvent::WindowDeactivate ) - { - if (!word_list->isActiveWindow()) - { - setPopupEnabled( false ); - } - return false; - } - - if (obj == translate_line && event->type() == QEvent::KeyPress) { - QKeyEvent *keyEvent = static_cast(event); - switch (keyEvent->key()) { - case Qt::Key_Up: - case Qt::Key_Down: - case Qt::Key_PageUp: - case Qt::Key_PageDown: - if ( !word_list->isVisible() ) - { - setPopupEnabled( true ); - } - else - { - QApplication::sendEvent(word_list, event); - } - return true; - case Qt::Key_Enter: - case Qt::Key_Return: - return word_list->acceptCurrentEntry(); - case Qt::Key_Escape: - setPopupEnabled( false ); - return true; - case Qt::Key_Tab: - if ( !word_list->isVisible() ) - { - setPopupEnabled( true ); - } - else - { - QKeyEvent event( QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier ); - QApplication::sendEvent( word_list, &event ); - } - return true; - case Qt::Key_Backtab: - if ( !word_list->isVisible() ) - { - setPopupEnabled( true ); - } - else - { - QKeyEvent event( QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier ); - QApplication::sendEvent( word_list, &event ); - } - return true; - default: - break; - } - } else if (obj == translate_line && event->type() == QEvent::FocusOut) { -#if defined(Q_OS_WIN) - QFocusEvent *fev = static_cast(event); - if (fev->reason() != Qt::ActiveWindowFocusReason || - (fev->reason() == Qt::ActiveWindowFocusReason && !word_list->isActiveWindow())) -#endif - setPopupEnabled( false ); - } else if (obj == translate_line && event->type() == QEvent::FocusIn) { - // By default, focusing the traslate line does not show - // the popup window. - } else if (obj == this && event->type() == QEvent::ShortcutOverride) { - QKeyEvent *ke = static_cast(event); - if (ke->key() == Qt::Key_Escape && !ke->modifiers() && word_list->isVisible() ) { - event->accept(); - return true; - } - } - return QWidget::eventFilter(obj, event); -} - -void TranslateBox::setText( QString text, bool showPopup ) -{ - setPopupEnabled( showPopup ); - translate_line->setText( text ); -} - -void TranslateBox::setPopupEnabled( bool enable ) -{ - m_popupEnabled = enable; - showPopup(); -} - -void TranslateBox::setSizePolicy( QSizePolicy policy ) -{ - QWidget::setSizePolicy( policy ); - if ( translate_line ) - translate_line->setSizePolicy( policy ); -} - -void TranslateBox::showPopup() -{ - // completer->setCompletionPrefix( m_fileLineEdit->text() ); - // qDebug() << "COMPLETION:" << completer->currentCompletion(); - - if (translate_line->text().trimmed().isEmpty() || word_list->count() == 0) - { - // nothing to show - if (word_list->isVisible()) - { - word_list->hide(); - translate_line->setFocus(); - } - - return; - } - - if ( !m_popupEnabled ) - { - word_list->hide(); - return; - } - - int preferredHeight = word_list->preferredHeight(); - - QPoint origin( translate_line->x(), translate_line->y() + translate_line->height() ); - - if ( word_list->isWindow() ) - { - origin = mapToGlobal( origin ); - } - else - { - origin = mapTo( window(), origin ); - preferredHeight = qMin( translate_line->window()->height() - origin.y(), preferredHeight ); - } - - const QSize size(width(), preferredHeight); - const QRect rect( origin, size ); - - word_list->setGeometry(rect); - word_list->show(); - word_list->raise(); - translate_line->setFocus(); -} - -QLineEdit * TranslateBox::translateLine() -{ - return translate_line; -} - -WordList * TranslateBox::wordList() -{ - return word_list; -} - -void TranslateBox::rightButtonClicked() -{ - setPopupEnabled( !m_popupEnabled ); -} - -void TranslateBox::onTextEdit() -{ - if ( translate_line->hasFocus() ) - setPopupEnabled( true ); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/translatebox.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/translatebox.hh deleted file mode 100644 index 9b87830cc0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/translatebox.hh +++ /dev/null @@ -1,69 +0,0 @@ -/* This file is (c) 2012 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef TRANSLATEBOX_HH -#define TRANSLATEBOX_HH - -#include "extlineedit.hh" -#include "wordlist.hh" - -#include -#include -#include - -class TranslateBox; - -class CompletionList : public WordList -{ - Q_OBJECT - -public: - CompletionList(TranslateBox * parent); - int preferredHeight() const; - virtual void setTranslateLine(QLineEdit * line) - { - WordList::setTranslateLine( line ); - setFocusProxy( line ); - } - -public slots: - bool acceptCurrentEntry(); - -private: - virtual bool eventFilter( QObject *, QEvent * ); - TranslateBox * translateBox; -}; - -class TranslateBox : public QWidget -{ - Q_OBJECT - -public: - explicit TranslateBox(QWidget * parent = 0); - void setPlaceholderText(const QString &text); - QLineEdit * translateLine(); - WordList * wordList(); - void setText(QString text, bool showPopup=true); - void setSizePolicy(QSizePolicy policy); - inline void setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver) - { setSizePolicy(QSizePolicy(hor, ver)); } - -signals: - -public slots: - void setPopupEnabled(bool enable); - -private slots: - void showPopup(); - void rightButtonClicked(); - void onTextEdit(); - -private: - bool eventFilter(QObject *obj, QEvent *event); - CompletionList * word_list; - ExtLineEdit * translate_line; - bool m_popupEnabled; - // QCompleter * completer; // disabled for now -}; - -#endif // TRANSLATEBOX_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/transliteration.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/transliteration.cc deleted file mode 100644 index 55d562bb9c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/transliteration.cc +++ /dev/null @@ -1,143 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "transliteration.hh" -#include "utf8.hh" -#include "folding.hh" -#include "gddebug.hh" - -namespace Transliteration { - -using gd::wchar; - -BaseTransliterationDictionary::BaseTransliterationDictionary( string const & id, - string const & name_, - QIcon icon_, - bool caseSensitive_ ): - Dictionary::Class( id, vector< string >() ), - name( name_ ), - caseSensitive( caseSensitive_ ) -{ - dictionaryIcon = dictionaryNativeIcon = icon_; - dictionaryIconLoaded = true; -} - -string BaseTransliterationDictionary::getName() throw() -{ return name; } - -map< Dictionary::Property, string > BaseTransliterationDictionary::getProperties() throw() -{ return map< Dictionary::Property, string >(); } - -unsigned long BaseTransliterationDictionary::getArticleCount() throw() -{ return 0; } - -unsigned long BaseTransliterationDictionary::getWordCount() throw() -{ return 0; } - -sptr< Dictionary::WordSearchRequest > BaseTransliterationDictionary::prefixMatch( wstring const &, - unsigned long ) throw( std::exception ) -{ return new Dictionary::WordSearchRequestInstant(); } - -sptr< Dictionary::DataRequest > BaseTransliterationDictionary::getArticle( wstring const &, - vector< wstring > const &, - wstring const & ) - throw( std::exception ) -{ return new Dictionary::DataRequestInstant( false ); } - -sptr< Dictionary::WordSearchRequest > BaseTransliterationDictionary::findHeadwordsForSynonym( wstring const & str ) - throw( std::exception ) -{ - sptr< Dictionary::WordSearchRequestInstant > result = new Dictionary::WordSearchRequestInstant(); - - vector< wstring > alts = getAlternateWritings( str ); - - GD_DPRINTF( "alts = %u\n", (unsigned) alts.size() ); - - for( unsigned x = 0; x < alts.size(); ++x ) - result->getMatches().push_back( alts[ x ] ); - - return result; -} - - -void Table::ins( char const * from, char const * to ) -{ - wstring fr = Utf8::decode( std::string( from ) ); - - if ( fr.size() > maxEntrySize ) - maxEntrySize = fr.size(); - - insert( std::pair< wstring, wstring >( fr, - Utf8::decode( std::string( to ) ) ) ); -} - - -TransliterationDictionary::TransliterationDictionary( string const & id, - string const & name_, - QIcon icon_, - Table const & table_, - bool caseSensitive_ ): - BaseTransliterationDictionary(id, name_, icon_, caseSensitive_), - table( table_ ) -{ -} - -vector< wstring > TransliterationDictionary::getAlternateWritings( wstring const & str ) - throw() -{ - vector< wstring > results; - - wstring result, folded; - wstring const * target; - - if ( caseSensitive ) - { - // Don't do any transform -- the transliteration is case-sensitive - target = &str; - } - else - { - folded = Folding::applySimpleCaseOnly( str ); - target = &folded; - } - - wchar const * ptr = target->c_str(); - size_t left = target->size(); - - Table::const_iterator i; - - while( left ) - { - unsigned x; - - for( x = table.getMaxEntrySize(); x >= 1; --x ) - { - if ( left >= x ) - { - i = table.find( wstring( ptr, x ) ); - - if ( i != table.end() ) - { - result.append( i->second ); - ptr += x; - left -= x; - break; - } - } - } - - if ( !x ) - { - // No matches -- add this char as it is - result.push_back( *ptr++ ); - --left; - } - } - - if ( result != *target ) - results.push_back( result ); - - return results; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/transliteration.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/transliteration.hh deleted file mode 100644 index 8c1c1d078d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/transliteration.hh +++ /dev/null @@ -1,93 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __TRANSLITERATION_HH_INCLUDED__ -#define __TRANSLITERATION_HH_INCLUDED__ - -#include "dictionary.hh" -#include - -namespace Transliteration { - -using std::map; -using gd::wstring; -using std::string; -using std::vector; - - -/// This is a base dictionary class for simple transliteratons -class BaseTransliterationDictionary: public Dictionary::Class -{ - string name; - -protected: - bool caseSensitive; - -public: - - BaseTransliterationDictionary( string const & id, string const & name, - QIcon icon, bool caseSensitive = true ); - - virtual string getName() throw(); - - virtual map< Dictionary::Property, string > getProperties() throw(); - - virtual unsigned long getArticleCount() throw(); - - virtual unsigned long getWordCount() throw(); - - virtual vector< wstring > getAlternateWritings( wstring const & ) - throw() = 0; - - virtual sptr< Dictionary::WordSearchRequest > findHeadwordsForSynonym( wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::WordSearchRequest > prefixMatch( wstring const &, - unsigned long ) throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const &, - wstring const & ) - throw( std::exception ); -}; - - -class Table: public map< wstring, wstring > -{ - unsigned maxEntrySize; - -public: - - Table(): maxEntrySize( 0 ) - {} - - unsigned getMaxEntrySize() const - { return maxEntrySize; } - -protected: - - /// Inserts new entry into index. from and to are UTF8-encoded strings. - /// Also updates maxEntrySize. - void ins( char const * from, char const * to ); -}; - - -/// A base dictionary class for table based transliteratons -class TransliterationDictionary: public BaseTransliterationDictionary -{ - Table const & table; - -public: - - TransliterationDictionary( string const & id, string const & name, - QIcon icon, - Table const & table, - bool caseSensitive = true ); - - virtual vector< wstring > getAlternateWritings( wstring const & ) - throw(); -}; - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ufile.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ufile.cc deleted file mode 100644 index c78079ee6f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ufile.cc +++ /dev/null @@ -1,41 +0,0 @@ -#ifdef __WIN32 - -#include -#include -#include -#include - -#include "ufile.hh" - -FILE *gd_fopen( const char *filename, const char *mode) -{ - wchar_t wname[16384], wmode[32]; - - if( MultiByteToWideChar( CP_UTF8, 0, filename, -1, wname, 16384 ) == 0 ) - return NULL; - if( MultiByteToWideChar( CP_UTF8, 0, mode, -1, wmode, 32 ) == 0 ) - return NULL; - return _wfopen( wname, wmode ); -} - -int gd_open( const char *filename) -{ - wchar_t wname[16384]; - - if( MultiByteToWideChar( CP_UTF8, 0, filename, -1, wname, 16384 ) == 0 ) - return -1; - return _wopen( wname, _O_RDONLY | _O_BINARY ); -} - -gzFile gd_gzopen( const char *filename ) -{ - int id = gd_open( filename ); - if( id == -1 ) - return NULL; - gzFile f = gzdopen( id, "rb"); - if( f == NULL ) - _close( id ); - return f; -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ufile.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/ufile.hh deleted file mode 100644 index a7a9d3d46c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/ufile.hh +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef UFILE_HH_INCLUDED -#define UFILE_HH_INCLUDED - -#ifdef __WIN32 - -#include "zlib.h" - -// eliminate some VC++ warnings -#ifdef _MSC_VER -#define fileno _fileno -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -FILE *gd_fopen( const char *filename, const char *mode ); -int gd_open( const char *filename ); -gzFile gd_gzopen( const char *filename ); - -#ifdef __cplusplus -} /* end extern "C" */ -#endif - -#else -#define gd_fopen fopen -#define gd_gzopen( filename ) gzopen( filename, "rb" ) -#endif - -#endif // UFILE_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/uiauto.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/uiauto.hh deleted file mode 100644 index 4e40ff4848..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/uiauto.hh +++ /dev/null @@ -1,334 +0,0 @@ -#ifndef __UIAUTO_HH_INCLUDED__ -#define __UIAUTO_HH_INCLUDED__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -EXTERN_C const IID IID_IUIAutomation; -EXTERN_C const IID CLSID_CUIAutomation; -EXTERN_C const IID IID_IUIAutomationElement; -EXTERN_C const IID IID_IUIAutomationTextPattern; -EXTERN_C const IID IID_IUIAutomationTextRange; -EXTERN_C const IID IID_IUIAutomationTreeWalker; - -typedef interface IUIAutomationElement IUIAutomationElement; -typedef interface IUIAutomationElementArray IUIAutomationElementArray; -typedef interface IUIAutomationTextPattern IUIAutomationTextPattern; -typedef interface IUIAutomationTextRange IUIAutomationTextRange; -typedef interface IUIAutomationTextRangeArray IUIAutomationTextRangeArray; -typedef interface IUIAutomationCacheRequest IUIAutomationCacheRequest; -typedef interface IUIAutomationTreeWalker IUIAutomationTreeWalker; -typedef interface IUIAutomationCondition IUIAutomationCondition; -typedef interface IUIAutomationEventHandler IUIAutomationEventHandler; -typedef interface IUIAutomationPropertyChangedEventHandler IUIAutomationPropertyChangedEventHandler; -typedef interface IUIAutomationStructureChangedEventHandler IUIAutomationStructureChangedEventHandler; -typedef interface IUIAutomationFocusChangedEventHandler IUIAutomationFocusChangedEventHandler; -typedef interface IUIAutomationProxyFactory IUIAutomationProxyFactory; -typedef interface IUIAutomationProxyFactoryEntry IUIAutomationProxyFactoryEntry; -typedef interface IUIAutomationProxyFactoryMapping IUIAutomationProxyFactoryMapping; - -typedef void *UIA_HWND; -typedef int PROPERTYID; -typedef int EVENTID; -typedef int PATTERNID; -typedef int CONTROLTYPEID; -typedef int TEXTATTRIBUTEID; - -enum TreeScope -{ - TreeScope_Element = 0x1, - TreeScope_Children = 0x2, - TreeScope_Descendants = 0x4, - TreeScope_Parent = 0x8, - TreeScope_Ancestors = 0x10, - TreeScope_Subtree = ( ( TreeScope_Element | TreeScope_Children ) | TreeScope_Descendants ) -}; - -enum PropertyConditionFlags -{ - PropertyConditionFlags_None = 0, - PropertyConditionFlags_IgnoreCase = 0x1 -}; - -enum OrientationType -{ - OrientationType_None = 0, - OrientationType_Horizontal = 1, - OrientationType_Vertical = 2 -}; - -enum SupportedTextSelection -{ - SupportedTextSelection_None = 0, - SupportedTextSelection_Single = 1, - SupportedTextSelection_Multiple = 2 -}; - -enum TextPatternRangeEndpoint -{ - TextPatternRangeEndpoint_Start = 0, - TextPatternRangeEndpoint_End = 1 -}; - -enum TextUnit -{ - TextUnit_Character = 0, - TextUnit_Format = 1, - TextUnit_Word = 2, - TextUnit_Line = 3, - TextUnit_Paragraph = 4, - TextUnit_Page = 5, - TextUnit_Document = 6 -}; - -enum ProviderOptions -{ - ProviderOptions_ClientSideProvider = 0x1, - ProviderOptions_ServerSideProvider = 0x2, - ProviderOptions_NonClientAreaProvider = 0x4, - ProviderOptions_OverrideProvider = 0x8, - ProviderOptions_ProviderOwnsSetFocus = 0x10, - ProviderOptions_UseComThreading = 0x20 -} ; - -/* UIA_PatternIds */ -const long UIA_InvokePatternId = 10000; -const long UIA_SelectionPatternId = 10001; -const long UIA_ValuePatternId = 10002; -const long UIA_RangeValuePatternId = 10003; -const long UIA_ScrollPatternId = 10004; -const long UIA_ExpandCollapsePatternId = 10005; -const long UIA_GridPatternId = 10006; -const long UIA_GridItemPatternId = 10007; -const long UIA_MultipleViewPatternId = 10008; -const long UIA_WindowPatternId = 10009; -const long UIA_SelectionItemPatternId = 10010; -const long UIA_DockPatternId = 10011; -const long UIA_TablePatternId = 10012; -const long UIA_TableItemPatternId = 10013; -const long UIA_TextPatternId = 10014; -const long UIA_TogglePatternId = 10015; -const long UIA_TransformPatternId = 10016; -const long UIA_ScrollItemPatternId = 10017; -const long UIA_LegacyIAccessiblePatternId = 10018; -const long UIA_ItemContainerPatternId = 10019; -const long UIA_VirtualizedItemPatternId = 10020; -const long UIA_SynchronizedInputPatternId = 10021; - -#ifdef INTERFACE -#undef INTERFACE -#endif - -#define INTERFACE IUIAutomation -DECLARE_INTERFACE_(IUIAutomation, IUnknown) -{ - STDMETHOD(CompareElements)(THIS_ IUIAutomationElement *, IUIAutomationElement *, BOOL *) PURE; - STDMETHOD(CompareRuntimeIds)(THIS_ SAFEARRAY *, SAFEARRAY *, BOOL *) PURE; - STDMETHOD(GetRootElement)(THIS_ IUIAutomationElement **) PURE; - STDMETHOD(ElementFromHandle)(THIS_ UIA_HWND, IUIAutomationElement **) PURE; - STDMETHOD(ElementFromPoint)(THIS_ POINT, IUIAutomationElement **) PURE; - STDMETHOD(GetFocusedElement)(THIS_ IUIAutomationElement **) PURE; - STDMETHOD(GetRootElementBuildCache)(THIS_ IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(ElementFromHandleBuildCache)(THIS_ UIA_HWND, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(ElementFromPointBuildCache)(THIS_ POINT, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(GetFocusedElementBuildCache)(THIS_ IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(CreateTreeWalker)(THIS_ IUIAutomationCondition *, IUIAutomationTreeWalker **) PURE; - STDMETHOD(get_ControlViewWalker)(THIS_ IUIAutomationTreeWalker **) PURE; - STDMETHOD(get_ContentViewWalker)(THIS_ IUIAutomationTreeWalker **) PURE; - STDMETHOD(get_RawViewWalker)(THIS_ IUIAutomationTreeWalker **) PURE; - STDMETHOD(get_RawViewCondition)(THIS_ IUIAutomationCondition **) PURE; - STDMETHOD(get_ControlViewCondition)(THIS_ IUIAutomationCondition **) PURE; - STDMETHOD(get_ContentViewCondition)(THIS_ IUIAutomationCondition **) PURE; - STDMETHOD(CreateCacheRequest)(THIS_ IUIAutomationCacheRequest **) PURE; - STDMETHOD(CreateTrueCondition)(THIS_ IUIAutomationCondition **) PURE; - STDMETHOD(CreateFalseCondition)(THIS_ IUIAutomationCondition **) PURE; - STDMETHOD(CreatePropertyCondition)(THIS_ PROPERTYID, VARIANT, IUIAutomationCondition **) PURE; - STDMETHOD(CreatePropertyConditionEx)(THIS_ PROPERTYID, VARIANT, enum PropertyConditionFlags, IUIAutomationCondition **) PURE; - STDMETHOD(CreateAndCondition)(THIS_ IUIAutomationCondition *, IUIAutomationCondition *, IUIAutomationCondition **) PURE; - STDMETHOD(CreateAndConditionFromArray)(THIS_ SAFEARRAY *, IUIAutomationCondition **) PURE; - STDMETHOD(CreateAndConditionFromNativeArray)(THIS_ IUIAutomationCondition **, int , IUIAutomationCondition **) PURE; - STDMETHOD(CreateOrCondition)(THIS_ IUIAutomationCondition *, IUIAutomationCondition *, IUIAutomationCondition **) PURE; - STDMETHOD(CreateOrConditionFromArray)(THIS_ SAFEARRAY *, IUIAutomationCondition **) PURE; - STDMETHOD(CreateOrConditionFromNativeArray)(THIS_ IUIAutomationCondition **, int , IUIAutomationCondition **) PURE; - STDMETHOD(CreateNotCondition)(THIS_ IUIAutomationCondition *, IUIAutomationCondition **) PURE; - STDMETHOD(AddAutomationEventHandler)(THIS_ EVENTID, IUIAutomationElement *, enum TreeScope, IUIAutomationCacheRequest *, IUIAutomationEventHandler *) PURE; - STDMETHOD(RemoveAutomationEventHandler)(THIS_ EVENTID, IUIAutomationElement *, IUIAutomationEventHandler *) PURE; - STDMETHOD(AddPropertyChangedEventHandlerNativeArray)(THIS_ IUIAutomationElement *, enum TreeScope, IUIAutomationCacheRequest *, - IUIAutomationPropertyChangedEventHandler *, PROPERTYID *, int) PURE; - STDMETHOD(AddPropertyChangedEventHandler)(THIS_ IUIAutomationElement *, enum TreeScope, EVENTID, IUIAutomationCacheRequest *, - IUIAutomationPropertyChangedEventHandler *, SAFEARRAY *) PURE; - STDMETHOD(RemovePropertyChangedEventHandler)(THIS_ IUIAutomationElement *, IUIAutomationPropertyChangedEventHandler *) PURE; - STDMETHOD(AddStructureChangedEventHandler)(THIS_ IUIAutomationElement *, enum TreeScope, IUIAutomationCacheRequest *, IUIAutomationStructureChangedEventHandler *) PURE; - STDMETHOD(RemoveStructureChangedEventHandler)(THIS_ IUIAutomationElement *, IUIAutomationStructureChangedEventHandler *) PURE; - STDMETHOD(AddFocusChangedEventHandler)(THIS_ IUIAutomationCacheRequest *, IUIAutomationFocusChangedEventHandler *) PURE; - STDMETHOD(RemoveFocusChangedEventHandler)(THIS_ IUIAutomationFocusChangedEventHandler *) PURE; - STDMETHOD(RemoveAllEventHandlers)(THIS) PURE; - STDMETHOD(IntNativeArrayToSafeArray)(THIS_ int *, int, SAFEARRAY **) PURE; - STDMETHOD(IntSafeArrayToNativeArray)(THIS_ SAFEARRAY *, int **, int *) PURE; - STDMETHOD(RectToVariant)(THIS_ RECT, VARIANT *) PURE; - STDMETHOD(VariantToRect)(THIS_ VARIANT, RECT *) PURE; - STDMETHOD(SafeArrayToRectNativeArray)(THIS_ SAFEARRAY *, RECT **, int *) PURE; - STDMETHOD(CreateProxyFactoryEntry)(THIS_ IUIAutomationProxyFactory *, IUIAutomationProxyFactoryEntry **) PURE; - STDMETHOD(get_ProxyFactoryMapping)(THIS_ IUIAutomationProxyFactoryMapping **) PURE; - STDMETHOD(GetPropertyProgrammaticName)(THIS_ PROPERTYID, BSTR *) PURE; - STDMETHOD(GetPatternProgrammaticName)(THIS_ PATTERNID, BSTR *) PURE; - STDMETHOD(PollForPotentialSupportedPatterns)(THIS_ IUIAutomationElement *, SAFEARRAY **, SAFEARRAY **) PURE; - STDMETHOD(PollForPotentialSupportedProperties)(THIS_ IUIAutomationElement *, SAFEARRAY **, SAFEARRAY **) PURE; - STDMETHOD(CheckNotSupported)(THIS_ VARIANT, BOOL *) PURE; - STDMETHOD(get_ReservedNotSupportedValue)(THIS_ IUnknown **) PURE; - STDMETHOD(get_ReservedMixedAttributeValue)(THIS_ IUnknown **) PURE; - STDMETHOD(ElementFromIAccessible)(THIS_ IAccessible *, int, IUIAutomationElement **) PURE; - STDMETHOD(ElementFromIAccessibleBuildCache)(THIS_ IAccessible *, int, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; -}; -#undef INTERFACE - -#define INTERFACE IUIAutomationElement -DECLARE_INTERFACE_(IUIAutomationElement, IUnknown) -{ - STDMETHOD(SetFocus)(THIS) PURE; - STDMETHOD(GetRuntimeId)(THIS_ SAFEARRAY **) PURE; - STDMETHOD(FindFirst)(THIS_ enum TreeScope, IUIAutomationCondition *, IUIAutomationElement **) PURE; - STDMETHOD(FindAll)(THIS_ enum TreeScope, IUIAutomationCondition *, IUIAutomationElementArray **) PURE; - STDMETHOD(FindFirstBuildCache)(THIS_ enum TreeScope, IUIAutomationCondition *, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(FindAllBuildCache)(THIS_ enum TreeScope, IUIAutomationCondition *, IUIAutomationCacheRequest *, IUIAutomationElementArray **) PURE; - STDMETHOD(BuildUpdatedCache)(THIS_ IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(GetCurrentPropertyValue)(THIS_ PROPERTYID, VARIANT *) PURE; - STDMETHOD(GetCurrentPropertyValueEx)(THIS_ PROPERTYID, BOOL, VARIANT *) PURE; - STDMETHOD(GetCachedPropertyValue)(THIS_ PROPERTYID, VARIANT *) PURE; - STDMETHOD(GetCachedPropertyValueEx)(THIS_ PROPERTYID, BOOL, VARIANT *) PURE; - STDMETHOD(GetCurrentPatternAs)(THIS_ PATTERNID, REFIID, void **) PURE; - STDMETHOD(GetCachedPatternAs)(THIS_ PATTERNID, REFIID, void **) PURE; - STDMETHOD(GetCurrentPattern)(THIS_ PATTERNID, IUnknown **) PURE; - STDMETHOD(GetCachedPattern)(THIS_ PATTERNID, IUnknown **) PURE; - STDMETHOD(GetCachedParent)(THIS_ IUIAutomationElement **) PURE; - STDMETHOD(GetCachedChildren)(THIS_ IUIAutomationElement **) PURE; - STDMETHOD(get_CurrentProcessId)(THIS_ int *) PURE; - STDMETHOD(get_CurrentControlType)(THIS_ CONTROLTYPEID *) PURE; - STDMETHOD(get_CurrentLocalizedControlType)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentName)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentAcceleratorKey)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentAccessKey)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentHasKeyboardFocus)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentIsKeyboardFocusable)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentIsEnabled)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentAutomationId)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentClassName)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentHelpText)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentCulture)(THIS_ int *) PURE; - STDMETHOD(get_CurrentIsControlElement)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentIsContentElement)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentIsPassword)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentNativeWindowHandle)(THIS_ UIA_HWND *) PURE; - STDMETHOD(get_CurrentItemType)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentIsOffscreen)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentOrientation)(THIS_ enum OrientationType *) PURE; - STDMETHOD(get_CurrentFrameworkId)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentIsRequiredForForm)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentItemStatus)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentBoundingRectangle)(THIS_ RECT *) PURE; - STDMETHOD(get_CurrentLabeledBy)(THIS_ IUIAutomationElement **) PURE; - STDMETHOD(get_CurrentAriaRole)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentAriaProperties)(THIS_ BSTR *) PURE; - STDMETHOD(get_CurrentIsDataValidForForm)(THIS_ BOOL *) PURE; - STDMETHOD(get_CurrentControllerFor)(THIS_ IUIAutomationElementArray **) PURE; - STDMETHOD(get_CurrentDescribedBy)(THIS_ IUIAutomationElementArray **) PURE; - STDMETHOD(get_CurrentFlowsTo)(THIS_ IUIAutomationElementArray **) PURE; - STDMETHOD(get_CurrentProviderDescription)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedProcessId)(THIS_ int *) PURE; - STDMETHOD(get_CachedControlType)(THIS_ CONTROLTYPEID *) PURE; - STDMETHOD(get_CachedLocalizedControlType)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedName)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedAcceleratorKey)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedAccessKey)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedHasKeyboardFocus)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedIsKeyboardFocusable)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedIsEnabled)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedAutomationId)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedClassName)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedHelpText)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedCulture)(THIS_ int *) PURE; - STDMETHOD(get_CachedIsControlElement)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedIsContentElement)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedIsPassword)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedNativeWindowHandle)(THIS_ UIA_HWND *) PURE; - STDMETHOD(get_CachedItemType)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedIsOffscreen)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedOrientation)(THIS_ enum OrientationType *) PURE; - STDMETHOD(get_CachedFrameworkId)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedIsRequiredForForm)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedItemStatus)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedBoundingRectangle)(THIS_ RECT *) PURE; - STDMETHOD(get_CachedLabeledBy)(THIS_ IUIAutomationElement **) PURE; - STDMETHOD(get_CachedAriaRole)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedAriaProperties)(THIS_ BSTR *) PURE; - STDMETHOD(get_CachedIsDataValidForForm)(THIS_ BOOL *) PURE; - STDMETHOD(get_CachedControllerFor)(THIS_ IUIAutomationElementArray **) PURE; - STDMETHOD(get_CachedDescribedBy)(THIS_ IUIAutomationElementArray **) PURE; - STDMETHOD(get_CachedFlowsTo)(THIS_ IUIAutomationElementArray **) PURE; - STDMETHOD(get_CachedProviderDescription)(THIS_ BSTR *) PURE; -}; -#undef INTERFACE - -#define INTERFACE IUIAutomationTextPattern -DECLARE_INTERFACE_(IUIAutomationTextPattern, IUnknown) -{ - STDMETHOD(RangeFromPoint)(THIS_ POINT, IUIAutomationTextRange **) PURE; - STDMETHOD(RangeFromChild)(THIS_ IUIAutomationElement *, IUIAutomationTextRange **) PURE; - STDMETHOD(GetSelection)(THIS_ IUIAutomationTextRangeArray **) PURE; - STDMETHOD(GetVisibleRanges)(THIS_ IUIAutomationTextRangeArray **) PURE; - STDMETHOD(get_DocumentRange)(THIS_ IUIAutomationTextRange **) PURE; - STDMETHOD(get_SupportedTextSelection)(THIS_ enum SupportedTextSelection *) PURE; -}; -#undef INTERFACE - -#define INTERFACE IUIAutomationTreeWalker -DECLARE_INTERFACE_(IUIAutomationTreeWalker, IUnknown) -{ - STDMETHOD(GetParentElement)(THIS_ IUIAutomationElement *, IUIAutomationElement **) PURE; - STDMETHOD(GetFirstChildElement)(THIS_ IUIAutomationElement *, IUIAutomationElement **) PURE; - STDMETHOD(GetLastChildElement)(THIS_ IUIAutomationElement *, IUIAutomationElement **) PURE; - STDMETHOD(GetNextSiblingElement)(THIS_ IUIAutomationElement *, IUIAutomationElement **) PURE; - STDMETHOD(GetPreviousSiblingElement)(THIS_ IUIAutomationElement *, IUIAutomationElement **) PURE; - STDMETHOD(NormalizeElement)(THIS_ IUIAutomationElement *, IUIAutomationElement **) PURE; - STDMETHOD(GetParentElementBuildCache)(THIS_ IUIAutomationElement *, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(GetFirstChildElementBuildCache)(THIS_ IUIAutomationElement *, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(GetLastChildElementBuildCache)(THIS_ IUIAutomationElement *, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(GetNextSiblingElementBuildCache)(THIS_ IUIAutomationElement *, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(GetPreviousSiblingElementBuildCache)(THIS_ IUIAutomationElement *, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(NormalizeElementBuildCache)(THIS_ IUIAutomationElement *, IUIAutomationCacheRequest *, IUIAutomationElement **) PURE; - STDMETHOD(get_Condition)(THIS_ IUIAutomationCondition **) PURE; -}; -#undef INTERFACE - -#define INTERFACE IUIAutomationTextRange -DECLARE_INTERFACE_(IUIAutomationTextRange, IUnknown) -{ - STDMETHOD(Clone)(THIS_ IUIAutomationTextRange **) PURE; - STDMETHOD(Compare)(THIS_ IUIAutomationTextRange *, BOOL *) PURE; - STDMETHOD(CompareEndpoints)(THIS_ enum TextPatternRangeEndpoint, IUIAutomationTextRange *, enum TextPatternRangeEndpoint, int *) PURE; - STDMETHOD(ExpandToEnclosingUnit)(THIS_ enum TextUnit) PURE; - STDMETHOD(FindAttribute)(THIS_ TEXTATTRIBUTEID, VARIANT, BOOL, IUIAutomationTextRange **) PURE; - STDMETHOD(FindText)(THIS_ BSTR, BOOL, BOOL, IUIAutomationTextRange **) PURE; - STDMETHOD(GetAttributeValue)(THIS_ TEXTATTRIBUTEID, VARIANT *) PURE; - STDMETHOD(GetBoundingRectangles)(THIS_ SAFEARRAY **) PURE; - STDMETHOD(GetEnclosingElement)(THIS_ IUIAutomationElement **) PURE; - STDMETHOD(GetText)(THIS_ int, BSTR *) PURE; - STDMETHOD(Move)(THIS_ enum TextUnit, int, int *) PURE; - STDMETHOD(MoveEndpointByUnit)(THIS_ enum TextPatternRangeEndpoint, enum TextUnit, int *) PURE; - STDMETHOD(MoveEndpointByRange)(THIS_ enum TextPatternRangeEndpoint, IUIAutomationTextRange *, enum TextPatternRangeEndpoint) PURE; - STDMETHOD(Select)(THIS) PURE; - STDMETHOD(AddToSelection)(THIS) PURE; - STDMETHOD(RemoveFromSelection)(THIS) PURE; - STDMETHOD(ScrollIntoView)(THIS_ BOOL) PURE; - STDMETHOD(GetChildren)(THIS_ IUIAutomationElementArray **) PURE; -}; -#undef INTERFACE - -#ifdef __cplusplus -} -#endif - -#endif // UIAUTO_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/utf8.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/utf8.cc deleted file mode 100644 index 02db09266d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/utf8.cc +++ /dev/null @@ -1,175 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "utf8.hh" -#include - -namespace Utf8 { - -size_t encode( wchar const * in, size_t inSize, char * out_ ) -{ - unsigned char * out = (unsigned char *) out_; - - while( inSize-- ) - { - if ( *in < 0x80 ) - *out++ = *in++; - else - if ( *in < 0x800 ) - { - *out++ = 0xC0 | ( *in >> 6 ); - *out++ = 0x80 | ( *in++ & 0x3F ); - } - else - if ( *in < 0x10000 ) - { - *out++ = 0xE0 | ( *in >> 12 ); - *out++ = 0x80 | ( ( *in >> 6 ) & 0x3F ); - *out++ = 0x80 | ( *in++ & 0x3F ); - } - else - { - *out++ = 0xF0 | ( *in >> 18 ); - *out++ = 0x80 | ( ( *in >> 12 ) & 0x3F ); - *out++ = 0x80 | ( ( *in >> 6 ) & 0x3F ); - *out++ = 0x80 | ( *in++ & 0x3F ); - } - } - - return out - (unsigned char *) out_; -} - -long decode( char const * in_, size_t inSize, wchar * out_ ) -{ - unsigned char const * in = (unsigned char const *) in_; - wchar * out = out_; - - while( inSize-- ) - { - wchar result; - - if ( *in & 0x80 ) - { - if ( *in & 0x40 ) - { - if ( *in & 0x20 ) - { - if ( *in & 0x10 ) - { - // Four-byte sequence - if ( *in & 8 ) - // This can't be - return -1; - - if ( inSize < 3 ) - return -1; - - inSize -= 3; - - result = ( (wchar )*in++ & 7 ) << 18; - - if ( ( *in & 0xC0 ) != 0x80 ) - return -1; - result |= ( (wchar)*in++ & 0x3F ) << 12; - - if ( ( *in & 0xC0 ) != 0x80 ) - return -1; - result |= ( (wchar)*in++ & 0x3F ) << 6; - - if ( ( *in & 0xC0 ) != 0x80 ) - return -1; - result |= (wchar)*in++ & 0x3F; - } - else - { - // Three-byte sequence - - if ( inSize < 2 ) - return -1; - - inSize -= 2; - - result = ( (wchar )*in++ & 0xF ) << 12; - - if ( ( *in & 0xC0 ) != 0x80 ) - return -1; - result |= ( (wchar)*in++ & 0x3F ) << 6; - - if ( ( *in & 0xC0 ) != 0x80 ) - return -1; - result |= (wchar)*in++ & 0x3F; - } - } - else - { - // Two-byte sequence - if ( !inSize ) - return -1; - - --inSize; - - result = ( (wchar )*in++ & 0x1F ) << 6; - - if ( ( *in & 0xC0 ) != 0x80 ) - return -1; - result |= (wchar)*in++ & 0x3F; - } - } - else - { - // This char is from the middle of encoding, it can't be leading - return -1; - } - } - else - // One-byte encoding - result = *in++; - - *out++ = result; - } - - return out - out_; -} - -string encode( wstring const & in ) throw() -{ - std::vector< char > buffer( in.size() * 4 ); - - return string( &buffer.front(), - encode( in.data(), in.size(), &buffer.front() ) ); -} - -wstring decode( string const & in ) throw( exCantDecode ) -{ - - if ( in.size() == 0 ) - return wstring(); - - std::vector< wchar > buffer( in.size() ); - - long result = decode( in.data(), in.size(), &buffer.front() ); - - if ( result < 0 ) - throw exCantDecode( in ); - - return wstring( &buffer.front(), result ); -} - -bool isspace( int c ) -{ - switch( c ) - { - case ' ': - case '\f': - case '\n': - case '\r': - case '\t': - case '\v': - return true; - - default: - return false; - } -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/utf8.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/utf8.hh deleted file mode 100644 index a48d9c6d2c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/utf8.hh +++ /dev/null @@ -1,42 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include -#include -#include "ex.hh" -#include "wstring.hh" - -/// A simple UTF-8 encoder/decoder. Some dictionary backends only require -/// utf8, so we have this separately, removing the iconv dependency for them. -/// Besides, utf8 is quite ubiquitous now, and its use is spreaded over many -/// places. -namespace Utf8 { - -using std::string; -using gd::wstring; -using gd::wchar; - -DEF_EX_STR( exCantDecode, "Can't decode the given string from Utf8:", std::exception ) - -/// Encodes the given UCS-4 into UTF-8. The inSize specifies the number -/// of wide characters the 'in' pointer points to. The 'out' buffer must be -/// at least inSize * 4 bytes long. The function returns the number of chars -/// stored in the 'out' buffer. The result is not 0-terminated. -size_t encode( wchar const * in, size_t inSize, char * out ); -/// Decodes the given UTF-8 into UCS-32. The inSize specifies the number -/// of bytes the 'in' pointer points to. The 'out' buffer must be at least -/// inSize wide characters long. If the given UTF-8 is invalid, the decode -/// function returns -1, otherwise it returns the number of wide characters -/// stored in the 'out' buffer. The result is not 0-terminated. -long decode( char const * in, size_t inSize, wchar * out ); - -/// Versions for non time-critical code. -string encode( wstring const & ) throw(); -wstring decode( string const & ) throw( exCantDecode ); - -/// Since the standard isspace() is locale-specific, we need something -/// that would never mess up our utf8 input. The stock one worked fine under -/// Linux but was messing up strings under Windows. -bool isspace( int c ); - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/voiceengines.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/voiceengines.cc deleted file mode 100644 index 33ff4ee083..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/voiceengines.cc +++ /dev/null @@ -1,144 +0,0 @@ -/* This file is (c) 2013 Timon Wong - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "voiceengines.hh" -#include "audiolink.hh" -#include "htmlescape.hh" -#include "utf8.hh" -#include "wstring_qt.hh" - -#include -#include - -#include -#include -#include - -#include "qt4x5.hh" - -namespace VoiceEngines -{ - -using namespace Dictionary; -using std::string; -using std::map; - -inline string toMd5( QByteArray const & b ) -{ - return string( QCryptographicHash::hash( b, QCryptographicHash::Md5 ).toHex().constData() ); -} - -class VoiceEnginesDictionary: public Dictionary::Class -{ -private: - - Config::VoiceEngine voiceEngine; - -public: - - VoiceEnginesDictionary( Config::VoiceEngine const & voiceEngine ): - Dictionary::Class( - toMd5( voiceEngine.id.toUtf8() ), - vector< string >() ), - voiceEngine( voiceEngine ) - { - } - - virtual string getName() throw() - { return voiceEngine.name.toUtf8().data(); } - - virtual map< Property, string > getProperties() throw() - { return map< Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return 0; } - - virtual unsigned long getWordCount() throw() - { return 0; } - - virtual sptr< WordSearchRequest > prefixMatch( wstring const & word, - unsigned long maxResults ) - throw( std::exception ); - - virtual sptr< DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - -protected: - - virtual void loadIcon() throw(); -}; - -sptr< WordSearchRequest > VoiceEnginesDictionary::prefixMatch( wstring const & /*word*/, - unsigned long /*maxResults*/ ) - throw( std::exception ) -{ - WordSearchRequestInstant * sr = new WordSearchRequestInstant(); - sr->setUncertain( true ); - return sr; -} - -sptr< Dictionary::DataRequest > VoiceEnginesDictionary::getArticle( - wstring const & word, vector< wstring > const &, wstring const & ) - throw( std::exception ) -{ - string result; - string wordUtf8( Utf8::encode( word ) ); - - result += ""; - - QUrl url; - url.setScheme( "gdtts" ); - url.setHost( "localhost" ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( wordUtf8.c_str() ) ) ); - QList< QPair > query; - query.push_back( QPair( "engine", QString::fromStdString( getId() ) ) ); - Qt4x5::Url::setQueryItems( url, query ); - - string encodedUrl = url.toEncoded().data(); - string ref = string( "\"" ) + encodedUrl + "\""; - result += addAudioLink( ref, getId() ); - - result += ""; - result += ""; - result += "
\"Play\"/" + Html::escape( wordUtf8 ) + "
"; - - sptr< DataRequestInstant > ret = new DataRequestInstant( true ); - ret->getData().resize( result.size() ); - memcpy( &( ret->getData().front() ), result.data(), result.size() ); - return ret; -} - -void VoiceEnginesDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - if ( !voiceEngine.iconFilename.isEmpty() ) - { - QFileInfo fInfo( QDir( Config::getConfigDir() ), voiceEngine.iconFilename ); - if ( fInfo.isFile() ) - loadIconFromFile( fInfo.absoluteFilePath(), true ); - } - if ( dictionaryIcon.isNull() ) - dictionaryIcon = dictionaryNativeIcon = QIcon( ":/icons/playsound.png" ); - dictionaryIconLoaded = true; -} - -vector< sptr< Dictionary::Class > > makeDictionaries( - Config::VoiceEngines const & voiceEngines ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - for ( Config::VoiceEngines::const_iterator i = voiceEngines.begin(); i != voiceEngines.end(); ++i ) - { - if ( i->enabled ) - result.push_back( new VoiceEnginesDictionary( *i ) ); - } - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/voiceengines.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/voiceengines.hh deleted file mode 100644 index 8c52cc81c2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/voiceengines.hh +++ /dev/null @@ -1,25 +0,0 @@ -/* This file is (c) 2013 Timon Wong - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __VOICEENGINES_HH_INCLUDED__ -#define __VOICEENGINES_HH_INCLUDED__ - -#include "dictionary.hh" -#include "config.hh" -#include "wstring.hh" - -#include - - -namespace VoiceEngines { - -using std::vector; -using std::string; -using gd::wstring; - -vector< sptr< Dictionary::Class > > makeDictionaries(Config::VoiceEngines const & voiceEngines) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/webmultimediadownload.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/webmultimediadownload.cc deleted file mode 100644 index 326c3c462a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/webmultimediadownload.cc +++ /dev/null @@ -1,56 +0,0 @@ -#include "webmultimediadownload.hh" -#include "filetype.hh" - -namespace Dictionary { - -WebMultimediaDownload::WebMultimediaDownload( QUrl const & url, - QNetworkAccessManager & mgr ) -{ - connect( &mgr, SIGNAL(finished(QNetworkReply*)), - this, SLOT(replyFinished(QNetworkReply*)), Qt::QueuedConnection ); - - reply = mgr.get( QNetworkRequest( url ) ); -} - -void WebMultimediaDownload::cancel() -{ - reply = NULL; - - finish(); -} - -void WebMultimediaDownload::replyFinished( QNetworkReply * r ) -{ - if ( !r || r != reply ) - return; // Not our reply - - if ( r->error() == QNetworkReply::NoError ) - { - QByteArray all = r->readAll(); - - Mutex::Lock _( dataMutex ); - - data.resize( all.size() ); - - memcpy( data.data(), all.data(), all.size() ); - - hasAnyData = true; - } - else - setErrorString( r->errorString() ); - - r->deleteLater(); - reply = NULL; - - finish(); -} - -bool WebMultimediaDownload::isAudioUrl( QUrl const & url ) -{ - // Note: we check for forvo sound links explicitly, as they don't have extensions - - return ( url.scheme() == "http" || url.scheme() == "https" ) && ( - Filetype::isNameOfSound( url.path().toUtf8().data() ) || url.host() == "apifree.forvo.com" ); -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/webmultimediadownload.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/webmultimediadownload.hh deleted file mode 100644 index 10e4831e61..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/webmultimediadownload.hh +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef WEBMULTIMEDIADOWNLOAD_HH -#define WEBMULTIMEDIADOWNLOAD_HH - -#include "dictionary.hh" -#include - -namespace Dictionary { - -/// Downloads data from the web, wrapped as a dictionary's DataRequest. This -/// is useful for multimedia files, like sounds and pronunciations. -class WebMultimediaDownload: public DataRequest -{ - Q_OBJECT - - QNetworkReply * reply; - -public: - - WebMultimediaDownload( QUrl const &, QNetworkAccessManager & ); - - /// Checks if the given url is an http request for an audio file. - static bool isAudioUrl( QUrl const & ); - - virtual void cancel(); - -private slots: - - void replyFinished( QNetworkReply * ); -}; - -} - -#endif // WEBMULTIMEDIADOWNLOAD_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/website.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/website.cc deleted file mode 100644 index 6c5a3554b7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/website.cc +++ /dev/null @@ -1,178 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "website.hh" -#include "wstring_qt.hh" -#include "utf8.hh" -#include -#include -#include -#include - -namespace WebSite { - -using namespace Dictionary; - -namespace { - -class WebSiteDictionary: public Dictionary::Class -{ - string name; - QByteArray urlTemplate; - QString iconFilename; - -public: - - WebSiteDictionary( string const & id, string const & name_, - QString const & urlTemplate_, - QString const & iconFilename_ ): - Dictionary::Class( id, vector< string >() ), - name( name_ ), - urlTemplate( QUrl( urlTemplate_ ).toEncoded() ), - iconFilename( iconFilename_ ) - { - dictionaryDescription = urlTemplate_; - } - - virtual string getName() throw() - { return name; } - - virtual map< Property, string > getProperties() throw() - { return map< Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return 0; } - - virtual unsigned long getWordCount() throw() - { return 0; } - - virtual sptr< WordSearchRequest > prefixMatch( wstring const & word, - unsigned long ) throw( std::exception ); - - virtual sptr< DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & context ) - throw( std::exception ); - -protected: - - virtual void loadIcon() throw(); -}; - -sptr< WordSearchRequest > WebSiteDictionary::prefixMatch( wstring const & /*word*/, - unsigned long ) throw( std::exception ) -{ - sptr< WordSearchRequestInstant > sr = new WordSearchRequestInstant; - - sr->setUncertain( true ); - - return sr; -} - -sptr< DataRequest > WebSiteDictionary::getArticle( wstring const & str, - vector< wstring > const &, - wstring const & context ) - throw( std::exception ) -{ - sptr< DataRequestInstant > dr = new DataRequestInstant( true ); - - QByteArray urlString; - - // Context contains the right url to go to - if ( context.size() ) - urlString = Utf8::encode( context ).c_str(); - else - { - urlString = urlTemplate; - - QString inputWord = gd::toQString( str ); - - urlString.replace( "%25GDWORD%25", inputWord.toUtf8().toPercentEncoding() ); - - QTextCodec *codec = QTextCodec::codecForName( "Windows-1251" ); - if( codec ) - urlString.replace( "%25GD1251%25", codec->fromUnicode( inputWord ).toPercentEncoding() ); - - codec = QTextCodec::codecForName( "Big-5" ); - if( codec ) - urlString.replace( "%25GDBIG5%25", codec->fromUnicode( inputWord ).toPercentEncoding() ); - - codec = QTextCodec::codecForName( "Big5-HKSCS" ); - if( codec ) - urlString.replace( "%25GDBIG5HKSCS%25", codec->fromUnicode( inputWord ).toPercentEncoding() ); - - codec = QTextCodec::codecForName( "Shift-JIS" ); - if( codec ) - urlString.replace( "%25GDSHIFTJIS%25", codec->fromUnicode( inputWord ).toPercentEncoding() ); - - codec = QTextCodec::codecForName( "GB18030" ); - if( codec ) - urlString.replace( "%25GDGBK%25", codec->fromUnicode( inputWord ).toPercentEncoding() ); - - - // Handle all ISO-8859 encodings - for( int x = 1; x <= 16; ++x ) - { - codec = QTextCodec::codecForName( QString( "ISO 8859-%1" ).arg( x ).toLatin1() ); - if( codec ) - urlString.replace( QString( "%25GDISO%1%25" ).arg( x ), codec->fromUnicode( inputWord ).toPercentEncoding() ); - - if ( x == 10 ) - x = 12; // Skip encodings 11..12, they don't exist - } - } - - string result = "
"; - - result += string( ""; - - dr->getData().resize( result.size() ); - - memcpy( &( dr->getData().front() ), result.data(), result.size() ); - - return dr; -} - -void WebSiteDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - if( !iconFilename.isEmpty() ) - { - QFileInfo fInfo( QDir( Config::getConfigDir() ), iconFilename ); - if( fInfo.isFile() ) - loadIconFromFile( fInfo.absoluteFilePath(), true ); - } - if( dictionaryIcon.isNull() ) - dictionaryIcon = dictionaryNativeIcon = QIcon(":/icons/internet.png"); - dictionaryIconLoaded = true; -} - -} - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::WebSites const & ws ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > result; - - for( int x = 0; x < ws.size(); ++x ) - { - if ( ws[ x ].enabled ) - result.push_back( new WebSiteDictionary( ws[ x ].id.toUtf8().data(), - ws[ x ].name.toUtf8().data(), - ws[ x ].url, - ws[ x ].iconFilename ) ); - } - - return result; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/website.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/website.hh deleted file mode 100644 index dd5bf37971..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/website.hh +++ /dev/null @@ -1,21 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __WEBSITE_HH_INCLUDED__ -#define __WEBSITE_HH_INCLUDED__ - -#include "dictionary.hh" -#include "config.hh" - -/// Support for any web sites via a templated url. -namespace WebSite { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( Config::WebSites const & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/ao.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/ao.h deleted file mode 100644 index cb8c0356fd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/ao.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * - * ao.h - * - * Original Copyright (C) Aaron Holtzman - May 1999 - * Modifications Copyright (C) Stan Seibert - July 2000, July 2001 - * More Modifications Copyright (C) Jack Moffitt - October 2000 - * - * This file is part of libao, a cross-platform audio outputlibrary. See - * README for a history of this source code. - * - * libao is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * libao is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ -#ifndef __AO_H__ -#define __AO_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include -#include -#include "os_types.h" - -/* --- Constants ---*/ - -#define AO_TYPE_LIVE 1 -#define AO_TYPE_FILE 2 - - -#define AO_ENODRIVER 1 -#define AO_ENOTFILE 2 -#define AO_ENOTLIVE 3 -#define AO_EBADOPTION 4 -#define AO_EOPENDEVICE 5 -#define AO_EOPENFILE 6 -#define AO_EFILEEXISTS 7 -#define AO_EBADFORMAT 8 - -#define AO_EFAIL 100 - - -#define AO_FMT_LITTLE 1 -#define AO_FMT_BIG 2 -#define AO_FMT_NATIVE 4 - -/* --- Structures --- */ - -typedef struct ao_info { - int type; /* live output or file output? */ - char *name; /* full name of driver */ - char *short_name; /* short name of driver */ - char *author; /* driver author */ - char *comment; /* driver comment */ - int preferred_byte_format; - int priority; - char **options; - int option_count; -} ao_info; - -typedef struct ao_functions ao_functions; -typedef struct ao_device ao_device; - -typedef struct ao_sample_format { - int bits; /* bits per sample */ - int rate; /* samples per second (in a single channel) */ - int channels; /* number of audio channels */ - int byte_format; /* Byte ordering in sample, see constants below */ - char *matrix; /* input channel location/ordering */ -} ao_sample_format; - -typedef struct ao_option { - char *key; - char *value; - struct ao_option *next; -} ao_option; - -#if defined(AO_BUILDING_LIBAO) -#include "ao_private.h" -#endif - -/* --- Functions --- */ - -/* library setup/teardown */ -void ao_initialize(void); -void ao_shutdown(void); - -/* device setup/playback/teardown */ -int ao_append_global_option(const char *key, - const char *value); -int ao_append_option(ao_option **options, - const char *key, - const char *value); -void ao_free_options(ao_option *options); -ao_device* ao_open_live(int driver_id, - ao_sample_format *format, - ao_option *option); -ao_device* ao_open_file(int driver_id, - const char *filename, - int overwrite, - ao_sample_format *format, - ao_option *option); - -int ao_play(ao_device *device, - char *output_samples, - uint_32 num_bytes); -int ao_close(ao_device *device); - -/* driver information */ -int ao_driver_id(const char *short_name); -int ao_default_driver_id(void); -ao_info *ao_driver_info(int driver_id); -ao_info **ao_driver_info_list(int *driver_count); -char *ao_file_extension(int driver_id); - -/* miscellaneous */ -int ao_is_big_endian(void); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __AO_H__ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/os_types.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/os_types.h deleted file mode 100644 index 8a5655353c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/os_types.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - * os_types.h - * - * Original Copyright (C) Aaron Holtzman - May 1999 - * Modifications Copyright (C) Stan Seibert - July 2000 - * - * This file is part of libao, a cross-platform audio output library. See - * README for a history of this source code. - * - * libao is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * libao is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -/* Set type sizes for this platform (Requires Autoconf) */ - -#ifndef __OS_TYPES_H__ -#define __OS_TYPES_H__ - -typedef unsigned char uint_8; -typedef unsigned short uint_16; -typedef unsigned int uint_32; -typedef signed char sint_8; -typedef signed short sint_16; -typedef signed int sint_32; - -#endif /* __OS_TYPES_H__ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/plugin.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/plugin.h deleted file mode 100644 index 29a3d96939..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ao/plugin.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - * plugin.h - function declarations for libao plugins - * - * Copyright (C) Stan Seibert - June 2001 - * - * This file is part of libao, a cross-platform audio outputlibrary. See - * README for a history of this source code. - * - * libao is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * libao is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ -#ifndef __PLUGIN_H__ -#define __PLUGIN_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include "os_types.h" - -int ao_plugin_test(); -ao_info *ao_plugin_driver_info(); -int ao_plugin_device_init(ao_device *device); -int ao_plugin_set_option(ao_device *device, const char *key, const char *value); -int ao_plugin_open(ao_device *device, ao_sample_format *format); -int ao_plugin_play(ao_device *device, const char *output_samples, - uint_32 num_bytes); -int ao_plugin_close(ao_device *device); -void ao_plugin_device_clear(ao_device *device); -char *ao_plugin_file_extension(); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* __PLUGIN_H__ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/bzlib.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/bzlib.h deleted file mode 100644 index c5b75d6d8f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/bzlib.h +++ /dev/null @@ -1,282 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Public header file for the library. ---*/ -/*--- bzlib.h ---*/ -/*-------------------------------------------------------------*/ - -/* ------------------------------------------------------------------ - This file is part of bzip2/libbzip2, a program and library for - lossless, block-sorting data compression. - - bzip2/libbzip2 version 1.0.5 of 10 December 2007 - Copyright (C) 1996-2007 Julian Seward - - Please read the WARNING, DISCLAIMER and PATENTS sections in the - README file. - - This program is released under the terms of the license contained - in the file LICENSE. - ------------------------------------------------------------------ */ - - -#ifndef _BZLIB_H -#define _BZLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define BZ_RUN 0 -#define BZ_FLUSH 1 -#define BZ_FINISH 2 - -#define BZ_OK 0 -#define BZ_RUN_OK 1 -#define BZ_FLUSH_OK 2 -#define BZ_FINISH_OK 3 -#define BZ_STREAM_END 4 -#define BZ_SEQUENCE_ERROR (-1) -#define BZ_PARAM_ERROR (-2) -#define BZ_MEM_ERROR (-3) -#define BZ_DATA_ERROR (-4) -#define BZ_DATA_ERROR_MAGIC (-5) -#define BZ_IO_ERROR (-6) -#define BZ_UNEXPECTED_EOF (-7) -#define BZ_OUTBUFF_FULL (-8) -#define BZ_CONFIG_ERROR (-9) - -typedef - struct { - char *next_in; - unsigned int avail_in; - unsigned int total_in_lo32; - unsigned int total_in_hi32; - - char *next_out; - unsigned int avail_out; - unsigned int total_out_lo32; - unsigned int total_out_hi32; - - void *state; - - void *(*bzalloc)(void *,int,int); - void (*bzfree)(void *,void *); - void *opaque; - } - bz_stream; - - -#ifndef BZ_IMPORT -#define BZ_EXPORT -#endif - -#ifndef BZ_NO_STDIO -/* Need a definitition for FILE */ -#include -#endif - -#ifdef _WIN32 -# include -# ifdef small - /* windows.h define small to char */ -# undef small -# endif -# ifdef BZ_EXPORT -# define BZ_API(func) WINAPI func -# define BZ_EXTERN extern -# else - /* import windows dll dynamically */ -# define BZ_API(func) (WINAPI * func) -# define BZ_EXTERN -# endif -#else -# define BZ_API(func) func -# define BZ_EXTERN extern -#endif - - -/*-- Core (low-level) library functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( - bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompress) ( - bz_stream* strm, - int action - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( - bz_stream *strm, - int verbosity, - int small - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( - bz_stream *strm - ); - - - -/*-- High(er) level library functions --*/ - -#ifndef BZ_NO_STDIO -#define BZ_MAX_UNUSED 5000 - -typedef void BZFILE; - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( - int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( - int* bzerror, - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( - int* bzerror, - BZFILE* b, - void** unused, - int* nUnused - ); - -BZ_EXTERN int BZ_API(BZ2_bzRead) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( - int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN void BZ_API(BZ2_bzWrite) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 - ); -#endif - - -/*-- Utility functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity - ); - - -/*-- - Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ - -BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( - void - ); - -#ifndef BZ_NO_STDIO -BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( - const char *path, - const char *mode - ); - -BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( - int fd, - const char *mode - ); - -BZ_EXTERN int BZ_API(BZ2_bzread) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzwrite) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzflush) ( - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzclose) ( - BZFILE* b - ); - -BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( - BZFILE *b, - int *errnum - ); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -/*-------------------------------------------------------------*/ -/*--- end bzlib.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/appendix.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/appendix.h deleted file mode 100644 index 9cef1a5d1d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/appendix.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_APPENDIX_H -#define EB_APPENDIX_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "eb.h" -#else -#include -#endif - -/* - * Function declarations. - */ -/* appendix.c */ -void eb_initialize_appendix(EB_Appendix *appendix); -void eb_finalize_appendix(EB_Appendix *appendix); -EB_Error_Code eb_bind_appendix(EB_Appendix *appendix, const char *path); -int eb_is_appendix_bound(EB_Appendix *appendix); -EB_Error_Code eb_appendix_path(EB_Appendix *appendix, char *path); - -/* appsub.c */ -EB_Error_Code eb_load_all_appendix_subbooks(EB_Appendix *appendix); -EB_Error_Code eb_appendix_subbook_list(EB_Appendix *appendix, - EB_Subbook_Code *subbook_list, int *subbook_count); -EB_Error_Code eb_appendix_subbook(EB_Appendix *appendix, - EB_Subbook_Code *subbook_code); -EB_Error_Code eb_appendix_subbook_directory(EB_Appendix *appendix, - char *directory); -EB_Error_Code eb_appendix_subbook_directory2(EB_Appendix *appendix, - EB_Subbook_Code subbook_code, char *directory); -EB_Error_Code eb_set_appendix_subbook(EB_Appendix *appendix, - EB_Subbook_Code subbook_code); -void eb_unset_appendix_subbook(EB_Appendix *appendix); - -/* narwalt.c */ -int eb_have_narrow_alt(EB_Appendix *appendix); -EB_Error_Code eb_narrow_alt_start(EB_Appendix *appendix, int *start); -EB_Error_Code eb_narrow_alt_end(EB_Appendix *appendix, int *end); -EB_Error_Code eb_narrow_alt_character_text(EB_Appendix *appendix, - int character_number, char *text); -EB_Error_Code eb_forward_narrow_alt_character(EB_Appendix *appendix, - int n, int *character_number); -EB_Error_Code eb_backward_narrow_alt_character(EB_Appendix *appendix, - int n, int *character_number); - -/* stopcode.c */ -int eb_have_stop_code(EB_Appendix *appendix); -EB_Error_Code eb_stop_code(EB_Appendix *appendix, int *); - -/* widealt.c */ -int eb_have_wide_alt(EB_Appendix *appendix); -EB_Error_Code eb_wide_alt_start(EB_Appendix *appendix, int *start); -EB_Error_Code eb_wide_alt_end(EB_Appendix *appendix, int *end); -EB_Error_Code eb_wide_alt_character_text(EB_Appendix *appendix, - int character_number, char *text); -EB_Error_Code eb_forward_wide_alt_character(EB_Appendix *appendix, int n, - int *character_number); -EB_Error_Code eb_backward_wide_alt_character(EB_Appendix *appendix, int n, - int *character_number); - -/* for backward compatibility */ -#define eb_suspend_appendix eb_unset_appendix_subbook -#define eb_initialize_all_appendix_subbooks eb_load_all_appendix_subbooks - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_APPENDIX_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/binary.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/binary.h deleted file mode 100644 index 031ca46898..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/binary.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- C -*- - * Copyright (c) 2001-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_BINARY_H -#define EB_BINARY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Function declarations. - */ -/* binary.c */ -EB_Error_Code eb_set_binary_mono_graphic(EB_Book *book, - const EB_Position *position, int width, int height); -EB_Error_Code eb_set_binary_gray_graphic(EB_Book *book, - const EB_Position *position, int width, int height); -EB_Error_Code eb_set_binary_wave(EB_Book *book, - const EB_Position *start_position, const EB_Position *end_position); -EB_Error_Code eb_set_binary_color_graphic(EB_Book *book, - const EB_Position *position); -EB_Error_Code eb_set_binary_mpeg(EB_Book *book, const unsigned int *argv); -EB_Error_Code eb_read_binary(EB_Book *book, size_t binary_max_length, - char *binary, ssize_t *binary_length); -void eb_unset_binary(EB_Book *book); - -/* filename.c */ -EB_Error_Code eb_compose_movie_file_name(const unsigned int *argv, - char *composed_file_name); -EB_Error_Code eb_compose_movie_path_name(EB_Book *book, - const unsigned int *argv, char *composed_path_name); -EB_Error_Code eb_decompose_movie_file_name(unsigned int *argv, - const char *composed_file_name); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_BINARY_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/booklist.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/booklist.h deleted file mode 100644 index e239414e39..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/booklist.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_BOOKLIST_H -#define EB_BOOKLIST_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "eb.h" -#else -#include -#endif - -/* - * Function declarations. - */ -/* booklist.c */ -void eb_initialize_booklist(EB_BookList *booklist); -void eb_finalize_booklist(EB_BookList *booklist); -EB_Error_Code eb_bind_booklist(EB_BookList *booklist, const char *path); -EB_Error_Code eb_booklist_book_count(EB_BookList *booklist, int *book_count); -EB_Error_Code eb_booklist_book_name(EB_BookList *booklist, int book_index, - char **book_name); -EB_Error_Code eb_booklist_book_title(EB_BookList *booklist, int book_index, - char **book_title); - - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_BOOKLIST_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/defs.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/defs.h deleted file mode 100644 index bd63cfeeb6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/defs.h +++ /dev/null @@ -1,1040 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_DEFS_H -#define EB_DEFS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#ifdef EB_BUILD_LIBRARY -#include "sysdefs.h" -#include "zio.h" -#else -#include -#include -#endif - -#ifdef EB_ENABLE_PTHREAD -#include -#endif - -/* - * Disc code - */ -#define EB_DISC_EB 0 -#define EB_DISC_EPWING 1 -#define EB_DISC_INVALID -1 - -/* - * Character codes. - */ -#define EB_CHARCODE_ISO8859_1 1 -#define EB_CHARCODE_JISX0208 2 -#define EB_CHARCODE_JISX0208_GB2312 3 -#define EB_CHARCODE_INVALID -1 - -/* - * Special book ID for cache to represent "no cache data for any book". - */ -#define EB_BOOK_NONE -1 - -/* - * Special disc code, subbook code, multi search ID, and multi search - * entry ID, for representing error state. - */ -#define EB_SUBBOOK_INVALID -1 -#define EB_MULTI_INVALID -1 - -/* - * Size of a page (The term `page' means `block' in JIS X 4081). - */ -#define EB_SIZE_PAGE 2048 - -/* - * Maximum length of a word to be searched. - */ -#define EB_MAX_WORD_LENGTH 255 - -/* - * Maximum length of an EB* book title. - */ -#define EB_MAX_EB_TITLE_LENGTH 30 - -/* - * Maximum length of an EPWING book title. - */ -#define EB_MAX_EPWING_TITLE_LENGTH 80 - -/* - * Maximum length of a book title. - */ -#define EB_MAX_TITLE_LENGTH 80 - -/* - * Maximum length of a word to be searched. - */ -#if defined(PATH_MAX) -#define EB_MAX_PATH_LENGTH PATH_MAX -#elif defined(MAXPATHLEN) -#define EB_MAX_PATH_LENGTH MAXPATHLEN -#else -#define EB_MAX_PATH_LENGTH 1024 -#endif - -/* - * Maximum length of a directory name. - */ -#define EB_MAX_DIRECTORY_NAME_LENGTH 8 - -/* - * Maximum length of a file name under a certain directory. - * prefix(8 chars) + '.' + suffix(3 chars) + ';' + digit(1 char) - */ -#define EB_MAX_FILE_NAME_LENGTH 14 - -/* - * Maximum length of a label for multi-search entry. - */ -#define EB_MAX_MULTI_LABEL_LENGTH 30 - -/* - * Maximum length of alternation text string for a private character. - */ -#define EB_MAX_ALTERNATION_TEXT_LENGTH 31 - -/* - * Maximum length of title for multi search. - */ -#define EB_MAX_MULTI_TITLE_LENGTH 32 - -/* - * Maximum number of font heights in a subbok. - */ -#define EB_MAX_FONTS 4 - -/* - * Maximum number of subbooks in a book. - */ -#define EB_MAX_SUBBOOKS 50 - -/* - * Maximum number of multi-search types in a subbook. - */ -#define EB_MAX_MULTI_SEARCHES 10 - -/* - * Maximum number of entries in a multi-search. - */ -#define EB_MAX_MULTI_ENTRIES 5 - -/* - * Maximum number of entries in a keyword search. - */ -#define EB_MAX_KEYWORDS EB_MAX_MULTI_ENTRIES - -/* - * Maximum number of entries in a cross search. - */ -#define EB_MAX_CROSS_ENTRIES EB_MAX_MULTI_ENTRIES - -/* - * Maximum number of characters for alternation cache. - */ -#define EB_MAX_ALTERNATION_CACHE 16 - -/* - * The number of text hooks. - */ -#define EB_NUMBER_OF_HOOKS 54 - -/* - * The number of search contexts required by a book. - */ -#define EB_NUMBER_OF_SEARCH_CONTEXTS EB_MAX_MULTI_ENTRIES - -/* - * Types for various codes. - */ -typedef int EB_Error_Code; -typedef int EB_Book_Code; -typedef int EB_Disc_Code; -typedef int EB_Case_Code; -typedef int EB_Suffix_Code; -typedef int EB_Character_Code; -typedef int EB_Font_Code; -typedef int EB_Word_Code; -typedef int EB_Subbook_Code; -typedef int EB_Index_Style_Code; -typedef int EB_Search_Code; -typedef int EB_Text_Code; -typedef int EB_Text_Status_Code; -typedef int EB_Multi_Search_Code; -typedef int EB_Hook_Code; -typedef int EB_Binary_Code; - -/* - * Typedef for Structures. - */ -#ifdef EB_ENABLE_PTHREAD -typedef struct EB_Lock_Struct EB_Lock; -#endif -typedef struct EB_Position_Struct EB_Position; -typedef struct EB_Alternation_Cache_Struct EB_Alternation_Cache; -typedef struct EB_Appendix_Subbook_Struct EB_Appendix_Subbook; -typedef struct EB_Appendix_Struct EB_Appendix; -typedef struct EB_Font_Struct EB_Font; -typedef struct EB_Search_Struct EB_Search; -typedef struct EB_Multi_Search_Struct EB_Multi_Search; -typedef struct EB_Subbook_Struct EB_Subbook; -typedef struct EB_Text_Context_Struct EB_Text_Context; -typedef struct EB_Binary_Context_Struct EB_Binary_Context; -typedef struct EB_Search_Context_Struct EB_Search_Context; -typedef struct EB_Book_Struct EB_Book; -typedef struct EB_Hit_Struct EB_Hit; -typedef struct EB_Hook_Struct EB_Hook; -typedef struct EB_Hookset_Struct EB_Hookset; -typedef struct EB_BookList_Entry EB_BookList_Entry; -typedef struct EB_BookList EB_BookList; - -/* - * Pthreads lock. - */ -#ifdef EB_ENABLE_PTHREAD -struct EB_Lock_Struct { - /* - * Lock count. (For emulating recursive lock). - */ - int lock_count; - - /* - * Mutex for `lock_count'. - */ - pthread_mutex_t lock_count_mutex; - - /* - * Mutex for struct entity. - */ - pthread_mutex_t entity_mutex; -}; -#endif /* EB_ENABLE_PTHREAD */ - -/* - * A pair of page and offset. - */ -struct EB_Position_Struct { - /* - * Page. (1, 2, 3 ...) - */ - int page; - - /* - * Offset in `page'. (0 ... 2047) - */ - int offset; -}; - -/* - * Chace of aternation text. - */ -struct EB_Alternation_Cache_Struct { - /* - * Character number. - */ - int character_number; - - /* - * Alternation string for `char_no'. - */ - char text[EB_MAX_ALTERNATION_TEXT_LENGTH + 1]; -}; - -/* - * An appendix for a subbook. - */ -struct EB_Appendix_Subbook_Struct { - - /* - * Initialization flag. - */ - int initialized; - - /* - * Subbook ID. - */ - EB_Subbook_Code code; - - /* - * Directory name. - */ - char directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * Sub-directory name. (EPWING only) - */ - char data_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * File name. - */ - char file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - - /* - * Character code of the book. - */ - EB_Character_Code character_code; - - /* - * Start character number of the narrow/wide font. - */ - int narrow_start; - int wide_start; - - /* - * End character number of the narrow/wide font. - */ - int narrow_end; - int wide_end; - - /* - * Start page number of the narrow/wide font. - */ - int narrow_page; - int wide_page; - - /* - * Stop code (first and second characters). - */ - int stop_code0; - int stop_code1; - - /* - * Compression Information for appendix file. - */ - Zio zio; -}; - -/* - * Additional resources for a book. - */ -struct EB_Appendix_Struct { - /* - * Book ID. - */ - EB_Book_Code code; - - /* - * Path of the book. - */ - char *path; - - /* - * The length of the path. - */ - size_t path_length; - - /* - * Disc type. EB (EB/EBG/EBXA/EBXA-C/S-EBXA) or EPWING. - */ - EB_Disc_Code disc_code; - - /* - * The number of subbooks the book has. - */ - int subbook_count; - - /* - * Subbook list. - */ - EB_Appendix_Subbook *subbooks; - - /* - * Current subbook. - */ - EB_Appendix_Subbook *subbook_current; - - /* - * ebnet socket file. - */ -#ifdef EB_ENABLE_EBNET - int ebnet_file; -#endif - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif - - /* - * Cache table for alternation text. - */ - EB_Alternation_Cache narrow_cache[EB_MAX_ALTERNATION_CACHE]; - EB_Alternation_Cache wide_cache[EB_MAX_ALTERNATION_CACHE]; -}; - -/* - * A font in a subbook. - */ -struct EB_Font_Struct { - /* - * Font Code. - * This font is not available, if the code is EB_FONT_INVALID. - */ - EB_Font_Code font_code; - - /* - * Whether the object has been initialized. - */ - int initialized; - - /* - * Character numbers of the start and end of the font. - */ - int start; - int end; - - /* - * Page number of the start page of the font data. - * Used in EB* only. (In EPWING, it is alyways 1). - */ - int page; - - /* - * File name of the font. (EPWING only) - */ - char file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - - /* - * Font data cache. - */ - char *glyphs; - - /* - * Compression Information. - */ - Zio zio; -}; - -/* - * Search methods in a subbook. - */ -struct EB_Search_Struct { - /* - * Index ID. - */ - int index_id; - - /* - * Page number of the start page of an index. - * This search method is not available, if `start_page' is 0, - */ - int start_page; - int end_page; - - /* - * Page number of the start page of candidates. - * (for multi search entry) - */ - int candidates_page; - - /* - * Index style flags. - */ - EB_Index_Style_Code katakana; - EB_Index_Style_Code lower; - EB_Index_Style_Code mark; - EB_Index_Style_Code long_vowel; - EB_Index_Style_Code double_consonant; - EB_Index_Style_Code contracted_sound; - EB_Index_Style_Code voiced_consonant; - EB_Index_Style_Code small_vowel; - EB_Index_Style_Code p_sound; - EB_Index_Style_Code space; - - /* - * Label. (for an entry in multi search) - */ - char label[EB_MAX_MULTI_LABEL_LENGTH + 1]; -}; - -/* - * A multi-search entry in a subbook. - */ -struct EB_Multi_Search_Struct { - /* - * Search method information. - */ - EB_Search search; - - /* - * Search title. (EPWING only) - */ - char title[EB_MAX_MULTI_TITLE_LENGTH + 1]; - - /* - * The number of entries the multi search has. - */ - int entry_count; - - /* - * List of Word entry information. - */ - EB_Search entries[EB_MAX_MULTI_ENTRIES]; -}; - -/* - * A subbook in a book. - */ -struct EB_Subbook_Struct { - /* - * Whether the object has been initialized. - */ - int initialized; - - /* - * Index page. - */ - int index_page; - - /* - * Subbook ID. - * This subbook is not available, if the code is EB_SUBBOOK_INVALID. - */ - EB_Subbook_Code code; - - /* - * File descriptor and compression information for text file. - */ - Zio text_zio; - - /* - * File descriptor and compression information for graphic file. - */ - Zio graphic_zio; - - /* - * File descriptor and compression information for sound file. - */ - Zio sound_zio; - - /* - * File descriptor and compression information for movie file. - */ - Zio movie_zio; - - /* - * Title of the subbook. - */ - char title[EB_MAX_TITLE_LENGTH + 1]; - - /* - * Subbook directory name. - */ - char directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * Sub-directory names. (EPWING only) - */ - char data_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - char gaiji_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - char movie_directory_name[EB_MAX_DIRECTORY_NAME_LENGTH + 1]; - - /* - * File names. - */ - char text_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - char graphic_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - char sound_file_name[EB_MAX_FILE_NAME_LENGTH + 1]; - - /* - * Compression hints of Text, graphic and sound files. - * (temporary need, EPWING only). - */ - Zio_Code text_hint_zio_code; - Zio_Code graphic_hint_zio_code; - Zio_Code sound_hint_zio_code; - - /* - * Page number where search method titles are stored. - * (temporary need, EPWING only). - */ - int search_title_page; - - /* - * The top page of search methods. - */ - EB_Search word_alphabet; - EB_Search word_asis; - EB_Search word_kana; - EB_Search endword_alphabet; - EB_Search endword_asis; - EB_Search endword_kana; - EB_Search keyword; - EB_Search menu; - EB_Search image_menu; - EB_Search cross; - EB_Search copyright; - EB_Search text; - EB_Search sound; - - /* - * The number of multi-search methods the subbook has. - */ - int multi_count; - - /* - * The top page of multi search methods. - */ - EB_Multi_Search multis[EB_MAX_MULTI_SEARCHES]; - - /* - * Font list. - */ - EB_Font narrow_fonts[EB_MAX_FONTS]; - EB_Font wide_fonts[EB_MAX_FONTS]; - - /* - * Current narrow and wide fonts. - */ - EB_Font *narrow_current; - EB_Font *wide_current; -}; - -/* - * Length of cache buffer in a binary context. - * It must be greater than 38, size of GIF preamble. - * It must be greater than 44, size of WAVE sound header. - * It must be greater than 118, size of BMP header + info + 16 rgbquads. - */ -#define EB_SIZE_BINARY_CACHE_BUFFER 128 - -/* - * Context parameters for binary data. - */ -struct EB_Binary_Context_Struct { - /* - * Binary type ID. - * The context is not active, if this code is EB_BINARY_INVALID. - */ - EB_Binary_Code code; - - /* - * Compress information. - */ - Zio *zio; - - /* - * Location of the the binary data, relative to the start of the file. - */ - off_t location; - - /* - * Data size. - * Size zero means that the binary has no size information. - */ - size_t size; - - /* - * The current offset of binary data. - */ - size_t offset; - - /* - * Cache buffer. - */ - char cache_buffer[EB_SIZE_BINARY_CACHE_BUFFER]; - - /* - * Length of cached data. - */ - size_t cache_length; - - /* - * Current offset of cached data. - */ - size_t cache_offset; - - /* - * Width of Image. (monochrome graphic only) - */ - int width; -}; - -/* - * Context parameters for text reading. - */ -struct EB_Text_Context_Struct { - /* - * Current text content type. - * The context is not active, if this code is EB_TEXT_INVALID. - */ - EB_Text_Code code; - - /* - * Current offset pointer of the START or HONMON file. - */ - off_t location; - - /* - * The current point of a buffer on which text is written. - */ - char *out; - - /* - * Length of `out'. - */ - size_t out_rest_length; - - /* - * Unprocessed string that a hook function writes on text. - */ - char *unprocessed; - - /* - * Size of `unprocessed'. - */ - size_t unprocessed_size; - - /* - * Length of the current output text phrase. - */ - size_t out_step; - - /* - * Narrow character region flag. - */ - int narrow_flag; - - /* - * Whether a printable character has been appeared in the current - * text content. - */ - int printable_count; - - /* - * EOF flag of the current subbook. - */ - int file_end_flag; - - /* - * Status of the current text processing. - */ - EB_Text_Status_Code text_status; - - /* - * Skip until `skipcode' appears. - */ - int skip_code; - - /* - * Stop-code automatically set by EB Library. - */ - int auto_stop_code; - - /* - * The current candidate word for multi search. - */ - char candidate[EB_MAX_WORD_LENGTH + 1]; - - /* - * Whether the current text point is in the candidate word or not. - */ - int is_candidate; - - /* - * Whether the current text point is in EBXA-C gaiji area. - */ - int ebxac_gaiji_flag; -}; - -/* - * Context parameters for word search. - */ -struct EB_Search_Context_Struct { - /* - * Current search method type. - * The context is not active, if this code is EB_SEARCH_NONE. - */ - EB_Search_Code code; - - /* - * Function which compares word to search and pattern in an index page. - */ - int (*compare_pre)(const char *word, const char *pattern, - size_t length); - int (*compare_single)(const char *word, const char *pattern, - size_t length); - int (*compare_group)(const char *word, const char *pattern, - size_t length); - - /* - * Result of comparison by `compare'. - */ - int comparison_result; - - /* - * Word to search. - */ - char word[EB_MAX_WORD_LENGTH + 1]; - - /* - * Canonicalized word to search. - */ - char canonicalized_word[EB_MAX_WORD_LENGTH + 1]; - - /* - * Page which is searched currently. - */ - int page; - - /* - * Offset which is searched currently in the page. - */ - int offset; - - /* - * Page ID of the current page. - */ - int page_id; - - /* - * How many entries in the current page. - */ - int entry_count; - - /* - * Entry index pointer. - */ - int entry_index; - - /* - * Length of the current entry. - */ - int entry_length; - - /* - * Arrangement style of entries in the current page (fixed or variable). - */ - int entry_arrangement; - - /* - * In a group entry or not. - */ - int in_group_entry; - - /* - * Current heading position (for keyword search). - */ - EB_Position keyword_heading; -}; - -/* - * A book. - */ -struct EB_Book_Struct { - /* - * Book ID. - */ - EB_Book_Code code; - - /* - * Disc type. EB* or EPWING. - */ - EB_Disc_Code disc_code; - - /* - * Character code of the book. - */ - EB_Character_Code character_code; - - /* - * Path of the book. - */ - char *path; - - /* - * The length of the path. - */ - size_t path_length; - - /* - * The number of subbooks the book has. - */ - int subbook_count; - - /* - * Subbook list. - */ - EB_Subbook *subbooks; - - /* - * Current subbook. - */ - EB_Subbook *subbook_current; - - /* - * Context parameters for text reading. - */ - EB_Text_Context text_context; - - /* - * Context parameters for binary reading. - */ - EB_Binary_Context binary_context; - - /* - * Context parameters for text reading. - */ - EB_Search_Context search_contexts[EB_NUMBER_OF_SEARCH_CONTEXTS]; - - /* - * ebnet socket file. - */ -#ifdef EB_ENABLE_EBNET - int ebnet_file; -#endif - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif -}; - -/* - * In a word search, heading and text locations of a matched entry - * are stored. - */ -struct EB_Hit_Struct { - /* - * Heading position. - */ - EB_Position heading; - - /* - * Text position. - */ - EB_Position text; -}; - -/* - * A text hook. - */ -struct EB_Hook_Struct { - /* - * Hook code. - */ - EB_Hook_Code code; - - /* - * Hook function for the hook code `code'. - */ - EB_Error_Code (*function)(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -}; - -/* - * A set of text hooks. - */ -struct EB_Hookset_Struct { - /* - * List of hooks. - */ - EB_Hook hooks[EB_NUMBER_OF_HOOKS]; - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif -}; - -/* - * An entry of book list. - */ -struct EB_BookList_Entry { - /* - * name. - */ - char *name; - - /* - * Title. - */ - char *title; -}; - -/* - * Book list. - */ -struct EB_BookList { - /* - * Book List ID. - */ - EB_Book_Code code; - - /* - * The number of book entries this list has. - */ - int entry_count; - - /* - * The maximum number of book entries that `entries' can memory. - */ - int max_entry_count; - - /* - * Book entries. - */ - EB_BookList_Entry *entries; - - /* - * Lock. - */ -#ifdef EB_ENABLE_PTHREAD - EB_Lock lock; -#endif -}; - -/* for backward compatibility */ -#define EB_Multi_Entry_Code int - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_DEFS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/eb.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/eb.h deleted file mode 100644 index 9adf57a9e4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/eb.h +++ /dev/null @@ -1,155 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_EB_H -#define EB_EB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -#include - -/* - * Function declarations. - */ -/* book.c */ -void eb_initialize_book(EB_Book *book); -EB_Error_Code eb_bind(EB_Book *book, const char *path); -void eb_finalize_book(EB_Book *book); -int eb_is_bound(EB_Book *book); -EB_Error_Code eb_path(EB_Book *book, char *path); -EB_Error_Code eb_disc_type(EB_Book *book, EB_Disc_Code *disc_code); -EB_Error_Code eb_character_code(EB_Book *book, - EB_Character_Code *character_code); - -/* copyright.h */ -int eb_have_copyright(EB_Book *book); -EB_Error_Code eb_copyright(EB_Book *book, EB_Position *position); -EB_Error_Code eb_search_cross(EB_Book *book, - const char * const input_words[]); - -/* cross.c */ -int eb_have_cross_search(EB_Book *book); - -/* eb.c */ -EB_Error_Code eb_initialize_library(void); -void eb_finalize_library(void); - -/* endword.c */ -int eb_have_endword_search(EB_Book *book); -EB_Error_Code eb_search_endword(EB_Book *book, const char *input_word); - -/* exactword.c */ -int eb_have_exactword_search(EB_Book *book); -EB_Error_Code eb_search_exactword(EB_Book *book, const char *input_word); - -/* graphic.c */ -int eb_have_graphic_search(EB_Book *book); - -/* keyword.c */ -int eb_have_keyword_search(EB_Book *book); -EB_Error_Code eb_search_keyword(EB_Book *book, - const char * const input_words[]); - -/* lock.c */ -int eb_pthread_enabled(void); - -/* log.c */ -void eb_set_log_function(void (*function)(const char *message, va_list ap)); -void eb_enable_log(void); -void eb_disable_log(void); -void eb_log(const char *message, ...); -void eb_log_stderr(const char *message, va_list ap); - -/* menu.c */ -int eb_have_menu(EB_Book *book); -EB_Error_Code eb_menu(EB_Book *book, EB_Position *position); -int eb_have_image_menu(EB_Book *book); -EB_Error_Code eb_image_menu(EB_Book *book, EB_Position *position); - -/* multi.c */ -int eb_have_multi_search(EB_Book *book); -EB_Error_Code eb_multi_title(EB_Book *book, EB_Multi_Search_Code multi_id, - char *title); -EB_Error_Code eb_multi_search_list(EB_Book *book, - EB_Multi_Search_Code *search_list, int *search_count); -EB_Error_Code eb_multi_entry_count(EB_Book *book, - EB_Multi_Search_Code multi_id, int *entry_count); -EB_Error_Code eb_multi_entry_list(EB_Book *book, - EB_Multi_Search_Code multi_id, int *entry_list, int *entry_count); -EB_Error_Code eb_multi_entry_label(EB_Book *book, - EB_Multi_Search_Code multi_id, int entry_index, char *label); -int eb_multi_entry_have_candidates(EB_Book *book, - EB_Multi_Search_Code multi_id, int entry_index); -EB_Error_Code eb_multi_entry_candidates(EB_Book *book, - EB_Multi_Search_Code multi_id, int entry_index, EB_Position *position); -EB_Error_Code eb_search_multi(EB_Book *book, EB_Multi_Search_Code multi_id, - const char * const input_words[]); - -/* text.c */ -int eb_have_text(EB_Book *book); -EB_Error_Code eb_text(EB_Book *book, EB_Position *position); - -/* search.c */ -EB_Error_Code eb_hit_list(EB_Book *book, int max_hit_count, EB_Hit *hit_list, - int *hit_count); - -/* subbook.c */ -EB_Error_Code eb_load_all_subbooks(EB_Book *book); -EB_Error_Code eb_subbook_list(EB_Book *book, EB_Subbook_Code *subbook_list, - int *subbook_count); -EB_Error_Code eb_subbook(EB_Book *book, EB_Subbook_Code *subbook_code); -EB_Error_Code eb_subbook_title(EB_Book *book, char *title); -EB_Error_Code eb_subbook_title2(EB_Book *book, EB_Subbook_Code subbook_code, - char *title); -EB_Error_Code eb_subbook_directory(EB_Book *book, char *directory); -EB_Error_Code eb_subbook_directory2(EB_Book *book, - EB_Subbook_Code subbook_code, char *directory); -EB_Error_Code eb_set_subbook(EB_Book *book, EB_Subbook_Code subbook_code); -void eb_unset_subbook(EB_Book *book); - -/* word.c */ -int eb_have_word_search(EB_Book *book); -EB_Error_Code eb_search_word(EB_Book *book, const char *input_word); - -/* for backward compatibility */ -#define eb_suspend eb_unset_subbook -#define eb_initialize_all_subbooks eb_load_all_subbooks - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_EB_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/error.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/error.h deleted file mode 100644 index b2f2b392e5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/error.h +++ /dev/null @@ -1,150 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_ERROR_H -#define EB_ERROR_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Error codes. - */ -#define EB_SUCCESS 0 -#define EB_ERR_MEMORY_EXHAUSTED 1 -#define EB_ERR_EMPTY_FILE_NAME 2 -#define EB_ERR_TOO_LONG_FILE_NAME 3 -#define EB_ERR_BAD_FILE_NAME 4 - -#define EB_ERR_BAD_DIR_NAME 5 -#define EB_ERR_TOO_LONG_WORD 6 -#define EB_ERR_BAD_WORD 7 -#define EB_ERR_EMPTY_WORD 8 -#define EB_ERR_FAIL_GETCWD 9 - -#define EB_ERR_FAIL_OPEN_CAT 10 -#define EB_ERR_FAIL_OPEN_CATAPP 11 -#define EB_ERR_FAIL_OPEN_TEXT 12 -#define EB_ERR_FAIL_OPEN_FONT 13 -#define EB_ERR_FAIL_OPEN_APP 14 - -#define EB_ERR_FAIL_OPEN_BINARY 15 -#define EB_ERR_FAIL_READ_CAT 16 -#define EB_ERR_FAIL_READ_CATAPP 17 -#define EB_ERR_FAIL_READ_TEXT 18 -#define EB_ERR_FAIL_READ_FONT 19 - -#define EB_ERR_FAIL_READ_APP 20 -#define EB_ERR_FAIL_READ_BINARY 21 -#define EB_ERR_FAIL_SEEK_CAT 22 -#define EB_ERR_FAIL_SEEK_CATAPP 23 -#define EB_ERR_FAIL_SEEK_TEXT 24 - -#define EB_ERR_FAIL_SEEK_FONT 25 -#define EB_ERR_FAIL_SEEK_APP 26 -#define EB_ERR_FAIL_SEEK_BINARY 27 -#define EB_ERR_UNEXP_CAT 28 -#define EB_ERR_UNEXP_CATAPP 29 - -#define EB_ERR_UNEXP_TEXT 30 -#define EB_ERR_UNEXP_FONT 31 -#define EB_ERR_UNEXP_APP 32 -#define EB_ERR_UNEXP_BINARY 33 -#define EB_ERR_UNBOUND_BOOK 34 - -#define EB_ERR_UNBOUND_APP 35 -#define EB_ERR_NO_SUB 36 -#define EB_ERR_NO_APPSUB 37 -#define EB_ERR_NO_FONT 38 -#define EB_ERR_NO_TEXT 39 - -#define EB_ERR_NO_STOPCODE 40 -#define EB_ERR_NO_ALT 41 -#define EB_ERR_NO_CUR_SUB 42 -#define EB_ERR_NO_CUR_APPSUB 43 -#define EB_ERR_NO_CUR_FONT 44 - -#define EB_ERR_NO_CUR_BINARY 45 -#define EB_ERR_NO_SUCH_SUB 46 -#define EB_ERR_NO_SUCH_APPSUB 47 -#define EB_ERR_NO_SUCH_FONT 48 -#define EB_ERR_NO_SUCH_CHAR_BMP 49 - -#define EB_ERR_NO_SUCH_CHAR_TEXT 50 -#define EB_ERR_NO_SUCH_SEARCH 51 -#define EB_ERR_NO_SUCH_HOOK 52 -#define EB_ERR_NO_SUCH_BINARY 53 -#define EB_ERR_DIFF_CONTENT 54 - -#define EB_ERR_NO_PREV_SEARCH 55 -#define EB_ERR_NO_SUCH_MULTI_ID 56 -#define EB_ERR_NO_SUCH_ENTRY_ID 57 -#define EB_ERR_TOO_MANY_WORDS 58 -#define EB_ERR_NO_WORD 59 - -#define EB_ERR_NO_CANDIDATES 60 -#define EB_ERR_END_OF_CONTENT 61 -#define EB_ERR_NO_PREV_SEEK 62 -#define EB_ERR_EBNET_UNSUPPORTED 63 -#define EB_ERR_EBNET_FAIL_CONNECT 64 - -#define EB_ERR_EBNET_SERVER_BUSY 65 -#define EB_ERR_EBNET_NO_PERMISSION 66 -#define EB_ERR_UNBOUND_BOOKLIST 67 -#define EB_ERR_NO_SUCH_BOOK 68 - - -/* - * The number of error codes. - */ -#define EB_NUMBER_OF_ERRORS 69 - -/* - * The maximum length of an error message. - */ -#define EB_MAX_ERROR_MESSAGE_LENGTH 127 - -/* - * Function declarations. - */ -/* error.c */ -const char *eb_error_string(EB_Error_Code error_code); -const char *eb_error_message(EB_Error_Code error_code); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_ERROR_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/font.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/font.h deleted file mode 100644 index bd4d675802..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/font.h +++ /dev/null @@ -1,200 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_FONT_H -#define EB_FONT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Font types. - */ -#define EB_FONT_16 0 -#define EB_FONT_24 1 -#define EB_FONT_30 2 -#define EB_FONT_48 3 -#define EB_FONT_INVALID -1 - -/* - * Font sizes. - */ -#define EB_SIZE_NARROW_FONT_16 16 -#define EB_SIZE_WIDE_FONT_16 32 -#define EB_SIZE_NARROW_FONT_24 48 -#define EB_SIZE_WIDE_FONT_24 72 -#define EB_SIZE_NARROW_FONT_30 60 -#define EB_SIZE_WIDE_FONT_30 120 -#define EB_SIZE_NARROW_FONT_48 144 -#define EB_SIZE_WIDE_FONT_48 288 - -/* - * Font width. - */ -#define EB_WIDTH_NARROW_FONT_16 8 -#define EB_WIDTH_WIDE_FONT_16 16 -#define EB_WIDTH_NARROW_FONT_24 16 -#define EB_WIDTH_WIDE_FONT_24 24 -#define EB_WIDTH_NARROW_FONT_30 16 -#define EB_WIDTH_WIDE_FONT_30 32 -#define EB_WIDTH_NARROW_FONT_48 24 -#define EB_WIDTH_WIDE_FONT_48 48 - -/* - * Font height. - */ -#define EB_HEIGHT_FONT_16 16 -#define EB_HEIGHT_FONT_24 24 -#define EB_HEIGHT_FONT_30 30 -#define EB_HEIGHT_FONT_48 48 - -/* - * Bitmap image sizes. - */ -#define EB_SIZE_NARROW_FONT_16_XBM 184 -#define EB_SIZE_WIDE_FONT_16_XBM 284 -#define EB_SIZE_NARROW_FONT_16_XPM 266 -#define EB_SIZE_WIDE_FONT_16_XPM 395 -#define EB_SIZE_NARROW_FONT_16_GIF 186 -#define EB_SIZE_WIDE_FONT_16_GIF 314 -#define EB_SIZE_NARROW_FONT_16_BMP 126 -#define EB_SIZE_WIDE_FONT_16_BMP 126 -#define EB_SIZE_NARROW_FONT_16_PNG 131 -#define EB_SIZE_WIDE_FONT_16_PNG 147 - -#define EB_SIZE_NARROW_FONT_24_XBM 383 -#define EB_SIZE_WIDE_FONT_24_XBM 533 -#define EB_SIZE_NARROW_FONT_24_XPM 555 -#define EB_SIZE_WIDE_FONT_24_XPM 747 -#define EB_SIZE_NARROW_FONT_24_GIF 450 -#define EB_SIZE_WIDE_FONT_24_GIF 642 -#define EB_SIZE_NARROW_FONT_24_BMP 158 -#define EB_SIZE_WIDE_FONT_24_BMP 158 -#define EB_SIZE_NARROW_FONT_24_PNG 171 -#define EB_SIZE_WIDE_FONT_24_PNG 195 - -#define EB_SIZE_NARROW_FONT_30_XBM 458 -#define EB_SIZE_WIDE_FONT_30_XBM 833 -#define EB_SIZE_NARROW_FONT_30_XPM 675 -#define EB_SIZE_WIDE_FONT_30_XPM 1155 -#define EB_SIZE_NARROW_FONT_30_GIF 552 -#define EB_SIZE_WIDE_FONT_30_GIF 1032 -#define EB_SIZE_NARROW_FONT_30_BMP 182 -#define EB_SIZE_WIDE_FONT_30_BMP 182 -#define EB_SIZE_NARROW_FONT_30_PNG 189 -#define EB_SIZE_WIDE_FONT_30_PNG 249 - -#define EB_SIZE_NARROW_FONT_48_XBM 983 -#define EB_SIZE_WIDE_FONT_48_XBM 1883 -#define EB_SIZE_NARROW_FONT_48_XPM 1419 -#define EB_SIZE_WIDE_FONT_48_XPM 2571 -#define EB_SIZE_NARROW_FONT_48_GIF 1242 -#define EB_SIZE_WIDE_FONT_48_GIF 2394 -#define EB_SIZE_NARROW_FONT_48_BMP 254 -#define EB_SIZE_WIDE_FONT_48_BMP 446 -#define EB_SIZE_NARROW_FONT_48_PNG 291 -#define EB_SIZE_WIDE_FONT_48_PNG 435 - -#define EB_SIZE_FONT_IMAGE EB_SIZE_WIDE_FONT_48_XPM - -/* - * Function declarations. - */ -/* bitmap.c */ -EB_Error_Code eb_narrow_font_xbm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_xpm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_gif_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_bmp_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_png_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_xbm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_xpm_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_gif_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_bmp_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_png_size(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_bitmap_to_xbm(const char *bitmap, int width, int height, - char *xbm, size_t *xbm_length); -EB_Error_Code eb_bitmap_to_xpm(const char *bitmap, int width, int height, - char *xpm, size_t *xpm_length); -EB_Error_Code eb_bitmap_to_gif(const char *bitmap, int width, int height, - char *gif, size_t *gif_length); -EB_Error_Code eb_bitmap_to_bmp(const char *bitmap, int width, int height, - char *bmp, size_t *bmp_length); -EB_Error_Code eb_bitmap_to_png(const char *bitmap, int width, int height, - char *png, size_t *png_length); - -/* font.c */ -EB_Error_Code eb_font(EB_Book *book, EB_Font_Code *font_code); -EB_Error_Code eb_set_font(EB_Book *book, EB_Font_Code font_code); -void eb_unset_font(EB_Book *book); -EB_Error_Code eb_font_list(EB_Book *book, EB_Font_Code *font_list, - int *font_count); -int eb_have_font(EB_Book *book, EB_Font_Code font_code); -EB_Error_Code eb_font_height(EB_Book *book, int *height); -EB_Error_Code eb_font_height2(EB_Font_Code font_code, int *height); - -/* narwfont.c */ -int eb_have_narrow_font(EB_Book *book); -EB_Error_Code eb_narrow_font_width(EB_Book *book, int *width); -EB_Error_Code eb_narrow_font_width2(EB_Font_Code font_code, int *width); -EB_Error_Code eb_narrow_font_size(EB_Book *book, size_t *size); -EB_Error_Code eb_narrow_font_size2(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_narrow_font_start(EB_Book *book, int *start); -EB_Error_Code eb_narrow_font_end(EB_Book *book, int *end); -EB_Error_Code eb_narrow_font_character_bitmap(EB_Book *book, int, char *); -EB_Error_Code eb_forward_narrow_font_character(EB_Book *book, int, int *); -EB_Error_Code eb_backward_narrow_font_character(EB_Book *book, int, int *); - -/* widefont.c */ -int eb_have_wide_font(EB_Book *book); -EB_Error_Code eb_wide_font_width(EB_Book *book, int *width); -EB_Error_Code eb_wide_font_width2(EB_Font_Code font_code, int *width); -EB_Error_Code eb_wide_font_size(EB_Book *book, size_t *size); -EB_Error_Code eb_wide_font_size2(EB_Font_Code font_code, size_t *size); -EB_Error_Code eb_wide_font_start(EB_Book *book, int *start); -EB_Error_Code eb_wide_font_end(EB_Book *book, int *end); -EB_Error_Code eb_wide_font_character_bitmap(EB_Book *book, - int character_number, char *bitmap); -EB_Error_Code eb_forward_wide_font_character(EB_Book *book, int n, - int *character_number); -EB_Error_Code eb_backward_wide_font_character(EB_Book *book, int n, - int *character_number); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_FONT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/sysdefs.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/sysdefs.h deleted file mode 100644 index e66f8776ca..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/sysdefs.h +++ /dev/null @@ -1,4 +0,0 @@ -/* automatically generated by Makefile. */ -#define EB_VERSION_STRING "4.4.3" -#define EB_VERSION_MAJOR 4 -#define EB_VERSION_MINOR 4 diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/text.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/text.h deleted file mode 100644 index caba03eab1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/text.h +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- C -*- - * Copyright (c) 1997-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef EB_TEXT_H -#define EB_TEXT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef EB_BUILD_LIBRARY -#include "defs.h" -#else -#include -#endif - -/* - * Hook codes. - * (When you add or remove a hook, update EB_NUMER_OF_HOOKS in defs.h.) - */ -#define EB_HOOK_NULL -1 -#define EB_HOOK_INITIALIZE 0 -#define EB_HOOK_BEGIN_NARROW 1 -#define EB_HOOK_END_NARROW 2 -#define EB_HOOK_BEGIN_SUBSCRIPT 3 -#define EB_HOOK_END_SUBSCRIPT 4 - -#define EB_HOOK_SET_INDENT 5 -#define EB_HOOK_NEWLINE 6 -#define EB_HOOK_BEGIN_SUPERSCRIPT 7 -#define EB_HOOK_END_SUPERSCRIPT 8 -#define EB_HOOK_BEGIN_NO_NEWLINE 9 - -#define EB_HOOK_END_NO_NEWLINE 10 -#define EB_HOOK_BEGIN_EMPHASIS 11 -#define EB_HOOK_END_EMPHASIS 12 -#define EB_HOOK_BEGIN_CANDIDATE 13 -#define EB_HOOK_END_CANDIDATE_GROUP 14 - -#define EB_HOOK_END_CANDIDATE_LEAF 15 -#define EB_HOOK_BEGIN_REFERENCE 16 -#define EB_HOOK_END_REFERENCE 17 -#define EB_HOOK_BEGIN_KEYWORD 18 -#define EB_HOOK_END_KEYWORD 19 - -#define EB_HOOK_NARROW_FONT 20 -#define EB_HOOK_WIDE_FONT 21 -#define EB_HOOK_ISO8859_1 22 -#define EB_HOOK_NARROW_JISX0208 23 -#define EB_HOOK_WIDE_JISX0208 24 - -#define EB_HOOK_GB2312 25 -#define EB_HOOK_BEGIN_MONO_GRAPHIC 26 -#define EB_HOOK_END_MONO_GRAPHIC 27 -#define EB_HOOK_BEGIN_GRAY_GRAPHIC 28 -#define EB_HOOK_END_GRAY_GRAPHIC 29 - -#define EB_HOOK_BEGIN_COLOR_BMP 30 -#define EB_HOOK_BEGIN_COLOR_JPEG 31 -#define EB_HOOK_BEGIN_IN_COLOR_BMP 32 -#define EB_HOOK_BEGIN_IN_COLOR_JPEG 33 -#define EB_HOOK_END_COLOR_GRAPHIC 34 - -#define EB_HOOK_END_IN_COLOR_GRAPHIC 35 -#define EB_HOOK_BEGIN_WAVE 36 -#define EB_HOOK_END_WAVE 37 -#define EB_HOOK_BEGIN_MPEG 38 -#define EB_HOOK_END_MPEG 39 - -#define EB_HOOK_BEGIN_GRAPHIC_REFERENCE 40 -#define EB_HOOK_END_GRAPHIC_REFERENCE 41 -#define EB_HOOK_GRAPHIC_REFERENCE 42 -#define EB_HOOK_BEGIN_DECORATION 43 -#define EB_HOOK_END_DECORATION 44 - -#define EB_HOOK_BEGIN_IMAGE_PAGE 45 -#define EB_HOOK_END_IMAGE_PAGE 46 -#define EB_HOOK_BEGIN_CLICKABLE_AREA 47 -#define EB_HOOK_END_CLICKABLE_AREA 48 - -#define EB_HOOK_BEGIN_UNICODE 49 -#define EB_HOOK_END_UNICODE 50 -#define EB_HOOK_BEGIN_EBXAC_GAIJI 51 -#define EB_HOOK_END_EBXAC_GAIJI 52 -#define EB_HOOK_EBXAC_GAIJI 53 - -/* - * Function declarations. - */ -/* hook.c */ -void eb_initialize_hookset(EB_Hookset *hookset); -void eb_finalize_hookset(EB_Hookset *hookset); -EB_Error_Code eb_set_hook(EB_Hookset *hookset, const EB_Hook *hook); -EB_Error_Code eb_set_hooks(EB_Hookset *hookset, const EB_Hook *hook); -EB_Error_Code eb_hook_euc_to_ascii(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_stop_code(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_narrow_character_text(EB_Book *book, - EB_Appendix *appendix, void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_wide_character_text(EB_Book *book, - EB_Appendix *appendix, void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_newline(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); -EB_Error_Code eb_hook_empty(EB_Book *book, EB_Appendix *appendix, - void *container, EB_Hook_Code hook_code, int argc, - const unsigned int *argv); - -/* readtext.c */ -EB_Error_Code eb_seek_text(EB_Book *book, const EB_Position *position); -EB_Error_Code eb_tell_text(EB_Book *book, EB_Position *position); -EB_Error_Code eb_read_text(EB_Book *book, EB_Appendix *appendix, - EB_Hookset *hookset, void *container, size_t text_max_length, char *text, - ssize_t *text_length); -EB_Error_Code eb_read_heading(EB_Book *book, EB_Appendix *appendix, - EB_Hookset *hookset, void *container, size_t text_max_length, char *text, - ssize_t *text_length); -EB_Error_Code eb_read_rawtext(EB_Book *book, size_t text_max_length, - char *text, ssize_t *text_length); -int eb_is_text_stopped(EB_Book *book); -EB_Error_Code eb_write_text_byte1(EB_Book *book, int byte1); -EB_Error_Code eb_write_text_byte2(EB_Book *book, int byte1, int byte2); -EB_Error_Code eb_write_text_string(EB_Book *book, const char *string); -EB_Error_Code eb_write_text(EB_Book *book, const char * stream, - size_t stream_length); -const char *eb_current_candidate(EB_Book *book); -EB_Error_Code eb_forward_text(EB_Book *book, EB_Appendix *appendix); -EB_Error_Code eb_backward_text(EB_Book *book, EB_Appendix *appendix); - -#ifdef __cplusplus -} -#endif - -#endif /* not EB_TEXT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/zio.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/zio.h deleted file mode 100644 index 0cb7bbd80a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/eb/zio.h +++ /dev/null @@ -1,237 +0,0 @@ -/* -*- C -*- - * Copyright (c) 2001-2006 Motoyuki Kasahara - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#ifndef ZIO_H -#define ZIO_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* - * Header size of the ebzip compression file. - */ -#define ZIO_SIZE_EBZIP_HEADER 22 - -/* - * Margin size for ebzip compression buffer. - * (Since compressed data is larger than original in the worst case, - * we must add margin to a compression buffer.) - */ -#define ZIO_SIZE_EBZIP_MARGIN 1024 - -/* - * Maximum ebzio compression level. - */ -#define ZIO_MAX_EBZIP_LEVEL 5 - -/* - * Huffman node types. - */ -#define ZIO_HUFFMAN_NODE_INTERMEDIATE 0 -#define ZIO_HUFFMAN_NODE_EOF 1 -#define ZIO_HUFFMAN_NODE_LEAF8 2 -#define ZIO_HUFFMAN_NODE_LEAF16 3 -#define ZIO_HUFFMAN_NODE_LEAF32 4 - -/* - * Compression type codes. - */ -#define ZIO_PLAIN 0 -#define ZIO_EBZIP1 1 -#define ZIO_EPWING 2 -#define ZIO_EPWING6 3 -#define ZIO_SEBXA 4 -#define ZIO_INVALID -1 -#define ZIO_REOPEN -2 - -/* - * Compression type. - */ -typedef int Zio_Code; - -/* - * A node of static Huffman tree. - */ -typedef struct Zio_Huffman_Node_Struct Zio_Huffman_Node; - -struct Zio_Huffman_Node_Struct { - /* - * node type (ITNERMEDIATE, LEAF8, LEAF16, LEAF32 or EOF). - */ - int type; - - /* - * Value of a leaf node. - */ - unsigned int value; - - /* - * Frequency of a node. - */ - int frequency; - - /* - * Left child. - */ - Zio_Huffman_Node *left; - - /* - * Right child. - */ - Zio_Huffman_Node *right; -}; - -/* - * Compression information of a book. - */ -typedef struct Zio_Struct Zio; - -struct Zio_Struct { - /* - * ID. - */ - int id; - - /* - * Zio type. (PLAIN, EBZIP, EPWING, EPWING6 or SEBXA) - */ - Zio_Code code; - - /* - * File descriptor. - */ - int file; - - /* - * Current location. - */ - off_t location; - - /* - * Size of an uncompressed file. - */ - off_t file_size; - - /* - * Slice size of an EBZIP compressed file. - */ - size_t slice_size; - - /* - * Compression level. (EBZIP compression only) - */ - int zip_level; - - /* - * Length of an index. (EBZIP compression only) - */ - int index_width; - - /* - * Adler-32 check sum of an uncompressed file. (EBZIP compression only) - */ - unsigned int crc; - - /* - * mtime of an uncompressed file. (EBZIP compression only) - */ - time_t mtime; - - /* - * Location of an index table. (EPWING and S-EBXA compression only) - */ - off_t index_location; - - /* - * Length of an index table. (EPWING and S-EBXA compression only) - */ - size_t index_length; - - /* - * Location of a frequency table. (EPWING compression only) - */ - off_t frequencies_location; - - /* - * Length of a frequency table. (EPWING compression only) - */ - size_t frequencies_length; - - /* - * Huffman tree nodes. (EPWING compression only) - */ - Zio_Huffman_Node *huffman_nodes; - - /* - * Root node of a Huffman tree. (EPWING compression only) - */ - Zio_Huffman_Node *huffman_root; - - /* - * Region of compressed pages. (S-EBXA compression only) - */ - off_t zio_start_location; - off_t zio_end_location; - - /* - * Add this value to offset written in index. (S-EBXA compression only) - */ - off_t index_base; - - /* - * ebnet mode flag. - */ - int is_ebnet; -}; - -/* - * Function declarations. - */ -/* zio.c */ -int zio_initialize_library(void); -void zio_finalize_library(void); -void zio_initialize(Zio *zio); -void zio_finalize(Zio *zio); -int zio_set_sebxa_mode(Zio *zio, off_t index_location, off_t index_base, - off_t zio_start_location, off_t zio_end_location); -int zio_open(Zio *zio, const char *file_name, Zio_Code zio_code); -void zio_close(Zio *zio); -int zio_file(Zio *zio); -Zio_Code zio_mode(Zio *zio); -off_t zio_lseek(Zio *zio, off_t offset, int whence); -ssize_t zio_read(Zio *zio, char *buffer, size_t length); - -#ifdef __cplusplus -} -#endif - -#endif /* not ZIO_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/affentry.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/affentry.hxx deleted file mode 100644 index eaf361fcce..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/affentry.hxx +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef _AFFIX_HXX_ -#define _AFFIX_HXX_ - -#include "hunvisapi.h" - -#include "atypes.hxx" -#include "baseaffix.hxx" -#include "affixmgr.hxx" - -/* A Prefix Entry */ - -class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected AffEntry -{ - AffixMgr* pmyMgr; - - PfxEntry * next; - PfxEntry * nexteq; - PfxEntry * nextne; - PfxEntry * flgnxt; - -public: - - PfxEntry(AffixMgr* pmgr, affentry* dp ); - ~PfxEntry(); - - inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); } - struct hentry * checkword(const char * word, int len, char in_compound, - const FLAG needflag = FLAG_NULL); - - struct hentry * check_twosfx(const char * word, int len, char in_compound, const FLAG needflag = NULL); - - char * check_morph(const char * word, int len, char in_compound, - const FLAG needflag = FLAG_NULL); - - char * check_twosfx_morph(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - - inline FLAG getFlag() { return aflag; } - inline const char * getKey() { return appnd; } - char * add(const char * word, int len); - - inline short getKeyLen() { return appndl; } - - inline const char * getMorph() { return morphcode; } - - inline const unsigned short * getCont() { return contclass; } - inline short getContLen() { return contclasslen; } - - inline PfxEntry * getNext() { return next; } - inline PfxEntry * getNextNE() { return nextne; } - inline PfxEntry * getNextEQ() { return nexteq; } - inline PfxEntry * getFlgNxt() { return flgnxt; } - - inline void setNext(PfxEntry * ptr) { next = ptr; } - inline void setNextNE(PfxEntry * ptr) { nextne = ptr; } - inline void setNextEQ(PfxEntry * ptr) { nexteq = ptr; } - inline void setFlgNxt(PfxEntry * ptr) { flgnxt = ptr; } - - inline char * nextchar(char * p); - inline int test_condition(const char * st); -}; - - - - -/* A Suffix Entry */ - -class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected AffEntry -{ - AffixMgr* pmyMgr; - char * rappnd; - - SfxEntry * next; - SfxEntry * nexteq; - SfxEntry * nextne; - SfxEntry * flgnxt; - - SfxEntry * l_morph; - SfxEntry * r_morph; - SfxEntry * eq_morph; - -public: - - SfxEntry(AffixMgr* pmgr, affentry* dp ); - ~SfxEntry(); - - inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); } - struct hentry * checkword(const char * word, int len, int optflags, - PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, -// const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound=IN_CPD_NOT); - const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, const FLAG badflag = 0); - - struct hentry * check_twosfx(const char * word, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = NULL); - - char * check_twosfx_morph(const char * word, int len, int optflags, - PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); - struct hentry * get_next_homonym(struct hentry * he); - struct hentry * get_next_homonym(struct hentry * word, int optflags, PfxEntry* ppfx, - const FLAG cclass, const FLAG needflag); - - - inline FLAG getFlag() { return aflag; } - inline const char * getKey() { return rappnd; } - char * add(const char * word, int len); - - - inline const char * getMorph() { return morphcode; } - - inline const unsigned short * getCont() { return contclass; } - inline short getContLen() { return contclasslen; } - inline const char * getAffix() { return appnd; } - - inline short getKeyLen() { return appndl; } - - inline SfxEntry * getNext() { return next; } - inline SfxEntry * getNextNE() { return nextne; } - inline SfxEntry * getNextEQ() { return nexteq; } - - inline SfxEntry * getLM() { return l_morph; } - inline SfxEntry * getRM() { return r_morph; } - inline SfxEntry * getEQM() { return eq_morph; } - inline SfxEntry * getFlgNxt() { return flgnxt; } - - inline void setNext(SfxEntry * ptr) { next = ptr; } - inline void setNextNE(SfxEntry * ptr) { nextne = ptr; } - inline void setNextEQ(SfxEntry * ptr) { nexteq = ptr; } - inline void setFlgNxt(SfxEntry * ptr) { flgnxt = ptr; } - - inline char * nextchar(char * p); - inline int test_condition(const char * st, const char * begin); - -}; - -#endif - - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/affixmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/affixmgr.hxx deleted file mode 100644 index d9c625aed0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/affixmgr.hxx +++ /dev/null @@ -1,250 +0,0 @@ -#ifndef _AFFIXMGR_HXX_ -#define _AFFIXMGR_HXX_ - -#include "hunvisapi.h" - -#include - -#include "atypes.hxx" -#include "baseaffix.hxx" -#include "hashmgr.hxx" -#include "phonet.hxx" -#include "replist.hxx" - -// check flag duplication -#define dupSFX (1 << 0) -#define dupPFX (1 << 1) - -class PfxEntry; -class SfxEntry; - -class LIBHUNSPELL_DLL_EXPORTED AffixMgr -{ - - PfxEntry * pStart[SETSIZE]; - SfxEntry * sStart[SETSIZE]; - PfxEntry * pFlag[SETSIZE]; - SfxEntry * sFlag[SETSIZE]; - HashMgr * pHMgr; - HashMgr ** alldic; - int * maxdic; - char * keystring; - char * trystring; - char * encoding; - struct cs_info * csconv; - int utf8; - int complexprefixes; - FLAG compoundflag; - FLAG compoundbegin; - FLAG compoundmiddle; - FLAG compoundend; - FLAG compoundroot; - FLAG compoundforbidflag; - FLAG compoundpermitflag; - int checkcompounddup; - int checkcompoundrep; - int checkcompoundcase; - int checkcompoundtriple; - int simplifiedtriple; - FLAG forbiddenword; - FLAG nosuggest; - FLAG nongramsuggest; - FLAG needaffix; - int cpdmin; - int numrep; - replentry * reptable; - RepList * iconvtable; - RepList * oconvtable; - int nummap; - mapentry * maptable; - int numbreak; - char ** breaktable; - int numcheckcpd; - patentry * checkcpdtable; - int simplifiedcpd; - int numdefcpd; - flagentry * defcpdtable; - phonetable * phone; - int maxngramsugs; - int maxcpdsugs; - int maxdiff; - int onlymaxdiff; - int nosplitsugs; - int sugswithdots; - int cpdwordmax; - int cpdmaxsyllable; - char * cpdvowels; - w_char * cpdvowels_utf16; - int cpdvowels_utf16_len; - char * cpdsyllablenum; - const char * pfxappnd; // BUG: not stateless - const char * sfxappnd; // BUG: not stateless - FLAG sfxflag; // BUG: not stateless - char * derived; // BUG: not stateless - SfxEntry * sfx; // BUG: not stateless - PfxEntry * pfx; // BUG: not stateless - int checknum; - char * wordchars; - unsigned short * wordchars_utf16; - int wordchars_utf16_len; - char * ignorechars; - unsigned short * ignorechars_utf16; - int ignorechars_utf16_len; - char * version; - char * lang; - int langnum; - FLAG lemma_present; - FLAG circumfix; - FLAG onlyincompound; - FLAG keepcase; - FLAG forceucase; - FLAG warn; - int forbidwarn; - FLAG substandard; - int checksharps; - int fullstrip; - - int havecontclass; // boolean variable - char contclasses[CONTSIZE]; // flags of possible continuing classes (twofold affix) - -public: - - AffixMgr(const char * affpath, HashMgr** ptr, int * md, - const char * key = NULL); - ~AffixMgr(); - struct hentry * affix_check(const char * word, int len, - const unsigned short needflag = (unsigned short) 0, - char in_compound = IN_CPD_NOT); - struct hentry * prefix_check(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - inline int isSubset(const char * s1, const char * s2); - struct hentry * prefix_check_twosfx(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - inline int isRevSubset(const char * s1, const char * end_of_s2, int len); - struct hentry * suffix_check(const char * word, int len, int sfxopts, - PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, - const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, - char in_compound = IN_CPD_NOT); - struct hentry * suffix_check_twosfx(const char * word, int len, - int sfxopts, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL); - - char * affix_check_morph(const char * word, int len, - const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); - char * prefix_check_morph(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - char * suffix_check_morph (const char * word, int len, int sfxopts, - PfxEntry * ppfx, const FLAG cclass = FLAG_NULL, - const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT); - - char * prefix_check_twosfx_morph(const char * word, int len, - char in_compound, const FLAG needflag = FLAG_NULL); - char * suffix_check_twosfx_morph(const char * word, int len, - int sfxopts, PfxEntry * ppfx, const FLAG needflag = FLAG_NULL); - - char * morphgen(char * ts, int wl, const unsigned short * ap, - unsigned short al, char * morph, char * targetmorph, int level); - - int expand_rootword(struct guessword * wlst, int maxn, const char * ts, - int wl, const unsigned short * ap, unsigned short al, char * bad, - int, char *); - - short get_syllable (const char * word, int wlen); - int cpdrep_check(const char * word, int len); - int cpdpat_check(const char * word, int len, hentry * r1, hentry * r2, - const char affixed); - int defcpd_check(hentry *** words, short wnum, hentry * rv, - hentry ** rwords, char all); - int cpdcase_check(const char * word, int len); - inline int candidate_check(const char * word, int len); - void setcminmax(int * cmin, int * cmax, const char * word, int len); - struct hentry * compound_check(const char * word, int len, short wordnum, - short numsyllable, short maxwordnum, short wnum, hentry ** words, - char hu_mov_rule, char is_sug, int * info); - - int compound_check_morph(const char * word, int len, short wordnum, - short numsyllable, short maxwordnum, short wnum, hentry ** words, - char hu_mov_rule, char ** result, char * partresult); - - struct hentry * lookup(const char * word); - int get_numrep() const; - struct replentry * get_reptable() const; - RepList * get_iconvtable() const; - RepList * get_oconvtable() const; - struct phonetable * get_phonetable() const; - int get_nummap() const; - struct mapentry * get_maptable() const; - int get_numbreak() const; - char ** get_breaktable() const; - char * get_encoding(); - int get_langnum() const; - char * get_key_string(); - char * get_try_string() const; - const char * get_wordchars() const; - unsigned short * get_wordchars_utf16(int * len) const; - char * get_ignore() const; - unsigned short * get_ignore_utf16(int * len) const; - int get_compound() const; - FLAG get_compoundflag() const; - FLAG get_compoundbegin() const; - FLAG get_forbiddenword() const; - FLAG get_nosuggest() const; - FLAG get_nongramsuggest() const; - FLAG get_needaffix() const; - FLAG get_onlyincompound() const; - FLAG get_compoundroot() const; - FLAG get_lemma_present() const; - int get_checknum() const; - const char * get_prefix() const; - const char * get_suffix() const; - const char * get_derived() const; - const char * get_version() const; - int have_contclass() const; - int get_utf8() const; - int get_complexprefixes() const; - char * get_suffixed(char ) const; - int get_maxngramsugs() const; - int get_maxcpdsugs() const; - int get_maxdiff() const; - int get_onlymaxdiff() const; - int get_nosplitsugs() const; - int get_sugswithdots(void) const; - FLAG get_keepcase(void) const; - FLAG get_forceucase(void) const; - FLAG get_warn(void) const; - int get_forbidwarn(void) const; - int get_checksharps(void) const; - char * encode_flag(unsigned short aflag) const; - int get_fullstrip() const; - -private: - int parse_file(const char * affpath, const char * key); - int parse_flag(char * line, unsigned short * out, FileMgr * af); - int parse_num(char * line, int * out, FileMgr * af); - int parse_cpdsyllable(char * line, FileMgr * af); - int parse_reptable(char * line, FileMgr * af); - int parse_convtable(char * line, FileMgr * af, RepList ** rl, const char * keyword); - int parse_phonetable(char * line, FileMgr * af); - int parse_maptable(char * line, FileMgr * af); - int parse_breaktable(char * line, FileMgr * af); - int parse_checkcpdtable(char * line, FileMgr * af); - int parse_defcpdtable(char * line, FileMgr * af); - int parse_affix(char * line, const char at, FileMgr * af, char * dupflags); - - void reverse_condition(char *); - void debugflag(char * result, unsigned short flag); - int condlen(char *); - int encodeit(affentry &entry, char * cs); - int build_pfxtree(PfxEntry* pfxptr); - int build_sfxtree(SfxEntry* sfxptr); - int process_pfx_order(); - int process_sfx_order(); - PfxEntry * process_pfx_in_order(PfxEntry * ptr, PfxEntry * nptr); - SfxEntry * process_sfx_in_order(SfxEntry * ptr, SfxEntry * nptr); - int process_pfx_tree_to_list(); - int process_sfx_tree_to_list(); - int redundant_condition(char, char * strip, int stripl, - const char * cond, int); -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/atypes.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/atypes.hxx deleted file mode 100644 index df27c4d1cb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/atypes.hxx +++ /dev/null @@ -1,107 +0,0 @@ -#ifndef _ATYPES_HXX_ -#define _ATYPES_HXX_ - -#ifndef HUNSPELL_WARNING -#include -#ifdef HUNSPELL_WARNING_ON -#define HUNSPELL_WARNING fprintf -#else -// empty inline function to switch off warnings (instead of the C99 standard variadic macros) -static inline void HUNSPELL_WARNING(FILE *, const char *, ...) {} -#endif -#endif - -// HUNSTEM def. -#define HUNSTEM - -#include "hashmgr.hxx" -#include "w_char.hxx" - -#define SETSIZE 256 -#define CONTSIZE 65536 -#define MAXWORDLEN 100 -#define MAXWORDUTF8LEN 256 - -// affentry options -#define aeXPRODUCT (1 << 0) -#define aeUTF8 (1 << 1) -#define aeALIASF (1 << 2) -#define aeALIASM (1 << 3) -#define aeLONGCOND (1 << 4) - -// compound options -#define IN_CPD_NOT 0 -#define IN_CPD_BEGIN 1 -#define IN_CPD_END 2 -#define IN_CPD_OTHER 3 - -// info options -#define SPELL_COMPOUND (1 << 0) -#define SPELL_FORBIDDEN (1 << 1) -#define SPELL_ALLCAP (1 << 2) -#define SPELL_NOCAP (1 << 3) -#define SPELL_INITCAP (1 << 4) -#define SPELL_ORIGCAP (1 << 5) -#define SPELL_WARN (1 << 6) - -#define MAXLNLEN 8192 - -#define MINCPDLEN 3 -#define MAXCOMPOUND 10 -#define MAXCONDLEN 20 -#define MAXCONDLEN_1 (MAXCONDLEN - sizeof(char *)) - -#define MAXACC 1000 - -#define FLAG unsigned short -#define FLAG_NULL 0x00 -#define FREE_FLAG(a) a = 0 - -#define TESTAFF( a, b , c ) flag_bsearch((unsigned short *) a, (unsigned short) b, c) - -struct affentry -{ - char * strip; - char * appnd; - unsigned char stripl; - unsigned char appndl; - char numconds; - char opts; - unsigned short aflag; - unsigned short * contclass; - short contclasslen; - union { - char conds[MAXCONDLEN]; - struct { - char conds1[MAXCONDLEN_1]; - char * conds2; - } l; - } c; - char * morphcode; -}; - -struct guessword { - char * word; - bool allow; - char * orig; -}; - -struct mapentry { - char ** set; - int len; -}; - -struct flagentry { - FLAG * def; - int len; -}; - -struct patentry { - char * pattern; - char * pattern2; - char * pattern3; - FLAG cond; - FLAG cond2; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/baseaffix.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/baseaffix.hxx deleted file mode 100644 index ed64f3d84f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/baseaffix.hxx +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _BASEAFF_HXX_ -#define _BASEAFF_HXX_ - -#include "hunvisapi.h" - -class LIBHUNSPELL_DLL_EXPORTED AffEntry -{ -protected: - char * appnd; - char * strip; - unsigned char appndl; - unsigned char stripl; - char numconds; - char opts; - unsigned short aflag; - union { - char conds[MAXCONDLEN]; - struct { - char conds1[MAXCONDLEN_1]; - char * conds2; - } l; - } c; - char * morphcode; - unsigned short * contclass; - short contclasslen; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/csutil.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/csutil.hxx deleted file mode 100644 index 7bd0b919be..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/csutil.hxx +++ /dev/null @@ -1,220 +0,0 @@ -#ifndef __CSUTILHXX__ -#define __CSUTILHXX__ - -#include "hunvisapi.h" - -// First some base level utility routines - -#include -#include "w_char.hxx" -#include "htypes.hxx" - -#ifdef MOZILLA_CLIENT -#include "nscore.h" // for mozalloc headers -#endif - -// casing -#define NOCAP 0 -#define INITCAP 1 -#define ALLCAP 2 -#define HUHCAP 3 -#define HUHINITCAP 4 - -// default encoding and keystring -#define SPELL_ENCODING "ISO8859-1" -#define SPELL_KEYSTRING "qwertyuiop|asdfghjkl|zxcvbnm" - -// default morphological fields -#define MORPH_STEM "st:" -#define MORPH_ALLOMORPH "al:" -#define MORPH_POS "po:" -#define MORPH_DERI_PFX "dp:" -#define MORPH_INFL_PFX "ip:" -#define MORPH_TERM_PFX "tp:" -#define MORPH_DERI_SFX "ds:" -#define MORPH_INFL_SFX "is:" -#define MORPH_TERM_SFX "ts:" -#define MORPH_SURF_PFX "sp:" -#define MORPH_FREQ "fr:" -#define MORPH_PHON "ph:" -#define MORPH_HYPH "hy:" -#define MORPH_PART "pa:" -#define MORPH_FLAG "fl:" -#define MORPH_HENTRY "_H:" -#define MORPH_TAG_LEN strlen(MORPH_STEM) - -#define MSEP_FLD ' ' -#define MSEP_REC '\n' -#define MSEP_ALT '\v' - -// default flags -#define DEFAULTFLAGS 65510 -#define FORBIDDENWORD 65510 -#define ONLYUPCASEFLAG 65511 - -// convert UTF-16 characters to UTF-8 -LIBHUNSPELL_DLL_EXPORTED char * u16_u8(char * dest, int size, const w_char * src, int srclen); - -// convert UTF-8 characters to UTF-16 -LIBHUNSPELL_DLL_EXPORTED int u8_u16(w_char * dest, int size, const char * src); - -// sort 2-byte vector -LIBHUNSPELL_DLL_EXPORTED void flag_qsort(unsigned short flags[], int begin, int end); - -// binary search in 2-byte vector -LIBHUNSPELL_DLL_EXPORTED int flag_bsearch(unsigned short flags[], unsigned short flag, int right); - -// remove end of line char(s) -LIBHUNSPELL_DLL_EXPORTED void mychomp(char * s); - -// duplicate string -LIBHUNSPELL_DLL_EXPORTED char * mystrdup(const char * s); - -// strcat for limited length destination string -LIBHUNSPELL_DLL_EXPORTED char * mystrcat(char * dest, const char * st, int max); - -// duplicate reverse of string -LIBHUNSPELL_DLL_EXPORTED char * myrevstrdup(const char * s); - -// parse into tokens with char delimiter -LIBHUNSPELL_DLL_EXPORTED char * mystrsep(char ** sptr, const char delim); -// parse into tokens with char delimiter -LIBHUNSPELL_DLL_EXPORTED char * mystrsep2(char ** sptr, const char delim); - -// parse into tokens with char delimiter -LIBHUNSPELL_DLL_EXPORTED char * mystrrep(char *, const char *, const char *); - -// append s to ends of every lines in text -LIBHUNSPELL_DLL_EXPORTED void strlinecat(char * lines, const char * s); - -// tokenize into lines with new line -LIBHUNSPELL_DLL_EXPORTED int line_tok(const char * text, char *** lines, char breakchar); - -// tokenize into lines with new line and uniq in place -LIBHUNSPELL_DLL_EXPORTED char * line_uniq(char * text, char breakchar); -LIBHUNSPELL_DLL_EXPORTED char * line_uniq_app(char ** text, char breakchar); - -// change oldchar to newchar in place -LIBHUNSPELL_DLL_EXPORTED char * tr(char * text, char oldc, char newc); - -// reverse word -LIBHUNSPELL_DLL_EXPORTED int reverseword(char *); - -// reverse word -LIBHUNSPELL_DLL_EXPORTED int reverseword_utf(char *); - -// remove duplicates -LIBHUNSPELL_DLL_EXPORTED int uniqlist(char ** list, int n); - -// free character array list -LIBHUNSPELL_DLL_EXPORTED void freelist(char *** list, int n); - -// character encoding information -struct cs_info { - unsigned char ccase; - unsigned char clower; - unsigned char cupper; -}; - -LIBHUNSPELL_DLL_EXPORTED int initialize_utf_tbl(); -LIBHUNSPELL_DLL_EXPORTED void free_utf_tbl(); -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetoupper(unsigned short c, int langnum); -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetolower(unsigned short c, int langnum); -LIBHUNSPELL_DLL_EXPORTED int unicodeisalpha(unsigned short c); - -LIBHUNSPELL_DLL_EXPORTED struct cs_info * get_current_cs(const char * es); - -// get language identifiers of language codes -LIBHUNSPELL_DLL_EXPORTED int get_lang_num(const char * lang); - -// get characters of the given 8bit encoding with lower- and uppercase forms -LIBHUNSPELL_DLL_EXPORTED char * get_casechars(const char * enc); - -// convert null terminated string to all caps using encoding -LIBHUNSPELL_DLL_EXPORTED void enmkallcap(char * d, const char * p, const char * encoding); - -// convert null terminated string to all little using encoding -LIBHUNSPELL_DLL_EXPORTED void enmkallsmall(char * d, const char * p, const char * encoding); - -// convert null terminated string to have initial capital using encoding -LIBHUNSPELL_DLL_EXPORTED void enmkinitcap(char * d, const char * p, const char * encoding); - -// convert null terminated string to all caps -LIBHUNSPELL_DLL_EXPORTED void mkallcap(char * p, const struct cs_info * csconv); - -// convert null terminated string to all little -LIBHUNSPELL_DLL_EXPORTED void mkallsmall(char * p, const struct cs_info * csconv); - -// convert null terminated string to have initial capital -LIBHUNSPELL_DLL_EXPORTED void mkinitcap(char * p, const struct cs_info * csconv); - -// convert first nc characters of UTF-8 string to little -LIBHUNSPELL_DLL_EXPORTED void mkallsmall_utf(w_char * u, int nc, int langnum); - -// convert first nc characters of UTF-8 string to capital -LIBHUNSPELL_DLL_EXPORTED void mkallcap_utf(w_char * u, int nc, int langnum); - -// get type of capitalization -LIBHUNSPELL_DLL_EXPORTED int get_captype(char * q, int nl, cs_info *); - -// get type of capitalization (UTF-8) -LIBHUNSPELL_DLL_EXPORTED int get_captype_utf8(w_char * q, int nl, int langnum); - -// strip all ignored characters in the string -LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars_utf(char * word, unsigned short ignored_chars[], int ignored_len); - -// strip all ignored characters in the string -LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars(char * word, char * ignored_chars); - -LIBHUNSPELL_DLL_EXPORTED int parse_string(char * line, char ** out, int ln); - -LIBHUNSPELL_DLL_EXPORTED int parse_array(char * line, char ** out, unsigned short ** out_utf16, - int * out_utf16_len, int utf8, int ln); - -LIBHUNSPELL_DLL_EXPORTED int fieldlen(const char * r); -LIBHUNSPELL_DLL_EXPORTED char * copy_field(char * dest, const char * morph, const char * var); - -LIBHUNSPELL_DLL_EXPORTED int morphcmp(const char * s, const char * t); - -LIBHUNSPELL_DLL_EXPORTED int get_sfxcount(const char * morph); - -// conversion function for protected memory -LIBHUNSPELL_DLL_EXPORTED void store_pointer(char * dest, char * source); - -// conversion function for protected memory -LIBHUNSPELL_DLL_EXPORTED char * get_stored_pointer(const char * s); - -// hash entry macros -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_DATA(struct hentry *h) -{ - char *ret; - if (!h->var) - ret = NULL; - else if (h->var & H_OPT_ALIASM) - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); - else - ret = HENTRY_WORD(h) + h->blen + 1; - return ret; -} - -// NULL-free version for warning-free OOo build -LIBHUNSPELL_DLL_EXPORTED inline const char* HENTRY_DATA2(const struct hentry *h) -{ - const char *ret; - if (!h->var) - ret = ""; - else if (h->var & H_OPT_ALIASM) - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1); - else - ret = HENTRY_WORD(h) + h->blen + 1; - return ret; -} - -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_FIND(struct hentry *h, const char *p) -{ - return (HENTRY_DATA(h) ? strstr(HENTRY_DATA(h), p) : NULL); -} - -#define w_char_eq(a,b) (((a).l == (b).l) && ((a).h == (b).h)) - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/dictmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/dictmgr.hxx deleted file mode 100644 index bb197f84fb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/dictmgr.hxx +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef _DICTMGR_HXX_ -#define _DICTMGR_HXX_ - -#include "hunvisapi.h" - -#define MAXDICTIONARIES 100 -#define MAXDICTENTRYLEN 1024 - -struct dictentry { - char * filename; - char * lang; - char * region; -}; - - -class LIBHUNSPELL_DLL_EXPORTED DictMgr -{ - - int numdict; - dictentry * pdentry; - -public: - - DictMgr(const char * dictpath, const char * etype); - ~DictMgr(); - int get_list(dictentry** ppentry); - -private: - int parse_file(const char * dictpath, const char * etype); - char * mystrsep(char ** stringp, const char delim); - char * mystrdup(const char * s); - void mychomp(char * s); - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/filemgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/filemgr.hxx deleted file mode 100644 index 94cb7233d8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/filemgr.hxx +++ /dev/null @@ -1,25 +0,0 @@ -/* file manager class - read lines of files [filename] OR [filename.hz] */ -#ifndef _FILEMGR_HXX_ -#define _FILEMGR_HXX_ - -#include "hunvisapi.h" - -#include "hunzip.hxx" -#include - -class LIBHUNSPELL_DLL_EXPORTED FileMgr -{ -protected: - FILE * fin; - Hunzip * hin; - char in[BUFSIZE + 50]; // input buffer - int fail(const char * err, const char * par); - int linenum; - -public: - FileMgr(const char * filename, const char * key = NULL); - ~FileMgr(); - char * getline(); - int getlinenum(); -}; -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hashmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hashmgr.hxx deleted file mode 100644 index 341b08131c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hashmgr.hxx +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef _HASHMGR_HXX_ -#define _HASHMGR_HXX_ - -#include "hunvisapi.h" - -#include - -#include "htypes.hxx" -#include "filemgr.hxx" - -enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI }; - -class LIBHUNSPELL_DLL_EXPORTED HashMgr -{ - int tablesize; - struct hentry ** tableptr; - int userword; - flag flag_mode; - int complexprefixes; - int utf8; - unsigned short forbiddenword; - int langnum; - char * enc; - char * lang; - struct cs_info * csconv; - char * ignorechars; - unsigned short * ignorechars_utf16; - int ignorechars_utf16_len; - int numaliasf; // flag vector `compression' with aliases - unsigned short ** aliasf; - unsigned short * aliasflen; - int numaliasm; // morphological desciption `compression' with aliases - char ** aliasm; - - -public: - HashMgr(const char * tpath, const char * apath, const char * key = NULL); - ~HashMgr(); - - struct hentry * lookup(const char *) const; - int hash(const char *) const; - struct hentry * walk_hashtable(int & col, struct hentry * hp) const; - - int add(const char * word); - int add_with_affix(const char * word, const char * pattern); - int remove(const char * word); - int decode_flags(unsigned short ** result, char * flags, FileMgr * af); - unsigned short decode_flag(const char * flag); - char * encode_flag(unsigned short flag); - int is_aliasf(); - int get_aliasf(int index, unsigned short ** fvec, FileMgr * af); - int is_aliasm(); - char * get_aliasm(int index); - -private: - int get_clen_and_captype(const char * word, int wbl, int * captype); - int load_tables(const char * tpath, const char * key); - int add_word(const char * word, int wbl, int wcl, unsigned short * ap, - int al, const char * desc, bool onlyupcase); - int load_config(const char * affpath, const char * key); - int parse_aliasf(char * line, FileMgr * af); - int add_hidden_capitalized_word(char * word, int wbl, int wcl, - unsigned short * flags, int al, char * dp, int captype); - int parse_aliasm(char * line, FileMgr * af); - int remove_forbidden_flag(const char * word); - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/htypes.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/htypes.hxx deleted file mode 100644 index 5b6c90966b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/htypes.hxx +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef _HTYPES_HXX_ -#define _HTYPES_HXX_ - -#define ROTATE_LEN 5 - -#define ROTATE(v,q) \ - (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q))-1)); - -// hentry options -#define H_OPT (1 << 0) -#define H_OPT_ALIASM (1 << 1) -#define H_OPT_PHON (1 << 2) - -// see also csutil.hxx -#define HENTRY_WORD(h) &(h->word[0]) - -// approx. number of user defined words -#define USERWORD 1000 - -struct hentry -{ - unsigned char blen; // word length in bytes - unsigned char clen; // word length in characters (different for UTF-8 enc.) - short alen; // length of affix flag vector - unsigned short * astr; // affix flag vector - struct hentry * next; // next word with same hash code - struct hentry * next_homonym; // next homonym word (with same hash code) - char var; // variable fields (only for special pronounciation yet) - char word[1]; // variable-length word (8-bit or UTF-8 encoding) -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunspell.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunspell.h deleted file mode 100644 index 627968a3da..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunspell.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef _MYSPELLMGR_H_ -#define _MYSPELLMGR_H_ - -#include "hunvisapi.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct Hunhandle Hunhandle; - -LIBHUNSPELL_DLL_EXPORTED Hunhandle *Hunspell_create(const char * affpath, const char * dpath); - -LIBHUNSPELL_DLL_EXPORTED Hunhandle *Hunspell_create_key(const char * affpath, const char * dpath, - const char * key); - -LIBHUNSPELL_DLL_EXPORTED void Hunspell_destroy(Hunhandle *pHunspell); - -/* spell(word) - spellcheck word - * output: 0 = bad word, not 0 = good word - */ -LIBHUNSPELL_DLL_EXPORTED int Hunspell_spell(Hunhandle *pHunspell, const char *); - -LIBHUNSPELL_DLL_EXPORTED char *Hunspell_get_dic_encoding(Hunhandle *pHunspell); - -/* suggest(suggestions, word) - search suggestions - * input: pointer to an array of strings pointer and the (bad) word - * array of strings pointer (here *slst) may not be initialized - * output: number of suggestions in string array, and suggestions in - * a newly allocated array of strings (*slts will be NULL when number - * of suggestion equals 0.) - */ -LIBHUNSPELL_DLL_EXPORTED int Hunspell_suggest(Hunhandle *pHunspell, char*** slst, const char * word); - - /* morphological functions */ - - /* analyze(result, word) - morphological analysis of the word */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_analyze(Hunhandle *pHunspell, char*** slst, const char * word); - - /* stem(result, word) - stemmer function */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem(Hunhandle *pHunspell, char*** slst, const char * word); - - /* stem(result, analysis, n) - get stems from a morph. analysis - * example: - * char ** result, result2; - * int n1 = Hunspell_analyze(result, "words"); - * int n2 = Hunspell_stem2(result2, result, n1); - */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_stem2(Hunhandle *pHunspell, char*** slst, char** desc, int n); - - /* generate(result, word, word2) - morphological generation by example(s) */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate(Hunhandle *pHunspell, char*** slst, const char * word, - const char * word2); - - /* generate(result, word, desc, n) - generation by morph. description(s) - * example: - * char ** result; - * char * affix = "is:plural"; // description depends from dictionaries, too - * int n = Hunspell_generate2(result, "word", &affix, 1); - * for (int i = 0; i < n; i++) printf("%s\n", result[i]); - */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_generate2(Hunhandle *pHunspell, char*** slst, const char * word, - char** desc, int n); - - /* functions for run-time modification of the dictionary */ - - /* add word to the run-time dictionary */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_add(Hunhandle *pHunspell, const char * word); - - /* add word to the run-time dictionary with affix flags of - * the example (a dictionary word): Hunspell will recognize - * affixed forms of the new word, too. - */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_add_with_affix(Hunhandle *pHunspell, const char * word, const char * example); - - /* remove word from the run-time dictionary */ - -LIBHUNSPELL_DLL_EXPORTED int Hunspell_remove(Hunhandle *pHunspell, const char * word); - - /* free suggestion lists */ - -LIBHUNSPELL_DLL_EXPORTED void Hunspell_free_list(Hunhandle *pHunspell, char *** slst, int n); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunspell.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunspell.hxx deleted file mode 100644 index 9b6c388108..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunspell.hxx +++ /dev/null @@ -1,172 +0,0 @@ -#include "hunvisapi.h" - -#include "hashmgr.hxx" -#include "affixmgr.hxx" -#include "suggestmgr.hxx" -#include "langnum.hxx" - -#define SPELL_XML "" - -#define MAXDIC 20 -#define MAXSUGGESTION 15 -#define MAXSHARPS 5 - -#define HUNSPELL_OK (1 << 0) -#define HUNSPELL_OK_WARN (1 << 1) - -#ifndef _MYSPELLMGR_HXX_ -#define _MYSPELLMGR_HXX_ - -class LIBHUNSPELL_DLL_EXPORTED Hunspell -{ - AffixMgr* pAMgr; - HashMgr* pHMgr[MAXDIC]; - int maxdic; - SuggestMgr* pSMgr; - char * affixpath; - char * encoding; - struct cs_info * csconv; - int langnum; - int utf8; - int complexprefixes; - char** wordbreak; - -public: - - /* Hunspell(aff, dic) - constructor of Hunspell class - * input: path of affix file and dictionary file - */ - - Hunspell(const char * affpath, const char * dpath, const char * key = NULL); - ~Hunspell(); - - /* load extra dictionaries (only dic files) */ - int add_dic(const char * dpath, const char * key = NULL); - - /* spell(word) - spellcheck word - * output: 0 = bad word, not 0 = good word - * - * plus output: - * info: information bit array, fields: - * SPELL_COMPOUND = a compound word - * SPELL_FORBIDDEN = an explicit forbidden word - * root: root (stem), when input is a word with affix(es) - */ - - int spell(const char * word, int * info = NULL, char ** root = NULL); - - /* suggest(suggestions, word) - search suggestions - * input: pointer to an array of strings pointer and the (bad) word - * array of strings pointer (here *slst) may not be initialized - * output: number of suggestions in string array, and suggestions in - * a newly allocated array of strings (*slts will be NULL when number - * of suggestion equals 0.) - */ - - int suggest(char*** slst, const char * word); - - /* deallocate suggestion lists */ - - void free_list(char *** slst, int n); - - char * get_dic_encoding(); - - /* morphological functions */ - - /* analyze(result, word) - morphological analysis of the word */ - - int analyze(char*** slst, const char * word); - - /* stem(result, word) - stemmer function */ - - int stem(char*** slst, const char * word); - - /* stem(result, analysis, n) - get stems from a morph. analysis - * example: - * char ** result, result2; - * int n1 = analyze(&result, "words"); - * int n2 = stem(&result2, result, n1); - */ - - int stem(char*** slst, char ** morph, int n); - - /* generate(result, word, word2) - morphological generation by example(s) */ - - int generate(char*** slst, const char * word, const char * word2); - - /* generate(result, word, desc, n) - generation by morph. description(s) - * example: - * char ** result; - * char * affix = "is:plural"; // description depends from dictionaries, too - * int n = generate(&result, "word", &affix, 1); - * for (int i = 0; i < n; i++) printf("%s\n", result[i]); - */ - - int generate(char*** slst, const char * word, char ** desc, int n); - - /* functions for run-time modification of the dictionary */ - - /* add word to the run-time dictionary */ - - int add(const char * word); - - /* add word to the run-time dictionary with affix flags of - * the example (a dictionary word): Hunspell will recognize - * affixed forms of the new word, too. - */ - - int add_with_affix(const char * word, const char * example); - - /* remove word from the run-time dictionary */ - - int remove(const char * word); - - /* other */ - - /* get extra word characters definied in affix file for tokenization */ - const char * get_wordchars(); - unsigned short * get_wordchars_utf16(int * len); - - struct cs_info * get_csconv(); - const char * get_version(); - - int get_langnum() const; - - /* experimental and deprecated functions */ - -#ifdef HUNSPELL_EXPERIMENTAL - /* suffix is an affix flag string, similarly in dictionary files */ - int put_word_suffix(const char * word, const char * suffix); - char * morph_with_correction(const char * word); - - /* spec. suggestions */ - int suggest_auto(char*** slst, const char * word); - int suggest_pos_stems(char*** slst, const char * word); -#endif - -private: - int cleanword(char *, const char *, int * pcaptype, int * pabbrev); - int cleanword2(char *, const char *, w_char *, int * w_len, int * pcaptype, int * pabbrev); - void mkinitcap(char *); - int mkinitcap2(char * p, w_char * u, int nc); - int mkinitsmall2(char * p, w_char * u, int nc); - void mkallcap(char *); - int mkallcap2(char * p, w_char * u, int nc); - void mkallsmall(char *); - int mkallsmall2(char * p, w_char * u, int nc); - struct hentry * checkword(const char *, int * info, char **root); - char * sharps_u8_l1(char * dest, char * source); - hentry * spellsharps(char * base, char *, int, int, char * tmp, int * info, char **root); - int is_keepcase(const hentry * rv); - int insert_sug(char ***slst, char * word, int ns); - void cat_result(char * result, char * st); - char * stem_description(const char * desc); - int spellml(char*** slst, const char * word); - int get_xml_par(char * dest, const char * par, int maxl); - const char * get_xml_pos(const char * s, const char * attr); - int get_xml_list(char ***slst, char * list, const char * tag); - int check_xml_par(const char * q, const char * attr, const char * value); - -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunvisapi.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunvisapi.h deleted file mode 100644 index 4712280ad2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunvisapi.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _HUNSPELL_VISIBILITY_H_ -#define _HUNSPELL_VISIBILITY_H_ - -#if defined(HUNSPELL_STATIC) -# define LIBHUNSPELL_DLL_EXPORTED -#elif defined(_MSC_VER) -# if defined(BUILDING_LIBHUNSPELL) -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport) -# else -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport) -# endif -#elif BUILDING_LIBHUNSPELL && 1 -# define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default"))) -#else -# define LIBHUNSPELL_DLL_EXPORTED -#endif - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunzip.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunzip.hxx deleted file mode 100644 index b58e3ab1dc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/hunzip.hxx +++ /dev/null @@ -1,45 +0,0 @@ -/* hunzip: file decompression for sorted dictionaries with optional encryption, - * algorithm: prefix-suffix encoding and 16-bit Huffman encoding */ - -#ifndef _HUNZIP_HXX_ -#define _HUNZIP_HXX_ - -#include "hunvisapi.h" - -#include - -#define BUFSIZE 65536 -#define HZIP_EXTENSION ".hz" - -#define MSG_OPEN "error: %s: cannot open\n" -#define MSG_FORMAT "error: %s: not in hzip format\n" -#define MSG_MEMORY "error: %s: missing memory\n" -#define MSG_KEY "error: %s: missing or bad password\n" - -struct bit { - unsigned char c[2]; - int v[2]; -}; - -class LIBHUNSPELL_DLL_EXPORTED Hunzip -{ - -protected: - char * filename; - FILE * fin; - int bufsiz, lastbit, inc, inbits, outc; - struct bit * dec; // code table - char in[BUFSIZE]; // input buffer - char out[BUFSIZE + 1]; // Huffman-decoded buffer - char line[BUFSIZE + 50]; // decoded line - int getcode(const char * key); - int getbuf(); - int fail(const char * err, const char * par); - -public: - Hunzip(const char * filename, const char * key = NULL); - ~Hunzip(); - const char * getline(); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/langnum.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/langnum.hxx deleted file mode 100644 index 1d140a701b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/langnum.hxx +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef _LANGNUM_HXX_ -#define _LANGNUM_HXX_ - -/* - language numbers for language specific codes - see http://l10n.openoffice.org/languages.html -*/ - -enum { -LANG_ar=96, -LANG_az=100, // custom number -LANG_bg=41, -LANG_ca=37, -LANG_cs=42, -LANG_da=45, -LANG_de=49, -LANG_el=30, -LANG_en=01, -LANG_es=34, -LANG_eu=10, -LANG_fr=02, -LANG_gl=38, -LANG_hr=78, -LANG_hu=36, -LANG_it=39, -LANG_la=99, // custom number -LANG_lv=101, // custom number -LANG_nl=31, -LANG_pl=48, -LANG_pt=03, -LANG_ru=07, -LANG_sv=50, -LANG_tr=90, -LANG_uk=80, -LANG_xx=999 -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/phonet.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/phonet.hxx deleted file mode 100644 index f91d3b02b8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/phonet.hxx +++ /dev/null @@ -1,52 +0,0 @@ -/* phonetic.c - generic replacement aglogithms for phonetic transformation - Copyright (C) 2000 Bjoern Jacke - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License version 2.1 as published by the Free Software Foundation; - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; If not, see - . - - Changelog: - - 2000-01-05 Bjoern Jacke - Initial Release insprired by the article about phonetic - transformations out of c't 25/1999 - - 2007-07-26 Bjoern Jacke - Released under MPL/GPL/LGPL tri-license for Hunspell - - 2007-08-23 Laszlo Nemeth - Porting from Aspell to Hunspell using C-like structs -*/ - -#ifndef __PHONETHXX__ -#define __PHONETHXX__ - -#define HASHSIZE 256 -#define MAXPHONETLEN 256 -#define MAXPHONETUTF8LEN (MAXPHONETLEN * 4) - -#include "hunvisapi.h" - -struct phonetable { - char utf8; - cs_info * lang; - int num; - char * * rules; - int hash[HASHSIZE]; -}; - -LIBHUNSPELL_DLL_EXPORTED void init_phonet_hash(phonetable & parms); - -LIBHUNSPELL_DLL_EXPORTED int phonet (const char * inword, char * target, - int len, phonetable & phone); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/replist.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/replist.hxx deleted file mode 100644 index ea3ed52e7e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/replist.hxx +++ /dev/null @@ -1,32 +0,0 @@ -/* string replacement list class */ -#ifndef _REPLIST_HXX_ -#define _REPLIST_HXX_ - -#include "hunvisapi.h" - -#include "w_char.hxx" - -#ifdef near -# undef near -#endif - -class LIBHUNSPELL_DLL_EXPORTED RepList -{ -protected: - replentry ** dat; - int size; - int pos; - -public: - RepList(int n); - ~RepList(); - - int get_pos(); - int add(char * pat1, char * pat2); - replentry * item(int n); - int near(const char * word); - int match(const char * word, int n); - int conv(const char * word, char * dest); -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/suggestmgr.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/suggestmgr.hxx deleted file mode 100644 index 5f043fdfd2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/suggestmgr.hxx +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef _SUGGESTMGR_HXX_ -#define _SUGGESTMGR_HXX_ - -#define MAXSWL 100 -#define MAXSWUTF8L (MAXSWL * 4) -#define MAX_ROOTS 100 -#define MAX_WORDS 100 -#define MAX_GUESS 200 -#define MAXNGRAMSUGS 4 -#define MAXPHONSUGS 2 -#define MAXCOMPOUNDSUGS 3 - -// timelimit: max ~1/4 sec (process time on Linux) for a time consuming function -#define TIMELIMIT (CLOCKS_PER_SEC >> 2) -#define MINTIMER 100 -#define MAXPLUSTIMER 100 - -#define NGRAM_LONGER_WORSE (1 << 0) -#define NGRAM_ANY_MISMATCH (1 << 1) -#define NGRAM_LOWERING (1 << 2) -#define NGRAM_WEIGHTED (1 << 3) - -#include "hunvisapi.h" - -#include "atypes.hxx" -#include "affixmgr.hxx" -#include "hashmgr.hxx" -#include "langnum.hxx" -#include - -enum { LCS_UP, LCS_LEFT, LCS_UPLEFT }; - -class LIBHUNSPELL_DLL_EXPORTED SuggestMgr -{ - char * ckey; - int ckeyl; - w_char * ckey_utf; - - char * ctry; - int ctryl; - w_char * ctry_utf; - - AffixMgr* pAMgr; - int maxSug; - struct cs_info * csconv; - int utf8; - int langnum; - int nosplitsugs; - int maxngramsugs; - int maxcpdsugs; - int complexprefixes; - - -public: - SuggestMgr(const char * tryme, int maxn, AffixMgr *aptr); - ~SuggestMgr(); - - int suggest(char*** slst, const char * word, int nsug, int * onlycmpdsug); - int ngsuggest(char ** wlst, char * word, int ns, HashMgr** pHMgr, int md); - int suggest_auto(char*** slst, const char * word, int nsug); - int suggest_stems(char*** slst, const char * word, int nsug); - int suggest_pos_stems(char*** slst, const char * word, int nsug); - - char * suggest_morph(const char * word); - char * suggest_gen(char ** pl, int pln, char * pattern); - char * suggest_morph_for_spelling_error(const char * word); - -private: - int testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest, - int * timer, clock_t * timelimit); - int checkword(const char *, int, int, int *, clock_t *); - int check_forbidden(const char *, int); - - int capchars(char **, const char *, int, int); - int replchars(char**, const char *, int, int); - int doubletwochars(char**, const char *, int, int); - int forgotchar(char **, const char *, int, int); - int swapchar(char **, const char *, int, int); - int longswapchar(char **, const char *, int, int); - int movechar(char **, const char *, int, int); - int extrachar(char **, const char *, int, int); - int badcharkey(char **, const char *, int, int); - int badchar(char **, const char *, int, int); - int twowords(char **, const char *, int, int); - int fixstems(char **, const char *, int); - - int capchars_utf(char **, const w_char *, int wl, int, int); - int doubletwochars_utf(char**, const w_char *, int wl, int, int); - int forgotchar_utf(char**, const w_char *, int wl, int, int); - int extrachar_utf(char**, const w_char *, int wl, int, int); - int badcharkey_utf(char **, const w_char *, int wl, int, int); - int badchar_utf(char **, const w_char *, int wl, int, int); - int swapchar_utf(char **, const w_char *, int wl, int, int); - int longswapchar_utf(char **, const w_char *, int, int, int); - int movechar_utf(char **, const w_char *, int, int, int); - - int mapchars(char**, const char *, int, int); - int map_related(const char *, char *, int, int, char ** wlst, int, int, const mapentry*, int, int *, clock_t *); - int ngram(int n, char * s1, const char * s2, int opt); - int mystrlen(const char * word); - int leftcommonsubstring(char * s1, const char * s2); - int commoncharacterpositions(char * s1, const char * s2, int * is_swap); - void bubblesort( char ** rwd, char ** rwd2, int * rsc, int n); - void lcs(const char * s, const char * s2, int * l1, int * l2, char ** result); - int lcslen(const char * s, const char* s2); - char * suggest_hentry_gen(hentry * rv, char * pattern); - -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/w_char.hxx b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/w_char.hxx deleted file mode 100644 index 3719dd3b77..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/hunspell/w_char.hxx +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __WCHARHXX__ -#define __WCHARHXX__ - -#ifndef GCC -typedef struct { -#else -typedef struct __attribute__ ((packed)) { -#endif - unsigned char l; - unsigned char h; -} w_char; - -// two character arrays -struct replentry { - char * pattern; - char * pattern2; - bool start; - bool end; -}; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/iconv.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/iconv.h deleted file mode 100644 index 9d1d019825..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/iconv.h +++ /dev/null @@ -1,248 +0,0 @@ -/* Copyright (C) 1999-2003, 2005-2006, 2008-2011 Free Software Foundation, Inc. - This file is part of the GNU LIBICONV Library. - - The GNU LIBICONV Library is free software; you can redistribute it - and/or modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - The GNU LIBICONV Library is distributed in the hope that it will be - useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU LIBICONV Library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, Inc., 51 Franklin Street, - Fifth Floor, Boston, MA 02110-1301, USA. */ - -/* When installed, this file is called "iconv.h". */ - -#ifndef _LIBICONV_H -#define _LIBICONV_H - -#define _LIBICONV_VERSION 0x010E /* version number: (major<<8) + minor */ - -#if 0 && BUILDING_LIBICONV -#define LIBICONV_DLL_EXPORTED __attribute__((__visibility__("default"))) -#else -#define LIBICONV_DLL_EXPORTED -#endif -extern LIBICONV_DLL_EXPORTED __declspec (dllimport) int _libiconv_version; /* Likewise */ - -/* We would like to #include any system header file which could define - iconv_t, 1. in order to eliminate the risk that the user gets compilation - errors because some other system header file includes /usr/include/iconv.h - which defines iconv_t or declares iconv after this file, 2. when compiling - for LIBICONV_PLUG, we need the proper iconv_t type in order to produce - binary compatible code. - But gcc's #include_next is not portable. Thus, once libiconv's iconv.h - has been installed in /usr/local/include, there is no way any more to - include the original /usr/include/iconv.h. We simply have to get away - without it. - Ad 1. The risk that a system header file does - #include "iconv.h" or #include_next "iconv.h" - is small. They all do #include . - Ad 2. The iconv_t type is a pointer type in all cases I have seen. (It - has to be a scalar type because (iconv_t)(-1) is a possible return value - from iconv_open().) */ - -/* Define iconv_t ourselves. */ -#undef iconv_t -#define iconv_t libiconv_t -typedef void* iconv_t; - -/* Get size_t declaration. - Get wchar_t declaration if it exists. */ -#include - -/* Get errno declaration and values. */ -#include -/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS, - have EILSEQ in a different header. On these systems, define EILSEQ - ourselves. */ -#ifndef EILSEQ -#define EILSEQ -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Allocates descriptor for code conversion from encoding ‘fromcode’ to - encoding ‘tocode’. */ -#ifndef LIBICONV_PLUG -#define iconv_open libiconv_open -#endif -extern LIBICONV_DLL_EXPORTED iconv_t iconv_open (const char* tocode, const char* fromcode); - -/* Converts, using conversion descriptor ‘cd’, at most ‘*inbytesleft’ bytes - starting at ‘*inbuf’, writing at most ‘*outbytesleft’ bytes starting at - ‘*outbuf’. - Decrements ‘*inbytesleft’ and increments ‘*inbuf’ by the same amount. - Decrements ‘*outbytesleft’ and increments ‘*outbuf’ by the same amount. */ -#ifndef LIBICONV_PLUG -#define iconv libiconv -#endif -extern LIBICONV_DLL_EXPORTED size_t iconv (iconv_t cd, char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); - -/* Frees resources allocated for conversion descriptor ‘cd’. */ -#ifndef LIBICONV_PLUG -#define iconv_close libiconv_close -#endif -extern LIBICONV_DLL_EXPORTED int iconv_close (iconv_t cd); - - -#ifdef __cplusplus -} -#endif - - -#ifndef LIBICONV_PLUG - -/* Nonstandard extensions. */ - -#if 1 -#if 0 -/* Tru64 with Desktop Toolkit C has a bug: must be included before - . - BSD/OS 4.0.1 has a bug: , and must be - included before . */ -#include -#include -#include -#endif -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* A type that holds all memory needed by a conversion descriptor. - A pointer to such an object can be used as an iconv_t. */ -typedef struct { - void* dummy1[28]; -#if 1 - mbstate_t dummy2; -#endif -} iconv_allocation_t; - -/* Allocates descriptor for code conversion from encoding ‘fromcode’ to - encoding ‘tocode’ into preallocated memory. Returns an error indicator - (0 or -1 with errno set). */ -#define iconv_open_into libiconv_open_into -extern LIBICONV_DLL_EXPORTED int iconv_open_into (const char* tocode, const char* fromcode, - iconv_allocation_t* resultp); - -/* Control of attributes. */ -#define iconvctl libiconvctl -extern LIBICONV_DLL_EXPORTED int iconvctl (iconv_t cd, int request, void* argument); - -/* Hook performed after every successful conversion of a Unicode character. */ -typedef void (*iconv_unicode_char_hook) (unsigned int uc, void* data); -/* Hook performed after every successful conversion of a wide character. */ -typedef void (*iconv_wide_char_hook) (wchar_t wc, void* data); -/* Set of hooks. */ -struct iconv_hooks { - iconv_unicode_char_hook uc_hook; - iconv_wide_char_hook wc_hook; - void* data; -}; - -/* Fallback function. Invoked when a small number of bytes could not be - converted to a Unicode character. This function should process all - bytes from inbuf and may produce replacement Unicode characters by calling - the write_replacement callback repeatedly. */ -typedef void (*iconv_unicode_mb_to_uc_fallback) - (const char* inbuf, size_t inbufsize, - void (*write_replacement) (const unsigned int *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -/* Fallback function. Invoked when a Unicode character could not be converted - to the target encoding. This function should process the character and - may produce replacement bytes (in the target encoding) by calling the - write_replacement callback repeatedly. */ -typedef void (*iconv_unicode_uc_to_mb_fallback) - (unsigned int code, - void (*write_replacement) (const char *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -#if 1 -/* Fallback function. Invoked when a number of bytes could not be converted to - a wide character. This function should process all bytes from inbuf and may - produce replacement wide characters by calling the write_replacement - callback repeatedly. */ -typedef void (*iconv_wchar_mb_to_wc_fallback) - (const char* inbuf, size_t inbufsize, - void (*write_replacement) (const wchar_t *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -/* Fallback function. Invoked when a wide character could not be converted to - the target encoding. This function should process the character and may - produce replacement bytes (in the target encoding) by calling the - write_replacement callback repeatedly. */ -typedef void (*iconv_wchar_wc_to_mb_fallback) - (wchar_t code, - void (*write_replacement) (const char *buf, size_t buflen, - void* callback_arg), - void* callback_arg, - void* data); -#else -/* If the wchar_t type does not exist, these two fallback functions are never - invoked. Their argument list therefore does not matter. */ -typedef void (*iconv_wchar_mb_to_wc_fallback) (); -typedef void (*iconv_wchar_wc_to_mb_fallback) (); -#endif -/* Set of fallbacks. */ -struct iconv_fallbacks { - iconv_unicode_mb_to_uc_fallback mb_to_uc_fallback; - iconv_unicode_uc_to_mb_fallback uc_to_mb_fallback; - iconv_wchar_mb_to_wc_fallback mb_to_wc_fallback; - iconv_wchar_wc_to_mb_fallback wc_to_mb_fallback; - void* data; -}; - -/* Requests for iconvctl. */ -#define ICONV_TRIVIALP 0 /* int *argument */ -#define ICONV_GET_TRANSLITERATE 1 /* int *argument */ -#define ICONV_SET_TRANSLITERATE 2 /* const int *argument */ -#define ICONV_GET_DISCARD_ILSEQ 3 /* int *argument */ -#define ICONV_SET_DISCARD_ILSEQ 4 /* const int *argument */ -#define ICONV_SET_HOOKS 5 /* const struct iconv_hooks *argument */ -#define ICONV_SET_FALLBACKS 6 /* const struct iconv_fallbacks *argument */ - -/* Listing of locale independent encodings. */ -#define iconvlist libiconvlist -extern LIBICONV_DLL_EXPORTED void iconvlist (int (*do_one) (unsigned int namescount, - const char * const * names, - void* data), - void* data); - -/* Canonicalize an encoding name. - The result is either a canonical encoding name, or name itself. */ -extern LIBICONV_DLL_EXPORTED const char * iconv_canonicalize (const char * name); - -/* Support for relocatable packages. */ - -/* Sets the original and the current installation prefix of the package. - Relocation simply replaces a pathname starting with the original prefix - by the corresponding pathname with the current prefix instead. Both - prefixes should be directory names without trailing slash (i.e. use "" - instead of "/"). */ -extern LIBICONV_DLL_EXPORTED void libiconv_set_relocation_prefix (const char *orig_prefix, - const char *curr_prefix); - -#ifdef __cplusplus -} -#endif - -#endif - - -#endif /* _LIBICONV_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/avcodec.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/avcodec.h deleted file mode 100644 index d8497655b0..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/avcodec.h +++ /dev/null @@ -1,5402 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVCODEC_H -#define AVCODEC_AVCODEC_H - -/** - * @file - * @ingroup libavc - * Libavcodec external API header - */ - -#include -#include "libavutil/samplefmt.h" -#include "libavutil/attributes.h" -#include "libavutil/avutil.h" -#include "libavutil/buffer.h" -#include "libavutil/cpu.h" -#include "libavutil/channel_layout.h" -#include "libavutil/dict.h" -#include "libavutil/frame.h" -#include "libavutil/log.h" -#include "libavutil/pixfmt.h" -#include "libavutil/rational.h" - -#include "version.h" - -/** - * @defgroup libavc Encoding/Decoding Library - * @{ - * - * @defgroup lavc_decoding Decoding - * @{ - * @} - * - * @defgroup lavc_encoding Encoding - * @{ - * @} - * - * @defgroup lavc_codec Codecs - * @{ - * @defgroup lavc_codec_native Native Codecs - * @{ - * @} - * @defgroup lavc_codec_wrappers External library wrappers - * @{ - * @} - * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge - * @{ - * @} - * @} - * @defgroup lavc_internal Internal - * @{ - * @} - * @} - * - */ - -/** - * @defgroup lavc_core Core functions/structures. - * @ingroup libavc - * - * Basic definitions, functions for querying libavcodec capabilities, - * allocating core structures, etc. - * @{ - */ - - -/** - * Identify the syntax and semantics of the bitstream. - * The principle is roughly: - * Two decoders with the same ID can decode the same streams. - * Two encoders with the same ID can encode compatible streams. - * There may be slight deviations from the principle due to implementation - * details. - * - * If you add a codec ID to this list, add it so that - * 1. no value of a existing codec ID changes (that would break ABI), - * 2. it is as close as possible to similar codecs - * - * After adding new codec IDs, do not forget to add an entry to the codec - * descriptor list and bump libavcodec minor version. - */ -enum AVCodecID { - AV_CODEC_ID_NONE, - - /* video codecs */ - AV_CODEC_ID_MPEG1VIDEO, - AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding -#if FF_API_XVMC - AV_CODEC_ID_MPEG2VIDEO_XVMC, -#endif /* FF_API_XVMC */ - AV_CODEC_ID_H261, - AV_CODEC_ID_H263, - AV_CODEC_ID_RV10, - AV_CODEC_ID_RV20, - AV_CODEC_ID_MJPEG, - AV_CODEC_ID_MJPEGB, - AV_CODEC_ID_LJPEG, - AV_CODEC_ID_SP5X, - AV_CODEC_ID_JPEGLS, - AV_CODEC_ID_MPEG4, - AV_CODEC_ID_RAWVIDEO, - AV_CODEC_ID_MSMPEG4V1, - AV_CODEC_ID_MSMPEG4V2, - AV_CODEC_ID_MSMPEG4V3, - AV_CODEC_ID_WMV1, - AV_CODEC_ID_WMV2, - AV_CODEC_ID_H263P, - AV_CODEC_ID_H263I, - AV_CODEC_ID_FLV1, - AV_CODEC_ID_SVQ1, - AV_CODEC_ID_SVQ3, - AV_CODEC_ID_DVVIDEO, - AV_CODEC_ID_HUFFYUV, - AV_CODEC_ID_CYUV, - AV_CODEC_ID_H264, - AV_CODEC_ID_INDEO3, - AV_CODEC_ID_VP3, - AV_CODEC_ID_THEORA, - AV_CODEC_ID_ASV1, - AV_CODEC_ID_ASV2, - AV_CODEC_ID_FFV1, - AV_CODEC_ID_4XM, - AV_CODEC_ID_VCR1, - AV_CODEC_ID_CLJR, - AV_CODEC_ID_MDEC, - AV_CODEC_ID_ROQ, - AV_CODEC_ID_INTERPLAY_VIDEO, - AV_CODEC_ID_XAN_WC3, - AV_CODEC_ID_XAN_WC4, - AV_CODEC_ID_RPZA, - AV_CODEC_ID_CINEPAK, - AV_CODEC_ID_WS_VQA, - AV_CODEC_ID_MSRLE, - AV_CODEC_ID_MSVIDEO1, - AV_CODEC_ID_IDCIN, - AV_CODEC_ID_8BPS, - AV_CODEC_ID_SMC, - AV_CODEC_ID_FLIC, - AV_CODEC_ID_TRUEMOTION1, - AV_CODEC_ID_VMDVIDEO, - AV_CODEC_ID_MSZH, - AV_CODEC_ID_ZLIB, - AV_CODEC_ID_QTRLE, - AV_CODEC_ID_TSCC, - AV_CODEC_ID_ULTI, - AV_CODEC_ID_QDRAW, - AV_CODEC_ID_VIXL, - AV_CODEC_ID_QPEG, - AV_CODEC_ID_PNG, - AV_CODEC_ID_PPM, - AV_CODEC_ID_PBM, - AV_CODEC_ID_PGM, - AV_CODEC_ID_PGMYUV, - AV_CODEC_ID_PAM, - AV_CODEC_ID_FFVHUFF, - AV_CODEC_ID_RV30, - AV_CODEC_ID_RV40, - AV_CODEC_ID_VC1, - AV_CODEC_ID_WMV3, - AV_CODEC_ID_LOCO, - AV_CODEC_ID_WNV1, - AV_CODEC_ID_AASC, - AV_CODEC_ID_INDEO2, - AV_CODEC_ID_FRAPS, - AV_CODEC_ID_TRUEMOTION2, - AV_CODEC_ID_BMP, - AV_CODEC_ID_CSCD, - AV_CODEC_ID_MMVIDEO, - AV_CODEC_ID_ZMBV, - AV_CODEC_ID_AVS, - AV_CODEC_ID_SMACKVIDEO, - AV_CODEC_ID_NUV, - AV_CODEC_ID_KMVC, - AV_CODEC_ID_FLASHSV, - AV_CODEC_ID_CAVS, - AV_CODEC_ID_JPEG2000, - AV_CODEC_ID_VMNC, - AV_CODEC_ID_VP5, - AV_CODEC_ID_VP6, - AV_CODEC_ID_VP6F, - AV_CODEC_ID_TARGA, - AV_CODEC_ID_DSICINVIDEO, - AV_CODEC_ID_TIERTEXSEQVIDEO, - AV_CODEC_ID_TIFF, - AV_CODEC_ID_GIF, - AV_CODEC_ID_DXA, - AV_CODEC_ID_DNXHD, - AV_CODEC_ID_THP, - AV_CODEC_ID_SGI, - AV_CODEC_ID_C93, - AV_CODEC_ID_BETHSOFTVID, - AV_CODEC_ID_PTX, - AV_CODEC_ID_TXD, - AV_CODEC_ID_VP6A, - AV_CODEC_ID_AMV, - AV_CODEC_ID_VB, - AV_CODEC_ID_PCX, - AV_CODEC_ID_SUNRAST, - AV_CODEC_ID_INDEO4, - AV_CODEC_ID_INDEO5, - AV_CODEC_ID_MIMIC, - AV_CODEC_ID_RL2, - AV_CODEC_ID_ESCAPE124, - AV_CODEC_ID_DIRAC, - AV_CODEC_ID_BFI, - AV_CODEC_ID_CMV, - AV_CODEC_ID_MOTIONPIXELS, - AV_CODEC_ID_TGV, - AV_CODEC_ID_TGQ, - AV_CODEC_ID_TQI, - AV_CODEC_ID_AURA, - AV_CODEC_ID_AURA2, - AV_CODEC_ID_V210X, - AV_CODEC_ID_TMV, - AV_CODEC_ID_V210, - AV_CODEC_ID_DPX, - AV_CODEC_ID_MAD, - AV_CODEC_ID_FRWU, - AV_CODEC_ID_FLASHSV2, - AV_CODEC_ID_CDGRAPHICS, - AV_CODEC_ID_R210, - AV_CODEC_ID_ANM, - AV_CODEC_ID_BINKVIDEO, - AV_CODEC_ID_IFF_ILBM, -#define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM - AV_CODEC_ID_KGV1, - AV_CODEC_ID_YOP, - AV_CODEC_ID_VP8, - AV_CODEC_ID_PICTOR, - AV_CODEC_ID_ANSI, - AV_CODEC_ID_A64_MULTI, - AV_CODEC_ID_A64_MULTI5, - AV_CODEC_ID_R10K, - AV_CODEC_ID_MXPEG, - AV_CODEC_ID_LAGARITH, - AV_CODEC_ID_PRORES, - AV_CODEC_ID_JV, - AV_CODEC_ID_DFA, - AV_CODEC_ID_WMV3IMAGE, - AV_CODEC_ID_VC1IMAGE, - AV_CODEC_ID_UTVIDEO, - AV_CODEC_ID_BMV_VIDEO, - AV_CODEC_ID_VBLE, - AV_CODEC_ID_DXTORY, - AV_CODEC_ID_V410, - AV_CODEC_ID_XWD, - AV_CODEC_ID_CDXL, - AV_CODEC_ID_XBM, - AV_CODEC_ID_ZEROCODEC, - AV_CODEC_ID_MSS1, - AV_CODEC_ID_MSA1, - AV_CODEC_ID_TSCC2, - AV_CODEC_ID_MTS2, - AV_CODEC_ID_CLLC, - AV_CODEC_ID_MSS2, - AV_CODEC_ID_VP9, - AV_CODEC_ID_AIC, - AV_CODEC_ID_ESCAPE130, - AV_CODEC_ID_G2M, - AV_CODEC_ID_WEBP, - AV_CODEC_ID_HNM4_VIDEO, - AV_CODEC_ID_HEVC, -#define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC - AV_CODEC_ID_FIC, - AV_CODEC_ID_ALIAS_PIX, - AV_CODEC_ID_BRENDER_PIX, - AV_CODEC_ID_PAF_VIDEO, - AV_CODEC_ID_EXR, - AV_CODEC_ID_VP7, - AV_CODEC_ID_SANM, - AV_CODEC_ID_SGIRLE, - AV_CODEC_ID_MVC1, - AV_CODEC_ID_MVC2, - AV_CODEC_ID_HQX, - AV_CODEC_ID_TDSC, - AV_CODEC_ID_HQ_HQA, - AV_CODEC_ID_HAP, - AV_CODEC_ID_DDS, - AV_CODEC_ID_DXV, - AV_CODEC_ID_SCREENPRESSO, - AV_CODEC_ID_RSCC, - - AV_CODEC_ID_Y41P = 0x8000, - AV_CODEC_ID_AVRP, - AV_CODEC_ID_012V, - AV_CODEC_ID_AVUI, - AV_CODEC_ID_AYUV, - AV_CODEC_ID_TARGA_Y216, - AV_CODEC_ID_V308, - AV_CODEC_ID_V408, - AV_CODEC_ID_YUV4, - AV_CODEC_ID_AVRN, - AV_CODEC_ID_CPIA, - AV_CODEC_ID_XFACE, - AV_CODEC_ID_SNOW, - AV_CODEC_ID_SMVJPEG, - AV_CODEC_ID_APNG, - AV_CODEC_ID_DAALA, - AV_CODEC_ID_CFHD, - - /* various PCM "codecs" */ - AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs - AV_CODEC_ID_PCM_S16LE = 0x10000, - AV_CODEC_ID_PCM_S16BE, - AV_CODEC_ID_PCM_U16LE, - AV_CODEC_ID_PCM_U16BE, - AV_CODEC_ID_PCM_S8, - AV_CODEC_ID_PCM_U8, - AV_CODEC_ID_PCM_MULAW, - AV_CODEC_ID_PCM_ALAW, - AV_CODEC_ID_PCM_S32LE, - AV_CODEC_ID_PCM_S32BE, - AV_CODEC_ID_PCM_U32LE, - AV_CODEC_ID_PCM_U32BE, - AV_CODEC_ID_PCM_S24LE, - AV_CODEC_ID_PCM_S24BE, - AV_CODEC_ID_PCM_U24LE, - AV_CODEC_ID_PCM_U24BE, - AV_CODEC_ID_PCM_S24DAUD, - AV_CODEC_ID_PCM_ZORK, - AV_CODEC_ID_PCM_S16LE_PLANAR, - AV_CODEC_ID_PCM_DVD, - AV_CODEC_ID_PCM_F32BE, - AV_CODEC_ID_PCM_F32LE, - AV_CODEC_ID_PCM_F64BE, - AV_CODEC_ID_PCM_F64LE, - AV_CODEC_ID_PCM_BLURAY, - AV_CODEC_ID_PCM_LXF, - AV_CODEC_ID_S302M, - AV_CODEC_ID_PCM_S8_PLANAR, - AV_CODEC_ID_PCM_S24LE_PLANAR, - AV_CODEC_ID_PCM_S32LE_PLANAR, - AV_CODEC_ID_PCM_S16BE_PLANAR, - /* new PCM "codecs" should be added right below this line starting with - * an explicit value of for example 0x10800 - */ - - /* various ADPCM codecs */ - AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, - AV_CODEC_ID_ADPCM_IMA_WAV, - AV_CODEC_ID_ADPCM_IMA_DK3, - AV_CODEC_ID_ADPCM_IMA_DK4, - AV_CODEC_ID_ADPCM_IMA_WS, - AV_CODEC_ID_ADPCM_IMA_SMJPEG, - AV_CODEC_ID_ADPCM_MS, - AV_CODEC_ID_ADPCM_4XM, - AV_CODEC_ID_ADPCM_XA, - AV_CODEC_ID_ADPCM_ADX, - AV_CODEC_ID_ADPCM_EA, - AV_CODEC_ID_ADPCM_G726, - AV_CODEC_ID_ADPCM_CT, - AV_CODEC_ID_ADPCM_SWF, - AV_CODEC_ID_ADPCM_YAMAHA, - AV_CODEC_ID_ADPCM_SBPRO_4, - AV_CODEC_ID_ADPCM_SBPRO_3, - AV_CODEC_ID_ADPCM_SBPRO_2, - AV_CODEC_ID_ADPCM_THP, - AV_CODEC_ID_ADPCM_IMA_AMV, - AV_CODEC_ID_ADPCM_EA_R1, - AV_CODEC_ID_ADPCM_EA_R3, - AV_CODEC_ID_ADPCM_EA_R2, - AV_CODEC_ID_ADPCM_IMA_EA_SEAD, - AV_CODEC_ID_ADPCM_IMA_EA_EACS, - AV_CODEC_ID_ADPCM_EA_XAS, - AV_CODEC_ID_ADPCM_EA_MAXIS_XA, - AV_CODEC_ID_ADPCM_IMA_ISS, - AV_CODEC_ID_ADPCM_G722, - AV_CODEC_ID_ADPCM_IMA_APC, - AV_CODEC_ID_ADPCM_VIMA, -#if FF_API_VIMA_DECODER - AV_CODEC_ID_VIMA = AV_CODEC_ID_ADPCM_VIMA, -#endif - - AV_CODEC_ID_ADPCM_AFC = 0x11800, - AV_CODEC_ID_ADPCM_IMA_OKI, - AV_CODEC_ID_ADPCM_DTK, - AV_CODEC_ID_ADPCM_IMA_RAD, - AV_CODEC_ID_ADPCM_G726LE, - AV_CODEC_ID_ADPCM_THP_LE, - AV_CODEC_ID_ADPCM_PSX, - AV_CODEC_ID_ADPCM_AICA, - - /* AMR */ - AV_CODEC_ID_AMR_NB = 0x12000, - AV_CODEC_ID_AMR_WB, - - /* RealAudio codecs*/ - AV_CODEC_ID_RA_144 = 0x13000, - AV_CODEC_ID_RA_288, - - /* various DPCM codecs */ - AV_CODEC_ID_ROQ_DPCM = 0x14000, - AV_CODEC_ID_INTERPLAY_DPCM, - AV_CODEC_ID_XAN_DPCM, - AV_CODEC_ID_SOL_DPCM, - - AV_CODEC_ID_SDX2_DPCM = 0x14800, - - /* audio codecs */ - AV_CODEC_ID_MP2 = 0x15000, - AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 - AV_CODEC_ID_AAC, - AV_CODEC_ID_AC3, - AV_CODEC_ID_DTS, - AV_CODEC_ID_VORBIS, - AV_CODEC_ID_DVAUDIO, - AV_CODEC_ID_WMAV1, - AV_CODEC_ID_WMAV2, - AV_CODEC_ID_MACE3, - AV_CODEC_ID_MACE6, - AV_CODEC_ID_VMDAUDIO, - AV_CODEC_ID_FLAC, - AV_CODEC_ID_MP3ADU, - AV_CODEC_ID_MP3ON4, - AV_CODEC_ID_SHORTEN, - AV_CODEC_ID_ALAC, - AV_CODEC_ID_WESTWOOD_SND1, - AV_CODEC_ID_GSM, ///< as in Berlin toast format - AV_CODEC_ID_QDM2, - AV_CODEC_ID_COOK, - AV_CODEC_ID_TRUESPEECH, - AV_CODEC_ID_TTA, - AV_CODEC_ID_SMACKAUDIO, - AV_CODEC_ID_QCELP, - AV_CODEC_ID_WAVPACK, - AV_CODEC_ID_DSICINAUDIO, - AV_CODEC_ID_IMC, - AV_CODEC_ID_MUSEPACK7, - AV_CODEC_ID_MLP, - AV_CODEC_ID_GSM_MS, /* as found in WAV */ - AV_CODEC_ID_ATRAC3, -#if FF_API_VOXWARE - AV_CODEC_ID_VOXWARE, -#endif - AV_CODEC_ID_APE, - AV_CODEC_ID_NELLYMOSER, - AV_CODEC_ID_MUSEPACK8, - AV_CODEC_ID_SPEEX, - AV_CODEC_ID_WMAVOICE, - AV_CODEC_ID_WMAPRO, - AV_CODEC_ID_WMALOSSLESS, - AV_CODEC_ID_ATRAC3P, - AV_CODEC_ID_EAC3, - AV_CODEC_ID_SIPR, - AV_CODEC_ID_MP1, - AV_CODEC_ID_TWINVQ, - AV_CODEC_ID_TRUEHD, - AV_CODEC_ID_MP4ALS, - AV_CODEC_ID_ATRAC1, - AV_CODEC_ID_BINKAUDIO_RDFT, - AV_CODEC_ID_BINKAUDIO_DCT, - AV_CODEC_ID_AAC_LATM, - AV_CODEC_ID_QDMC, - AV_CODEC_ID_CELT, - AV_CODEC_ID_G723_1, - AV_CODEC_ID_G729, - AV_CODEC_ID_8SVX_EXP, - AV_CODEC_ID_8SVX_FIB, - AV_CODEC_ID_BMV_AUDIO, - AV_CODEC_ID_RALF, - AV_CODEC_ID_IAC, - AV_CODEC_ID_ILBC, - AV_CODEC_ID_OPUS, - AV_CODEC_ID_COMFORT_NOISE, - AV_CODEC_ID_TAK, - AV_CODEC_ID_METASOUND, - AV_CODEC_ID_PAF_AUDIO, - AV_CODEC_ID_ON2AVC, - AV_CODEC_ID_DSS_SP, - - AV_CODEC_ID_FFWAVESYNTH = 0x15800, - AV_CODEC_ID_SONIC, - AV_CODEC_ID_SONIC_LS, - AV_CODEC_ID_EVRC, - AV_CODEC_ID_SMV, - AV_CODEC_ID_DSD_LSBF, - AV_CODEC_ID_DSD_MSBF, - AV_CODEC_ID_DSD_LSBF_PLANAR, - AV_CODEC_ID_DSD_MSBF_PLANAR, - AV_CODEC_ID_4GV, - AV_CODEC_ID_INTERPLAY_ACM, - AV_CODEC_ID_XMA1, - AV_CODEC_ID_XMA2, - - /* subtitle codecs */ - AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs. - AV_CODEC_ID_DVD_SUBTITLE = 0x17000, - AV_CODEC_ID_DVB_SUBTITLE, - AV_CODEC_ID_TEXT, ///< raw UTF-8 text - AV_CODEC_ID_XSUB, - AV_CODEC_ID_SSA, - AV_CODEC_ID_MOV_TEXT, - AV_CODEC_ID_HDMV_PGS_SUBTITLE, - AV_CODEC_ID_DVB_TELETEXT, - AV_CODEC_ID_SRT, - - AV_CODEC_ID_MICRODVD = 0x17800, - AV_CODEC_ID_EIA_608, - AV_CODEC_ID_JACOSUB, - AV_CODEC_ID_SAMI, - AV_CODEC_ID_REALTEXT, - AV_CODEC_ID_STL, - AV_CODEC_ID_SUBVIEWER1, - AV_CODEC_ID_SUBVIEWER, - AV_CODEC_ID_SUBRIP, - AV_CODEC_ID_WEBVTT, - AV_CODEC_ID_MPL2, - AV_CODEC_ID_VPLAYER, - AV_CODEC_ID_PJS, - AV_CODEC_ID_ASS, - AV_CODEC_ID_HDMV_TEXT_SUBTITLE, - - /* other specific kind of codecs (generally used for attachments) */ - AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. - AV_CODEC_ID_TTF = 0x18000, - - AV_CODEC_ID_BINTEXT = 0x18800, - AV_CODEC_ID_XBIN, - AV_CODEC_ID_IDF, - AV_CODEC_ID_OTF, - AV_CODEC_ID_SMPTE_KLV, - AV_CODEC_ID_DVD_NAV, - AV_CODEC_ID_TIMED_ID3, - AV_CODEC_ID_BIN_DATA, - - - AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it - - AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS - * stream (only used by libavformat) */ - AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems - * stream (only used by libavformat) */ - AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. - AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames wrapped in AVPacket -}; - -/** - * This struct describes the properties of a single codec described by an - * AVCodecID. - * @see avcodec_descriptor_get() - */ -typedef struct AVCodecDescriptor { - enum AVCodecID id; - enum AVMediaType type; - /** - * Name of the codec described by this descriptor. It is non-empty and - * unique for each codec descriptor. It should contain alphanumeric - * characters and '_' only. - */ - const char *name; - /** - * A more descriptive name for this codec. May be NULL. - */ - const char *long_name; - /** - * Codec properties, a combination of AV_CODEC_PROP_* flags. - */ - int props; - /** - * MIME type(s) associated with the codec. - * May be NULL; if not, a NULL-terminated array of MIME types. - * The first item is always non-NULL and is the preferred MIME type. - */ - const char *const *mime_types; - /** - * If non-NULL, an array of profiles recognized for this codec. - * Terminated with FF_PROFILE_UNKNOWN. - */ - const struct AVProfile *profiles; -} AVCodecDescriptor; - -/** - * Codec uses only intra compression. - * Video codecs only. - */ -#define AV_CODEC_PROP_INTRA_ONLY (1 << 0) -/** - * Codec supports lossy compression. Audio and video codecs only. - * @note a codec may support both lossy and lossless - * compression modes - */ -#define AV_CODEC_PROP_LOSSY (1 << 1) -/** - * Codec supports lossless compression. Audio and video codecs only. - */ -#define AV_CODEC_PROP_LOSSLESS (1 << 2) -/** - * Codec supports frame reordering. That is, the coded order (the order in which - * the encoded packets are output by the encoders / stored / input to the - * decoders) may be different from the presentation order of the corresponding - * frames. - * - * For codecs that do not have this property set, PTS and DTS should always be - * equal. - */ -#define AV_CODEC_PROP_REORDER (1 << 3) -/** - * Subtitle codec is bitmap based - * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field. - */ -#define AV_CODEC_PROP_BITMAP_SUB (1 << 16) -/** - * Subtitle codec is text based. - * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field. - */ -#define AV_CODEC_PROP_TEXT_SUB (1 << 17) - -/** - * @ingroup lavc_decoding - * Required number of additionally allocated bytes at the end of the input bitstream for decoding. - * This is mainly needed because some optimized bitstream readers read - * 32 or 64 bit at once and could read over the end.
- * Note: If the first 23 bits of the additional bytes are not 0, then damaged - * MPEG bitstreams could cause overread and segfault. - */ -#define AV_INPUT_BUFFER_PADDING_SIZE 32 - -/** - * @ingroup lavc_encoding - * minimum encoding buffer size - * Used to avoid some checks during header writing. - */ -#define AV_INPUT_BUFFER_MIN_SIZE 16384 - -#if FF_API_WITHOUT_PREFIX -/** - * @deprecated use AV_INPUT_BUFFER_PADDING_SIZE instead - */ -#define FF_INPUT_BUFFER_PADDING_SIZE 32 - -/** - * @deprecated use AV_INPUT_BUFFER_MIN_SIZE instead - */ -#define FF_MIN_BUFFER_SIZE 16384 -#endif /* FF_API_WITHOUT_PREFIX */ - -/** - * @ingroup lavc_encoding - * motion estimation type. - * @deprecated use codec private option instead - */ -#if FF_API_MOTION_EST -enum Motion_Est_ID { - ME_ZERO = 1, ///< no search, that is use 0,0 vector whenever one is needed - ME_FULL, - ME_LOG, - ME_PHODS, - ME_EPZS, ///< enhanced predictive zonal search - ME_X1, ///< reserved for experiments - ME_HEX, ///< hexagon based search - ME_UMH, ///< uneven multi-hexagon search - ME_TESA, ///< transformed exhaustive search algorithm - ME_ITER=50, ///< iterative search -}; -#endif - -/** - * @ingroup lavc_decoding - */ -enum AVDiscard{ - /* We leave some space between them for extensions (drop some - * keyframes for intra-only or drop just some bidir frames). */ - AVDISCARD_NONE =-16, ///< discard nothing - AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi - AVDISCARD_NONREF = 8, ///< discard all non reference - AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames - AVDISCARD_NONINTRA= 24, ///< discard all non intra frames - AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes - AVDISCARD_ALL = 48, ///< discard all -}; - -enum AVAudioServiceType { - AV_AUDIO_SERVICE_TYPE_MAIN = 0, - AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, - AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, - AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, - AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, - AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, - AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, - AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, - AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, - AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI -}; - -/** - * @ingroup lavc_encoding - */ -typedef struct RcOverride{ - int start_frame; - int end_frame; - int qscale; // If this is 0 then quality_factor will be used instead. - float quality_factor; -} RcOverride; - -#if FF_API_MAX_BFRAMES -/** - * @deprecated there is no libavcodec-wide limit on the number of B-frames - */ -#define FF_MAX_B_FRAMES 16 -#endif - -/* encoding support - These flags can be passed in AVCodecContext.flags before initialization. - Note: Not everything is supported yet. -*/ - -/** - * Allow decoders to produce frames with data planes that are not aligned - * to CPU requirements (e.g. due to cropping). - */ -#define AV_CODEC_FLAG_UNALIGNED (1 << 0) -/** - * Use fixed qscale. - */ -#define AV_CODEC_FLAG_QSCALE (1 << 1) -/** - * 4 MV per MB allowed / advanced prediction for H.263. - */ -#define AV_CODEC_FLAG_4MV (1 << 2) -/** - * Output even those frames that might be corrupted. - */ -#define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3) -/** - * Use qpel MC. - */ -#define AV_CODEC_FLAG_QPEL (1 << 4) -/** - * Use internal 2pass ratecontrol in first pass mode. - */ -#define AV_CODEC_FLAG_PASS1 (1 << 9) -/** - * Use internal 2pass ratecontrol in second pass mode. - */ -#define AV_CODEC_FLAG_PASS2 (1 << 10) -/** - * loop filter. - */ -#define AV_CODEC_FLAG_LOOP_FILTER (1 << 11) -/** - * Only decode/encode grayscale. - */ -#define AV_CODEC_FLAG_GRAY (1 << 13) -/** - * error[?] variables will be set during encoding. - */ -#define AV_CODEC_FLAG_PSNR (1 << 15) -/** - * Input bitstream might be truncated at a random location - * instead of only at frame boundaries. - */ -#define AV_CODEC_FLAG_TRUNCATED (1 << 16) -/** - * Use interlaced DCT. - */ -#define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18) -/** - * Force low delay. - */ -#define AV_CODEC_FLAG_LOW_DELAY (1 << 19) -/** - * Place global headers in extradata instead of every keyframe. - */ -#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) -/** - * Use only bitexact stuff (except (I)DCT). - */ -#define AV_CODEC_FLAG_BITEXACT (1 << 23) -/* Fx : Flag for h263+ extra options */ -/** - * H.263 advanced intra coding / MPEG-4 AC prediction - */ -#define AV_CODEC_FLAG_AC_PRED (1 << 24) -/** - * interlaced motion estimation - */ -#define AV_CODEC_FLAG_INTERLACED_ME (1 << 29) -#define AV_CODEC_FLAG_CLOSED_GOP (1U << 31) - -/** - * Allow non spec compliant speedup tricks. - */ -#define AV_CODEC_FLAG2_FAST (1 << 0) -/** - * Skip bitstream encoding. - */ -#define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2) -/** - * Place global headers at every keyframe instead of in extradata. - */ -#define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3) - -/** - * timecode is in drop frame format. DEPRECATED!!!! - */ -#define AV_CODEC_FLAG2_DROP_FRAME_TIMECODE (1 << 13) - -/** - * Input bitstream might be truncated at a packet boundaries - * instead of only at frame boundaries. - */ -#define AV_CODEC_FLAG2_CHUNKS (1 << 15) -/** - * Discard cropping information from SPS. - */ -#define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16) - -/** - * Show all frames before the first keyframe - */ -#define AV_CODEC_FLAG2_SHOW_ALL (1 << 22) -/** - * Export motion vectors through frame side data - */ -#define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28) -/** - * Do not skip samples and export skip information as frame side data - */ -#define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29) - -/* Unsupported options : - * Syntax Arithmetic coding (SAC) - * Reference Picture Selection - * Independent Segment Decoding */ -/* /Fx */ -/* codec capabilities */ - -/** - * Decoder can use draw_horiz_band callback. - */ -#define AV_CODEC_CAP_DRAW_HORIZ_BAND (1 << 0) -/** - * Codec uses get_buffer() for allocating buffers and supports custom allocators. - * If not set, it might not use get_buffer() at all or use operations that - * assume the buffer was allocated by avcodec_default_get_buffer. - */ -#define AV_CODEC_CAP_DR1 (1 << 1) -#define AV_CODEC_CAP_TRUNCATED (1 << 3) -/** - * Encoder or decoder requires flushing with NULL input at the end in order to - * give the complete and correct output. - * - * NOTE: If this flag is not set, the codec is guaranteed to never be fed with - * with NULL data. The user can still send NULL data to the public encode - * or decode function, but libavcodec will not pass it along to the codec - * unless this flag is set. - * - * Decoders: - * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to get the delayed data until the decoder no longer - * returns frames. - * - * Encoders: - * The encoder needs to be fed with NULL data at the end of encoding until the - * encoder no longer returns data. - * - * NOTE: For encoders implementing the AVCodec.encode2() function, setting this - * flag also means that the encoder must set the pts and duration for - * each output packet. If this flag is not set, the pts and duration will - * be determined by libavcodec from the input frame. - */ -#define AV_CODEC_CAP_DELAY (1 << 5) -/** - * Codec can be fed a final frame with a smaller size. - * This can be used to prevent truncation of the last audio samples. - */ -#define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6) - -#if FF_API_CAP_VDPAU -/** - * Codec can export data for HW decoding (VDPAU). - */ -#define AV_CODEC_CAP_HWACCEL_VDPAU (1 << 7) -#endif - -/** - * Codec can output multiple frames per AVPacket - * Normally demuxers return one frame at a time, demuxers which do not do - * are connected to a parser to split what they return into proper frames. - * This flag is reserved to the very rare category of codecs which have a - * bitstream that cannot be split into frames without timeconsuming - * operations like full decoding. Demuxers carring such bitstreams thus - * may return multiple frames in a packet. This has many disadvantages like - * prohibiting stream copy in many cases thus it should only be considered - * as a last resort. - */ -#define AV_CODEC_CAP_SUBFRAMES (1 << 8) -/** - * Codec is experimental and is thus avoided in favor of non experimental - * encoders - */ -#define AV_CODEC_CAP_EXPERIMENTAL (1 << 9) -/** - * Codec should fill in channel configuration and samplerate instead of container - */ -#define AV_CODEC_CAP_CHANNEL_CONF (1 << 10) -/** - * Codec supports frame-level multithreading. - */ -#define AV_CODEC_CAP_FRAME_THREADS (1 << 12) -/** - * Codec supports slice-based (or partition-based) multithreading. - */ -#define AV_CODEC_CAP_SLICE_THREADS (1 << 13) -/** - * Codec supports changed parameters at any point. - */ -#define AV_CODEC_CAP_PARAM_CHANGE (1 << 14) -/** - * Codec supports avctx->thread_count == 0 (auto). - */ -#define AV_CODEC_CAP_AUTO_THREADS (1 << 15) -/** - * Audio encoder supports receiving a different number of samples in each call. - */ -#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16) -/** - * Codec is intra only. - */ -#define AV_CODEC_CAP_INTRA_ONLY 0x40000000 -/** - * Codec is lossless. - */ -#define AV_CODEC_CAP_LOSSLESS 0x80000000 - - -#if FF_API_WITHOUT_PREFIX -/** - * Allow decoders to produce frames with data planes that are not aligned - * to CPU requirements (e.g. due to cropping). - */ -#define CODEC_FLAG_UNALIGNED AV_CODEC_FLAG_UNALIGNED -#define CODEC_FLAG_QSCALE AV_CODEC_FLAG_QSCALE -#define CODEC_FLAG_4MV AV_CODEC_FLAG_4MV -#define CODEC_FLAG_OUTPUT_CORRUPT AV_CODEC_FLAG_OUTPUT_CORRUPT -#define CODEC_FLAG_QPEL AV_CODEC_FLAG_QPEL -#if FF_API_GMC -/** - * @deprecated use the "gmc" private option of the libxvid encoder - */ -#define CODEC_FLAG_GMC 0x0020 ///< Use GMC. -#endif -#if FF_API_MV0 -/** - * @deprecated use the flag "mv0" in the "mpv_flags" private option of the - * mpegvideo encoders - */ -#define CODEC_FLAG_MV0 0x0040 -#endif -#if FF_API_INPUT_PRESERVED -/** - * @deprecated passing reference-counted frames to the encoders replaces this - * flag - */ -#define CODEC_FLAG_INPUT_PRESERVED 0x0100 -#endif -#define CODEC_FLAG_PASS1 AV_CODEC_FLAG_PASS1 -#define CODEC_FLAG_PASS2 AV_CODEC_FLAG_PASS2 -#define CODEC_FLAG_GRAY AV_CODEC_FLAG_GRAY -#if FF_API_EMU_EDGE -/** - * @deprecated edges are not used/required anymore. I.e. this flag is now always - * set. - */ -#define CODEC_FLAG_EMU_EDGE 0x4000 -#endif -#define CODEC_FLAG_PSNR AV_CODEC_FLAG_PSNR -#define CODEC_FLAG_TRUNCATED AV_CODEC_FLAG_TRUNCATED - -#if FF_API_NORMALIZE_AQP -/** - * @deprecated use the flag "naq" in the "mpv_flags" private option of the - * mpegvideo encoders - */ -#define CODEC_FLAG_NORMALIZE_AQP 0x00020000 -#endif -#define CODEC_FLAG_INTERLACED_DCT AV_CODEC_FLAG_INTERLACED_DCT -#define CODEC_FLAG_LOW_DELAY AV_CODEC_FLAG_LOW_DELAY -#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER -#define CODEC_FLAG_BITEXACT AV_CODEC_FLAG_BITEXACT -#define CODEC_FLAG_AC_PRED AV_CODEC_FLAG_AC_PRED -#define CODEC_FLAG_LOOP_FILTER AV_CODEC_FLAG_LOOP_FILTER -#define CODEC_FLAG_INTERLACED_ME AV_CODEC_FLAG_INTERLACED_ME -#define CODEC_FLAG_CLOSED_GOP AV_CODEC_FLAG_CLOSED_GOP -#define CODEC_FLAG2_FAST AV_CODEC_FLAG2_FAST -#define CODEC_FLAG2_NO_OUTPUT AV_CODEC_FLAG2_NO_OUTPUT -#define CODEC_FLAG2_LOCAL_HEADER AV_CODEC_FLAG2_LOCAL_HEADER -#define CODEC_FLAG2_DROP_FRAME_TIMECODE AV_CODEC_FLAG2_DROP_FRAME_TIMECODE -#define CODEC_FLAG2_IGNORE_CROP AV_CODEC_FLAG2_IGNORE_CROP - -#define CODEC_FLAG2_CHUNKS AV_CODEC_FLAG2_CHUNKS -#define CODEC_FLAG2_SHOW_ALL AV_CODEC_FLAG2_SHOW_ALL -#define CODEC_FLAG2_EXPORT_MVS AV_CODEC_FLAG2_EXPORT_MVS -#define CODEC_FLAG2_SKIP_MANUAL AV_CODEC_FLAG2_SKIP_MANUAL - -/* Unsupported options : - * Syntax Arithmetic coding (SAC) - * Reference Picture Selection - * Independent Segment Decoding */ -/* /Fx */ -/* codec capabilities */ - -#define CODEC_CAP_DRAW_HORIZ_BAND AV_CODEC_CAP_DRAW_HORIZ_BAND ///< Decoder can use draw_horiz_band callback. -/** - * Codec uses get_buffer() for allocating buffers and supports custom allocators. - * If not set, it might not use get_buffer() at all or use operations that - * assume the buffer was allocated by avcodec_default_get_buffer. - */ -#define CODEC_CAP_DR1 AV_CODEC_CAP_DR1 -#define CODEC_CAP_TRUNCATED AV_CODEC_CAP_TRUNCATED -#if FF_API_XVMC -/* Codec can export data for HW decoding. This flag indicates that - * the codec would call get_format() with list that might contain HW accelerated - * pixel formats (XvMC, VDPAU, VAAPI, etc). The application can pick any of them - * including raw image format. - * The application can use the passed context to determine bitstream version, - * chroma format, resolution etc. - */ -#define CODEC_CAP_HWACCEL 0x0010 -#endif /* FF_API_XVMC */ -/** - * Encoder or decoder requires flushing with NULL input at the end in order to - * give the complete and correct output. - * - * NOTE: If this flag is not set, the codec is guaranteed to never be fed with - * with NULL data. The user can still send NULL data to the public encode - * or decode function, but libavcodec will not pass it along to the codec - * unless this flag is set. - * - * Decoders: - * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to get the delayed data until the decoder no longer - * returns frames. - * - * Encoders: - * The encoder needs to be fed with NULL data at the end of encoding until the - * encoder no longer returns data. - * - * NOTE: For encoders implementing the AVCodec.encode2() function, setting this - * flag also means that the encoder must set the pts and duration for - * each output packet. If this flag is not set, the pts and duration will - * be determined by libavcodec from the input frame. - */ -#define CODEC_CAP_DELAY AV_CODEC_CAP_DELAY -/** - * Codec can be fed a final frame with a smaller size. - * This can be used to prevent truncation of the last audio samples. - */ -#define CODEC_CAP_SMALL_LAST_FRAME AV_CODEC_CAP_SMALL_LAST_FRAME -#if FF_API_CAP_VDPAU -/** - * Codec can export data for HW decoding (VDPAU). - */ -#define CODEC_CAP_HWACCEL_VDPAU AV_CODEC_CAP_HWACCEL_VDPAU -#endif -/** - * Codec can output multiple frames per AVPacket - * Normally demuxers return one frame at a time, demuxers which do not do - * are connected to a parser to split what they return into proper frames. - * This flag is reserved to the very rare category of codecs which have a - * bitstream that cannot be split into frames without timeconsuming - * operations like full decoding. Demuxers carring such bitstreams thus - * may return multiple frames in a packet. This has many disadvantages like - * prohibiting stream copy in many cases thus it should only be considered - * as a last resort. - */ -#define CODEC_CAP_SUBFRAMES AV_CODEC_CAP_SUBFRAMES -/** - * Codec is experimental and is thus avoided in favor of non experimental - * encoders - */ -#define CODEC_CAP_EXPERIMENTAL AV_CODEC_CAP_EXPERIMENTAL -/** - * Codec should fill in channel configuration and samplerate instead of container - */ -#define CODEC_CAP_CHANNEL_CONF AV_CODEC_CAP_CHANNEL_CONF -#if FF_API_NEG_LINESIZES -/** - * @deprecated no codecs use this capability - */ -#define CODEC_CAP_NEG_LINESIZES 0x0800 -#endif -/** - * Codec supports frame-level multithreading. - */ -#define CODEC_CAP_FRAME_THREADS AV_CODEC_CAP_FRAME_THREADS -/** - * Codec supports slice-based (or partition-based) multithreading. - */ -#define CODEC_CAP_SLICE_THREADS AV_CODEC_CAP_SLICE_THREADS -/** - * Codec supports changed parameters at any point. - */ -#define CODEC_CAP_PARAM_CHANGE AV_CODEC_CAP_PARAM_CHANGE -/** - * Codec supports avctx->thread_count == 0 (auto). - */ -#define CODEC_CAP_AUTO_THREADS AV_CODEC_CAP_AUTO_THREADS -/** - * Audio encoder supports receiving a different number of samples in each call. - */ -#define CODEC_CAP_VARIABLE_FRAME_SIZE AV_CODEC_CAP_VARIABLE_FRAME_SIZE -/** - * Codec is intra only. - */ -#define CODEC_CAP_INTRA_ONLY AV_CODEC_CAP_INTRA_ONLY -/** - * Codec is lossless. - */ -#define CODEC_CAP_LOSSLESS AV_CODEC_CAP_LOSSLESS - -/** - * HWAccel is experimental and is thus avoided in favor of non experimental - * codecs - */ -#define HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200 -#endif /* FF_API_WITHOUT_PREFIX */ - -#if FF_API_MB_TYPE -//The following defines may change, don't expect compatibility if you use them. -#define MB_TYPE_INTRA4x4 0x0001 -#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific -#define MB_TYPE_INTRA_PCM 0x0004 //FIXME H.264-specific -#define MB_TYPE_16x16 0x0008 -#define MB_TYPE_16x8 0x0010 -#define MB_TYPE_8x16 0x0020 -#define MB_TYPE_8x8 0x0040 -#define MB_TYPE_INTERLACED 0x0080 -#define MB_TYPE_DIRECT2 0x0100 //FIXME -#define MB_TYPE_ACPRED 0x0200 -#define MB_TYPE_GMC 0x0400 -#define MB_TYPE_SKIP 0x0800 -#define MB_TYPE_P0L0 0x1000 -#define MB_TYPE_P1L0 0x2000 -#define MB_TYPE_P0L1 0x4000 -#define MB_TYPE_P1L1 0x8000 -#define MB_TYPE_L0 (MB_TYPE_P0L0 | MB_TYPE_P1L0) -#define MB_TYPE_L1 (MB_TYPE_P0L1 | MB_TYPE_P1L1) -#define MB_TYPE_L0L1 (MB_TYPE_L0 | MB_TYPE_L1) -#define MB_TYPE_QUANT 0x00010000 -#define MB_TYPE_CBP 0x00020000 -//Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...) -#endif - -/** - * Pan Scan area. - * This specifies the area which should be displayed. - * Note there may be multiple such areas for one frame. - */ -typedef struct AVPanScan{ - /** - * id - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int id; - - /** - * width and height in 1/16 pel - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int width; - int height; - - /** - * position of the top left corner in 1/16 pel for up to 3 fields/frames - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int16_t position[3][2]; -}AVPanScan; - -/** - * This structure describes the bitrate properties of an encoded bitstream. It - * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD - * parameters for H.264/HEVC. - */ -typedef struct AVCPBProperties { - /** - * Maximum bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int max_bitrate; - /** - * Minimum bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int min_bitrate; - /** - * Average bitrate of the stream, in bits per second. - * Zero if unknown or unspecified. - */ - int avg_bitrate; - - /** - * The size of the buffer to which the ratecontrol is applied, in bits. - * Zero if unknown or unspecified. - */ - int buffer_size; - - /** - * The delay between the time the packet this structure is associated with - * is received and the time when it should be decoded, in periods of a 27MHz - * clock. - * - * UINT64_MAX when unknown or unspecified. - */ - uint64_t vbv_delay; -} AVCPBProperties; - -#if FF_API_QSCALE_TYPE -#define FF_QSCALE_TYPE_MPEG1 0 -#define FF_QSCALE_TYPE_MPEG2 1 -#define FF_QSCALE_TYPE_H264 2 -#define FF_QSCALE_TYPE_VP56 3 -#endif - -/** - * The decoder will keep a reference to the frame and may reuse it later. - */ -#define AV_GET_BUFFER_FLAG_REF (1 << 0) - -/** - * @defgroup lavc_packet AVPacket - * - * Types and functions for working with AVPacket. - * @{ - */ -enum AVPacketSideDataType { - AV_PKT_DATA_PALETTE, - AV_PKT_DATA_NEW_EXTRADATA, - - /** - * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: - * @code - * u32le param_flags - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) - * s32le channel_count - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) - * u64le channel_layout - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) - * s32le sample_rate - * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) - * s32le width - * s32le height - * @endcode - */ - AV_PKT_DATA_PARAM_CHANGE, - - /** - * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of - * structures with info about macroblocks relevant to splitting the - * packet into smaller packets on macroblock edges (e.g. as for RFC 2190). - * That is, it does not necessarily contain info about all macroblocks, - * as long as the distance between macroblocks in the info is smaller - * than the target payload size. - * Each MB info structure is 12 bytes, and is laid out as follows: - * @code - * u32le bit offset from the start of the packet - * u8 current quantizer at the start of the macroblock - * u8 GOB number - * u16le macroblock address within the GOB - * u8 horizontal MV predictor - * u8 vertical MV predictor - * u8 horizontal MV predictor for block number 3 - * u8 vertical MV predictor for block number 3 - * @endcode - */ - AV_PKT_DATA_H263_MB_INFO, - - /** - * This side data should be associated with an audio stream and contains - * ReplayGain information in form of the AVReplayGain struct. - */ - AV_PKT_DATA_REPLAYGAIN, - - /** - * This side data contains a 3x3 transformation matrix describing an affine - * transformation that needs to be applied to the decoded video frames for - * correct presentation. - * - * See libavutil/display.h for a detailed description of the data. - */ - AV_PKT_DATA_DISPLAYMATRIX, - - /** - * This side data should be associated with a video stream and contains - * Stereoscopic 3D information in form of the AVStereo3D struct. - */ - AV_PKT_DATA_STEREO3D, - - /** - * This side data should be associated with an audio stream and corresponds - * to enum AVAudioServiceType. - */ - AV_PKT_DATA_AUDIO_SERVICE_TYPE, - - /** - * This side data contains quality related information from the encoder. - * @code - * u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad). - * u8 picture type - * u8 error count - * u16 reserved - * u64le[error count] sum of squared differences between encoder in and output - * @endcode - */ - AV_PKT_DATA_QUALITY_STATS, - - /** - * This side data contains an integer value representing the stream index - * of a "fallback" track. A fallback track indicates an alternate - * track to use when the current track can not be decoded for some reason. - * e.g. no decoder available for codec. - */ - AV_PKT_DATA_FALLBACK_TRACK, - - /** - * This side data corresponds to the AVCPBProperties struct. - */ - AV_PKT_DATA_CPB_PROPERTIES, - - /** - * Recommmends skipping the specified number of samples - * @code - * u32le number of samples to skip from start of this packet - * u32le number of samples to skip from end of this packet - * u8 reason for start skip - * u8 reason for end skip (0=padding silence, 1=convergence) - * @endcode - */ - AV_PKT_DATA_SKIP_SAMPLES=70, - - /** - * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that - * the packet may contain "dual mono" audio specific to Japanese DTV - * and if it is true, recommends only the selected channel to be used. - * @code - * u8 selected channels (0=mail/left, 1=sub/right, 2=both) - * @endcode - */ - AV_PKT_DATA_JP_DUALMONO, - - /** - * A list of zero terminated key/value strings. There is no end marker for - * the list, so it is required to rely on the side data size to stop. - */ - AV_PKT_DATA_STRINGS_METADATA, - - /** - * Subtitle event position - * @code - * u32le x1 - * u32le y1 - * u32le x2 - * u32le y2 - * @endcode - */ - AV_PKT_DATA_SUBTITLE_POSITION, - - /** - * Data found in BlockAdditional element of matroska container. There is - * no end marker for the data, so it is required to rely on the side data - * size to recognize the end. 8 byte id (as found in BlockAddId) followed - * by data. - */ - AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, - - /** - * The optional first identifier line of a WebVTT cue. - */ - AV_PKT_DATA_WEBVTT_IDENTIFIER, - - /** - * The optional settings (rendering instructions) that immediately - * follow the timestamp specifier of a WebVTT cue. - */ - AV_PKT_DATA_WEBVTT_SETTINGS, - - /** - * A list of zero terminated key/value strings. There is no end marker for - * the list, so it is required to rely on the side data size to stop. This - * side data includes updated metadata which appeared in the stream. - */ - AV_PKT_DATA_METADATA_UPDATE, -}; - -#define AV_PKT_DATA_QUALITY_FACTOR AV_PKT_DATA_QUALITY_STATS //DEPRECATED - -typedef struct AVPacketSideData { - uint8_t *data; - int size; - enum AVPacketSideDataType type; -} AVPacketSideData; - -/** - * This structure stores compressed data. It is typically exported by demuxers - * and then passed as input to decoders, or received as output from encoders and - * then passed to muxers. - * - * For video, it should typically contain one compressed frame. For audio it may - * contain several compressed frames. Encoders are allowed to output empty - * packets, with no compressed data, containing only side data - * (e.g. to update some stream parameters at the end of encoding). - * - * AVPacket is one of the few structs in FFmpeg, whose size is a part of public - * ABI. Thus it may be allocated on stack and no new fields can be added to it - * without libavcodec and libavformat major bump. - * - * The semantics of data ownership depends on the buf field. - * If it is set, the packet data is dynamically allocated and is - * valid indefinitely until a call to av_packet_unref() reduces the - * reference count to 0. - * - * If the buf field is not set av_packet_ref() would make a copy instead - * of increasing the reference count. - * - * The side data is always allocated with av_malloc(), copied by - * av_packet_ref() and freed by av_packet_unref(). - * - * @see av_packet_ref - * @see av_packet_unref - */ -typedef struct AVPacket { - /** - * A reference to the reference-counted buffer where the packet data is - * stored. - * May be NULL, then the packet data is not reference-counted. - */ - AVBufferRef *buf; - /** - * Presentation timestamp in AVStream->time_base units; the time at which - * the decompressed packet will be presented to the user. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - * pts MUST be larger or equal to dts as presentation cannot happen before - * decompression, unless one wants to view hex dumps. Some formats misuse - * the terms dts and pts/cts to mean something different. Such timestamps - * must be converted to true pts/dts before they are stored in AVPacket. - */ - int64_t pts; - /** - * Decompression timestamp in AVStream->time_base units; the time at which - * the packet is decompressed. - * Can be AV_NOPTS_VALUE if it is not stored in the file. - */ - int64_t dts; - uint8_t *data; - int size; - int stream_index; - /** - * A combination of AV_PKT_FLAG values - */ - int flags; - /** - * Additional packet data that can be provided by the container. - * Packet can contain several types of side information. - */ - AVPacketSideData *side_data; - int side_data_elems; - - /** - * Duration of this packet in AVStream->time_base units, 0 if unknown. - * Equals next_pts - this_pts in presentation order. - */ - int64_t duration; - - int64_t pos; ///< byte position in stream, -1 if unknown - -#if FF_API_CONVERGENCE_DURATION - /** - * @deprecated Same as the duration field, but as int64_t. This was required - * for Matroska subtitles, whose duration values could overflow when the - * duration field was still an int. - */ - attribute_deprecated - int64_t convergence_duration; -#endif -} AVPacket; -#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe -#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted - -enum AVSideDataParamChangeFlags { - AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, - AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002, - AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, - AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, -}; -/** - * @} - */ - -struct AVCodecInternal; - -enum AVFieldOrder { - AV_FIELD_UNKNOWN, - AV_FIELD_PROGRESSIVE, - AV_FIELD_TT, //< Top coded_first, top displayed first - AV_FIELD_BB, //< Bottom coded first, bottom displayed first - AV_FIELD_TB, //< Top coded first, bottom displayed first - AV_FIELD_BT, //< Bottom coded first, top displayed first -}; - -/** - * main external API structure. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * Please use AVOptions (av_opt* / av_set/get*()) to access these fields from user - * applications. - * sizeof(AVCodecContext) must not be used outside libav*. - */ -typedef struct AVCodecContext { - /** - * information on struct for av_log - * - set by avcodec_alloc_context3 - */ - const AVClass *av_class; - int log_level_offset; - - enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ - const struct AVCodec *codec; -#if FF_API_CODEC_NAME - /** - * @deprecated this field is not used for anything in libavcodec - */ - attribute_deprecated - char codec_name[32]; -#endif - enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ - - /** - * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). - * This is used to work around some encoder bugs. - * A demuxer should set this to what is stored in the field used to identify the codec. - * If there are multiple such fields in a container then the demuxer should choose the one - * which maximizes the information about the used codec. - * If the codec tag field in a container is larger than 32 bits then the demuxer should - * remap the longer ID to 32 bits with a table or other structure. Alternatively a new - * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated - * first. - * - encoding: Set by user, if not then the default based on codec_id will be used. - * - decoding: Set by user, will be converted to uppercase by libavcodec during init. - */ - unsigned int codec_tag; - -#if FF_API_STREAM_CODEC_TAG - /** - * @deprecated this field is unused - */ - attribute_deprecated - unsigned int stream_codec_tag; -#endif - - void *priv_data; - - /** - * Private context used for internal data. - * - * Unlike priv_data, this is not codec-specific. It is used in general - * libavcodec functions. - */ - struct AVCodecInternal *internal; - - /** - * Private data of the user, can be used to carry app specific stuff. - * - encoding: Set by user. - * - decoding: Set by user. - */ - void *opaque; - - /** - * the average bitrate - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: Set by user, may be overwritten by libavcodec - * if this info is available in the stream - */ - int64_t bit_rate; - - /** - * number of bits the bitstream is allowed to diverge from the reference. - * the reference can be CBR (for CBR pass1) or VBR (for pass2) - * - encoding: Set by user; unused for constant quantizer encoding. - * - decoding: unused - */ - int bit_rate_tolerance; - - /** - * Global quality for codecs which cannot change it per frame. - * This should be proportional to MPEG-1/2/4 qscale. - * - encoding: Set by user. - * - decoding: unused - */ - int global_quality; - - /** - * - encoding: Set by user. - * - decoding: unused - */ - int compression_level; -#define FF_COMPRESSION_DEFAULT -1 - - /** - * AV_CODEC_FLAG_*. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags; - - /** - * AV_CODEC_FLAG2_* - * - encoding: Set by user. - * - decoding: Set by user. - */ - int flags2; - - /** - * some codecs need / can use extradata like Huffman tables. - * mjpeg: Huffman tables - * rv10: additional flags - * mpeg4: global headers (they can be in the bitstream or here) - * The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger - * than extradata_size to avoid problems if it is read with the bitstream reader. - * The bytewise contents of extradata must not depend on the architecture or CPU endianness. - * - encoding: Set/allocated/freed by libavcodec. - * - decoding: Set/allocated/freed by user. - */ - uint8_t *extradata; - int extradata_size; - - /** - * This is the fundamental unit of time (in seconds) in terms - * of which frame timestamps are represented. For fixed-fps content, - * timebase should be 1/framerate and timestamp increments should be - * identically 1. - * This often, but not always is the inverse of the frame rate or field rate - * for video. - * - encoding: MUST be set by user. - * - decoding: the use of this field for decoding is deprecated. - * Use framerate instead. - */ - AVRational time_base; - - /** - * For some codecs, the time base is closer to the field rate than the frame rate. - * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration - * if no telecine is used ... - * - * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. - */ - int ticks_per_frame; - - /** - * Codec delay. - * - * Encoding: Number of frames delay there will be from the encoder input to - * the decoder output. (we assume the decoder matches the spec) - * Decoding: Number of frames delay in addition to what a standard decoder - * as specified in the spec would produce. - * - * Video: - * Number of frames the decoded output will be delayed relative to the - * encoded input. - * - * Audio: - * For encoding, this field is unused (see initial_padding). - * - * For decoding, this is the number of samples the decoder needs to - * output before the decoder's output is valid. When seeking, you should - * start decoding this many samples prior to your desired seek point. - * - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int delay; - - - /* video only */ - /** - * picture width / height. - * - * @note Those fields may not match the values of the last - * AVFrame outputted by avcodec_decode_video2 due frame - * reordering. - * - * - encoding: MUST be set by user. - * - decoding: May be set by the user before opening the decoder if known e.g. - * from the container. Some decoders will require the dimensions - * to be set by the caller. During decoding, the decoder may - * overwrite those values as required while parsing the data. - */ - int width, height; - - /** - * Bitstream width / height, may be different from width/height e.g. when - * the decoded frame is cropped before being output or lowres is enabled. - * - * @note Those field may not match the value of the last - * AVFrame outputted by avcodec_decode_video2 due frame - * reordering. - * - * - encoding: unused - * - decoding: May be set by the user before opening the decoder if known - * e.g. from the container. During decoding, the decoder may - * overwrite those values as required while parsing the data. - */ - int coded_width, coded_height; - -#if FF_API_ASPECT_EXTENDED -#define FF_ASPECT_EXTENDED 15 -#endif - - /** - * the number of pictures in a group of pictures, or 0 for intra_only - * - encoding: Set by user. - * - decoding: unused - */ - int gop_size; - - /** - * Pixel format, see AV_PIX_FMT_xxx. - * May be set by the demuxer if known from headers. - * May be overridden by the decoder if it knows better. - * - * @note This field may not match the value of the last - * AVFrame outputted by avcodec_decode_video2 due frame - * reordering. - * - * - encoding: Set by user. - * - decoding: Set by user if known, overridden by libavcodec while - * parsing the data. - */ - enum AVPixelFormat pix_fmt; - -#if FF_API_MOTION_EST - /** - * This option does nothing - * @deprecated use codec private options instead - */ - attribute_deprecated int me_method; -#endif - - /** - * If non NULL, 'draw_horiz_band' is called by the libavcodec - * decoder to draw a horizontal band. It improves cache usage. Not - * all codecs can do that. You must check the codec capabilities - * beforehand. - * When multithreading is used, it may be called from multiple threads - * at the same time; threads might draw different parts of the same AVFrame, - * or multiple AVFrames, and there is no guarantee that slices will be drawn - * in order. - * The function is also used by hardware acceleration APIs. - * It is called at least once during frame decoding to pass - * the data needed for hardware render. - * In that mode instead of pixel data, AVFrame points to - * a structure specific to the acceleration API. The application - * reads the structure and can change some fields to indicate progress - * or mark state. - * - encoding: unused - * - decoding: Set by user. - * @param height the height of the slice - * @param y the y position of the slice - * @param type 1->top field, 2->bottom field, 3->frame - * @param offset offset into the AVFrame.data from which the slice should be read - */ - void (*draw_horiz_band)(struct AVCodecContext *s, - const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], - int y, int type, int height); - - /** - * callback to negotiate the pixelFormat - * @param fmt is the list of formats which are supported by the codec, - * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality. - * The first is always the native one. - * @note The callback may be called again immediately if initialization for - * the selected (hardware-accelerated) pixel format failed. - * @warning Behavior is undefined if the callback returns a value not - * in the fmt list of formats. - * @return the chosen format - * - encoding: unused - * - decoding: Set by user, if not set the native format will be chosen. - */ - enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - - /** - * maximum number of B-frames between non-B-frames - * Note: The output will be delayed by max_b_frames+1 relative to the input. - * - encoding: Set by user. - * - decoding: unused - */ - int max_b_frames; - - /** - * qscale factor between IP and B-frames - * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_factor; - -#if FF_API_RC_STRATEGY - /** @deprecated use codec private option instead */ - attribute_deprecated int rc_strategy; -#define FF_RC_STRATEGY_XVID 1 -#endif - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int b_frame_strategy; -#endif - - /** - * qscale offset between IP and B-frames - * - encoding: Set by user. - * - decoding: unused - */ - float b_quant_offset; - - /** - * Size of the frame reordering buffer in the decoder. - * For MPEG-2 it is 1 IPB or 0 low delay IP. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int has_b_frames; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int mpeg_quant; -#endif - - /** - * qscale factor between P and I-frames - * If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset). - * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_factor; - - /** - * qscale offset between P and I-frames - * - encoding: Set by user. - * - decoding: unused - */ - float i_quant_offset; - - /** - * luminance masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float lumi_masking; - - /** - * temporary complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float temporal_cplx_masking; - - /** - * spatial complexity masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float spatial_cplx_masking; - - /** - * p block masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float p_masking; - - /** - * darkness masking (0-> disabled) - * - encoding: Set by user. - * - decoding: unused - */ - float dark_masking; - - /** - * slice count - * - encoding: Set by libavcodec. - * - decoding: Set by user (or 0). - */ - int slice_count; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int prediction_method; -#define FF_PRED_LEFT 0 -#define FF_PRED_PLANE 1 -#define FF_PRED_MEDIAN 2 -#endif - - /** - * slice offsets in the frame in bytes - * - encoding: Set/allocated by libavcodec. - * - decoding: Set/allocated by user (or NULL). - */ - int *slice_offset; - - /** - * sample aspect ratio (0 if unknown) - * That is the width of a pixel divided by the height of the pixel. - * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVRational sample_aspect_ratio; - - /** - * motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_cmp; - /** - * subpixel motion estimation comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_sub_cmp; - /** - * macroblock comparison function (not supported yet) - * - encoding: Set by user. - * - decoding: unused - */ - int mb_cmp; - /** - * interlaced DCT comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int ildct_cmp; -#define FF_CMP_SAD 0 -#define FF_CMP_SSE 1 -#define FF_CMP_SATD 2 -#define FF_CMP_DCT 3 -#define FF_CMP_PSNR 4 -#define FF_CMP_BIT 5 -#define FF_CMP_RD 6 -#define FF_CMP_ZERO 7 -#define FF_CMP_VSAD 8 -#define FF_CMP_VSSE 9 -#define FF_CMP_NSSE 10 -#define FF_CMP_W53 11 -#define FF_CMP_W97 12 -#define FF_CMP_DCTMAX 13 -#define FF_CMP_DCT264 14 -#define FF_CMP_CHROMA 256 - - /** - * ME diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int dia_size; - - /** - * amount of previous MV predictors (2a+1 x 2a+1 square) - * - encoding: Set by user. - * - decoding: unused - */ - int last_predictor_count; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int pre_me; -#endif - - /** - * motion estimation prepass comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int me_pre_cmp; - - /** - * ME prepass diamond size & shape - * - encoding: Set by user. - * - decoding: unused - */ - int pre_dia_size; - - /** - * subpel ME quality - * - encoding: Set by user. - * - decoding: unused - */ - int me_subpel_quality; - -#if FF_API_AFD - /** - * DTG active format information (additional aspect ratio - * information only used in DVB MPEG-2 transport streams) - * 0 if not set. - * - * - encoding: unused - * - decoding: Set by decoder. - * @deprecated Deprecated in favor of AVSideData - */ - attribute_deprecated int dtg_active_format; -#define FF_DTG_AFD_SAME 8 -#define FF_DTG_AFD_4_3 9 -#define FF_DTG_AFD_16_9 10 -#define FF_DTG_AFD_14_9 11 -#define FF_DTG_AFD_4_3_SP_14_9 13 -#define FF_DTG_AFD_16_9_SP_14_9 14 -#define FF_DTG_AFD_SP_4_3 15 -#endif /* FF_API_AFD */ - - /** - * maximum motion estimation search range in subpel units - * If 0 then no limit. - * - * - encoding: Set by user. - * - decoding: unused - */ - int me_range; - -#if FF_API_QUANT_BIAS - /** - * @deprecated use encoder private option instead - */ - attribute_deprecated int intra_quant_bias; -#define FF_DEFAULT_QUANT_BIAS 999999 - - /** - * @deprecated use encoder private option instead - */ - attribute_deprecated int inter_quant_bias; -#endif - - /** - * slice flags - * - encoding: unused - * - decoding: Set by user. - */ - int slice_flags; -#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display -#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics) -#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) - -#if FF_API_XVMC - /** - * XVideo Motion Acceleration - * - encoding: forbidden - * - decoding: set by decoder - * @deprecated XvMC doesn't need it anymore. - */ - attribute_deprecated int xvmc_acceleration; -#endif /* FF_API_XVMC */ - - /** - * macroblock decision mode - * - encoding: Set by user. - * - decoding: unused - */ - int mb_decision; -#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp -#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits -#define FF_MB_DECISION_RD 2 ///< rate distortion - - /** - * custom intra quantization matrix - * - encoding: Set by user, can be NULL. - * - decoding: Set by libavcodec. - */ - uint16_t *intra_matrix; - - /** - * custom inter quantization matrix - * - encoding: Set by user, can be NULL. - * - decoding: Set by libavcodec. - */ - uint16_t *inter_matrix; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int scenechange_threshold; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int noise_reduction; -#endif - -#if FF_API_MPV_OPT - /** - * @deprecated this field is unused - */ - attribute_deprecated - int me_threshold; - - /** - * @deprecated this field is unused - */ - attribute_deprecated - int mb_threshold; -#endif - - /** - * precision of the intra DC coefficient - 8 - * - encoding: Set by user. - * - decoding: Set by libavcodec - */ - int intra_dc_precision; - - /** - * Number of macroblock rows at the top which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_top; - - /** - * Number of macroblock rows at the bottom which are skipped. - * - encoding: unused - * - decoding: Set by user. - */ - int skip_bottom; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - float border_masking; -#endif - - /** - * minimum MB lagrange multipler - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmin; - - /** - * maximum MB lagrange multipler - * - encoding: Set by user. - * - decoding: unused - */ - int mb_lmax; - -#if FF_API_PRIVATE_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int me_penalty_compensation; -#endif - - /** - * - * - encoding: Set by user. - * - decoding: unused - */ - int bidir_refine; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int brd_scale; -#endif - - /** - * minimum GOP size - * - encoding: Set by user. - * - decoding: unused - */ - int keyint_min; - - /** - * number of reference frames - * - encoding: Set by user. - * - decoding: Set by lavc. - */ - int refs; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int chromaoffset; -#endif - -#if FF_API_UNUSED_MEMBERS - /** - * Multiplied by qscale for each frame and added to scene_change_score. - * - encoding: Set by user. - * - decoding: unused - */ - attribute_deprecated int scenechange_factor; -#endif - - /** - * - * Note: Value depends upon the compare function used for fullpel ME. - * - encoding: Set by user. - * - decoding: unused - */ - int mv0_threshold; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int b_sensitivity; -#endif - - /** - * Chromaticity coordinates of the source primaries. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorPrimaries color_primaries; - - /** - * Color Transfer Characteristic. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorTransferCharacteristic color_trc; - - /** - * YUV colorspace type. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorSpace colorspace; - - /** - * MPEG vs JPEG YUV range. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorRange color_range; - - /** - * This defines the location of chroma samples. - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVChromaLocation chroma_sample_location; - - /** - * Number of slices. - * Indicates number of picture subdivisions. Used for parallelized - * decoding. - * - encoding: Set by user - * - decoding: unused - */ - int slices; - - /** Field order - * - encoding: set by libavcodec - * - decoding: Set by user. - */ - enum AVFieldOrder field_order; - - /* audio only */ - int sample_rate; ///< samples per second - int channels; ///< number of audio channels - - /** - * audio sample format - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVSampleFormat sample_fmt; ///< sample format - - /* The following data should not be initialized. */ - /** - * Number of samples per channel in an audio frame. - * - * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame - * except the last must contain exactly frame_size samples per channel. - * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the - * frame size is not restricted. - * - decoding: may be set by some decoders to indicate constant frame size - */ - int frame_size; - - /** - * Frame counter, set by libavcodec. - * - * - decoding: total number of frames returned from the decoder so far. - * - encoding: total number of frames passed to the encoder so far. - * - * @note the counter is not incremented if encoding/decoding resulted in - * an error. - */ - int frame_number; - - /** - * number of bytes per packet if constant and known or 0 - * Used by some WAV based audio codecs. - */ - int block_align; - - /** - * Audio cutoff bandwidth (0 means "automatic") - * - encoding: Set by user. - * - decoding: unused - */ - int cutoff; - - /** - * Audio channel layout. - * - encoding: set by user. - * - decoding: set by user, may be overwritten by libavcodec. - */ - uint64_t channel_layout; - - /** - * Request decoder to use this channel layout if it can (0 for default) - * - encoding: unused - * - decoding: Set by user. - */ - uint64_t request_channel_layout; - - /** - * Type of service that the audio stream conveys. - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - enum AVAudioServiceType audio_service_type; - - /** - * desired sample format - * - encoding: Not used. - * - decoding: Set by user. - * Decoder will decode to this format if it can. - */ - enum AVSampleFormat request_sample_fmt; - - /** - * This callback is called at the beginning of each frame to get data - * buffer(s) for it. There may be one contiguous buffer for all the data or - * there may be a buffer per each data plane or anything in between. What - * this means is, you may set however many entries in buf[] you feel necessary. - * Each buffer must be reference-counted using the AVBuffer API (see description - * of buf[] below). - * - * The following fields will be set in the frame before this callback is - * called: - * - format - * - width, height (video only) - * - sample_rate, channel_layout, nb_samples (audio only) - * Their values may differ from the corresponding values in - * AVCodecContext. This callback must use the frame values, not the codec - * context values, to calculate the required buffer size. - * - * This callback must fill the following fields in the frame: - * - data[] - * - linesize[] - * - extended_data: - * * if the data is planar audio with more than 8 channels, then this - * callback must allocate and fill extended_data to contain all pointers - * to all data planes. data[] must hold as many pointers as it can. - * extended_data must be allocated with av_malloc() and will be freed in - * av_frame_unref(). - * * otherwise exended_data must point to data - * - buf[] must contain one or more pointers to AVBufferRef structures. Each of - * the frame's data and extended_data pointers must be contained in these. That - * is, one AVBufferRef for each allocated chunk of memory, not necessarily one - * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(), - * and av_buffer_ref(). - * - extended_buf and nb_extended_buf must be allocated with av_malloc() by - * this callback and filled with the extra buffers if there are more - * buffers than buf[] can hold. extended_buf will be freed in - * av_frame_unref(). - * - * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call - * avcodec_default_get_buffer2() instead of providing buffers allocated by - * some other means. - * - * Each data plane must be aligned to the maximum required by the target - * CPU. - * - * @see avcodec_default_get_buffer2() - * - * Video: - * - * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused - * (read and/or written to if it is writable) later by libavcodec. - * - * avcodec_align_dimensions2() should be used to find the required width and - * height, as they normally need to be rounded up to the next multiple of 16. - * - * Some decoders do not support linesizes changing between frames. - * - * If frame multithreading is used and thread_safe_callbacks is set, - * this callback may be called from a different thread, but not from more - * than one at once. Does not need to be reentrant. - * - * @see avcodec_align_dimensions2() - * - * Audio: - * - * Decoders request a buffer of a particular size by setting - * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may, - * however, utilize only part of the buffer by setting AVFrame.nb_samples - * to a smaller value in the output frame. - * - * As a convenience, av_samples_get_buffer_size() and - * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2() - * functions to find the required data size and to fill data pointers and - * linesize. In AVFrame.linesize, only linesize[0] may be set for audio - * since all planes must be the same size. - * - * @see av_samples_get_buffer_size(), av_samples_fill_arrays() - * - * - encoding: unused - * - decoding: Set by libavcodec, user can override. - */ - int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags); - - /** - * If non-zero, the decoded audio and video frames returned from - * avcodec_decode_video2() and avcodec_decode_audio4() are reference-counted - * and are valid indefinitely. The caller must free them with - * av_frame_unref() when they are not needed anymore. - * Otherwise, the decoded frames must not be freed by the caller and are - * only valid until the next decode call. - * - * - encoding: unused - * - decoding: set by the caller before avcodec_open2(). - */ - int refcounted_frames; - - /* - encoding parameters */ - float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) - float qblur; ///< amount of qscale smoothing over time (0.0-1.0) - - /** - * minimum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmin; - - /** - * maximum quantizer - * - encoding: Set by user. - * - decoding: unused - */ - int qmax; - - /** - * maximum quantizer difference between frames - * - encoding: Set by user. - * - decoding: unused - */ - int max_qdiff; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - float rc_qsquish; - - attribute_deprecated - float rc_qmod_amp; - attribute_deprecated - int rc_qmod_freq; -#endif - - /** - * decoder bitstream buffer size - * - encoding: Set by user. - * - decoding: unused - */ - int rc_buffer_size; - - /** - * ratecontrol override, see RcOverride - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - int rc_override_count; - RcOverride *rc_override; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - const char *rc_eq; -#endif - - /** - * maximum bitrate - * - encoding: Set by user. - * - decoding: Set by user, may be overwritten by libavcodec. - */ - int64_t rc_max_rate; - - /** - * minimum bitrate - * - encoding: Set by user. - * - decoding: unused - */ - int64_t rc_min_rate; - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - float rc_buffer_aggressivity; - - attribute_deprecated - float rc_initial_cplx; -#endif - - /** - * Ratecontrol attempt to use, at maximum, of what can be used without an underflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_max_available_vbv_use; - - /** - * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow. - * - encoding: Set by user. - * - decoding: unused. - */ - float rc_min_vbv_overflow_use; - - /** - * Number of bits which should be loaded into the rc buffer before decoding starts. - * - encoding: Set by user. - * - decoding: unused - */ - int rc_initial_buffer_occupancy; - -#if FF_API_CODER_TYPE -#define FF_CODER_TYPE_VLC 0 -#define FF_CODER_TYPE_AC 1 -#define FF_CODER_TYPE_RAW 2 -#define FF_CODER_TYPE_RLE 3 -#if FF_API_UNUSED_MEMBERS -#define FF_CODER_TYPE_DEFLATE 4 -#endif /* FF_API_UNUSED_MEMBERS */ - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int coder_type; -#endif /* FF_API_CODER_TYPE */ - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int context_model; -#endif - -#if FF_API_MPV_OPT - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int lmin; - - /** - * @deprecated use encoder private options instead - */ - attribute_deprecated - int lmax; -#endif - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_threshold; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_factor; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_exp; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int frame_skip_cmp; -#endif /* FF_API_PRIVATE_OPT */ - - /** - * trellis RD quantization - * - encoding: Set by user. - * - decoding: unused - */ - int trellis; - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int min_prediction_order; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int max_prediction_order; - - /** @deprecated use encoder private options instead */ - attribute_deprecated - int64_t timecode_frame_start; -#endif - -#if FF_API_RTP_CALLBACK - /** - * @deprecated unused - */ - /* The RTP callback: This function is called */ - /* every time the encoder has a packet to send. */ - /* It depends on the encoder if the data starts */ - /* with a Start Code (it should). H.263 does. */ - /* mb_nb contains the number of macroblocks */ - /* encoded in the RTP payload. */ - attribute_deprecated - void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb); -#endif - -#if FF_API_PRIVATE_OPT - /** @deprecated use encoder private options instead */ - attribute_deprecated - int rtp_payload_size; /* The size of the RTP payload: the coder will */ - /* do its best to deliver a chunk with size */ - /* below rtp_payload_size, the chunk will start */ - /* with a start code on some codecs like H.263. */ - /* This doesn't take account of any particular */ - /* headers inside the transmitted RTP payload. */ -#endif - -#if FF_API_STAT_BITS - /* statistics, used for 2-pass encoding */ - attribute_deprecated - int mv_bits; - attribute_deprecated - int header_bits; - attribute_deprecated - int i_tex_bits; - attribute_deprecated - int p_tex_bits; - attribute_deprecated - int i_count; - attribute_deprecated - int p_count; - attribute_deprecated - int skip_count; - attribute_deprecated - int misc_bits; - - /** @deprecated this field is unused */ - attribute_deprecated - int frame_bits; -#endif - - /** - * pass1 encoding statistics output buffer - * - encoding: Set by libavcodec. - * - decoding: unused - */ - char *stats_out; - - /** - * pass2 encoding statistics input buffer - * Concatenated stuff from stats_out of pass1 should be placed here. - * - encoding: Allocated/set/freed by user. - * - decoding: unused - */ - char *stats_in; - - /** - * Work around bugs in encoders which sometimes cannot be detected automatically. - * - encoding: Set by user - * - decoding: Set by user - */ - int workaround_bugs; -#define FF_BUG_AUTODETECT 1 ///< autodetection -#if FF_API_OLD_MSMPEG4 -#define FF_BUG_OLD_MSMPEG4 2 -#endif -#define FF_BUG_XVID_ILACE 4 -#define FF_BUG_UMP4 8 -#define FF_BUG_NO_PADDING 16 -#define FF_BUG_AMV 32 -#if FF_API_AC_VLC -#define FF_BUG_AC_VLC 0 ///< Will be removed, libavcodec can now handle these non-compliant files by default. -#endif -#define FF_BUG_QPEL_CHROMA 64 -#define FF_BUG_STD_QPEL 128 -#define FF_BUG_QPEL_CHROMA2 256 -#define FF_BUG_DIRECT_BLOCKSIZE 512 -#define FF_BUG_EDGE 1024 -#define FF_BUG_HPEL_CHROMA 2048 -#define FF_BUG_DC_CLIP 4096 -#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. -#define FF_BUG_TRUNCATED 16384 - - /** - * strictly follow the standard (MPEG4, ...). - * - encoding: Set by user. - * - decoding: Set by user. - * Setting this to STRICT or higher means the encoder and decoder will - * generally do stupid things, whereas setting it to unofficial or lower - * will mean the encoder might produce output that is not supported by all - * spec-compliant decoders. Decoders don't differentiate between normal, - * unofficial and experimental (that is, they always try to decode things - * when they can) unless they are explicitly asked to behave stupidly - * (=strictly conform to the specs) - */ - int strict_std_compliance; -#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. -#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. -#define FF_COMPLIANCE_NORMAL 0 -#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions -#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. - - /** - * error concealment flags - * - encoding: unused - * - decoding: Set by user. - */ - int error_concealment; -#define FF_EC_GUESS_MVS 1 -#define FF_EC_DEBLOCK 2 -#define FF_EC_FAVOR_INTER 256 - - /** - * debug - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug; -#define FF_DEBUG_PICT_INFO 1 -#define FF_DEBUG_RC 2 -#define FF_DEBUG_BITSTREAM 4 -#define FF_DEBUG_MB_TYPE 8 -#define FF_DEBUG_QP 16 -#if FF_API_DEBUG_MV -/** - * @deprecated this option does nothing - */ -#define FF_DEBUG_MV 32 -#endif -#define FF_DEBUG_DCT_COEFF 0x00000040 -#define FF_DEBUG_SKIP 0x00000080 -#define FF_DEBUG_STARTCODE 0x00000100 -#if FF_API_UNUSED_MEMBERS -#define FF_DEBUG_PTS 0x00000200 -#endif /* FF_API_UNUSED_MEMBERS */ -#define FF_DEBUG_ER 0x00000400 -#define FF_DEBUG_MMCO 0x00000800 -#define FF_DEBUG_BUGS 0x00001000 -#if FF_API_DEBUG_MV -#define FF_DEBUG_VIS_QP 0x00002000 ///< only access through AVOptions from outside libavcodec -#define FF_DEBUG_VIS_MB_TYPE 0x00004000 ///< only access through AVOptions from outside libavcodec -#endif -#define FF_DEBUG_BUFFERS 0x00008000 -#define FF_DEBUG_THREADS 0x00010000 -#define FF_DEBUG_GREEN_MD 0x00800000 -#define FF_DEBUG_NOMC 0x01000000 - -#if FF_API_DEBUG_MV - /** - * debug - * Code outside libavcodec should access this field using AVOptions - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug_mv; -#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames -#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames -#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames -#endif - - /** - * Error recognition; may misdetect some more or less valid parts as errors. - * - encoding: unused - * - decoding: Set by user. - */ - int err_recognition; - -/** - * Verify checksums embedded in the bitstream (could be of either encoded or - * decoded data, depending on the codec) and print an error message on mismatch. - * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the - * decoder returning an error. - */ -#define AV_EF_CRCCHECK (1<<0) -#define AV_EF_BITSTREAM (1<<1) ///< detect bitstream specification deviations -#define AV_EF_BUFFER (1<<2) ///< detect improper bitstream length -#define AV_EF_EXPLODE (1<<3) ///< abort decoding on minor error detection - -#define AV_EF_IGNORE_ERR (1<<15) ///< ignore errors and continue -#define AV_EF_CAREFUL (1<<16) ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors -#define AV_EF_COMPLIANT (1<<17) ///< consider all spec non compliances as errors -#define AV_EF_AGGRESSIVE (1<<18) ///< consider things that a sane encoder should not do as an error - - - /** - * opaque 64bit number (generally a PTS) that will be reordered and - * output in AVFrame.reordered_opaque - * - encoding: unused - * - decoding: Set by user. - */ - int64_t reordered_opaque; - - /** - * Hardware accelerator in use - * - encoding: unused. - * - decoding: Set by libavcodec - */ - struct AVHWAccel *hwaccel; - - /** - * Hardware accelerator context. - * For some hardware accelerators, a global context needs to be - * provided by the user. In that case, this holds display-dependent - * data FFmpeg cannot instantiate itself. Please refer to the - * FFmpeg HW accelerator documentation to know how to fill this - * is. e.g. for VA API, this is a struct vaapi_context. - * - encoding: unused - * - decoding: Set by user - */ - void *hwaccel_context; - - /** - * error - * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR. - * - decoding: unused - */ - uint64_t error[AV_NUM_DATA_POINTERS]; - - /** - * DCT algorithm, see FF_DCT_* below - * - encoding: Set by user. - * - decoding: unused - */ - int dct_algo; -#define FF_DCT_AUTO 0 -#define FF_DCT_FASTINT 1 -#define FF_DCT_INT 2 -#define FF_DCT_MMX 3 -#define FF_DCT_ALTIVEC 5 -#define FF_DCT_FAAN 6 - - /** - * IDCT algorithm, see FF_IDCT_* below. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int idct_algo; -#define FF_IDCT_AUTO 0 -#define FF_IDCT_INT 1 -#define FF_IDCT_SIMPLE 2 -#define FF_IDCT_SIMPLEMMX 3 -#define FF_IDCT_ARM 7 -#define FF_IDCT_ALTIVEC 8 -#if FF_API_ARCH_SH4 -#define FF_IDCT_SH4 9 -#endif -#define FF_IDCT_SIMPLEARM 10 -#if FF_API_UNUSED_MEMBERS -#define FF_IDCT_IPP 13 -#endif /* FF_API_UNUSED_MEMBERS */ -#define FF_IDCT_XVID 14 -#if FF_API_IDCT_XVIDMMX -#define FF_IDCT_XVIDMMX 14 -#endif /* FF_API_IDCT_XVIDMMX */ -#define FF_IDCT_SIMPLEARMV5TE 16 -#define FF_IDCT_SIMPLEARMV6 17 -#if FF_API_ARCH_SPARC -#define FF_IDCT_SIMPLEVIS 18 -#endif -#define FF_IDCT_FAAN 20 -#define FF_IDCT_SIMPLENEON 22 -#if FF_API_ARCH_ALPHA -#define FF_IDCT_SIMPLEALPHA 23 -#endif -#define FF_IDCT_SIMPLEAUTO 128 - - /** - * bits per sample/pixel from the demuxer (needed for huffyuv). - * - encoding: Set by libavcodec. - * - decoding: Set by user. - */ - int bits_per_coded_sample; - - /** - * Bits per sample/pixel of internal libavcodec pixel/sample format. - * - encoding: set by user. - * - decoding: set by libavcodec. - */ - int bits_per_raw_sample; - -#if FF_API_LOWRES - /** - * low resolution decoding, 1-> 1/2 size, 2->1/4 size - * - encoding: unused - * - decoding: Set by user. - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_lowres(avctx) - */ - int lowres; -#endif - -#if FF_API_CODED_FRAME - /** - * the picture in the bitstream - * - encoding: Set by libavcodec. - * - decoding: unused - * - * @deprecated use the quality factor packet side data instead - */ - attribute_deprecated AVFrame *coded_frame; -#endif - - /** - * thread count - * is used to decide how many independent tasks should be passed to execute() - * - encoding: Set by user. - * - decoding: Set by user. - */ - int thread_count; - - /** - * Which multithreading methods to use. - * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, - * so clients which cannot provide future frames should not use it. - * - * - encoding: Set by user, otherwise the default is used. - * - decoding: Set by user, otherwise the default is used. - */ - int thread_type; -#define FF_THREAD_FRAME 1 ///< Decode more than one frame at once -#define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once - - /** - * Which multithreading methods are in use by the codec. - * - encoding: Set by libavcodec. - * - decoding: Set by libavcodec. - */ - int active_thread_type; - - /** - * Set by the client if its custom get_buffer() callback can be called - * synchronously from another thread, which allows faster multithreaded decoding. - * draw_horiz_band() will be called from other threads regardless of this setting. - * Ignored if the default get_buffer() is used. - * - encoding: Set by user. - * - decoding: Set by user. - */ - int thread_safe_callbacks; - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * @param count the number of things to execute - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); - - /** - * The codec may call this to execute several independent things. - * It will return only after finishing all tasks. - * The user may replace this with some multithreaded implementation, - * the default implementation will execute the parts serially. - * Also see avcodec_thread_init and e.g. the --enable-pthread configure option. - * @param c context passed also to func - * @param count the number of things to execute - * @param arg2 argument passed unchanged to func - * @param ret return values of executed functions, must have space for "count" values. May be NULL. - * @param func function that will be called count times, with jobnr from 0 to count-1. - * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no - * two instances of func executing at the same time will have the same threadnr. - * @return always 0 currently, but code should handle a future improvement where when any call to func - * returns < 0 no further calls to func may be done and < 0 is returned. - * - encoding: Set by libavcodec, user can override. - * - decoding: Set by libavcodec, user can override. - */ - int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); - - /** - * noise vs. sse weight for the nsse comparison function - * - encoding: Set by user. - * - decoding: unused - */ - int nsse_weight; - - /** - * profile - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int profile; -#define FF_PROFILE_UNKNOWN -99 -#define FF_PROFILE_RESERVED -100 - -#define FF_PROFILE_AAC_MAIN 0 -#define FF_PROFILE_AAC_LOW 1 -#define FF_PROFILE_AAC_SSR 2 -#define FF_PROFILE_AAC_LTP 3 -#define FF_PROFILE_AAC_HE 4 -#define FF_PROFILE_AAC_HE_V2 28 -#define FF_PROFILE_AAC_LD 22 -#define FF_PROFILE_AAC_ELD 38 -#define FF_PROFILE_MPEG2_AAC_LOW 128 -#define FF_PROFILE_MPEG2_AAC_HE 131 - -#define FF_PROFILE_DTS 20 -#define FF_PROFILE_DTS_ES 30 -#define FF_PROFILE_DTS_96_24 40 -#define FF_PROFILE_DTS_HD_HRA 50 -#define FF_PROFILE_DTS_HD_MA 60 -#define FF_PROFILE_DTS_EXPRESS 70 - -#define FF_PROFILE_MPEG2_422 0 -#define FF_PROFILE_MPEG2_HIGH 1 -#define FF_PROFILE_MPEG2_SS 2 -#define FF_PROFILE_MPEG2_SNR_SCALABLE 3 -#define FF_PROFILE_MPEG2_MAIN 4 -#define FF_PROFILE_MPEG2_SIMPLE 5 - -#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag -#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag - -#define FF_PROFILE_H264_BASELINE 66 -#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) -#define FF_PROFILE_H264_MAIN 77 -#define FF_PROFILE_H264_EXTENDED 88 -#define FF_PROFILE_H264_HIGH 100 -#define FF_PROFILE_H264_HIGH_10 110 -#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_HIGH_422 122 -#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_HIGH_444 144 -#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 -#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) -#define FF_PROFILE_H264_CAVLC_444 44 - -#define FF_PROFILE_VC1_SIMPLE 0 -#define FF_PROFILE_VC1_MAIN 1 -#define FF_PROFILE_VC1_COMPLEX 2 -#define FF_PROFILE_VC1_ADVANCED 3 - -#define FF_PROFILE_MPEG4_SIMPLE 0 -#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 -#define FF_PROFILE_MPEG4_CORE 2 -#define FF_PROFILE_MPEG4_MAIN 3 -#define FF_PROFILE_MPEG4_N_BIT 4 -#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 -#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 -#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 -#define FF_PROFILE_MPEG4_HYBRID 8 -#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 -#define FF_PROFILE_MPEG4_CORE_SCALABLE 10 -#define FF_PROFILE_MPEG4_ADVANCED_CODING 11 -#define FF_PROFILE_MPEG4_ADVANCED_CORE 12 -#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 -#define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 -#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 - -#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 0 -#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 1 -#define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 2 -#define FF_PROFILE_JPEG2000_DCINEMA_2K 3 -#define FF_PROFILE_JPEG2000_DCINEMA_4K 4 - -#define FF_PROFILE_VP9_0 0 -#define FF_PROFILE_VP9_1 1 -#define FF_PROFILE_VP9_2 2 -#define FF_PROFILE_VP9_3 3 - -#define FF_PROFILE_HEVC_MAIN 1 -#define FF_PROFILE_HEVC_MAIN_10 2 -#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 -#define FF_PROFILE_HEVC_REXT 4 - - /** - * level - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - int level; -#define FF_LEVEL_UNKNOWN -99 - - /** - * Skip loop filtering for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_loop_filter; - - /** - * Skip IDCT/dequantization for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_idct; - - /** - * Skip decoding for selected frames. - * - encoding: unused - * - decoding: Set by user. - */ - enum AVDiscard skip_frame; - - /** - * Header containing style information for text subtitles. - * For SUBTITLE_ASS subtitle type, it should contain the whole ASS - * [Script Info] and [V4+ Styles] section, plus the [Events] line and - * the Format line following. It shouldn't include any Dialogue line. - * - encoding: Set/allocated/freed by user (before avcodec_open2()) - * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) - */ - uint8_t *subtitle_header; - int subtitle_header_size; - -#if FF_API_ERROR_RATE - /** - * @deprecated use the 'error_rate' private AVOption of the mpegvideo - * encoders - */ - attribute_deprecated - int error_rate; -#endif - -#if FF_API_VBV_DELAY - /** - * VBV delay coded in the last frame (in periods of a 27 MHz clock). - * Used for compliant TS muxing. - * - encoding: Set by libavcodec. - * - decoding: unused. - * @deprecated this value is now exported as a part of - * AV_PKT_DATA_CPB_PROPERTIES packet side data - */ - attribute_deprecated - uint64_t vbv_delay; -#endif - -#if FF_API_SIDEDATA_ONLY_PKT - /** - * Encoding only and set by default. Allow encoders to output packets - * that do not contain any encoded data, only side data. - * - * Some encoders need to output such packets, e.g. to update some stream - * parameters at the end of encoding. - * - * @deprecated this field disables the default behaviour and - * it is kept only for compatibility. - */ - attribute_deprecated - int side_data_only_packets; -#endif - - /** - * Audio only. The number of "priming" samples (padding) inserted by the - * encoder at the beginning of the audio. I.e. this number of leading - * decoded samples must be discarded by the caller to get the original audio - * without leading padding. - * - * - decoding: unused - * - encoding: Set by libavcodec. The timestamps on the output packets are - * adjusted by the encoder so that they always refer to the - * first sample of the data actually contained in the packet, - * including any added padding. E.g. if the timebase is - * 1/samplerate and the timestamp of the first input sample is - * 0, the timestamp of the first output packet will be - * -initial_padding. - */ - int initial_padding; - - /** - * - decoding: For codecs that store a framerate value in the compressed - * bitstream, the decoder may export it here. { 0, 1} when - * unknown. - * - encoding: unused - */ - AVRational framerate; - - /** - * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx. - * - encoding: unused. - * - decoding: Set by libavcodec before calling get_format() - */ - enum AVPixelFormat sw_pix_fmt; - - /** - * Timebase in which pkt_dts/pts and AVPacket.dts/pts are. - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_pkt_timebase(avctx) - * - encoding unused. - * - decoding set by user. - */ - AVRational pkt_timebase; - - /** - * AVCodecDescriptor - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_codec_descriptor(avctx) - * - encoding: unused. - * - decoding: set by libavcodec. - */ - const AVCodecDescriptor *codec_descriptor; - -#if !FF_API_LOWRES - /** - * low resolution decoding, 1-> 1/2 size, 2->1/4 size - * - encoding: unused - * - decoding: Set by user. - * Code outside libavcodec should access this field using: - * av_codec_{get,set}_lowres(avctx) - */ - int lowres; -#endif - - /** - * Current statistics for PTS correction. - * - decoding: maintained and used by libavcodec, not intended to be used by user apps - * - encoding: unused - */ - int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far - int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far - int64_t pts_correction_last_pts; /// PTS of the last frame - int64_t pts_correction_last_dts; /// DTS of the last frame - - /** - * Character encoding of the input subtitles file. - * - decoding: set by user - * - encoding: unused - */ - char *sub_charenc; - - /** - * Subtitles character encoding mode. Formats or codecs might be adjusting - * this setting (if they are doing the conversion themselves for instance). - * - decoding: set by libavcodec - * - encoding: unused - */ - int sub_charenc_mode; -#define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance) -#define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself -#define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv - - /** - * Skip processing alpha if supported by codec. - * Note that if the format uses pre-multiplied alpha (common with VP6, - * and recommended due to better video quality/compression) - * the image will look as if alpha-blended onto a black background. - * However for formats that do not use pre-multiplied alpha - * there might be serious artefacts (though e.g. libswscale currently - * assumes pre-multiplied alpha anyway). - * Code outside libavcodec should access this field using AVOptions - * - * - decoding: set by user - * - encoding: unused - */ - int skip_alpha; - - /** - * Number of samples to skip after a discontinuity - * - decoding: unused - * - encoding: set by libavcodec - */ - int seek_preroll; - -#if !FF_API_DEBUG_MV - /** - * debug motion vectors - * Code outside libavcodec should access this field using AVOptions - * - encoding: Set by user. - * - decoding: Set by user. - */ - int debug_mv; -#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames -#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames -#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames -#endif - - /** - * custom intra quantization matrix - * Code outside libavcodec should access this field using av_codec_g/set_chroma_intra_matrix() - * - encoding: Set by user, can be NULL. - * - decoding: unused. - */ - uint16_t *chroma_intra_matrix; - - /** - * dump format separator. - * can be ", " or "\n " or anything else - * Code outside libavcodec should access this field using AVOptions - * (NO direct access). - * - encoding: Set by user. - * - decoding: Set by user. - */ - uint8_t *dump_separator; - - /** - * ',' separated list of allowed decoders. - * If NULL then all are allowed - * - encoding: unused - * - decoding: set by user through AVOPtions (NO direct access) - */ - char *codec_whitelist; - - /* - * Properties of the stream that gets decoded - * To be accessed through av_codec_get_properties() (NO direct access) - * - encoding: unused - * - decoding: set by libavcodec - */ - unsigned properties; -#define FF_CODEC_PROPERTY_LOSSLESS 0x00000001 -#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002 - - /** - * Additional data associated with the entire coded stream. - * - * - decoding: unused - * - encoding: may be set by libavcodec after avcodec_open2(). - */ - AVPacketSideData *coded_side_data; - int nb_coded_side_data; - -} AVCodecContext; - -AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx); -void av_codec_set_pkt_timebase (AVCodecContext *avctx, AVRational val); - -const AVCodecDescriptor *av_codec_get_codec_descriptor(const AVCodecContext *avctx); -void av_codec_set_codec_descriptor(AVCodecContext *avctx, const AVCodecDescriptor *desc); - -unsigned av_codec_get_codec_properties(const AVCodecContext *avctx); - -int av_codec_get_lowres(const AVCodecContext *avctx); -void av_codec_set_lowres(AVCodecContext *avctx, int val); - -int av_codec_get_seek_preroll(const AVCodecContext *avctx); -void av_codec_set_seek_preroll(AVCodecContext *avctx, int val); - -uint16_t *av_codec_get_chroma_intra_matrix(const AVCodecContext *avctx); -void av_codec_set_chroma_intra_matrix(AVCodecContext *avctx, uint16_t *val); - -/** - * AVProfile. - */ -typedef struct AVProfile { - int profile; - const char *name; ///< short name for the profile -} AVProfile; - -typedef struct AVCodecDefault AVCodecDefault; - -struct AVSubtitle; - -/** - * AVCodec. - */ -typedef struct AVCodec { - /** - * Name of the codec implementation. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - * This is the primary way to find a codec from the user perspective. - */ - const char *name; - /** - * Descriptive name for the codec, meant to be more human readable than name. - * You should use the NULL_IF_CONFIG_SMALL() macro to define it. - */ - const char *long_name; - enum AVMediaType type; - enum AVCodecID id; - /** - * Codec capabilities. - * see AV_CODEC_CAP_* - */ - int capabilities; - const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0} - const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1 - const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0 - const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1 - const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 - uint8_t max_lowres; ///< maximum value for lowres supported by the decoder, no direct access, use av_codec_get_max_lowres() - const AVClass *priv_class; ///< AVClass for the private context - const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - int priv_data_size; - struct AVCodec *next; - /** - * @name Frame-level threading support functions - * @{ - */ - /** - * If defined, called on thread contexts when they are created. - * If the codec allocates writable tables in init(), re-allocate them here. - * priv_data will be set to a copy of the original. - */ - int (*init_thread_copy)(AVCodecContext *); - /** - * Copy necessary context variables from a previous thread context to the current one. - * If not defined, the next thread will start automatically; otherwise, the codec - * must call ff_thread_finish_setup(). - * - * dst and src will (rarely) point to the same context, in which case memcpy should be skipped. - */ - int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); - /** @} */ - - /** - * Private codec-specific defaults. - */ - const AVCodecDefault *defaults; - - /** - * Initialize codec static data, called from avcodec_register(). - */ - void (*init_static_data)(struct AVCodec *codec); - - int (*init)(AVCodecContext *); - int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size, - const struct AVSubtitle *sub); - /** - * Encode data to an AVPacket. - * - * @param avctx codec context - * @param avpkt output AVPacket (may contain a user-provided buffer) - * @param[in] frame AVFrame containing the raw data to be encoded - * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a - * non-empty packet was returned in avpkt. - * @return 0 on success, negative error code on failure - */ - int (*encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, - int *got_packet_ptr); - int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt); - int (*close)(AVCodecContext *); - /** - * Flush buffers. - * Will be called when seeking - */ - void (*flush)(AVCodecContext *); - /** - * Internal codec capabilities. - * See FF_CODEC_CAP_* in internal.h - */ - int caps_internal; -} AVCodec; - -int av_codec_get_max_lowres(const AVCodec *codec); - -struct MpegEncContext; - -/** - * @defgroup lavc_hwaccel AVHWAccel - * @{ - */ -typedef struct AVHWAccel { - /** - * Name of the hardware accelerated codec. - * The name is globally unique among encoders and among decoders (but an - * encoder and a decoder can share the same name). - */ - const char *name; - - /** - * Type of codec implemented by the hardware accelerator. - * - * See AVMEDIA_TYPE_xxx - */ - enum AVMediaType type; - - /** - * Codec implemented by the hardware accelerator. - * - * See AV_CODEC_ID_xxx - */ - enum AVCodecID id; - - /** - * Supported pixel format. - * - * Only hardware accelerated formats are supported here. - */ - enum AVPixelFormat pix_fmt; - - /** - * Hardware accelerated codec capabilities. - * see HWACCEL_CODEC_CAP_* - */ - int capabilities; - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavcodec and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVHWAccel *next; - - /** - * Allocate a custom buffer - */ - int (*alloc_frame)(AVCodecContext *avctx, AVFrame *frame); - - /** - * Called at the beginning of each frame or field picture. - * - * Meaningful frame information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * - * Note that buf can be NULL along with buf_size set to 0. - * Otherwise, this means the whole frame is available at this point. - * - * @param avctx the codec context - * @param buf the frame data buffer base - * @param buf_size the size of the frame in bytes - * @return zero if successful, a negative value otherwise - */ - int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Callback for each slice. - * - * Meaningful slice information (codec specific) is guaranteed to - * be parsed at this point. This function is mandatory. - * The only exception is XvMC, that works on MB level. - * - * @param avctx the codec context - * @param buf the slice data buffer base - * @param buf_size the size of the slice in bytes - * @return zero if successful, a negative value otherwise - */ - int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); - - /** - * Called at the end of each frame or field picture. - * - * The whole picture is parsed at this point and can now be sent - * to the hardware accelerator. This function is mandatory. - * - * @param avctx the codec context - * @return zero if successful, a negative value otherwise - */ - int (*end_frame)(AVCodecContext *avctx); - - /** - * Size of per-frame hardware accelerator private data. - * - * Private data is allocated with av_mallocz() before - * AVCodecContext.get_buffer() and deallocated after - * AVCodecContext.release_buffer(). - */ - int frame_priv_data_size; - - /** - * Called for every Macroblock in a slice. - * - * XvMC uses it to replace the ff_mpv_decode_mb(). - * Instead of decoding to raw picture, MB parameters are - * stored in an array provided by the video driver. - * - * @param s the mpeg context - */ - void (*decode_mb)(struct MpegEncContext *s); - - /** - * Initialize the hwaccel private data. - * - * This will be called from ff_get_format(), after hwaccel and - * hwaccel_context are set and the hwaccel private data in AVCodecInternal - * is allocated. - */ - int (*init)(AVCodecContext *avctx); - - /** - * Uninitialize the hwaccel private data. - * - * This will be called from get_format() or avcodec_close(), after hwaccel - * and hwaccel_context are already uninitialized. - */ - int (*uninit)(AVCodecContext *avctx); - - /** - * Size of the private data to allocate in - * AVCodecInternal.hwaccel_priv_data. - */ - int priv_data_size; -} AVHWAccel; - -/** - * Hardware acceleration should be used for decoding even if the codec level - * used is unknown or higher than the maximum supported level reported by the - * hardware driver. - * - * It's generally a good idea to pass this flag unless you have a specific - * reason not to, as hardware tends to under-report supported levels. - */ -#define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0) - -/** - * Hardware acceleration can output YUV pixel formats with a different chroma - * sampling than 4:2:0 and/or other than 8 bits per component. - */ -#define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1) - -/** - * @} - */ - -#if FF_API_AVPICTURE -/** - * @defgroup lavc_picture AVPicture - * - * Functions for working with AVPicture - * @{ - */ - -/** - * Picture data structure. - * - * Up to four components can be stored into it, the last component is - * alpha. - * @deprecated use AVFrame or imgutils functions instead - */ -typedef struct AVPicture { - attribute_deprecated - uint8_t *data[AV_NUM_DATA_POINTERS]; ///< pointers to the image data planes - attribute_deprecated - int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line -} AVPicture; - -/** - * @} - */ -#endif - -enum AVSubtitleType { - SUBTITLE_NONE, - - SUBTITLE_BITMAP, ///< A bitmap, pict will be set - - /** - * Plain text, the text field must be set by the decoder and is - * authoritative. ass and pict fields may contain approximations. - */ - SUBTITLE_TEXT, - - /** - * Formatted text, the ass field must be set by the decoder and is - * authoritative. pict and text fields may contain approximations. - */ - SUBTITLE_ASS, -}; - -#define AV_SUBTITLE_FLAG_FORCED 0x00000001 - -typedef struct AVSubtitleRect { - int x; ///< top left corner of pict, undefined when pict is not set - int y; ///< top left corner of pict, undefined when pict is not set - int w; ///< width of pict, undefined when pict is not set - int h; ///< height of pict, undefined when pict is not set - int nb_colors; ///< number of colors in pict, undefined when pict is not set - -#if FF_API_AVPICTURE - /** - * @deprecated unused - */ - attribute_deprecated - AVPicture pict; -#endif - /** - * data+linesize for the bitmap of this subtitle. - * Can be set for text/ass as well once they are rendered. - */ - uint8_t *data[4]; - int linesize[4]; - - enum AVSubtitleType type; - - char *text; ///< 0 terminated plain UTF-8 text - - /** - * 0 terminated ASS/SSA compatible event line. - * The presentation of this is unaffected by the other values in this - * struct. - */ - char *ass; - - int flags; -} AVSubtitleRect; - -typedef struct AVSubtitle { - uint16_t format; /* 0 = graphics */ - uint32_t start_display_time; /* relative to packet pts, in ms */ - uint32_t end_display_time; /* relative to packet pts, in ms */ - unsigned num_rects; - AVSubtitleRect **rects; - int64_t pts; ///< Same as packet pts, in AV_TIME_BASE -} AVSubtitle; - -/** - * If c is NULL, returns the first registered codec, - * if c is non-NULL, returns the next registered codec after c, - * or NULL if c is the last one. - */ -AVCodec *av_codec_next(const AVCodec *c); - -/** - * Return the LIBAVCODEC_VERSION_INT constant. - */ -unsigned avcodec_version(void); - -/** - * Return the libavcodec build-time configuration. - */ -const char *avcodec_configuration(void); - -/** - * Return the libavcodec license. - */ -const char *avcodec_license(void); - -/** - * Register the codec codec and initialize libavcodec. - * - * @warning either this function or avcodec_register_all() must be called - * before any other libavcodec functions. - * - * @see avcodec_register_all() - */ -void avcodec_register(AVCodec *codec); - -/** - * Register all the codecs, parsers and bitstream filters which were enabled at - * configuration time. If you do not call this function you can select exactly - * which formats you want to support, by using the individual registration - * functions. - * - * @see avcodec_register - * @see av_register_codec_parser - * @see av_register_bitstream_filter - */ -void avcodec_register_all(void); - -/** - * Allocate an AVCodecContext and set its fields to default values. The - * resulting struct should be freed with avcodec_free_context(). - * - * @param codec if non-NULL, allocate private data and initialize defaults - * for the given codec. It is illegal to then call avcodec_open2() - * with a different codec. - * If NULL, then the codec-specific defaults won't be initialized, - * which may result in suboptimal default settings (this is - * important mainly for encoders, e.g. libx264). - * - * @return An AVCodecContext filled with default values or NULL on failure. - * @see avcodec_get_context_defaults - */ -AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); - -/** - * Free the codec context and everything associated with it and write NULL to - * the provided pointer. - */ -void avcodec_free_context(AVCodecContext **avctx); - -/** - * Set the fields of the given AVCodecContext to default values corresponding - * to the given codec (defaults may be codec-dependent). - * - * Do not call this function if a non-NULL codec has been passed - * to avcodec_alloc_context3() that allocated this AVCodecContext. - * If codec is non-NULL, it is illegal to call avcodec_open2() with a - * different codec on this AVCodecContext. - */ -int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec); - -/** - * Get the AVClass for AVCodecContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_class(void); - -/** - * Get the AVClass for AVFrame. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_frame_class(void); - -/** - * Get the AVClass for AVSubtitleRect. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avcodec_get_subtitle_rect_class(void); - -/** - * Copy the settings of the source AVCodecContext into the destination - * AVCodecContext. The resulting destination codec context will be - * unopened, i.e. you are required to call avcodec_open2() before you - * can use this AVCodecContext to decode/encode video/audio data. - * - * @param dest target codec context, should be initialized with - * avcodec_alloc_context3(NULL), but otherwise uninitialized - * @param src source codec context - * @return AVERROR() on error (e.g. memory allocation error), 0 on success - */ -int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src); - -/** - * Initialize the AVCodecContext to use the given AVCodec. Prior to using this - * function the context has to be allocated with avcodec_alloc_context3(). - * - * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), - * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for - * retrieving a codec. - * - * @warning This function is not thread safe! - * - * @note Always call this function before using decoding routines (such as - * @ref avcodec_decode_video2()). - * - * @code - * avcodec_register_all(); - * av_dict_set(&opts, "b", "2.5M", 0); - * codec = avcodec_find_decoder(AV_CODEC_ID_H264); - * if (!codec) - * exit(1); - * - * context = avcodec_alloc_context3(codec); - * - * if (avcodec_open2(context, codec, opts) < 0) - * exit(1); - * @endcode - * - * @param avctx The context to initialize. - * @param codec The codec to open this context for. If a non-NULL codec has been - * previously passed to avcodec_alloc_context3() or - * avcodec_get_context_defaults3() for this context, then this - * parameter MUST be either NULL or equal to the previously passed - * codec. - * @param options A dictionary filled with AVCodecContext and codec-private options. - * On return this object will be filled with options that were not found. - * - * @return zero on success, a negative value on error - * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), - * av_dict_set(), av_opt_find(). - */ -int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); - -/** - * Close a given AVCodecContext and free all the data associated with it - * (but not the AVCodecContext itself). - * - * Calling this function on an AVCodecContext that hasn't been opened will free - * the codec-specific data allocated in avcodec_alloc_context3() / - * avcodec_get_context_defaults3() with a non-NULL codec. Subsequent calls will - * do nothing. - */ -int avcodec_close(AVCodecContext *avctx); - -/** - * Free all allocated data in the given subtitle struct. - * - * @param sub AVSubtitle to free. - */ -void avsubtitle_free(AVSubtitle *sub); - -/** - * @} - */ - -/** - * @addtogroup lavc_packet - * @{ - */ - -/** - * Allocate an AVPacket and set its fields to default values. The resulting - * struct must be freed using av_packet_free(). - * - * @return An AVPacket filled with default values or NULL on failure. - * - * @note this only allocates the AVPacket itself, not the data buffers. Those - * must be allocated through other means such as av_new_packet. - * - * @see av_new_packet - */ -AVPacket *av_packet_alloc(void); - -/** - * Create a new packet that references the same data as src. - * - * This is a shortcut for av_packet_alloc()+av_packet_ref(). - * - * @return newly created AVPacket on success, NULL on error. - * - * @see av_packet_alloc - * @see av_packet_ref - */ -AVPacket *av_packet_clone(AVPacket *src); - -/** - * Free the packet, if the packet is reference counted, it will be - * unreferenced first. - * - * @param packet packet to be freed. The pointer will be set to NULL. - * @note passing NULL is a no-op. - */ -void av_packet_free(AVPacket **pkt); - -/** - * Initialize optional fields of a packet with default values. - * - * Note, this does not touch the data and size members, which have to be - * initialized separately. - * - * @param pkt packet - */ -void av_init_packet(AVPacket *pkt); - -/** - * Allocate the payload of a packet and initialize its fields with - * default values. - * - * @param pkt packet - * @param size wanted payload size - * @return 0 if OK, AVERROR_xxx otherwise - */ -int av_new_packet(AVPacket *pkt, int size); - -/** - * Reduce packet size, correctly zeroing padding - * - * @param pkt packet - * @param size new size - */ -void av_shrink_packet(AVPacket *pkt, int size); - -/** - * Increase packet size, correctly zeroing padding - * - * @param pkt packet - * @param grow_by number of bytes by which to increase the size of the packet - */ -int av_grow_packet(AVPacket *pkt, int grow_by); - -/** - * Initialize a reference-counted packet from av_malloc()ed data. - * - * @param pkt packet to be initialized. This function will set the data, size, - * buf and destruct fields, all others are left untouched. - * @param data Data allocated by av_malloc() to be used as packet data. If this - * function returns successfully, the data is owned by the underlying AVBuffer. - * The caller may not access the data through other means. - * @param size size of data in bytes, without the padding. I.e. the full buffer - * size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE. - * - * @return 0 on success, a negative AVERROR on error - */ -int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size); - -#if FF_API_AVPACKET_OLD_API -/** - * @warning This is a hack - the packet memory allocation stuff is broken. The - * packet is allocated if it was not really allocated. - * - * @deprecated Use av_packet_ref - */ -attribute_deprecated -int av_dup_packet(AVPacket *pkt); -/** - * Copy packet, including contents - * - * @return 0 on success, negative AVERROR on fail - */ -int av_copy_packet(AVPacket *dst, const AVPacket *src); - -/** - * Copy packet side data - * - * @return 0 on success, negative AVERROR on fail - */ -int av_copy_packet_side_data(AVPacket *dst, const AVPacket *src); - -/** - * Free a packet. - * - * @deprecated Use av_packet_unref - * - * @param pkt packet to free - */ -attribute_deprecated -void av_free_packet(AVPacket *pkt); -#endif -/** - * Allocate new information of a packet. - * - * @param pkt packet - * @param type side information type - * @param size side information size - * @return pointer to fresh allocated data or NULL otherwise - */ -uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int size); - -/** - * Wrap an existing array as a packet side data. - * - * @param pkt packet - * @param type side information type - * @param data the side data array. It must be allocated with the av_malloc() - * family of functions. The ownership of the data is transferred to - * pkt. - * @param size side information size - * @return a non-negative number on success, a negative AVERROR code on - * failure. On failure, the packet is unchanged and the data remains - * owned by the caller. - */ -int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - uint8_t *data, size_t size); - -/** - * Shrink the already allocated side data buffer - * - * @param pkt packet - * @param type side information type - * @param size new side information size - * @return 0 on success, < 0 on failure - */ -int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int size); - -/** - * Get side information from packet. - * - * @param pkt packet - * @param type desired side information type - * @param size pointer for side information size to store (optional) - * @return pointer to data if present or NULL otherwise - */ -uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type, - int *size); - -int av_packet_merge_side_data(AVPacket *pkt); - -int av_packet_split_side_data(AVPacket *pkt); - -const char *av_packet_side_data_name(enum AVPacketSideDataType type); - -/** - * Pack a dictionary for use in side_data. - * - * @param dict The dictionary to pack. - * @param size pointer to store the size of the returned data - * @return pointer to data if successful, NULL otherwise - */ -uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size); -/** - * Unpack a dictionary from side_data. - * - * @param data data from side_data - * @param size size of the data - * @param dict the metadata storage dictionary - * @return 0 on success, < 0 on failure - */ -int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict); - - -/** - * Convenience function to free all the side data stored. - * All the other fields stay untouched. - * - * @param pkt packet - */ -void av_packet_free_side_data(AVPacket *pkt); - -/** - * Setup a new reference to the data described by a given packet - * - * If src is reference-counted, setup dst as a new reference to the - * buffer in src. Otherwise allocate a new buffer in dst and copy the - * data from src into it. - * - * All the other fields are copied from src. - * - * @see av_packet_unref - * - * @param dst Destination packet - * @param src Source packet - * - * @return 0 on success, a negative AVERROR on error. - */ -int av_packet_ref(AVPacket *dst, const AVPacket *src); - -/** - * Wipe the packet. - * - * Unreference the buffer referenced by the packet and reset the - * remaining packet fields to their default values. - * - * @param pkt The packet to be unreferenced. - */ -void av_packet_unref(AVPacket *pkt); - -/** - * Move every field in src to dst and reset src. - * - * @see av_packet_unref - * - * @param src Source packet, will be reset - * @param dst Destination packet - */ -void av_packet_move_ref(AVPacket *dst, AVPacket *src); - -/** - * Copy only "properties" fields from src to dst. - * - * Properties for the purpose of this function are all the fields - * beside those related to the packet data (buf, data, size) - * - * @param dst Destination packet - * @param src Source packet - * - * @return 0 on success AVERROR on failure. - * - */ -int av_packet_copy_props(AVPacket *dst, const AVPacket *src); - -/** - * Convert valid timing fields (timestamps / durations) in a packet from one - * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be - * ignored. - * - * @param pkt packet on which the conversion will be performed - * @param tb_src source timebase, in which the timing fields in pkt are - * expressed - * @param tb_dst destination timebase, to which the timing fields will be - * converted - */ -void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); - -/** - * @} - */ - -/** - * @addtogroup lavc_decoding - * @{ - */ - -/** - * Find a registered decoder with a matching codec ID. - * - * @param id AVCodecID of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_decoder(enum AVCodecID id); - -/** - * Find a registered decoder with the specified name. - * - * @param name name of the requested decoder - * @return A decoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_decoder_by_name(const char *name); - -/** - * The default callback for AVCodecContext.get_buffer2(). It is made public so - * it can be called by custom get_buffer2() implementations for decoders without - * AV_CODEC_CAP_DR1 set. - */ -int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags); - -#if FF_API_EMU_EDGE -/** - * Return the amount of padding in pixels which the get_buffer callback must - * provide around the edge of the image for codecs which do not have the - * CODEC_FLAG_EMU_EDGE flag. - * - * @return Required padding in pixels. - * - * @deprecated CODEC_FLAG_EMU_EDGE is deprecated, so this function is no longer - * needed - */ -attribute_deprecated -unsigned avcodec_get_edge_width(void); -#endif - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you do not use any horizontal - * padding. - * - * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. - */ -void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); - -/** - * Modify width and height values so that they will result in a memory - * buffer that is acceptable for the codec if you also ensure that all - * line sizes are a multiple of the respective linesize_align[i]. - * - * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. - */ -void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, - int linesize_align[AV_NUM_DATA_POINTERS]); - -/** - * Converts AVChromaLocation to swscale x/y chroma position. - * - * The positions represent the chroma (0,0) position in a coordinates system - * with luma (0,0) representing the origin and luma(1,1) representing 256,256 - * - * @param xpos horizontal chroma sample position - * @param ypos vertical chroma sample position - */ -int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos); - -/** - * Converts swscale x/y chroma position to AVChromaLocation. - * - * The positions represent the chroma (0,0) position in a coordinates system - * with luma (0,0) representing the origin and luma(1,1) representing 256,256 - * - * @param xpos horizontal chroma sample position - * @param ypos vertical chroma sample position - */ -enum AVChromaLocation avcodec_chroma_pos_to_enum(int xpos, int ypos); - -/** - * Decode the audio frame of size avpkt->size from avpkt->data into frame. - * - * Some decoders may support multiple frames in a single AVPacket. Such - * decoders would then just decode the first frame and the return value would be - * less than the packet size. In this case, avcodec_decode_audio4 has to be - * called again with an AVPacket containing the remaining data in order to - * decode the second frame, etc... Even if no frames are returned, the packet - * needs to be fed to the decoder with remaining data until it is completely - * consumed or an error occurs. - * - * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input - * and output. This means that for some packets they will not immediately - * produce decoded output and need to be flushed at the end of decoding to get - * all the decoded data. Flushing is done by calling this function with packets - * with avpkt->data set to NULL and avpkt->size set to 0 until it stops - * returning samples. It is safe to flush even those decoders that are not - * marked with AV_CODEC_CAP_DELAY, then no samples will be returned. - * - * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE - * larger than the actual read bytes because some optimized bitstream - * readers read 32 or 64 bits at once and could read over the end. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx the codec context - * @param[out] frame The AVFrame in which to store decoded audio samples. - * The decoder will allocate a buffer for the decoded frame by - * calling the AVCodecContext.get_buffer2() callback. - * When AVCodecContext.refcounted_frames is set to 1, the frame is - * reference counted and the returned reference belongs to the - * caller. The caller must release the frame using av_frame_unref() - * when the frame is no longer needed. The caller may safely write - * to the frame if av_frame_is_writable() returns 1. - * When AVCodecContext.refcounted_frames is set to 0, the returned - * reference belongs to the decoder and is valid only until the - * next call to this function or until closing or flushing the - * decoder. The caller may not write to it. - * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is - * non-zero. Note that this field being set to zero - * does not mean that an error has occurred. For - * decoders with AV_CODEC_CAP_DELAY set, no given decode - * call is guaranteed to produce a frame. - * @param[in] avpkt The input AVPacket containing the input buffer. - * At least avpkt->data and avpkt->size should be set. Some - * decoders might also require additional fields to be set. - * @return A negative error code is returned if an error occurred during - * decoding, otherwise the number of bytes consumed from the input - * AVPacket is returned. - */ -int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, - int *got_frame_ptr, const AVPacket *avpkt); - -/** - * Decode the video frame of size avpkt->size from avpkt->data into picture. - * Some decoders may support multiple frames in a single AVPacket, such - * decoders would then just decode the first frame. - * - * @warning The input buffer must be AV_INPUT_BUFFER_PADDING_SIZE larger than - * the actual read bytes because some optimized bitstream readers read 32 or 64 - * bits at once and could read over the end. - * - * @warning The end of the input buffer buf should be set to 0 to ensure that - * no overreading happens for damaged MPEG streams. - * - * @note Codecs which have the AV_CODEC_CAP_DELAY capability set have a delay - * between input and output, these need to be fed with avpkt->data=NULL, - * avpkt->size=0 at the end to return the remaining frames. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx the codec context - * @param[out] picture The AVFrame in which the decoded video frame will be stored. - * Use av_frame_alloc() to get an AVFrame. The codec will - * allocate memory for the actual bitmap by calling the - * AVCodecContext.get_buffer2() callback. - * When AVCodecContext.refcounted_frames is set to 1, the frame is - * reference counted and the returned reference belongs to the - * caller. The caller must release the frame using av_frame_unref() - * when the frame is no longer needed. The caller may safely write - * to the frame if av_frame_is_writable() returns 1. - * When AVCodecContext.refcounted_frames is set to 0, the returned - * reference belongs to the decoder and is valid only until the - * next call to this function or until closing or flushing the - * decoder. The caller may not write to it. - * - * @param[in] avpkt The input AVPacket containing the input buffer. - * You can create such packet with av_init_packet() and by then setting - * data and size, some decoders might in addition need other fields like - * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least - * fields possible. - * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero. - * @return On error a negative value is returned, otherwise the number of bytes - * used or zero if no frame could be decompressed. - */ -int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, - int *got_picture_ptr, - const AVPacket *avpkt); - -/** - * Decode a subtitle message. - * Return a negative value on error, otherwise return the number of bytes used. - * If no subtitle could be decompressed, got_sub_ptr is zero. - * Otherwise, the subtitle is stored in *sub. - * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for - * simplicity, because the performance difference is expect to be negligible - * and reusing a get_buffer written for video codecs would probably perform badly - * due to a potentially very different allocation pattern. - * - * Some decoders (those marked with CODEC_CAP_DELAY) have a delay between input - * and output. This means that for some packets they will not immediately - * produce decoded output and need to be flushed at the end of decoding to get - * all the decoded data. Flushing is done by calling this function with packets - * with avpkt->data set to NULL and avpkt->size set to 0 until it stops - * returning subtitles. It is safe to flush even those decoders that are not - * marked with CODEC_CAP_DELAY, then no subtitles will be returned. - * - * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() - * before packets may be fed to the decoder. - * - * @param avctx the codec context - * @param[out] sub The Preallocated AVSubtitle in which the decoded subtitle will be stored, - * must be freed with avsubtitle_free if *got_sub_ptr is set. - * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. - * @param[in] avpkt The input AVPacket containing the input buffer. - */ -int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, - int *got_sub_ptr, - AVPacket *avpkt); - -/** - * @defgroup lavc_parsing Frame parsing - * @{ - */ - -enum AVPictureStructure { - AV_PICTURE_STRUCTURE_UNKNOWN, //< unknown - AV_PICTURE_STRUCTURE_TOP_FIELD, //< coded as top field - AV_PICTURE_STRUCTURE_BOTTOM_FIELD, //< coded as bottom field - AV_PICTURE_STRUCTURE_FRAME, //< coded as frame -}; - -typedef struct AVCodecParserContext { - void *priv_data; - struct AVCodecParser *parser; - int64_t frame_offset; /* offset of the current frame */ - int64_t cur_offset; /* current offset - (incremented by each av_parser_parse()) */ - int64_t next_frame_offset; /* offset of the next frame */ - /* video info */ - int pict_type; /* XXX: Put it back in AVCodecContext. */ - /** - * This field is used for proper frame duration computation in lavf. - * It signals, how much longer the frame duration of the current frame - * is compared to normal frame duration. - * - * frame_duration = (1 + repeat_pict) * time_base - * - * It is used by codecs like H.264 to display telecined material. - */ - int repeat_pict; /* XXX: Put it back in AVCodecContext. */ - int64_t pts; /* pts of the current frame */ - int64_t dts; /* dts of the current frame */ - - /* private data */ - int64_t last_pts; - int64_t last_dts; - int fetch_timestamp; - -#define AV_PARSER_PTS_NB 4 - int cur_frame_start_index; - int64_t cur_frame_offset[AV_PARSER_PTS_NB]; - int64_t cur_frame_pts[AV_PARSER_PTS_NB]; - int64_t cur_frame_dts[AV_PARSER_PTS_NB]; - - int flags; -#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 -#define PARSER_FLAG_ONCE 0x0002 -/// Set if the parser has a valid file offset -#define PARSER_FLAG_FETCHED_OFFSET 0x0004 -#define PARSER_FLAG_USE_CODEC_TS 0x1000 - - int64_t offset; ///< byte offset from starting packet start - int64_t cur_frame_end[AV_PARSER_PTS_NB]; - - /** - * Set by parser to 1 for key frames and 0 for non-key frames. - * It is initialized to -1, so if the parser doesn't set this flag, - * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames - * will be used. - */ - int key_frame; - -#if FF_API_CONVERGENCE_DURATION - /** - * @deprecated unused - */ - attribute_deprecated - int64_t convergence_duration; -#endif - - // Timestamp generation support: - /** - * Synchronization point for start of timestamp generation. - * - * Set to >0 for sync point, 0 for no sync point and <0 for undefined - * (default). - * - * For example, this corresponds to presence of H.264 buffering period - * SEI message. - */ - int dts_sync_point; - - /** - * Offset of the current timestamp against last timestamp sync point in - * units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain a valid timestamp offset. - * - * Note that the timestamp of sync point has usually a nonzero - * dts_ref_dts_delta, which refers to the previous sync point. Offset of - * the next frame after timestamp sync point will be usually 1. - * - * For example, this corresponds to H.264 cpb_removal_delay. - */ - int dts_ref_dts_delta; - - /** - * Presentation delay of current frame in units of AVCodecContext.time_base. - * - * Set to INT_MIN when dts_sync_point unused. Otherwise, it must - * contain valid non-negative timestamp delta (presentation time of a frame - * must not lie in the past). - * - * This delay represents the difference between decoding and presentation - * time of the frame. - * - * For example, this corresponds to H.264 dpb_output_delay. - */ - int pts_dts_delta; - - /** - * Position of the packet in file. - * - * Analogous to cur_frame_pts/dts - */ - int64_t cur_frame_pos[AV_PARSER_PTS_NB]; - - /** - * Byte position of currently parsed frame in stream. - */ - int64_t pos; - - /** - * Previous frame byte position. - */ - int64_t last_pos; - - /** - * Duration of the current frame. - * For audio, this is in units of 1 / AVCodecContext.sample_rate. - * For all other types, this is in units of AVCodecContext.time_base. - */ - int duration; - - enum AVFieldOrder field_order; - - /** - * Indicate whether a picture is coded as a frame, top field or bottom field. - * - * For example, H.264 field_pic_flag equal to 0 corresponds to - * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag - * equal to 1 and bottom_field_flag equal to 0 corresponds to - * AV_PICTURE_STRUCTURE_TOP_FIELD. - */ - enum AVPictureStructure picture_structure; - - /** - * Picture number incremented in presentation or output order. - * This field may be reinitialized at the first picture of a new sequence. - * - * For example, this corresponds to H.264 PicOrderCnt. - */ - int output_picture_number; - - /** - * Dimensions of the decoded video intended for presentation. - */ - int width; - int height; - - /** - * Dimensions of the coded video. - */ - int coded_width; - int coded_height; - - /** - * The format of the coded data, corresponds to enum AVPixelFormat for video - * and for enum AVSampleFormat for audio. - * - * Note that a decoder can have considerable freedom in how exactly it - * decodes the data, so the format reported here might be different from the - * one returned by a decoder. - */ - int format; -} AVCodecParserContext; - -typedef struct AVCodecParser { - int codec_ids[5]; /* several codec IDs are permitted */ - int priv_data_size; - int (*parser_init)(AVCodecParserContext *s); - /* This callback never returns an error, a negative value means that - * the frame start was in a previous packet. */ - int (*parser_parse)(AVCodecParserContext *s, - AVCodecContext *avctx, - const uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size); - void (*parser_close)(AVCodecParserContext *s); - int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); - struct AVCodecParser *next; -} AVCodecParser; - -AVCodecParser *av_parser_next(const AVCodecParser *c); - -void av_register_codec_parser(AVCodecParser *parser); -AVCodecParserContext *av_parser_init(int codec_id); - -/** - * Parse a packet. - * - * @param s parser context. - * @param avctx codec context. - * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. - * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. - * @param buf input buffer. - * @param buf_size input length, to signal EOF, this should be 0 (so that the last frame can be output). - * @param pts input presentation timestamp. - * @param dts input decoding timestamp. - * @param pos input byte position in stream. - * @return the number of bytes of the input bitstream used. - * - * Example: - * @code - * while(in_len){ - * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, - * in_data, in_len, - * pts, dts, pos); - * in_data += len; - * in_len -= len; - * - * if(size) - * decode_frame(data, size); - * } - * @endcode - */ -int av_parser_parse2(AVCodecParserContext *s, - AVCodecContext *avctx, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, - int64_t pts, int64_t dts, - int64_t pos); - -/** - * @return 0 if the output buffer is a subset of the input, 1 if it is allocated and must be freed - * @deprecated use AVBitStreamFilter - */ -int av_parser_change(AVCodecParserContext *s, - AVCodecContext *avctx, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); -void av_parser_close(AVCodecParserContext *s); - -/** - * @} - * @} - */ - -/** - * @addtogroup lavc_encoding - * @{ - */ - -/** - * Find a registered encoder with a matching codec ID. - * - * @param id AVCodecID of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_encoder(enum AVCodecID id); - -/** - * Find a registered encoder with the specified name. - * - * @param name name of the requested encoder - * @return An encoder if one was found, NULL otherwise. - */ -AVCodec *avcodec_find_encoder_by_name(const char *name); - -/** - * Encode a frame of audio. - * - * Takes input samples from frame and writes the next output packet, if - * available, to avpkt. The output packet does not necessarily contain data for - * the most recent frame, as encoders can delay, split, and combine input frames - * internally as needed. - * - * @param avctx codec context - * @param avpkt output AVPacket. - * The user can supply an output buffer by setting - * avpkt->data and avpkt->size prior to calling the - * function, but if the size of the user-provided data is not - * large enough, encoding will fail. If avpkt->data and - * avpkt->size are set, avpkt->destruct must also be set. All - * other AVPacket fields will be reset by the encoder using - * av_init_packet(). If avpkt->data is NULL, the encoder will - * allocate it. The encoder will set avpkt->size to the size - * of the output packet. - * - * If this function fails or produces no output, avpkt will be - * freed using av_packet_unref(). - * @param[in] frame AVFrame containing the raw audio data to be encoded. - * May be NULL when flushing an encoder that has the - * AV_CODEC_CAP_DELAY capability set. - * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame - * can have any number of samples. - * If it is not set, frame->nb_samples must be equal to - * avctx->frame_size for all frames except the last. - * The final frame may be smaller than avctx->frame_size. - * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the - * output packet is non-empty, and to 0 if it is - * empty. If the function returns an error, the - * packet can be assumed to be invalid, and the - * value of got_packet_ptr is undefined and should - * not be used. - * @return 0 on success, negative error code on failure - */ -int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt, - const AVFrame *frame, int *got_packet_ptr); - -/** - * Encode a frame of video. - * - * Takes input raw video data from frame and writes the next output packet, if - * available, to avpkt. The output packet does not necessarily contain data for - * the most recent frame, as encoders can delay and reorder input frames - * internally as needed. - * - * @param avctx codec context - * @param avpkt output AVPacket. - * The user can supply an output buffer by setting - * avpkt->data and avpkt->size prior to calling the - * function, but if the size of the user-provided data is not - * large enough, encoding will fail. All other AVPacket fields - * will be reset by the encoder using av_init_packet(). If - * avpkt->data is NULL, the encoder will allocate it. - * The encoder will set avpkt->size to the size of the - * output packet. The returned data (if any) belongs to the - * caller, he is responsible for freeing it. - * - * If this function fails or produces no output, avpkt will be - * freed using av_packet_unref(). - * @param[in] frame AVFrame containing the raw video data to be encoded. - * May be NULL when flushing an encoder that has the - * AV_CODEC_CAP_DELAY capability set. - * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the - * output packet is non-empty, and to 0 if it is - * empty. If the function returns an error, the - * packet can be assumed to be invalid, and the - * value of got_packet_ptr is undefined and should - * not be used. - * @return 0 on success, negative error code on failure - */ -int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt, - const AVFrame *frame, int *got_packet_ptr); - -int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, - const AVSubtitle *sub); - - -/** - * @} - */ - -#if FF_API_AVCODEC_RESAMPLE -/** - * @defgroup lavc_resample Audio resampling - * @ingroup libavc - * @deprecated use libswresample instead - * - * @{ - */ -struct ReSampleContext; -struct AVResampleContext; - -typedef struct ReSampleContext ReSampleContext; - -/** - * Initialize audio resampling context. - * - * @param output_channels number of output channels - * @param input_channels number of input channels - * @param output_rate output sample rate - * @param input_rate input sample rate - * @param sample_fmt_out requested output sample format - * @param sample_fmt_in input sample format - * @param filter_length length of each FIR filter in the filterbank relative to the cutoff frequency - * @param log2_phase_count log2 of the number of entries in the polyphase filterbank - * @param linear if 1 then the used FIR filter will be linearly interpolated - between the 2 closest, if 0 the closest will be used - * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate - * @return allocated ReSampleContext, NULL if error occurred - */ -attribute_deprecated -ReSampleContext *av_audio_resample_init(int output_channels, int input_channels, - int output_rate, int input_rate, - enum AVSampleFormat sample_fmt_out, - enum AVSampleFormat sample_fmt_in, - int filter_length, int log2_phase_count, - int linear, double cutoff); - -attribute_deprecated -int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples); - -/** - * Free resample context. - * - * @param s a non-NULL pointer to a resample context previously - * created with av_audio_resample_init() - */ -attribute_deprecated -void audio_resample_close(ReSampleContext *s); - - -/** - * Initialize an audio resampler. - * Note, if either rate is not an integer then simply scale both rates up so they are. - * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq - * @param log2_phase_count log2 of the number of entries in the polyphase filterbank - * @param linear If 1 then the used FIR filter will be linearly interpolated - between the 2 closest, if 0 the closest will be used - * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate - */ -attribute_deprecated -struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff); - -/** - * Resample an array of samples using a previously configured context. - * @param src an array of unconsumed samples - * @param consumed the number of samples of src which have been consumed are returned here - * @param src_size the number of unconsumed samples available - * @param dst_size the amount of space in samples available in dst - * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context. - * @return the number of samples written in dst or -1 if an error occurred - */ -attribute_deprecated -int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx); - - -/** - * Compensate samplerate/timestamp drift. The compensation is done by changing - * the resampler parameters, so no audible clicks or similar distortions occur - * @param compensation_distance distance in output samples over which the compensation should be performed - * @param sample_delta number of output samples which should be output less - * - * example: av_resample_compensate(c, 10, 500) - * here instead of 510 samples only 500 samples would be output - * - * note, due to rounding the actual compensation might be slightly different, - * especially if the compensation_distance is large and the in_rate used during init is small - */ -attribute_deprecated -void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance); -attribute_deprecated -void av_resample_close(struct AVResampleContext *c); - -/** - * @} - */ -#endif - -#if FF_API_AVPICTURE -/** - * @addtogroup lavc_picture - * @{ - */ - -/** - * @deprecated unused - */ -attribute_deprecated -int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated unused - */ -attribute_deprecated -void avpicture_free(AVPicture *picture); - -/** - * @deprecated use av_image_fill_arrays() instead. - */ -attribute_deprecated -int avpicture_fill(AVPicture *picture, const uint8_t *ptr, - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated use av_image_copy_to_buffer() instead. - */ -attribute_deprecated -int avpicture_layout(const AVPicture *src, enum AVPixelFormat pix_fmt, - int width, int height, - unsigned char *dest, int dest_size); - -/** - * @deprecated use av_image_get_buffer_size() instead. - */ -attribute_deprecated -int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated av_image_copy() instead. - */ -attribute_deprecated -void av_picture_copy(AVPicture *dst, const AVPicture *src, - enum AVPixelFormat pix_fmt, int width, int height); - -/** - * @deprecated unused - */ -attribute_deprecated -int av_picture_crop(AVPicture *dst, const AVPicture *src, - enum AVPixelFormat pix_fmt, int top_band, int left_band); - -/** - * @deprecated unused - */ -attribute_deprecated -int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, - int padtop, int padbottom, int padleft, int padright, int *color); - -/** - * @} - */ -#endif - -/** - * @defgroup lavc_misc Utility functions - * @ingroup libavc - * - * Miscellaneous utility functions related to both encoding and decoding - * (or neither). - * @{ - */ - -/** - * @defgroup lavc_misc_pixfmt Pixel formats - * - * Functions for working with pixel formats. - * @{ - */ - -/** - * Utility function to access log2_chroma_w log2_chroma_h from - * the pixel format AVPixFmtDescriptor. - * - * This function asserts that pix_fmt is valid. See av_pix_fmt_get_chroma_sub_sample - * for one that returns a failure code and continues in case of invalid - * pix_fmts. - * - * @param[in] pix_fmt the pixel format - * @param[out] h_shift store log2_chroma_w - * @param[out] v_shift store log2_chroma_h - * - * @see av_pix_fmt_get_chroma_sub_sample - */ - -void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift); - -/** - * Return a value representing the fourCC code associated to the - * pixel format pix_fmt, or 0 if no associated fourCC code can be - * found. - */ -unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); - -/** - * @deprecated see av_get_pix_fmt_loss() - */ -int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, - int has_alpha); - -/** - * Find the best pixel format to convert to given a certain source pixel - * format. When converting from one pixel format to another, information loss - * may occur. For example, when converting from RGB24 to GRAY, the color - * information will be lost. Similarly, other losses occur when converting from - * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of - * the given pixel formats should be used to suffer the least amount of loss. - * The pixel formats from which it chooses one, are determined by the - * pix_fmt_list parameter. - * - * - * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from - * @param[in] src_pix_fmt source pixel format - * @param[in] has_alpha Whether the source pixel format alpha channel is used. - * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. - * @return The best pixel format to convert to or -1 if none was found. - */ -enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, - enum AVPixelFormat src_pix_fmt, - int has_alpha, int *loss_ptr); - -/** - * @deprecated see av_find_best_pix_fmt_of_2() - */ -enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, - enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); - -attribute_deprecated -#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI -enum AVPixelFormat avcodec_find_best_pix_fmt2(const enum AVPixelFormat *pix_fmt_list, - enum AVPixelFormat src_pix_fmt, - int has_alpha, int *loss_ptr); -#else -enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, - enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); -#endif - - -enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); - -/** - * @} - */ - -#if FF_API_SET_DIMENSIONS -/** - * @deprecated this function is not supposed to be used from outside of lavc - */ -attribute_deprecated -void avcodec_set_dimensions(AVCodecContext *s, int width, int height); -#endif - -/** - * Put a string representing the codec tag codec_tag in buf. - * - * @param buf buffer to place codec tag in - * @param buf_size size in bytes of buf - * @param codec_tag codec tag to assign - * @return the length of the string that would have been generated if - * enough space had been available, excluding the trailing null - */ -size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag); - -void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); - -/** - * Return a name for the specified profile, if available. - * - * @param codec the codec that is searched for the given profile - * @param profile the profile value for which a name is requested - * @return A name for the profile if found, NULL otherwise. - */ -const char *av_get_profile_name(const AVCodec *codec, int profile); - -/** - * Return a name for the specified profile, if available. - * - * @param codec_id the ID of the codec to which the requested profile belongs - * @param profile the profile value for which a name is requested - * @return A name for the profile if found, NULL otherwise. - * - * @note unlike av_get_profile_name(), which searches a list of profiles - * supported by a specific decoder or encoder implementation, this - * function searches the list of profiles from the AVCodecDescriptor - */ -const char *avcodec_profile_name(enum AVCodecID codec_id, int profile); - -int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); -int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); -//FIXME func typedef - -/** - * Fill AVFrame audio data and linesize pointers. - * - * The buffer buf must be a preallocated buffer with a size big enough - * to contain the specified samples amount. The filled AVFrame data - * pointers will point to this buffer. - * - * AVFrame extended_data channel pointers are allocated if necessary for - * planar audio. - * - * @param frame the AVFrame - * frame->nb_samples must be set prior to calling the - * function. This function fills in frame->data, - * frame->extended_data, frame->linesize[0]. - * @param nb_channels channel count - * @param sample_fmt sample format - * @param buf buffer to use for frame data - * @param buf_size size of buffer - * @param align plane size sample alignment (0 = default) - * @return >=0 on success, negative error code on failure - * @todo return the size in bytes required to store the samples in - * case of success, at the next libavutil bump - */ -int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, - enum AVSampleFormat sample_fmt, const uint8_t *buf, - int buf_size, int align); - -/** - * Reset the internal decoder state / flush internal buffers. Should be called - * e.g. when seeking or when switching to a different stream. - * - * @note when refcounted frames are not used (i.e. avctx->refcounted_frames is 0), - * this invalidates the frames previously returned from the decoder. When - * refcounted frames are used, the decoder just releases any references it might - * keep internally, but the caller's reference remains valid. - */ -void avcodec_flush_buffers(AVCodecContext *avctx); - -/** - * Return codec bits per sample. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return the PCM codec associated with a sample format. - * @param be endianness, 0 for little, 1 for big, - * -1 (or anything else) for native - * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE - */ -enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be); - -/** - * Return codec bits per sample. - * Only return non-zero if the bits per sample is exactly correct, not an - * approximation. - * - * @param[in] codec_id the codec - * @return Number of bits per sample or zero if unknown for the given codec. - */ -int av_get_exact_bits_per_sample(enum AVCodecID codec_id); - -/** - * Return audio frame duration. - * - * @param avctx codec context - * @param frame_bytes size of the frame, or 0 if unknown - * @return frame duration, in samples, if known. 0 if not able to - * determine. - */ -int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); - - -typedef struct AVBitStreamFilterContext { - void *priv_data; - struct AVBitStreamFilter *filter; - AVCodecParserContext *parser; - struct AVBitStreamFilterContext *next; - /** - * Internal default arguments, used if NULL is passed to av_bitstream_filter_filter(). - * Not for access by library users. - */ - char *args; -} AVBitStreamFilterContext; - - -typedef struct AVBitStreamFilter { - const char *name; - int priv_data_size; - int (*filter)(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); - void (*close)(AVBitStreamFilterContext *bsfc); - struct AVBitStreamFilter *next; -} AVBitStreamFilter; - -/** - * Register a bitstream filter. - * - * The filter will be accessible to the application code through - * av_bitstream_filter_next() or can be directly initialized with - * av_bitstream_filter_init(). - * - * @see avcodec_register_all() - */ -void av_register_bitstream_filter(AVBitStreamFilter *bsf); - -/** - * Create and initialize a bitstream filter context given a bitstream - * filter name. - * - * The returned context must be freed with av_bitstream_filter_close(). - * - * @param name the name of the bitstream filter - * @return a bitstream filter context if a matching filter was found - * and successfully initialized, NULL otherwise - */ -AVBitStreamFilterContext *av_bitstream_filter_init(const char *name); - -/** - * Filter bitstream. - * - * This function filters the buffer buf with size buf_size, and places the - * filtered buffer in the buffer pointed to by poutbuf. - * - * The output buffer must be freed by the caller. - * - * @param bsfc bitstream filter context created by av_bitstream_filter_init() - * @param avctx AVCodecContext accessed by the filter, may be NULL. - * If specified, this must point to the encoder context of the - * output stream the packet is sent to. - * @param args arguments which specify the filter configuration, may be NULL - * @param poutbuf pointer which is updated to point to the filtered buffer - * @param poutbuf_size pointer which is updated to the filtered buffer size in bytes - * @param buf buffer containing the data to filter - * @param buf_size size in bytes of buf - * @param keyframe set to non-zero if the buffer to filter corresponds to a key-frame packet data - * @return >= 0 in case of success, or a negative error code in case of failure - * - * If the return value is positive, an output buffer is allocated and - * is available in *poutbuf, and is distinct from the input buffer. - * - * If the return value is 0, the output buffer is not allocated and - * should be considered identical to the input buffer, or in case - * *poutbuf was set it points to the input buffer (not necessarily to - * its starting address). - */ -int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc, - AVCodecContext *avctx, const char *args, - uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, int keyframe); - -/** - * Release bitstream filter context. - * - * @param bsf the bitstream filter context created with - * av_bitstream_filter_init(), can be NULL - */ -void av_bitstream_filter_close(AVBitStreamFilterContext *bsf); - -/** - * If f is NULL, return the first registered bitstream filter, - * if f is non-NULL, return the next registered bitstream filter - * after f, or NULL if f is the last one. - * - * This function can be used to iterate over all registered bitstream - * filters. - */ -AVBitStreamFilter *av_bitstream_filter_next(const AVBitStreamFilter *f); - -/* memory */ - -/** - * Same behaviour av_fast_malloc but the buffer has additional - * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0. - * - * In addition the whole buffer will initially and after resizes - * be 0-initialized so that no uninitialized data will ever appear. - */ -void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Same behaviour av_fast_padded_malloc except that buffer will always - * be 0-initialized after call. - */ -void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); - -/** - * Encode extradata length to a buffer. Used by xiph codecs. - * - * @param s buffer to write to; must be at least (v/255+1) bytes long - * @param v size of extradata in bytes - * @return number of bytes written to the buffer. - */ -unsigned int av_xiphlacing(unsigned char *s, unsigned int v); - -#if FF_API_MISSING_SAMPLE -/** - * Log a generic warning message about a missing feature. This function is - * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) - * only, and would normally not be used by applications. - * @param[in] avc a pointer to an arbitrary struct of which the first field is - * a pointer to an AVClass struct - * @param[in] feature string containing the name of the missing feature - * @param[in] want_sample indicates if samples are wanted which exhibit this feature. - * If want_sample is non-zero, additional verbage will be added to the log - * message which tells the user how to report samples to the development - * mailing list. - * @deprecated Use avpriv_report_missing_feature() instead. - */ -attribute_deprecated -void av_log_missing_feature(void *avc, const char *feature, int want_sample); - -/** - * Log a generic warning message asking for a sample. This function is - * intended to be used internally by FFmpeg (libavcodec, libavformat, etc.) - * only, and would normally not be used by applications. - * @param[in] avc a pointer to an arbitrary struct of which the first field is - * a pointer to an AVClass struct - * @param[in] msg string containing an optional message, or NULL if no message - * @deprecated Use avpriv_request_sample() instead. - */ -attribute_deprecated -void av_log_ask_for_sample(void *avc, const char *msg, ...) av_printf_format(2, 3); -#endif /* FF_API_MISSING_SAMPLE */ - -/** - * Register the hardware accelerator hwaccel. - */ -void av_register_hwaccel(AVHWAccel *hwaccel); - -/** - * If hwaccel is NULL, returns the first registered hardware accelerator, - * if hwaccel is non-NULL, returns the next registered hardware accelerator - * after hwaccel, or NULL if hwaccel is the last one. - */ -AVHWAccel *av_hwaccel_next(const AVHWAccel *hwaccel); - - -/** - * Lock operation used by lockmgr - */ -enum AVLockOp { - AV_LOCK_CREATE, ///< Create a mutex - AV_LOCK_OBTAIN, ///< Lock the mutex - AV_LOCK_RELEASE, ///< Unlock the mutex - AV_LOCK_DESTROY, ///< Free mutex resources -}; - -/** - * Register a user provided lock manager supporting the operations - * specified by AVLockOp. The "mutex" argument to the function points - * to a (void *) where the lockmgr should store/get a pointer to a user - * allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the - * value left by the last call for all other ops. If the lock manager is - * unable to perform the op then it should leave the mutex in the same - * state as when it was called and return a non-zero value. However, - * when called with AV_LOCK_DESTROY the mutex will always be assumed to - * have been successfully destroyed. If av_lockmgr_register succeeds - * it will return a non-negative value, if it fails it will return a - * negative value and destroy all mutex and unregister all callbacks. - * av_lockmgr_register is not thread-safe, it must be called from a - * single thread before any calls which make use of locking are used. - * - * @param cb User defined callback. av_lockmgr_register invokes calls - * to this callback and the previously registered callback. - * The callback will be used to create more than one mutex - * each of which must be backed by its own underlying locking - * mechanism (i.e. do not use a single static object to - * implement your lock manager). If cb is set to NULL the - * lockmgr will be unregistered. - */ -int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op)); - -/** - * Get the type of the given codec. - */ -enum AVMediaType avcodec_get_type(enum AVCodecID codec_id); - -/** - * Get the name of a codec. - * @return a static string identifying the codec; never NULL - */ -const char *avcodec_get_name(enum AVCodecID id); - -/** - * @return a positive value if s is open (i.e. avcodec_open2() was called on it - * with no corresponding avcodec_close()), 0 otherwise. - */ -int avcodec_is_open(AVCodecContext *s); - -/** - * @return a non-zero number if codec is an encoder, zero otherwise - */ -int av_codec_is_encoder(const AVCodec *codec); - -/** - * @return a non-zero number if codec is a decoder, zero otherwise - */ -int av_codec_is_decoder(const AVCodec *codec); - -/** - * @return descriptor for given codec ID or NULL if no descriptor exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id); - -/** - * Iterate over all codec descriptors known to libavcodec. - * - * @param prev previous descriptor. NULL to get the first descriptor. - * - * @return next descriptor or NULL after the last descriptor - */ -const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev); - -/** - * @return codec descriptor with the given name or NULL if no such descriptor - * exists. - */ -const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name); - -/** - * Allocate a CPB properties structure and initialize its fields to default - * values. - * - * @param size if non-NULL, the size of the allocated struct will be written - * here. This is useful for embedding it in side data. - * - * @return the newly allocated struct or NULL on failure - */ -AVCPBProperties *av_cpb_properties_alloc(size_t *size); - -/** - * @} - */ - -#endif /* AVCODEC_AVCODEC_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/avfft.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/avfft.h deleted file mode 100644 index 0c0f9b8d8d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/avfft.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVFFT_H -#define AVCODEC_AVFFT_H - -/** - * @file - * @ingroup lavc_fft - * FFT functions - */ - -/** - * @defgroup lavc_fft FFT functions - * @ingroup lavc_misc - * - * @{ - */ - -typedef float FFTSample; - -typedef struct FFTComplex { - FFTSample re, im; -} FFTComplex; - -typedef struct FFTContext FFTContext; - -/** - * Set up a complex FFT. - * @param nbits log2 of the length of the input array - * @param inverse if 0 perform the forward transform, if 1 perform the inverse - */ -FFTContext *av_fft_init(int nbits, int inverse); - -/** - * Do the permutation needed BEFORE calling ff_fft_calc(). - */ -void av_fft_permute(FFTContext *s, FFTComplex *z); - -/** - * Do a complex FFT with the parameters defined in av_fft_init(). The - * input data must be permuted before. No 1.0/sqrt(n) normalization is done. - */ -void av_fft_calc(FFTContext *s, FFTComplex *z); - -void av_fft_end(FFTContext *s); - -FFTContext *av_mdct_init(int nbits, int inverse, double scale); -void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_end(FFTContext *s); - -/* Real Discrete Fourier Transform */ - -enum RDFTransformType { - DFT_R2C, - IDFT_C2R, - IDFT_R2C, - DFT_C2R, -}; - -typedef struct RDFTContext RDFTContext; - -/** - * Set up a real FFT. - * @param nbits log2 of the length of the input array - * @param trans the type of transform - */ -RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); -void av_rdft_calc(RDFTContext *s, FFTSample *data); -void av_rdft_end(RDFTContext *s); - -/* Discrete Cosine Transform */ - -typedef struct DCTContext DCTContext; - -enum DCTTransformType { - DCT_II = 0, - DCT_III, - DCT_I, - DST_I, -}; - -/** - * Set up DCT. - * - * @param nbits size of the input array: - * (1 << nbits) for DCT-II, DCT-III and DST-I - * (1 << nbits) + 1 for DCT-I - * @param type the type of transform - * - * @note the first element of the input of DST-I is ignored - */ -DCTContext *av_dct_init(int nbits, enum DCTTransformType type); -void av_dct_calc(DCTContext *s, FFTSample *data); -void av_dct_end (DCTContext *s); - -/** - * @} - */ - -#endif /* AVCODEC_AVFFT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/dxva2.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/dxva2.h deleted file mode 100644 index 22c93992f2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/dxva2.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * DXVA2 HW acceleration - * - * copyright (c) 2009 Laurent Aimar - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_DXVA2_H -#define AVCODEC_DXVA2_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_dxva2 - * Public libavcodec DXVA2 header. - */ - -#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 -#undef _WIN32_WINNT -#define _WIN32_WINNT 0x0602 -#endif - -#include -#include -#include - -/** - * @defgroup lavc_codec_hwaccel_dxva2 DXVA2 - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards -#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface - -/** - * This structure is used to provides the necessary configurations and data - * to the DXVA2 FFmpeg HWAccel implementation. - * - * The application must make it available as AVCodecContext.hwaccel_context. - */ -struct dxva_context { - /** - * DXVA2 decoder object - */ - IDirectXVideoDecoder *decoder; - - /** - * DXVA2 configuration used to create the decoder - */ - const DXVA2_ConfigPictureDecode *cfg; - - /** - * The number of surface in the surface array - */ - unsigned surface_count; - - /** - * The array of Direct3D surfaces used to create the decoder - */ - LPDIRECT3DSURFACE9 *surface; - - /** - * A bit field configuring the workarounds needed for using the decoder - */ - uint64_t workaround; - - /** - * Private to the FFmpeg AVHWAccel implementation - */ - unsigned report_id; -}; - -/** - * @} - */ - -#endif /* AVCODEC_DXVA2_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vaapi.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vaapi.h deleted file mode 100644 index 7a29f6f881..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vaapi.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Video Acceleration API (shared data between FFmpeg and the video player) - * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 - * - * Copyright (C) 2008-2009 Splitted-Desktop Systems - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VAAPI_H -#define AVCODEC_VAAPI_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vaapi - * Public libavcodec VA API header. - */ - -#include -#include "libavutil/attributes.h" -#include "version.h" - -/** - * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding - * @ingroup lavc_codec_hwaccel - * @{ - */ - -/** - * This structure is used to share data between the FFmpeg library and - * the client video application. - * This shall be zero-allocated and available as - * AVCodecContext.hwaccel_context. All user members can be set once - * during initialization or through each AVCodecContext.get_buffer() - * function call. In any case, they must be valid prior to calling - * decoding functions. - */ -struct vaapi_context { - /** - * Window system dependent data - * - * - encoding: unused - * - decoding: Set by user - */ - void *display; - - /** - * Configuration ID - * - * - encoding: unused - * - decoding: Set by user - */ - uint32_t config_id; - - /** - * Context ID (video decode pipeline) - * - * - encoding: unused - * - decoding: Set by user - */ - uint32_t context_id; - -#if FF_API_VAAPI_CONTEXT - /** - * VAPictureParameterBuffer ID - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t pic_param_buf_id; - - /** - * VAIQMatrixBuffer ID - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t iq_matrix_buf_id; - - /** - * VABitPlaneBuffer ID (for VC-1 decoding) - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t bitplane_buf_id; - - /** - * Slice parameter/data buffer IDs - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t *slice_buf_ids; - - /** - * Number of effective slice buffer IDs to send to the HW - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int n_slice_buf_ids; - - /** - * Size of pre-allocated slice_buf_ids - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_buf_ids_alloc; - - /** - * Pointer to VASliceParameterBuffers - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - void *slice_params; - - /** - * Size of a VASliceParameterBuffer element - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_param_size; - - /** - * Size of pre-allocated slice_params - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_params_alloc; - - /** - * Number of slices currently filled in - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - unsigned int slice_count; - - /** - * Pointer to slice data buffer base - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - const uint8_t *slice_data; - - /** - * Current size of slice data - * - * - encoding: unused - * - decoding: Set by libavcodec - */ - attribute_deprecated - uint32_t slice_data_size; -#endif -}; - -/* @} */ - -#endif /* AVCODEC_VAAPI_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vda.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vda.h deleted file mode 100644 index bde14e31d7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vda.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - * VDA HW acceleration - * - * copyright (c) 2011 Sebastien Zwickert - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VDA_H -#define AVCODEC_VDA_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vda - * Public libavcodec VDA header. - */ - -#include "libavcodec/avcodec.h" - -#include - -// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes -// http://openradar.appspot.com/8026390 -#undef __GNUC_STDC_INLINE__ - -#define Picture QuickdrawPicture -#include -#undef Picture - -#include "libavcodec/version.h" - -// extra flags not defined in VDADecoder.h -enum { - kVDADecodeInfo_Asynchronous = 1UL << 0, - kVDADecodeInfo_FrameDropped = 1UL << 1 -}; - -/** - * @defgroup lavc_codec_hwaccel_vda VDA - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -/** - * This structure is used to provide the necessary configurations and data - * to the VDA FFmpeg HWAccel implementation. - * - * The application must make it available as AVCodecContext.hwaccel_context. - */ -struct vda_context { - /** - * VDA decoder object. - * - * - encoding: unused - * - decoding: Set/Unset by libavcodec. - */ - VDADecoder decoder; - - /** - * The Core Video pixel buffer that contains the current image data. - * - * encoding: unused - * decoding: Set by libavcodec. Unset by user. - */ - CVPixelBufferRef cv_buffer; - - /** - * Use the hardware decoder in synchronous mode. - * - * encoding: unused - * decoding: Set by user. - */ - int use_sync_decoding; - - /** - * The frame width. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int width; - - /** - * The frame height. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int height; - - /** - * The frame format. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - int format; - - /** - * The pixel format for output image buffers. - * - * - encoding: unused - * - decoding: Set/Unset by user. - */ - OSType cv_pix_fmt_type; - - /** - * unused - */ - uint8_t *priv_bitstream; - - /** - * unused - */ - int priv_bitstream_size; - - /** - * unused - */ - int priv_allocated_size; - - /** - * Use av_buffer to manage buffer. - * When the flag is set, the CVPixelBuffers returned by the decoder will - * be released automatically, so you have to retain them if necessary. - * Not setting this flag may cause memory leak. - * - * encoding: unused - * decoding: Set by user. - */ - int use_ref_buffer; -}; - -/** Create the video decoder. */ -int ff_vda_create_decoder(struct vda_context *vda_ctx, - uint8_t *extradata, - int extradata_size); - -/** Destroy the video decoder. */ -int ff_vda_destroy_decoder(struct vda_context *vda_ctx); - -/** - * This struct holds all the information that needs to be passed - * between the caller and libavcodec for initializing VDA decoding. - * Its size is not a part of the public ABI, it must be allocated with - * av_vda_alloc_context() and freed with av_free(). - */ -typedef struct AVVDAContext { - /** - * VDA decoder object. Created and freed by the caller. - */ - VDADecoder decoder; - - /** - * The output callback that must be passed to VDADecoderCreate. - * Set by av_vda_alloc_context(). - */ - VDADecoderOutputCallback output_callback; - - /** - * CVPixelBuffer Format Type that VDA will use for decoded frames; set by - * the caller. - */ - OSType cv_pix_fmt_type; -} AVVDAContext; - -/** - * Allocate and initialize a VDA context. - * - * This function should be called from the get_format() callback when the caller - * selects the AV_PIX_FMT_VDA format. The caller must then create the decoder - * object (using the output callback provided by libavcodec) that will be used - * for VDA-accelerated decoding. - * - * When decoding with VDA is finished, the caller must destroy the decoder - * object and free the VDA context using av_free(). - * - * @return the newly allocated context or NULL on failure - */ -AVVDAContext *av_vda_alloc_context(void); - -/** - * This is a convenience function that creates and sets up the VDA context using - * an internal implementation. - * - * @param avctx the corresponding codec context - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int av_vda_default_init(AVCodecContext *avctx); - -/** - * This is a convenience function that creates and sets up the VDA context using - * an internal implementation. - * - * @param avctx the corresponding codec context - * @param vdactx the VDA context to use - * - * @return >= 0 on success, a negative AVERROR code on failure - */ -int av_vda_default_init2(AVCodecContext *avctx, AVVDAContext *vdactx); - -/** - * This function must be called to free the VDA context initialized with - * av_vda_default_init(). - * - * @param avctx the corresponding codec context - */ -void av_vda_default_free(AVCodecContext *avctx); - -/** - * @} - */ - -#endif /* AVCODEC_VDA_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vdpau.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vdpau.h deleted file mode 100644 index e85e4d9e9a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/vdpau.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * The Video Decode and Presentation API for UNIX (VDPAU) is used for - * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1. - * - * Copyright (C) 2008 NVIDIA - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VDPAU_H -#define AVCODEC_VDPAU_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_vdpau - * Public libavcodec VDPAU header. - */ - - -/** - * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer - * @ingroup lavc_codec_hwaccel - * - * VDPAU hardware acceleration has two modules - * - VDPAU decoding - * - VDPAU presentation - * - * The VDPAU decoding module parses all headers using FFmpeg - * parsing mechanisms and uses VDPAU for the actual decoding. - * - * As per the current implementation, the actual decoding - * and rendering (API calls) are done as part of the VDPAU - * presentation (vo_vdpau.c) module. - * - * @{ - */ - -#include -#include -#include "libavutil/avconfig.h" -#include "libavutil/attributes.h" - -#include "avcodec.h" -#include "version.h" - -#if FF_API_BUFS_VDPAU -union AVVDPAUPictureInfo { - VdpPictureInfoH264 h264; - VdpPictureInfoMPEG1Or2 mpeg; - VdpPictureInfoVC1 vc1; - VdpPictureInfoMPEG4Part2 mpeg4; -}; -#endif - -struct AVCodecContext; -struct AVFrame; - -typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *, - const VdpPictureInfo *, uint32_t, - const VdpBitstreamBuffer *); - -/** - * This structure is used to share data between the libavcodec library and - * the client video application. - * The user shall allocate the structure via the av_alloc_vdpau_hwaccel - * function and make it available as - * AVCodecContext.hwaccel_context. Members can be set by the user once - * during initialization or through each AVCodecContext.get_buffer() - * function call. In any case, they must be valid prior to calling - * decoding functions. - * - * The size of this structure is not a part of the public ABI and must not - * be used outside of libavcodec. Use av_vdpau_alloc_context() to allocate an - * AVVDPAUContext. - */ -typedef struct AVVDPAUContext { - /** - * VDPAU decoder handle - * - * Set by user. - */ - VdpDecoder decoder; - - /** - * VDPAU decoder render callback - * - * Set by the user. - */ - VdpDecoderRender *render; - -#if FF_API_BUFS_VDPAU - /** - * VDPAU picture information - * - * Set by libavcodec. - */ - attribute_deprecated - union AVVDPAUPictureInfo info; - - /** - * Allocated size of the bitstream_buffers table. - * - * Set by libavcodec. - */ - attribute_deprecated - int bitstream_buffers_allocated; - - /** - * Useful bitstream buffers in the bitstream buffers table. - * - * Set by libavcodec. - */ - attribute_deprecated - int bitstream_buffers_used; - - /** - * Table of bitstream buffers. - * The user is responsible for freeing this buffer using av_freep(). - * - * Set by libavcodec. - */ - attribute_deprecated - VdpBitstreamBuffer *bitstream_buffers; -#endif - AVVDPAU_Render2 render2; -} AVVDPAUContext; - -/** - * @brief allocation function for AVVDPAUContext - * - * Allows extending the struct without breaking API/ABI - */ -AVVDPAUContext *av_alloc_vdpaucontext(void); - -AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *); -void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2); - -/** - * Associate a VDPAU device with a codec context for hardware acceleration. - * This function is meant to be called from the get_format() codec callback, - * or earlier. It can also be called after avcodec_flush_buffers() to change - * the underlying VDPAU device mid-stream (e.g. to recover from non-transparent - * display preemption). - * - * @note get_format() must return AV_PIX_FMT_VDPAU if this function completes - * successfully. - * - * @param avctx decoding context whose get_format() callback is invoked - * @param device VDPAU device handle to use for hardware acceleration - * @param get_proc_address VDPAU device driver - * @param flags zero of more OR'd AV_HWACCEL_FLAG_* flags - * - * @return 0 on success, an AVERROR code on failure. - */ -int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device, - VdpGetProcAddress *get_proc_address, unsigned flags); - -/** - * Gets the parameters to create an adequate VDPAU video surface for the codec - * context using VDPAU hardware decoding acceleration. - * - * @note Behavior is undefined if the context was not successfully bound to a - * VDPAU device using av_vdpau_bind_context(). - * - * @param avctx the codec context being used for decoding the stream - * @param type storage space for the VDPAU video surface chroma type - * (or NULL to ignore) - * @param width storage space for the VDPAU video surface pixel width - * (or NULL to ignore) - * @param height storage space for the VDPAU video surface pixel height - * (or NULL to ignore) - * - * @return 0 on success, a negative AVERROR code on failure. - */ -int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type, - uint32_t *width, uint32_t *height); - -/** - * Allocate an AVVDPAUContext. - * - * @return Newly-allocated AVVDPAUContext or NULL on failure. - */ -AVVDPAUContext *av_vdpau_alloc_context(void); - -#if FF_API_VDPAU_PROFILE -/** - * Get a decoder profile that should be used for initializing a VDPAU decoder. - * Should be called from the AVCodecContext.get_format() callback. - * - * @deprecated Use av_vdpau_bind_context() instead. - * - * @param avctx the codec context being used for decoding the stream - * @param profile a pointer into which the result will be written on success. - * The contents of profile are undefined if this function returns - * an error. - * - * @return 0 on success (non-negative), a negative AVERROR on failure. - */ -attribute_deprecated -int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile); -#endif - -#if FF_API_CAP_VDPAU -/** @brief The videoSurface is used for rendering. */ -#define FF_VDPAU_STATE_USED_FOR_RENDER 1 - -/** - * @brief The videoSurface is needed for reference/prediction. - * The codec manipulates this. - */ -#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2 - -/** - * @brief This structure is used as a callback between the FFmpeg - * decoder (vd_) and presentation (vo_) module. - * This is used for defining a video frame containing surface, - * picture parameter, bitstream information etc which are passed - * between the FFmpeg decoder and its clients. - */ -struct vdpau_render_state { - VdpVideoSurface surface; ///< Used as rendered surface, never changed. - - int state; ///< Holds FF_VDPAU_STATE_* values. - - /** picture parameter information for all supported codecs */ - union AVVDPAUPictureInfo info; - - /** Describe size/location of the compressed video data. - Set to 0 when freeing bitstream_buffers. */ - int bitstream_buffers_allocated; - int bitstream_buffers_used; - /** The user is responsible for freeing this buffer using av_freep(). */ - VdpBitstreamBuffer *bitstream_buffers; -}; -#endif - -/* @}*/ - -#endif /* AVCODEC_VDPAU_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/version.h deleted file mode 100644 index 37a35e05ef..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/version.h +++ /dev/null @@ -1,216 +0,0 @@ -/* - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_VERSION_H -#define AVCODEC_VERSION_H - -/** - * @file - * @ingroup libavc - * Libavcodec version macros. - */ - -#include "libavutil/version.h" - -#define LIBAVCODEC_VERSION_MAJOR 57 -#define LIBAVCODEC_VERSION_MINOR 24 -#define LIBAVCODEC_VERSION_MICRO 102 - -#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ - LIBAVCODEC_VERSION_MINOR, \ - LIBAVCODEC_VERSION_MICRO) -#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT - -#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - */ - -#ifndef FF_API_VIMA_DECODER -#define FF_API_VIMA_DECODER (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AUDIO_CONVERT -#define FF_API_AUDIO_CONVERT (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AVCODEC_RESAMPLE -#define FF_API_AVCODEC_RESAMPLE FF_API_AUDIO_CONVERT -#endif -#ifndef FF_API_GETCHROMA -#define FF_API_GETCHROMA (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MISSING_SAMPLE -#define FF_API_MISSING_SAMPLE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LOWRES -#define FF_API_LOWRES (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_CAP_VDPAU -#define FF_API_CAP_VDPAU (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_BUFS_VDPAU -#define FF_API_BUFS_VDPAU (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_VOXWARE -#define FF_API_VOXWARE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_SET_DIMENSIONS -#define FF_API_SET_DIMENSIONS (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_DEBUG_MV -#define FF_API_DEBUG_MV (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AC_VLC -#define FF_API_AC_VLC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_OLD_MSMPEG4 -#define FF_API_OLD_MSMPEG4 (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ASPECT_EXTENDED -#define FF_API_ASPECT_EXTENDED (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ARCH_ALPHA -#define FF_API_ARCH_ALPHA (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_XVMC -#define FF_API_XVMC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ERROR_RATE -#define FF_API_ERROR_RATE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_QSCALE_TYPE -#define FF_API_QSCALE_TYPE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MB_TYPE -#define FF_API_MB_TYPE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MAX_BFRAMES -#define FF_API_MAX_BFRAMES (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_NEG_LINESIZES -#define FF_API_NEG_LINESIZES (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_EMU_EDGE -#define FF_API_EMU_EDGE (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ARCH_SH4 -#define FF_API_ARCH_SH4 (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_ARCH_SPARC -#define FF_API_ARCH_SPARC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_UNUSED_MEMBERS -#define FF_API_UNUSED_MEMBERS (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_IDCT_XVIDMMX -#define FF_API_IDCT_XVIDMMX (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_INPUT_PRESERVED -#define FF_API_INPUT_PRESERVED (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_NORMALIZE_AQP -#define FF_API_NORMALIZE_AQP (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_GMC -#define FF_API_GMC (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_MV0 -#define FF_API_MV0 (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_CODEC_NAME -#define FF_API_CODEC_NAME (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AFD -#define FF_API_AFD (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_VISMV -/* XXX: don't forget to drop the -vismv documentation */ -#define FF_API_VISMV (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AUDIOENC_DELAY -#define FF_API_AUDIOENC_DELAY (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_VAAPI_CONTEXT -#define FF_API_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_AVCTX_TIMEBASE -#define FF_API_AVCTX_TIMEBASE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_MPV_OPT -#define FF_API_MPV_OPT (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_STREAM_CODEC_TAG -#define FF_API_STREAM_CODEC_TAG (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_QUANT_BIAS -#define FF_API_QUANT_BIAS (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_RC_STRATEGY -#define FF_API_RC_STRATEGY (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_CODED_FRAME -#define FF_API_CODED_FRAME (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_MOTION_EST -#define FF_API_MOTION_EST (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_WITHOUT_PREFIX -#define FF_API_WITHOUT_PREFIX (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_SIDEDATA_ONLY_PKT -#define FF_API_SIDEDATA_ONLY_PKT (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_VDPAU_PROFILE -#define FF_API_VDPAU_PROFILE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_CONVERGENCE_DURATION -#define FF_API_CONVERGENCE_DURATION (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_AVPICTURE -#define FF_API_AVPICTURE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_AVPACKET_OLD_API -#define FF_API_AVPACKET_OLD_API (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_RTP_CALLBACK -#define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_VBV_DELAY -#define FF_API_VBV_DELAY (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_CODER_TYPE -#define FF_API_CODER_TYPE (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_STAT_BITS -#define FF_API_STAT_BITS (LIBAVCODEC_VERSION_MAJOR < 59) -#endif -#ifndef FF_API_PRIVATE_OPT -#define FF_API_PRIVATE_OPT (LIBAVCODEC_VERSION_MAJOR < 59) -#endif - -#endif /* AVCODEC_VERSION_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/xvmc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/xvmc.h deleted file mode 100644 index 465ee78d6e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavcodec/xvmc.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (C) 2003 Ivan Kalvachev - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_XVMC_H -#define AVCODEC_XVMC_H - -/** - * @file - * @ingroup lavc_codec_hwaccel_xvmc - * Public libavcodec XvMC header. - */ - -#include - -#include "libavutil/attributes.h" -#include "version.h" -#include "avcodec.h" - -/** - * @defgroup lavc_codec_hwaccel_xvmc XvMC - * @ingroup lavc_codec_hwaccel - * - * @{ - */ - -#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct - the number is 1337 speak for the letters IDCT MCo (motion compensation) */ - -struct attribute_deprecated xvmc_pix_fmt { - /** The field contains the special constant value AV_XVMC_ID. - It is used as a test that the application correctly uses the API, - and that there is no corruption caused by pixel routines. - - application - set during initialization - - libavcodec - unchanged - */ - int xvmc_id; - - /** Pointer to the block array allocated by XvMCCreateBlocks(). - The array has to be freed by XvMCDestroyBlocks(). - Each group of 64 values represents one data block of differential - pixel information (in MoCo mode) or coefficients for IDCT. - - application - set the pointer during initialization - - libavcodec - fills coefficients/pixel data into the array - */ - short* data_blocks; - - /** Pointer to the macroblock description array allocated by - XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks(). - - application - set the pointer during initialization - - libavcodec - fills description data into the array - */ - XvMCMacroBlock* mv_blocks; - - /** Number of macroblock descriptions that can be stored in the mv_blocks - array. - - application - set during initialization - - libavcodec - unchanged - */ - int allocated_mv_blocks; - - /** Number of blocks that can be stored at once in the data_blocks array. - - application - set during initialization - - libavcodec - unchanged - */ - int allocated_data_blocks; - - /** Indicate that the hardware would interpret data_blocks as IDCT - coefficients and perform IDCT on them. - - application - set during initialization - - libavcodec - unchanged - */ - int idct; - - /** In MoCo mode it indicates that intra macroblocks are assumed to be in - unsigned format; same as the XVMC_INTRA_UNSIGNED flag. - - application - set during initialization - - libavcodec - unchanged - */ - int unsigned_intra; - - /** Pointer to the surface allocated by XvMCCreateSurface(). - It has to be freed by XvMCDestroySurface() on application exit. - It identifies the frame and its state on the video hardware. - - application - set during initialization - - libavcodec - unchanged - */ - XvMCSurface* p_surface; - -/** Set by the decoder before calling ff_draw_horiz_band(), - needed by the XvMCRenderSurface function. */ -//@{ - /** Pointer to the surface used as past reference - - application - unchanged - - libavcodec - set - */ - XvMCSurface* p_past_surface; - - /** Pointer to the surface used as future reference - - application - unchanged - - libavcodec - set - */ - XvMCSurface* p_future_surface; - - /** top/bottom field or frame - - application - unchanged - - libavcodec - set - */ - unsigned int picture_structure; - - /** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence - - application - unchanged - - libavcodec - set - */ - unsigned int flags; -//}@ - - /** Number of macroblock descriptions in the mv_blocks array - that have already been passed to the hardware. - - application - zeroes it on get_buffer(). - A successful ff_draw_horiz_band() may increment it - with filled_mb_block_num or zero both. - - libavcodec - unchanged - */ - int start_mv_blocks_num; - - /** Number of new macroblock descriptions in the mv_blocks array (after - start_mv_blocks_num) that are filled by libavcodec and have to be - passed to the hardware. - - application - zeroes it on get_buffer() or after successful - ff_draw_horiz_band(). - - libavcodec - increment with one of each stored MB - */ - int filled_mv_blocks_num; - - /** Number of the next free data block; one data block consists of - 64 short values in the data_blocks array. - All blocks before this one have already been claimed by placing their - position into the corresponding block description structure field, - that are part of the mv_blocks array. - - application - zeroes it on get_buffer(). - A successful ff_draw_horiz_band() may zero it together - with start_mb_blocks_num. - - libavcodec - each decoded macroblock increases it by the number - of coded blocks it contains. - */ - int next_free_data_block_num; -}; - -/** - * @} - */ - -#endif /* AVCODEC_XVMC_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/avformat.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/avformat.h deleted file mode 100644 index 34bad436cd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/avformat.h +++ /dev/null @@ -1,2859 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVFORMAT_AVFORMAT_H -#define AVFORMAT_AVFORMAT_H - -/** - * @file - * @ingroup libavf - * Main libavformat public API header - */ - -/** - * @defgroup libavf I/O and Muxing/Demuxing Library - * @{ - * - * Libavformat (lavf) is a library for dealing with various media container - * formats. Its main two purposes are demuxing - i.e. splitting a media file - * into component streams, and the reverse process of muxing - writing supplied - * data in a specified container format. It also has an @ref lavf_io - * "I/O module" which supports a number of protocols for accessing the data (e.g. - * file, tcp, http and others). Before using lavf, you need to call - * av_register_all() to register all compiled muxers, demuxers and protocols. - * Unless you are absolutely sure you won't use libavformat's network - * capabilities, you should also call avformat_network_init(). - * - * A supported input format is described by an AVInputFormat struct, conversely - * an output format is described by AVOutputFormat. You can iterate over all - * registered input/output formats using the av_iformat_next() / - * av_oformat_next() functions. The protocols layer is not part of the public - * API, so you can only get the names of supported protocols with the - * avio_enum_protocols() function. - * - * Main lavf structure used for both muxing and demuxing is AVFormatContext, - * which exports all information about the file being read or written. As with - * most Libavformat structures, its size is not part of public ABI, so it cannot be - * allocated on stack or directly with av_malloc(). To create an - * AVFormatContext, use avformat_alloc_context() (some functions, like - * avformat_open_input() might do that for you). - * - * Most importantly an AVFormatContext contains: - * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat - * "output" format. It is either autodetected or set by user for input; - * always set by user for output. - * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all - * elementary streams stored in the file. AVStreams are typically referred to - * using their index in this array. - * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or - * set by user for input, always set by user for output (unless you are dealing - * with an AVFMT_NOFILE format). - * - * @section lavf_options Passing options to (de)muxers - * It is possible to configure lavf muxers and demuxers using the @ref avoptions - * mechanism. Generic (format-independent) libavformat options are provided by - * AVFormatContext, they can be examined from a user program by calling - * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass - * from avformat_get_class()). Private (format-specific) options are provided by - * AVFormatContext.priv_data if and only if AVInputFormat.priv_class / - * AVOutputFormat.priv_class of the corresponding format struct is non-NULL. - * Further options may be provided by the @ref AVFormatContext.pb "I/O context", - * if its AVClass is non-NULL, and the protocols layer. See the discussion on - * nesting in @ref avoptions documentation to learn how to access those. - * - * @section urls - * URL strings in libavformat are made of a scheme/protocol, a ':', and a - * scheme specific string. URLs without a scheme and ':' used for local files - * are supported but deprecated. "file:" should be used for local files. - * - * It is important that the scheme string is not taken from untrusted - * sources without checks. - * - * Note that some schemes/protocols are quite powerful, allowing access to - * both local and remote files, parts of them, concatenations of them, local - * audio and video devices and so on. - * - * @defgroup lavf_decoding Demuxing - * @{ - * Demuxers read a media file and split it into chunks of data (@em packets). A - * @ref AVPacket "packet" contains one or more encoded frames which belongs to a - * single elementary stream. In the lavf API this process is represented by the - * avformat_open_input() function for opening a file, av_read_frame() for - * reading a single packet and finally avformat_close_input(), which does the - * cleanup. - * - * @section lavf_decoding_open Opening a media file - * The minimum information required to open a file is its URL, which - * is passed to avformat_open_input(), as in the following code: - * @code - * const char *url = "file:in.mp3"; - * AVFormatContext *s = NULL; - * int ret = avformat_open_input(&s, url, NULL, NULL); - * if (ret < 0) - * abort(); - * @endcode - * The above code attempts to allocate an AVFormatContext, open the - * specified file (autodetecting the format) and read the header, exporting the - * information stored there into s. Some formats do not have a header or do not - * store enough information there, so it is recommended that you call the - * avformat_find_stream_info() function which tries to read and decode a few - * frames to find missing information. - * - * In some cases you might want to preallocate an AVFormatContext yourself with - * avformat_alloc_context() and do some tweaking on it before passing it to - * avformat_open_input(). One such case is when you want to use custom functions - * for reading input data instead of lavf internal I/O layer. - * To do that, create your own AVIOContext with avio_alloc_context(), passing - * your reading callbacks to it. Then set the @em pb field of your - * AVFormatContext to newly created AVIOContext. - * - * Since the format of the opened file is in general not known until after - * avformat_open_input() has returned, it is not possible to set demuxer private - * options on a preallocated context. Instead, the options should be passed to - * avformat_open_input() wrapped in an AVDictionary: - * @code - * AVDictionary *options = NULL; - * av_dict_set(&options, "video_size", "640x480", 0); - * av_dict_set(&options, "pixel_format", "rgb24", 0); - * - * if (avformat_open_input(&s, url, NULL, &options) < 0) - * abort(); - * av_dict_free(&options); - * @endcode - * This code passes the private options 'video_size' and 'pixel_format' to the - * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it - * cannot know how to interpret raw video data otherwise. If the format turns - * out to be something different than raw video, those options will not be - * recognized by the demuxer and therefore will not be applied. Such unrecognized - * options are then returned in the options dictionary (recognized options are - * consumed). The calling program can handle such unrecognized options as it - * wishes, e.g. - * @code - * AVDictionaryEntry *e; - * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) { - * fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key); - * abort(); - * } - * @endcode - * - * After you have finished reading the file, you must close it with - * avformat_close_input(). It will free everything associated with the file. - * - * @section lavf_decoding_read Reading from an opened file - * Reading data from an opened AVFormatContext is done by repeatedly calling - * av_read_frame() on it. Each call, if successful, will return an AVPacket - * containing encoded data for one AVStream, identified by - * AVPacket.stream_index. This packet may be passed straight into the libavcodec - * decoding functions avcodec_decode_video2(), avcodec_decode_audio4() or - * avcodec_decode_subtitle2() if the caller wishes to decode the data. - * - * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be - * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for - * pts/dts, 0 for duration) if the stream does not provide them. The timing - * information will be in AVStream.time_base units, i.e. it has to be - * multiplied by the timebase to convert them to seconds. - * - * If AVPacket.buf is set on the returned packet, then the packet is - * allocated dynamically and the user may keep it indefinitely. - * Otherwise, if AVPacket.buf is NULL, the packet data is backed by a - * static storage somewhere inside the demuxer and the packet is only valid - * until the next av_read_frame() call or closing the file. If the caller - * requires a longer lifetime, av_dup_packet() will make an av_malloc()ed copy - * of it. - * In both cases, the packet must be freed with av_packet_unref() when it is no - * longer needed. - * - * @section lavf_decoding_seek Seeking - * @} - * - * @defgroup lavf_encoding Muxing - * @{ - * Muxers take encoded data in the form of @ref AVPacket "AVPackets" and write - * it into files or other output bytestreams in the specified container format. - * - * The main API functions for muxing are avformat_write_header() for writing the - * file header, av_write_frame() / av_interleaved_write_frame() for writing the - * packets and av_write_trailer() for finalizing the file. - * - * At the beginning of the muxing process, the caller must first call - * avformat_alloc_context() to create a muxing context. The caller then sets up - * the muxer by filling the various fields in this context: - * - * - The @ref AVFormatContext.oformat "oformat" field must be set to select the - * muxer that will be used. - * - Unless the format is of the AVFMT_NOFILE type, the @ref AVFormatContext.pb - * "pb" field must be set to an opened IO context, either returned from - * avio_open2() or a custom one. - * - Unless the format is of the AVFMT_NOSTREAMS type, at least one stream must - * be created with the avformat_new_stream() function. The caller should fill - * the @ref AVStream.codec "stream codec context" information, such as the - * codec @ref AVCodecContext.codec_type "type", @ref AVCodecContext.codec_id - * "id" and other parameters (e.g. width / height, the pixel or sample format, - * etc.) as known. The @ref AVStream.time_base "stream timebase" should - * be set to the timebase that the caller desires to use for this stream (note - * that the timebase actually used by the muxer can be different, as will be - * described later). - * - It is advised to manually initialize only the relevant fields in - * AVCodecContext, rather than using @ref avcodec_copy_context() during - * remuxing: there is no guarantee that the codec context values remain valid - * for both input and output format contexts. - * - The caller may fill in additional information, such as @ref - * AVFormatContext.metadata "global" or @ref AVStream.metadata "per-stream" - * metadata, @ref AVFormatContext.chapters "chapters", @ref - * AVFormatContext.programs "programs", etc. as described in the - * AVFormatContext documentation. Whether such information will actually be - * stored in the output depends on what the container format and the muxer - * support. - * - * When the muxing context is fully set up, the caller must call - * avformat_write_header() to initialize the muxer internals and write the file - * header. Whether anything actually is written to the IO context at this step - * depends on the muxer, but this function must always be called. Any muxer - * private options must be passed in the options parameter to this function. - * - * The data is then sent to the muxer by repeatedly calling av_write_frame() or - * av_interleaved_write_frame() (consult those functions' documentation for - * discussion on the difference between them; only one of them may be used with - * a single muxing context, they should not be mixed). Do note that the timing - * information on the packets sent to the muxer must be in the corresponding - * AVStream's timebase. That timebase is set by the muxer (in the - * avformat_write_header() step) and may be different from the timebase - * requested by the caller. - * - * Once all the data has been written, the caller must call av_write_trailer() - * to flush any buffered packets and finalize the output file, then close the IO - * context (if any) and finally free the muxing context with - * avformat_free_context(). - * @} - * - * @defgroup lavf_io I/O Read/Write - * @{ - * @section lavf_io_dirlist Directory listing - * The directory listing API makes it possible to list files on remote servers. - * - * Some of possible use cases: - * - an "open file" dialog to choose files from a remote location, - * - a recursive media finder providing a player with an ability to play all - * files from a given directory. - * - * @subsection lavf_io_dirlist_open Opening a directory - * At first, a directory needs to be opened by calling avio_open_dir() - * supplied with a URL and, optionally, ::AVDictionary containing - * protocol-specific parameters. The function returns zero or positive - * integer and allocates AVIODirContext on success. - * - * @code - * AVIODirContext *ctx = NULL; - * if (avio_open_dir(&ctx, "smb://example.com/some_dir", NULL) < 0) { - * fprintf(stderr, "Cannot open directory.\n"); - * abort(); - * } - * @endcode - * - * This code tries to open a sample directory using smb protocol without - * any additional parameters. - * - * @subsection lavf_io_dirlist_read Reading entries - * Each directory's entry (i.e. file, another directory, anything else - * within ::AVIODirEntryType) is represented by AVIODirEntry. - * Reading consecutive entries from an opened AVIODirContext is done by - * repeatedly calling avio_read_dir() on it. Each call returns zero or - * positive integer if successful. Reading can be stopped right after the - * NULL entry has been read -- it means there are no entries left to be - * read. The following code reads all entries from a directory associated - * with ctx and prints their names to standard output. - * @code - * AVIODirEntry *entry = NULL; - * for (;;) { - * if (avio_read_dir(ctx, &entry) < 0) { - * fprintf(stderr, "Cannot list directory.\n"); - * abort(); - * } - * if (!entry) - * break; - * printf("%s\n", entry->name); - * avio_free_directory_entry(&entry); - * } - * @endcode - * @} - * - * @defgroup lavf_codec Demuxers - * @{ - * @defgroup lavf_codec_native Native Demuxers - * @{ - * @} - * @defgroup lavf_codec_wrappers External library wrappers - * @{ - * @} - * @} - * @defgroup lavf_protos I/O Protocols - * @{ - * @} - * @defgroup lavf_internal Internal - * @{ - * @} - * @} - * - */ - -#include -#include /* FILE */ -#include "libavcodec/avcodec.h" -#include "libavutil/dict.h" -#include "libavutil/log.h" - -#include "avio.h" -#include "libavformat/version.h" - -struct AVFormatContext; - -struct AVDeviceInfoList; -struct AVDeviceCapabilitiesQuery; - -/** - * @defgroup metadata_api Public Metadata API - * @{ - * @ingroup libavf - * The metadata API allows libavformat to export metadata tags to a client - * application when demuxing. Conversely it allows a client application to - * set metadata when muxing. - * - * Metadata is exported or set as pairs of key/value strings in the 'metadata' - * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs - * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg, - * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata - * exported by demuxers isn't checked to be valid UTF-8 in most cases. - * - * Important concepts to keep in mind: - * - Keys are unique; there can never be 2 tags with the same key. This is - * also meant semantically, i.e., a demuxer should not knowingly produce - * several keys that are literally different but semantically identical. - * E.g., key=Author5, key=Author6. In this example, all authors must be - * placed in the same tag. - * - Metadata is flat, not hierarchical; there are no subtags. If you - * want to store, e.g., the email address of the child of producer Alice - * and actor Bob, that could have key=alice_and_bobs_childs_email_address. - * - Several modifiers can be applied to the tag name. This is done by - * appending a dash character ('-') and the modifier name in the order - * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. - * - language -- a tag whose value is localized for a particular language - * is appended with the ISO 639-2/B 3-letter language code. - * For example: Author-ger=Michael, Author-eng=Mike - * The original/default language is in the unqualified "Author" tag. - * A demuxer should set a default if it sets any translated tag. - * - sorting -- a modified version of a tag that should be used for - * sorting will have '-sort' appended. E.g. artist="The Beatles", - * artist-sort="Beatles, The". - * - Some protocols and demuxers support metadata updates. After a successful - * call to av_read_packet(), AVFormatContext.event_flags or AVStream.event_flags - * will be updated to indicate if metadata changed. In order to detect metadata - * changes on a stream, you need to loop through all streams in the AVFormatContext - * and check their individual event_flags. - * - * - Demuxers attempt to export metadata in a generic format, however tags - * with no generic equivalents are left as they are stored in the container. - * Follows a list of generic tag names: - * - @verbatim - album -- name of the set this work belongs to - album_artist -- main creator of the set/album, if different from artist. - e.g. "Various Artists" for compilation albums. - artist -- main creator of the work - comment -- any additional description of the file. - composer -- who composed the work, if different from artist. - copyright -- name of copyright holder. - creation_time-- date when the file was created, preferably in ISO 8601. - date -- date when the work was created, preferably in ISO 8601. - disc -- number of a subset, e.g. disc in a multi-disc collection. - encoder -- name/settings of the software/hardware that produced the file. - encoded_by -- person/group who created the file. - filename -- original name of the file. - genre -- . - language -- main language in which the work is performed, preferably - in ISO 639-2 format. Multiple languages can be specified by - separating them with commas. - performer -- artist who performed the work, if different from artist. - E.g for "Also sprach Zarathustra", artist would be "Richard - Strauss" and performer "London Philharmonic Orchestra". - publisher -- name of the label/publisher. - service_name -- name of the service in broadcasting (channel name). - service_provider -- name of the service provider in broadcasting. - title -- name of the work. - track -- number of this work in the set, can be in form current/total. - variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of - @endverbatim - * - * Look in the examples section for an application example how to use the Metadata API. - * - * @} - */ - -/* packet functions */ - - -/** - * Allocate and read the payload of a packet and initialize its - * fields with default values. - * - * @param s associated IO context - * @param pkt packet - * @param size desired payload size - * @return >0 (read size) if OK, AVERROR_xxx otherwise - */ -int av_get_packet(AVIOContext *s, AVPacket *pkt, int size); - - -/** - * Read data and append it to the current content of the AVPacket. - * If pkt->size is 0 this is identical to av_get_packet. - * Note that this uses av_grow_packet and thus involves a realloc - * which is inefficient. Thus this function should only be used - * when there is no reasonable way to know (an upper bound of) - * the final size. - * - * @param s associated IO context - * @param pkt packet - * @param size amount of data to read - * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data - * will not be lost even if an error occurs. - */ -int av_append_packet(AVIOContext *s, AVPacket *pkt, int size); - -#if FF_API_LAVF_FRAC -/*************************************************/ -/* fractional numbers for exact pts handling */ - -/** - * The exact value of the fractional number is: 'val + num / den'. - * num is assumed to be 0 <= num < den. - */ -typedef struct AVFrac { - int64_t val, num, den; -} AVFrac; -#endif - -/*************************************************/ -/* input/output formats */ - -struct AVCodecTag; - -/** - * This structure contains the data a format has to probe a file. - */ -typedef struct AVProbeData { - const char *filename; - unsigned char *buf; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */ - int buf_size; /**< Size of buf except extra allocated bytes */ - const char *mime_type; /**< mime_type, when known. */ -} AVProbeData; - -#define AVPROBE_SCORE_RETRY (AVPROBE_SCORE_MAX/4) -#define AVPROBE_SCORE_STREAM_RETRY (AVPROBE_SCORE_MAX/4-1) - -#define AVPROBE_SCORE_EXTENSION 50 ///< score for file extension -#define AVPROBE_SCORE_MIME 75 ///< score for file mime type -#define AVPROBE_SCORE_MAX 100 ///< maximum score - -#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer - -/// Demuxer will use avio_open, no opened file should be provided by the caller. -#define AVFMT_NOFILE 0x0001 -#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ -#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ -#if FF_API_LAVF_FMT_RAWPICTURE -#define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for - raw picture data. @deprecated Not used anymore */ -#endif -#define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ -#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */ -#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ -#define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */ -#define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */ -#define AVFMT_NODIMENSIONS 0x0800 /**< Format does not need width/height */ -#define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */ -#define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fall back on binary search via read_timestamp */ -#define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fall back on generic search */ -#define AVFMT_NO_BYTE_SEEK 0x8000 /**< Format does not allow seeking by bytes */ -#define AVFMT_ALLOW_FLUSH 0x10000 /**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */ -#define AVFMT_TS_NONSTRICT 0x20000 /**< Format does not require strictly - increasing timestamps, but they must - still be monotonic */ -#define AVFMT_TS_NEGATIVE 0x40000 /**< Format allows muxing negative - timestamps. If not set the timestamp - will be shifted in av_write_frame and - av_interleaved_write_frame so they - start from 0. - The user or muxer can override this through - AVFormatContext.avoid_negative_ts - */ - -#define AVFMT_SEEK_TO_PTS 0x4000000 /**< Seeking is based on PTS */ - -/** - * @addtogroup lavf_encoding - * @{ - */ -typedef struct AVOutputFormat { - const char *name; - /** - * Descriptive name for the format, meant to be more human-readable - * than name. You should use the NULL_IF_CONFIG_SMALL() macro - * to define it. - */ - const char *long_name; - const char *mime_type; - const char *extensions; /**< comma-separated filename extensions */ - /* output support */ - enum AVCodecID audio_codec; /**< default audio codec */ - enum AVCodecID video_codec; /**< default video codec */ - enum AVCodecID subtitle_codec; /**< default subtitle codec */ - /** - * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, - * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, - * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, - * AVFMT_TS_NONSTRICT - */ - int flags; - - /** - * List of supported codec_id-codec_tag pairs, ordered by "better - * choice first". The arrays are all terminated by AV_CODEC_ID_NONE. - */ - const struct AVCodecTag * const *codec_tag; - - - const AVClass *priv_class; ///< AVClass for the private context - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVOutputFormat *next; - /** - * size of private data so that it can be allocated in the wrapper - */ - int priv_data_size; - - int (*write_header)(struct AVFormatContext *); - /** - * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, - * pkt can be NULL in order to flush data buffered in the muxer. - * When flushing, return 0 if there still is more data to flush, - * or 1 if everything was flushed and there is no more buffered - * data. - */ - int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); - int (*write_trailer)(struct AVFormatContext *); - /** - * Currently only used to set pixel format if not YUV420P. - */ - int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, - AVPacket *in, int flush); - /** - * Test if the given codec can be stored in this container. - * - * @return 1 if the codec is supported, 0 if it is not. - * A negative number if unknown. - * MKTAG('A', 'P', 'I', 'C') if the codec is only supported as AV_DISPOSITION_ATTACHED_PIC - */ - int (*query_codec)(enum AVCodecID id, int std_compliance); - - void (*get_output_timestamp)(struct AVFormatContext *s, int stream, - int64_t *dts, int64_t *wall); - /** - * Allows sending messages from application to device. - */ - int (*control_message)(struct AVFormatContext *s, int type, - void *data, size_t data_size); - - /** - * Write an uncoded AVFrame. - * - * See av_write_uncoded_frame() for details. - * - * The library will free *frame afterwards, but the muxer can prevent it - * by setting the pointer to NULL. - */ - int (*write_uncoded_frame)(struct AVFormatContext *, int stream_index, - AVFrame **frame, unsigned flags); - /** - * Returns device list with it properties. - * @see avdevice_list_devices() for more details. - */ - int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); - /** - * Initialize device capabilities submodule. - * @see avdevice_capabilities_create() for more details. - */ - int (*create_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); - /** - * Free device capabilities submodule. - * @see avdevice_capabilities_free() for more details. - */ - int (*free_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); - enum AVCodecID data_codec; /**< default data codec */ - /** - * Initialize format. May allocate data here, and set any AVFormatContext or - * AVStream parameters that need to be set before packets are sent. - * This method must not write output. - * - * Any allocations made here must be freed in deinit(). - */ - int (*init)(struct AVFormatContext *); - /** - * Deinitialize format. If present, this is called whenever the muxer is being - * destroyed, regardless of whether or not the header has been written. - * - * If a trailer is being written, this is called after write_trailer(). - * - * This is called if init() fails as well. - */ - void (*deinit)(struct AVFormatContext *); - /** - * Set up any necessary bitstream filtering and extract any extra data needed - * for the global header. - * Return 0 if more packets from this stream must be checked; 1 if not. - */ - int (*check_bitstream)(struct AVFormatContext *, const AVPacket *pkt); -} AVOutputFormat; -/** - * @} - */ - -/** - * @addtogroup lavf_decoding - * @{ - */ -typedef struct AVInputFormat { - /** - * A comma separated list of short names for the format. New names - * may be appended with a minor bump. - */ - const char *name; - - /** - * Descriptive name for the format, meant to be more human-readable - * than name. You should use the NULL_IF_CONFIG_SMALL() macro - * to define it. - */ - const char *long_name; - - /** - * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, - * AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, - * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS. - */ - int flags; - - /** - * If extensions are defined, then no probe is done. You should - * usually not use extension format guessing because it is not - * reliable enough - */ - const char *extensions; - - const struct AVCodecTag * const *codec_tag; - - const AVClass *priv_class; ///< AVClass for the private context - - /** - * Comma-separated list of mime types. - * It is used check for matching mime types while probing. - * @see av_probe_input_format2 - */ - const char *mime_type; - - /***************************************************************** - * No fields below this line are part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - struct AVInputFormat *next; - - /** - * Raw demuxers store their codec ID here. - */ - int raw_codec_id; - - /** - * Size of private data so that it can be allocated in the wrapper. - */ - int priv_data_size; - - /** - * Tell if a given file has a chance of being parsed as this format. - * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes - * big so you do not have to check for that unless you need more. - */ - int (*read_probe)(AVProbeData *); - - /** - * Read the format header and initialize the AVFormatContext - * structure. Return 0 if OK. 'avformat_new_stream' should be - * called to create new streams. - */ - int (*read_header)(struct AVFormatContext *); - - /** - * Read one packet and put it in 'pkt'. pts and flags are also - * set. 'avformat_new_stream' can be called only if the flag - * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a - * background thread). - * @return 0 on success, < 0 on error. - * When returning an error, pkt must not have been allocated - * or must be freed before returning - */ - int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); - - /** - * Close the stream. The AVFormatContext and AVStreams are not - * freed by this function - */ - int (*read_close)(struct AVFormatContext *); - - /** - * Seek to a given timestamp relative to the frames in - * stream component stream_index. - * @param stream_index Must not be -1. - * @param flags Selects which direction should be preferred if no exact - * match is available. - * @return >= 0 on success (but not necessarily the new offset) - */ - int (*read_seek)(struct AVFormatContext *, - int stream_index, int64_t timestamp, int flags); - - /** - * Get the next timestamp in stream[stream_index].time_base units. - * @return the timestamp or AV_NOPTS_VALUE if an error occurred - */ - int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, - int64_t *pos, int64_t pos_limit); - - /** - * Start/resume playing - only meaningful if using a network-based format - * (RTSP). - */ - int (*read_play)(struct AVFormatContext *); - - /** - * Pause playing - only meaningful if using a network-based format - * (RTSP). - */ - int (*read_pause)(struct AVFormatContext *); - - /** - * Seek to timestamp ts. - * Seeking will be done so that the point from which all active streams - * can be presented successfully will be closest to ts and within min/max_ts. - * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. - */ - int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); - - /** - * Returns device list with it properties. - * @see avdevice_list_devices() for more details. - */ - int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); - - /** - * Initialize device capabilities submodule. - * @see avdevice_capabilities_create() for more details. - */ - int (*create_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); - - /** - * Free device capabilities submodule. - * @see avdevice_capabilities_free() for more details. - */ - int (*free_device_capabilities)(struct AVFormatContext *s, struct AVDeviceCapabilitiesQuery *caps); -} AVInputFormat; -/** - * @} - */ - -enum AVStreamParseType { - AVSTREAM_PARSE_NONE, - AVSTREAM_PARSE_FULL, /**< full parsing and repack */ - AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ - AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */ - AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */ - AVSTREAM_PARSE_FULL_RAW=MKTAG(0,'R','A','W'), /**< full parsing and repack with timestamp and position generation by parser for raw - this assumes that each packet in the file contains no demuxer level headers and - just codec level data, otherwise position generation would fail */ -}; - -typedef struct AVIndexEntry { - int64_t pos; - int64_t timestamp; /**< - * Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available - * when seeking to this entry. That means preferable PTS on keyframe based formats. - * But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better - * is known - */ -#define AVINDEX_KEYFRAME 0x0001 - int flags:2; - int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment). - int min_distance; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */ -} AVIndexEntry; - -#define AV_DISPOSITION_DEFAULT 0x0001 -#define AV_DISPOSITION_DUB 0x0002 -#define AV_DISPOSITION_ORIGINAL 0x0004 -#define AV_DISPOSITION_COMMENT 0x0008 -#define AV_DISPOSITION_LYRICS 0x0010 -#define AV_DISPOSITION_KARAOKE 0x0020 - -/** - * Track should be used during playback by default. - * Useful for subtitle track that should be displayed - * even when user did not explicitly ask for subtitles. - */ -#define AV_DISPOSITION_FORCED 0x0040 -#define AV_DISPOSITION_HEARING_IMPAIRED 0x0080 /**< stream for hearing impaired audiences */ -#define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100 /**< stream for visual impaired audiences */ -#define AV_DISPOSITION_CLEAN_EFFECTS 0x0200 /**< stream without voice */ -/** - * The stream is stored in the file as an attached picture/"cover art" (e.g. - * APIC frame in ID3v2). The single packet associated with it will be returned - * among the first few packets read from the file unless seeking takes place. - * It can also be accessed at any time in AVStream.attached_pic. - */ -#define AV_DISPOSITION_ATTACHED_PIC 0x0400 - -typedef struct AVStreamInternal AVStreamInternal; - -/** - * To specify text track kind (different from subtitles default). - */ -#define AV_DISPOSITION_CAPTIONS 0x10000 -#define AV_DISPOSITION_DESCRIPTIONS 0x20000 -#define AV_DISPOSITION_METADATA 0x40000 - -/** - * Options for behavior on timestamp wrap detection. - */ -#define AV_PTS_WRAP_IGNORE 0 ///< ignore the wrap -#define AV_PTS_WRAP_ADD_OFFSET 1 ///< add the format specific offset on wrap detection -#define AV_PTS_WRAP_SUB_OFFSET -1 ///< subtract the format specific offset on wrap detection - -/** - * Stream structure. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVStream) must not be used outside libav*. - */ -typedef struct AVStream { - int index; /**< stream index in AVFormatContext */ - /** - * Format-specific stream ID. - * decoding: set by libavformat - * encoding: set by the user, replaced by libavformat if left unset - */ - int id; - /** - * Codec context associated with this stream. Allocated and freed by - * libavformat. - * - * - decoding: The demuxer exports codec information stored in the headers - * here. - * - encoding: The user sets codec information, the muxer writes it to the - * output. Mandatory fields as specified in AVCodecContext - * documentation must be set even if this AVCodecContext is - * not actually used for encoding. - */ - AVCodecContext *codec; - void *priv_data; - -#if FF_API_LAVF_FRAC - /** - * @deprecated this field is unused - */ - attribute_deprecated - struct AVFrac pts; -#endif - - /** - * This is the fundamental unit of time (in seconds) in terms - * of which frame timestamps are represented. - * - * decoding: set by libavformat - * encoding: May be set by the caller before avformat_write_header() to - * provide a hint to the muxer about the desired timebase. In - * avformat_write_header(), the muxer will overwrite this field - * with the timebase that will actually be used for the timestamps - * written into the file (which may or may not be related to the - * user-provided one, depending on the format). - */ - AVRational time_base; - - /** - * Decoding: pts of the first frame of the stream in presentation order, in stream time base. - * Only set this if you are absolutely 100% sure that the value you set - * it to really is the pts of the first frame. - * This may be undefined (AV_NOPTS_VALUE). - * @note The ASF header does NOT contain a correct start_time the ASF - * demuxer must NOT set this. - */ - int64_t start_time; - - /** - * Decoding: duration of the stream, in stream time base. - * If a source file does not specify a duration, but does specify - * a bitrate, this value will be estimated from bitrate and file size. - */ - int64_t duration; - - int64_t nb_frames; ///< number of frames in this stream if known or 0 - - int disposition; /**< AV_DISPOSITION_* bit field */ - - enum AVDiscard discard; ///< Selects which packets can be discarded at will and do not need to be demuxed. - - /** - * sample aspect ratio (0 if unknown) - * - encoding: Set by user. - * - decoding: Set by libavformat. - */ - AVRational sample_aspect_ratio; - - AVDictionary *metadata; - - /** - * Average framerate - * - * - demuxing: May be set by libavformat when creating the stream or in - * avformat_find_stream_info(). - * - muxing: May be set by the caller before avformat_write_header(). - */ - AVRational avg_frame_rate; - - /** - * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet - * will contain the attached picture. - * - * decoding: set by libavformat, must not be modified by the caller. - * encoding: unused - */ - AVPacket attached_pic; - - /** - * An array of side data that applies to the whole stream (i.e. the - * container does not allow it to change between packets). - * - * There may be no overlap between the side data in this array and side data - * in the packets. I.e. a given side data is either exported by the muxer - * (demuxing) / set by the caller (muxing) in this array, then it never - * appears in the packets, or the side data is exported / sent through - * the packets (always in the first packet where the value becomes known or - * changes), then it does not appear in this array. - * - * - demuxing: Set by libavformat when the stream is created. - * - muxing: May be set by the caller before avformat_write_header(). - * - * Freed by libavformat in avformat_free_context(). - * - * @see av_format_inject_global_side_data() - */ - AVPacketSideData *side_data; - /** - * The number of elements in the AVStream.side_data array. - */ - int nb_side_data; - - /** - * Flags for the user to detect events happening on the stream. Flags must - * be cleared by the user once the event has been handled. - * A combination of AVSTREAM_EVENT_FLAG_*. - */ - int event_flags; -#define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata. - - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - - /** - * Stream information used internally by av_find_stream_info() - */ -#define MAX_STD_TIMEBASES (30*12+30+3+6) - struct { - int64_t last_dts; - int64_t duration_gcd; - int duration_count; - int64_t rfps_duration_sum; - double (*duration_error)[2][MAX_STD_TIMEBASES]; - int64_t codec_info_duration; - int64_t codec_info_duration_fields; - - /** - * 0 -> decoder has not been searched for yet. - * >0 -> decoder found - * <0 -> decoder with codec_id == -found_decoder has not been found - */ - int found_decoder; - - int64_t last_duration; - - /** - * Those are used for average framerate estimation. - */ - int64_t fps_first_dts; - int fps_first_dts_idx; - int64_t fps_last_dts; - int fps_last_dts_idx; - - } *info; - - int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ - - // Timestamp generation support: - /** - * Timestamp corresponding to the last dts sync point. - * - * Initialized when AVCodecParserContext.dts_sync_point >= 0 and - * a DTS is received from the underlying container. Otherwise set to - * AV_NOPTS_VALUE by default. - */ - int64_t first_dts; - int64_t cur_dts; - int64_t last_IP_pts; - int last_IP_duration; - - /** - * Number of packets to buffer for codec probing - */ - int probe_packets; - - /** - * Number of frames that have been demuxed during av_find_stream_info() - */ - int codec_info_nb_frames; - - /* av_read_frame() support */ - enum AVStreamParseType need_parsing; - struct AVCodecParserContext *parser; - - /** - * last packet in packet_buffer for this stream when muxing. - */ - struct AVPacketList *last_in_packet_buffer; - AVProbeData probe_data; -#define MAX_REORDER_DELAY 16 - int64_t pts_buffer[MAX_REORDER_DELAY+1]; - - AVIndexEntry *index_entries; /**< Only used if the format does not - support seeking natively. */ - int nb_index_entries; - unsigned int index_entries_allocated_size; - - /** - * Real base framerate of the stream. - * This is the lowest framerate with which all timestamps can be - * represented accurately (it is the least common multiple of all - * framerates in the stream). Note, this value is just a guess! - * For example, if the time base is 1/90000 and all frames have either - * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. - * - * Code outside avformat should access this field using: - * av_stream_get/set_r_frame_rate(stream) - */ - AVRational r_frame_rate; - - /** - * Stream Identifier - * This is the MPEG-TS stream identifier +1 - * 0 means unknown - */ - int stream_identifier; - - int64_t interleaver_chunk_size; - int64_t interleaver_chunk_duration; - - /** - * stream probing state - * -1 -> probing finished - * 0 -> no probing requested - * rest -> perform probing with request_probe being the minimum score to accept. - * NOT PART OF PUBLIC API - */ - int request_probe; - /** - * Indicates that everything up to the next keyframe - * should be discarded. - */ - int skip_to_keyframe; - - /** - * Number of samples to skip at the start of the frame decoded from the next packet. - */ - int skip_samples; - - /** - * If not 0, the number of samples that should be skipped from the start of - * the stream (the samples are removed from packets with pts==0, which also - * assumes negative timestamps do not happen). - * Intended for use with formats such as mp3 with ad-hoc gapless audio - * support. - */ - int64_t start_skip_samples; - - /** - * If not 0, the first audio sample that should be discarded from the stream. - * This is broken by design (needs global sample count), but can't be - * avoided for broken by design formats such as mp3 with ad-hoc gapless - * audio support. - */ - int64_t first_discard_sample; - - /** - * The sample after last sample that is intended to be discarded after - * first_discard_sample. Works on frame boundaries only. Used to prevent - * early EOF if the gapless info is broken (considered concatenated mp3s). - */ - int64_t last_discard_sample; - - /** - * Number of internally decoded frames, used internally in libavformat, do not access - * its lifetime differs from info which is why it is not in that structure. - */ - int nb_decoded_frames; - - /** - * Timestamp offset added to timestamps before muxing - * NOT PART OF PUBLIC API - */ - int64_t mux_ts_offset; - - /** - * Internal data to check for wrapping of the time stamp - */ - int64_t pts_wrap_reference; - - /** - * Options for behavior, when a wrap is detected. - * - * Defined by AV_PTS_WRAP_ values. - * - * If correction is enabled, there are two possibilities: - * If the first time stamp is near the wrap point, the wrap offset - * will be subtracted, which will create negative time stamps. - * Otherwise the offset will be added. - */ - int pts_wrap_behavior; - - /** - * Internal data to prevent doing update_initial_durations() twice - */ - int update_initial_durations_done; - - /** - * Internal data to generate dts from pts - */ - int64_t pts_reorder_error[MAX_REORDER_DELAY+1]; - uint8_t pts_reorder_error_count[MAX_REORDER_DELAY+1]; - - /** - * Internal data to analyze DTS and detect faulty mpeg streams - */ - int64_t last_dts_for_order_check; - uint8_t dts_ordered; - uint8_t dts_misordered; - - /** - * Internal data to inject global side data - */ - int inject_global_side_data; - - /** - * String containing paris of key and values describing recommended encoder configuration. - * Paris are separated by ','. - * Keys are separated from values by '='. - */ - char *recommended_encoder_configuration; - - /** - * display aspect ratio (0 if unknown) - * - encoding: unused - * - decoding: Set by libavformat to calculate sample_aspect_ratio internally - */ - AVRational display_aspect_ratio; - - struct FFFrac *priv_pts; - - /** - * An opaque field for libavformat internal usage. - * Must not be accessed in any way by callers. - */ - AVStreamInternal *internal; -} AVStream; - -AVRational av_stream_get_r_frame_rate(const AVStream *s); -void av_stream_set_r_frame_rate(AVStream *s, AVRational r); -struct AVCodecParserContext *av_stream_get_parser(const AVStream *s); -char* av_stream_get_recommended_encoder_configuration(const AVStream *s); -void av_stream_set_recommended_encoder_configuration(AVStream *s, char *configuration); - -/** - * Returns the pts of the last muxed packet + its duration - * - * the retuned value is undefined when used with a demuxer. - */ -int64_t av_stream_get_end_pts(const AVStream *st); - -#define AV_PROGRAM_RUNNING 1 - -/** - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVProgram) must not be used outside libav*. - */ -typedef struct AVProgram { - int id; - int flags; - enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller - unsigned int *stream_index; - unsigned int nb_stream_indexes; - AVDictionary *metadata; - - int program_num; - int pmt_pid; - int pcr_pid; - - /***************************************************************** - * All fields below this line are not part of the public API. They - * may not be used outside of libavformat and can be changed and - * removed at will. - * New public fields should be added right above. - ***************************************************************** - */ - int64_t start_time; - int64_t end_time; - - int64_t pts_wrap_reference; ///< reference dts for wrap detection - int pts_wrap_behavior; ///< behavior on wrap detection -} AVProgram; - -#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present - (streams are added dynamically) */ - -typedef struct AVChapter { - int id; ///< unique ID to identify the chapter - AVRational time_base; ///< time base in which the start/end timestamps are specified - int64_t start, end; ///< chapter start/end time in time_base units - AVDictionary *metadata; -} AVChapter; - - -/** - * Callback used by devices to communicate with application. - */ -typedef int (*av_format_control_message)(struct AVFormatContext *s, int type, - void *data, size_t data_size); - -typedef int (*AVOpenCallback)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags, - const AVIOInterruptCB *int_cb, AVDictionary **options); - -/** - * The duration of a video can be estimated through various ways, and this enum can be used - * to know how the duration was estimated. - */ -enum AVDurationEstimationMethod { - AVFMT_DURATION_FROM_PTS, ///< Duration accurately estimated from PTSes - AVFMT_DURATION_FROM_STREAM, ///< Duration estimated from a stream with a known duration - AVFMT_DURATION_FROM_BITRATE ///< Duration estimated from bitrate (less accurate) -}; - -typedef struct AVFormatInternal AVFormatInternal; - -/** - * Format I/O context. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVFormatContext) must not be used outside libav*, use - * avformat_alloc_context() to create an AVFormatContext. - */ -typedef struct AVFormatContext { - /** - * A class for logging and @ref avoptions. Set by avformat_alloc_context(). - * Exports (de)muxer private options if they exist. - */ - const AVClass *av_class; - - /** - * The input container format. - * - * Demuxing only, set by avformat_open_input(). - */ - struct AVInputFormat *iformat; - - /** - * The output container format. - * - * Muxing only, must be set by the caller before avformat_write_header(). - */ - struct AVOutputFormat *oformat; - - /** - * Format private data. This is an AVOptions-enabled struct - * if and only if iformat/oformat.priv_class is not NULL. - * - * - muxing: set by avformat_write_header() - * - demuxing: set by avformat_open_input() - */ - void *priv_data; - - /** - * I/O context. - * - * - demuxing: either set by the user before avformat_open_input() (then - * the user must close it manually) or set by avformat_open_input(). - * - muxing: set by the user before avformat_write_header(). The caller must - * take care of closing / freeing the IO context. - * - * Do NOT set this field if AVFMT_NOFILE flag is set in - * iformat/oformat.flags. In such a case, the (de)muxer will handle - * I/O in some other way and this field will be NULL. - */ - AVIOContext *pb; - - /* stream info */ - /** - * Flags signalling stream properties. A combination of AVFMTCTX_*. - * Set by libavformat. - */ - int ctx_flags; - - /** - * Number of elements in AVFormatContext.streams. - * - * Set by avformat_new_stream(), must not be modified by any other code. - */ - unsigned int nb_streams; - /** - * A list of all streams in the file. New streams are created with - * avformat_new_stream(). - * - * - demuxing: streams are created by libavformat in avformat_open_input(). - * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also - * appear in av_read_frame(). - * - muxing: streams are created by the user before avformat_write_header(). - * - * Freed by libavformat in avformat_free_context(). - */ - AVStream **streams; - - /** - * input or output filename - * - * - demuxing: set by avformat_open_input() - * - muxing: may be set by the caller before avformat_write_header() - */ - char filename[1024]; - - /** - * Position of the first frame of the component, in - * AV_TIME_BASE fractional seconds. NEVER set this value directly: - * It is deduced from the AVStream values. - * - * Demuxing only, set by libavformat. - */ - int64_t start_time; - - /** - * Duration of the stream, in AV_TIME_BASE fractional - * seconds. Only set this value if you know none of the individual stream - * durations and also do not set any of them. This is deduced from the - * AVStream values if not set. - * - * Demuxing only, set by libavformat. - */ - int64_t duration; - - /** - * Total stream bitrate in bit/s, 0 if not - * available. Never set it directly if the file_size and the - * duration are known as FFmpeg can compute it automatically. - */ - int64_t bit_rate; - - unsigned int packet_size; - int max_delay; - - /** - * Flags modifying the (de)muxer behaviour. A combination of AVFMT_FLAG_*. - * Set by the user before avformat_open_input() / avformat_write_header(). - */ - int flags; -#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames. -#define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. -#define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input. -#define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS -#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container -#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled -#define AVFMT_FLAG_NOBUFFER 0x0040 ///< Do not buffer frames when possible -#define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it. -#define AVFMT_FLAG_DISCARD_CORRUPT 0x0100 ///< Discard frames marked corrupted -#define AVFMT_FLAG_FLUSH_PACKETS 0x0200 ///< Flush the AVIOContext every packet. -/** - * When muxing, try to avoid writing any random/volatile data to the output. - * This includes any random IDs, real-time timestamps/dates, muxer version, etc. - * - * This flag is mainly intended for testing. - */ -#define AVFMT_FLAG_BITEXACT 0x0400 -#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Enable RTP MP4A-LATM payload -#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) -#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted) -#define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Don't merge side data but keep it separate. -#define AVFMT_FLAG_FAST_SEEK 0x80000 ///< Enable fast, but inaccurate seeks for some formats - - /** - * Maximum size of the data read from input for determining - * the input container format. - * Demuxing only, set by the caller before avformat_open_input(). - */ - int64_t probesize; - - /** - * Maximum duration (in AV_TIME_BASE units) of the data read - * from input in avformat_find_stream_info(). - * Demuxing only, set by the caller before avformat_find_stream_info(). - * Can be set to 0 to let avformat choose using a heuristic. - */ - int64_t max_analyze_duration; - - const uint8_t *key; - int keylen; - - unsigned int nb_programs; - AVProgram **programs; - - /** - * Forced video codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID video_codec_id; - - /** - * Forced audio codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID audio_codec_id; - - /** - * Forced subtitle codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID subtitle_codec_id; - - /** - * Maximum amount of memory in bytes to use for the index of each stream. - * If the index exceeds this size, entries will be discarded as - * needed to maintain a smaller size. This can lead to slower or less - * accurate seeking (depends on demuxer). - * Demuxers for which a full in-memory index is mandatory will ignore - * this. - * - muxing: unused - * - demuxing: set by user - */ - unsigned int max_index_size; - - /** - * Maximum amount of memory in bytes to use for buffering frames - * obtained from realtime capture devices. - */ - unsigned int max_picture_buffer; - - /** - * Number of chapters in AVChapter array. - * When muxing, chapters are normally written in the file header, - * so nb_chapters should normally be initialized before write_header - * is called. Some muxers (e.g. mov and mkv) can also write chapters - * in the trailer. To write chapters in the trailer, nb_chapters - * must be zero when write_header is called and non-zero when - * write_trailer is called. - * - muxing: set by user - * - demuxing: set by libavformat - */ - unsigned int nb_chapters; - AVChapter **chapters; - - /** - * Metadata that applies to the whole file. - * - * - demuxing: set by libavformat in avformat_open_input() - * - muxing: may be set by the caller before avformat_write_header() - * - * Freed by libavformat in avformat_free_context(). - */ - AVDictionary *metadata; - - /** - * Start time of the stream in real world time, in microseconds - * since the Unix epoch (00:00 1st January 1970). That is, pts=0 in the - * stream was captured at this real world time. - * - muxing: Set by the caller before avformat_write_header(). If set to - * either 0 or AV_NOPTS_VALUE, then the current wall-time will - * be used. - * - demuxing: Set by libavformat. AV_NOPTS_VALUE if unknown. Note that - * the value may become known after some number of frames - * have been received. - */ - int64_t start_time_realtime; - - /** - * The number of frames used for determining the framerate in - * avformat_find_stream_info(). - * Demuxing only, set by the caller before avformat_find_stream_info(). - */ - int fps_probe_size; - - /** - * Error recognition; higher values will detect more errors but may - * misdetect some more or less valid parts as errors. - * Demuxing only, set by the caller before avformat_open_input(). - */ - int error_recognition; - - /** - * Custom interrupt callbacks for the I/O layer. - * - * demuxing: set by the user before avformat_open_input(). - * muxing: set by the user before avformat_write_header() - * (mainly useful for AVFMT_NOFILE formats). The callback - * should also be passed to avio_open2() if it's used to - * open the file. - */ - AVIOInterruptCB interrupt_callback; - - /** - * Flags to enable debugging. - */ - int debug; -#define FF_FDEBUG_TS 0x0001 - - /** - * Maximum buffering duration for interleaving. - * - * To ensure all the streams are interleaved correctly, - * av_interleaved_write_frame() will wait until it has at least one packet - * for each stream before actually writing any packets to the output file. - * When some streams are "sparse" (i.e. there are large gaps between - * successive packets), this can result in excessive buffering. - * - * This field specifies the maximum difference between the timestamps of the - * first and the last packet in the muxing queue, above which libavformat - * will output a packet regardless of whether it has queued a packet for all - * the streams. - * - * Muxing only, set by the caller before avformat_write_header(). - */ - int64_t max_interleave_delta; - - /** - * Allow non-standard and experimental extension - * @see AVCodecContext.strict_std_compliance - */ - int strict_std_compliance; - - /** - * Flags for the user to detect events happening on the file. Flags must - * be cleared by the user once the event has been handled. - * A combination of AVFMT_EVENT_FLAG_*. - */ - int event_flags; -#define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata. - - /** - * Maximum number of packets to read while waiting for the first timestamp. - * Decoding only. - */ - int max_ts_probe; - - /** - * Avoid negative timestamps during muxing. - * Any value of the AVFMT_AVOID_NEG_TS_* constants. - * Note, this only works when using av_interleaved_write_frame. (interleave_packet_per_dts is in use) - * - muxing: Set by user - * - demuxing: unused - */ - int avoid_negative_ts; -#define AVFMT_AVOID_NEG_TS_AUTO -1 ///< Enabled when required by target format -#define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1 ///< Shift timestamps so they are non negative -#define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2 ///< Shift timestamps so that they start at 0 - - /** - * Transport stream id. - * This will be moved into demuxer private options. Thus no API/ABI compatibility - */ - int ts_id; - - /** - * Audio preload in microseconds. - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int audio_preload; - - /** - * Max chunk time in microseconds. - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int max_chunk_duration; - - /** - * Max chunk size in bytes - * Note, not all formats support this and unpredictable things may happen if it is used when not supported. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int max_chunk_size; - - /** - * forces the use of wallclock timestamps as pts/dts of packets - * This has undefined results in the presence of B frames. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int use_wallclock_as_timestamps; - - /** - * avio flags, used to force AVIO_FLAG_DIRECT. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int avio_flags; - - /** - * The duration field can be estimated through various ways, and this field can be used - * to know how the duration was estimated. - * - encoding: unused - * - decoding: Read by user via AVOptions (NO direct access) - */ - enum AVDurationEstimationMethod duration_estimation_method; - - /** - * Skip initial bytes when opening stream - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int64_t skip_initial_bytes; - - /** - * Correct single timestamp overflows - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - unsigned int correct_ts_overflow; - - /** - * Force seeking to any (also non key) frames. - * - encoding: unused - * - decoding: Set by user via AVOptions (NO direct access) - */ - int seek2any; - - /** - * Flush the I/O context after each packet. - * - encoding: Set by user via AVOptions (NO direct access) - * - decoding: unused - */ - int flush_packets; - - /** - * format probing score. - * The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes - * the format. - * - encoding: unused - * - decoding: set by avformat, read by user via av_format_get_probe_score() (NO direct access) - */ - int probe_score; - - /** - * number of bytes to read maximally to identify format. - * - encoding: unused - * - decoding: set by user through AVOPtions (NO direct access) - */ - int format_probesize; - - /** - * ',' separated list of allowed decoders. - * If NULL then all are allowed - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - char *codec_whitelist; - - /** - * ',' separated list of allowed demuxers. - * If NULL then all are allowed - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - char *format_whitelist; - - /** - * An opaque field for libavformat internal usage. - * Must not be accessed in any way by callers. - */ - AVFormatInternal *internal; - - /** - * IO repositioned flag. - * This is set by avformat when the underlaying IO context read pointer - * is repositioned, for example when doing byte based seeking. - * Demuxers can use the flag to detect such changes. - */ - int io_repositioned; - - /** - * Forced video codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_video_codec (NO direct access). - */ - AVCodec *video_codec; - - /** - * Forced audio codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_audio_codec (NO direct access). - */ - AVCodec *audio_codec; - - /** - * Forced subtitle codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_subtitle_codec (NO direct access). - */ - AVCodec *subtitle_codec; - - /** - * Forced data codec. - * This allows forcing a specific decoder, even when there are multiple with - * the same codec_id. - * Demuxing: Set by user via av_format_set_data_codec (NO direct access). - */ - AVCodec *data_codec; - - /** - * Number of bytes to be written as padding in a metadata header. - * Demuxing: Unused. - * Muxing: Set by user via av_format_set_metadata_header_padding. - */ - int metadata_header_padding; - - /** - * User data. - * This is a place for some private data of the user. - */ - void *opaque; - - /** - * Callback used by devices to communicate with application. - */ - av_format_control_message control_message_cb; - - /** - * Output timestamp offset, in microseconds. - * Muxing: set by user via AVOptions (NO direct access) - */ - int64_t output_ts_offset; - - /** - * dump format separator. - * can be ", " or "\n " or anything else - * Code outside libavformat should access this field using AVOptions - * (NO direct access). - * - muxing: Set by user. - * - demuxing: Set by user. - */ - uint8_t *dump_separator; - - /** - * Forced Data codec_id. - * Demuxing: Set by user. - */ - enum AVCodecID data_codec_id; - -#if FF_API_OLD_OPEN_CALLBACKS - /** - * Called to open further IO contexts when needed for demuxing. - * - * This can be set by the user application to perform security checks on - * the URLs before opening them. - * The function should behave like avio_open2(), AVFormatContext is provided - * as contextual information and to reach AVFormatContext.opaque. - * - * If NULL then some simple checks are used together with avio_open2(). - * - * Must not be accessed directly from outside avformat. - * @See av_format_set_open_cb() - * - * Demuxing: Set by user. - * - * @deprecated Use io_open and io_close. - */ - attribute_deprecated - int (*open_cb)(struct AVFormatContext *s, AVIOContext **p, const char *url, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options); -#endif - - /** - * ',' separated list of allowed protocols. - * - encoding: unused - * - decoding: set by user through AVOptions (NO direct access) - */ - char *protocol_whitelist; - - /* - * A callback for opening new IO streams. - * - * Certain muxers or demuxers (e.g. for various playlist-based formats) need - * to open additional files during muxing or demuxing. This callback allows - * the caller to provide custom IO in such cases. - * - * @param s the format context - * @param pb on success, the newly opened IO context should be returned here - * @param url the url to open - * @param flags a combination of AVIO_FLAG_* - * @param options a dictionary of additional options, with the same - * semantics as in avio_open2() - * @return 0 on success, a negative AVERROR code on failure - * - * @note Certain muxers and demuxers do nesting, i.e. they open one or more - * additional internal format contexts. Thus the AVFormatContext pointer - * passed to this callback may be different from the one facing the caller. - * It will, however, have the same 'opaque' field. - */ - int (*io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url, - int flags, AVDictionary **options); - - /** - * A callback for closing the streams opened with AVFormatContext.io_open(). - */ - void (*io_close)(struct AVFormatContext *s, AVIOContext *pb); -} AVFormatContext; - -int av_format_get_probe_score(const AVFormatContext *s); -AVCodec * av_format_get_video_codec(const AVFormatContext *s); -void av_format_set_video_codec(AVFormatContext *s, AVCodec *c); -AVCodec * av_format_get_audio_codec(const AVFormatContext *s); -void av_format_set_audio_codec(AVFormatContext *s, AVCodec *c); -AVCodec * av_format_get_subtitle_codec(const AVFormatContext *s); -void av_format_set_subtitle_codec(AVFormatContext *s, AVCodec *c); -AVCodec * av_format_get_data_codec(const AVFormatContext *s); -void av_format_set_data_codec(AVFormatContext *s, AVCodec *c); -int av_format_get_metadata_header_padding(const AVFormatContext *s); -void av_format_set_metadata_header_padding(AVFormatContext *s, int c); -void * av_format_get_opaque(const AVFormatContext *s); -void av_format_set_opaque(AVFormatContext *s, void *opaque); -av_format_control_message av_format_get_control_message_cb(const AVFormatContext *s); -void av_format_set_control_message_cb(AVFormatContext *s, av_format_control_message callback); -#if FF_API_OLD_OPEN_CALLBACKS -attribute_deprecated AVOpenCallback av_format_get_open_cb(const AVFormatContext *s); -attribute_deprecated void av_format_set_open_cb(AVFormatContext *s, AVOpenCallback callback); -#endif - -/** - * This function will cause global side data to be injected in the next packet - * of each stream as well as after any subsequent seek. - */ -void av_format_inject_global_side_data(AVFormatContext *s); - -/** - * Returns the method used to set ctx->duration. - * - * @return AVFMT_DURATION_FROM_PTS, AVFMT_DURATION_FROM_STREAM, or AVFMT_DURATION_FROM_BITRATE. - */ -enum AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method(const AVFormatContext* ctx); - -typedef struct AVPacketList { - AVPacket pkt; - struct AVPacketList *next; -} AVPacketList; - - -/** - * @defgroup lavf_core Core functions - * @ingroup libavf - * - * Functions for querying libavformat capabilities, allocating core structures, - * etc. - * @{ - */ - -/** - * Return the LIBAVFORMAT_VERSION_INT constant. - */ -unsigned avformat_version(void); - -/** - * Return the libavformat build-time configuration. - */ -const char *avformat_configuration(void); - -/** - * Return the libavformat license. - */ -const char *avformat_license(void); - -/** - * Initialize libavformat and register all the muxers, demuxers and - * protocols. If you do not call this function, then you can select - * exactly which formats you want to support. - * - * @see av_register_input_format() - * @see av_register_output_format() - */ -void av_register_all(void); - -void av_register_input_format(AVInputFormat *format); -void av_register_output_format(AVOutputFormat *format); - -/** - * Do global initialization of network components. This is optional, - * but recommended, since it avoids the overhead of implicitly - * doing the setup for each session. - * - * Calling this function will become mandatory if using network - * protocols at some major version bump. - */ -int avformat_network_init(void); - -/** - * Undo the initialization done by avformat_network_init. - */ -int avformat_network_deinit(void); - -/** - * If f is NULL, returns the first registered input format, - * if f is non-NULL, returns the next registered input format after f - * or NULL if f is the last one. - */ -AVInputFormat *av_iformat_next(const AVInputFormat *f); - -/** - * If f is NULL, returns the first registered output format, - * if f is non-NULL, returns the next registered output format after f - * or NULL if f is the last one. - */ -AVOutputFormat *av_oformat_next(const AVOutputFormat *f); - -/** - * Allocate an AVFormatContext. - * avformat_free_context() can be used to free the context and everything - * allocated by the framework within it. - */ -AVFormatContext *avformat_alloc_context(void); - -/** - * Free an AVFormatContext and all its streams. - * @param s context to free - */ -void avformat_free_context(AVFormatContext *s); - -/** - * Get the AVClass for AVFormatContext. It can be used in combination with - * AV_OPT_SEARCH_FAKE_OBJ for examining options. - * - * @see av_opt_find(). - */ -const AVClass *avformat_get_class(void); - -/** - * Add a new stream to a media file. - * - * When demuxing, it is called by the demuxer in read_header(). If the - * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also - * be called in read_packet(). - * - * When muxing, should be called by the user before avformat_write_header(). - * - * User is required to call avcodec_close() and avformat_free_context() to - * clean up the allocation by avformat_new_stream(). - * - * @param s media file handle - * @param c If non-NULL, the AVCodecContext corresponding to the new stream - * will be initialized to use this codec. This is needed for e.g. codec-specific - * defaults to be set, so codec should be provided if it is known. - * - * @return newly created stream or NULL on error. - */ -AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c); - -/** - * Allocate new information from stream. - * - * @param stream stream - * @param type desired side information type - * @param size side information size - * @return pointer to fresh allocated data or NULL otherwise - */ -uint8_t *av_stream_new_side_data(AVStream *stream, - enum AVPacketSideDataType type, int size); -/** - * Get side information from stream. - * - * @param stream stream - * @param type desired side information type - * @param size pointer for side information size to store (optional) - * @return pointer to data if present or NULL otherwise - */ -uint8_t *av_stream_get_side_data(AVStream *stream, - enum AVPacketSideDataType type, int *size); - -AVProgram *av_new_program(AVFormatContext *s, int id); - -/** - * @} - */ - - -/** - * Allocate an AVFormatContext for an output format. - * avformat_free_context() can be used to free the context and - * everything allocated by the framework within it. - * - * @param *ctx is set to the created format context, or to NULL in - * case of failure - * @param oformat format to use for allocating the context, if NULL - * format_name and filename are used instead - * @param format_name the name of output format to use for allocating the - * context, if NULL filename is used instead - * @param filename the name of the filename to use for allocating the - * context, may be NULL - * @return >= 0 in case of success, a negative AVERROR code in case of - * failure - */ -int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat, - const char *format_name, const char *filename); - -/** - * @addtogroup lavf_decoding - * @{ - */ - -/** - * Find AVInputFormat based on the short name of the input format. - */ -AVInputFormat *av_find_input_format(const char *short_name); - -/** - * Guess the file format. - * - * @param pd data to be probed - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - */ -AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened); - -/** - * Guess the file format. - * - * @param pd data to be probed - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - * @param score_max A probe score larger that this is required to accept a - * detection, the variable is set to the actual detection - * score afterwards. - * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended - * to retry with a larger probe buffer. - */ -AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max); - -/** - * Guess the file format. - * - * @param is_opened Whether the file is already opened; determines whether - * demuxers with or without AVFMT_NOFILE are probed. - * @param score_ret The score of the best detection. - */ -AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score_ret); - -/** - * Probe a bytestream to determine the input format. Each time a probe returns - * with a score that is too low, the probe buffer size is increased and another - * attempt is made. When the maximum probe size is reached, the input format - * with the highest score is returned. - * - * @param pb the bytestream to probe - * @param fmt the input format is put here - * @param url the url of the stream - * @param logctx the log context - * @param offset the offset within the bytestream to probe from - * @param max_probe_size the maximum probe buffer size (zero for default) - * @return the score in case of success, a negative value corresponding to an - * the maximal score is AVPROBE_SCORE_MAX - * AVERROR code otherwise - */ -int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt, - const char *url, void *logctx, - unsigned int offset, unsigned int max_probe_size); - -/** - * Like av_probe_input_buffer2() but returns 0 on success - */ -int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, - const char *url, void *logctx, - unsigned int offset, unsigned int max_probe_size); - -/** - * Open an input stream and read the header. The codecs are not opened. - * The stream must be closed with avformat_close_input(). - * - * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). - * May be a pointer to NULL, in which case an AVFormatContext is allocated by this - * function and written into ps. - * Note that a user-supplied AVFormatContext will be freed on failure. - * @param url URL of the stream to open. - * @param fmt If non-NULL, this parameter forces a specific input format. - * Otherwise the format is autodetected. - * @param options A dictionary filled with AVFormatContext and demuxer-private options. - * On return this parameter will be destroyed and replaced with a dict containing - * options that were not found. May be NULL. - * - * @return 0 on success, a negative AVERROR on failure. - * - * @note If you want to use custom IO, preallocate the format context and set its pb field. - */ -int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); - -attribute_deprecated -int av_demuxer_open(AVFormatContext *ic); - -/** - * Read packets of a media file to get stream information. This - * is useful for file formats with no headers such as MPEG. This - * function also computes the real framerate in case of MPEG-2 repeat - * frame mode. - * The logical file position is not changed by this function; - * examined packets may be buffered for later processing. - * - * @param ic media file handle - * @param options If non-NULL, an ic.nb_streams long array of pointers to - * dictionaries, where i-th member contains options for - * codec corresponding to i-th stream. - * On return each dictionary will be filled with options that were not found. - * @return >=0 if OK, AVERROR_xxx on error - * - * @note this function isn't guaranteed to open all the codecs, so - * options being non-empty at return is a perfectly normal behavior. - * - * @todo Let the user decide somehow what information is needed so that - * we do not waste time getting stuff the user does not need. - */ -int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options); - -/** - * Find the programs which belong to a given stream. - * - * @param ic media file handle - * @param last the last found program, the search will start after this - * program, or from the beginning if it is NULL - * @param s stream index - * @return the next program which belongs to s, NULL if no program is found or - * the last program is not among the programs of ic. - */ -AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s); - -void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int idx); - -/** - * Find the "best" stream in the file. - * The best stream is determined according to various heuristics as the most - * likely to be what the user expects. - * If the decoder parameter is non-NULL, av_find_best_stream will find the - * default decoder for the stream's codec; streams for which no decoder can - * be found are ignored. - * - * @param ic media file handle - * @param type stream type: video, audio, subtitles, etc. - * @param wanted_stream_nb user-requested stream number, - * or -1 for automatic selection - * @param related_stream try to find a stream related (eg. in the same - * program) to this one, or -1 if none - * @param decoder_ret if non-NULL, returns the decoder for the - * selected stream - * @param flags flags; none are currently defined - * @return the non-negative stream number in case of success, - * AVERROR_STREAM_NOT_FOUND if no stream with the requested type - * could be found, - * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder - * @note If av_find_best_stream returns successfully and decoder_ret is not - * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. - */ -int av_find_best_stream(AVFormatContext *ic, - enum AVMediaType type, - int wanted_stream_nb, - int related_stream, - AVCodec **decoder_ret, - int flags); - -/** - * Return the next frame of a stream. - * This function returns what is stored in the file, and does not validate - * that what is there are valid frames for the decoder. It will split what is - * stored in the file into frames and return one for each call. It will not - * omit invalid data between valid frames so as to give the decoder the maximum - * information possible for decoding. - * - * If pkt->buf is NULL, then the packet is valid until the next - * av_read_frame() or until avformat_close_input(). Otherwise the packet - * is valid indefinitely. In both cases the packet must be freed with - * av_packet_unref when it is no longer needed. For video, the packet contains - * exactly one frame. For audio, it contains an integer number of frames if each - * frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames - * have a variable size (e.g. MPEG audio), then it contains one frame. - * - * pkt->pts, pkt->dts and pkt->duration are always set to correct - * values in AVStream.time_base units (and guessed if the format cannot - * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format - * has B-frames, so it is better to rely on pkt->dts if you do not - * decompress the payload. - * - * @return 0 if OK, < 0 on error or end of file - */ -int av_read_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Seek to the keyframe at timestamp. - * 'timestamp' in 'stream_index'. - * - * @param s media file handle - * @param stream_index If stream_index is (-1), a default - * stream is selected, and timestamp is automatically converted - * from AV_TIME_BASE units to the stream specific time_base. - * @param timestamp Timestamp in AVStream.time_base units - * or, if no stream is specified, in AV_TIME_BASE units. - * @param flags flags which select direction and seeking mode - * @return >= 0 on success - */ -int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, - int flags); - -/** - * Seek to timestamp ts. - * Seeking will be done so that the point from which all active streams - * can be presented successfully will be closest to ts and within min/max_ts. - * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. - * - * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and - * are the file position (this may not be supported by all demuxers). - * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames - * in the stream with stream_index (this may not be supported by all demuxers). - * Otherwise all timestamps are in units of the stream selected by stream_index - * or if stream_index is -1, in AV_TIME_BASE units. - * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as - * keyframes (this may not be supported by all demuxers). - * If flags contain AVSEEK_FLAG_BACKWARD, it is ignored. - * - * @param s media file handle - * @param stream_index index of the stream which is used as time base reference - * @param min_ts smallest acceptable timestamp - * @param ts target timestamp - * @param max_ts largest acceptable timestamp - * @param flags flags - * @return >=0 on success, error code otherwise - * - * @note This is part of the new seek API which is still under construction. - * Thus do not use this yet. It may change at any time, do not expect - * ABI compatibility yet! - */ -int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); - -/** - * Discard all internally buffered data. This can be useful when dealing with - * discontinuities in the byte stream. Generally works only with formats that - * can resync. This includes headerless formats like MPEG-TS/TS but should also - * work with NUT, Ogg and in a limited way AVI for example. - * - * The set of streams, the detected duration, stream parameters and codecs do - * not change when calling this function. If you want a complete reset, it's - * better to open a new AVFormatContext. - * - * This does not flush the AVIOContext (s->pb). If necessary, call - * avio_flush(s->pb) before calling this function. - * - * @param s media file handle - * @return >=0 on success, error code otherwise - */ -int avformat_flush(AVFormatContext *s); - -/** - * Start playing a network-based stream (e.g. RTSP stream) at the - * current position. - */ -int av_read_play(AVFormatContext *s); - -/** - * Pause a network-based stream (e.g. RTSP stream). - * - * Use av_read_play() to resume it. - */ -int av_read_pause(AVFormatContext *s); - -/** - * Close an opened input AVFormatContext. Free it and all its contents - * and set *s to NULL. - */ -void avformat_close_input(AVFormatContext **s); -/** - * @} - */ - -#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward -#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes -#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes -#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number - -/** - * @addtogroup lavf_encoding - * @{ - */ -/** - * Allocate the stream private data and write the stream header to - * an output media file. - * - * @param s Media file handle, must be allocated with avformat_alloc_context(). - * Its oformat field must be set to the desired output format; - * Its pb field must be set to an already opened AVIOContext. - * @param options An AVDictionary filled with AVFormatContext and muxer-private options. - * On return this parameter will be destroyed and replaced with a dict containing - * options that were not found. May be NULL. - * - * @return 0 on success, negative AVERROR on failure. - * - * @see av_opt_find, av_dict_set, avio_open, av_oformat_next. - */ -av_warn_unused_result -int avformat_write_header(AVFormatContext *s, AVDictionary **options); - -/** - * Write a packet to an output media file. - * - * This function passes the packet directly to the muxer, without any buffering - * or reordering. The caller is responsible for correctly interleaving the - * packets if the format requires it. Callers that want libavformat to handle - * the interleaving should call av_interleaved_write_frame() instead of this - * function. - * - * @param s media file handle - * @param pkt The packet containing the data to be written. Note that unlike - * av_interleaved_write_frame(), this function does not take - * ownership of the packet passed to it (though some muxers may make - * an internal reference to the input packet). - *
- * This parameter can be NULL (at any time, not just at the end), in - * order to immediately flush data buffered within the muxer, for - * muxers that buffer up data internally before writing it to the - * output. - *
- * Packet's @ref AVPacket.stream_index "stream_index" field must be - * set to the index of the corresponding stream in @ref - * AVFormatContext.streams "s->streams". - *
- * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts") - * must be set to correct values in the stream's timebase (unless the - * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then - * they can be set to AV_NOPTS_VALUE). - * The dts for subsequent packets passed to this function must be strictly - * increasing when compared in their respective timebases (unless the - * output format is flagged with the AVFMT_TS_NONSTRICT, then they - * merely have to be nondecreasing). @ref AVPacket.duration - * "duration") should also be set if known. - * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush - * - * @see av_interleaved_write_frame() - */ -int av_write_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Write a packet to an output media file ensuring correct interleaving. - * - * This function will buffer the packets internally as needed to make sure the - * packets in the output file are properly interleaved in the order of - * increasing dts. Callers doing their own interleaving should call - * av_write_frame() instead of this function. - * - * @param s media file handle - * @param pkt The packet containing the data to be written. - *
- * If the packet is reference-counted, this function will take - * ownership of this reference and unreference it later when it sees - * fit. - * The caller must not access the data through this reference after - * this function returns. If the packet is not reference-counted, - * libavformat will make a copy. - *
- * This parameter can be NULL (at any time, not just at the end), to - * flush the interleaving queues. - *
- * Packet's @ref AVPacket.stream_index "stream_index" field must be - * set to the index of the corresponding stream in @ref - * AVFormatContext.streams "s->streams". - *
- * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts") - * must be set to correct values in the stream's timebase (unless the - * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then - * they can be set to AV_NOPTS_VALUE). - * The dts for subsequent packets in one stream must be strictly - * increasing (unless the output format is flagged with the - * AVFMT_TS_NONSTRICT, then they merely have to be nondecreasing). - * @ref AVPacket.duration "duration") should also be set if known. - * - * @return 0 on success, a negative AVERROR on error. Libavformat will always - * take care of freeing the packet, even if this function fails. - * - * @see av_write_frame(), AVFormatContext.max_interleave_delta - */ -int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); - -/** - * Write a uncoded frame to an output media file. - * - * The frame must be correctly interleaved according to the container - * specification; if not, then av_interleaved_write_frame() must be used. - * - * See av_interleaved_write_frame() for details. - */ -int av_write_uncoded_frame(AVFormatContext *s, int stream_index, - AVFrame *frame); - -/** - * Write a uncoded frame to an output media file. - * - * If the muxer supports it, this function makes it possible to write an AVFrame - * structure directly, without encoding it into a packet. - * It is mostly useful for devices and similar special muxers that use raw - * video or PCM data and will not serialize it into a byte stream. - * - * To test whether it is possible to use it with a given muxer and stream, - * use av_write_uncoded_frame_query(). - * - * The caller gives up ownership of the frame and must not access it - * afterwards. - * - * @return >=0 for success, a negative code on error - */ -int av_interleaved_write_uncoded_frame(AVFormatContext *s, int stream_index, - AVFrame *frame); - -/** - * Test whether a muxer supports uncoded frame. - * - * @return >=0 if an uncoded frame can be written to that muxer and stream, - * <0 if not - */ -int av_write_uncoded_frame_query(AVFormatContext *s, int stream_index); - -/** - * Write the stream trailer to an output media file and free the - * file private data. - * - * May only be called after a successful call to avformat_write_header. - * - * @param s media file handle - * @return 0 if OK, AVERROR_xxx on error - */ -int av_write_trailer(AVFormatContext *s); - -/** - * Return the output format in the list of registered output formats - * which best matches the provided parameters, or return NULL if - * there is no match. - * - * @param short_name if non-NULL checks if short_name matches with the - * names of the registered formats - * @param filename if non-NULL checks if filename terminates with the - * extensions of the registered formats - * @param mime_type if non-NULL checks if mime_type matches with the - * MIME type of the registered formats - */ -AVOutputFormat *av_guess_format(const char *short_name, - const char *filename, - const char *mime_type); - -/** - * Guess the codec ID based upon muxer and filename. - */ -enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, - const char *filename, const char *mime_type, - enum AVMediaType type); - -/** - * Get timing information for the data currently output. - * The exact meaning of "currently output" depends on the format. - * It is mostly relevant for devices that have an internal buffer and/or - * work in real time. - * @param s media file handle - * @param stream stream in the media file - * @param[out] dts DTS of the last packet output for the stream, in stream - * time_base units - * @param[out] wall absolute time when that packet whas output, - * in microsecond - * @return 0 if OK, AVERROR(ENOSYS) if the format does not support it - * Note: some formats or devices may not allow to measure dts and wall - * atomically. - */ -int av_get_output_timestamp(struct AVFormatContext *s, int stream, - int64_t *dts, int64_t *wall); - - -/** - * @} - */ - - -/** - * @defgroup lavf_misc Utility functions - * @ingroup libavf - * @{ - * - * Miscellaneous utility functions related to both muxing and demuxing - * (or neither). - */ - -/** - * Send a nice hexadecimal dump of a buffer to the specified file stream. - * - * @param f The file stream pointer where the dump should be sent to. - * @param buf buffer - * @param size buffer size - * - * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 - */ -void av_hex_dump(FILE *f, const uint8_t *buf, int size); - -/** - * Send a nice hexadecimal dump of a buffer to the log. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message, lower values signifying - * higher importance. - * @param buf buffer - * @param size buffer size - * - * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 - */ -void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size); - -/** - * Send a nice dump of a packet to the specified file stream. - * - * @param f The file stream pointer where the dump should be sent to. - * @param pkt packet to dump - * @param dump_payload True if the payload must be displayed, too. - * @param st AVStream that the packet belongs to - */ -void av_pkt_dump2(FILE *f, const AVPacket *pkt, int dump_payload, const AVStream *st); - - -/** - * Send a nice dump of a packet to the log. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message, lower values signifying - * higher importance. - * @param pkt packet to dump - * @param dump_payload True if the payload must be displayed, too. - * @param st AVStream that the packet belongs to - */ -void av_pkt_dump_log2(void *avcl, int level, const AVPacket *pkt, int dump_payload, - const AVStream *st); - -/** - * Get the AVCodecID for the given codec tag tag. - * If no codec id is found returns AV_CODEC_ID_NONE. - * - * @param tags list of supported codec_id-codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - * @param tag codec tag to match to a codec ID - */ -enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); - -/** - * Get the codec tag for the given codec id id. - * If no codec tag is found returns 0. - * - * @param tags list of supported codec_id-codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - * @param id codec ID to match to a codec tag - */ -unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id); - -/** - * Get the codec tag for the given codec id. - * - * @param tags list of supported codec_id - codec_tag pairs, as stored - * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag - * @param id codec id that should be searched for in the list - * @param tag A pointer to the found tag - * @return 0 if id was not found in tags, > 0 if it was found - */ -int av_codec_get_tag2(const struct AVCodecTag * const *tags, enum AVCodecID id, - unsigned int *tag); - -int av_find_default_stream_index(AVFormatContext *s); - -/** - * Get the index for a specific timestamp. - * - * @param st stream that the timestamp belongs to - * @param timestamp timestamp to retrieve the index for - * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond - * to the timestamp which is <= the requested one, if backward - * is 0, then it will be >= - * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise - * @return < 0 if no such timestamp could be found - */ -int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); - -/** - * Add an index entry into a sorted list. Update the entry if the list - * already contains it. - * - * @param timestamp timestamp in the time base of the given stream - */ -int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, - int size, int distance, int flags); - - -/** - * Split a URL string into components. - * - * The pointers to buffers for storing individual components may be null, - * in order to ignore that component. Buffers for components not found are - * set to empty strings. If the port is not found, it is set to a negative - * value. - * - * @param proto the buffer for the protocol - * @param proto_size the size of the proto buffer - * @param authorization the buffer for the authorization - * @param authorization_size the size of the authorization buffer - * @param hostname the buffer for the host name - * @param hostname_size the size of the hostname buffer - * @param port_ptr a pointer to store the port number in - * @param path the buffer for the path - * @param path_size the size of the path buffer - * @param url the URL to split - */ -void av_url_split(char *proto, int proto_size, - char *authorization, int authorization_size, - char *hostname, int hostname_size, - int *port_ptr, - char *path, int path_size, - const char *url); - - -/** - * Print detailed information about the input or output format, such as - * duration, bitrate, streams, container, programs, metadata, side data, - * codec and time base. - * - * @param ic the context to analyze - * @param index index of the stream to dump information about - * @param url the URL to print, such as source or destination file - * @param is_output Select whether the specified context is an input(0) or output(1) - */ -void av_dump_format(AVFormatContext *ic, - int index, - const char *url, - int is_output); - -/** - * Return in 'buf' the path with '%d' replaced by a number. - * - * Also handles the '%0nd' format where 'n' is the total number - * of digits and '%%'. - * - * @param buf destination buffer - * @param buf_size destination buffer size - * @param path numbered sequence string - * @param number frame number - * @return 0 if OK, -1 on format error - */ -int av_get_frame_filename(char *buf, int buf_size, - const char *path, int number); - -/** - * Check whether filename actually is a numbered sequence generator. - * - * @param filename possible numbered sequence string - * @return 1 if a valid numbered sequence string, 0 otherwise - */ -int av_filename_number_test(const char *filename); - -/** - * Generate an SDP for an RTP session. - * - * Note, this overwrites the id values of AVStreams in the muxer contexts - * for getting unique dynamic payload types. - * - * @param ac array of AVFormatContexts describing the RTP streams. If the - * array is composed by only one context, such context can contain - * multiple AVStreams (one AVStream per RTP stream). Otherwise, - * all the contexts in the array (an AVCodecContext per RTP stream) - * must contain only one AVStream. - * @param n_files number of AVCodecContexts contained in ac - * @param buf buffer where the SDP will be stored (must be allocated by - * the caller) - * @param size the size of the buffer - * @return 0 if OK, AVERROR_xxx on error - */ -int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size); - -/** - * Return a positive value if the given filename has one of the given - * extensions, 0 otherwise. - * - * @param filename file name to check against the given extensions - * @param extensions a comma-separated list of filename extensions - */ -int av_match_ext(const char *filename, const char *extensions); - -/** - * Test if the given container can store a codec. - * - * @param ofmt container to check for compatibility - * @param codec_id codec to potentially store in container - * @param std_compliance standards compliance level, one of FF_COMPLIANCE_* - * - * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. - * A negative number if this information is not available. - */ -int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, - int std_compliance); - -/** - * @defgroup riff_fourcc RIFF FourCCs - * @{ - * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are - * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the - * following code: - * @code - * uint32_t tag = MKTAG('H', '2', '6', '4'); - * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 }; - * enum AVCodecID id = av_codec_get_id(table, tag); - * @endcode - */ -/** - * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID. - */ -const struct AVCodecTag *avformat_get_riff_video_tags(void); -/** - * @return the table mapping RIFF FourCCs for audio to AVCodecID. - */ -const struct AVCodecTag *avformat_get_riff_audio_tags(void); -/** - * @return the table mapping MOV FourCCs for video to libavcodec AVCodecID. - */ -const struct AVCodecTag *avformat_get_mov_video_tags(void); -/** - * @return the table mapping MOV FourCCs for audio to AVCodecID. - */ -const struct AVCodecTag *avformat_get_mov_audio_tags(void); - -/** - * @} - */ - -/** - * Guess the sample aspect ratio of a frame, based on both the stream and the - * frame aspect ratio. - * - * Since the frame aspect ratio is set by the codec but the stream aspect ratio - * is set by the demuxer, these two may not be equal. This function tries to - * return the value that you should use if you would like to display the frame. - * - * Basic logic is to use the stream aspect ratio if it is set to something sane - * otherwise use the frame aspect ratio. This way a container setting, which is - * usually easy to modify can override the coded value in the frames. - * - * @param format the format context which the stream is part of - * @param stream the stream which the frame is part of - * @param frame the frame with the aspect ratio to be determined - * @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea - */ -AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame); - -/** - * Guess the frame rate, based on both the container and codec information. - * - * @param ctx the format context which the stream is part of - * @param stream the stream which the frame is part of - * @param frame the frame for which the frame rate should be determined, may be NULL - * @return the guessed (valid) frame rate, 0/1 if no idea - */ -AVRational av_guess_frame_rate(AVFormatContext *ctx, AVStream *stream, AVFrame *frame); - -/** - * Check if the stream st contained in s is matched by the stream specifier - * spec. - * - * See the "stream specifiers" chapter in the documentation for the syntax - * of spec. - * - * @return >0 if st is matched by spec; - * 0 if st is not matched by spec; - * AVERROR code if spec is invalid - * - * @note A stream specifier can match several streams in the format. - */ -int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, - const char *spec); - -int avformat_queue_attached_pictures(AVFormatContext *s); - -/** - * Apply a list of bitstream filters to a packet. - * - * @param codec AVCodecContext, usually from an AVStream - * @param pkt the packet to apply filters to - * @param bsfc a NULL-terminated list of filters to apply - * @return >=0 on success; - * AVERROR code on failure - */ -int av_apply_bitstream_filters(AVCodecContext *codec, AVPacket *pkt, - AVBitStreamFilterContext *bsfc); - -/** - * @} - */ - -#endif /* AVFORMAT_AVFORMAT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/avio.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/avio.h deleted file mode 100644 index 7fbce32b6c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/avio.h +++ /dev/null @@ -1,732 +0,0 @@ -/* - * copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef AVFORMAT_AVIO_H -#define AVFORMAT_AVIO_H - -/** - * @file - * @ingroup lavf_io - * Buffered I/O operations - */ - -#include - -#include "libavutil/common.h" -#include "libavutil/dict.h" -#include "libavutil/log.h" - -#include "libavformat/version.h" - -#define AVIO_SEEKABLE_NORMAL 0x0001 /**< Seeking works like for a local file */ - -/** - * Callback for checking whether to abort blocking functions. - * AVERROR_EXIT is returned in this case by the interrupted - * function. During blocking operations, callback is called with - * opaque as parameter. If the callback returns 1, the - * blocking operation will be aborted. - * - * No members can be added to this struct without a major bump, if - * new elements have been added after this struct in AVFormatContext - * or AVIOContext. - */ -typedef struct AVIOInterruptCB { - int (*callback)(void*); - void *opaque; -} AVIOInterruptCB; - -/** - * Directory entry types. - */ -enum AVIODirEntryType { - AVIO_ENTRY_UNKNOWN, - AVIO_ENTRY_BLOCK_DEVICE, - AVIO_ENTRY_CHARACTER_DEVICE, - AVIO_ENTRY_DIRECTORY, - AVIO_ENTRY_NAMED_PIPE, - AVIO_ENTRY_SYMBOLIC_LINK, - AVIO_ENTRY_SOCKET, - AVIO_ENTRY_FILE, - AVIO_ENTRY_SERVER, - AVIO_ENTRY_SHARE, - AVIO_ENTRY_WORKGROUP, -}; - -/** - * Describes single entry of the directory. - * - * Only name and type fields are guaranteed be set. - * Rest of fields are protocol or/and platform dependent and might be unknown. - */ -typedef struct AVIODirEntry { - char *name; /**< Filename */ - int type; /**< Type of the entry */ - int utf8; /**< Set to 1 when name is encoded with UTF-8, 0 otherwise. - Name can be encoded with UTF-8 even though 0 is set. */ - int64_t size; /**< File size in bytes, -1 if unknown. */ - int64_t modification_timestamp; /**< Time of last modification in microseconds since unix - epoch, -1 if unknown. */ - int64_t access_timestamp; /**< Time of last access in microseconds since unix epoch, - -1 if unknown. */ - int64_t status_change_timestamp; /**< Time of last status change in microseconds since unix - epoch, -1 if unknown. */ - int64_t user_id; /**< User ID of owner, -1 if unknown. */ - int64_t group_id; /**< Group ID of owner, -1 if unknown. */ - int64_t filemode; /**< Unix file mode, -1 if unknown. */ -} AVIODirEntry; - -typedef struct AVIODirContext { - struct URLContext *url_context; -} AVIODirContext; - -/** - * Bytestream IO Context. - * New fields can be added to the end with minor version bumps. - * Removal, reordering and changes to existing fields require a major - * version bump. - * sizeof(AVIOContext) must not be used outside libav*. - * - * @note None of the function pointers in AVIOContext should be called - * directly, they should only be set by the client application - * when implementing custom I/O. Normally these are set to the - * function pointers specified in avio_alloc_context() - */ -typedef struct AVIOContext { - /** - * A class for private options. - * - * If this AVIOContext is created by avio_open2(), av_class is set and - * passes the options down to protocols. - * - * If this AVIOContext is manually allocated, then av_class may be set by - * the caller. - * - * warning -- this field can be NULL, be sure to not pass this AVIOContext - * to any av_opt_* functions in that case. - */ - const AVClass *av_class; - - /* - * The following shows the relationship between buffer, buf_ptr, buf_end, buf_size, - * and pos, when reading and when writing (since AVIOContext is used for both): - * - ********************************************************************************** - * READING - ********************************************************************************** - * - * | buffer_size | - * |---------------------------------------| - * | | - * - * buffer buf_ptr buf_end - * +---------------+-----------------------+ - * |/ / / / / / / /|/ / / / / / /| | - * read buffer: |/ / consumed / | to be read /| | - * |/ / / / / / / /|/ / / / / / /| | - * +---------------+-----------------------+ - * - * pos - * +-------------------------------------------+-----------------+ - * input file: | | | - * +-------------------------------------------+-----------------+ - * - * - ********************************************************************************** - * WRITING - ********************************************************************************** - * - * | buffer_size | - * |-------------------------------| - * | | - * - * buffer buf_ptr buf_end - * +-------------------+-----------+ - * |/ / / / / / / / / /| | - * write buffer: | / to be flushed / | | - * |/ / / / / / / / / /| | - * +-------------------+-----------+ - * - * pos - * +--------------------------+-----------------------------------+ - * output file: | | | - * +--------------------------+-----------------------------------+ - * - */ - unsigned char *buffer; /**< Start of the buffer. */ - int buffer_size; /**< Maximum buffer size */ - unsigned char *buf_ptr; /**< Current position in the buffer */ - unsigned char *buf_end; /**< End of the data, may be less than - buffer+buffer_size if the read function returned - less data than requested, e.g. for streams where - no more data has been received yet. */ - void *opaque; /**< A private pointer, passed to the read/write/seek/... - functions. */ - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); - int64_t (*seek)(void *opaque, int64_t offset, int whence); - int64_t pos; /**< position in the file of the current buffer */ - int must_flush; /**< true if the next seek should flush */ - int eof_reached; /**< true if eof reached */ - int write_flag; /**< true if open for writing */ - int max_packet_size; - unsigned long checksum; - unsigned char *checksum_ptr; - unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); - int error; /**< contains the error code or 0 if no error happened */ - /** - * Pause or resume playback for network streaming protocols - e.g. MMS. - */ - int (*read_pause)(void *opaque, int pause); - /** - * Seek to a given timestamp in stream with the specified stream_index. - * Needed for some network streaming protocols which don't support seeking - * to byte position. - */ - int64_t (*read_seek)(void *opaque, int stream_index, - int64_t timestamp, int flags); - /** - * A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable. - */ - int seekable; - - /** - * max filesize, used to limit allocations - * This field is internal to libavformat and access from outside is not allowed. - */ - int64_t maxsize; - - /** - * avio_read and avio_write should if possible be satisfied directly - * instead of going through a buffer, and avio_seek will always - * call the underlying seek function directly. - */ - int direct; - - /** - * Bytes read statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int64_t bytes_read; - - /** - * seek statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int seek_count; - - /** - * writeout statistic - * This field is internal to libavformat and access from outside is not allowed. - */ - int writeout_count; - - /** - * Original buffer size - * used internally after probing and ensure seekback to reset the buffer size - * This field is internal to libavformat and access from outside is not allowed. - */ - int orig_buffer_size; - - /** - * Threshold to favor readahead over seek. - * This is current internal only, do not use from outside. - */ - int short_seek_threshold; - - /** - * ',' separated list of allowed protocols. - */ - const char *protocol_whitelist; -} AVIOContext; - -/* unbuffered I/O */ - -/** - * Return the name of the protocol that will handle the passed URL. - * - * NULL is returned if no protocol could be found for the given URL. - * - * @return Name of the protocol or NULL. - */ -const char *avio_find_protocol_name(const char *url); - -/** - * Return AVIO_FLAG_* access flags corresponding to the access permissions - * of the resource in url, or a negative value corresponding to an - * AVERROR code in case of failure. The returned access flags are - * masked by the value in flags. - * - * @note This function is intrinsically unsafe, in the sense that the - * checked resource may change its existence or permission status from - * one call to another. Thus you should not trust the returned value, - * unless you are sure that no other processes are accessing the - * checked resource. - */ -int avio_check(const char *url, int flags); - -/** - * Move or rename a resource. - * - * @note url_src and url_dst should share the same protocol and authority. - * - * @param url_src url to resource to be moved - * @param url_dst new url to resource if the operation succeeded - * @return >=0 on success or negative on error. - */ -int avpriv_io_move(const char *url_src, const char *url_dst); - -/** - * Delete a resource. - * - * @param url resource to be deleted. - * @return >=0 on success or negative on error. - */ -int avpriv_io_delete(const char *url); - -/** - * Open directory for reading. - * - * @param s directory read context. Pointer to a NULL pointer must be passed. - * @param url directory to be listed. - * @param options A dictionary filled with protocol-private options. On return - * this parameter will be destroyed and replaced with a dictionary - * containing options that were not found. May be NULL. - * @return >=0 on success or negative on error. - */ -int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options); - -/** - * Get next directory entry. - * - * Returned entry must be freed with avio_free_directory_entry(). In particular - * it may outlive AVIODirContext. - * - * @param s directory read context. - * @param[out] next next entry or NULL when no more entries. - * @return >=0 on success or negative on error. End of list is not considered an - * error. - */ -int avio_read_dir(AVIODirContext *s, AVIODirEntry **next); - -/** - * Close directory. - * - * @note Entries created using avio_read_dir() are not deleted and must be - * freeded with avio_free_directory_entry(). - * - * @param s directory read context. - * @return >=0 on success or negative on error. - */ -int avio_close_dir(AVIODirContext **s); - -/** - * Free entry allocated by avio_read_dir(). - * - * @param entry entry to be freed. - */ -void avio_free_directory_entry(AVIODirEntry **entry); - -/** - * Allocate and initialize an AVIOContext for buffered I/O. It must be later - * freed with av_free(). - * - * @param buffer Memory block for input/output operations via AVIOContext. - * The buffer must be allocated with av_malloc() and friends. - * It may be freed and replaced with a new buffer by libavformat. - * AVIOContext.buffer holds the buffer currently in use, - * which must be later freed with av_free(). - * @param buffer_size The buffer size is very important for performance. - * For protocols with fixed blocksize it should be set to this blocksize. - * For others a typical size is a cache page, e.g. 4kb. - * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. - * @param opaque An opaque pointer to user-specific data. - * @param read_packet A function for refilling the buffer, may be NULL. - * @param write_packet A function for writing the buffer contents, may be NULL. - * The function may not change the input buffers content. - * @param seek A function for seeking to specified byte position, may be NULL. - * - * @return Allocated AVIOContext or NULL on failure. - */ -AVIOContext *avio_alloc_context( - unsigned char *buffer, - int buffer_size, - int write_flag, - void *opaque, - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), - int64_t (*seek)(void *opaque, int64_t offset, int whence)); - -void avio_w8(AVIOContext *s, int b); -void avio_write(AVIOContext *s, const unsigned char *buf, int size); -void avio_wl64(AVIOContext *s, uint64_t val); -void avio_wb64(AVIOContext *s, uint64_t val); -void avio_wl32(AVIOContext *s, unsigned int val); -void avio_wb32(AVIOContext *s, unsigned int val); -void avio_wl24(AVIOContext *s, unsigned int val); -void avio_wb24(AVIOContext *s, unsigned int val); -void avio_wl16(AVIOContext *s, unsigned int val); -void avio_wb16(AVIOContext *s, unsigned int val); - -/** - * Write a NULL-terminated string. - * @return number of bytes written. - */ -int avio_put_str(AVIOContext *s, const char *str); - -/** - * Convert an UTF-8 string to UTF-16LE and write it. - * @param s the AVIOContext - * @param str NULL-terminated UTF-8 string - * - * @return number of bytes written. - */ -int avio_put_str16le(AVIOContext *s, const char *str); - -/** - * Convert an UTF-8 string to UTF-16BE and write it. - * @param s the AVIOContext - * @param str NULL-terminated UTF-8 string - * - * @return number of bytes written. - */ -int avio_put_str16be(AVIOContext *s, const char *str); - -/** - * Passing this as the "whence" parameter to a seek function causes it to - * return the filesize without seeking anywhere. Supporting this is optional. - * If it is not supported then the seek function will return <0. - */ -#define AVSEEK_SIZE 0x10000 - -/** - * Oring this flag as into the "whence" parameter to a seek function causes it to - * seek by any means (like reopening and linear reading) or other normally unreasonable - * means that can be extremely slow. - * This may be ignored by the seek code. - */ -#define AVSEEK_FORCE 0x20000 - -/** - * fseek() equivalent for AVIOContext. - * @return new position or AVERROR. - */ -int64_t avio_seek(AVIOContext *s, int64_t offset, int whence); - -/** - * Skip given number of bytes forward - * @return new position or AVERROR. - */ -int64_t avio_skip(AVIOContext *s, int64_t offset); - -/** - * ftell() equivalent for AVIOContext. - * @return position or AVERROR. - */ -static av_always_inline int64_t avio_tell(AVIOContext *s) -{ - return avio_seek(s, 0, SEEK_CUR); -} - -/** - * Get the filesize. - * @return filesize or AVERROR - */ -int64_t avio_size(AVIOContext *s); - -/** - * feof() equivalent for AVIOContext. - * @return non zero if and only if end of file - */ -int avio_feof(AVIOContext *s); -#if FF_API_URL_FEOF -/** - * @deprecated use avio_feof() - */ -attribute_deprecated -int url_feof(AVIOContext *s); -#endif - -/** @warning Writes up to 4 KiB per call */ -int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3); - -/** - * Force flushing of buffered data. - * - * For write streams, force the buffered data to be immediately written to the output, - * without to wait to fill the internal buffer. - * - * For read streams, discard all currently buffered data, and advance the - * reported file position to that of the underlying stream. This does not - * read new data, and does not perform any seeks. - */ -void avio_flush(AVIOContext *s); - -/** - * Read size bytes from AVIOContext into buf. - * @return number of bytes read or AVERROR - */ -int avio_read(AVIOContext *s, unsigned char *buf, int size); - -/** - * @name Functions for reading from AVIOContext - * @{ - * - * @note return 0 if EOF, so you cannot use it if EOF handling is - * necessary - */ -int avio_r8 (AVIOContext *s); -unsigned int avio_rl16(AVIOContext *s); -unsigned int avio_rl24(AVIOContext *s); -unsigned int avio_rl32(AVIOContext *s); -uint64_t avio_rl64(AVIOContext *s); -unsigned int avio_rb16(AVIOContext *s); -unsigned int avio_rb24(AVIOContext *s); -unsigned int avio_rb32(AVIOContext *s); -uint64_t avio_rb64(AVIOContext *s); -/** - * @} - */ - -/** - * Read a string from pb into buf. The reading will terminate when either - * a NULL character was encountered, maxlen bytes have been read, or nothing - * more can be read from pb. The result is guaranteed to be NULL-terminated, it - * will be truncated if buf is too small. - * Note that the string is not interpreted or validated in any way, it - * might get truncated in the middle of a sequence for multi-byte encodings. - * - * @return number of bytes read (is always <= maxlen). - * If reading ends on EOF or error, the return value will be one more than - * bytes actually read. - */ -int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen); - -/** - * Read a UTF-16 string from pb and convert it to UTF-8. - * The reading will terminate when either a null or invalid character was - * encountered or maxlen bytes have been read. - * @return number of bytes read (is always <= maxlen) - */ -int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen); -int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); - - -/** - * @name URL open modes - * The flags argument to avio_open must be one of the following - * constants, optionally ORed with other flags. - * @{ - */ -#define AVIO_FLAG_READ 1 /**< read-only */ -#define AVIO_FLAG_WRITE 2 /**< write-only */ -#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */ -/** - * @} - */ - -/** - * Use non-blocking mode. - * If this flag is set, operations on the context will return - * AVERROR(EAGAIN) if they can not be performed immediately. - * If this flag is not set, operations on the context will never return - * AVERROR(EAGAIN). - * Note that this flag does not affect the opening/connecting of the - * context. Connecting a protocol will always block if necessary (e.g. on - * network protocols) but never hang (e.g. on busy devices). - * Warning: non-blocking protocols is work-in-progress; this flag may be - * silently ignored. - */ -#define AVIO_FLAG_NONBLOCK 8 - -/** - * Use direct mode. - * avio_read and avio_write should if possible be satisfied directly - * instead of going through a buffer, and avio_seek will always - * call the underlying seek function directly. - */ -#define AVIO_FLAG_DIRECT 0x8000 - -/** - * Create and initialize a AVIOContext for accessing the - * resource indicated by url. - * @note When the resource indicated by url has been opened in - * read+write mode, the AVIOContext can be used only for writing. - * - * @param s Used to return the pointer to the created AVIOContext. - * In case of failure the pointed to value is set to NULL. - * @param url resource to access - * @param flags flags which control how the resource indicated by url - * is to be opened - * @return >= 0 in case of success, a negative value corresponding to an - * AVERROR code in case of failure - */ -int avio_open(AVIOContext **s, const char *url, int flags); - -/** - * Create and initialize a AVIOContext for accessing the - * resource indicated by url. - * @note When the resource indicated by url has been opened in - * read+write mode, the AVIOContext can be used only for writing. - * - * @param s Used to return the pointer to the created AVIOContext. - * In case of failure the pointed to value is set to NULL. - * @param url resource to access - * @param flags flags which control how the resource indicated by url - * is to be opened - * @param int_cb an interrupt callback to be used at the protocols level - * @param options A dictionary filled with protocol-private options. On return - * this parameter will be destroyed and replaced with a dict containing options - * that were not found. May be NULL. - * @return >= 0 in case of success, a negative value corresponding to an - * AVERROR code in case of failure - */ -int avio_open2(AVIOContext **s, const char *url, int flags, - const AVIOInterruptCB *int_cb, AVDictionary **options); - -/** - * Close the resource accessed by the AVIOContext s and free it. - * This function can only be used if s was opened by avio_open(). - * - * The internal buffer is automatically flushed before closing the - * resource. - * - * @return 0 on success, an AVERROR < 0 on error. - * @see avio_closep - */ -int avio_close(AVIOContext *s); - -/** - * Close the resource accessed by the AVIOContext *s, free it - * and set the pointer pointing to it to NULL. - * This function can only be used if s was opened by avio_open(). - * - * The internal buffer is automatically flushed before closing the - * resource. - * - * @return 0 on success, an AVERROR < 0 on error. - * @see avio_close - */ -int avio_closep(AVIOContext **s); - - -/** - * Open a write only memory stream. - * - * @param s new IO context - * @return zero if no error. - */ -int avio_open_dyn_buf(AVIOContext **s); - -/** - * Return the written size and a pointer to the buffer. The buffer - * must be freed with av_free(). - * Padding of AV_INPUT_BUFFER_PADDING_SIZE is added to the buffer. - * - * @param s IO context - * @param pbuffer pointer to a byte buffer - * @return the length of the byte buffer - */ -int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); - -/** - * Iterate through names of available protocols. - * - * @param opaque A private pointer representing current protocol. - * It must be a pointer to NULL on first iteration and will - * be updated by successive calls to avio_enum_protocols. - * @param output If set to 1, iterate over output protocols, - * otherwise over input protocols. - * - * @return A static string containing the name of current protocol or NULL - */ -const char *avio_enum_protocols(void **opaque, int output); - -/** - * Pause and resume playing - only meaningful if using a network streaming - * protocol (e.g. MMS). - * - * @param h IO context from which to call the read_pause function pointer - * @param pause 1 for pause, 0 for resume - */ -int avio_pause(AVIOContext *h, int pause); - -/** - * Seek to a given timestamp relative to some component stream. - * Only meaningful if using a network streaming protocol (e.g. MMS.). - * - * @param h IO context from which to call the seek function pointers - * @param stream_index The stream index that the timestamp is relative to. - * If stream_index is (-1) the timestamp should be in AV_TIME_BASE - * units from the beginning of the presentation. - * If a stream_index >= 0 is used and the protocol does not support - * seeking based on component streams, the call will fail. - * @param timestamp timestamp in AVStream.time_base units - * or if there is no stream specified then in AV_TIME_BASE units. - * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE - * and AVSEEK_FLAG_ANY. The protocol may silently ignore - * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will - * fail if used and not supported. - * @return >= 0 on success - * @see AVInputFormat::read_seek - */ -int64_t avio_seek_time(AVIOContext *h, int stream_index, - int64_t timestamp, int flags); - -/* Avoid a warning. The header can not be included because it breaks c++. */ -struct AVBPrint; - -/** - * Read contents of h into print buffer, up to max_size bytes, or up to EOF. - * - * @return 0 for success (max_size bytes read or EOF reached), negative error - * code otherwise - */ -int avio_read_to_bprint(AVIOContext *h, struct AVBPrint *pb, size_t max_size); - -/** - * Accept and allocate a client context on a server context. - * @param s the server context - * @param c the client context, must be unallocated - * @return >= 0 on success or a negative value corresponding - * to an AVERROR on failure - */ -int avio_accept(AVIOContext *s, AVIOContext **c); - -/** - * Perform one step of the protocol handshake to accept a new client. - * This function must be called on a client returned by avio_accept() before - * using it as a read/write context. - * It is separate from avio_accept() because it may block. - * A step of the handshake is defined by places where the application may - * decide to change the proceedings. - * For example, on a protocol with a request header and a reply header, each - * one can constitute a step because the application may use the parameters - * from the request to change parameters in the reply; or each individual - * chunk of the request can constitute a step. - * If the handshake is already finished, avio_handshake() does nothing and - * returns 0 immediately. - * - * @param c the client context to perform the handshake on - * @return 0 on a complete and successful handshake - * > 0 if the handshake progressed, but is not complete - * < 0 for an AVERROR code - */ -int avio_handshake(AVIOContext *c); -#endif /* AVFORMAT_AVIO_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/version.h deleted file mode 100644 index 024ab9152f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavformat/version.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Version macros. - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVFORMAT_VERSION_H -#define AVFORMAT_VERSION_H - -/** - * @file - * @ingroup libavf - * Libavformat version macros - */ - -#include "libavutil/version.h" - -#define LIBAVFORMAT_VERSION_MAJOR 57 -#define LIBAVFORMAT_VERSION_MINOR 25 -#define LIBAVFORMAT_VERSION_MICRO 100 - -#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ - LIBAVFORMAT_VERSION_MINOR, \ - LIBAVFORMAT_VERSION_MICRO) -#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ - LIBAVFORMAT_VERSION_MINOR, \ - LIBAVFORMAT_VERSION_MICRO) -#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT - -#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) - -/** - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - * - */ -#ifndef FF_API_LAVF_BITEXACT -#define FF_API_LAVF_BITEXACT (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LAVF_FRAC -#define FF_API_LAVF_FRAC (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LAVF_CODEC_TB -#define FF_API_LAVF_CODEC_TB (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_URL_FEOF -#define FF_API_URL_FEOF (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_LAVF_FMT_RAWPICTURE -#define FF_API_LAVF_FMT_RAWPICTURE (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_COMPUTE_PKT_FIELDS2 -#define FF_API_COMPUTE_PKT_FIELDS2 (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif -#ifndef FF_API_OLD_OPEN_CALLBACKS -#define FF_API_OLD_OPEN_CALLBACKS (LIBAVFORMAT_VERSION_MAJOR < 58) -#endif - -#ifndef FF_API_R_FRAME_RATE -#define FF_API_R_FRAME_RATE 1 -#endif -#endif /* AVFORMAT_VERSION_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/attributes.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/attributes.h deleted file mode 100644 index 5c6b9deecb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/attributes.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Macro definitions for various function/variable attributes - */ - -#ifndef AVUTIL_ATTRIBUTES_H -#define AVUTIL_ATTRIBUTES_H - -#ifdef __GNUC__ -# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > (x) || __GNUC__ == (x) && __GNUC_MINOR__ >= (y)) -# define AV_GCC_VERSION_AT_MOST(x,y) (__GNUC__ < (x) || __GNUC__ == (x) && __GNUC_MINOR__ <= (y)) -#else -# define AV_GCC_VERSION_AT_LEAST(x,y) 0 -# define AV_GCC_VERSION_AT_MOST(x,y) 0 -#endif - -#ifndef av_always_inline -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_always_inline __attribute__((always_inline)) inline -#elif defined(_MSC_VER) -# define av_always_inline __forceinline -#else -# define av_always_inline inline -#endif -#endif - -#ifndef av_extern_inline -#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__) -# define av_extern_inline extern inline -#else -# define av_extern_inline inline -#endif -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,4) -# define av_warn_unused_result __attribute__((warn_unused_result)) -#else -# define av_warn_unused_result -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_noinline __attribute__((noinline)) -#elif defined(_MSC_VER) -# define av_noinline __declspec(noinline) -#else -# define av_noinline -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_pure __attribute__((pure)) -#else -# define av_pure -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,6) -# define av_const __attribute__((const)) -#else -# define av_const -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) -# define av_cold __attribute__((cold)) -#else -# define av_cold -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__) -# define av_flatten __attribute__((flatten)) -#else -# define av_flatten -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define attribute_deprecated __attribute__((deprecated)) -#elif defined(_MSC_VER) -# define attribute_deprecated __declspec(deprecated) -#else -# define attribute_deprecated -#endif - -/** - * Disable warnings about deprecated features - * This is useful for sections of code kept for backward compatibility and - * scheduled for removal. - */ -#ifndef AV_NOWARN_DEPRECATED -#if AV_GCC_VERSION_AT_LEAST(4,6) -# define AV_NOWARN_DEPRECATED(code) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \ - code \ - _Pragma("GCC diagnostic pop") -#elif defined(_MSC_VER) -# define AV_NOWARN_DEPRECATED(code) \ - __pragma(warning(push)) \ - __pragma(warning(disable : 4996)) \ - code; \ - __pragma(warning(pop)) -#else -# define AV_NOWARN_DEPRECATED(code) code -#endif -#endif - - -#if defined(__GNUC__) -# define av_unused __attribute__((unused)) -#else -# define av_unused -#endif - -/** - * Mark a variable as used and prevent the compiler from optimizing it - * away. This is useful for variables accessed only from inline - * assembler without the compiler being aware. - */ -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_used __attribute__((used)) -#else -# define av_used -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,3) -# define av_alias __attribute__((may_alias)) -#else -# define av_alias -#endif - -#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__clang__) -# define av_uninit(x) x=x -#else -# define av_uninit(x) x -#endif - -#ifdef __GNUC__ -# define av_builtin_constant_p __builtin_constant_p -# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) -#else -# define av_builtin_constant_p(x) 0 -# define av_printf_format(fmtpos, attrpos) -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,5) -# define av_noreturn __attribute__((noreturn)) -#else -# define av_noreturn -#endif - -#endif /* AVUTIL_ATTRIBUTES_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/avconfig.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/avconfig.h deleted file mode 100644 index 36a8cd14da..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/avconfig.h +++ /dev/null @@ -1,7 +0,0 @@ -/* Generated by ffconf */ -#ifndef AVUTIL_AVCONFIG_H -#define AVUTIL_AVCONFIG_H -#define AV_HAVE_BIGENDIAN 0 -#define AV_HAVE_FAST_UNALIGNED 1 -#define AV_HAVE_INCOMPATIBLE_LIBAV_ABI 0 -#endif /* AVUTIL_AVCONFIG_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/avutil.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/avutil.h deleted file mode 100644 index 9bcf674126..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/avutil.h +++ /dev/null @@ -1,343 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVUTIL_H -#define AVUTIL_AVUTIL_H - -/** - * @file - * external API header - */ - -/** - * @mainpage - * - * @section ffmpeg_intro Introduction - * - * This document describes the usage of the different libraries - * provided by FFmpeg. - * - * @li @ref libavc "libavcodec" encoding/decoding library - * @li @ref lavfi "libavfilter" graph-based frame editing library - * @li @ref libavf "libavformat" I/O and muxing/demuxing library - * @li @ref lavd "libavdevice" special devices muxing/demuxing library - * @li @ref lavu "libavutil" common utility library - * @li @ref lswr "libswresample" audio resampling, format conversion and mixing - * @li @ref lpp "libpostproc" post processing library - * @li @ref libsws "libswscale" color conversion and scaling library - * - * @section ffmpeg_versioning Versioning and compatibility - * - * Each of the FFmpeg libraries contains a version.h header, which defines a - * major, minor and micro version number with the - * LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO} macros. The major version - * number is incremented with backward incompatible changes - e.g. removing - * parts of the public API, reordering public struct members, etc. The minor - * version number is incremented for backward compatible API changes or major - * new features - e.g. adding a new public function or a new decoder. The micro - * version number is incremented for smaller changes that a calling program - * might still want to check for - e.g. changing behavior in a previously - * unspecified situation. - * - * FFmpeg guarantees backward API and ABI compatibility for each library as long - * as its major version number is unchanged. This means that no public symbols - * will be removed or renamed. Types and names of the public struct members and - * values of public macros and enums will remain the same (unless they were - * explicitly declared as not part of the public API). Documented behavior will - * not change. - * - * In other words, any correct program that works with a given FFmpeg snapshot - * should work just as well without any changes with any later snapshot with the - * same major versions. This applies to both rebuilding the program against new - * FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program - * links against. - * - * However, new public symbols may be added and new members may be appended to - * public structs whose size is not part of public ABI (most public structs in - * FFmpeg). New macros and enum values may be added. Behavior in undocumented - * situations may change slightly (and be documented). All those are accompanied - * by an entry in doc/APIchanges and incrementing either the minor or micro - * version number. - */ - -/** - * @defgroup lavu Common utility functions - * - * @brief - * libavutil contains the code shared across all the other FFmpeg - * libraries - * - * @note In order to use the functions provided by avutil you must include - * the specific header. - * - * @{ - * - * @defgroup lavu_crypto Crypto and Hashing - * - * @{ - * @} - * - * @defgroup lavu_math Maths - * @{ - * - * @} - * - * @defgroup lavu_string String Manipulation - * - * @{ - * - * @} - * - * @defgroup lavu_mem Memory Management - * - * @{ - * - * @} - * - * @defgroup lavu_data Data Structures - * @{ - * - * @} - * - * @defgroup lavu_audio Audio related - * - * @{ - * - * @} - * - * @defgroup lavu_error Error Codes - * - * @{ - * - * @} - * - * @defgroup lavu_log Logging Facility - * - * @{ - * - * @} - * - * @defgroup lavu_misc Other - * - * @{ - * - * @defgroup preproc_misc Preprocessor String Macros - * - * @{ - * - * @} - * - * @defgroup version_utils Library Version Macros - * - * @{ - * - * @} - */ - - -/** - * @addtogroup lavu_ver - * @{ - */ - -/** - * Return the LIBAVUTIL_VERSION_INT constant. - */ -unsigned avutil_version(void); - -/** - * Return an informative version string. This usually is the actual release - * version number or a git commit description. This string has no fixed format - * and can change any time. It should never be parsed by code. - */ -const char *av_version_info(void); - -/** - * Return the libavutil build-time configuration. - */ -const char *avutil_configuration(void); - -/** - * Return the libavutil license. - */ -const char *avutil_license(void); - -/** - * @} - */ - -/** - * @addtogroup lavu_media Media Type - * @brief Media Type - */ - -enum AVMediaType { - AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA - AVMEDIA_TYPE_VIDEO, - AVMEDIA_TYPE_AUDIO, - AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous - AVMEDIA_TYPE_SUBTITLE, - AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse - AVMEDIA_TYPE_NB -}; - -/** - * Return a string describing the media_type enum, NULL if media_type - * is unknown. - */ -const char *av_get_media_type_string(enum AVMediaType media_type); - -/** - * @defgroup lavu_const Constants - * @{ - * - * @defgroup lavu_enc Encoding specific - * - * @note those definition should move to avcodec - * @{ - */ - -#define FF_LAMBDA_SHIFT 7 -#define FF_LAMBDA_SCALE (1< - -/** - * @defgroup lavu_buffer AVBuffer - * @ingroup lavu_data - * - * @{ - * AVBuffer is an API for reference-counted data buffers. - * - * There are two core objects in this API -- AVBuffer and AVBufferRef. AVBuffer - * represents the data buffer itself; it is opaque and not meant to be accessed - * by the caller directly, but only through AVBufferRef. However, the caller may - * e.g. compare two AVBuffer pointers to check whether two different references - * are describing the same data buffer. AVBufferRef represents a single - * reference to an AVBuffer and it is the object that may be manipulated by the - * caller directly. - * - * There are two functions provided for creating a new AVBuffer with a single - * reference -- av_buffer_alloc() to just allocate a new buffer, and - * av_buffer_create() to wrap an existing array in an AVBuffer. From an existing - * reference, additional references may be created with av_buffer_ref(). - * Use av_buffer_unref() to free a reference (this will automatically free the - * data once all the references are freed). - * - * The convention throughout this API and the rest of FFmpeg is such that the - * buffer is considered writable if there exists only one reference to it (and - * it has not been marked as read-only). The av_buffer_is_writable() function is - * provided to check whether this is true and av_buffer_make_writable() will - * automatically create a new writable buffer when necessary. - * Of course nothing prevents the calling code from violating this convention, - * however that is safe only when all the existing references are under its - * control. - * - * @note Referencing and unreferencing the buffers is thread-safe and thus - * may be done from multiple threads simultaneously without any need for - * additional locking. - * - * @note Two different references to the same buffer can point to different - * parts of the buffer (i.e. their AVBufferRef.data will not be equal). - */ - -/** - * A reference counted buffer type. It is opaque and is meant to be used through - * references (AVBufferRef). - */ -typedef struct AVBuffer AVBuffer; - -/** - * A reference to a data buffer. - * - * The size of this struct is not a part of the public ABI and it is not meant - * to be allocated directly. - */ -typedef struct AVBufferRef { - AVBuffer *buffer; - - /** - * The data buffer. It is considered writable if and only if - * this is the only reference to the buffer, in which case - * av_buffer_is_writable() returns 1. - */ - uint8_t *data; - /** - * Size of data in bytes. - */ - int size; -} AVBufferRef; - -/** - * Allocate an AVBuffer of the given size using av_malloc(). - * - * @return an AVBufferRef of given size or NULL when out of memory - */ -AVBufferRef *av_buffer_alloc(int size); - -/** - * Same as av_buffer_alloc(), except the returned buffer will be initialized - * to zero. - */ -AVBufferRef *av_buffer_allocz(int size); - -/** - * Always treat the buffer as read-only, even when it has only one - * reference. - */ -#define AV_BUFFER_FLAG_READONLY (1 << 0) - -/** - * Create an AVBuffer from an existing array. - * - * If this function is successful, data is owned by the AVBuffer. The caller may - * only access data through the returned AVBufferRef and references derived from - * it. - * If this function fails, data is left untouched. - * @param data data array - * @param size size of data in bytes - * @param free a callback for freeing this buffer's data - * @param opaque parameter to be got for processing or passed to free - * @param flags a combination of AV_BUFFER_FLAG_* - * - * @return an AVBufferRef referring to data on success, NULL on failure. - */ -AVBufferRef *av_buffer_create(uint8_t *data, int size, - void (*free)(void *opaque, uint8_t *data), - void *opaque, int flags); - -/** - * Default free callback, which calls av_free() on the buffer data. - * This function is meant to be passed to av_buffer_create(), not called - * directly. - */ -void av_buffer_default_free(void *opaque, uint8_t *data); - -/** - * Create a new reference to an AVBuffer. - * - * @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on - * failure. - */ -AVBufferRef *av_buffer_ref(AVBufferRef *buf); - -/** - * Free a given reference and automatically free the buffer if there are no more - * references to it. - * - * @param buf the reference to be freed. The pointer is set to NULL on return. - */ -void av_buffer_unref(AVBufferRef **buf); - -/** - * @return 1 if the caller may write to the data referred to by buf (which is - * true if and only if buf is the only reference to the underlying AVBuffer). - * Return 0 otherwise. - * A positive answer is valid until av_buffer_ref() is called on buf. - */ -int av_buffer_is_writable(const AVBufferRef *buf); - -/** - * @return the opaque parameter set by av_buffer_create. - */ -void *av_buffer_get_opaque(const AVBufferRef *buf); - -int av_buffer_get_ref_count(const AVBufferRef *buf); - -/** - * Create a writable reference from a given buffer reference, avoiding data copy - * if possible. - * - * @param buf buffer reference to make writable. On success, buf is either left - * untouched, or it is unreferenced and a new writable AVBufferRef is - * written in its place. On failure, buf is left untouched. - * @return 0 on success, a negative AVERROR on failure. - */ -int av_buffer_make_writable(AVBufferRef **buf); - -/** - * Reallocate a given buffer. - * - * @param buf a buffer reference to reallocate. On success, buf will be - * unreferenced and a new reference with the required size will be - * written in its place. On failure buf will be left untouched. *buf - * may be NULL, then a new buffer is allocated. - * @param size required new buffer size. - * @return 0 on success, a negative AVERROR on failure. - * - * @note the buffer is actually reallocated with av_realloc() only if it was - * initially allocated through av_buffer_realloc(NULL) and there is only one - * reference to it (i.e. the one passed to this function). In all other cases - * a new buffer is allocated and the data is copied. - */ -int av_buffer_realloc(AVBufferRef **buf, int size); - -/** - * @} - */ - -/** - * @defgroup lavu_bufferpool AVBufferPool - * @ingroup lavu_data - * - * @{ - * AVBufferPool is an API for a lock-free thread-safe pool of AVBuffers. - * - * Frequently allocating and freeing large buffers may be slow. AVBufferPool is - * meant to solve this in cases when the caller needs a set of buffers of the - * same size (the most obvious use case being buffers for raw video or audio - * frames). - * - * At the beginning, the user must call av_buffer_pool_init() to create the - * buffer pool. Then whenever a buffer is needed, call av_buffer_pool_get() to - * get a reference to a new buffer, similar to av_buffer_alloc(). This new - * reference works in all aspects the same way as the one created by - * av_buffer_alloc(). However, when the last reference to this buffer is - * unreferenced, it is returned to the pool instead of being freed and will be - * reused for subsequent av_buffer_pool_get() calls. - * - * When the caller is done with the pool and no longer needs to allocate any new - * buffers, av_buffer_pool_uninit() must be called to mark the pool as freeable. - * Once all the buffers are released, it will automatically be freed. - * - * Allocating and releasing buffers with this API is thread-safe as long as - * either the default alloc callback is used, or the user-supplied one is - * thread-safe. - */ - -/** - * The buffer pool. This structure is opaque and not meant to be accessed - * directly. It is allocated with av_buffer_pool_init() and freed with - * av_buffer_pool_uninit(). - */ -typedef struct AVBufferPool AVBufferPool; - -/** - * Allocate and initialize a buffer pool. - * - * @param size size of each buffer in this pool - * @param alloc a function that will be used to allocate new buffers when the - * pool is empty. May be NULL, then the default allocator will be used - * (av_buffer_alloc()). - * @return newly created buffer pool on success, NULL on error. - */ -AVBufferPool *av_buffer_pool_init(int size, AVBufferRef* (*alloc)(int size)); - -/** - * Mark the pool as being available for freeing. It will actually be freed only - * once all the allocated buffers associated with the pool are released. Thus it - * is safe to call this function while some of the allocated buffers are still - * in use. - * - * @param pool pointer to the pool to be freed. It will be set to NULL. - * @see av_buffer_pool_can_uninit() - */ -void av_buffer_pool_uninit(AVBufferPool **pool); - -/** - * Allocate a new AVBuffer, reusing an old buffer from the pool when available. - * This function may be called simultaneously from multiple threads. - * - * @return a reference to the new buffer on success, NULL on error. - */ -AVBufferRef *av_buffer_pool_get(AVBufferPool *pool); - -/** - * @} - */ - -#endif /* AVUTIL_BUFFER_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/channel_layout.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/channel_layout.h deleted file mode 100644 index ec7effead1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/channel_layout.h +++ /dev/null @@ -1,223 +0,0 @@ -/* - * Copyright (c) 2006 Michael Niedermayer - * Copyright (c) 2008 Peter Ross - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CHANNEL_LAYOUT_H -#define AVUTIL_CHANNEL_LAYOUT_H - -#include - -/** - * @file - * audio channel layout utility functions - */ - -/** - * @addtogroup lavu_audio - * @{ - */ - -/** - * @defgroup channel_masks Audio channel masks - * - * A channel layout is a 64-bits integer with a bit set for every channel. - * The number of bits set must be equal to the number of channels. - * The value 0 means that the channel layout is not known. - * @note this data structure is not powerful enough to handle channels - * combinations that have the same channel multiple times, such as - * dual-mono. - * - * @{ - */ -#define AV_CH_FRONT_LEFT 0x00000001 -#define AV_CH_FRONT_RIGHT 0x00000002 -#define AV_CH_FRONT_CENTER 0x00000004 -#define AV_CH_LOW_FREQUENCY 0x00000008 -#define AV_CH_BACK_LEFT 0x00000010 -#define AV_CH_BACK_RIGHT 0x00000020 -#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040 -#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080 -#define AV_CH_BACK_CENTER 0x00000100 -#define AV_CH_SIDE_LEFT 0x00000200 -#define AV_CH_SIDE_RIGHT 0x00000400 -#define AV_CH_TOP_CENTER 0x00000800 -#define AV_CH_TOP_FRONT_LEFT 0x00001000 -#define AV_CH_TOP_FRONT_CENTER 0x00002000 -#define AV_CH_TOP_FRONT_RIGHT 0x00004000 -#define AV_CH_TOP_BACK_LEFT 0x00008000 -#define AV_CH_TOP_BACK_CENTER 0x00010000 -#define AV_CH_TOP_BACK_RIGHT 0x00020000 -#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix. -#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT. -#define AV_CH_WIDE_LEFT 0x0000000080000000ULL -#define AV_CH_WIDE_RIGHT 0x0000000100000000ULL -#define AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL -#define AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL -#define AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL - -/** Channel mask value used for AVCodecContext.request_channel_layout - to indicate that the user requests the channel order of the decoder output - to be the native codec channel order. */ -#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL - -/** - * @} - * @defgroup channel_mask_c Audio channel layouts - * @{ - * */ -#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) -#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) -#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) -#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER) -#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY) -#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) -#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT) -#define AV_CH_LAYOUT_HEXADECAGONAL (AV_CH_LAYOUT_OCTAGONAL|AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) -#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) - -enum AVMatrixEncoding { - AV_MATRIX_ENCODING_NONE, - AV_MATRIX_ENCODING_DOLBY, - AV_MATRIX_ENCODING_DPLII, - AV_MATRIX_ENCODING_DPLIIX, - AV_MATRIX_ENCODING_DPLIIZ, - AV_MATRIX_ENCODING_DOLBYEX, - AV_MATRIX_ENCODING_DOLBYHEADPHONE, - AV_MATRIX_ENCODING_NB -}; - -/** - * Return a channel layout id that matches name, or 0 if no match is found. - * - * name can be one or several of the following notations, - * separated by '+' or '|': - * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, - * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); - * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, - * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); - * - a number of channels, in decimal, optionally followed by 'c', yielding - * the default channel layout for that number of channels (@see - * av_get_default_channel_layout); - * - a channel layout mask, in hexadecimal starting with "0x" (see the - * AV_CH_* macros). - * - * @warning Starting from the next major bump the trailing character - * 'c' to specify a number of channels will be required, while a - * channel layout mask could also be specified as a decimal number - * (if and only if not followed by "c"). - * - * Example: "stereo+FC" = "2c+FC" = "2c+1c" = "0x7" - */ -uint64_t av_get_channel_layout(const char *name); - -/** - * Return a description of a channel layout. - * If nb_channels is <= 0, it is guessed from the channel_layout. - * - * @param buf put here the string containing the channel layout - * @param buf_size size in bytes of the buffer - */ -void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout); - -struct AVBPrint; -/** - * Append a description of a channel layout to a bprint buffer. - */ -void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout); - -/** - * Return the number of channels in the channel layout. - */ -int av_get_channel_layout_nb_channels(uint64_t channel_layout); - -/** - * Return default channel layout for a given number of channels. - */ -int64_t av_get_default_channel_layout(int nb_channels); - -/** - * Get the index of a channel in channel_layout. - * - * @param channel a channel layout describing exactly one channel which must be - * present in channel_layout. - * - * @return index of channel in channel_layout on success, a negative AVERROR - * on error. - */ -int av_get_channel_layout_channel_index(uint64_t channel_layout, - uint64_t channel); - -/** - * Get the channel with the given index in channel_layout. - */ -uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index); - -/** - * Get the name of a given channel. - * - * @return channel name on success, NULL on error. - */ -const char *av_get_channel_name(uint64_t channel); - -/** - * Get the description of a given channel. - * - * @param channel a channel layout with a single channel - * @return channel description on success, NULL on error - */ -const char *av_get_channel_description(uint64_t channel); - -/** - * Get the value and name of a standard channel layout. - * - * @param[in] index index in an internal list, starting at 0 - * @param[out] layout channel layout mask - * @param[out] name name of the layout - * @return 0 if the layout exists, - * <0 if index is beyond the limits - */ -int av_get_standard_channel_layout(unsigned index, uint64_t *layout, - const char **name); - -/** - * @} - * @} - */ - -#endif /* AVUTIL_CHANNEL_LAYOUT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/common.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/common.h deleted file mode 100644 index 8142b31fdb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/common.h +++ /dev/null @@ -1,530 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * common internal and external API header - */ - -#ifndef AVUTIL_COMMON_H -#define AVUTIL_COMMON_H - -#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) && !defined(UINT64_C) -#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "attributes.h" -#include "macros.h" -#include "version.h" -#include "libavutil/avconfig.h" - -#if AV_HAVE_BIGENDIAN -# define AV_NE(be, le) (be) -#else -# define AV_NE(be, le) (le) -#endif - -//rounded division & shift -#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) -/* assume b>0 */ -#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) -/* Fast a/(1<=0 and b>=0 */ -#define AV_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \ - : ((a) + (1<<(b)) - 1) >> (b)) -/* Backwards compat. */ -#define FF_CEIL_RSHIFT AV_CEIL_RSHIFT - -#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b)) -#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b)) - -/** - * Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they - * are not representable as absolute values of their type. This is the same - * as with *abs() - * @see FFNABS() - */ -#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) -#define FFSIGN(a) ((a) > 0 ? 1 : -1) - -/** - * Negative Absolute value. - * this works for all integers of all types. - * As with many macros, this evaluates its argument twice, it thus must not have - * a sideeffect, that is FFNABS(x++) has undefined behavior. - */ -#define FFNABS(a) ((a) <= 0 ? (a) : (-(a))) - -/** - * Comparator. - * For two numerical expressions x and y, gives 1 if x > y, -1 if x < y, and 0 - * if x == y. This is useful for instance in a qsort comparator callback. - * Furthermore, compilers are able to optimize this to branchless code, and - * there is no risk of overflow with signed types. - * As with many macros, this evaluates its argument multiple times, it thus - * must not have a side-effect. - */ -#define FFDIFFSIGN(x,y) (((x)>(y)) - ((x)<(y))) - -#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) -#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) -#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) -#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) - -#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) -#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) - -/* misc math functions */ - -#ifdef HAVE_AV_CONFIG_H -# include "config.h" -# include "intmath.h" -#endif - -/* Pull in unguarded fallback defines at the end of this file. */ -#include "common.h" - -#ifndef av_log2 -av_const int av_log2(unsigned v); -#endif - -#ifndef av_log2_16bit -av_const int av_log2_16bit(unsigned v); -#endif - -/** - * Clip a signed integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int av_clip_c(int a, int amin, int amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed 64bit integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed integer value into the 0-255 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint8_t av_clip_uint8_c(int a) -{ - if (a&(~0xFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -128,127 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int8_t av_clip_int8_c(int a) -{ - if ((a+0x80U) & ~0xFF) return (a>>31) ^ 0x7F; - else return a; -} - -/** - * Clip a signed integer value into the 0-65535 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint16_t av_clip_uint16_c(int a) -{ - if (a&(~0xFFFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -32768,32767 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int16_t av_clip_int16_c(int a) -{ - if ((a+0x8000U) & ~0xFFFF) return (a>>31) ^ 0x7FFF; - else return a; -} - -/** - * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) -{ - if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF); - else return (int32_t)a; -} - -/** - * Clip a signed integer into the -(2^p),(2^p-1) range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const int av_clip_intp2_c(int a, int p) -{ - if (((unsigned)a + (1 << p)) & ~((2 << p) - 1)) - return (a >> 31) ^ ((1 << p) - 1); - else - return a; -} - -/** - * Clip a signed integer to an unsigned power of two range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) -{ - if (a & ~((1<> 31 & ((1<= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a double value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const double av_clipd_c(double a, double amin, double amax) -{ -#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 - if (amin > amax) abort(); -#endif - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** Compute ceil(log2(x)). - * @param x value used to compute ceil(log2(x)) - * @return computed ceiling of log2(x) - */ -static av_always_inline av_const int av_ceil_log2_c(int x) -{ - return av_log2((x - 1) << 1); -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount_c(uint32_t x) -{ - x -= (x >> 1) & 0x55555555; - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - x = (x + (x >> 4)) & 0x0F0F0F0F; - x += x >> 8; - return (x + (x >> 16)) & 0x3F; -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount64_c(uint64_t x) -{ - return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32)); -} - -static av_always_inline av_const int av_parity_c(uint32_t v) -{ - return av_popcount(v) & 1; -} - -#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) -#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) - -/** - * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_BYTE Expression reading one byte from the input. - * Evaluated up to 7 times (4 for the currently - * assigned Unicode range). With a memory buffer - * input, this could be *ptr++. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - * - * @warning ERROR should not contain a loop control statement which - * could interact with the internal while loop, and should force an - * exit from the macro code (e.g. through a goto or a return) in order - * to prevent undefined results. - */ -#define GET_UTF8(val, GET_BYTE, ERROR)\ - val= (GET_BYTE);\ - {\ - uint32_t top = (val & 128) >> 1;\ - if ((val & 0xc0) == 0x80 || val >= 0xFE)\ - ERROR\ - while (val & top) {\ - int tmp= (GET_BYTE) - 128;\ - if(tmp>>6)\ - ERROR\ - val= (val<<6) + tmp;\ - top <<= 5;\ - }\ - val &= (top << 1) - 1;\ - } - -/** - * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_16BIT Expression returning two bytes of UTF-16 data converted - * to native byte order. Evaluated one or two times. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - */ -#define GET_UTF16(val, GET_16BIT, ERROR)\ - val = GET_16BIT;\ - {\ - unsigned int hi = val - 0xD800;\ - if (hi < 0x800) {\ - val = GET_16BIT - 0xDC00;\ - if (val > 0x3FFU || hi > 0x3FFU)\ - ERROR\ - val += (hi<<10) + 0x10000;\ - }\ - }\ - -/** - * @def PUT_UTF8(val, tmp, PUT_BYTE) - * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint8_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_BYTE. - * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. - * It could be a function or a statement, and uses tmp as the input byte. - * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be - * executed up to 4 times for values in the valid UTF-8 range and up to - * 7 times in the general case, depending on the length of the converted - * Unicode character. - */ -#define PUT_UTF8(val, tmp, PUT_BYTE)\ - {\ - int bytes, shift;\ - uint32_t in = val;\ - if (in < 0x80) {\ - tmp = in;\ - PUT_BYTE\ - } else {\ - bytes = (av_log2(in) + 4) / 5;\ - shift = (bytes - 1) * 6;\ - tmp = (256 - (256 >> bytes)) | (in >> shift);\ - PUT_BYTE\ - while (shift >= 6) {\ - shift -= 6;\ - tmp = 0x80 | ((in >> shift) & 0x3f);\ - PUT_BYTE\ - }\ - }\ - } - -/** - * @def PUT_UTF16(val, tmp, PUT_16BIT) - * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint16_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_16BIT. - * @param PUT_16BIT writes the converted UTF-16 data to any proper destination - * in desired endianness. It could be a function or a statement, and uses tmp - * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" - * PUT_BYTE will be executed 1 or 2 times depending on input character. - */ -#define PUT_UTF16(val, tmp, PUT_16BIT)\ - {\ - uint32_t in = val;\ - if (in < 0x10000) {\ - tmp = in;\ - PUT_16BIT\ - } else {\ - tmp = 0xD800 | ((in - 0x10000) >> 10);\ - PUT_16BIT\ - tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ - PUT_16BIT\ - }\ - }\ - - - -#include "mem.h" - -#ifdef HAVE_AV_CONFIG_H -# include "internal.h" -#endif /* HAVE_AV_CONFIG_H */ - -#endif /* AVUTIL_COMMON_H */ - -/* - * The following definitions are outside the multiple inclusion guard - * to ensure they are immediately available in intmath.h. - */ - -#ifndef av_ceil_log2 -# define av_ceil_log2 av_ceil_log2_c -#endif -#ifndef av_clip -# define av_clip av_clip_c -#endif -#ifndef av_clip64 -# define av_clip64 av_clip64_c -#endif -#ifndef av_clip_uint8 -# define av_clip_uint8 av_clip_uint8_c -#endif -#ifndef av_clip_int8 -# define av_clip_int8 av_clip_int8_c -#endif -#ifndef av_clip_uint16 -# define av_clip_uint16 av_clip_uint16_c -#endif -#ifndef av_clip_int16 -# define av_clip_int16 av_clip_int16_c -#endif -#ifndef av_clipl_int32 -# define av_clipl_int32 av_clipl_int32_c -#endif -#ifndef av_clip_intp2 -# define av_clip_intp2 av_clip_intp2_c -#endif -#ifndef av_clip_uintp2 -# define av_clip_uintp2 av_clip_uintp2_c -#endif -#ifndef av_mod_uintp2 -# define av_mod_uintp2 av_mod_uintp2_c -#endif -#ifndef av_sat_add32 -# define av_sat_add32 av_sat_add32_c -#endif -#ifndef av_sat_dadd32 -# define av_sat_dadd32 av_sat_dadd32_c -#endif -#ifndef av_clipf -# define av_clipf av_clipf_c -#endif -#ifndef av_clipd -# define av_clipd av_clipd_c -#endif -#ifndef av_popcount -# define av_popcount av_popcount_c -#endif -#ifndef av_popcount64 -# define av_popcount64 av_popcount64_c -#endif -#ifndef av_parity -# define av_parity av_parity_c -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/cpu.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/cpu.h deleted file mode 100644 index cc4e30c4cd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/cpu.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 2002 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CPU_H -#define AVUTIL_CPU_H - -#include "attributes.h" - -#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ - - /* lower 16 bits - CPU features */ -#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX -#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext -#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW -#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions -#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions -#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt -#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions -#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions -#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower -#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions -#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions -#define AV_CPU_FLAG_AESNI 0x80000 ///< Advanced Encryption Standard functions -#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_AVXSLOW 0x8000000 ///< AVX supported, but slow when using YMM registers (e.g. Bulldozer) -#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions -#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions -#define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction -#define AV_CPU_FLAG_AVX2 0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_FMA3 0x10000 ///< Haswell FMA3 functions -#define AV_CPU_FLAG_BMI1 0x20000 ///< Bit Manipulation Instruction Set 1 -#define AV_CPU_FLAG_BMI2 0x40000 ///< Bit Manipulation Instruction Set 2 - -#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard -#define AV_CPU_FLAG_VSX 0x0002 ///< ISA 2.06 -#define AV_CPU_FLAG_POWER8 0x0004 ///< ISA 2.07 - -#define AV_CPU_FLAG_ARMV5TE (1 << 0) -#define AV_CPU_FLAG_ARMV6 (1 << 1) -#define AV_CPU_FLAG_ARMV6T2 (1 << 2) -#define AV_CPU_FLAG_VFP (1 << 3) -#define AV_CPU_FLAG_VFPV3 (1 << 4) -#define AV_CPU_FLAG_NEON (1 << 5) -#define AV_CPU_FLAG_ARMV8 (1 << 6) -#define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations -#define AV_CPU_FLAG_SETEND (1 <<16) - -/** - * Return the flags which specify extensions supported by the CPU. - * The returned value is affected by av_force_cpu_flags() if that was used - * before. So av_get_cpu_flags() can easily be used in a application to - * detect the enabled cpu flags. - */ -int av_get_cpu_flags(void); - -/** - * Disables cpu detection and forces the specified flags. - * -1 is a special case that disables forcing of specific flags. - */ -void av_force_cpu_flags(int flags); - -/** - * Set a mask on flags returned by av_get_cpu_flags(). - * This function is mainly useful for testing. - * Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible - * - * @warning this function is not thread safe. - */ -attribute_deprecated void av_set_cpu_flags_mask(int mask); - -/** - * Parse CPU flags from a string. - * - * The returned flags contain the specified flags as well as related unspecified flags. - * - * This function exists only for compatibility with libav. - * Please use av_parse_cpu_caps() when possible. - * @return a combination of AV_CPU_* flags, negative on error. - */ -attribute_deprecated -int av_parse_cpu_flags(const char *s); - -/** - * Parse CPU caps from a string and update the given AV_CPU_* flags based on that. - * - * @return negative on error. - */ -int av_parse_cpu_caps(unsigned *flags, const char *s); - -/** - * @return the number of logical CPU cores present. - */ -int av_cpu_count(void); - -#endif /* AVUTIL_CPU_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/dict.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/dict.h deleted file mode 100644 index 5b8d003396..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/dict.h +++ /dev/null @@ -1,198 +0,0 @@ -/* - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Public dictionary API. - * @deprecated - * AVDictionary is provided for compatibility with libav. It is both in - * implementation as well as API inefficient. It does not scale and is - * extremely slow with large dictionaries. - * It is recommended that new code uses our tree container from tree.c/h - * where applicable, which uses AVL trees to achieve O(log n) performance. - */ - -#ifndef AVUTIL_DICT_H -#define AVUTIL_DICT_H - -#include - -#include "version.h" - -/** - * @addtogroup lavu_dict AVDictionary - * @ingroup lavu_data - * - * @brief Simple key:value store - * - * @{ - * Dictionaries are used for storing key:value pairs. To create - * an AVDictionary, simply pass an address of a NULL pointer to - * av_dict_set(). NULL can be used as an empty dictionary wherever - * a pointer to an AVDictionary is required. - * Use av_dict_get() to retrieve an entry or iterate over all - * entries and finally av_dict_free() to free the dictionary - * and all its contents. - * - @code - AVDictionary *d = NULL; // "create" an empty dictionary - AVDictionaryEntry *t = NULL; - - av_dict_set(&d, "foo", "bar", 0); // add an entry - - char *k = av_strdup("key"); // if your strings are already allocated, - char *v = av_strdup("value"); // you can avoid copying them like this - av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); - - while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) { - <....> // iterate over all entries in d - } - av_dict_free(&d); - @endcode - * - */ - -#define AV_DICT_MATCH_CASE 1 /**< Only get an entry with exact-case key match. Only relevant in av_dict_get(). */ -#define AV_DICT_IGNORE_SUFFIX 2 /**< Return first entry in a dictionary whose first part corresponds to the search key, - ignoring the suffix of the found key string. Only relevant in av_dict_get(). */ -#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been - allocated with av_malloc() or another memory allocation function. */ -#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been - allocated with av_malloc() or another memory allocation function. */ -#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries. -#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no - delimiter is added, the strings are simply concatenated. */ - -typedef struct AVDictionaryEntry { - char *key; - char *value; -} AVDictionaryEntry; - -typedef struct AVDictionary AVDictionary; - -/** - * Get a dictionary entry with matching key. - * - * The returned entry key or value must not be changed, or it will - * cause undefined behavior. - * - * To iterate through all the dictionary entries, you can set the matching key - * to the null string "" and set the AV_DICT_IGNORE_SUFFIX flag. - * - * @param prev Set to the previous matching element to find the next. - * If set to NULL the first matching element is returned. - * @param key matching key - * @param flags a collection of AV_DICT_* flags controlling how the entry is retrieved - * @return found entry or NULL in case no matching entry was found in the dictionary - */ -AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key, - const AVDictionaryEntry *prev, int flags); - -/** - * Get number of entries in dictionary. - * - * @param m dictionary - * @return number of entries in dictionary - */ -int av_dict_count(const AVDictionary *m); - -/** - * Set the given entry in *pm, overwriting an existing entry. - * - * Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set, - * these arguments will be freed on error. - * - * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL - * a dictionary struct is allocated and put in *pm. - * @param key entry key to add to *pm (will be av_strduped depending on flags) - * @param value entry value to add to *pm (will be av_strduped depending on flags). - * Passing a NULL value will cause an existing entry to be deleted. - * @return >= 0 on success otherwise an error code <0 - */ -int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); - -/** - * Convenience wrapper for av_dict_set that converts the value to a string - * and stores it. - * - * Note: If AV_DICT_DONT_STRDUP_KEY is set, key will be freed on error. - */ -int av_dict_set_int(AVDictionary **pm, const char *key, int64_t value, int flags); - -/** - * Parse the key/value pairs list and add the parsed entries to a dictionary. - * - * In case of failure, all the successfully set entries are stored in - * *pm. You may need to manually free the created dictionary. - * - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @param flags flags to use when adding to dictionary. - * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL - * are ignored since the key/value tokens will always - * be duplicated. - * @return 0 on success, negative AVERROR code on failure - */ -int av_dict_parse_string(AVDictionary **pm, const char *str, - const char *key_val_sep, const char *pairs_sep, - int flags); - -/** - * Copy entries from one AVDictionary struct into another. - * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, - * this function will allocate a struct for you and put it in *dst - * @param src pointer to source AVDictionary struct - * @param flags flags to use when setting entries in *dst - * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag - * @return 0 on success, negative AVERROR code on failure. If dst was allocated - * by this function, callers should free the associated memory. - */ -int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags); - -/** - * Free all the memory allocated for an AVDictionary struct - * and all keys and values. - */ -void av_dict_free(AVDictionary **m); - -/** - * Get dictionary entries as a string. - * - * Create a string containing dictionary's entries. - * Such string may be passed back to av_dict_parse_string(). - * @note String is escaped with backslashes ('\'). - * - * @param[in] m dictionary - * @param[out] buffer Pointer to buffer that will be allocated with string containg entries. - * Buffer must be freed by the caller when is no longer needed. - * @param[in] key_val_sep character used to separate key from value - * @param[in] pairs_sep character used to separate two pairs from each other - * @return >= 0 on success, negative on error - * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same. - */ -int av_dict_get_string(const AVDictionary *m, char **buffer, - const char key_val_sep, const char pairs_sep); - -/** - * @} - */ - -#endif /* AVUTIL_DICT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/error.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/error.h deleted file mode 100644 index 71df4da353..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/error.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * error code definitions - */ - -#ifndef AVUTIL_ERROR_H -#define AVUTIL_ERROR_H - -#include -#include - -/** - * @addtogroup lavu_error - * - * @{ - */ - - -/* error handling */ -#if EDOM > 0 -#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. -#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. -#else -/* Some platforms have E* and errno already negated. */ -#define AVERROR(e) (e) -#define AVUNERROR(e) (e) -#endif - -#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d)) - -#define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found -#define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2 -#define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small -#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found -#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found -#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found -#define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file -#define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted -#define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library -#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found -#define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input -#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found -#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found -#define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome -#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found - -#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found -/** - * This is semantically identical to AVERROR_BUG - * it has been introduced in Libav after our AVERROR_BUG and with a modified value. - */ -#define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ') -#define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library -#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it. -#define AVERROR_INPUT_CHANGED (-0x636e6701) ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED) -#define AVERROR_OUTPUT_CHANGED (-0x636e6702) ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED) -/* HTTP & RTSP errors */ -#define AVERROR_HTTP_BAD_REQUEST FFERRTAG(0xF8,'4','0','0') -#define AVERROR_HTTP_UNAUTHORIZED FFERRTAG(0xF8,'4','0','1') -#define AVERROR_HTTP_FORBIDDEN FFERRTAG(0xF8,'4','0','3') -#define AVERROR_HTTP_NOT_FOUND FFERRTAG(0xF8,'4','0','4') -#define AVERROR_HTTP_OTHER_4XX FFERRTAG(0xF8,'4','X','X') -#define AVERROR_HTTP_SERVER_ERROR FFERRTAG(0xF8,'5','X','X') - -#define AV_ERROR_MAX_STRING_SIZE 64 - -/** - * Put a description of the AVERROR code errnum in errbuf. - * In case of failure the global variable errno is set to indicate the - * error. Even in case of failure av_strerror() will print a generic - * error message indicating the errnum provided to errbuf. - * - * @param errnum error code to describe - * @param errbuf buffer to which description is written - * @param errbuf_size the size in bytes of errbuf - * @return 0 on success, a negative value if a description for errnum - * cannot be found - */ -int av_strerror(int errnum, char *errbuf, size_t errbuf_size); - -/** - * Fill the provided buffer with a string containing an error string - * corresponding to the AVERROR code errnum. - * - * @param errbuf a buffer - * @param errbuf_size size in bytes of errbuf - * @param errnum error code to describe - * @return the buffer in input, filled with the error description - * @see av_strerror() - */ -static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum) -{ - av_strerror(errnum, errbuf, errbuf_size); - return errbuf; -} - -/** - * Convenience macro, the return value should be used only directly in - * function arguments but never stand-alone. - */ -#define av_err2str(errnum) \ - av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum) - -/** - * @} - */ - -#endif /* AVUTIL_ERROR_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/ffversion.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/ffversion.h deleted file mode 100644 index b0c144c251..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/ffversion.h +++ /dev/null @@ -1,5 +0,0 @@ -/* Automatically generated by version.sh, do not manually edit! */ -#ifndef AVUTIL_FFVERSION_H -#define AVUTIL_FFVERSION_H -#define FFMPEG_VERSION "3.0.1" -#endif /* AVUTIL_FFVERSION_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/frame.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/frame.h deleted file mode 100644 index 8dc4049072..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/frame.h +++ /dev/null @@ -1,723 +0,0 @@ -/* - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu_frame - * reference-counted frame API - */ - -#ifndef AVUTIL_FRAME_H -#define AVUTIL_FRAME_H - -#include - -#include "avutil.h" -#include "buffer.h" -#include "dict.h" -#include "rational.h" -#include "samplefmt.h" -#include "pixfmt.h" -#include "version.h" - - -/** - * @defgroup lavu_frame AVFrame - * @ingroup lavu_data - * - * @{ - * AVFrame is an abstraction for reference-counted raw multimedia data. - */ - -enum AVFrameSideDataType { - /** - * The data is the AVPanScan struct defined in libavcodec. - */ - AV_FRAME_DATA_PANSCAN, - /** - * ATSC A53 Part 4 Closed Captions. - * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data. - * The number of bytes of CC data is AVFrameSideData.size. - */ - AV_FRAME_DATA_A53_CC, - /** - * Stereoscopic 3d metadata. - * The data is the AVStereo3D struct defined in libavutil/stereo3d.h. - */ - AV_FRAME_DATA_STEREO3D, - /** - * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h. - */ - AV_FRAME_DATA_MATRIXENCODING, - /** - * Metadata relevant to a downmix procedure. - * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h. - */ - AV_FRAME_DATA_DOWNMIX_INFO, - /** - * ReplayGain information in the form of the AVReplayGain struct. - */ - AV_FRAME_DATA_REPLAYGAIN, - /** - * This side data contains a 3x3 transformation matrix describing an affine - * transformation that needs to be applied to the frame for correct - * presentation. - * - * See libavutil/display.h for a detailed description of the data. - */ - AV_FRAME_DATA_DISPLAYMATRIX, - /** - * Active Format Description data consisting of a single byte as specified - * in ETSI TS 101 154 using AVActiveFormatDescription enum. - */ - AV_FRAME_DATA_AFD, - /** - * Motion vectors exported by some codecs (on demand through the export_mvs - * flag set in the libavcodec AVCodecContext flags2 option). - * The data is the AVMotionVector struct defined in - * libavutil/motion_vector.h. - */ - AV_FRAME_DATA_MOTION_VECTORS, - /** - * Recommmends skipping the specified number of samples. This is exported - * only if the "skip_manual" AVOption is set in libavcodec. - * This has the same format as AV_PKT_DATA_SKIP_SAMPLES. - * @code - * u32le number of samples to skip from start of this packet - * u32le number of samples to skip from end of this packet - * u8 reason for start skip - * u8 reason for end skip (0=padding silence, 1=convergence) - * @endcode - */ - AV_FRAME_DATA_SKIP_SAMPLES, - /** - * This side data must be associated with an audio frame and corresponds to - * enum AVAudioServiceType defined in avcodec.h. - */ - AV_FRAME_DATA_AUDIO_SERVICE_TYPE, - /** - * Mastering display metadata associated with a video frame. The payload is - * an AVMasteringDisplayMetadata type and contains information about the - * mastering display color volume. - */ - AV_FRAME_DATA_MASTERING_DISPLAY_METADATA, - /** - * The GOP timecode in 25 bit timecode format. Data format is 64-bit integer. - * This is set on the first frame of a GOP that has a temporal reference of 0. - */ - AV_FRAME_DATA_GOP_TIMECODE -}; - -enum AVActiveFormatDescription { - AV_AFD_SAME = 8, - AV_AFD_4_3 = 9, - AV_AFD_16_9 = 10, - AV_AFD_14_9 = 11, - AV_AFD_4_3_SP_14_9 = 13, - AV_AFD_16_9_SP_14_9 = 14, - AV_AFD_SP_4_3 = 15, -}; - - -/** - * Structure to hold side data for an AVFrame. - * - * sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added - * to the end with a minor bump. - */ -typedef struct AVFrameSideData { - enum AVFrameSideDataType type; - uint8_t *data; - int size; - AVDictionary *metadata; - AVBufferRef *buf; -} AVFrameSideData; - -/** - * This structure describes decoded (raw) audio or video data. - * - * AVFrame must be allocated using av_frame_alloc(). Note that this only - * allocates the AVFrame itself, the buffers for the data must be managed - * through other means (see below). - * AVFrame must be freed with av_frame_free(). - * - * AVFrame is typically allocated once and then reused multiple times to hold - * different data (e.g. a single AVFrame to hold frames received from a - * decoder). In such a case, av_frame_unref() will free any references held by - * the frame and reset it to its original clean state before it - * is reused again. - * - * The data described by an AVFrame is usually reference counted through the - * AVBuffer API. The underlying buffer references are stored in AVFrame.buf / - * AVFrame.extended_buf. An AVFrame is considered to be reference counted if at - * least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case, - * every single data plane must be contained in one of the buffers in - * AVFrame.buf or AVFrame.extended_buf. - * There may be a single buffer for all the data, or one separate buffer for - * each plane, or anything in between. - * - * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added - * to the end with a minor bump. - * Similarly fields that are marked as to be only accessed by - * av_opt_ptr() can be reordered. This allows 2 forks to add fields - * without breaking compatibility with each other. - */ -typedef struct AVFrame { -#define AV_NUM_DATA_POINTERS 8 - /** - * pointer to the picture/channel planes. - * This might be different from the first allocated byte - * - * Some decoders access areas outside 0,0 - width,height, please - * see avcodec_align_dimensions2(). Some filters and swscale can read - * up to 16 bytes beyond the planes, if these filters are to be used, - * then 16 extra bytes must be allocated. - */ - uint8_t *data[AV_NUM_DATA_POINTERS]; - - /** - * For video, size in bytes of each picture line. - * For audio, size in bytes of each plane. - * - * For audio, only linesize[0] may be set. For planar audio, each channel - * plane must be the same size. - * - * For video the linesizes should be multiples of the CPUs alignment - * preference, this is 16 or 32 for modern desktop CPUs. - * Some code requires such alignment other code can be slower without - * correct alignment, for yet other it makes no difference. - * - * @note The linesize may be larger than the size of usable data -- there - * may be extra padding present for performance reasons. - */ - int linesize[AV_NUM_DATA_POINTERS]; - - /** - * pointers to the data planes/channels. - * - * For video, this should simply point to data[]. - * - * For planar audio, each channel has a separate data pointer, and - * linesize[0] contains the size of each channel buffer. - * For packed audio, there is just one data pointer, and linesize[0] - * contains the total size of the buffer for all channels. - * - * Note: Both data and extended_data should always be set in a valid frame, - * but for planar audio with more channels that can fit in data, - * extended_data must be used in order to access all channels. - */ - uint8_t **extended_data; - - /** - * width and height of the video frame - */ - int width, height; - - /** - * number of audio samples (per channel) described by this frame - */ - int nb_samples; - - /** - * format of the frame, -1 if unknown or unset - * Values correspond to enum AVPixelFormat for video frames, - * enum AVSampleFormat for audio) - */ - int format; - - /** - * 1 -> keyframe, 0-> not - */ - int key_frame; - - /** - * Picture type of the frame. - */ - enum AVPictureType pict_type; - - /** - * Sample aspect ratio for the video frame, 0/1 if unknown/unspecified. - */ - AVRational sample_aspect_ratio; - - /** - * Presentation timestamp in time_base units (time when frame should be shown to user). - */ - int64_t pts; - - /** - * PTS copied from the AVPacket that was decoded to produce this frame. - */ - int64_t pkt_pts; - - /** - * DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used) - * This is also the Presentation time of this AVFrame calculated from - * only AVPacket.dts values without pts values. - */ - int64_t pkt_dts; - - /** - * picture number in bitstream order - */ - int coded_picture_number; - /** - * picture number in display order - */ - int display_picture_number; - - /** - * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) - */ - int quality; - - /** - * for some private data of the user - */ - void *opaque; - -#if FF_API_ERROR_FRAME - /** - * @deprecated unused - */ - attribute_deprecated - uint64_t error[AV_NUM_DATA_POINTERS]; -#endif - - /** - * When decoding, this signals how much the picture must be delayed. - * extra_delay = repeat_pict / (2*fps) - */ - int repeat_pict; - - /** - * The content of the picture is interlaced. - */ - int interlaced_frame; - - /** - * If the content is interlaced, is top field displayed first. - */ - int top_field_first; - - /** - * Tell user application that palette has changed from previous frame. - */ - int palette_has_changed; - - /** - * reordered opaque 64bit (generally an integer or a double precision float - * PTS but can be anything). - * The user sets AVCodecContext.reordered_opaque to represent the input at - * that time, - * the decoder reorders values as needed and sets AVFrame.reordered_opaque - * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque - * @deprecated in favor of pkt_pts - */ - int64_t reordered_opaque; - - /** - * Sample rate of the audio data. - */ - int sample_rate; - - /** - * Channel layout of the audio data. - */ - uint64_t channel_layout; - - /** - * AVBuffer references backing the data for this frame. If all elements of - * this array are NULL, then this frame is not reference counted. This array - * must be filled contiguously -- if buf[i] is non-NULL then buf[j] must - * also be non-NULL for all j < i. - * - * There may be at most one AVBuffer per data plane, so for video this array - * always contains all the references. For planar audio with more than - * AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in - * this array. Then the extra AVBufferRef pointers are stored in the - * extended_buf array. - */ - AVBufferRef *buf[AV_NUM_DATA_POINTERS]; - - /** - * For planar audio which requires more than AV_NUM_DATA_POINTERS - * AVBufferRef pointers, this array will hold all the references which - * cannot fit into AVFrame.buf. - * - * Note that this is different from AVFrame.extended_data, which always - * contains all the pointers. This array only contains the extra pointers, - * which cannot fit into AVFrame.buf. - * - * This array is always allocated using av_malloc() by whoever constructs - * the frame. It is freed in av_frame_unref(). - */ - AVBufferRef **extended_buf; - /** - * Number of elements in extended_buf. - */ - int nb_extended_buf; - - AVFrameSideData **side_data; - int nb_side_data; - -/** - * @defgroup lavu_frame_flags AV_FRAME_FLAGS - * Flags describing additional frame properties. - * - * @{ - */ - -/** - * The frame data may be corrupted, e.g. due to decoding errors. - */ -#define AV_FRAME_FLAG_CORRUPT (1 << 0) -/** - * @} - */ - - /** - * Frame flags, a combination of @ref lavu_frame_flags - */ - int flags; - - /** - * MPEG vs JPEG YUV range. - * It must be accessed using av_frame_get_color_range() and - * av_frame_set_color_range(). - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorRange color_range; - - enum AVColorPrimaries color_primaries; - - enum AVColorTransferCharacteristic color_trc; - - /** - * YUV colorspace type. - * It must be accessed using av_frame_get_colorspace() and - * av_frame_set_colorspace(). - * - encoding: Set by user - * - decoding: Set by libavcodec - */ - enum AVColorSpace colorspace; - - enum AVChromaLocation chroma_location; - - /** - * frame timestamp estimated using various heuristics, in stream time base - * Code outside libavutil should access this field using: - * av_frame_get_best_effort_timestamp(frame) - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int64_t best_effort_timestamp; - - /** - * reordered pos from the last AVPacket that has been input into the decoder - * Code outside libavutil should access this field using: - * av_frame_get_pkt_pos(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_pos; - - /** - * duration of the corresponding packet, expressed in - * AVStream->time_base units, 0 if unknown. - * Code outside libavutil should access this field using: - * av_frame_get_pkt_duration(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int64_t pkt_duration; - - /** - * metadata. - * Code outside libavutil should access this field using: - * av_frame_get_metadata(frame) - * - encoding: Set by user. - * - decoding: Set by libavcodec. - */ - AVDictionary *metadata; - - /** - * decode error flags of the frame, set to a combination of - * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there - * were errors during the decoding. - * Code outside libavutil should access this field using: - * av_frame_get_decode_error_flags(frame) - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int decode_error_flags; -#define FF_DECODE_ERROR_INVALID_BITSTREAM 1 -#define FF_DECODE_ERROR_MISSING_REFERENCE 2 - - /** - * number of audio channels, only used for audio. - * Code outside libavutil should access this field using: - * av_frame_get_channels(frame) - * - encoding: unused - * - decoding: Read by user. - */ - int channels; - - /** - * size of the corresponding packet containing the compressed - * frame. It must be accessed using av_frame_get_pkt_size() and - * av_frame_set_pkt_size(). - * It is set to a negative value if unknown. - * - encoding: unused - * - decoding: set by libavcodec, read by user. - */ - int pkt_size; - -#if FF_API_FRAME_QP - /** - * QP table - * Not to be accessed directly from outside libavutil - */ - attribute_deprecated - int8_t *qscale_table; - /** - * QP store stride - * Not to be accessed directly from outside libavutil - */ - attribute_deprecated - int qstride; - - attribute_deprecated - int qscale_type; - - /** - * Not to be accessed directly from outside libavutil - */ - AVBufferRef *qp_table_buf; -#endif -} AVFrame; - -/** - * Accessors for some AVFrame fields. - * The position of these field in the structure is not part of the ABI, - * they should not be accessed directly outside libavutil. - */ -int64_t av_frame_get_best_effort_timestamp(const AVFrame *frame); -void av_frame_set_best_effort_timestamp(AVFrame *frame, int64_t val); -int64_t av_frame_get_pkt_duration (const AVFrame *frame); -void av_frame_set_pkt_duration (AVFrame *frame, int64_t val); -int64_t av_frame_get_pkt_pos (const AVFrame *frame); -void av_frame_set_pkt_pos (AVFrame *frame, int64_t val); -int64_t av_frame_get_channel_layout (const AVFrame *frame); -void av_frame_set_channel_layout (AVFrame *frame, int64_t val); -int av_frame_get_channels (const AVFrame *frame); -void av_frame_set_channels (AVFrame *frame, int val); -int av_frame_get_sample_rate (const AVFrame *frame); -void av_frame_set_sample_rate (AVFrame *frame, int val); -AVDictionary *av_frame_get_metadata (const AVFrame *frame); -void av_frame_set_metadata (AVFrame *frame, AVDictionary *val); -int av_frame_get_decode_error_flags (const AVFrame *frame); -void av_frame_set_decode_error_flags (AVFrame *frame, int val); -int av_frame_get_pkt_size(const AVFrame *frame); -void av_frame_set_pkt_size(AVFrame *frame, int val); -AVDictionary **avpriv_frame_get_metadatap(AVFrame *frame); -#if FF_API_FRAME_QP -int8_t *av_frame_get_qp_table(AVFrame *f, int *stride, int *type); -int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride, int type); -#endif -enum AVColorSpace av_frame_get_colorspace(const AVFrame *frame); -void av_frame_set_colorspace(AVFrame *frame, enum AVColorSpace val); -enum AVColorRange av_frame_get_color_range(const AVFrame *frame); -void av_frame_set_color_range(AVFrame *frame, enum AVColorRange val); - -/** - * Get the name of a colorspace. - * @return a static string identifying the colorspace; can be NULL. - */ -const char *av_get_colorspace_name(enum AVColorSpace val); - -/** - * Allocate an AVFrame and set its fields to default values. The resulting - * struct must be freed using av_frame_free(). - * - * @return An AVFrame filled with default values or NULL on failure. - * - * @note this only allocates the AVFrame itself, not the data buffers. Those - * must be allocated through other means, e.g. with av_frame_get_buffer() or - * manually. - */ -AVFrame *av_frame_alloc(void); - -/** - * Free the frame and any dynamically allocated objects in it, - * e.g. extended_data. If the frame is reference counted, it will be - * unreferenced first. - * - * @param frame frame to be freed. The pointer will be set to NULL. - */ -void av_frame_free(AVFrame **frame); - -/** - * Set up a new reference to the data described by the source frame. - * - * Copy frame properties from src to dst and create a new reference for each - * AVBufferRef from src. - * - * If src is not reference counted, new buffers are allocated and the data is - * copied. - * - * @return 0 on success, a negative AVERROR on error - */ -int av_frame_ref(AVFrame *dst, const AVFrame *src); - -/** - * Create a new frame that references the same data as src. - * - * This is a shortcut for av_frame_alloc()+av_frame_ref(). - * - * @return newly created AVFrame on success, NULL on error. - */ -AVFrame *av_frame_clone(const AVFrame *src); - -/** - * Unreference all the buffers referenced by frame and reset the frame fields. - */ -void av_frame_unref(AVFrame *frame); - -/** - * Move everything contained in src to dst and reset src. - */ -void av_frame_move_ref(AVFrame *dst, AVFrame *src); - -/** - * Allocate new buffer(s) for audio or video data. - * - * The following fields must be set on frame before calling this function: - * - format (pixel format for video, sample format for audio) - * - width and height for video - * - nb_samples and channel_layout for audio - * - * This function will fill AVFrame.data and AVFrame.buf arrays and, if - * necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf. - * For planar formats, one buffer will be allocated for each plane. - * - * @param frame frame in which to store the new buffers. - * @param align required buffer size alignment - * - * @return 0 on success, a negative AVERROR on error. - */ -int av_frame_get_buffer(AVFrame *frame, int align); - -/** - * Check if the frame data is writable. - * - * @return A positive value if the frame data is writable (which is true if and - * only if each of the underlying buffers has only one reference, namely the one - * stored in this frame). Return 0 otherwise. - * - * If 1 is returned the answer is valid until av_buffer_ref() is called on any - * of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly). - * - * @see av_frame_make_writable(), av_buffer_is_writable() - */ -int av_frame_is_writable(AVFrame *frame); - -/** - * Ensure that the frame data is writable, avoiding data copy if possible. - * - * Do nothing if the frame is writable, allocate new buffers and copy the data - * if it is not. - * - * @return 0 on success, a negative AVERROR on error. - * - * @see av_frame_is_writable(), av_buffer_is_writable(), - * av_buffer_make_writable() - */ -int av_frame_make_writable(AVFrame *frame); - -/** - * Copy the frame data from src to dst. - * - * This function does not allocate anything, dst must be already initialized and - * allocated with the same parameters as src. - * - * This function only copies the frame data (i.e. the contents of the data / - * extended data arrays), not any other properties. - * - * @return >= 0 on success, a negative AVERROR on error. - */ -int av_frame_copy(AVFrame *dst, const AVFrame *src); - -/** - * Copy only "metadata" fields from src to dst. - * - * Metadata for the purpose of this function are those fields that do not affect - * the data layout in the buffers. E.g. pts, sample rate (for audio) or sample - * aspect ratio (for video), but not width/height or channel layout. - * Side data is also copied. - */ -int av_frame_copy_props(AVFrame *dst, const AVFrame *src); - -/** - * Get the buffer reference a given data plane is stored in. - * - * @param plane index of the data plane of interest in frame->extended_data. - * - * @return the buffer reference that contains the plane or NULL if the input - * frame is not valid. - */ -AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane); - -/** - * Add a new side data to a frame. - * - * @param frame a frame to which the side data should be added - * @param type type of the added side data - * @param size size of the side data - * - * @return newly added side data on success, NULL on error - */ -AVFrameSideData *av_frame_new_side_data(AVFrame *frame, - enum AVFrameSideDataType type, - int size); - -/** - * @return a pointer to the side data of a given type on success, NULL if there - * is no side data with such type in this frame. - */ -AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, - enum AVFrameSideDataType type); - -/** - * If side data of the supplied type exists in the frame, free it and remove it - * from the frame. - */ -void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type); - -/** - * @return a string identifying the side data type - */ -const char *av_frame_side_data_name(enum AVFrameSideDataType type); - -/** - * @} - */ - -#endif /* AVUTIL_FRAME_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/intfloat.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/intfloat.h deleted file mode 100644 index fe3d7ec4a5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/intfloat.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Mans Rullgard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTFLOAT_H -#define AVUTIL_INTFLOAT_H - -#include -#include "attributes.h" - -union av_intfloat32 { - uint32_t i; - float f; -}; - -union av_intfloat64 { - uint64_t i; - double f; -}; - -/** - * Reinterpret a 32-bit integer as a float. - */ -static av_always_inline float av_int2float(uint32_t i) -{ - union av_intfloat32 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a float as a 32-bit integer. - */ -static av_always_inline uint32_t av_float2int(float f) -{ - union av_intfloat32 v; - v.f = f; - return v.i; -} - -/** - * Reinterpret a 64-bit integer as a double. - */ -static av_always_inline double av_int2double(uint64_t i) -{ - union av_intfloat64 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a double as a 64-bit integer. - */ -static av_always_inline uint64_t av_double2int(double f) -{ - union av_intfloat64 v; - v.f = f; - return v.i; -} - -#endif /* AVUTIL_INTFLOAT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/log.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/log.h deleted file mode 100644 index 321748cd80..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/log.h +++ /dev/null @@ -1,359 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LOG_H -#define AVUTIL_LOG_H - -#include -#include "avutil.h" -#include "attributes.h" -#include "version.h" - -typedef enum { - AV_CLASS_CATEGORY_NA = 0, - AV_CLASS_CATEGORY_INPUT, - AV_CLASS_CATEGORY_OUTPUT, - AV_CLASS_CATEGORY_MUXER, - AV_CLASS_CATEGORY_DEMUXER, - AV_CLASS_CATEGORY_ENCODER, - AV_CLASS_CATEGORY_DECODER, - AV_CLASS_CATEGORY_FILTER, - AV_CLASS_CATEGORY_BITSTREAM_FILTER, - AV_CLASS_CATEGORY_SWSCALER, - AV_CLASS_CATEGORY_SWRESAMPLER, - AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40, - AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT, - AV_CLASS_CATEGORY_DEVICE_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_INPUT, - AV_CLASS_CATEGORY_NB, ///< not part of ABI/API -}AVClassCategory; - -#define AV_IS_INPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT)) - -#define AV_IS_OUTPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT)) - -struct AVOptionRanges; - -/** - * Describe the class of an AVClass context structure. That is an - * arbitrary struct of which the first field is a pointer to an - * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). - */ -typedef struct AVClass { - /** - * The name of the class; usually it is the same name as the - * context structure type to which the AVClass is associated. - */ - const char* class_name; - - /** - * A pointer to a function which returns the name of a context - * instance ctx associated with the class. - */ - const char* (*item_name)(void* ctx); - - /** - * a pointer to the first option specified in the class if any or NULL - * - * @see av_set_default_options() - */ - const struct AVOption *option; - - /** - * LIBAVUTIL_VERSION with which this structure was created. - * This is used to allow fields to be added without requiring major - * version bumps everywhere. - */ - - int version; - - /** - * Offset in the structure where log_level_offset is stored. - * 0 means there is no such variable - */ - int log_level_offset_offset; - - /** - * Offset in the structure where a pointer to the parent context for - * logging is stored. For example a decoder could pass its AVCodecContext - * to eval as such a parent context, which an av_log() implementation - * could then leverage to display the parent context. - * The offset can be NULL. - */ - int parent_log_context_offset; - - /** - * Return next AVOptions-enabled child or NULL - */ - void* (*child_next)(void *obj, void *prev); - - /** - * Return an AVClass corresponding to the next potential - * AVOptions-enabled child. - * - * The difference between child_next and this is that - * child_next iterates over _already existing_ objects, while - * child_class_next iterates over _all possible_ children. - */ - const struct AVClass* (*child_class_next)(const struct AVClass *prev); - - /** - * Category used for visualization (like color) - * This is only set if the category is equal for all objects using this class. - * available since version (51 << 16 | 56 << 8 | 100) - */ - AVClassCategory category; - - /** - * Callback to return the category. - * available since version (51 << 16 | 59 << 8 | 100) - */ - AVClassCategory (*get_category)(void* ctx); - - /** - * Callback to return the supported/allowed ranges. - * available since version (52.12) - */ - int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags); -} AVClass; - -/** - * @addtogroup lavu_log - * - * @{ - * - * @defgroup lavu_log_constants Logging Constants - * - * @{ - */ - -/** - * Print no output. - */ -#define AV_LOG_QUIET -8 - -/** - * Something went really wrong and we will crash now. - */ -#define AV_LOG_PANIC 0 - -/** - * Something went wrong and recovery is not possible. - * For example, no header was found for a format which depends - * on headers or an illegal combination of parameters is used. - */ -#define AV_LOG_FATAL 8 - -/** - * Something went wrong and cannot losslessly be recovered. - * However, not all future data is affected. - */ -#define AV_LOG_ERROR 16 - -/** - * Something somehow does not look correct. This may or may not - * lead to problems. An example would be the use of '-vstrict -2'. - */ -#define AV_LOG_WARNING 24 - -/** - * Standard information. - */ -#define AV_LOG_INFO 32 - -/** - * Detailed information. - */ -#define AV_LOG_VERBOSE 40 - -/** - * Stuff which is only useful for libav* developers. - */ -#define AV_LOG_DEBUG 48 - -/** - * Extremely verbose debugging, useful for libav* development. - */ -#define AV_LOG_TRACE 56 - -#define AV_LOG_MAX_OFFSET (AV_LOG_TRACE - AV_LOG_QUIET) - -/** - * @} - */ - -/** - * Sets additional colors for extended debugging sessions. - * @code - av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n"); - @endcode - * Requires 256color terminal support. Uses outside debugging is not - * recommended. - */ -#define AV_LOG_C(x) ((x) << 8) - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct or NULL if general log. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - */ -void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); - - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_vlog(void *avcl, int level, const char *fmt, va_list vl); - -/** - * Get the current log level - * - * @see lavu_log_constants - * - * @return Current log level - */ -int av_log_get_level(void); - -/** - * Set the log level - * - * @see lavu_log_constants - * - * @param level Logging level - */ -void av_log_set_level(int level); - -/** - * Set the logging callback - * - * @note The callback must be thread safe, even if the application does not use - * threads itself as some codecs are multithreaded. - * - * @see av_log_default_callback - * - * @param callback A logging function with a compatible signature. - */ -void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)); - -/** - * Default logging callback - * - * It prints the message to stderr, optionally colorizing it. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_log_default_callback(void *avcl, int level, const char *fmt, - va_list vl); - -/** - * Return the context name - * - * @param ctx The AVClass context - * - * @return The AVClass class_name - */ -const char* av_default_item_name(void* ctx); -AVClassCategory av_default_get_category(void *ptr); - -/** - * Format a line of log the same way as the default callback. - * @param line buffer to receive the formatted line - * @param line_size size of the buffer - * @param print_prefix used to store whether the prefix must be printed; - * must point to a persistent integer initially set to 1 - */ -void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, - char *line, int line_size, int *print_prefix); - -#if FF_API_DLOG -/** - * av_dlog macros - * @deprecated unused - * Useful to print debug messages that shouldn't get compiled in normally. - */ - -#ifdef DEBUG -# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) -#else -# define av_dlog(pctx, ...) do { if (0) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0) -#endif -#endif /* FF_API_DLOG */ - -/** - * Skip repeated messages, this requires the user app to use av_log() instead of - * (f)printf as the 2 would otherwise interfere and lead to - * "Last message repeated x times" messages below (f)printf messages with some - * bad luck. - * Also to receive the last, "last repeated" line if any, the user app must - * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end - */ -#define AV_LOG_SKIP_REPEATED 1 - -/** - * Include the log severity in messages originating from codecs. - * - * Results in messages such as: - * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts - */ -#define AV_LOG_PRINT_LEVEL 2 - -void av_log_set_flags(int arg); -int av_log_get_flags(void); - -/** - * @} - */ - -#endif /* AVUTIL_LOG_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/macros.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/macros.h deleted file mode 100644 index 2007ee5619..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/macros.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu - * Utility Preprocessor macros - */ - -#ifndef AVUTIL_MACROS_H -#define AVUTIL_MACROS_H - -/** - * @addtogroup preproc_misc Preprocessor String Macros - * - * String manipulation macros - * - * @{ - */ - -#define AV_STRINGIFY(s) AV_TOSTRING(s) -#define AV_TOSTRING(s) #s - -#define AV_GLUE(a, b) a ## b -#define AV_JOIN(a, b) AV_GLUE(a, b) - -/** - * @} - */ - -#define AV_PRAGMA(s) _Pragma(#s) - -#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) - -#endif /* AVUTIL_MACROS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/mathematics.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/mathematics.h deleted file mode 100644 index 57c44f845d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/mathematics.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * copyright (c) 2005-2012 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_MATHEMATICS_H -#define AVUTIL_MATHEMATICS_H - -#include -#include -#include "attributes.h" -#include "rational.h" -#include "intfloat.h" - -#ifndef M_E -#define M_E 2.7182818284590452354 /* e */ -#endif -#ifndef M_LN2 -#define M_LN2 0.69314718055994530942 /* log_e 2 */ -#endif -#ifndef M_LN10 -#define M_LN10 2.30258509299404568402 /* log_e 10 */ -#endif -#ifndef M_LOG2_10 -#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ -#endif -#ifndef M_PHI -#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ -#endif -#ifndef M_PI -#define M_PI 3.14159265358979323846 /* pi */ -#endif -#ifndef M_PI_2 -#define M_PI_2 1.57079632679489661923 /* pi/2 */ -#endif -#ifndef M_SQRT1_2 -#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ -#endif -#ifndef M_SQRT2 -#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ -#endif -#ifndef NAN -#define NAN av_int2float(0x7fc00000) -#endif -#ifndef INFINITY -#define INFINITY av_int2float(0x7f800000) -#endif - -/** - * @addtogroup lavu_math - * @{ - */ - - -enum AVRounding { - AV_ROUND_ZERO = 0, ///< Round toward zero. - AV_ROUND_INF = 1, ///< Round away from zero. - AV_ROUND_DOWN = 2, ///< Round toward -infinity. - AV_ROUND_UP = 3, ///< Round toward +infinity. - AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. - AV_ROUND_PASS_MINMAX = 8192, ///< Flag to pass INT64_MIN/MAX through instead of rescaling, this avoids special cases for AV_NOPTS_VALUE -}; - -/** - * Compute the greatest common divisor of a and b. - * - * @return gcd of a and b up to sign; if a >= 0 and b >= 0, return value is >= 0; - * if a == 0 and b == 0, returns 0. - */ -int64_t av_const av_gcd(int64_t a, int64_t b); - -/** - * Rescale a 64-bit integer with rounding to nearest. - * A simple a*b/c isn't possible as it can overflow. - */ -int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; - -/** - * Rescale a 64-bit integer with specified rounding. - * A simple a*b/c isn't possible as it can overflow. - * - * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is - * INT64_MIN or INT64_MAX then a is passed through unchanged. - */ -int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers. - */ -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers with specified rounding. - * - * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is - * INT64_MIN or INT64_MAX then a is passed through unchanged. - */ -int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, - enum AVRounding) av_const; - -/** - * Compare 2 timestamps each in its own timebases. - * The result of the function is undefined if one of the timestamps - * is outside the int64_t range when represented in the others timebase. - * @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position - */ -int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); - -/** - * Compare 2 integers modulo mod. - * That is we compare integers a and b for which only the least - * significant log2(mod) bits are known. - * - * @param mod must be a power of 2 - * @return a negative value if a is smaller than b - * a positive value if a is greater than b - * 0 if a equals b - */ -int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); - -/** - * Rescale a timestamp while preserving known durations. - * - * @param in_ts Input timestamp - * @param in_tb Input timebase - * @param fs_tb Duration and *last timebase - * @param duration duration till the next call - * @param out_tb Output timebase - */ -int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb); - -/** - * Add a value to a timestamp. - * - * This function guarantees that when the same value is repeatly added that - * no accumulation of rounding errors occurs. - * - * @param ts Input timestamp - * @param ts_tb Input timestamp timebase - * @param inc value to add to ts - * @param inc_tb inc timebase - */ -int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc); - - - /** - * @} - */ - -#endif /* AVUTIL_MATHEMATICS_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/mem.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/mem.h deleted file mode 100644 index d25b3229b7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/mem.h +++ /dev/null @@ -1,406 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * memory handling functions - */ - -#ifndef AVUTIL_MEM_H -#define AVUTIL_MEM_H - -#include -#include - -#include "attributes.h" -#include "error.h" -#include "avutil.h" - -/** - * @addtogroup lavu_mem - * @{ - */ - - -#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v -#elif defined(__TI_COMPILER_VERSION__) - #define DECLARE_ALIGNED(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - t __attribute__((aligned(n))) v - #define DECLARE_ASM_CONST(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - static const t __attribute__((aligned(n))) v -#elif defined(__GNUC__) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v -#elif defined(_MSC_VER) - #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v - #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v -#else - #define DECLARE_ALIGNED(n,t,v) t v - #define DECLARE_ASM_CONST(n,t,v) static const t v -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) - #define av_malloc_attrib __attribute__((__malloc__)) -#else - #define av_malloc_attrib -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) - #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__))) -#else - #define av_alloc_size(...) -#endif - -/** - * Allocate a block of size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU). - * @param size Size in bytes for the memory block to be allocated. - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_mallocz() - */ -void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a block of size * nmemb bytes with av_malloc(). - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_malloc() - */ -av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size) -{ - if (!size || nmemb >= INT_MAX / size) - return NULL; - return av_malloc(nmemb * size); -} - -/** - * Allocate or reallocate a block of memory. - * If ptr is NULL and size > 0, allocate a new block. If - * size is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or NULL. - * @param size Size in bytes of the memory block to be allocated or - * reallocated. - * @return Pointer to a newly-reallocated block or NULL if the block - * cannot be reallocated or the function is used to free the memory block. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_realloc(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - * @see av_fast_realloc() - */ -void *av_realloc(void *ptr, size_t size) av_alloc_size(2); - -/** - * Allocate or reallocate a block of memory. - * This function does the same thing as av_realloc, except: - * - It takes two arguments and checks the result of the multiplication for - * integer overflow. - * - It frees the input block in case of failure, thus avoiding the memory - * leak with the classic "buf = realloc(buf); if (!buf) return -1;". - */ -void *av_realloc_f(void *ptr, size_t nelem, size_t elsize); - -/** - * Allocate or reallocate a block of memory. - * If *ptr is NULL and size > 0, allocate a new block. If - * size is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a pointer to a memory block already allocated - * with av_realloc(), or pointer to a pointer to NULL. - * The pointer is updated on success, or freed on failure. - * @param size Size in bytes for the memory block to be allocated or - * reallocated - * @return Zero on success, an AVERROR error code on failure. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_reallocp(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - */ -av_warn_unused_result -int av_reallocp(void *ptr, size_t size); - -/** - * Allocate or reallocate an array. - * If ptr is NULL and nmemb > 0, allocate a new block. If - * nmemb is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or NULL. - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to a newly-reallocated block or NULL if the block - * cannot be reallocated or the function is used to free the memory block. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_realloc(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - */ -av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size); - -/** - * Allocate or reallocate an array through a pointer to a pointer. - * If *ptr is NULL and nmemb > 0, allocate a new block. If - * nmemb is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a pointer to a memory block already allocated - * with av_realloc(), or pointer to a pointer to NULL. - * The pointer is updated on success, or freed on failure. - * @param nmemb Number of elements - * @param size Size of the single element - * @return Zero on success, an AVERROR error code on failure. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_realloc(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - */ -av_alloc_size(2, 3) int av_reallocp_array(void *ptr, size_t nmemb, size_t size); - -/** - * Free a memory block which has been allocated with av_malloc(z)() or - * av_realloc(). - * @param ptr Pointer to the memory block which should be freed. - * @note ptr = NULL is explicitly allowed. - * @note It is recommended that you use av_freep() instead. - * @see av_freep() - */ -void av_free(void *ptr); - -/** - * Allocate a block of size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU) and - * zero all the bytes of the block. - * @param size Size in bytes for the memory block to be allocated. - * @return Pointer to the allocated block, NULL if it cannot be allocated. - * @see av_malloc() - */ -void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a block of nmemb * size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU) and - * zero all the bytes of the block. - * The allocation will fail if nmemb * size is greater than or equal - * to INT_MAX. - * @param nmemb - * @param size - * @return Pointer to the allocated block, NULL if it cannot be allocated. - */ -void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib; - -/** - * Allocate a block of size * nmemb bytes with av_mallocz(). - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_mallocz() - * @see av_malloc_array() - */ -av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size) -{ - if (!size || nmemb >= INT_MAX / size) - return NULL; - return av_mallocz(nmemb * size); -} - -/** - * Duplicate the string s. - * @param s string to be duplicated - * @return Pointer to a newly-allocated string containing a - * copy of s or NULL if the string cannot be allocated. - */ -char *av_strdup(const char *s) av_malloc_attrib; - -/** - * Duplicate a substring of the string s. - * @param s string to be duplicated - * @param len the maximum length of the resulting string (not counting the - * terminating byte). - * @return Pointer to a newly-allocated string containing a - * copy of s or NULL if the string cannot be allocated. - */ -char *av_strndup(const char *s, size_t len) av_malloc_attrib; - -/** - * Duplicate the buffer p. - * @param p buffer to be duplicated - * @return Pointer to a newly allocated buffer containing a - * copy of p or NULL if the buffer cannot be allocated. - */ -void *av_memdup(const void *p, size_t size); - -/** - * Free a memory block which has been allocated with av_malloc(z)() or - * av_realloc() and set the pointer pointing to it to NULL. - * @param ptr Pointer to the pointer to the memory block which should - * be freed. - * @note passing a pointer to a NULL pointer is safe and leads to no action. - * @see av_free() - */ -void av_freep(void *ptr); - -/** - * Add an element to a dynamic array. - * - * The array to grow is supposed to be an array of pointers to - * structures, and the element to add must be a pointer to an already - * allocated structure. - * - * The array is reallocated when its size reaches powers of 2. - * Therefore, the amortized cost of adding an element is constant. - * - * In case of success, the pointer to the array is updated in order to - * point to the new grown array, and the number pointed to by nb_ptr - * is incremented. - * In case of failure, the array is freed, *tab_ptr is set to NULL and - * *nb_ptr is set to 0. - * - * @param tab_ptr pointer to the array to grow - * @param nb_ptr pointer to the number of elements in the array - * @param elem element to add - * @see av_dynarray_add_nofree(), av_dynarray2_add() - */ -void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem); - -/** - * Add an element to a dynamic array. - * - * Function has the same functionality as av_dynarray_add(), - * but it doesn't free memory on fails. It returns error code - * instead and leave current buffer untouched. - * - * @param tab_ptr pointer to the array to grow - * @param nb_ptr pointer to the number of elements in the array - * @param elem element to add - * @return >=0 on success, negative otherwise. - * @see av_dynarray_add(), av_dynarray2_add() - */ -av_warn_unused_result -int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem); - -/** - * Add an element of size elem_size to a dynamic array. - * - * The array is reallocated when its number of elements reaches powers of 2. - * Therefore, the amortized cost of adding an element is constant. - * - * In case of success, the pointer to the array is updated in order to - * point to the new grown array, and the number pointed to by nb_ptr - * is incremented. - * In case of failure, the array is freed, *tab_ptr is set to NULL and - * *nb_ptr is set to 0. - * - * @param tab_ptr pointer to the array to grow - * @param nb_ptr pointer to the number of elements in the array - * @param elem_size size in bytes of the elements in the array - * @param elem_data pointer to the data of the element to add. If NULL, the space of - * the new added element is not filled. - * @return pointer to the data of the element to copy in the new allocated space. - * If NULL, the new allocated space is left uninitialized." - * @see av_dynarray_add(), av_dynarray_add_nofree() - */ -void *av_dynarray2_add(void **tab_ptr, int *nb_ptr, size_t elem_size, - const uint8_t *elem_data); - -/** - * Multiply two size_t values checking for overflow. - * @return 0 if success, AVERROR(EINVAL) if overflow. - */ -static inline int av_size_mult(size_t a, size_t b, size_t *r) -{ - size_t t = a * b; - /* Hack inspired from glibc: only try the division if nelem and elsize - * are both greater than sqrt(SIZE_MAX). */ - if ((a | b) >= ((size_t)1 << (sizeof(size_t) * 4)) && a && t / a != b) - return AVERROR(EINVAL); - *r = t; - return 0; -} - -/** - * Set the maximum size that may me allocated in one block. - */ -void av_max_alloc(size_t max); - -/** - * deliberately overlapping memcpy implementation - * @param dst destination buffer - * @param back how many bytes back we start (the initial size of the overlapping window), must be > 0 - * @param cnt number of bytes to copy, must be >= 0 - * - * cnt > back is valid, this will copy the bytes we just copied, - * thus creating a repeating pattern with a period length of back. - */ -void av_memcpy_backptr(uint8_t *dst, int back, int cnt); - -/** - * Reallocate the given block if it is not large enough, otherwise do nothing. - * - * @see av_realloc - */ -void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate a buffer, reusing the given one if large enough. - * - * Contrary to av_fast_realloc the current buffer contents might not be - * preserved and on error the old buffer is freed, thus no special - * handling to avoid memleaks is necessary. - * - * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer - * @param size size of the buffer *ptr points to - * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and - * *size 0 if an error occurred. - */ -void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate a buffer, reusing the given one if large enough. - * - * All newly allocated space is initially cleared - * Contrary to av_fast_realloc the current buffer contents might not be - * preserved and on error the old buffer is freed, thus no special - * handling to avoid memleaks is necessary. - * - * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer - * @param size size of the buffer *ptr points to - * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and - * *size 0 if an error occurred. - */ -void av_fast_mallocz(void *ptr, unsigned int *size, size_t min_size); - -/** - * @} - */ - -#endif /* AVUTIL_MEM_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/pixfmt.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/pixfmt.h deleted file mode 100644 index c01c0575f7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/pixfmt.h +++ /dev/null @@ -1,473 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXFMT_H -#define AVUTIL_PIXFMT_H - -/** - * @file - * pixel format definitions - * - */ - -#include "libavutil/avconfig.h" -#include "version.h" - -#define AVPALETTE_SIZE 1024 -#define AVPALETTE_COUNT 256 - -/** - * Pixel format. - * - * @note - * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA - * color is put together as: - * (A << 24) | (R << 16) | (G << 8) | B - * This is stored as BGRA on little-endian CPU architectures and ARGB on - * big-endian CPUs. - * - * @par - * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized - * image data is stored in AVFrame.data[0]. The palette is transported in - * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is - * formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is - * also endian-specific). Note also that the individual RGB32 palette - * components stored in AVFrame.data[1] should be in the range 0..255. - * This is important as many custom PAL8 video codecs that were designed - * to run on the IBM VGA graphics adapter use 6-bit palette components. - * - * @par - * For all the 8bit per pixel formats, an RGB32 palette is in data[1] like - * for pal8. This palette is filled in automatically by the function - * allocating the picture. - */ -enum AVPixelFormat { - AV_PIX_FMT_NONE = -1, - AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - AV_PIX_FMT_GRAY8, ///< Y , 8bpp - AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_PAL8, ///< 8 bit with AV_PIX_FMT_RGB32 palette - AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range - AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting color_range - AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting color_range -#if FF_API_XVMC - AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing - AV_PIX_FMT_XVMC_MPEG2_IDCT, -#define AV_PIX_FMT_XVMC AV_PIX_FMT_XVMC_MPEG2_IDCT -#endif /* FF_API_XVMC */ - AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped - - AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian - AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian - AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range - AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) -#if FF_API_VDPAU - AV_PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined - AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined - - AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined - AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined - -#if FF_API_VAAPI - /** @name Deprecated pixel formats */ - /**@{*/ - AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers - AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers - AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - /**@}*/ - AV_PIX_FMT_VAAPI = AV_PIX_FMT_VAAPI_VLD, -#else - /** - * Hardware acceleration through VA-API, data[3] contains a - * VASurfaceID. - */ - AV_PIX_FMT_VAAPI, -#endif - - AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian -#if FF_API_VDPAU - AV_PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined - AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined - AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined - AV_PIX_FMT_YA8, ///< 8bit gray, 8bit alpha - - AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 - AV_PIX_FMT_GRAY8A= AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 - - AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - - /** - * The following 12 formats have the disadvantage of needing 1 format for each bit depth. - * Notice that each 9/10 bits sample is stored in 16 bits with extra padding. - * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better. - */ - AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_VDA_VLD, ///< hardware decoding through VDA - AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp - AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian - AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian - AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian - AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian - AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian - AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian - AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) - AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) - AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian - AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian - AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - - AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface - - AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_NV16, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - - AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - - AV_PIX_FMT_YVYU422, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb - - AV_PIX_FMT_VDA, ///< HW acceleration through VDA, data[3] contains a CVPixelBufferRef - - AV_PIX_FMT_YA16BE, ///< 16bit gray, 16bit alpha (big-endian) - AV_PIX_FMT_YA16LE, ///< 16bit gray, 16bit alpha (little-endian) - - AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp - AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian - AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian - /** - * HW acceleration through QSV, data[3] contains a pointer to the - * mfxFrameSurface1 structure. - */ - AV_PIX_FMT_QSV, - /** - * HW acceleration though MMAL, data[3] contains a pointer to the - * MMAL_BUFFER_HEADER_T structure. - */ - AV_PIX_FMT_MMAL, - - AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer - - AV_PIX_FMT_0RGB=0x123+4,///< packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined - AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined - AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined - AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined - - AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian - AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian - AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian - AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian - AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV411P and setting color_range - - AV_PIX_FMT_BAYER_BGGR8, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_RGGB8, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_GBRG8, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_GRBG8, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples */ - AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian */ - AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian */ - AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian */ - AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian */ - AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian */ -#if !FF_API_XVMC - AV_PIX_FMT_XVMC,///< XVideo Motion Acceleration via common packet passing -#endif /* !FF_API_XVMC */ - AV_PIX_FMT_YUV440P10LE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian - AV_PIX_FMT_YUV440P10BE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian - AV_PIX_FMT_YUV440P12LE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian - AV_PIX_FMT_YUV440P12BE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian - AV_PIX_FMT_AYUV64LE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_AYUV64BE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - - AV_PIX_FMT_VIDEOTOOLBOX, ///< hardware decoding through Videotoolbox - - AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian - AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian - - AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions -}; - -#define AV_PIX_FMT_Y400A AV_PIX_FMT_GRAY8A -#define AV_PIX_FMT_GBR24P AV_PIX_FMT_GBRP - -#if AV_HAVE_BIGENDIAN -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be -#else -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le -#endif - -#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA) -#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR) -#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA) -#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB) -#define AV_PIX_FMT_0RGB32 AV_PIX_FMT_NE(0RGB, BGR0) -#define AV_PIX_FMT_0BGR32 AV_PIX_FMT_NE(0BGR, RGB0) - -#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) -#define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE) -#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) -#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) -#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) -#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) -#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) -#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) -#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) -#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) -#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) -#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) - -#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) -#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) -#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE) -#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE) -#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE) -#define AV_PIX_FMT_YUV440P10 AV_PIX_FMT_NE(YUV440P10BE, YUV440P10LE) -#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE) -#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE) -#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE) -#define AV_PIX_FMT_YUV440P12 AV_PIX_FMT_NE(YUV440P12BE, YUV440P12LE) -#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE) -#define AV_PIX_FMT_YUV420P14 AV_PIX_FMT_NE(YUV420P14BE, YUV420P14LE) -#define AV_PIX_FMT_YUV422P14 AV_PIX_FMT_NE(YUV422P14BE, YUV422P14LE) -#define AV_PIX_FMT_YUV444P14 AV_PIX_FMT_NE(YUV444P14BE, YUV444P14LE) -#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE) -#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) -#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) - -#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) -#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) -#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) -#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE) -#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) -#define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE) - -#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE) -#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE) -#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) -#define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE) - - -#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) -#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) -#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) -#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE) -#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE) -#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE) -#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE) -#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE) -#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE) - -#define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) -#define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) -#define AV_PIX_FMT_AYUV64 AV_PIX_FMT_NE(AYUV64BE, AYUV64LE) -#define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE) - -/** - * Chromaticity coordinates of the source primaries. - */ -enum AVColorPrimaries { - AVCOL_PRI_RESERVED0 = 0, - AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B - AVCOL_PRI_UNSPECIFIED = 2, - AVCOL_PRI_RESERVED = 3, - AVCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - - AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM - AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above - AVCOL_PRI_FILM = 8, ///< colour filters using Illuminant C - AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020 - AVCOL_PRI_SMPTEST428_1= 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ) - AVCOL_PRI_NB, ///< Not part of ABI -}; - -/** - * Color Transfer Characteristic. - */ -enum AVColorTransferCharacteristic { - AVCOL_TRC_RESERVED0 = 0, - AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 - AVCOL_TRC_UNSPECIFIED = 2, - AVCOL_TRC_RESERVED = 3, - AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM - AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG - AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC - AVCOL_TRC_SMPTE240M = 7, - AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics" - AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" - AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" - AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 - AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut - AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) - AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10 bit system - AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12 bit system - AVCOL_TRC_SMPTEST2084 = 16, ///< SMPTE ST 2084 for 10, 12, 14 and 16 bit systems - AVCOL_TRC_SMPTEST428_1 = 17, ///< SMPTE ST 428-1 - AVCOL_TRC_NB, ///< Not part of ABI -}; - -/** - * YUV colorspace type. - */ -enum AVColorSpace { - AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB) - AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B - AVCOL_SPC_UNSPECIFIED = 2, - AVCOL_SPC_RESERVED = 3, - AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) - AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 - AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above - AVCOL_SPC_SMPTE240M = 7, - AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 - AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system - AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system - AVCOL_SPC_NB, ///< Not part of ABI -}; -#define AVCOL_SPC_YCGCO AVCOL_SPC_YCOCG - - -/** - * MPEG vs JPEG YUV range. - */ -enum AVColorRange { - AVCOL_RANGE_UNSPECIFIED = 0, - AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges - AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges - AVCOL_RANGE_NB, ///< Not part of ABI -}; - -/** - * Location of chroma samples. - * - * Illustration showing the location of the first (top left) chroma sample of the - * image, the left shows only luma, the right - * shows the location of the chroma sample, the 2 could be imagined to overlay - * each other but are drawn separately due to limitations of ASCII - * - * 1st 2nd 1st 2nd horizontal luma sample positions - * v v v v - * ______ ______ - *1st luma line > |X X ... |3 4 X ... X are luma samples, - * | |1 2 1-6 are possible chroma positions - *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position - */ -enum AVChromaLocation { - AVCHROMA_LOC_UNSPECIFIED = 0, - AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4 4:2:0, h264 default for 4:2:0 - AVCHROMA_LOC_CENTER = 2, ///< mpeg1 4:2:0, jpeg 4:2:0, h263 4:2:0 - AVCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2 - AVCHROMA_LOC_TOP = 4, - AVCHROMA_LOC_BOTTOMLEFT = 5, - AVCHROMA_LOC_BOTTOM = 6, - AVCHROMA_LOC_NB, ///< Not part of ABI -}; - -#endif /* AVUTIL_PIXFMT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/rational.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/rational.h deleted file mode 100644 index 2897469680..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/rational.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - * rational numbers - * Copyright (c) 2003 Michael Niedermayer - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * rational numbers - * @author Michael Niedermayer - */ - -#ifndef AVUTIL_RATIONAL_H -#define AVUTIL_RATIONAL_H - -#include -#include -#include "attributes.h" - -/** - * @addtogroup lavu_math - * @{ - */ - -/** - * rational number numerator/denominator - */ -typedef struct AVRational{ - int num; ///< numerator - int den; ///< denominator -} AVRational; - -/** - * Create a rational. - * Useful for compilers that do not support compound literals. - * @note The return value is not reduced. - */ -static inline AVRational av_make_q(int num, int den) -{ - AVRational r = { num, den }; - return r; -} - -/** - * Compare two rationals. - * @param a first rational - * @param b second rational - * @return 0 if a==b, 1 if a>b, -1 if a>63)|1; - else if(b.den && a.den) return 0; - else if(a.num && b.num) return (a.num>>31) - (b.num>>31); - else return INT_MIN; -} - -/** - * Convert rational to double. - * @param a rational to convert - * @return (double) a - */ -static inline double av_q2d(AVRational a){ - return a.num / (double) a.den; -} - -/** - * Reduce a fraction. - * This is useful for framerate calculations. - * @param dst_num destination numerator - * @param dst_den destination denominator - * @param num source numerator - * @param den source denominator - * @param max the maximum allowed for dst_num & dst_den - * @return 1 if exact, 0 otherwise - */ -int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); - -/** - * Multiply two rationals. - * @param b first rational - * @param c second rational - * @return b*c - */ -AVRational av_mul_q(AVRational b, AVRational c) av_const; - -/** - * Divide one rational by another. - * @param b first rational - * @param c second rational - * @return b/c - */ -AVRational av_div_q(AVRational b, AVRational c) av_const; - -/** - * Add two rationals. - * @param b first rational - * @param c second rational - * @return b+c - */ -AVRational av_add_q(AVRational b, AVRational c) av_const; - -/** - * Subtract one rational from another. - * @param b first rational - * @param c second rational - * @return b-c - */ -AVRational av_sub_q(AVRational b, AVRational c) av_const; - -/** - * Invert a rational. - * @param q value - * @return 1 / q - */ -static av_always_inline AVRational av_inv_q(AVRational q) -{ - AVRational r = { q.den, q.num }; - return r; -} - -/** - * Convert a double precision floating point number to a rational. - * inf is expressed as {1,0} or {-1,0} depending on the sign. - * - * @param d double to convert - * @param max the maximum allowed numerator and denominator - * @return (AVRational) d - */ -AVRational av_d2q(double d, int max) av_const; - -/** - * @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer - * than q1, 0 if they have the same distance. - */ -int av_nearer_q(AVRational q, AVRational q1, AVRational q2); - -/** - * Find the nearest value in q_list to q. - * @param q_list an array of rationals terminated by {0, 0} - * @return the index of the nearest value found in the array - */ -int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); - -/** - * Converts a AVRational to a IEEE 32bit float. - * - * The float is returned in a uint32_t and its value is platform indepenant. - */ -uint32_t av_q2intfloat(AVRational q); - -/** - * @} - */ - -#endif /* AVUTIL_RATIONAL_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/samplefmt.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/samplefmt.h deleted file mode 100644 index 6a8a031c02..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/samplefmt.h +++ /dev/null @@ -1,271 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_SAMPLEFMT_H -#define AVUTIL_SAMPLEFMT_H - -#include - -#include "avutil.h" -#include "attributes.h" - -/** - * @addtogroup lavu_audio - * @{ - * - * @defgroup lavu_sampfmts Audio sample formats - * - * Audio sample format enumeration and related convenience functions. - * @{ - * - */ - -/** - * Audio sample formats - * - * - The data described by the sample format is always in native-endian order. - * Sample values can be expressed by native C types, hence the lack of a signed - * 24-bit sample format even though it is a common raw audio data format. - * - * - The floating-point formats are based on full volume being in the range - * [-1.0, 1.0]. Any values outside this range are beyond full volume level. - * - * - The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg - * (such as AVFrame in libavcodec) is as follows: - * - * @par - * For planar sample formats, each audio channel is in a separate data plane, - * and linesize is the buffer size, in bytes, for a single plane. All data - * planes must be the same size. For packed sample formats, only the first data - * plane is used, and samples for each channel are interleaved. In this case, - * linesize is the buffer size, in bytes, for the 1 plane. - * - */ -enum AVSampleFormat { - AV_SAMPLE_FMT_NONE = -1, - AV_SAMPLE_FMT_U8, ///< unsigned 8 bits - AV_SAMPLE_FMT_S16, ///< signed 16 bits - AV_SAMPLE_FMT_S32, ///< signed 32 bits - AV_SAMPLE_FMT_FLT, ///< float - AV_SAMPLE_FMT_DBL, ///< double - - AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar - AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar - AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar - AV_SAMPLE_FMT_FLTP, ///< float, planar - AV_SAMPLE_FMT_DBLP, ///< double, planar - - AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically -}; - -/** - * Return the name of sample_fmt, or NULL if sample_fmt is not - * recognized. - */ -const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt); - -/** - * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE - * on error. - */ -enum AVSampleFormat av_get_sample_fmt(const char *name); - -/** - * Return the planar<->packed alternative form of the given sample format, or - * AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the - * requested planar/packed format, the format returned is the same as the - * input. - */ -enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar); - -/** - * Get the packed alternative form of the given sample format. - * - * If the passed sample_fmt is already in packed format, the format returned is - * the same as the input. - * - * @return the packed alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Get the planar alternative form of the given sample format. - * - * If the passed sample_fmt is already in planar format, the format returned is - * the same as the input. - * - * @return the planar alternative form of the given sample format or - AV_SAMPLE_FMT_NONE on error. - */ -enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt); - -/** - * Generate a string corresponding to the sample format with - * sample_fmt, or a header if sample_fmt is negative. - * - * @param buf the buffer where to write the string - * @param buf_size the size of buf - * @param sample_fmt the number of the sample format to print the - * corresponding info string, or a negative value to print the - * corresponding header. - * @return the pointer to the filled buffer or NULL if sample_fmt is - * unknown or in case of other errors - */ -char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); - -/** - * Return number of bytes per sample. - * - * @param sample_fmt the sample format - * @return number of bytes per sample or zero if unknown for the given - * sample format - */ -int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); - -/** - * Check if the sample format is planar. - * - * @param sample_fmt the sample format to inspect - * @return 1 if the sample format is planar, 0 if it is interleaved - */ -int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt); - -/** - * Get the required buffer size for the given audio parameters. - * - * @param[out] linesize calculated linesize, may be NULL - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return required buffer size, or negative error code on failure - */ -int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * @} - * - * @defgroup lavu_sampmanip Samples manipulation - * - * Functions that manipulate audio samples - * @{ - */ - -/** - * Fill plane data pointers and linesize for samples with sample - * format sample_fmt. - * - * The audio_data array is filled with the pointers to the samples data planes: - * for planar, set the start point of each channel's data within the buffer, - * for packed, set the start point of the entire buffer only. - * - * The value pointed to by linesize is set to the aligned size of each - * channel's data buffer for planar layout, or to the aligned size of the - * buffer for all channels for packed layout. - * - * The buffer in buf must be big enough to contain all the samples - * (use av_samples_get_buffer_size() to compute its minimum size), - * otherwise the audio_data pointers will point to invalid data. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize calculated linesize, may be NULL - * @param buf the pointer to a buffer containing the samples - * @param nb_channels the number of channels - * @param nb_samples the number of samples in a single channel - * @param sample_fmt the sample format - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return >=0 on success or a negative error code on failure - * @todo return minimum size in bytes required for the buffer in case - * of success at the next bump - */ -int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, - const uint8_t *buf, - int nb_channels, int nb_samples, - enum AVSampleFormat sample_fmt, int align); - -/** - * Allocate a samples buffer for nb_samples samples, and fill data pointers and - * linesize accordingly. - * The allocated samples buffer can be freed by using av_freep(&audio_data[0]) - * Allocated data will be initialized to silence. - * - * @see enum AVSampleFormat - * The documentation for AVSampleFormat describes the data layout. - * - * @param[out] audio_data array to be filled with the pointer for each channel - * @param[out] linesize aligned size for audio buffer(s), may be NULL - * @param nb_channels number of audio channels - * @param nb_samples number of samples per channel - * @param align buffer size alignment (0 = default, 1 = no alignment) - * @return >=0 on success or a negative error code on failure - * @todo return the size of the allocated buffer in case of success at the next bump - * @see av_samples_fill_arrays() - * @see av_samples_alloc_array_and_samples() - */ -int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, - int nb_samples, enum AVSampleFormat sample_fmt, int align); - -/** - * Allocate a data pointers array, samples buffer for nb_samples - * samples, and fill data pointers and linesize accordingly. - * - * This is the same as av_samples_alloc(), but also allocates the data - * pointers array. - * - * @see av_samples_alloc() - */ -int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels, - int nb_samples, enum AVSampleFormat sample_fmt, int align); - -/** - * Copy samples from src to dst. - * - * @param dst destination array of pointers to data planes - * @param src source array of pointers to data planes - * @param dst_offset offset in samples at which the data will be written to dst - * @param src_offset offset in samples at which the data will be read from src - * @param nb_samples number of samples to be copied - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset, - int src_offset, int nb_samples, int nb_channels, - enum AVSampleFormat sample_fmt); - -/** - * Fill an audio buffer with silence. - * - * @param audio_data array of pointers to data planes - * @param offset offset in samples at which to start filling - * @param nb_samples number of samples to fill - * @param nb_channels number of audio channels - * @param sample_fmt audio sample format - */ -int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples, - int nb_channels, enum AVSampleFormat sample_fmt); - -/** - * @} - * @} - */ -#endif /* AVUTIL_SAMPLEFMT_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/version.h deleted file mode 100644 index 0ea8c79467..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/libavutil/version.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * copyright (c) 2003 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_VERSION_H -#define AVUTIL_VERSION_H - -#include "macros.h" - -/** - * @addtogroup version_utils - * - * Useful to check and match library version in order to maintain - * backward compatibility. - * - * @{ - */ - -#define AV_VERSION_INT(a, b, c) ((a)<<16 | (b)<<8 | (c)) -#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c -#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) - -/** - * Extract version components from the full ::AV_VERSION_INT int as returned - * by functions like ::avformat_version() and ::avcodec_version() - */ -#define AV_VERSION_MAJOR(a) ((a) >> 16) -#define AV_VERSION_MINOR(a) (((a) & 0x00FF00) >> 8) -#define AV_VERSION_MICRO(a) ((a) & 0xFF) - -/** - * @} - */ - -/** - * @file - * @ingroup lavu - * Libavutil version macros - */ - -/** - * @defgroup lavu_ver Version and Build diagnostics - * - * Macros and function useful to check at compiletime and at runtime - * which version of libavutil is in use. - * - * @{ - */ - -#define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 17 -#define LIBAVUTIL_VERSION_MICRO 103 - -#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT - -#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) - -/** - * @} - * - * @defgroup depr_guards Deprecation guards - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @note, when bumping the major version it is recommended to manually - * disable each FF_API_* in its own commit instead of disabling them all - * at once through the bump. This improves the git bisect-ability of the change. - * - * @{ - */ - -#ifndef FF_API_VDPAU -#define FF_API_VDPAU (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_XVMC -#define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_OPT_TYPE_METADATA -#define FF_API_OPT_TYPE_METADATA (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_DLOG -#define FF_API_DLOG (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_VAAPI -#define FF_API_VAAPI (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_FRAME_QP -#define FF_API_FRAME_QP (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_PLUS1_MINUS1 -#define FF_API_PLUS1_MINUS1 (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_ERROR_FRAME -#define FF_API_ERROR_FRAME (LIBAVUTIL_VERSION_MAJOR < 56) -#endif -#ifndef FF_API_CRC_BIG_TABLE -#define FF_API_CRC_BIG_TABLE (LIBAVUTIL_VERSION_MAJOR < 56) -#endif - - -/** - * @} - */ - -#endif /* AVUTIL_VERSION_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma.h deleted file mode 100644 index fb874c3e13..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma.h +++ /dev/null @@ -1,313 +0,0 @@ -/** - * \file api/lzma.h - * \brief The public API of liblzma data compression library - * - * liblzma is a public domain general-purpose data compression library with - * a zlib-like API. The native file format is .xz, but also the old .lzma - * format and raw (no headers) streams are supported. Multiple compression - * algorithms (filters) are supported. Currently LZMA2 is the primary filter. - * - * liblzma is part of XZ Utils . XZ Utils includes - * a gzip-like command line tool named xz and some other tools. XZ Utils - * is developed and maintained by Lasse Collin. - * - * Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK - * . - * - * The SHA-256 implementation is based on the public domain code found from - * 7-Zip , which has a modified version of the public - * domain SHA-256 code found from Crypto++ . - * The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - */ - -#ifndef LZMA_H -#define LZMA_H - -/***************************** - * Required standard headers * - *****************************/ - -/* - * liblzma API headers need some standard types and macros. To allow - * including lzma.h without requiring the application to include other - * headers first, lzma.h includes the required standard headers unless - * they already seem to be included already or if LZMA_MANUAL_HEADERS - * has been defined. - * - * Here's what types and macros are needed and from which headers: - * - stddef.h: size_t, NULL - * - stdint.h: uint8_t, uint32_t, uint64_t, UINT32_C(n), uint64_C(n), - * UINT32_MAX, UINT64_MAX - * - * However, inttypes.h is a little more portable than stdint.h, although - * inttypes.h declares some unneeded things compared to plain stdint.h. - * - * The hacks below aren't perfect, specifically they assume that inttypes.h - * exists and that it typedefs at least uint8_t, uint32_t, and uint64_t, - * and that, in case of incomplete inttypes.h, unsigned int is 32-bit. - * If the application already takes care of setting up all the types and - * macros properly (for example by using gnulib's stdint.h or inttypes.h), - * we try to detect that the macros are already defined and don't include - * inttypes.h here again. However, you may define LZMA_MANUAL_HEADERS to - * force this file to never include any system headers. - * - * Some could argue that liblzma API should provide all the required types, - * for example lzma_uint64, LZMA_UINT64_C(n), and LZMA_UINT64_MAX. This was - * seen as an unnecessary mess, since most systems already provide all the - * necessary types and macros in the standard headers. - * - * Note that liblzma API still has lzma_bool, because using stdbool.h would - * break C89 and C++ programs on many systems. sizeof(bool) in C99 isn't - * necessarily the same as sizeof(bool) in C++. - */ - -#ifndef LZMA_MANUAL_HEADERS - /* - * I suppose this works portably also in C++. Note that in C++, - * we need to get size_t into the global namespace. - */ -# include - - /* - * Skip inttypes.h if we already have all the required macros. If we - * have the macros, we assume that we have the matching typedefs too. - */ -# if !defined(UINT32_C) || !defined(UINT64_C) \ - || !defined(UINT32_MAX) || !defined(UINT64_MAX) - /* - * MSVC has no C99 support, and thus it cannot be used to - * compile liblzma. The liblzma API has to still be usable - * from MSVC, so we need to define the required standard - * integer types here. - */ -# if defined(_WIN32) && defined(_MSC_VER) - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int64 uint64_t; -# else - /* Use the standard inttypes.h. */ -# ifdef __cplusplus - /* - * C99 sections 7.18.2 and 7.18.4 specify - * that C++ implementations define the limit - * and constant macros only if specifically - * requested. Note that if you want the - * format macros (PRIu64 etc.) too, you need - * to define __STDC_FORMAT_MACROS before - * including lzma.h, since re-including - * inttypes.h with __STDC_FORMAT_MACROS - * defined doesn't necessarily work. - */ -# ifndef __STDC_LIMIT_MACROS -# define __STDC_LIMIT_MACROS 1 -# endif -# ifndef __STDC_CONSTANT_MACROS -# define __STDC_CONSTANT_MACROS 1 -# endif -# endif - -# include -# endif - - /* - * Some old systems have only the typedefs in inttypes.h, and - * lack all the macros. For those systems, we need a few more - * hacks. We assume that unsigned int is 32-bit and unsigned - * long is either 32-bit or 64-bit. If these hacks aren't - * enough, the application has to setup the types manually - * before including lzma.h. - */ -# ifndef UINT32_C -# if defined(_WIN32) && defined(_MSC_VER) -# define UINT32_C(n) n ## UI32 -# else -# define UINT32_C(n) n ## U -# endif -# endif - -# ifndef UINT64_C -# if defined(_WIN32) && defined(_MSC_VER) -# define UINT64_C(n) n ## UI64 -# else - /* Get ULONG_MAX. */ -# include -# if ULONG_MAX == 4294967295UL -# define UINT64_C(n) n ## ULL -# else -# define UINT64_C(n) n ## UL -# endif -# endif -# endif - -# ifndef UINT32_MAX -# define UINT32_MAX (UINT32_C(4294967295)) -# endif - -# ifndef UINT64_MAX -# define UINT64_MAX (UINT64_C(18446744073709551615)) -# endif -# endif -#endif /* ifdef LZMA_MANUAL_HEADERS */ - - -/****************** - * LZMA_API macro * - ******************/ - -/* - * Some systems require that the functions and function pointers are - * declared specially in the headers. LZMA_API_IMPORT is for importing - * symbols and LZMA_API_CALL is to specify the calling convention. - * - * By default it is assumed that the application will link dynamically - * against liblzma. #define LZMA_API_STATIC in your application if you - * want to link against static liblzma. If you don't care about portability - * to operating systems like Windows, or at least don't care about linking - * against static liblzma on them, don't worry about LZMA_API_STATIC. That - * is, most developers will never need to use LZMA_API_STATIC. - * - * The GCC variants are a special case on Windows (Cygwin and MinGW). - * We rely on GCC doing the right thing with its auto-import feature, - * and thus don't use __declspec(dllimport). This way developers don't - * need to worry about LZMA_API_STATIC. Also the calling convention is - * omitted on Cygwin but not on MinGW. - */ -#ifndef LZMA_API_IMPORT -# if !defined(LZMA_API_STATIC) && defined(_WIN32) && !defined(__GNUC__) -# define LZMA_API_IMPORT __declspec(dllimport) -# else -# define LZMA_API_IMPORT -# endif -#endif - -#ifndef LZMA_API_CALL -# if defined(_WIN32) && !defined(__CYGWIN__) -# define LZMA_API_CALL __cdecl -# else -# define LZMA_API_CALL -# endif -#endif - -#ifndef LZMA_API -# define LZMA_API(type) LZMA_API_IMPORT type LZMA_API_CALL -#endif - - -/*********** - * nothrow * - ***********/ - -/* - * None of the functions in liblzma may throw an exception. Even - * the functions that use callback functions won't throw exceptions, - * because liblzma would break if a callback function threw an exception. - */ -#ifndef lzma_nothrow -# if defined(__cplusplus) -# define lzma_nothrow throw() -# elif __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) -# define lzma_nothrow __attribute__((__nothrow__)) -# else -# define lzma_nothrow -# endif -#endif - - -/******************** - * GNU C extensions * - ********************/ - -/* - * GNU C extensions are used conditionally in the public API. It doesn't - * break anything if these are sometimes enabled and sometimes not, only - * affects warnings and optimizations. - */ -#if __GNUC__ >= 3 -# ifndef lzma_attribute -# define lzma_attribute(attr) __attribute__(attr) -# endif - - /* warn_unused_result was added in GCC 3.4. */ -# ifndef lzma_attr_warn_unused_result -# if __GNUC__ == 3 && __GNUC_MINOR__ < 4 -# define lzma_attr_warn_unused_result -# endif -# endif - -#else -# ifndef lzma_attribute -# define lzma_attribute(attr) -# endif -#endif - - -#ifndef lzma_attr_pure -# define lzma_attr_pure lzma_attribute((__pure__)) -#endif - -#ifndef lzma_attr_const -# define lzma_attr_const lzma_attribute((__const__)) -#endif - -#ifndef lzma_attr_warn_unused_result -# define lzma_attr_warn_unused_result \ - lzma_attribute((__warn_unused_result__)) -#endif - - -/************** - * Subheaders * - **************/ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Subheaders check that this is defined. It is to prevent including - * them directly from applications. - */ -#define LZMA_H_INTERNAL 1 - -/* Basic features */ -#include "lzma/version.h" -#include "lzma/base.h" -#include "lzma/vli.h" -#include "lzma/check.h" - -/* Filters */ -#include "lzma/filter.h" -#include "lzma/bcj.h" -#include "lzma/delta.h" -#include "lzma/lzma.h" - -/* Container formats */ -#include "lzma/container.h" - -/* Advanced features */ -#include "lzma/stream_flags.h" -#include "lzma/block.h" -#include "lzma/index.h" -#include "lzma/index_hash.h" - -/* Hardware information */ -#include "lzma/hardware.h" - -/* - * All subheaders included. Undefine LZMA_H_INTERNAL to prevent applications - * re-including the subheaders. - */ -#undef LZMA_H_INTERNAL - -#ifdef __cplusplus -} -#endif - -#endif /* ifndef LZMA_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/base.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/base.h deleted file mode 100644 index 43dde8d60f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/base.h +++ /dev/null @@ -1,601 +0,0 @@ -/** - * \file lzma/base.h - * \brief Data types and functions used in many places in liblzma API - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Boolean - * - * This is here because C89 doesn't have stdbool.h. To set a value for - * variables having type lzma_bool, you can use - * - C99's `true' and `false' from stdbool.h; - * - C++'s internal `true' and `false'; or - * - integers one (true) and zero (false). - */ -typedef unsigned char lzma_bool; - - -/** - * \brief Type of reserved enumeration variable in structures - * - * To avoid breaking library ABI when new features are added, several - * structures contain extra variables that may be used in future. Since - * sizeof(enum) can be different than sizeof(int), and sizeof(enum) may - * even vary depending on the range of enumeration constants, we specify - * a separate type to be used for reserved enumeration variables. All - * enumeration constants in liblzma API will be non-negative and less - * than 128, which should guarantee that the ABI won't break even when - * new constants are added to existing enumerations. - */ -typedef enum { - LZMA_RESERVED_ENUM = 0 -} lzma_reserved_enum; - - -/** - * \brief Return values used by several functions in liblzma - * - * Check the descriptions of specific functions to find out which return - * values they can return. With some functions the return values may have - * more specific meanings than described here; those differences are - * described per-function basis. - */ -typedef enum { - LZMA_OK = 0, - /**< - * \brief Operation completed successfully - */ - - LZMA_STREAM_END = 1, - /**< - * \brief End of stream was reached - * - * In encoder, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, or - * LZMA_FINISH was finished. In decoder, this indicates - * that all the data was successfully decoded. - * - * In all cases, when LZMA_STREAM_END is returned, the last - * output bytes should be picked from strm->next_out. - */ - - LZMA_NO_CHECK = 2, - /**< - * \brief Input stream has no integrity check - * - * This return value can be returned only if the - * LZMA_TELL_NO_CHECK flag was used when initializing - * the decoder. LZMA_NO_CHECK is just a warning, and - * the decoding can be continued normally. - * - * It is possible to call lzma_get_check() immediately after - * lzma_code has returned LZMA_NO_CHECK. The result will - * naturally be LZMA_CHECK_NONE, but the possibility to call - * lzma_get_check() may be convenient in some applications. - */ - - LZMA_UNSUPPORTED_CHECK = 3, - /**< - * \brief Cannot calculate the integrity check - * - * The usage of this return value is different in encoders - * and decoders. - * - * Encoders can return this value only from the initialization - * function. If initialization fails with this value, the - * encoding cannot be done, because there's no way to produce - * output with the correct integrity check. - * - * Decoders can return this value only from lzma_code() and - * only if the LZMA_TELL_UNSUPPORTED_CHECK flag was used when - * initializing the decoder. The decoding can still be - * continued normally even if the check type is unsupported, - * but naturally the check will not be validated, and possible - * errors may go undetected. - * - * With decoder, it is possible to call lzma_get_check() - * immediately after lzma_code() has returned - * LZMA_UNSUPPORTED_CHECK. This way it is possible to find - * out what the unsupported Check ID was. - */ - - LZMA_GET_CHECK = 4, - /**< - * \brief Integrity check type is now available - * - * This value can be returned only by the lzma_code() function - * and only if the decoder was initialized with the - * LZMA_TELL_ANY_CHECK flag. LZMA_GET_CHECK tells the - * application that it may now call lzma_get_check() to find - * out the Check ID. This can be used, for example, to - * implement a decoder that accepts only files that have - * strong enough integrity check. - */ - - LZMA_MEM_ERROR = 5, - /**< - * \brief Cannot allocate memory - * - * Memory allocation failed, or the size of the allocation - * would be greater than SIZE_MAX. - * - * Due to internal implementation reasons, the coding cannot - * be continued even if more memory were made available after - * LZMA_MEM_ERROR. - */ - - LZMA_MEMLIMIT_ERROR = 6, - /** - * \brief Memory usage limit was reached - * - * Decoder would need more memory than allowed by the - * specified memory usage limit. To continue decoding, - * the memory usage limit has to be increased with - * lzma_memlimit_set(). - */ - - LZMA_FORMAT_ERROR = 7, - /**< - * \brief File format not recognized - * - * The decoder did not recognize the input as supported file - * format. This error can occur, for example, when trying to - * decode .lzma format file with lzma_stream_decoder, - * because lzma_stream_decoder accepts only the .xz format. - */ - - LZMA_OPTIONS_ERROR = 8, - /**< - * \brief Invalid or unsupported options - * - * Invalid or unsupported options, for example - * - unsupported filter(s) or filter options; or - * - reserved bits set in headers (decoder only). - * - * Rebuilding liblzma with more features enabled, or - * upgrading to a newer version of liblzma may help. - */ - - LZMA_DATA_ERROR = 9, - /**< - * \brief Data is corrupt - * - * The usage of this return value is different in encoders - * and decoders. In both encoder and decoder, the coding - * cannot continue after this error. - * - * Encoders return this if size limits of the target file - * format would be exceeded. These limits are huge, thus - * getting this error from an encoder is mostly theoretical. - * For example, the maximum compressed and uncompressed - * size of a .xz Stream is roughly 8 EiB (2^63 bytes). - * - * Decoders return this error if the input data is corrupt. - * This can mean, for example, invalid CRC32 in headers - * or invalid check of uncompressed data. - */ - - LZMA_BUF_ERROR = 10, - /**< - * \brief No progress is possible - * - * This error code is returned when the coder cannot consume - * any new input and produce any new output. The most common - * reason for this error is that the input stream being - * decoded is truncated or corrupt. - * - * This error is not fatal. Coding can be continued normally - * by providing more input and/or more output space, if - * possible. - * - * Typically the first call to lzma_code() that can do no - * progress returns LZMA_OK instead of LZMA_BUF_ERROR. Only - * the second consecutive call doing no progress will return - * LZMA_BUF_ERROR. This is intentional. - * - * With zlib, Z_BUF_ERROR may be returned even if the - * application is doing nothing wrong, so apps will need - * to handle Z_BUF_ERROR specially. The above hack - * guarantees that liblzma never returns LZMA_BUF_ERROR - * to properly written applications unless the input file - * is truncated or corrupt. This should simplify the - * applications a little. - */ - - LZMA_PROG_ERROR = 11, - /**< - * \brief Programming error - * - * This indicates that the arguments given to the function are - * invalid or the internal state of the decoder is corrupt. - * - Function arguments are invalid or the structures - * pointed by the argument pointers are invalid - * e.g. if strm->next_out has been set to NULL and - * strm->avail_out > 0 when calling lzma_code(). - * - lzma_* functions have been called in wrong order - * e.g. lzma_code() was called right after lzma_end(). - * - If errors occur randomly, the reason might be flaky - * hardware. - * - * If you think that your code is correct, this error code - * can be a sign of a bug in liblzma. See the documentation - * how to report bugs. - */ -} lzma_ret; - - -/** - * \brief The `action' argument for lzma_code() - * - * After the first use of LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, or LZMA_FINISH, - * the same `action' must is used until lzma_code() returns LZMA_STREAM_END. - * Also, the amount of input (that is, strm->avail_in) must not be modified - * by the application until lzma_code() returns LZMA_STREAM_END. Changing the - * `action' or modifying the amount of input will make lzma_code() return - * LZMA_PROG_ERROR. - */ -typedef enum { - LZMA_RUN = 0, - /**< - * \brief Continue coding - * - * Encoder: Encode as much input as possible. Some internal - * buffering will probably be done (depends on the filter - * chain in use), which causes latency: the input used won't - * usually be decodeable from the output of the same - * lzma_code() call. - * - * Decoder: Decode as much input as possible and produce as - * much output as possible. - */ - - LZMA_SYNC_FLUSH = 1, - /**< - * \brief Make all the input available at output - * - * Normally the encoder introduces some latency. - * LZMA_SYNC_FLUSH forces all the buffered data to be - * available at output without resetting the internal - * state of the encoder. This way it is possible to use - * compressed stream for example for communication over - * network. - * - * Only some filters support LZMA_SYNC_FLUSH. Trying to use - * LZMA_SYNC_FLUSH with filters that don't support it will - * make lzma_code() return LZMA_OPTIONS_ERROR. For example, - * LZMA1 doesn't support LZMA_SYNC_FLUSH but LZMA2 does. - * - * Using LZMA_SYNC_FLUSH very often can dramatically reduce - * the compression ratio. With some filters (for example, - * LZMA2), fine-tuning the compression options may help - * mitigate this problem significantly (for example, - * match finder with LZMA2). - * - * Decoders don't support LZMA_SYNC_FLUSH. - */ - - LZMA_FULL_FLUSH = 2, - /**< - * \brief Finish encoding of the current Block - * - * All the input data going to the current Block must have - * been given to the encoder (the last bytes can still be - * pending in* next_in). Call lzma_code() with LZMA_FULL_FLUSH - * until it returns LZMA_STREAM_END. Then continue normally - * with LZMA_RUN or finish the Stream with LZMA_FINISH. - * - * This action is currently supported only by Stream encoder - * and easy encoder (which uses Stream encoder). If there is - * no unfinished Block, no empty Block is created. - */ - - LZMA_FINISH = 3 - /**< - * \brief Finish the coding operation - * - * All the input data must have been given to the encoder - * (the last bytes can still be pending in next_in). - * Call lzma_code() with LZMA_FINISH until it returns - * LZMA_STREAM_END. Once LZMA_FINISH has been used, - * the amount of input must no longer be changed by - * the application. - * - * When decoding, using LZMA_FINISH is optional unless the - * LZMA_CONCATENATED flag was used when the decoder was - * initialized. When LZMA_CONCATENATED was not used, the only - * effect of LZMA_FINISH is that the amount of input must not - * be changed just like in the encoder. - */ -} lzma_action; - - -/** - * \brief Custom functions for memory handling - * - * A pointer to lzma_allocator may be passed via lzma_stream structure - * to liblzma, and some advanced functions take a pointer to lzma_allocator - * as a separate function argument. The library will use the functions - * specified in lzma_allocator for memory handling instead of the default - * malloc() and free(). C++ users should note that the custom memory - * handling functions must not throw exceptions. - * - * liblzma doesn't make an internal copy of lzma_allocator. Thus, it is - * OK to change these function pointers in the middle of the coding - * process, but obviously it must be done carefully to make sure that the - * replacement `free' can deallocate memory allocated by the earlier - * `alloc' function(s). - */ -typedef struct { - /** - * \brief Pointer to a custom memory allocation function - * - * If you don't want a custom allocator, but still want - * custom free(), set this to NULL and liblzma will use - * the standard malloc(). - * - * \param opaque lzma_allocator.opaque (see below) - * \param nmemb Number of elements like in calloc(). liblzma - * will always set nmemb to 1, so it is safe to - * ignore nmemb in a custom allocator if you like. - * The nmemb argument exists only for - * compatibility with zlib and libbzip2. - * \param size Size of an element in bytes. - * liblzma never sets this to zero. - * - * \return Pointer to the beginning of a memory block of - * `size' bytes, or NULL if allocation fails - * for some reason. When allocation fails, functions - * of liblzma return LZMA_MEM_ERROR. - * - * The allocator should not waste time zeroing the allocated buffers. - * This is not only about speed, but also memory usage, since the - * operating system kernel doesn't necessarily allocate the requested - * memory in physical memory until it is actually used. With small - * input files, liblzma may actually need only a fraction of the - * memory that it requested for allocation. - * - * \note LZMA_MEM_ERROR is also used when the size of the - * allocation would be greater than SIZE_MAX. Thus, - * don't assume that the custom allocator must have - * returned NULL if some function from liblzma - * returns LZMA_MEM_ERROR. - */ - void *(LZMA_API_CALL *alloc)(void *opaque, size_t nmemb, size_t size); - - /** - * \brief Pointer to a custom memory freeing function - * - * If you don't want a custom freeing function, but still - * want a custom allocator, set this to NULL and liblzma - * will use the standard free(). - * - * \param opaque lzma_allocator.opaque (see below) - * \param ptr Pointer returned by lzma_allocator.alloc(), - * or when it is set to NULL, a pointer returned - * by the standard malloc(). - */ - void (LZMA_API_CALL *free)(void *opaque, void *ptr); - - /** - * \brief Pointer passed to .alloc() and .free() - * - * opaque is passed as the first argument to lzma_allocator.alloc() - * and lzma_allocator.free(). This intended to ease implementing - * custom memory allocation functions for use with liblzma. - * - * If you don't need this, you should set this to NULL. - */ - void *opaque; - -} lzma_allocator; - - -/** - * \brief Internal data structure - * - * The contents of this structure is not visible outside the library. - */ -typedef struct lzma_internal_s lzma_internal; - - -/** - * \brief Passing data to and from liblzma - * - * The lzma_stream structure is used for - * - passing pointers to input and output buffers to liblzma; - * - defining custom memory hander functions; and - * - holding a pointer to coder-specific internal data structures. - * - * Typical usage: - * - * - After allocating lzma_stream (on stack or with malloc()), it must be - * initialized to LZMA_STREAM_INIT (see LZMA_STREAM_INIT for details). - * - * - Initialize a coder to the lzma_stream, for example by using - * lzma_easy_encoder() or lzma_auto_decoder(). Some notes: - * - In contrast to zlib, strm->next_in and strm->next_out are - * ignored by all initialization functions, thus it is safe - * to not initialize them yet. - * - The initialization functions always set strm->total_in and - * strm->total_out to zero. - * - If the initialization function fails, no memory is left allocated - * that would require freeing with lzma_end() even if some memory was - * associated with the lzma_stream structure when the initialization - * function was called. - * - * - Use lzma_code() to do the actual work. - * - * - Once the coding has been finished, the existing lzma_stream can be - * reused. It is OK to reuse lzma_stream with different initialization - * function without calling lzma_end() first. Old allocations are - * automatically freed. - * - * - Finally, use lzma_end() to free the allocated memory. lzma_end() never - * frees the lzma_stream structure itself. - * - * Application may modify the values of total_in and total_out as it wants. - * They are updated by liblzma to match the amount of data read and - * written, but aren't used for anything else. - */ -typedef struct { - const uint8_t *next_in; /**< Pointer to the next input byte. */ - size_t avail_in; /**< Number of available input bytes in next_in. */ - uint64_t total_in; /**< Total number of bytes read by liblzma. */ - - uint8_t *next_out; /**< Pointer to the next output position. */ - size_t avail_out; /**< Amount of free space in next_out. */ - uint64_t total_out; /**< Total number of bytes written by liblzma. */ - - /** - * \brief Custom memory allocation functions - * - * In most cases this is NULL which makes liblzma use - * the standard malloc() and free(). - */ - lzma_allocator *allocator; - - /** Internal state is not visible to applications. */ - lzma_internal *internal; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. Excluding the initialization of this structure, - * you should not touch these, because the names of these variables - * may change. - */ - void *reserved_ptr1; - void *reserved_ptr2; - void *reserved_ptr3; - void *reserved_ptr4; - uint64_t reserved_int1; - uint64_t reserved_int2; - size_t reserved_int3; - size_t reserved_int4; - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - -} lzma_stream; - - -/** - * \brief Initialization for lzma_stream - * - * When you declare an instance of lzma_stream, you can immediately - * initialize it so that initialization functions know that no memory - * has been allocated yet: - * - * lzma_stream strm = LZMA_STREAM_INIT; - * - * If you need to initialize a dynamically allocated lzma_stream, you can use - * memset(strm_pointer, 0, sizeof(lzma_stream)). Strictly speaking, this - * violates the C standard since NULL may have different internal - * representation than zero, but it should be portable enough in practice. - * Anyway, for maximum portability, you can use something like this: - * - * lzma_stream tmp = LZMA_STREAM_INIT; - * *strm = tmp; - */ -#define LZMA_STREAM_INIT \ - { NULL, 0, 0, NULL, 0, 0, NULL, NULL, \ - NULL, NULL, NULL, NULL, 0, 0, 0, 0, \ - LZMA_RESERVED_ENUM, LZMA_RESERVED_ENUM } - - -/** - * \brief Encode or decode data - * - * Once the lzma_stream has been successfully initialized (e.g. with - * lzma_stream_encoder()), the actual encoding or decoding is done - * using this function. The application has to update strm->next_in, - * strm->avail_in, strm->next_out, and strm->avail_out to pass input - * to and get output from liblzma. - * - * See the description of the coder-specific initialization function to find - * out what `action' values are supported by the coder. - */ -extern LZMA_API(lzma_ret) lzma_code(lzma_stream *strm, lzma_action action) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Free memory allocated for the coder data structures - * - * \param strm Pointer to lzma_stream that is at least initialized - * with LZMA_STREAM_INIT. - * - * After lzma_end(strm), strm->internal is guaranteed to be NULL. No other - * members of the lzma_stream structure are touched. - * - * \note zlib indicates an error if application end()s unfinished - * stream structure. liblzma doesn't do this, and assumes that - * application knows what it is doing. - */ -extern LZMA_API(void) lzma_end(lzma_stream *strm) lzma_nothrow; - - -/** - * \brief Get the memory usage of decoder filter chain - * - * This function is currently supported only when *strm has been initialized - * with a function that takes a memlimit argument. With other functions, you - * should use e.g. lzma_raw_encoder_memusage() or lzma_raw_decoder_memusage() - * to estimate the memory requirements. - * - * This function is useful e.g. after LZMA_MEMLIMIT_ERROR to find out how big - * the memory usage limit should have been to decode the input. Note that - * this may give misleading information if decoding .xz Streams that have - * multiple Blocks, because each Block can have different memory requirements. - * - * \return How much memory is currently allocated for the filter - * decoders. If no filter chain is currently allocated, - * some non-zero value is still returned, which is less than - * or equal to what any filter chain would indicate as its - * memory requirement. - * - * If this function isn't supported by *strm or some other error - * occurs, zero is returned. - */ -extern LZMA_API(uint64_t) lzma_memusage(const lzma_stream *strm) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the current memory usage limit - * - * This function is supported only when *strm has been initialized with - * a function that takes a memlimit argument. - * - * \return On success, the current memory usage limit is returned - * (always non-zero). On error, zero is returned. - */ -extern LZMA_API(uint64_t) lzma_memlimit_get(const lzma_stream *strm) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Set the memory usage limit - * - * This function is supported only when *strm has been initialized with - * a function that takes a memlimit argument. - * - * \return - LZMA_OK: New memory usage limit successfully set. - * - LZMA_MEMLIMIT_ERROR: The new limit is too small. - * The limit was not changed. - * - LZMA_PROG_ERROR: Invalid arguments, e.g. *strm doesn't - * support memory usage limit or memlimit was zero. - */ -extern LZMA_API(lzma_ret) lzma_memlimit_set( - lzma_stream *strm, uint64_t memlimit) lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/bcj.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/bcj.h deleted file mode 100644 index 8e37538ad4..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/bcj.h +++ /dev/null @@ -1,90 +0,0 @@ -/** - * \file lzma/bcj.h - * \brief Branch/Call/Jump conversion filters - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/* Filter IDs for lzma_filter.id */ - -#define LZMA_FILTER_X86 LZMA_VLI_C(0x04) - /**< - * Filter for x86 binaries - */ - -#define LZMA_FILTER_POWERPC LZMA_VLI_C(0x05) - /**< - * Filter for Big endian PowerPC binaries - */ - -#define LZMA_FILTER_IA64 LZMA_VLI_C(0x06) - /**< - * Filter for IA-64 (Itanium) binaries. - */ - -#define LZMA_FILTER_ARM LZMA_VLI_C(0x07) - /**< - * Filter for ARM binaries. - */ - -#define LZMA_FILTER_ARMTHUMB LZMA_VLI_C(0x08) - /**< - * Filter for ARM-Thumb binaries. - */ - -#define LZMA_FILTER_SPARC LZMA_VLI_C(0x09) - /**< - * Filter for SPARC binaries. - */ - - -/** - * \brief Options for BCJ filters - * - * The BCJ filters never change the size of the data. Specifying options - * for them is optional: if pointer to options is NULL, default value is - * used. You probably never need to specify options to BCJ filters, so just - * set the options pointer to NULL and be happy. - * - * If options with non-default values have been specified when encoding, - * the same options must also be specified when decoding. - * - * \note At the moment, none of the BCJ filters support - * LZMA_SYNC_FLUSH. If LZMA_SYNC_FLUSH is specified, - * LZMA_OPTIONS_ERROR will be returned. If there is need, - * partial support for LZMA_SYNC_FLUSH can be added in future. - * Partial means that flushing would be possible only at - * offsets that are multiple of 2, 4, or 16 depending on - * the filter, except x86 which cannot be made to support - * LZMA_SYNC_FLUSH predictably. - */ -typedef struct { - /** - * \brief Start offset for conversions - * - * This setting is useful only when the same filter is used - * _separately_ for multiple sections of the same executable file, - * and the sections contain cross-section branch/call/jump - * instructions. In that case it is beneficial to set the start - * offset of the non-first sections so that the relative addresses - * of the cross-section branch/call/jump instructions will use the - * same absolute addresses as in the first section. - * - * When the pointer to options is NULL, the default value (zero) - * is used. - */ - uint32_t start_offset; - -} lzma_options_bcj; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/block.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/block.h deleted file mode 100644 index 8a4bf2323c..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/block.h +++ /dev/null @@ -1,530 +0,0 @@ -/** - * \file lzma/block.h - * \brief .xz Block handling - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Options for the Block and Block Header encoders and decoders - * - * Different Block handling functions use different parts of this structure. - * Some read some members, other functions write, and some do both. Only the - * members listed for reading need to be initialized when the specified - * functions are called. The members marked for writing will be assigned - * new values at some point either by calling the given function or by - * later calls to lzma_code(). - */ -typedef struct { - /** - * \brief Block format version - * - * To prevent API and ABI breakages if new features are needed in - * the Block field, a version number is used to indicate which - * fields in this structure are in use. For now, version must always - * be zero. With non-zero version, most Block related functions will - * return LZMA_OPTIONS_ERROR. - * - * Read by: - * - All functions that take pointer to lzma_block as argument, - * including lzma_block_header_decode(). - * - * Written by: - * - lzma_block_header_decode() - */ - uint32_t version; - - /** - * \brief Size of the Block Header field - * - * This is always a multiple of four. - * - * Read by: - * - lzma_block_header_encode() - * - lzma_block_header_decode() - * - lzma_block_compressed_size() - * - lzma_block_unpadded_size() - * - lzma_block_total_size() - * - lzma_block_decoder() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_size() - * - lzma_block_buffer_encode() - */ - uint32_t header_size; -# define LZMA_BLOCK_HEADER_SIZE_MIN 8 -# define LZMA_BLOCK_HEADER_SIZE_MAX 1024 - - /** - * \brief Type of integrity Check - * - * The Check ID is not stored into the Block Header, thus its value - * must be provided also when decoding. - * - * Read by: - * - lzma_block_header_encode() - * - lzma_block_header_decode() - * - lzma_block_compressed_size() - * - lzma_block_unpadded_size() - * - lzma_block_total_size() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - lzma_check check; - - /** - * \brief Size of the Compressed Data in bytes - * - * Encoding: If this is not LZMA_VLI_UNKNOWN, Block Header encoder - * will store this value to the Block Header. Block encoder doesn't - * care about this value, but will set it once the encoding has been - * finished. - * - * Decoding: If this is not LZMA_VLI_UNKNOWN, Block decoder will - * verify that the size of the Compressed Data field matches - * compressed_size. - * - * Usually you don't know this value when encoding in streamed mode, - * and thus cannot write this field into the Block Header. - * - * In non-streamed mode you can reserve space for this field before - * encoding the actual Block. After encoding the data, finish the - * Block by encoding the Block Header. Steps in detail: - * - * - Set compressed_size to some big enough value. If you don't know - * better, use LZMA_VLI_MAX, but remember that bigger values take - * more space in Block Header. - * - * - Call lzma_block_header_size() to see how much space you need to - * reserve for the Block Header. - * - * - Encode the Block using lzma_block_encoder() and lzma_code(). - * It sets compressed_size to the correct value. - * - * - Use lzma_block_header_encode() to encode the Block Header. - * Because space was reserved in the first step, you don't need - * to call lzma_block_header_size() anymore, because due to - * reserving, header_size has to be big enough. If it is "too big", - * lzma_block_header_encode() will add enough Header Padding to - * make Block Header to match the size specified by header_size. - * - * Read by: - * - lzma_block_header_size() - * - lzma_block_header_encode() - * - lzma_block_compressed_size() - * - lzma_block_unpadded_size() - * - lzma_block_total_size() - * - lzma_block_decoder() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_decode() - * - lzma_block_compressed_size() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - lzma_vli compressed_size; - - /** - * \brief Uncompressed Size in bytes - * - * This is handled very similarly to compressed_size above. - * - * uncompressed_size is needed by fewer functions than - * compressed_size. This is because uncompressed_size isn't - * needed to validate that Block stays within proper limits. - * - * Read by: - * - lzma_block_header_size() - * - lzma_block_header_encode() - * - lzma_block_decoder() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_decode() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - lzma_vli uncompressed_size; - - /** - * \brief Array of filters - * - * There can be 1-4 filters. The end of the array is marked with - * .id = LZMA_VLI_UNKNOWN. - * - * Read by: - * - lzma_block_header_size() - * - lzma_block_header_encode() - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - * - * Written by: - * - lzma_block_header_decode(): Note that this does NOT free() - * the old filter options structures. All unused filters[] will - * have .id == LZMA_VLI_UNKNOWN and .options == NULL. If - * decoding fails, all filters[] are guaranteed to be - * LZMA_VLI_UNKNOWN and NULL. - * - * \note Because of the array is terminated with - * .id = LZMA_VLI_UNKNOWN, the actual array must - * have LZMA_FILTERS_MAX + 1 members or the Block - * Header decoder will overflow the buffer. - */ - lzma_filter *filters; - - /** - * \brief Raw value stored in the Check field - * - * After successful coding, the first lzma_check_size(check) bytes - * of this array contain the raw value stored in the Check field. - * - * Note that CRC32 and CRC64 are stored in little endian byte order. - * Take it into account if you display the Check values to the user. - * - * Written by: - * - lzma_block_encoder() - * - lzma_block_decoder() - * - lzma_block_buffer_encode() - * - lzma_block_buffer_decode() - */ - uint8_t raw_check[LZMA_CHECK_SIZE_MAX]; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the names - * of these variables may change. These are and will never be used - * with the currently supported options, so it is safe to leave these - * uninitialized. - */ - void *reserved_ptr1; - void *reserved_ptr2; - void *reserved_ptr3; - uint32_t reserved_int1; - uint32_t reserved_int2; - lzma_vli reserved_int3; - lzma_vli reserved_int4; - lzma_vli reserved_int5; - lzma_vli reserved_int6; - lzma_vli reserved_int7; - lzma_vli reserved_int8; - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - lzma_reserved_enum reserved_enum3; - lzma_reserved_enum reserved_enum4; - lzma_bool reserved_bool1; - lzma_bool reserved_bool2; - lzma_bool reserved_bool3; - lzma_bool reserved_bool4; - lzma_bool reserved_bool5; - lzma_bool reserved_bool6; - lzma_bool reserved_bool7; - lzma_bool reserved_bool8; - -} lzma_block; - - -/** - * \brief Decode the Block Header Size field - * - * To decode Block Header using lzma_block_header_decode(), the size of the - * Block Header has to be known and stored into lzma_block.header_size. - * The size can be calculated from the first byte of a Block using this macro. - * Note that if the first byte is 0x00, it indicates beginning of Index; use - * this macro only when the byte is not 0x00. - * - * There is no encoding macro, because Block Header encoder is enough for that. - */ -#define lzma_block_header_size_decode(b) (((uint32_t)(b) + 1) * 4) - - -/** - * \brief Calculate Block Header Size - * - * Calculate the minimum size needed for the Block Header field using the - * settings specified in the lzma_block structure. Note that it is OK to - * increase the calculated header_size value as long as it is a multiple of - * four and doesn't exceed LZMA_BLOCK_HEADER_SIZE_MAX. Increasing header_size - * just means that lzma_block_header_encode() will add Header Padding. - * - * \return - LZMA_OK: Size calculated successfully and stored to - * block->header_size. - * - LZMA_OPTIONS_ERROR: Unsupported version, filters or - * filter options. - * - LZMA_PROG_ERROR: Invalid values like compressed_size == 0. - * - * \note This doesn't check that all the options are valid i.e. this - * may return LZMA_OK even if lzma_block_header_encode() or - * lzma_block_encoder() would fail. If you want to validate the - * filter chain, consider using lzma_memlimit_encoder() which as - * a side-effect validates the filter chain. - */ -extern LZMA_API(lzma_ret) lzma_block_header_size(lzma_block *block) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Encode Block Header - * - * The caller must have calculated the size of the Block Header already with - * lzma_block_header_size(). If a value larger than the one calculated by - * lzma_block_header_size() is used, the Block Header will be padded to the - * specified size. - * - * \param out Beginning of the output buffer. This must be - * at least block->header_size bytes. - * \param block Block options to be encoded. - * - * \return - LZMA_OK: Encoding was successful. block->header_size - * bytes were written to output buffer. - * - LZMA_OPTIONS_ERROR: Invalid or unsupported options. - * - LZMA_PROG_ERROR: Invalid arguments, for example - * block->header_size is invalid or block->filters is NULL. - */ -extern LZMA_API(lzma_ret) lzma_block_header_encode( - const lzma_block *block, uint8_t *out) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Block Header - * - * block->version should be set to the highest value supported by the - * application; currently the only possible version is zero. This function - * will set version to the lowest value that still supports all the features - * required by the Block Header. - * - * The size of the Block Header must have already been decoded with - * lzma_block_header_size_decode() macro and stored to block->header_size. - * - * block->filters must have been allocated, but they don't need to be - * initialized (possible existing filter options are not freed). - * - * \param block Destination for Block options. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() (and also free() - * if an error occurs). - * \param in Beginning of the input buffer. This must be - * at least block->header_size bytes. - * - * \return - LZMA_OK: Decoding was successful. block->header_size - * bytes were read from the input buffer. - * - LZMA_OPTIONS_ERROR: The Block Header specifies some - * unsupported options such as unsupported filters. This can - * happen also if block->version was set to a too low value - * compared to what would be required to properly represent - * the information stored in the Block Header. - * - LZMA_DATA_ERROR: Block Header is corrupt, for example, - * the CRC32 doesn't match. - * - LZMA_PROG_ERROR: Invalid arguments, for example - * block->header_size is invalid or block->filters is NULL. - */ -extern LZMA_API(lzma_ret) lzma_block_header_decode(lzma_block *block, - lzma_allocator *allocator, const uint8_t *in) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Validate and set Compressed Size according to Unpadded Size - * - * Block Header stores Compressed Size, but Index has Unpadded Size. If the - * application has already parsed the Index and is now decoding Blocks, - * it can calculate Compressed Size from Unpadded Size. This function does - * exactly that with error checking: - * - * - Compressed Size calculated from Unpadded Size must be positive integer, - * that is, Unpadded Size must be big enough that after Block Header and - * Check fields there's still at least one byte for Compressed Size. - * - * - If Compressed Size was present in Block Header, the new value - * calculated from Unpadded Size is compared against the value - * from Block Header. - * - * \note This function must be called _after_ decoding the Block Header - * field so that it can properly validate Compressed Size if it - * was present in Block Header. - * - * \return - LZMA_OK: block->compressed_size was set successfully. - * - LZMA_DATA_ERROR: unpadded_size is too small compared to - * block->header_size and lzma_check_size(block->check). - * - LZMA_PROG_ERROR: Some values are invalid. For example, - * block->header_size must be a multiple of four and - * between 8 and 1024 inclusive. - */ -extern LZMA_API(lzma_ret) lzma_block_compressed_size( - lzma_block *block, lzma_vli unpadded_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Calculate Unpadded Size - * - * The Index field stores Unpadded Size and Uncompressed Size. The latter - * can be taken directly from the lzma_block structure after coding a Block, - * but Unpadded Size needs to be calculated from Block Header Size, - * Compressed Size, and size of the Check field. This is where this function - * is needed. - * - * \return Unpadded Size on success, or zero on error. - */ -extern LZMA_API(lzma_vli) lzma_block_unpadded_size(const lzma_block *block) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate the total encoded size of a Block - * - * This is equivalent to lzma_block_unpadded_size() except that the returned - * value includes the size of the Block Padding field. - * - * \return On success, total encoded size of the Block. On error, - * zero is returned. - */ -extern LZMA_API(lzma_vli) lzma_block_total_size(const lzma_block *block) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize .xz Block encoder - * - * Valid actions for lzma_code() are LZMA_RUN, LZMA_SYNC_FLUSH (only if the - * filter chain supports it), and LZMA_FINISH. - * - * \return - LZMA_OK: All good, continue with lzma_code(). - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_UNSUPPORTED_CHECK: block->check specifies a Check ID - * that is not supported by this buid of liblzma. Initializing - * the encoder failed. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_encoder( - lzma_stream *strm, lzma_block *block) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .xz Block decoder - * - * Valid actions for lzma_code() are LZMA_RUN and LZMA_FINISH. Using - * LZMA_FINISH is not required. It is supported only for convenience. - * - * \return - LZMA_OK: All good, continue with lzma_code(). - * - LZMA_UNSUPPORTED_CHECK: Initialization was successful, but - * the given Check ID is not supported, thus Check will be - * ignored. - * - LZMA_PROG_ERROR - * - LZMA_MEM_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_decoder( - lzma_stream *strm, lzma_block *block) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Calculate maximum output size for single-call Block encoding - * - * This is equivalent to lzma_stream_buffer_bound() but for .xz Blocks. - * See the documentation of lzma_stream_buffer_bound(). - */ -extern LZMA_API(size_t) lzma_block_buffer_bound(size_t uncompressed_size) - lzma_nothrow; - - -/** - * \brief Single-call .xz Block encoder - * - * In contrast to the multi-call encoder initialized with - * lzma_block_encoder(), this function encodes also the Block Header. This - * is required to make it possible to write appropriate Block Header also - * in case the data isn't compressible, and different filter chain has to be - * used to encode the data in uncompressed form using uncompressed chunks - * of the LZMA2 filter. - * - * When the data isn't compressible, header_size, compressed_size, and - * uncompressed_size are set just like when the data was compressible, but - * it is possible that header_size is too small to hold the filter chain - * specified in block->filters, because that isn't necessarily the filter - * chain that was actually used to encode the data. lzma_block_unpadded_size() - * still works normally, because it doesn't read the filters array. - * - * \param block Block options: block->version, block->check, - * and block->filters must have been initialized. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_buffer_encode( - lzma_block *block, lzma_allocator *allocator, - const uint8_t *in, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Block decoder - * - * This is single-call equivalent of lzma_block_decoder(), and requires that - * the caller has already decoded Block Header and checked its memory usage. - * - * \param block Block options just like with lzma_block_decoder(). - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_OPTIONS_ERROR - * - LZMA_DATA_ERROR - * - LZMA_MEM_ERROR - * - LZMA_BUF_ERROR: Output buffer was too small. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_block_buffer_decode( - lzma_block *block, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/check.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/check.h deleted file mode 100644 index 6a243db0d7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/check.h +++ /dev/null @@ -1,150 +0,0 @@ -/** - * \file lzma/check.h - * \brief Integrity checks - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Type of the integrity check (Check ID) - * - * The .xz format supports multiple types of checks that are calculated - * from the uncompressed data. They vary in both speed and ability to - * detect errors. - */ -typedef enum { - LZMA_CHECK_NONE = 0, - /**< - * No Check is calculated. - * - * Size of the Check field: 0 bytes - */ - - LZMA_CHECK_CRC32 = 1, - /**< - * CRC32 using the polynomial from the IEEE 802.3 standard - * - * Size of the Check field: 4 bytes - */ - - LZMA_CHECK_CRC64 = 4, - /**< - * CRC64 using the polynomial from the ECMA-182 standard - * - * Size of the Check field: 8 bytes - */ - - LZMA_CHECK_SHA256 = 10 - /**< - * SHA-256 - * - * Size of the Check field: 32 bytes - */ -} lzma_check; - - -/** - * \brief Maximum valid Check ID - * - * The .xz file format specification specifies 16 Check IDs (0-15). Some - * of them are only reserved, that is, no actual Check algorithm has been - * assigned. When decoding, liblzma still accepts unknown Check IDs for - * future compatibility. If a valid but unsupported Check ID is detected, - * liblzma can indicate a warning; see the flags LZMA_TELL_NO_CHECK, - * LZMA_TELL_UNSUPPORTED_CHECK, and LZMA_TELL_ANY_CHECK in container.h. - */ -#define LZMA_CHECK_ID_MAX 15 - - -/** - * \brief Test if the given Check ID is supported - * - * Return true if the given Check ID is supported by this liblzma build. - * Otherwise false is returned. It is safe to call this with a value that - * is not in the range [0, 15]; in that case the return value is always false. - * - * You can assume that LZMA_CHECK_NONE and LZMA_CHECK_CRC32 are always - * supported (even if liblzma is built with limited features). - */ -extern LZMA_API(lzma_bool) lzma_check_is_supported(lzma_check check) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Get the size of the Check field with the given Check ID - * - * Although not all Check IDs have a check algorithm associated, the size of - * every Check is already frozen. This function returns the size (in bytes) of - * the Check field with the specified Check ID. The values are: - * { 0, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, 64 } - * - * If the argument is not in the range [0, 15], UINT32_MAX is returned. - */ -extern LZMA_API(uint32_t) lzma_check_size(lzma_check check) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Maximum size of a Check field - */ -#define LZMA_CHECK_SIZE_MAX 64 - - -/** - * \brief Calculate CRC32 - * - * Calculate CRC32 using the polynomial from the IEEE 802.3 standard. - * - * \param buf Pointer to the input buffer - * \param size Size of the input buffer - * \param crc Previously returned CRC value. This is used to - * calculate the CRC of a big buffer in smaller chunks. - * Set to zero when starting a new calculation. - * - * \return Updated CRC value, which can be passed to this function - * again to continue CRC calculation. - */ -extern LZMA_API(uint32_t) lzma_crc32( - const uint8_t *buf, size_t size, uint32_t crc) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate CRC64 - * - * Calculate CRC64 using the polynomial from the ECMA-182 standard. - * - * This function is used similarly to lzma_crc32(). See its documentation. - */ -extern LZMA_API(uint64_t) lzma_crc64( - const uint8_t *buf, size_t size, uint64_t crc) - lzma_nothrow lzma_attr_pure; - - -/* - * SHA-256 functions are currently not exported to public API. - * Contact Lasse Collin if you think it should be. - */ - - -/** - * \brief Get the type of the integrity check - * - * This function can be called only immediately after lzma_code() has - * returned LZMA_NO_CHECK, LZMA_UNSUPPORTED_CHECK, or LZMA_GET_CHECK. - * Calling this function in any other situation has undefined behavior. - */ -extern LZMA_API(lzma_check) lzma_get_check(const lzma_stream *strm) - lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/container.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/container.h deleted file mode 100644 index 7a9ffc6457..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/container.h +++ /dev/null @@ -1,424 +0,0 @@ -/** - * \file lzma/container.h - * \brief File formats - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/************ - * Encoding * - ************/ - -/** - * \brief Default compression preset - * - * It's not straightforward to recommend a default preset, because in some - * cases keeping the resource usage relatively low is more important that - * getting the maximum compression ratio. - */ -#define LZMA_PRESET_DEFAULT UINT32_C(6) - - -/** - * \brief Mask for preset level - * - * This is useful only if you need to extract the level from the preset - * variable. That should be rare. - */ -#define LZMA_PRESET_LEVEL_MASK UINT32_C(0x1F) - - -/* - * Preset flags - * - * Currently only one flag is defined. - */ - -/** - * \brief Extreme compression preset - * - * This flag modifies the preset to make the encoding significantly slower - * while improving the compression ratio only marginally. This is useful - * when you don't mind wasting time to get as small result as possible. - * - * This flag doesn't affect the memory usage requirements of the decoder (at - * least not significantly). The memory usage of the encoder may be increased - * a little but only at the lowest preset levels (0-3). - */ -#define LZMA_PRESET_EXTREME (UINT32_C(1) << 31) - - -/** - * \brief Calculate approximate memory usage of easy encoder - * - * This function is a wrapper for lzma_raw_encoder_memusage(). - * - * \param preset Compression preset (level and possible flags) - * - * \return Number of bytes of memory required for the given - * preset when encoding. If an error occurs, for example - * due to unsupported preset, UINT64_MAX is returned. - */ -extern LZMA_API(uint64_t) lzma_easy_encoder_memusage(uint32_t preset) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate approximate decoder memory usage of a preset - * - * This function is a wrapper for lzma_raw_decoder_memusage(). - * - * \param preset Compression preset (level and possible flags) - * - * \return Number of bytes of memory required to decompress a file - * that was compressed using the given preset. If an error - * occurs, for example due to unsupported preset, UINT64_MAX - * is returned. - */ -extern LZMA_API(uint64_t) lzma_easy_decoder_memusage(uint32_t preset) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize .xz Stream encoder using a preset number - * - * This function is intended for those who just want to use the basic features - * if liblzma (that is, most developers out there). - * - * \param strm Pointer to lzma_stream that is at least initialized - * with LZMA_STREAM_INIT. - * \param preset Compression preset to use. A preset consist of level - * number and zero or more flags. Usually flags aren't - * used, so preset is simply a number [0, 9] which match - * the options -0 ... -9 of the xz command line tool. - * Additional flags can be be set using bitwise-or with - * the preset level number, e.g. 6 | LZMA_PRESET_EXTREME. - * \param check Integrity check type to use. See check.h for available - * checks. The xz command line tool defaults to - * LZMA_CHECK_CRC64, which is a good choice if you are - * unsure. LZMA_CHECK_CRC32 is good too as long as the - * uncompressed file is not many gigabytes. - * - * \return - LZMA_OK: Initialization succeeded. Use lzma_code() to - * encode your data. - * - LZMA_MEM_ERROR: Memory allocation failed. - * - LZMA_OPTIONS_ERROR: The given compression preset is not - * supported by this build of liblzma. - * - LZMA_UNSUPPORTED_CHECK: The given check type is not - * supported by this liblzma build. - * - LZMA_PROG_ERROR: One or more of the parameters have values - * that will never be valid. For example, strm == NULL. - * - * If initialization fails (return value is not LZMA_OK), all the memory - * allocated for *strm by liblzma is always freed. Thus, there is no need - * to call lzma_end() after failed initialization. - * - * If initialization succeeds, use lzma_code() to do the actual encoding. - * Valid values for `action' (the second argument of lzma_code()) are - * LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future, - * there may be compression levels or flags that don't support LZMA_SYNC_FLUSH. - */ -extern LZMA_API(lzma_ret) lzma_easy_encoder( - lzma_stream *strm, uint32_t preset, lzma_check check) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Stream encoding using a preset number - * - * The maximum required output buffer size can be calculated with - * lzma_stream_buffer_bound(). - * - * \param preset Compression preset to use. See the description - * in lzma_easy_encoder(). - * \param check Type of the integrity check to calculate from - * uncompressed data. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_easy_buffer_encode( - uint32_t preset, lzma_check check, - lzma_allocator *allocator, const uint8_t *in, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Initialize .xz Stream encoder using a custom filter chain - * - * \param strm Pointer to properly prepared lzma_stream - * \param filters Array of filters. This must be terminated with - * filters[n].id = LZMA_VLI_UNKNOWN. See filter.h for - * more information. - * \param check Type of the integrity check to calculate from - * uncompressed data. - * - * \return - LZMA_OK: Initialization was successful. - * - LZMA_MEM_ERROR - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_encoder(lzma_stream *strm, - const lzma_filter *filters, lzma_check check) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .lzma encoder (legacy file format) - * - * The .lzma format is sometimes called the LZMA_Alone format, which is the - * reason for the name of this function. The .lzma format supports only the - * LZMA1 filter. There is no support for integrity checks like CRC32. - * - * Use this function if and only if you need to create files readable by - * legacy LZMA tools such as LZMA Utils 4.32.x. Moving to the .xz format - * is strongly recommended. - * - * The valid action values for lzma_code() are LZMA_RUN and LZMA_FINISH. - * No kind of flushing is supported, because the file format doesn't make - * it possible. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_alone_encoder( - lzma_stream *strm, const lzma_options_lzma *options) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Calculate output buffer size for single-call Stream encoder - * - * When trying to compress uncompressible data, the encoded size will be - * slightly bigger than the input data. This function calculates how much - * output buffer space is required to be sure that lzma_stream_buffer_encode() - * doesn't return LZMA_BUF_ERROR. - * - * The calculated value is not exact, but it is guaranteed to be big enough. - * The actual maximum output space required may be slightly smaller (up to - * about 100 bytes). This should not be a problem in practice. - * - * If the calculated maximum size doesn't fit into size_t or would make the - * Stream grow past LZMA_VLI_MAX (which should never happen in practice), - * zero is returned to indicate the error. - * - * \note The limit calculated by this function applies only to - * single-call encoding. Multi-call encoding may (and probably - * will) have larger maximum expansion when encoding - * uncompressible data. Currently there is no function to - * calculate the maximum expansion of multi-call encoding. - */ -extern LZMA_API(size_t) lzma_stream_buffer_bound(size_t uncompressed_size) - lzma_nothrow; - - -/** - * \brief Single-call .xz Stream encoder - * - * \param filters Array of filters. This must be terminated with - * filters[n].id = LZMA_VLI_UNKNOWN. See filter.h - * for more information. - * \param check Type of the integrity check to calculate from - * uncompressed data. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_UNSUPPORTED_CHECK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_buffer_encode( - lzma_filter *filters, lzma_check check, - lzma_allocator *allocator, const uint8_t *in, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/************ - * Decoding * - ************/ - -/** - * This flag makes lzma_code() return LZMA_NO_CHECK if the input stream - * being decoded has no integrity check. Note that when used with - * lzma_auto_decoder(), all .lzma files will trigger LZMA_NO_CHECK - * if LZMA_TELL_NO_CHECK is used. - */ -#define LZMA_TELL_NO_CHECK UINT32_C(0x01) - - -/** - * This flag makes lzma_code() return LZMA_UNSUPPORTED_CHECK if the input - * stream has an integrity check, but the type of the integrity check is not - * supported by this liblzma version or build. Such files can still be - * decoded, but the integrity check cannot be verified. - */ -#define LZMA_TELL_UNSUPPORTED_CHECK UINT32_C(0x02) - - -/** - * This flag makes lzma_code() return LZMA_GET_CHECK as soon as the type - * of the integrity check is known. The type can then be got with - * lzma_get_check(). - */ -#define LZMA_TELL_ANY_CHECK UINT32_C(0x04) - - -/** - * This flag enables decoding of concatenated files with file formats that - * allow concatenating compressed files as is. From the formats currently - * supported by liblzma, only the .xz format allows concatenated files. - * Concatenated files are not allowed with the legacy .lzma format. - * - * This flag also affects the usage of the `action' argument for lzma_code(). - * When LZMA_CONCATENATED is used, lzma_code() won't return LZMA_STREAM_END - * unless LZMA_FINISH is used as `action'. Thus, the application has to set - * LZMA_FINISH in the same way as it does when encoding. - * - * If LZMA_CONCATENATED is not used, the decoders still accept LZMA_FINISH - * as `action' for lzma_code(), but the usage of LZMA_FINISH isn't required. - */ -#define LZMA_CONCATENATED UINT32_C(0x08) - - -/** - * \brief Initialize .xz Stream decoder - * - * \param strm Pointer to properly prepared lzma_stream - * \param memlimit Memory usage limit as bytes. Use UINT64_MAX - * to effectively disable the limiter. - * \param flags Bitwise-or of zero or more of the decoder flags: - * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, - * LZMA_TELL_ANY_CHECK, LZMA_CONCATENATED - * - * \return - LZMA_OK: Initialization was successful. - * - LZMA_MEM_ERROR: Cannot allocate memory. - * - LZMA_OPTIONS_ERROR: Unsupported flags - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_decoder( - lzma_stream *strm, uint64_t memlimit, uint32_t flags) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode .xz Streams and .lzma files with autodetection - * - * This decoder autodetects between the .xz and .lzma file formats, and - * calls lzma_stream_decoder() or lzma_alone_decoder() once the type - * of the input file has been detected. - * - * \param strm Pointer to properly prepared lzma_stream - * \param memlimit Memory usage limit as bytes. Use UINT64_MAX - * to effectively disable the limiter. - * \param flags Bitwise-or of flags, or zero for no flags. - * - * \return - LZMA_OK: Initialization was successful. - * - LZMA_MEM_ERROR: Cannot allocate memory. - * - LZMA_OPTIONS_ERROR: Unsupported flags - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_auto_decoder( - lzma_stream *strm, uint64_t memlimit, uint32_t flags) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .lzma decoder (legacy file format) - * - * Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH. - * There is no need to use LZMA_FINISH, but allowing it may simplify - * certain types of applications. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_alone_decoder( - lzma_stream *strm, uint64_t memlimit) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Stream decoder - * - * \param memlimit Pointer to how much memory the decoder is allowed - * to allocate. The value pointed by this pointer is - * modified if and only if LZMA_MEMLIMIT_ERROR is - * returned. - * \param flags Bitwise-or of zero or more of the decoder flags: - * LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK, - * LZMA_CONCATENATED. Note that LZMA_TELL_ANY_CHECK - * is not allowed and will return LZMA_PROG_ERROR. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if decoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_FORMAT_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_DATA_ERROR - * - LZMA_NO_CHECK: This can be returned only if using - * the LZMA_TELL_NO_CHECK flag. - * - LZMA_UNSUPPORTED_CHECK: This can be returned only if using - * the LZMA_TELL_UNSUPPORTED_CHECK flag. - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. - * The minimum required memlimit value was stored to *memlimit. - * - LZMA_BUF_ERROR: Output buffer was too small. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_stream_buffer_decode( - uint64_t *memlimit, uint32_t flags, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/delta.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/delta.h deleted file mode 100644 index 592fc4f849..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/delta.h +++ /dev/null @@ -1,77 +0,0 @@ -/** - * \file lzma/delta.h - * \brief Delta filter - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Filter ID - * - * Filter ID of the Delta filter. This is used as lzma_filter.id. - */ -#define LZMA_FILTER_DELTA LZMA_VLI_C(0x03) - - -/** - * \brief Type of the delta calculation - * - * Currently only byte-wise delta is supported. Other possible types could - * be, for example, delta of 16/32/64-bit little/big endian integers, but - * these are not currently planned since byte-wise delta is almost as good. - */ -typedef enum { - LZMA_DELTA_TYPE_BYTE -} lzma_delta_type; - - -/** - * \brief Options for the Delta filter - * - * These options are needed by both encoder and decoder. - */ -typedef struct { - /** For now, this must always be LZMA_DELTA_TYPE_BYTE. */ - lzma_delta_type type; - - /** - * \brief Delta distance - * - * With the only currently supported type, LZMA_DELTA_TYPE_BYTE, - * the distance is as bytes. - * - * Examples: - * - 16-bit stereo audio: distance = 4 bytes - * - 24-bit RGB image data: distance = 3 bytes - */ - uint32_t dist; -# define LZMA_DELTA_DIST_MIN 1 -# define LZMA_DELTA_DIST_MAX 256 - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the names - * of these variables may change. These are and will never be used - * when type is LZMA_DELTA_TYPE_BYTE, so it is safe to leave these - * uninitialized. - */ - uint32_t reserved_int1; - uint32_t reserved_int2; - uint32_t reserved_int3; - uint32_t reserved_int4; - void *reserved_ptr1; - void *reserved_ptr2; - -} lzma_options_delta; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/filter.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/filter.h deleted file mode 100644 index e0bc163ad3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/filter.h +++ /dev/null @@ -1,424 +0,0 @@ -/** - * \file lzma/filter.h - * \brief Common filter related types and functions - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Maximum number of filters in a chain - * - * A filter chain can have 1-4 filters, of which three are allowed to change - * the size of the data. Usually only one or two filters are needed. - */ -#define LZMA_FILTERS_MAX 4 - - -/** - * \brief Filter options - * - * This structure is used to pass Filter ID and a pointer filter's - * options to liblzma. A few functions work with a single lzma_filter - * structure, while most functions expect a filter chain. - * - * A filter chain is indicated with an array of lzma_filter structures. - * The array is terminated with .id = LZMA_VLI_UNKNOWN. Thus, the filter - * array must have LZMA_FILTERS_MAX + 1 elements (that is, five) to - * be able to hold any arbitrary filter chain. This is important when - * using lzma_block_header_decode() from block.h, because too small - * array would make liblzma write past the end of the filters array. - */ -typedef struct { - /** - * \brief Filter ID - * - * Use constants whose name begin with `LZMA_FILTER_' to specify - * different filters. In an array of lzma_filter structures, use - * LZMA_VLI_UNKNOWN to indicate end of filters. - * - * \note This is not an enum, because on some systems enums - * cannot be 64-bit. - */ - lzma_vli id; - - /** - * \brief Pointer to filter-specific options structure - * - * If the filter doesn't need options, set this to NULL. If id is - * set to LZMA_VLI_UNKNOWN, options is ignored, and thus - * doesn't need be initialized. - */ - void *options; - -} lzma_filter; - - -/** - * \brief Test if the given Filter ID is supported for encoding - * - * Return true if the give Filter ID is supported for encoding by this - * liblzma build. Otherwise false is returned. - * - * There is no way to list which filters are available in this particular - * liblzma version and build. It would be useless, because the application - * couldn't know what kind of options the filter would need. - */ -extern LZMA_API(lzma_bool) lzma_filter_encoder_is_supported(lzma_vli id) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Test if the given Filter ID is supported for decoding - * - * Return true if the give Filter ID is supported for decoding by this - * liblzma build. Otherwise false is returned. - */ -extern LZMA_API(lzma_bool) lzma_filter_decoder_is_supported(lzma_vli id) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Copy the filters array - * - * Copy the Filter IDs and filter-specific options from src to dest. - * Up to LZMA_FILTERS_MAX filters are copied, plus the terminating - * .id == LZMA_VLI_UNKNOWN. Thus, dest should have at least - * LZMA_FILTERS_MAX + 1 elements space unless the caller knows that - * src is smaller than that. - * - * Unless the filter-specific options is NULL, the Filter ID has to be - * supported by liblzma, because liblzma needs to know the size of every - * filter-specific options structure. The filter-specific options are not - * validated. If options is NULL, any unsupported Filter IDs are copied - * without returning an error. - * - * Old filter-specific options in dest are not freed, so dest doesn't - * need to be initialized by the caller in any way. - * - * If an error occurs, memory possibly already allocated by this function - * is always freed. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR: Unsupported Filter ID and its options - * is not NULL. - * - LZMA_PROG_ERROR: src or dest is NULL. - */ -extern LZMA_API(lzma_ret) lzma_filters_copy(const lzma_filter *src, - lzma_filter *dest, lzma_allocator *allocator) lzma_nothrow; - - -/** - * \brief Calculate approximate memory requirements for raw encoder - * - * This function can be used to calculate the memory requirements for - * Block and Stream encoders too because Block and Stream encoders don't - * need significantly more memory than raw encoder. - * - * \param filters Array of filters terminated with - * .id == LZMA_VLI_UNKNOWN. - * - * \return Number of bytes of memory required for the given - * filter chain when encoding. If an error occurs, - * for example due to unsupported filter chain, - * UINT64_MAX is returned. - */ -extern LZMA_API(uint64_t) lzma_raw_encoder_memusage(const lzma_filter *filters) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Calculate approximate memory requirements for raw decoder - * - * This function can be used to calculate the memory requirements for - * Block and Stream decoders too because Block and Stream decoders don't - * need significantly more memory than raw decoder. - * - * \param filters Array of filters terminated with - * .id == LZMA_VLI_UNKNOWN. - * - * \return Number of bytes of memory required for the given - * filter chain when decoding. If an error occurs, - * for example due to unsupported filter chain, - * UINT64_MAX is returned. - */ -extern LZMA_API(uint64_t) lzma_raw_decoder_memusage(const lzma_filter *filters) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize raw encoder - * - * This function may be useful when implementing custom file formats. - * - * \param strm Pointer to properly prepared lzma_stream - * \param filters Array of lzma_filter structures. The end of the - * array must be marked with .id = LZMA_VLI_UNKNOWN. - * - * The `action' with lzma_code() can be LZMA_RUN, LZMA_SYNC_FLUSH (if the - * filter chain supports it), or LZMA_FINISH. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_raw_encoder( - lzma_stream *strm, const lzma_filter *filters) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize raw decoder - * - * The initialization of raw decoder goes similarly to raw encoder. - * - * The `action' with lzma_code() can be LZMA_RUN or LZMA_FINISH. Using - * LZMA_FINISH is not required, it is supported just for convenience. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_raw_decoder( - lzma_stream *strm, const lzma_filter *filters) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Update the filter chain in the encoder - * - * This function is for advanced users only. This function has two slightly - * different purposes: - * - * - After LZMA_FULL_FLUSH when using Stream encoder: Set a new filter - * chain, which will be used starting from the next Block. - * - * - After LZMA_SYNC_FLUSH using Raw, Block, or Stream encoder: Change - * the filter-specific options in the middle of encoding. The actual - * filters in the chain (Filter IDs) cannot be changed. In the future, - * it might become possible to change the filter options without - * using LZMA_SYNC_FLUSH. - * - * While rarely useful, this function may be called also when no data has - * been compressed yet. In that case, this function will behave as if - * LZMA_FULL_FLUSH (Stream encoder) or LZMA_SYNC_FLUSH (Raw or Block - * encoder) had been used right before calling this function. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_filters_update( - lzma_stream *strm, const lzma_filter *filters) lzma_nothrow; - - -/** - * \brief Single-call raw encoder - * - * \param filters Array of lzma_filter structures. The end of the - * array must be marked with .id = LZMA_VLI_UNKNOWN. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_size Size of the input buffer - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Not enough output buffer space. - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - * - * \note There is no function to calculate how big output buffer - * would surely be big enough. (lzma_stream_buffer_bound() - * works only for lzma_stream_buffer_encode(); raw encoder - * won't necessarily meet that bound.) - */ -extern LZMA_API(lzma_ret) lzma_raw_buffer_encode( - const lzma_filter *filters, lzma_allocator *allocator, - const uint8_t *in, size_t in_size, uint8_t *out, - size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Single-call raw decoder - * - * \param filters Array of lzma_filter structures. The end of the - * array must be marked with .id = LZMA_VLI_UNKNOWN. - * \param allocator lzma_allocator for custom allocator functions. - * Set to NULL to use malloc() and free(). - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - */ -extern LZMA_API(lzma_ret) lzma_raw_buffer_decode( - const lzma_filter *filters, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Get the size of the Filter Properties field - * - * This function may be useful when implementing custom file formats - * using the raw encoder and decoder. - * - * \param size Pointer to uint32_t to hold the size of the properties - * \param filter Filter ID and options (the size of the properties may - * vary depending on the options) - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - * - * \note This function validates the Filter ID, but does not - * necessarily validate the options. Thus, it is possible - * that this returns LZMA_OK while the following call to - * lzma_properties_encode() returns LZMA_OPTIONS_ERROR. - */ -extern LZMA_API(lzma_ret) lzma_properties_size( - uint32_t *size, const lzma_filter *filter) lzma_nothrow; - - -/** - * \brief Encode the Filter Properties field - * - * \param filter Filter ID and options - * \param props Buffer to hold the encoded options. The size of - * buffer must have been already determined with - * lzma_properties_size(). - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_PROG_ERROR - * - * \note Even this function won't validate more options than actually - * necessary. Thus, it is possible that encoding the properties - * succeeds but using the same options to initialize the encoder - * will fail. - * - * \note If lzma_properties_size() indicated that the size - * of the Filter Properties field is zero, calling - * lzma_properties_encode() is not required, but it - * won't do any harm either. - */ -extern LZMA_API(lzma_ret) lzma_properties_encode( - const lzma_filter *filter, uint8_t *props) lzma_nothrow; - - -/** - * \brief Decode the Filter Properties field - * - * \param filter filter->id must have been set to the correct - * Filter ID. filter->options doesn't need to be - * initialized (it's not freed by this function). The - * decoded options will be stored to filter->options. - * filter->options is set to NULL if there are no - * properties or if an error occurs. - * \param allocator Custom memory allocator used to allocate the - * options. Set to NULL to use the default malloc(), - * and in case of an error, also free(). - * \param props Input buffer containing the properties. - * \param props_size Size of the properties. This must be the exact - * size; giving too much or too little input will - * return LZMA_OPTIONS_ERROR. - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - */ -extern LZMA_API(lzma_ret) lzma_properties_decode( - lzma_filter *filter, lzma_allocator *allocator, - const uint8_t *props, size_t props_size) lzma_nothrow; - - -/** - * \brief Calculate encoded size of a Filter Flags field - * - * Knowing the size of Filter Flags is useful to know when allocating - * memory to hold the encoded Filter Flags. - * - * \param size Pointer to integer to hold the calculated size - * \param filter Filter ID and associated options whose encoded - * size is to be calculated - * - * \return - LZMA_OK: *size set successfully. Note that this doesn't - * guarantee that filter->options is valid, thus - * lzma_filter_flags_encode() may still fail. - * - LZMA_OPTIONS_ERROR: Unknown Filter ID or unsupported options. - * - LZMA_PROG_ERROR: Invalid options - * - * \note If you need to calculate size of List of Filter Flags, - * you need to loop over every lzma_filter entry. - */ -extern LZMA_API(lzma_ret) lzma_filter_flags_size( - uint32_t *size, const lzma_filter *filter) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Encode Filter Flags into given buffer - * - * In contrast to some functions, this doesn't allocate the needed buffer. - * This is due to how this function is used internally by liblzma. - * - * \param filter Filter ID and options to be encoded - * \param out Beginning of the output buffer - * \param out_pos out[*out_pos] is the next write position. This - * is updated by the encoder. - * \param out_size out[out_size] is the first byte to not write. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_OPTIONS_ERROR: Invalid or unsupported options. - * - LZMA_PROG_ERROR: Invalid options or not enough output - * buffer space (you should have checked it with - * lzma_filter_flags_size()). - */ -extern LZMA_API(lzma_ret) lzma_filter_flags_encode(const lzma_filter *filter, - uint8_t *out, size_t *out_pos, size_t out_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Filter Flags from given buffer - * - * The decoded result is stored into *filter. The old value of - * filter->options is not free()d. - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_filter_flags_decode( - lzma_filter *filter, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow lzma_attr_warn_unused_result; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/hardware.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/hardware.h deleted file mode 100644 index e7dd03c3e8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/hardware.h +++ /dev/null @@ -1,50 +0,0 @@ -/** - * \file lzma/hardware.h - * \brief Hardware information - * - * Since liblzma can consume a lot of system resources, it also provides - * ways to limit the resource usage. Applications linking against liblzma - * need to do the actual decisions how much resources to let liblzma to use. - * To ease making these decisions, liblzma provides functions to find out - * the relevant capabilities of the underlaying hardware. Currently there - * is only a function to find out the amount of RAM, but in the future there - * will be also a function to detect how many concurrent threads the system - * can run. - * - * \note On some operating systems, these function may temporarily - * load a shared library or open file descriptor(s) to find out - * the requested hardware information. Unless the application - * assumes that specific file descriptors are not touched by - * other threads, this should have no effect on thread safety. - * Possible operations involving file descriptors will restart - * the syscalls if they return EINTR. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Get the total amount of physical memory (RAM) in bytes - * - * This function may be useful when determining a reasonable memory - * usage limit for decompressing or how much memory it is OK to use - * for compressing. - * - * \return On success, the total amount of physical memory in bytes - * is returned. If the amount of RAM cannot be determined, - * zero is returned. This can happen if an error occurs - * or if there is no code in liblzma to detect the amount - * of RAM on the specific operating system. - */ -extern LZMA_API(uint64_t) lzma_physmem(void) lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/index.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/index.h deleted file mode 100644 index 16bacc287d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/index.h +++ /dev/null @@ -1,682 +0,0 @@ -/** - * \file lzma/index.h - * \brief Handling of .xz Index and related information - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Opaque data type to hold the Index(es) and other information - * - * lzma_index often holds just one .xz Index and possibly the Stream Flags - * of the same Stream and size of the Stream Padding field. However, - * multiple lzma_indexes can be concatenated with lzma_index_cat() and then - * there may be information about multiple Streams in the same lzma_index. - * - * Notes about thread safety: Only one thread may modify lzma_index at - * a time. All functions that take non-const pointer to lzma_index - * modify it. As long as no thread is modifying the lzma_index, getting - * information from the same lzma_index can be done from multiple threads - * at the same time with functions that take a const pointer to - * lzma_index or use lzma_index_iter. The same iterator must be used - * only by one thread at a time, of course, but there can be as many - * iterators for the same lzma_index as needed. - */ -typedef struct lzma_index_s lzma_index; - - -/** - * \brief Iterator to get information about Blocks and Streams - */ -typedef struct { - struct { - /** - * \brief Pointer to Stream Flags - * - * This is NULL if Stream Flags have not been set for - * this Stream with lzma_index_stream_flags(). - */ - const lzma_stream_flags *flags; - - const void *reserved_ptr1; - const void *reserved_ptr2; - const void *reserved_ptr3; - - /** - * \brief Stream number in the lzma_index - * - * The first Stream is 1. - */ - lzma_vli number; - - /** - * \brief Number of Blocks in the Stream - * - * If this is zero, the block structure below has - * undefined values. - */ - lzma_vli block_count; - - /** - * \brief Compressed start offset of this Stream - * - * The offset is relative to the beginning of the lzma_index - * (i.e. usually the beginning of the .xz file). - */ - lzma_vli compressed_offset; - - /** - * \brief Uncompressed start offset of this Stream - * - * The offset is relative to the beginning of the lzma_index - * (i.e. usually the beginning of the .xz file). - */ - lzma_vli uncompressed_offset; - - /** - * \brief Compressed size of this Stream - * - * This includes all headers except the possible - * Stream Padding after this Stream. - */ - lzma_vli compressed_size; - - /** - * \brief Uncompressed size of this Stream - */ - lzma_vli uncompressed_size; - - /** - * \brief Size of Stream Padding after this Stream - * - * If it hasn't been set with lzma_index_stream_padding(), - * this defaults to zero. Stream Padding is always - * a multiple of four bytes. - */ - lzma_vli padding; - - lzma_vli reserved_vli1; - lzma_vli reserved_vli2; - lzma_vli reserved_vli3; - lzma_vli reserved_vli4; - } stream; - - struct { - /** - * \brief Block number in the file - * - * The first Block is 1. - */ - lzma_vli number_in_file; - - /** - * \brief Compressed start offset of this Block - * - * This offset is relative to the beginning of the - * lzma_index (i.e. usually the beginning of the .xz file). - * Normally this is where you should seek in the .xz file - * to start decompressing this Block. - */ - lzma_vli compressed_file_offset; - - /** - * \brief Uncompressed start offset of this Block - * - * This offset is relative to the beginning of the lzma_index - * (i.e. usually the beginning of the .xz file). - * - * When doing random-access reading, it is possible that - * the target offset is not exactly at Block boundary. One - * will need to compare the target offset against - * uncompressed_file_offset or uncompressed_stream_offset, - * and possibly decode and throw away some amount of data - * before reaching the target offset. - */ - lzma_vli uncompressed_file_offset; - - /** - * \brief Block number in this Stream - * - * The first Block is 1. - */ - lzma_vli number_in_stream; - - /** - * \brief Compressed start offset of this Block - * - * This offset is relative to the beginning of the Stream - * containing this Block. - */ - lzma_vli compressed_stream_offset; - - /** - * \brief Uncompressed start offset of this Block - * - * This offset is relative to the beginning of the Stream - * containing this Block. - */ - lzma_vli uncompressed_stream_offset; - - /** - * \brief Uncompressed size of this Block - * - * You should pass this to the Block decoder if you will - * decode this Block. It will allow the Block decoder to - * validate the uncompressed size. - */ - lzma_vli uncompressed_size; - - /** - * \brief Unpadded size of this Block - * - * You should pass this to the Block decoder if you will - * decode this Block. It will allow the Block decoder to - * validate the unpadded size. - */ - lzma_vli unpadded_size; - - /** - * \brief Total compressed size - * - * This includes all headers and padding in this Block. - * This is useful if you need to know how many bytes - * the Block decoder will actually read. - */ - lzma_vli total_size; - - lzma_vli reserved_vli1; - lzma_vli reserved_vli2; - lzma_vli reserved_vli3; - lzma_vli reserved_vli4; - - const void *reserved_ptr1; - const void *reserved_ptr2; - const void *reserved_ptr3; - const void *reserved_ptr4; - } block; - - /* - * Internal data which is used to store the state of the iterator. - * The exact format may vary between liblzma versions, so don't - * touch these in any way. - */ - union { - const void *p; - size_t s; - lzma_vli v; - } internal[6]; -} lzma_index_iter; - - -/** - * \brief Operation mode for lzma_index_iter_next() - */ -typedef enum { - LZMA_INDEX_ITER_ANY = 0, - /**< - * \brief Get the next Block or Stream - * - * Go to the next Block if the current Stream has at least - * one Block left. Otherwise go to the next Stream even if - * it has no Blocks. If the Stream has no Blocks - * (lzma_index_iter.stream.block_count == 0), - * lzma_index_iter.block will have undefined values. - */ - - LZMA_INDEX_ITER_STREAM = 1, - /**< - * \brief Get the next Stream - * - * Go to the next Stream even if the current Stream has - * unread Blocks left. If the next Stream has at least one - * Block, the iterator will point to the first Block. - * If there are no Blocks, lzma_index_iter.block will have - * undefined values. - */ - - LZMA_INDEX_ITER_BLOCK = 2, - /**< - * \brief Get the next Block - * - * Go to the next Block if the current Stream has at least - * one Block left. If the current Stream has no Blocks left, - * the next Stream with at least one Block is located and - * the iterator will be made to point to the first Block of - * that Stream. - */ - - LZMA_INDEX_ITER_NONEMPTY_BLOCK = 3 - /**< - * \brief Get the next non-empty Block - * - * This is like LZMA_INDEX_ITER_BLOCK except that it will - * skip Blocks whose Uncompressed Size is zero. - */ - -} lzma_index_iter_mode; - - -/** - * \brief Calculate memory usage of lzma_index - * - * On disk, the size of the Index field depends on both the number of Records - * stored and how big values the Records store (due to variable-length integer - * encoding). When the Index is kept in lzma_index structure, the memory usage - * depends only on the number of Records/Blocks stored in the Index(es), and - * in case of concatenated lzma_indexes, the number of Streams. The size in - * RAM is almost always significantly bigger than in the encoded form on disk. - * - * This function calculates an approximate amount of memory needed hold - * the given number of Streams and Blocks in lzma_index structure. This - * value may vary between CPU architectures and also between liblzma versions - * if the internal implementation is modified. - */ -extern LZMA_API(uint64_t) lzma_index_memusage( - lzma_vli streams, lzma_vli blocks) lzma_nothrow; - - -/** - * \brief Calculate the memory usage of an existing lzma_index - * - * This is a shorthand for lzma_index_memusage(lzma_index_stream_count(i), - * lzma_index_block_count(i)). - */ -extern LZMA_API(uint64_t) lzma_index_memused(const lzma_index *i) - lzma_nothrow; - - -/** - * \brief Allocate and initialize a new lzma_index structure - * - * \return On success, a pointer to an empty initialized lzma_index is - * returned. If allocation fails, NULL is returned. - */ -extern LZMA_API(lzma_index *) lzma_index_init(lzma_allocator *allocator) - lzma_nothrow; - - -/** - * \brief Deallocate lzma_index - * - * If i is NULL, this does nothing. - */ -extern LZMA_API(void) lzma_index_end(lzma_index *i, lzma_allocator *allocator) - lzma_nothrow; - - -/** - * \brief Add a new Block to lzma_index - * - * \param i Pointer to a lzma_index structure - * \param allocator Pointer to lzma_allocator, or NULL to - * use malloc() - * \param unpadded_size Unpadded Size of a Block. This can be - * calculated with lzma_block_unpadded_size() - * after encoding or decoding the Block. - * \param uncompressed_size Uncompressed Size of a Block. This can be - * taken directly from lzma_block structure - * after encoding or decoding the Block. - * - * Appending a new Block does not invalidate iterators. For example, - * if an iterator was pointing to the end of the lzma_index, after - * lzma_index_append() it is possible to read the next Block with - * an existing iterator. - * - * \return - LZMA_OK - * - LZMA_MEM_ERROR - * - LZMA_DATA_ERROR: Compressed or uncompressed size of the - * Stream or size of the Index field would grow too big. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_append( - lzma_index *i, lzma_allocator *allocator, - lzma_vli unpadded_size, lzma_vli uncompressed_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Set the Stream Flags - * - * Set the Stream Flags of the last (and typically the only) Stream - * in lzma_index. This can be useful when reading information from the - * lzma_index, because to decode Blocks, knowing the integrity check type - * is needed. - * - * The given Stream Flags are copied into internal preallocated structure - * in the lzma_index, thus the caller doesn't need to keep the *stream_flags - * available after calling this function. - * - * \return - LZMA_OK - * - LZMA_OPTIONS_ERROR: Unsupported stream_flags->version. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_stream_flags( - lzma_index *i, const lzma_stream_flags *stream_flags) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Get the types of integrity Checks - * - * If lzma_index_stream_flags() is used to set the Stream Flags for - * every Stream, lzma_index_checks() can be used to get a bitmask to - * indicate which Check types have been used. It can be useful e.g. if - * showing the Check types to the user. - * - * The bitmask is 1 << check_id, e.g. CRC32 is 1 << 1 and SHA-256 is 1 << 10. - */ -extern LZMA_API(uint32_t) lzma_index_checks(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Set the amount of Stream Padding - * - * Set the amount of Stream Padding of the last (and typically the only) - * Stream in the lzma_index. This is needed when planning to do random-access - * reading within multiple concatenated Streams. - * - * By default, the amount of Stream Padding is assumed to be zero bytes. - * - * \return - LZMA_OK - * - LZMA_DATA_ERROR: The file size would grow too big. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_stream_padding( - lzma_index *i, lzma_vli stream_padding) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Get the number of Streams - */ -extern LZMA_API(lzma_vli) lzma_index_stream_count(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the number of Blocks - * - * This returns the total number of Blocks in lzma_index. To get number - * of Blocks in individual Streams, use lzma_index_iter. - */ -extern LZMA_API(lzma_vli) lzma_index_block_count(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the size of the Index field as bytes - * - * This is needed to verify the Backward Size field in the Stream Footer. - */ -extern LZMA_API(lzma_vli) lzma_index_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the total size of the Stream - * - * If multiple lzma_indexes have been combined, this works as if the Blocks - * were in a single Stream. This is useful if you are going to combine - * Blocks from multiple Streams into a single new Stream. - */ -extern LZMA_API(lzma_vli) lzma_index_stream_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the total size of the Blocks - * - * This doesn't include the Stream Header, Stream Footer, Stream Padding, - * or Index fields. - */ -extern LZMA_API(lzma_vli) lzma_index_total_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the total size of the file - * - * When no lzma_indexes have been combined with lzma_index_cat() and there is - * no Stream Padding, this function is identical to lzma_index_stream_size(). - * If multiple lzma_indexes have been combined, this includes also the headers - * of each separate Stream and the possible Stream Padding fields. - */ -extern LZMA_API(lzma_vli) lzma_index_file_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Get the uncompressed size of the file - */ -extern LZMA_API(lzma_vli) lzma_index_uncompressed_size(const lzma_index *i) - lzma_nothrow lzma_attr_pure; - - -/** - * \brief Initialize an iterator - * - * \param iter Pointer to a lzma_index_iter structure - * \param i lzma_index to which the iterator will be associated - * - * This function associates the iterator with the given lzma_index, and calls - * lzma_index_iter_rewind() on the iterator. - * - * This function doesn't allocate any memory, thus there is no - * lzma_index_iter_end(). The iterator is valid as long as the - * associated lzma_index is valid, that is, until lzma_index_end() or - * using it as source in lzma_index_cat(). Specifically, lzma_index doesn't - * become invalid if new Blocks are added to it with lzma_index_append() or - * if it is used as the destination in lzma_index_cat(). - * - * It is safe to make copies of an initialized lzma_index_iter, for example, - * to easily restart reading at some particular position. - */ -extern LZMA_API(void) lzma_index_iter_init( - lzma_index_iter *iter, const lzma_index *i) lzma_nothrow; - - -/** - * \brief Rewind the iterator - * - * Rewind the iterator so that next call to lzma_index_iter_next() will - * return the first Block or Stream. - */ -extern LZMA_API(void) lzma_index_iter_rewind(lzma_index_iter *iter) - lzma_nothrow; - - -/** - * \brief Get the next Block or Stream - * - * \param iter Iterator initialized with lzma_index_iter_init() - * \param mode Specify what kind of information the caller wants - * to get. See lzma_index_iter_mode for details. - * - * \return If next Block or Stream matching the mode was found, *iter - * is updated and this function returns false. If no Block or - * Stream matching the mode is found, *iter is not modified - * and this function returns true. If mode is set to an unknown - * value, *iter is not modified and this function returns true. - */ -extern LZMA_API(lzma_bool) lzma_index_iter_next( - lzma_index_iter *iter, lzma_index_iter_mode mode) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Locate a Block - * - * If it is possible to seek in the .xz file, it is possible to parse - * the Index field(s) and use lzma_index_iter_locate() to do random-access - * reading with granularity of Block size. - * - * \param iter Iterator that was earlier initialized with - * lzma_index_iter_init(). - * \param target Uncompressed target offset which the caller would - * like to locate from the Stream - * - * If the target is smaller than the uncompressed size of the Stream (can be - * checked with lzma_index_uncompressed_size()): - * - Information about the Stream and Block containing the requested - * uncompressed offset is stored into *iter. - * - Internal state of the iterator is adjusted so that - * lzma_index_iter_next() can be used to read subsequent Blocks or Streams. - * - This function returns false. - * - * If target is greater than the uncompressed size of the Stream, *iter - * is not modified, and this function returns true. - */ -extern LZMA_API(lzma_bool) lzma_index_iter_locate( - lzma_index_iter *iter, lzma_vli target) lzma_nothrow; - - -/** - * \brief Concatenate lzma_indexes - * - * Concatenating lzma_indexes is useful when doing random-access reading in - * multi-Stream .xz file, or when combining multiple Streams into single - * Stream. - * - * \param dest lzma_index after which src is appended - * \param src lzma_index to be appended after dest. If this - * function succeeds, the memory allocated for src - * is freed or moved to be part of dest, and all - * iterators pointing to src will become invalid. - * \param allocator Custom memory allocator; can be NULL to use - * malloc() and free(). - * - * \return - LZMA_OK: lzma_indexes were concatenated successfully. - * src is now a dangling pointer. - * - LZMA_DATA_ERROR: *dest would grow too big. - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_cat( - lzma_index *dest, lzma_index *src, lzma_allocator *allocator) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Duplicate lzma_index - * - * \return A copy of the lzma_index, or NULL if memory allocation failed. - */ -extern LZMA_API(lzma_index *) lzma_index_dup( - const lzma_index *i, lzma_allocator *allocator) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .xz Index encoder - * - * \param strm Pointer to properly prepared lzma_stream - * \param i Pointer to lzma_index which should be encoded. - * - * The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH. - * It is enough to use only one of them (you can choose freely; use LZMA_RUN - * to support liblzma versions older than 5.0.0). - * - * \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). - * - LZMA_MEM_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_encoder( - lzma_stream *strm, const lzma_index *i) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Initialize .xz Index decoder - * - * \param strm Pointer to properly prepared lzma_stream - * \param i The decoded Index will be made available via - * this pointer. Initially this function will - * set *i to NULL (the old value is ignored). If - * decoding succeeds (lzma_code() returns - * LZMA_STREAM_END), *i will be set to point - * to a new lzma_index, which the application - * has to later free with lzma_index_end(). - * \param memlimit How much memory the resulting lzma_index is - * allowed to require. - * - * The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH. - * It is enough to use only one of them (you can choose freely; use LZMA_RUN - * to support liblzma versions older than 5.0.0). - * - * \return - LZMA_OK: Initialization succeeded, continue with lzma_code(). - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_decoder( - lzma_stream *strm, lzma_index **i, uint64_t memlimit) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Single-call .xz Index encoder - * - * \param i lzma_index to be encoded - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * *out_pos is updated only if encoding succeeds. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_BUF_ERROR: Output buffer is too small. Use - * lzma_index_size() to find out how much output - * space is needed. - * - LZMA_PROG_ERROR - * - * \note This function doesn't take allocator argument since all - * the internal data is allocated on stack. - */ -extern LZMA_API(lzma_ret) lzma_index_buffer_encode(const lzma_index *i, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Single-call .xz Index decoder - * - * \param i If decoding succeeds, *i will point to a new - * lzma_index, which the application has to - * later free with lzma_index_end(). If an error - * occurs, *i will be NULL. The old value of *i - * is always ignored and thus doesn't need to be - * initialized by the caller. - * \param memlimit Pointer to how much memory the resulting - * lzma_index is allowed to require. The value - * pointed by this pointer is modified if and only - * if LZMA_MEMLIMIT_ERROR is returned. - * \param allocator Pointer to lzma_allocator, or NULL to use malloc() - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * *in_pos is updated only if decoding succeeds. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_MEM_ERROR - * - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached. - * The minimum required memlimit value was stored to *memlimit. - * - LZMA_DATA_ERROR - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_buffer_decode(lzma_index **i, - uint64_t *memlimit, lzma_allocator *allocator, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/index_hash.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/index_hash.h deleted file mode 100644 index fa2e048d55..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/index_hash.h +++ /dev/null @@ -1,107 +0,0 @@ -/** - * \file lzma/index_hash.h - * \brief Validate Index by using a hash function - * - * Hashing makes it possible to use constant amount of memory to validate - * Index of arbitrary size. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - -/** - * \brief Opaque data type to hold the Index hash - */ -typedef struct lzma_index_hash_s lzma_index_hash; - - -/** - * \brief Allocate and initialize a new lzma_index_hash structure - * - * If index_hash is NULL, a new lzma_index_hash structure is allocated, - * initialized, and a pointer to it returned. If allocation fails, NULL - * is returned. - * - * If index_hash is non-NULL, it is reinitialized and the same pointer - * returned. In this case, return value cannot be NULL or a different - * pointer than the index_hash that was given as an argument. - */ -extern LZMA_API(lzma_index_hash *) lzma_index_hash_init( - lzma_index_hash *index_hash, lzma_allocator *allocator) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Deallocate lzma_index_hash structure - */ -extern LZMA_API(void) lzma_index_hash_end( - lzma_index_hash *index_hash, lzma_allocator *allocator) - lzma_nothrow; - - -/** - * \brief Add a new Record to an Index hash - * - * \param index Pointer to a lzma_index_hash structure - * \param unpadded_size Unpadded Size of a Block - * \param uncompressed_size Uncompressed Size of a Block - * - * \return - LZMA_OK - * - LZMA_DATA_ERROR: Compressed or uncompressed size of the - * Stream or size of the Index field would grow too big. - * - LZMA_PROG_ERROR: Invalid arguments or this function is being - * used when lzma_index_hash_decode() has already been used. - */ -extern LZMA_API(lzma_ret) lzma_index_hash_append(lzma_index_hash *index_hash, - lzma_vli unpadded_size, lzma_vli uncompressed_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode and validate the Index field - * - * After telling the sizes of all Blocks with lzma_index_hash_append(), - * the actual Index field is decoded with this function. Specifically, - * once decoding of the Index field has been started, no more Records - * can be added using lzma_index_hash_append(). - * - * This function doesn't use lzma_stream structure to pass the input data. - * Instead, the input buffer is specified using three arguments. This is - * because it matches better the internal APIs of liblzma. - * - * \param index_hash Pointer to a lzma_index_hash structure - * \param in Pointer to the beginning of the input buffer - * \param in_pos in[*in_pos] is the next byte to process - * \param in_size in[in_size] is the first byte not to process - * - * \return - LZMA_OK: So far good, but more input is needed. - * - LZMA_STREAM_END: Index decoded successfully and it matches - * the Records given with lzma_index_hash_append(). - * - LZMA_DATA_ERROR: Index is corrupt or doesn't match the - * information given with lzma_index_hash_append(). - * - LZMA_BUF_ERROR: Cannot progress because *in_pos >= in_size. - * - LZMA_PROG_ERROR - */ -extern LZMA_API(lzma_ret) lzma_index_hash_decode(lzma_index_hash *index_hash, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Get the size of the Index field as bytes - * - * This is needed to verify the Backward Size field in the Stream Footer. - */ -extern LZMA_API(lzma_vli) lzma_index_hash_size( - const lzma_index_hash *index_hash) - lzma_nothrow lzma_attr_pure; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/lzma.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/lzma.h deleted file mode 100644 index 3f8e095f70..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/lzma.h +++ /dev/null @@ -1,420 +0,0 @@ -/** - * \file lzma/lzma.h - * \brief LZMA1 and LZMA2 filters - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief LZMA1 Filter ID - * - * LZMA1 is the very same thing as what was called just LZMA in LZMA Utils, - * 7-Zip, and LZMA SDK. It's called LZMA1 here to prevent developers from - * accidentally using LZMA when they actually want LZMA2. - * - * LZMA1 shouldn't be used for new applications unless you _really_ know - * what you are doing. LZMA2 is almost always a better choice. - */ -#define LZMA_FILTER_LZMA1 LZMA_VLI_C(0x4000000000000001) - -/** - * \brief LZMA2 Filter ID - * - * Usually you want this instead of LZMA1. Compared to LZMA1, LZMA2 adds - * support for LZMA_SYNC_FLUSH, uncompressed chunks (smaller expansion - * when trying to compress uncompressible data), possibility to change - * lc/lp/pb in the middle of encoding, and some other internal improvements. - */ -#define LZMA_FILTER_LZMA2 LZMA_VLI_C(0x21) - - -/** - * \brief Match finders - * - * Match finder has major effect on both speed and compression ratio. - * Usually hash chains are faster than binary trees. - * - * If you will use LZMA_SYNC_FLUSH often, the hash chains may be a better - * choice, because binary trees get much higher compression ratio penalty - * with LZMA_SYNC_FLUSH. - * - * The memory usage formulas are only rough estimates, which are closest to - * reality when dict_size is a power of two. The formulas are more complex - * in reality, and can also change a little between liblzma versions. Use - * lzma_raw_encoder_memusage() to get more accurate estimate of memory usage. - */ -typedef enum { - LZMA_MF_HC3 = 0x03, - /**< - * \brief Hash Chain with 2- and 3-byte hashing - * - * Minimum nice_len: 3 - * - * Memory usage: - * - dict_size <= 16 MiB: dict_size * 7.5 - * - dict_size > 16 MiB: dict_size * 5.5 + 64 MiB - */ - - LZMA_MF_HC4 = 0x04, - /**< - * \brief Hash Chain with 2-, 3-, and 4-byte hashing - * - * Minimum nice_len: 4 - * - * Memory usage: - * - dict_size <= 32 MiB: dict_size * 7.5 - * - dict_size > 32 MiB: dict_size * 6.5 - */ - - LZMA_MF_BT2 = 0x12, - /**< - * \brief Binary Tree with 2-byte hashing - * - * Minimum nice_len: 2 - * - * Memory usage: dict_size * 9.5 - */ - - LZMA_MF_BT3 = 0x13, - /**< - * \brief Binary Tree with 2- and 3-byte hashing - * - * Minimum nice_len: 3 - * - * Memory usage: - * - dict_size <= 16 MiB: dict_size * 11.5 - * - dict_size > 16 MiB: dict_size * 9.5 + 64 MiB - */ - - LZMA_MF_BT4 = 0x14 - /**< - * \brief Binary Tree with 2-, 3-, and 4-byte hashing - * - * Minimum nice_len: 4 - * - * Memory usage: - * - dict_size <= 32 MiB: dict_size * 11.5 - * - dict_size > 32 MiB: dict_size * 10.5 - */ -} lzma_match_finder; - - -/** - * \brief Test if given match finder is supported - * - * Return true if the given match finder is supported by this liblzma build. - * Otherwise false is returned. It is safe to call this with a value that - * isn't listed in lzma_match_finder enumeration; the return value will be - * false. - * - * There is no way to list which match finders are available in this - * particular liblzma version and build. It would be useless, because - * a new match finder, which the application developer wasn't aware, - * could require giving additional options to the encoder that the older - * match finders don't need. - */ -extern LZMA_API(lzma_bool) lzma_mf_is_supported(lzma_match_finder match_finder) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Compression modes - * - * This selects the function used to analyze the data produced by the match - * finder. - */ -typedef enum { - LZMA_MODE_FAST = 1, - /**< - * \brief Fast compression - * - * Fast mode is usually at its best when combined with - * a hash chain match finder. - */ - - LZMA_MODE_NORMAL = 2 - /**< - * \brief Normal compression - * - * This is usually notably slower than fast mode. Use this - * together with binary tree match finders to expose the - * full potential of the LZMA1 or LZMA2 encoder. - */ -} lzma_mode; - - -/** - * \brief Test if given compression mode is supported - * - * Return true if the given compression mode is supported by this liblzma - * build. Otherwise false is returned. It is safe to call this with a value - * that isn't listed in lzma_mode enumeration; the return value will be false. - * - * There is no way to list which modes are available in this particular - * liblzma version and build. It would be useless, because a new compression - * mode, which the application developer wasn't aware, could require giving - * additional options to the encoder that the older modes don't need. - */ -extern LZMA_API(lzma_bool) lzma_mode_is_supported(lzma_mode mode) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Options specific to the LZMA1 and LZMA2 filters - * - * Since LZMA1 and LZMA2 share most of the code, it's simplest to share - * the options structure too. For encoding, all but the reserved variables - * need to be initialized unless specifically mentioned otherwise. - * lzma_lzma_preset() can be used to get a good starting point. - * - * For raw decoding, both LZMA1 and LZMA2 need dict_size, preset_dict, and - * preset_dict_size (if preset_dict != NULL). LZMA1 needs also lc, lp, and pb. - */ -typedef struct { - /** - * \brief Dictionary size in bytes - * - * Dictionary size indicates how many bytes of the recently processed - * uncompressed data is kept in memory. One method to reduce size of - * the uncompressed data is to store distance-length pairs, which - * indicate what data to repeat from the dictionary buffer. Thus, - * the bigger the dictionary, the better the compression ratio - * usually is. - * - * Maximum size of the dictionary depends on multiple things: - * - Memory usage limit - * - Available address space (not a problem on 64-bit systems) - * - Selected match finder (encoder only) - * - * Currently the maximum dictionary size for encoding is 1.5 GiB - * (i.e. (UINT32_C(1) << 30) + (UINT32_C(1) << 29)) even on 64-bit - * systems for certain match finder implementation reasons. In the - * future, there may be match finders that support bigger - * dictionaries. - * - * Decoder already supports dictionaries up to 4 GiB - 1 B (i.e. - * UINT32_MAX), so increasing the maximum dictionary size of the - * encoder won't cause problems for old decoders. - * - * Because extremely small dictionaries sizes would have unneeded - * overhead in the decoder, the minimum dictionary size is 4096 bytes. - * - * \note When decoding, too big dictionary does no other harm - * than wasting memory. - */ - uint32_t dict_size; -# define LZMA_DICT_SIZE_MIN UINT32_C(4096) -# define LZMA_DICT_SIZE_DEFAULT (UINT32_C(1) << 23) - - /** - * \brief Pointer to an initial dictionary - * - * It is possible to initialize the LZ77 history window using - * a preset dictionary. It is useful when compressing many - * similar, relatively small chunks of data independently from - * each other. The preset dictionary should contain typical - * strings that occur in the files being compressed. The most - * probable strings should be near the end of the preset dictionary. - * - * This feature should be used only in special situations. For - * now, it works correctly only with raw encoding and decoding. - * Currently none of the container formats supported by - * liblzma allow preset dictionary when decoding, thus if - * you create a .xz or .lzma file with preset dictionary, it - * cannot be decoded with the regular decoder functions. In the - * future, the .xz format will likely get support for preset - * dictionary though. - */ - const uint8_t *preset_dict; - - /** - * \brief Size of the preset dictionary - * - * Specifies the size of the preset dictionary. If the size is - * bigger than dict_size, only the last dict_size bytes are - * processed. - * - * This variable is read only when preset_dict is not NULL. - * If preset_dict is not NULL but preset_dict_size is zero, - * no preset dictionary is used (identical to only setting - * preset_dict to NULL). - */ - uint32_t preset_dict_size; - - /** - * \brief Number of literal context bits - * - * How many of the highest bits of the previous uncompressed - * eight-bit byte (also known as `literal') are taken into - * account when predicting the bits of the next literal. - * - * E.g. in typical English text, an upper-case letter is - * often followed by a lower-case letter, and a lower-case - * letter is usually followed by another lower-case letter. - * In the US-ASCII character set, the highest three bits are 010 - * for upper-case letters and 011 for lower-case letters. - * When lc is at least 3, the literal coding can take advantage of - * this property in the uncompressed data. - * - * There is a limit that applies to literal context bits and literal - * position bits together: lc + lp <= 4. Without this limit the - * decoding could become very slow, which could have security related - * results in some cases like email servers doing virus scanning. - * This limit also simplifies the internal implementation in liblzma. - * - * There may be LZMA1 streams that have lc + lp > 4 (maximum possible - * lc would be 8). It is not possible to decode such streams with - * liblzma. - */ - uint32_t lc; -# define LZMA_LCLP_MIN 0 -# define LZMA_LCLP_MAX 4 -# define LZMA_LC_DEFAULT 3 - - /** - * \brief Number of literal position bits - * - * lp affects what kind of alignment in the uncompressed data is - * assumed when encoding literals. A literal is a single 8-bit byte. - * See pb below for more information about alignment. - */ - uint32_t lp; -# define LZMA_LP_DEFAULT 0 - - /** - * \brief Number of position bits - * - * pb affects what kind of alignment in the uncompressed data is - * assumed in general. The default means four-byte alignment - * (2^ pb =2^2=4), which is often a good choice when there's - * no better guess. - * - * When the aligment is known, setting pb accordingly may reduce - * the file size a little. E.g. with text files having one-byte - * alignment (US-ASCII, ISO-8859-*, UTF-8), setting pb=0 can - * improve compression slightly. For UTF-16 text, pb=1 is a good - * choice. If the alignment is an odd number like 3 bytes, pb=0 - * might be the best choice. - * - * Even though the assumed alignment can be adjusted with pb and - * lp, LZMA1 and LZMA2 still slightly favor 16-byte alignment. - * It might be worth taking into account when designing file formats - * that are likely to be often compressed with LZMA1 or LZMA2. - */ - uint32_t pb; -# define LZMA_PB_MIN 0 -# define LZMA_PB_MAX 4 -# define LZMA_PB_DEFAULT 2 - - /** Compression mode */ - lzma_mode mode; - - /** - * \brief Nice length of a match - * - * This determines how many bytes the encoder compares from the match - * candidates when looking for the best match. Once a match of at - * least nice_len bytes long is found, the encoder stops looking for - * better candidates and encodes the match. (Naturally, if the found - * match is actually longer than nice_len, the actual length is - * encoded; it's not truncated to nice_len.) - * - * Bigger values usually increase the compression ratio and - * compression time. For most files, 32 to 128 is a good value, - * which gives very good compression ratio at good speed. - * - * The exact minimum value depends on the match finder. The maximum - * is 273, which is the maximum length of a match that LZMA1 and - * LZMA2 can encode. - */ - uint32_t nice_len; - - /** Match finder ID */ - lzma_match_finder mf; - - /** - * \brief Maximum search depth in the match finder - * - * For every input byte, match finder searches through the hash chain - * or binary tree in a loop, each iteration going one step deeper in - * the chain or tree. The searching stops if - * - a match of at least nice_len bytes long is found; - * - all match candidates from the hash chain or binary tree have - * been checked; or - * - maximum search depth is reached. - * - * Maximum search depth is needed to prevent the match finder from - * wasting too much time in case there are lots of short match - * candidates. On the other hand, stopping the search before all - * candidates have been checked can reduce compression ratio. - * - * Setting depth to zero tells liblzma to use an automatic default - * value, that depends on the selected match finder and nice_len. - * The default is in the range [4, 200] or so (it may vary between - * liblzma versions). - * - * Using a bigger depth value than the default can increase - * compression ratio in some cases. There is no strict maximum value, - * but high values (thousands or millions) should be used with care: - * the encoder could remain fast enough with typical input, but - * malicious input could cause the match finder to slow down - * dramatically, possibly creating a denial of service attack. - */ - uint32_t depth; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the names - * of these variables may change. These are and will never be used - * with the currently supported options, so it is safe to leave these - * uninitialized. - */ - uint32_t reserved_int1; - uint32_t reserved_int2; - uint32_t reserved_int3; - uint32_t reserved_int4; - uint32_t reserved_int5; - uint32_t reserved_int6; - uint32_t reserved_int7; - uint32_t reserved_int8; - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - lzma_reserved_enum reserved_enum3; - lzma_reserved_enum reserved_enum4; - void *reserved_ptr1; - void *reserved_ptr2; - -} lzma_options_lzma; - - -/** - * \brief Set a compression preset to lzma_options_lzma structure - * - * 0 is the fastest and 9 is the slowest. These match the switches -0 .. -9 - * of the xz command line tool. In addition, it is possible to bitwise-or - * flags to the preset. Currently only LZMA_PRESET_EXTREME is supported. - * The flags are defined in container.h, because the flags are used also - * with lzma_easy_encoder(). - * - * The preset values are subject to changes between liblzma versions. - * - * This function is available only if LZMA1 or LZMA2 encoder has been enabled - * when building liblzma. - * - * \return On success, false is returned. If the preset is not - * supported, true is returned. - */ -extern LZMA_API(lzma_bool) lzma_lzma_preset( - lzma_options_lzma *options, uint32_t preset) lzma_nothrow; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/stream_flags.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/stream_flags.h deleted file mode 100644 index bbdd408263..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/stream_flags.h +++ /dev/null @@ -1,223 +0,0 @@ -/** - * \file lzma/stream_flags.h - * \brief .xz Stream Header and Stream Footer encoder and decoder - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Size of Stream Header and Stream Footer - * - * Stream Header and Stream Footer have the same size and they are not - * going to change even if a newer version of the .xz file format is - * developed in future. - */ -#define LZMA_STREAM_HEADER_SIZE 12 - - -/** - * \brief Options for encoding/decoding Stream Header and Stream Footer - */ -typedef struct { - /** - * \brief Stream Flags format version - * - * To prevent API and ABI breakages if new features are needed in - * Stream Header or Stream Footer, a version number is used to - * indicate which fields in this structure are in use. For now, - * version must always be zero. With non-zero version, the - * lzma_stream_header_encode() and lzma_stream_footer_encode() - * will return LZMA_OPTIONS_ERROR. - * - * lzma_stream_header_decode() and lzma_stream_footer_decode() - * will always set this to the lowest value that supports all the - * features indicated by the Stream Flags field. The application - * must check that the version number set by the decoding functions - * is supported by the application. Otherwise it is possible that - * the application will decode the Stream incorrectly. - */ - uint32_t version; - - /** - * \brief Backward Size - * - * Backward Size must be a multiple of four bytes. In this Stream - * format version, Backward Size is the size of the Index field. - * - * Backward Size isn't actually part of the Stream Flags field, but - * it is convenient to include in this structure anyway. Backward - * Size is present only in the Stream Footer. There is no need to - * initialize backward_size when encoding Stream Header. - * - * lzma_stream_header_decode() always sets backward_size to - * LZMA_VLI_UNKNOWN so that it is convenient to use - * lzma_stream_flags_compare() when both Stream Header and Stream - * Footer have been decoded. - */ - lzma_vli backward_size; -# define LZMA_BACKWARD_SIZE_MIN 4 -# define LZMA_BACKWARD_SIZE_MAX (LZMA_VLI_C(1) << 34) - - /** - * \brief Check ID - * - * This indicates the type of the integrity check calculated from - * uncompressed data. - */ - lzma_check check; - - /* - * Reserved space to allow possible future extensions without - * breaking the ABI. You should not touch these, because the - * names of these variables may change. - * - * (We will never be able to use all of these since Stream Flags - * is just two bytes plus Backward Size of four bytes. But it's - * nice to have the proper types when they are needed.) - */ - lzma_reserved_enum reserved_enum1; - lzma_reserved_enum reserved_enum2; - lzma_reserved_enum reserved_enum3; - lzma_reserved_enum reserved_enum4; - lzma_bool reserved_bool1; - lzma_bool reserved_bool2; - lzma_bool reserved_bool3; - lzma_bool reserved_bool4; - lzma_bool reserved_bool5; - lzma_bool reserved_bool6; - lzma_bool reserved_bool7; - lzma_bool reserved_bool8; - uint32_t reserved_int1; - uint32_t reserved_int2; - -} lzma_stream_flags; - - -/** - * \brief Encode Stream Header - * - * \param options Stream Header options to be encoded. - * options->backward_size is ignored and doesn't - * need to be initialized. - * \param out Beginning of the output buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_OPTIONS_ERROR: options->version is not supported by - * this liblzma version. - * - LZMA_PROG_ERROR: Invalid options. - */ -extern LZMA_API(lzma_ret) lzma_stream_header_encode( - const lzma_stream_flags *options, uint8_t *out) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Encode Stream Footer - * - * \param options Stream Footer options to be encoded. - * \param out Beginning of the output buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * \return - LZMA_OK: Encoding was successful. - * - LZMA_OPTIONS_ERROR: options->version is not supported by - * this liblzma version. - * - LZMA_PROG_ERROR: Invalid options. - */ -extern LZMA_API(lzma_ret) lzma_stream_footer_encode( - const lzma_stream_flags *options, uint8_t *out) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Stream Header - * - * \param options Target for the decoded Stream Header options. - * \param in Beginning of the input buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * options->backward_size is always set to LZMA_VLI_UNKNOWN. This is to - * help comparing Stream Flags from Stream Header and Stream Footer with - * lzma_stream_flags_compare(). - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given - * buffer cannot be Stream Header. - * - LZMA_DATA_ERROR: CRC32 doesn't match, thus the header - * is corrupt. - * - LZMA_OPTIONS_ERROR: Unsupported options are present - * in the header. - * - * \note When decoding .xz files that contain multiple Streams, it may - * make sense to print "file format not recognized" only if - * decoding of the Stream Header of the _first_ Stream gives - * LZMA_FORMAT_ERROR. If non-first Stream Header gives - * LZMA_FORMAT_ERROR, the message used for LZMA_DATA_ERROR is - * probably more appropriate. - * - * For example, Stream decoder in liblzma uses LZMA_DATA_ERROR if - * LZMA_FORMAT_ERROR is returned by lzma_stream_header_decode() - * when decoding non-first Stream. - */ -extern LZMA_API(lzma_ret) lzma_stream_header_decode( - lzma_stream_flags *options, const uint8_t *in) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Decode Stream Footer - * - * \param options Target for the decoded Stream Header options. - * \param in Beginning of the input buffer of - * LZMA_STREAM_HEADER_SIZE bytes. - * - * \return - LZMA_OK: Decoding was successful. - * - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given - * buffer cannot be Stream Footer. - * - LZMA_DATA_ERROR: CRC32 doesn't match, thus the Stream Footer - * is corrupt. - * - LZMA_OPTIONS_ERROR: Unsupported options are present - * in Stream Footer. - * - * \note If Stream Header was already decoded successfully, but - * decoding Stream Footer returns LZMA_FORMAT_ERROR, the - * application should probably report some other error message - * than "file format not recognized", since the file more likely - * is corrupt (possibly truncated). Stream decoder in liblzma - * uses LZMA_DATA_ERROR in this situation. - */ -extern LZMA_API(lzma_ret) lzma_stream_footer_decode( - lzma_stream_flags *options, const uint8_t *in) - lzma_nothrow lzma_attr_warn_unused_result; - - -/** - * \brief Compare two lzma_stream_flags structures - * - * backward_size values are compared only if both are not - * LZMA_VLI_UNKNOWN. - * - * \return - LZMA_OK: Both are equal. If either had backward_size set - * to LZMA_VLI_UNKNOWN, backward_size values were not - * compared or validated. - * - LZMA_DATA_ERROR: The structures differ. - * - LZMA_OPTIONS_ERROR: version in either structure is greater - * than the maximum supported version (currently zero). - * - LZMA_PROG_ERROR: Invalid value, e.g. invalid check or - * backward_size. - */ -extern LZMA_API(lzma_ret) lzma_stream_flags_compare( - const lzma_stream_flags *a, const lzma_stream_flags *b) - lzma_nothrow lzma_attr_pure; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/version.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/version.h deleted file mode 100644 index 629e8e1a5b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/version.h +++ /dev/null @@ -1,121 +0,0 @@ -/** - * \file lzma/version.h - * \brief Version number - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/* - * Version number split into components - */ -#define LZMA_VERSION_MAJOR 5 -#define LZMA_VERSION_MINOR 0 -#define LZMA_VERSION_PATCH 4 -#define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE - -#ifndef LZMA_VERSION_COMMIT -# define LZMA_VERSION_COMMIT "" -#endif - - -/* - * Map symbolic stability levels to integers. - */ -#define LZMA_VERSION_STABILITY_ALPHA 0 -#define LZMA_VERSION_STABILITY_BETA 1 -#define LZMA_VERSION_STABILITY_STABLE 2 - - -/** - * \brief Compile-time version number - * - * The version number is of format xyyyzzzs where - * - x = major - * - yyy = minor - * - zzz = revision - * - s indicates stability: 0 = alpha, 1 = beta, 2 = stable - * - * The same xyyyzzz triplet is never reused with different stability levels. - * For example, if 5.1.0alpha has been released, there will never be 5.1.0beta - * or 5.1.0 stable. - * - * \note The version number of liblzma has nothing to with - * the version number of Igor Pavlov's LZMA SDK. - */ -#define LZMA_VERSION (LZMA_VERSION_MAJOR * UINT32_C(10000000) \ - + LZMA_VERSION_MINOR * UINT32_C(10000) \ - + LZMA_VERSION_PATCH * UINT32_C(10) \ - + LZMA_VERSION_STABILITY) - - -/* - * Macros to construct the compile-time version string - */ -#if LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_ALPHA -# define LZMA_VERSION_STABILITY_STRING "alpha" -#elif LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_BETA -# define LZMA_VERSION_STABILITY_STRING "beta" -#elif LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_STABLE -# define LZMA_VERSION_STABILITY_STRING "" -#else -# error Incorrect LZMA_VERSION_STABILITY -#endif - -#define LZMA_VERSION_STRING_C_(major, minor, patch, stability, commit) \ - #major "." #minor "." #patch stability commit - -#define LZMA_VERSION_STRING_C(major, minor, patch, stability, commit) \ - LZMA_VERSION_STRING_C_(major, minor, patch, stability, commit) - - -/** - * \brief Compile-time version as a string - * - * This can be for example "4.999.5alpha", "4.999.8beta", or "5.0.0" (stable - * versions don't have any "stable" suffix). In future, a snapshot built - * from source code repository may include an additional suffix, for example - * "4.999.8beta-21-g1d92". The commit ID won't be available in numeric form - * in LZMA_VERSION macro. - */ -#define LZMA_VERSION_STRING LZMA_VERSION_STRING_C( \ - LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, \ - LZMA_VERSION_PATCH, LZMA_VERSION_STABILITY_STRING, \ - LZMA_VERSION_COMMIT) - - -/* #ifndef is needed for use with windres (MinGW or Cygwin). */ -#ifndef LZMA_H_INTERNAL_RC - -/** - * \brief Run-time version number as an integer - * - * Return the value of LZMA_VERSION macro at the compile time of liblzma. - * This allows the application to compare if it was built against the same, - * older, or newer version of liblzma that is currently running. - */ -extern LZMA_API(uint32_t) lzma_version_number(void) - lzma_nothrow lzma_attr_const; - - -/** - * \brief Run-time version as a string - * - * This function may be useful if you want to display which version of - * liblzma your application is currently using. - */ -extern LZMA_API(const char *) lzma_version_string(void) - lzma_nothrow lzma_attr_const; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/vli.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/vli.h deleted file mode 100644 index 9ad13f2e2f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzma/vli.h +++ /dev/null @@ -1,166 +0,0 @@ -/** - * \file lzma/vli.h - * \brief Variable-length integer handling - * - * In the .xz format, most integers are encoded in a variable-length - * representation, which is sometimes called little endian base-128 encoding. - * This saves space when smaller values are more likely than bigger values. - * - * The encoding scheme encodes seven bits to every byte, using minimum - * number of bytes required to represent the given value. Encodings that use - * non-minimum number of bytes are invalid, thus every integer has exactly - * one encoded representation. The maximum number of bits in a VLI is 63, - * thus the vli argument must be less than or equal to UINT64_MAX / 2. You - * should use LZMA_VLI_MAX for clarity. - */ - -/* - * Author: Lasse Collin - * - * This file has been put into the public domain. - * You can do whatever you want with this file. - * - * See ../lzma.h for information about liblzma as a whole. - */ - -#ifndef LZMA_H_INTERNAL -# error Never include this file directly. Use instead. -#endif - - -/** - * \brief Maximum supported value of a variable-length integer - */ -#define LZMA_VLI_MAX (UINT64_MAX / 2) - -/** - * \brief VLI value to denote that the value is unknown - */ -#define LZMA_VLI_UNKNOWN UINT64_MAX - -/** - * \brief Maximum supported encoded length of variable length integers - */ -#define LZMA_VLI_BYTES_MAX 9 - -/** - * \brief VLI constant suffix - */ -#define LZMA_VLI_C(n) UINT64_C(n) - - -/** - * \brief Variable-length integer type - * - * Valid VLI values are in the range [0, LZMA_VLI_MAX]. Unknown value is - * indicated with LZMA_VLI_UNKNOWN, which is the maximum value of the - * underlaying integer type. - * - * lzma_vli will be uint64_t for the foreseeable future. If a bigger size - * is needed in the future, it is guaranteed that 2 * LZMA_VLI_MAX will - * not overflow lzma_vli. This simplifies integer overflow detection. - */ -typedef uint64_t lzma_vli; - - -/** - * \brief Validate a variable-length integer - * - * This is useful to test that application has given acceptable values - * for example in the uncompressed_size and compressed_size variables. - * - * \return True if the integer is representable as VLI or if it - * indicates unknown value. - */ -#define lzma_vli_is_valid(vli) \ - ((vli) <= LZMA_VLI_MAX || (vli) == LZMA_VLI_UNKNOWN) - - -/** - * \brief Encode a variable-length integer - * - * This function has two modes: single-call and multi-call. Single-call mode - * encodes the whole integer at once; it is an error if the output buffer is - * too small. Multi-call mode saves the position in *vli_pos, and thus it is - * possible to continue encoding if the buffer becomes full before the whole - * integer has been encoded. - * - * \param vli Integer to be encoded - * \param vli_pos How many VLI-encoded bytes have already been written - * out. When starting to encode a new integer in - * multi-call mode, *vli_pos must be set to zero. - * To use single-call encoding, set vli_pos to NULL. - * \param out Beginning of the output buffer - * \param out_pos The next byte will be written to out[*out_pos]. - * \param out_size Size of the out buffer; the first byte into - * which no data is written to is out[out_size]. - * - * \return Slightly different return values are used in multi-call and - * single-call modes. - * - * Single-call (vli_pos == NULL): - * - LZMA_OK: Integer successfully encoded. - * - LZMA_PROG_ERROR: Arguments are not sane. This can be due - * to too little output space; single-call mode doesn't use - * LZMA_BUF_ERROR, since the application should have checked - * the encoded size with lzma_vli_size(). - * - * Multi-call (vli_pos != NULL): - * - LZMA_OK: So far all OK, but the integer is not - * completely written out yet. - * - LZMA_STREAM_END: Integer successfully encoded. - * - LZMA_BUF_ERROR: No output space was provided. - * - LZMA_PROG_ERROR: Arguments are not sane. - */ -extern LZMA_API(lzma_ret) lzma_vli_encode(lzma_vli vli, size_t *vli_pos, - uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow; - - -/** - * \brief Decode a variable-length integer - * - * Like lzma_vli_encode(), this function has single-call and multi-call modes. - * - * \param vli Pointer to decoded integer. The decoder will - * initialize it to zero when *vli_pos == 0, so - * application isn't required to initialize *vli. - * \param vli_pos How many bytes have already been decoded. When - * starting to decode a new integer in multi-call - * mode, *vli_pos must be initialized to zero. To - * use single-call decoding, set vli_pos to NULL. - * \param in Beginning of the input buffer - * \param in_pos The next byte will be read from in[*in_pos]. - * \param in_size Size of the input buffer; the first byte that - * won't be read is in[in_size]. - * - * \return Slightly different return values are used in multi-call and - * single-call modes. - * - * Single-call (vli_pos == NULL): - * - LZMA_OK: Integer successfully decoded. - * - LZMA_DATA_ERROR: Integer is corrupt. This includes hitting - * the end of the input buffer before the whole integer was - * decoded; providing no input at all will use LZMA_DATA_ERROR. - * - LZMA_PROG_ERROR: Arguments are not sane. - * - * Multi-call (vli_pos != NULL): - * - LZMA_OK: So far all OK, but the integer is not - * completely decoded yet. - * - LZMA_STREAM_END: Integer successfully decoded. - * - LZMA_DATA_ERROR: Integer is corrupt. - * - LZMA_BUF_ERROR: No input was provided. - * - LZMA_PROG_ERROR: Arguments are not sane. - */ -extern LZMA_API(lzma_ret) lzma_vli_decode(lzma_vli *vli, size_t *vli_pos, - const uint8_t *in, size_t *in_pos, size_t in_size) - lzma_nothrow; - - -/** - * \brief Get the number of bytes required to encode a VLI - * - * \return Number of bytes on success (1-9). If vli isn't valid, - * zero is returned. - */ -extern LZMA_API(uint32_t) lzma_vli_size(lzma_vli vli) - lzma_nothrow lzma_attr_pure; diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1.h deleted file mode 100644 index de0fba5796..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1.h +++ /dev/null @@ -1,99 +0,0 @@ -/* lzo1.h -- public interface of the LZO1 compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1_H_INCLUDED -#define __LZO1_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1_MEM_COMPRESS ((lzo_uint32) (8192L * lzo_sizeof_dict_t)) -#define LZO1_MEM_DECOMPRESS (0) - - -LZO_EXTERN(int) -lzo1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -LZO_EXTERN(int) -lzo1_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1a.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1a.h deleted file mode 100644 index 0969c67db7..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1a.h +++ /dev/null @@ -1,99 +0,0 @@ -/* lzo1a.h -- public interface of the LZO1A compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1A_H_INCLUDED -#define __LZO1A_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1A_MEM_COMPRESS ((lzo_uint32) (8192L * lzo_sizeof_dict_t)) -#define LZO1A_MEM_DECOMPRESS (0) - - -LZO_EXTERN(int) -lzo1a_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -LZO_EXTERN(int) -lzo1a_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1A_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1a_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1b.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1b.h deleted file mode 100644 index da3b597c64..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1b.h +++ /dev/null @@ -1,163 +0,0 @@ -/* lzo1b.h -- public interface of the LZO1B compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1B_H_INCLUDED -#define __LZO1B_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1B_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1B_MEM_DECOMPRESS (0) - - -/* compression levels */ -#define LZO1B_BEST_SPEED 1 -#define LZO1B_BEST_COMPRESSION 9 -#define LZO1B_DEFAULT_COMPRESSION (-1) /* fastest by default */ - - -LZO_EXTERN(int) -lzo1b_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - int compression_level ); - -/* decompression */ -LZO_EXTERN(int) -lzo1b_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1b_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1b_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_2_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_3_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_4_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_5_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_6_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_7_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_8_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1b_9_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1B_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1b_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -#define LZO1B_999_MEM_COMPRESS ((lzo_uint32) (3 * 65536L * sizeof(lzo_xint))) - -LZO_EXTERN(int) -lzo1b_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1c.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1c.h deleted file mode 100644 index d5b1b8c5be..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1c.h +++ /dev/null @@ -1,163 +0,0 @@ -/* lzo1c.h -- public interface of the LZO1C compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1C_H_INCLUDED -#define __LZO1C_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1C_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1C_MEM_DECOMPRESS (0) - - -/* compression levels */ -#define LZO1C_BEST_SPEED 1 -#define LZO1C_BEST_COMPRESSION 9 -#define LZO1C_DEFAULT_COMPRESSION (-1) /* fastest by default */ - - -LZO_EXTERN(int) -lzo1c_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - int compression_level ); - -/* decompression */ -LZO_EXTERN(int) -lzo1c_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1c_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1c_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_2_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_3_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_4_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_5_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_6_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_7_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_8_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -LZO_EXTERN(int) -lzo1c_9_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1C_99_MEM_COMPRESS ((lzo_uint32) (65536L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1c_99_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -#define LZO1C_999_MEM_COMPRESS ((lzo_uint32) (5 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1c_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1f.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1f.h deleted file mode 100644 index 7713070318..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1f.h +++ /dev/null @@ -1,111 +0,0 @@ -/* lzo1f.h -- public interface of the LZO1F compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1F_H_INCLUDED -#define __LZO1F_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1F_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1F_MEM_DECOMPRESS (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1f_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1f_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1f_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1F_999_MEM_COMPRESS ((lzo_uint32) (5 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1f_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1x.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1x.h deleted file mode 100644 index 9bb993cc04..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1x.h +++ /dev/null @@ -1,180 +0,0 @@ -/* lzo1x.h -- public interface of the LZO1X compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1X_H_INCLUDED -#define __LZO1X_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1X_MEM_COMPRESS LZO1X_1_MEM_COMPRESS -#define LZO1X_MEM_DECOMPRESS (0) -#define LZO1X_MEM_OPTIMIZE (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1x_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1x_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -#define LZO1X_1_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// special compressor versions -************************************************************************/ - -/* this version needs only 8 KiB work memory */ -#define LZO1X_1_11_MEM_COMPRESS ((lzo_uint32) (2048L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_11_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/* this version needs 16 KiB work memory */ -#define LZO1X_1_12_MEM_COMPRESS ((lzo_uint32) (4096L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_12_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/* use this version if you need a little more compression speed */ -#define LZO1X_1_15_MEM_COMPRESS ((lzo_uint32) (32768L * lzo_sizeof_dict_t)) - -LZO_EXTERN(int) -lzo1x_1_15_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1X_999_MEM_COMPRESS ((lzo_uint32) (14 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1x_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1x_999_compress_dict ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -LZO_EXTERN(int) -lzo1x_999_compress_level ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len, - lzo_callback_p cb, - int compression_level ); - -LZO_EXTERN(int) -lzo1x_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */, - const lzo_bytep dict, lzo_uint dict_len ); - - -/*********************************************************************** -// optimize a compressed data block -************************************************************************/ - -LZO_EXTERN(int) -lzo1x_optimize ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1y.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1y.h deleted file mode 100644 index 359e358077..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1y.h +++ /dev/null @@ -1,148 +0,0 @@ -/* lzo1y.h -- public interface of the LZO1Y compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1Y_H_INCLUDED -#define __LZO1Y_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1Y_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1Y_MEM_DECOMPRESS (0) -#define LZO1Y_MEM_OPTIMIZE (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1y_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1y_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1y_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1Y_999_MEM_COMPRESS ((lzo_uint32) (14 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1y_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1y_999_compress_dict ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -LZO_EXTERN(int) -lzo1y_999_compress_level ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len, - lzo_callback_p cb, - int compression_level ); - -LZO_EXTERN(int) -lzo1y_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */, - const lzo_bytep dict, lzo_uint dict_len ); - - -/*********************************************************************** -// optimize a compressed data block -************************************************************************/ - -LZO_EXTERN(int) -lzo1y_optimize ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1z.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1z.h deleted file mode 100644 index f385ca3959..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo1z.h +++ /dev/null @@ -1,153 +0,0 @@ -/* lzo1z.h -- public interface of the LZO1Z compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO1Z_H_INCLUDED -#define __LZO1Z_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -/* Memory required for the wrkmem parameter. - * When the required size is 0, you can also pass a NULL pointer. - */ - -#define LZO1Z_MEM_COMPRESS ((lzo_uint32) (16384L * lzo_sizeof_dict_t)) -#define LZO1Z_MEM_DECOMPRESS (0) -#define LZO1Z_MEM_OPTIMIZE (0) - - -/* decompression */ -LZO_EXTERN(int) -lzo1z_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo1z_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// -************************************************************************/ - -#if 0 -/* not yet implemented */ -LZO_EXTERN(int) -lzo1z_1_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); -#endif - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO1Z_999_MEM_COMPRESS ((lzo_uint32) (14 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo1z_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - -/*********************************************************************** -// -************************************************************************/ - -LZO_EXTERN(int) -lzo1z_999_compress_dict ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -LZO_EXTERN(int) -lzo1z_999_compress_level ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len, - lzo_callback_p cb, - int compression_level ); - -LZO_EXTERN(int) -lzo1z_decompress_dict_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */, - const lzo_bytep dict, lzo_uint dict_len ); - - -/*********************************************************************** -// optimize a compressed data block -************************************************************************/ - -#if 0 -/* not yet implemented */ -LZO_EXTERN(int) -lzo1z_optimize ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); -#endif - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo2a.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo2a.h deleted file mode 100644 index ef65155ed3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo2a.h +++ /dev/null @@ -1,95 +0,0 @@ -/* lzo2a.h -- public interface of the LZO2A compression algorithm - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO2A_H_INCLUDED -#define __LZO2A_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// -************************************************************************/ - -#define LZO2A_MEM_DECOMPRESS (0) - -/* decompression */ -LZO_EXTERN(int) -lzo2a_decompress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - -/* safe decompression with overrun testing */ -LZO_EXTERN(int) -lzo2a_decompress_safe ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem /* NOT USED */ ); - - -/*********************************************************************** -// better compression ratio at the cost of more memory and time -************************************************************************/ - -#define LZO2A_999_MEM_COMPRESS ((lzo_uint32) (8 * 16384L * sizeof(short))) - -LZO_EXTERN(int) -lzo2a_999_compress ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo_asm.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo_asm.h deleted file mode 100644 index 51bea65731..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzo_asm.h +++ /dev/null @@ -1,155 +0,0 @@ -/* lzo_asm.h -- assembler prototypes for the LZO data compression library - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZO_ASM_H_INCLUDED -#define __LZO_ASM_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// i386 assembly decompressors -// -// NOTE: -// ==== -// -// - For reasons of speed all fast assembler decompressors (having '_fast' -// in their name) can access (write to) up to 3 bytes past the end of -// the decompressed ("dst") block. Data past the end of the compressed -// ("src") block is never accessed (read from). -// [ technical note: because data is transferred in 32-bit units ] -// -// - Please also see asm/i386/00README.TXT and doc/LZO.FAQ for more -// important details about the assembler versions. -// -************************************************************************/ - -LZO_EXTERN(int) lzo1c_decompress_asm - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1c_decompress_asm_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - -LZO_EXTERN(int) lzo1f_decompress_asm_fast - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1f_decompress_asm_fast_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - -LZO_EXTERN(int) lzo1x_decompress_asm - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1x_decompress_asm_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1x_decompress_asm_fast - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1x_decompress_asm_fast_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - -LZO_EXTERN(int) lzo1y_decompress_asm - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1y_decompress_asm_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1y_decompress_asm_fast - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); -LZO_EXTERN(int) lzo1y_decompress_asm_fast_safe - (const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem); - - -/*********************************************************************** -// checksum and misc functions -************************************************************************/ - -#if 0 - -LZO_EXTERN(lzo_uint32) -lzo_crc32_asm(lzo_uint32 c, const lzo_bytep buf, lzo_uint len, - const lzo_uint32p tab); - -LZO_EXTERN(lzo_uint32) -lzo_crc32_asm_small(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); - -LZO_EXTERN(int) -lzo_cpuid_asm(lzo_uint32p /* lzo_uint32 info[16] */ ); - -LZO_EXTERN(lzo_uint32) -lzo_rdtsc_asm(lzo_uint32p /* lzo_uint32 ticks[2] */ ); - -#endif - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzoconf.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzoconf.h deleted file mode 100644 index 23c6ca93fc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzoconf.h +++ /dev/null @@ -1,446 +0,0 @@ -/* lzoconf.h -- configuration of the LZO data compression library - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZOCONF_H_INCLUDED -#define __LZOCONF_H_INCLUDED 1 - -#define LZO_VERSION 0x2060 -#define LZO_VERSION_STRING "2.06" -#define LZO_VERSION_DATE "Aug 12 2011" - -/* internal Autoconf configuration file - only used when building LZO */ -#if defined(LZO_HAVE_CONFIG_H) -# include -#endif -#include -#include - - -/*********************************************************************** -// LZO requires a conforming -************************************************************************/ - -#if !defined(CHAR_BIT) || (CHAR_BIT != 8) -# error "invalid CHAR_BIT" -#endif -#if !defined(UCHAR_MAX) || !defined(UINT_MAX) || !defined(ULONG_MAX) -# error "check your compiler installation" -#endif -#if (USHRT_MAX < 1) || (UINT_MAX < 1) || (ULONG_MAX < 1) -# error "your limits.h macros are broken" -#endif - -/* get OS and architecture defines */ -#ifndef __LZODEFS_H_INCLUDED -#include "lzodefs.h" -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// some core defines -************************************************************************/ - -#if !defined(LZO_UINT32_C) -# if (UINT_MAX < LZO_0xffffffffL) -# define LZO_UINT32_C(c) c ## UL -# else -# define LZO_UINT32_C(c) ((c) + 0U) -# endif -#endif - -/* memory checkers */ -#if !defined(__LZO_CHECKER) -# if defined(__BOUNDS_CHECKING_ON) -# define __LZO_CHECKER 1 -# elif defined(__CHECKER__) -# define __LZO_CHECKER 1 -# elif defined(__INSURE__) -# define __LZO_CHECKER 1 -# elif defined(__PURIFY__) -# define __LZO_CHECKER 1 -# endif -#endif - - -/*********************************************************************** -// integral and pointer types -************************************************************************/ - -/* lzo_uint should match size_t */ -#if !defined(LZO_UINT_MAX) -# if defined(LZO_ABI_LLP64) /* WIN64 */ -# if defined(LZO_OS_WIN64) - typedef unsigned __int64 lzo_uint; - typedef __int64 lzo_int; -# else - typedef unsigned long long lzo_uint; - typedef long long lzo_int; -# endif -# define LZO_UINT_MAX 0xffffffffffffffffull -# define LZO_INT_MAX 9223372036854775807LL -# define LZO_INT_MIN (-1LL - LZO_INT_MAX) -# elif defined(LZO_ABI_IP32L64) /* MIPS R5900 */ - typedef unsigned int lzo_uint; - typedef int lzo_int; -# define LZO_UINT_MAX UINT_MAX -# define LZO_INT_MAX INT_MAX -# define LZO_INT_MIN INT_MIN -# elif (ULONG_MAX >= LZO_0xffffffffL) - typedef unsigned long lzo_uint; - typedef long lzo_int; -# define LZO_UINT_MAX ULONG_MAX -# define LZO_INT_MAX LONG_MAX -# define LZO_INT_MIN LONG_MIN -# else -# error "lzo_uint" -# endif -#endif - -/* Integral types with 32 bits or more. */ -#if !defined(LZO_UINT32_MAX) -# if (UINT_MAX >= LZO_0xffffffffL) - typedef unsigned int lzo_uint32; - typedef int lzo_int32; -# define LZO_UINT32_MAX UINT_MAX -# define LZO_INT32_MAX INT_MAX -# define LZO_INT32_MIN INT_MIN -# elif (ULONG_MAX >= LZO_0xffffffffL) - typedef unsigned long lzo_uint32; - typedef long lzo_int32; -# define LZO_UINT32_MAX ULONG_MAX -# define LZO_INT32_MAX LONG_MAX -# define LZO_INT32_MIN LONG_MIN -# else -# error "lzo_uint32" -# endif -#endif - -/* Integral types with exactly 64 bits. */ -#if !defined(LZO_UINT64_MAX) -# if (LZO_UINT_MAX >= LZO_0xffffffffL) -# if ((((LZO_UINT_MAX) >> 31) >> 31) == 3) -# define lzo_uint64 lzo_uint -# define lzo_int64 lzo_int -# define LZO_UINT64_MAX LZO_UINT_MAX -# define LZO_INT64_MAX LZO_INT_MAX -# define LZO_INT64_MIN LZO_INT_MIN -# endif -# elif (ULONG_MAX >= LZO_0xffffffffL) -# if ((((ULONG_MAX) >> 31) >> 31) == 3) - typedef unsigned long lzo_uint64; - typedef long lzo_int64; -# define LZO_UINT64_MAX ULONG_MAX -# define LZO_INT64_MAX LONG_MAX -# define LZO_INT64_MIN LONG_MIN -# endif -# endif -#endif - -/* The larger type of lzo_uint and lzo_uint32. */ -#if (LZO_UINT_MAX >= LZO_UINT32_MAX) -# define lzo_xint lzo_uint -#else -# define lzo_xint lzo_uint32 -#endif - -/* Memory model that allows to access memory at offsets of lzo_uint. */ -#if !defined(__LZO_MMODEL) -# if (LZO_UINT_MAX <= UINT_MAX) -# define __LZO_MMODEL /*empty*/ -# elif defined(LZO_HAVE_MM_HUGE_PTR) -# define __LZO_MMODEL_HUGE 1 -# define __LZO_MMODEL __huge -# else -# define __LZO_MMODEL /*empty*/ -# endif -#endif - -/* no typedef here because of const-pointer issues */ -#define lzo_bytep unsigned char __LZO_MMODEL * -#define lzo_charp char __LZO_MMODEL * -#define lzo_voidp void __LZO_MMODEL * -#define lzo_shortp short __LZO_MMODEL * -#define lzo_ushortp unsigned short __LZO_MMODEL * -#define lzo_uint32p lzo_uint32 __LZO_MMODEL * -#define lzo_int32p lzo_int32 __LZO_MMODEL * -#if defined(LZO_UINT64_MAX) -#define lzo_uint64p lzo_uint64 __LZO_MMODEL * -#define lzo_int64p lzo_int64 __LZO_MMODEL * -#endif -#define lzo_uintp lzo_uint __LZO_MMODEL * -#define lzo_intp lzo_int __LZO_MMODEL * -#define lzo_xintp lzo_xint __LZO_MMODEL * -#define lzo_voidpp lzo_voidp __LZO_MMODEL * -#define lzo_bytepp lzo_bytep __LZO_MMODEL * -/* deprecated - use 'lzo_bytep' instead of 'lzo_byte *' */ -#define lzo_byte unsigned char __LZO_MMODEL - -typedef int lzo_bool; - - -/*********************************************************************** -// function types -************************************************************************/ - -/* name mangling */ -#if !defined(__LZO_EXTERN_C) -# ifdef __cplusplus -# define __LZO_EXTERN_C extern "C" -# else -# define __LZO_EXTERN_C extern -# endif -#endif - -/* calling convention */ -#if !defined(__LZO_CDECL) -# define __LZO_CDECL __lzo_cdecl -#endif - -/* DLL export information */ -#if !defined(__LZO_EXPORT1) -# define __LZO_EXPORT1 /*empty*/ -#endif -#if !defined(__LZO_EXPORT2) -# define __LZO_EXPORT2 /*empty*/ -#endif - -/* __cdecl calling convention for public C and assembly functions */ -#if !defined(LZO_PUBLIC) -# define LZO_PUBLIC(_rettype) __LZO_EXPORT1 _rettype __LZO_EXPORT2 __LZO_CDECL -#endif -#if !defined(LZO_EXTERN) -# define LZO_EXTERN(_rettype) __LZO_EXTERN_C LZO_PUBLIC(_rettype) -#endif -#if !defined(LZO_PRIVATE) -# define LZO_PRIVATE(_rettype) static _rettype __LZO_CDECL -#endif - -/* function types */ -typedef int -(__LZO_CDECL *lzo_compress_t) ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -typedef int -(__LZO_CDECL *lzo_decompress_t) ( const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -typedef int -(__LZO_CDECL *lzo_optimize_t) ( lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem ); - -typedef int -(__LZO_CDECL *lzo_compress_dict_t)(const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - -typedef int -(__LZO_CDECL *lzo_decompress_dict_t)(const lzo_bytep src, lzo_uint src_len, - lzo_bytep dst, lzo_uintp dst_len, - lzo_voidp wrkmem, - const lzo_bytep dict, lzo_uint dict_len ); - - -/* Callback interface. Currently only the progress indicator ("nprogress") - * is used, but this may change in a future release. */ - -struct lzo_callback_t; -typedef struct lzo_callback_t lzo_callback_t; -#define lzo_callback_p lzo_callback_t __LZO_MMODEL * - -/* malloc & free function types */ -typedef lzo_voidp (__LZO_CDECL *lzo_alloc_func_t) - (lzo_callback_p self, lzo_uint items, lzo_uint size); -typedef void (__LZO_CDECL *lzo_free_func_t) - (lzo_callback_p self, lzo_voidp ptr); - -/* a progress indicator callback function */ -typedef void (__LZO_CDECL *lzo_progress_func_t) - (lzo_callback_p, lzo_uint, lzo_uint, int); - -struct lzo_callback_t -{ - /* custom allocators (set to 0 to disable) */ - lzo_alloc_func_t nalloc; /* [not used right now] */ - lzo_free_func_t nfree; /* [not used right now] */ - - /* a progress indicator callback function (set to 0 to disable) */ - lzo_progress_func_t nprogress; - - /* NOTE: the first parameter "self" of the nalloc/nfree/nprogress - * callbacks points back to this struct, so you are free to store - * some extra info in the following variables. */ - lzo_voidp user1; - lzo_xint user2; - lzo_xint user3; -}; - - -/*********************************************************************** -// error codes and prototypes -************************************************************************/ - -/* Error codes for the compression/decompression functions. Negative - * values are errors, positive values will be used for special but - * normal events. - */ -#define LZO_E_OK 0 -#define LZO_E_ERROR (-1) -#define LZO_E_OUT_OF_MEMORY (-2) /* [lzo_alloc_func_t failure] */ -#define LZO_E_NOT_COMPRESSIBLE (-3) /* [not used right now] */ -#define LZO_E_INPUT_OVERRUN (-4) -#define LZO_E_OUTPUT_OVERRUN (-5) -#define LZO_E_LOOKBEHIND_OVERRUN (-6) -#define LZO_E_EOF_NOT_FOUND (-7) -#define LZO_E_INPUT_NOT_CONSUMED (-8) -#define LZO_E_NOT_YET_IMPLEMENTED (-9) /* [not used right now] */ -#define LZO_E_INVALID_ARGUMENT (-10) - - -#ifndef lzo_sizeof_dict_t -# define lzo_sizeof_dict_t ((unsigned)sizeof(lzo_bytep)) -#endif - -/* lzo_init() should be the first function you call. - * Check the return code ! - * - * lzo_init() is a macro to allow checking that the library and the - * compiler's view of various types are consistent. - */ -#define lzo_init() __lzo_init_v2(LZO_VERSION,(int)sizeof(short),(int)sizeof(int),\ - (int)sizeof(long),(int)sizeof(lzo_uint32),(int)sizeof(lzo_uint),\ - (int)lzo_sizeof_dict_t,(int)sizeof(char *),(int)sizeof(lzo_voidp),\ - (int)sizeof(lzo_callback_t)) -LZO_EXTERN(int) __lzo_init_v2(unsigned,int,int,int,int,int,int,int,int,int); - -/* version functions (useful for shared libraries) */ -LZO_EXTERN(unsigned) lzo_version(void); -LZO_EXTERN(const char *) lzo_version_string(void); -LZO_EXTERN(const char *) lzo_version_date(void); -LZO_EXTERN(const lzo_charp) _lzo_version_string(void); -LZO_EXTERN(const lzo_charp) _lzo_version_date(void); - -/* string functions */ -LZO_EXTERN(int) - lzo_memcmp(const lzo_voidp a, const lzo_voidp b, lzo_uint len); -LZO_EXTERN(lzo_voidp) - lzo_memcpy(lzo_voidp dst, const lzo_voidp src, lzo_uint len); -LZO_EXTERN(lzo_voidp) - lzo_memmove(lzo_voidp dst, const lzo_voidp src, lzo_uint len); -LZO_EXTERN(lzo_voidp) - lzo_memset(lzo_voidp buf, int c, lzo_uint len); - -/* checksum functions */ -LZO_EXTERN(lzo_uint32) - lzo_adler32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); -LZO_EXTERN(lzo_uint32) - lzo_crc32(lzo_uint32 c, const lzo_bytep buf, lzo_uint len); -LZO_EXTERN(const lzo_uint32p) - lzo_get_crc32_table(void); - -/* misc. */ -LZO_EXTERN(int) _lzo_config_check(void); -typedef union { lzo_bytep p; lzo_uint u; } __lzo_pu_u; -typedef union { lzo_bytep p; lzo_uint32 u32; } __lzo_pu32_u; -typedef union { void *vp; lzo_bytep bp; lzo_uint u; lzo_uint32 u32; unsigned long l; } lzo_align_t; - -/* align a char pointer on a boundary that is a multiple of 'size' */ -LZO_EXTERN(unsigned) __lzo_align_gap(const lzo_voidp p, lzo_uint size); -#define LZO_PTR_ALIGN_UP(p,size) \ - ((p) + (lzo_uint) __lzo_align_gap((const lzo_voidp)(p),(lzo_uint)(size))) - - -/*********************************************************************** -// deprecated macros - only for backward compatibility with LZO v1.xx -************************************************************************/ - -#if defined(LZO_CFG_COMPAT) - -#define __LZOCONF_H 1 - -#if defined(LZO_ARCH_I086) -# define __LZO_i386 1 -#elif defined(LZO_ARCH_I386) -# define __LZO_i386 1 -#endif - -#if defined(LZO_OS_DOS16) -# define __LZO_DOS 1 -# define __LZO_DOS16 1 -#elif defined(LZO_OS_DOS32) -# define __LZO_DOS 1 -#elif defined(LZO_OS_WIN16) -# define __LZO_WIN 1 -# define __LZO_WIN16 1 -#elif defined(LZO_OS_WIN32) -# define __LZO_WIN 1 -#endif - -#define __LZO_CMODEL /*empty*/ -#define __LZO_DMODEL /*empty*/ -#define __LZO_ENTRY __LZO_CDECL -#define LZO_EXTERN_CDECL LZO_EXTERN -#define LZO_ALIGN LZO_PTR_ALIGN_UP - -#define lzo_compress_asm_t lzo_compress_t -#define lzo_decompress_asm_t lzo_decompress_t - -#endif /* LZO_CFG_COMPAT */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzodefs.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzodefs.h deleted file mode 100644 index 0e40e332a8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzodefs.h +++ /dev/null @@ -1,1852 +0,0 @@ -/* lzodefs.h -- architecture, OS and compiler specific defines - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZODEFS_H_INCLUDED -#define __LZODEFS_H_INCLUDED 1 - -#if defined(__CYGWIN32__) && !defined(__CYGWIN__) -# define __CYGWIN__ __CYGWIN32__ -#endif -#if defined(__IBMCPP__) && !defined(__IBMC__) -# define __IBMC__ __IBMCPP__ -#endif -#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER) -# define __INTEL_COMPILER __ICL -#endif -#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE) -# define _ALL_SOURCE 1 -#endif -#if defined(__mips__) && defined(__R5900__) -# if !defined(__LONG_MAX__) -# define __LONG_MAX__ 9223372036854775807L -# endif -#endif -#if defined(__INTEL_COMPILER) && defined(__linux__) -# pragma warning(disable: 193) -#endif -#if defined(__KEIL__) && defined(__C166__) -# pragma warning disable = 322 -#elif 0 && defined(__C251__) -# pragma warning disable = 322 -#endif -#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__) -# if (_MSC_VER >= 1300) -# pragma warning(disable: 4668) -# endif -#endif -#if 0 && defined(__WATCOMC__) -# if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060) -# pragma warning 203 9 -# endif -#endif -#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__) -# pragma option -h -#endif -#if 0 -#define LZO_0xffffL 0xfffful -#define LZO_0xffffffffL 0xfffffffful -#else -#define LZO_0xffffL 65535ul -#define LZO_0xffffffffL 4294967295ul -#endif -#if (LZO_0xffffL == LZO_0xffffffffL) -# error "your preprocessor is broken 1" -#endif -#if (16ul * 16384ul != 262144ul) -# error "your preprocessor is broken 2" -#endif -#if 0 -#if (32767 >= 4294967295ul) -# error "your preprocessor is broken 3" -#endif -#if (65535u >= 4294967295ul) -# error "your preprocessor is broken 4" -#endif -#endif -#if (UINT_MAX == LZO_0xffffL) -#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__) -# if !defined(MSDOS) -# define MSDOS 1 -# endif -# if !defined(_MSDOS) -# define _MSDOS 1 -# endif -#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX) -# if (__VERSION == 520) && (MB_LEN_MAX == 1) -# if !defined(__AZTEC_C__) -# define __AZTEC_C__ __VERSION -# endif -# if !defined(__DOS__) -# define __DOS__ 1 -# endif -# endif -#endif -#endif -#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL) -# define ptrdiff_t long -# define _PTRDIFF_T_DEFINED 1 -#endif -#if (UINT_MAX == LZO_0xffffL) -# undef __LZO_RENAME_A -# undef __LZO_RENAME_B -# if defined(__AZTEC_C__) && defined(__DOS__) -# define __LZO_RENAME_A 1 -# elif defined(_MSC_VER) && defined(MSDOS) -# if (_MSC_VER < 600) -# define __LZO_RENAME_A 1 -# elif (_MSC_VER < 700) -# define __LZO_RENAME_B 1 -# endif -# elif defined(__TSC__) && defined(__OS2__) -# define __LZO_RENAME_A 1 -# elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410) -# define __LZO_RENAME_A 1 -# elif defined(__PACIFIC__) && defined(DOS) -# if !defined(__far) -# define __far far -# endif -# if !defined(__near) -# define __near near -# endif -# endif -# if defined(__LZO_RENAME_A) -# if !defined(__cdecl) -# define __cdecl cdecl -# endif -# if !defined(__far) -# define __far far -# endif -# if !defined(__huge) -# define __huge huge -# endif -# if !defined(__near) -# define __near near -# endif -# if !defined(__pascal) -# define __pascal pascal -# endif -# if !defined(__huge) -# define __huge huge -# endif -# elif defined(__LZO_RENAME_B) -# if !defined(__cdecl) -# define __cdecl _cdecl -# endif -# if !defined(__far) -# define __far _far -# endif -# if !defined(__huge) -# define __huge _huge -# endif -# if !defined(__near) -# define __near _near -# endif -# if !defined(__pascal) -# define __pascal _pascal -# endif -# elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) -# if !defined(__cdecl) -# define __cdecl cdecl -# endif -# if !defined(__pascal) -# define __pascal pascal -# endif -# endif -# undef __LZO_RENAME_A -# undef __LZO_RENAME_B -#endif -#if (UINT_MAX == LZO_0xffffL) -#if defined(__AZTEC_C__) && defined(__DOS__) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -#elif defined(_MSC_VER) && defined(MSDOS) -# if (_MSC_VER < 600) -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -# endif -# if (_MSC_VER < 700) -# define LZO_BROKEN_INTEGRAL_PROMOTION 1 -# define LZO_BROKEN_SIZEOF 1 -# endif -#elif defined(__PACIFIC__) && defined(DOS) -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -#elif defined(__TURBOC__) && defined(__MSDOS__) -# if (__TURBOC__ < 0x0150) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -# define LZO_BROKEN_INTEGRAL_PROMOTION 1 -# endif -# if (__TURBOC__ < 0x0200) -# define LZO_BROKEN_SIZEOF 1 -# endif -# if (__TURBOC__ < 0x0400) && defined(__cplusplus) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -# endif -#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__) -# define LZO_BROKEN_CDECL_ALT_SYNTAX 1 -# define LZO_BROKEN_SIZEOF 1 -#endif -#endif -#if defined(__WATCOMC__) && (__WATCOMC__ < 900) -# define LZO_BROKEN_INTEGRAL_CONSTANTS 1 -#endif -#if defined(_CRAY) && defined(_CRAY1) -# define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1 -#endif -#define LZO_PP_STRINGIZE(x) #x -#define LZO_PP_MACRO_EXPAND(x) LZO_PP_STRINGIZE(x) -#define LZO_PP_CONCAT2(a,b) a ## b -#define LZO_PP_CONCAT3(a,b,c) a ## b ## c -#define LZO_PP_CONCAT4(a,b,c,d) a ## b ## c ## d -#define LZO_PP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e -#define LZO_PP_ECONCAT2(a,b) LZO_PP_CONCAT2(a,b) -#define LZO_PP_ECONCAT3(a,b,c) LZO_PP_CONCAT3(a,b,c) -#define LZO_PP_ECONCAT4(a,b,c,d) LZO_PP_CONCAT4(a,b,c,d) -#define LZO_PP_ECONCAT5(a,b,c,d,e) LZO_PP_CONCAT5(a,b,c,d,e) -#if 1 -#define LZO_CPP_STRINGIZE(x) #x -#define LZO_CPP_MACRO_EXPAND(x) LZO_CPP_STRINGIZE(x) -#define LZO_CPP_CONCAT2(a,b) a ## b -#define LZO_CPP_CONCAT3(a,b,c) a ## b ## c -#define LZO_CPP_CONCAT4(a,b,c,d) a ## b ## c ## d -#define LZO_CPP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e -#define LZO_CPP_ECONCAT2(a,b) LZO_CPP_CONCAT2(a,b) -#define LZO_CPP_ECONCAT3(a,b,c) LZO_CPP_CONCAT3(a,b,c) -#define LZO_CPP_ECONCAT4(a,b,c,d) LZO_CPP_CONCAT4(a,b,c,d) -#define LZO_CPP_ECONCAT5(a,b,c,d,e) LZO_CPP_CONCAT5(a,b,c,d,e) -#endif -#define __LZO_MASK_GEN(o,b) (((((o) << ((b)-1)) - (o)) << 1) + (o)) -#if 1 && defined(__cplusplus) -# if !defined(__STDC_CONSTANT_MACROS) -# define __STDC_CONSTANT_MACROS 1 -# endif -# if !defined(__STDC_LIMIT_MACROS) -# define __STDC_LIMIT_MACROS 1 -# endif -#endif -#if defined(__cplusplus) -# define LZO_EXTERN_C extern "C" -#else -# define LZO_EXTERN_C extern -#endif -#if !defined(__LZO_OS_OVERRIDE) -#if (LZO_OS_FREESTANDING) -# define LZO_INFO_OS "freestanding" -#elif (LZO_OS_EMBEDDED) -# define LZO_INFO_OS "embedded" -#elif 1 && defined(__IAR_SYSTEMS_ICC__) -# define LZO_OS_EMBEDDED 1 -# define LZO_INFO_OS "embedded" -#elif defined(__CYGWIN__) && defined(__GNUC__) -# define LZO_OS_CYGWIN 1 -# define LZO_INFO_OS "cygwin" -#elif defined(__EMX__) && defined(__GNUC__) -# define LZO_OS_EMX 1 -# define LZO_INFO_OS "emx" -#elif defined(__BEOS__) -# define LZO_OS_BEOS 1 -# define LZO_INFO_OS "beos" -#elif defined(__Lynx__) -# define LZO_OS_LYNXOS 1 -# define LZO_INFO_OS "lynxos" -#elif defined(__OS400__) -# define LZO_OS_OS400 1 -# define LZO_INFO_OS "os400" -#elif defined(__QNX__) -# define LZO_OS_QNX 1 -# define LZO_INFO_OS "qnx" -#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460) -# define LZO_OS_DOS32 1 -# define LZO_INFO_OS "dos32" -#elif defined(__BORLANDC__) && defined(__DPMI16__) -# define LZO_OS_DOS16 1 -# define LZO_INFO_OS "dos16" -#elif defined(__ZTC__) && defined(DOS386) -# define LZO_OS_DOS32 1 -# define LZO_INFO_OS "dos32" -#elif defined(__OS2__) || defined(__OS2V2__) -# if (UINT_MAX == LZO_0xffffL) -# define LZO_OS_OS216 1 -# define LZO_INFO_OS "os216" -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_OS_OS2 1 -# define LZO_INFO_OS "os2" -# else -# error "check your limits.h header" -# endif -#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64) -# define LZO_OS_WIN64 1 -# define LZO_INFO_OS "win64" -#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -#elif defined(__MWERKS__) && defined(__INTEL__) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows) -# if (UINT_MAX == LZO_0xffffL) -# define LZO_OS_WIN16 1 -# define LZO_INFO_OS "win16" -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -# else -# error "check your limits.h header" -# endif -#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS)) -# if (UINT_MAX == LZO_0xffffL) -# define LZO_OS_DOS16 1 -# define LZO_INFO_OS "dos16" -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_OS_DOS32 1 -# define LZO_INFO_OS "dos32" -# else -# error "check your limits.h header" -# endif -#elif defined(__WATCOMC__) -# if defined(__NT__) && (UINT_MAX == LZO_0xffffL) -# define LZO_OS_DOS16 1 -# define LZO_INFO_OS "dos16" -# elif defined(__NT__) && (__WATCOMC__ < 1100) -# define LZO_OS_WIN32 1 -# define LZO_INFO_OS "win32" -# elif defined(__linux__) || defined(__LINUX__) -# define LZO_OS_POSIX 1 -# define LZO_INFO_OS "posix" -# else -# error "please specify a target using the -bt compiler option" -# endif -#elif defined(__palmos__) -# define LZO_OS_PALMOS 1 -# define LZO_INFO_OS "palmos" -#elif defined(__TOS__) || defined(__atarist__) -# define LZO_OS_TOS 1 -# define LZO_INFO_OS "tos" -#elif defined(macintosh) && !defined(__ppc__) -# define LZO_OS_MACCLASSIC 1 -# define LZO_INFO_OS "macclassic" -#elif defined(__VMS) -# define LZO_OS_VMS 1 -# define LZO_INFO_OS "vms" -#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) -# define LZO_OS_CONSOLE 1 -# define LZO_OS_CONSOLE_PS2 1 -# define LZO_INFO_OS "console" -# define LZO_INFO_OS_CONSOLE "ps2" -#elif (defined(__mips__) && defined(__psp__)) -# define LZO_OS_CONSOLE 1 -# define LZO_OS_CONSOLE_PSP 1 -# define LZO_INFO_OS "console" -# define LZO_INFO_OS_CONSOLE "psp" -#else -# define LZO_OS_POSIX 1 -# define LZO_INFO_OS "posix" -#endif -#if (LZO_OS_POSIX) -# if defined(_AIX) || defined(__AIX__) || defined(__aix__) -# define LZO_OS_POSIX_AIX 1 -# define LZO_INFO_OS_POSIX "aix" -# elif defined(__FreeBSD__) -# define LZO_OS_POSIX_FREEBSD 1 -# define LZO_INFO_OS_POSIX "freebsd" -# elif defined(__hpux__) || defined(__hpux) -# define LZO_OS_POSIX_HPUX 1 -# define LZO_INFO_OS_POSIX "hpux" -# elif defined(__INTERIX) -# define LZO_OS_POSIX_INTERIX 1 -# define LZO_INFO_OS_POSIX "interix" -# elif defined(__IRIX__) || defined(__irix__) -# define LZO_OS_POSIX_IRIX 1 -# define LZO_INFO_OS_POSIX "irix" -# elif defined(__linux__) || defined(__linux) || defined(__LINUX__) -# define LZO_OS_POSIX_LINUX 1 -# define LZO_INFO_OS_POSIX "linux" -# elif defined(__APPLE__) || defined(__MACOS__) -# define LZO_OS_POSIX_MACOSX 1 -# define LZO_INFO_OS_POSIX "macosx" -# elif defined(__minix__) || defined(__minix) -# define LZO_OS_POSIX_MINIX 1 -# define LZO_INFO_OS_POSIX "minix" -# elif defined(__NetBSD__) -# define LZO_OS_POSIX_NETBSD 1 -# define LZO_INFO_OS_POSIX "netbsd" -# elif defined(__OpenBSD__) -# define LZO_OS_POSIX_OPENBSD 1 -# define LZO_INFO_OS_POSIX "openbsd" -# elif defined(__osf__) -# define LZO_OS_POSIX_OSF 1 -# define LZO_INFO_OS_POSIX "osf" -# elif defined(__solaris__) || defined(__sun) -# if defined(__SVR4) || defined(__svr4__) -# define LZO_OS_POSIX_SOLARIS 1 -# define LZO_INFO_OS_POSIX "solaris" -# else -# define LZO_OS_POSIX_SUNOS 1 -# define LZO_INFO_OS_POSIX "sunos" -# endif -# elif defined(__ultrix__) || defined(__ultrix) -# define LZO_OS_POSIX_ULTRIX 1 -# define LZO_INFO_OS_POSIX "ultrix" -# elif defined(_UNICOS) -# define LZO_OS_POSIX_UNICOS 1 -# define LZO_INFO_OS_POSIX "unicos" -# else -# define LZO_OS_POSIX_UNKNOWN 1 -# define LZO_INFO_OS_POSIX "unknown" -# endif -#endif -#endif -#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) -# if (UINT_MAX != LZO_0xffffL) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64) -# if (UINT_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__) -# define LZO_CC_CILLY 1 -# define LZO_INFO_CC "Cilly" -# if defined(__CILLY__) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CILLY__) -# else -# define LZO_INFO_CCVER "unknown" -# endif -#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__) -# define LZO_CC_SDCC 1 -# define LZO_INFO_CC "sdcc" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(SDCC) -#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__) -# define LZO_CC_PATHSCALE (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__) -# define LZO_INFO_CC "Pathscale C" -# define LZO_INFO_CCVER __PATHSCALE__ -#elif defined(__INTEL_COMPILER) -# define LZO_CC_INTELC 1 -# define LZO_INFO_CC "Intel C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__INTEL_COMPILER) -# if defined(_WIN32) || defined(_WIN64) -# define LZO_CC_SYNTAX_MSC 1 -# else -# define LZO_CC_SYNTAX_GNUC 1 -# endif -#elif defined(__POCC__) && defined(_WIN32) -# define LZO_CC_PELLESC 1 -# define LZO_INFO_CC "Pelles C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__POCC__) -#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) -# if defined(__GNUC_PATCHLEVEL__) -# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) -# else -# define LZO_CC_CLANG_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) -# endif -# if defined(__clang_major__) && defined(__clang_minor__) && defined(__clang_patchlevel__) -# define LZO_CC_CLANG_CLANG (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__) -# else -# define LZO_CC_CLANG_CLANG 0x010000L -# endif -# define LZO_CC_CLANG LZO_CC_CLANG_GNUC -# define LZO_INFO_CC "clang" -# define LZO_INFO_CCVER __VERSION__ -#elif defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__) -# if defined(__GNUC_PATCHLEVEL__) -# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) -# else -# define LZO_CC_LLVM_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) -# endif -# define LZO_CC_LLVM LZO_CC_LLVM_GNUC -# define LZO_INFO_CC "llvm-gcc" -# define LZO_INFO_CCVER __VERSION__ -#elif defined(__GNUC__) && defined(__VERSION__) -# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__) -# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__) -# elif defined(__GNUC_MINOR__) -# define LZO_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100) -# else -# define LZO_CC_GNUC (__GNUC__ * 0x10000L) -# endif -# define LZO_INFO_CC "gcc" -# define LZO_INFO_CCVER __VERSION__ -#elif defined(__ACK__) && defined(_ACK) -# define LZO_CC_ACK 1 -# define LZO_INFO_CC "Amsterdam Compiler Kit C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__AZTEC_C__) -# define LZO_CC_AZTECC 1 -# define LZO_INFO_CC "Aztec C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__AZTEC_C__) -#elif defined(__CODEGEARC__) -# define LZO_CC_CODEGEARC 1 -# define LZO_INFO_CC "CodeGear C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__CODEGEARC__) -#elif defined(__BORLANDC__) -# define LZO_CC_BORLANDC 1 -# define LZO_INFO_CC "Borland C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__BORLANDC__) -#elif defined(_CRAYC) && defined(_RELEASE) -# define LZO_CC_CRAYC 1 -# define LZO_INFO_CC "Cray C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_RELEASE) -#elif defined(__DMC__) && defined(__SC__) -# define LZO_CC_DMC 1 -# define LZO_INFO_CC "Digital Mars C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DMC__) -#elif defined(__DECC) -# define LZO_CC_DECC 1 -# define LZO_INFO_CC "DEC C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__DECC) -#elif defined(__HIGHC__) -# define LZO_CC_HIGHC 1 -# define LZO_INFO_CC "MetaWare High C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__IAR_SYSTEMS_ICC__) -# define LZO_CC_IARC 1 -# define LZO_INFO_CC "IAR C" -# if defined(__VER__) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__VER__) -# else -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(__IBMC__) -# define LZO_CC_IBMC 1 -# define LZO_INFO_CC "IBM C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__IBMC__) -#elif defined(__KEIL__) && defined(__C166__) -# define LZO_CC_KEILC 1 -# define LZO_INFO_CC "Keil C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__C166__) -#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL) -# define LZO_CC_LCCWIN32 1 -# define LZO_INFO_CC "lcc-win32" -# define LZO_INFO_CCVER "unknown" -#elif defined(__LCC__) -# define LZO_CC_LCC 1 -# define LZO_INFO_CC "lcc" -# if defined(__LCC_VERSION__) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__LCC_VERSION__) -# else -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(_MSC_VER) -# define LZO_CC_MSC 1 -# define LZO_INFO_CC "Microsoft C" -# if defined(_MSC_FULL_VER) -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER) -# else -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(_MSC_VER) -# endif -#elif defined(__MWERKS__) -# define LZO_CC_MWERKS 1 -# define LZO_INFO_CC "Metrowerks C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__MWERKS__) -#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386) -# define LZO_CC_NDPC 1 -# define LZO_INFO_CC "Microway NDP C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__PACIFIC__) -# define LZO_CC_PACIFICC 1 -# define LZO_INFO_CC "Pacific C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PACIFIC__) -#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__)) -# define LZO_CC_PGI 1 -# define LZO_INFO_CC "Portland Group PGI C" -# define LZO_INFO_CCVER "unknown" -#elif defined(__PUREC__) && defined(__TOS__) -# define LZO_CC_PUREC 1 -# define LZO_INFO_CC "Pure C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__PUREC__) -#elif defined(__SC__) && defined(__ZTC__) -# define LZO_CC_SYMANTECC 1 -# define LZO_INFO_CC "Symantec C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SC__) -#elif defined(__SUNPRO_C) -# define LZO_INFO_CC "SunPro C" -# if ((__SUNPRO_C)+0 > 0) -# define LZO_CC_SUNPROC __SUNPRO_C -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_C) -# else -# define LZO_CC_SUNPROC 1 -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(__SUNPRO_CC) -# define LZO_INFO_CC "SunPro C" -# if ((__SUNPRO_CC)+0 > 0) -# define LZO_CC_SUNPROC __SUNPRO_CC -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__SUNPRO_CC) -# else -# define LZO_CC_SUNPROC 1 -# define LZO_INFO_CCVER "unknown" -# endif -#elif defined(__TINYC__) -# define LZO_CC_TINYC 1 -# define LZO_INFO_CC "Tiny C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TINYC__) -#elif defined(__TSC__) -# define LZO_CC_TOPSPEEDC 1 -# define LZO_INFO_CC "TopSpeed C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TSC__) -#elif defined(__WATCOMC__) -# define LZO_CC_WATCOMC 1 -# define LZO_INFO_CC "Watcom C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__WATCOMC__) -#elif defined(__TURBOC__) -# define LZO_CC_TURBOC 1 -# define LZO_INFO_CC "Turbo C" -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__TURBOC__) -#elif defined(__ZTC__) -# define LZO_CC_ZORTECHC 1 -# define LZO_INFO_CC "Zortech C" -# if (__ZTC__ == 0x310) -# define LZO_INFO_CCVER "0x310" -# else -# define LZO_INFO_CCVER LZO_PP_MACRO_EXPAND(__ZTC__) -# endif -#else -# define LZO_CC_UNKNOWN 1 -# define LZO_INFO_CC "unknown" -# define LZO_INFO_CCVER "unknown" -#endif -#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER) -# error "LZO_CC_MSC: _MSC_FULL_VER is not defined" -#endif -#if !defined(__LZO_ARCH_OVERRIDE) && !(LZO_ARCH_GENERIC) && defined(_CRAY) -# if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY) -# if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E) -# define LZO_ARCH_CRAY_MPP 1 -# elif defined(_CRAY1) -# define LZO_ARCH_CRAY_PVP 1 -# endif -# endif -#endif -#if !defined(__LZO_ARCH_OVERRIDE) -#if (LZO_ARCH_GENERIC) -# define LZO_INFO_ARCH "generic" -#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) -# define LZO_ARCH_I086 1 -# define LZO_ARCH_IA16 1 -# define LZO_INFO_ARCH "i086" -#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA) -# define LZO_ARCH_ALPHA 1 -# define LZO_INFO_ARCH "alpha" -#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E)) -# define LZO_ARCH_ALPHA 1 -# define LZO_INFO_ARCH "alpha" -#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64) -# define LZO_ARCH_AMD64 1 -# define LZO_INFO_ARCH "amd64" -#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB)) -# define LZO_ARCH_ARM 1 -# define LZO_ARCH_ARM_THUMB 1 -# define LZO_INFO_ARCH "arm_thumb" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__) -# define LZO_ARCH_ARM 1 -# if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1) -# define LZO_ARCH_ARM_THUMB 1 -# define LZO_INFO_ARCH "arm_thumb" -# elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2) -# define LZO_INFO_ARCH "arm" -# else -# define LZO_INFO_ARCH "arm" -# endif -#elif defined(__arm__) || defined(_M_ARM) -# define LZO_ARCH_ARM 1 -# define LZO_INFO_ARCH "arm" -#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__) -# define LZO_ARCH_AVR 1 -# define LZO_INFO_ARCH "avr" -#elif defined(__avr32__) || defined(__AVR32__) -# define LZO_ARCH_AVR32 1 -# define LZO_INFO_ARCH "avr32" -#elif defined(__bfin__) -# define LZO_ARCH_BLACKFIN 1 -# define LZO_INFO_ARCH "blackfin" -#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__) -# define LZO_ARCH_C166 1 -# define LZO_INFO_ARCH "c166" -#elif defined(__cris__) -# define LZO_ARCH_CRIS 1 -# define LZO_INFO_ARCH "cris" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__) -# define LZO_ARCH_EZ80 1 -# define LZO_INFO_ARCH "ez80" -#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) -# define LZO_ARCH_H8300 1 -# define LZO_INFO_ARCH "h8300" -#elif defined(__hppa__) || defined(__hppa) -# define LZO_ARCH_HPPA 1 -# define LZO_INFO_ARCH "hppa" -#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386) -# define LZO_ARCH_I386 1 -# define LZO_ARCH_IA32 1 -# define LZO_INFO_ARCH "i386" -#elif (LZO_CC_ZORTECHC && defined(__I86__)) -# define LZO_ARCH_I386 1 -# define LZO_ARCH_IA32 1 -# define LZO_INFO_ARCH "i386" -#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386) -# define LZO_ARCH_I386 1 -# define LZO_ARCH_IA32 1 -# define LZO_INFO_ARCH "i386" -#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64) -# define LZO_ARCH_IA64 1 -# define LZO_INFO_ARCH "ia64" -#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__) -# define LZO_ARCH_M16C 1 -# define LZO_INFO_ARCH "m16c" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__) -# define LZO_ARCH_M16C 1 -# define LZO_INFO_ARCH "m16c" -#elif defined(__m32r__) -# define LZO_ARCH_M32R 1 -# define LZO_INFO_ARCH "m32r" -#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K) -# define LZO_ARCH_M68K 1 -# define LZO_INFO_ARCH "m68k" -#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__) -# define LZO_ARCH_MCS251 1 -# define LZO_INFO_ARCH "mcs251" -#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__) -# define LZO_ARCH_MCS51 1 -# define LZO_INFO_ARCH "mcs51" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__) -# define LZO_ARCH_MCS51 1 -# define LZO_INFO_ARCH "mcs51" -#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000) -# define LZO_ARCH_MIPS 1 -# define LZO_INFO_ARCH "mips" -#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__) -# define LZO_ARCH_MSP430 1 -# define LZO_INFO_ARCH "msp430" -#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__) -# define LZO_ARCH_MSP430 1 -# define LZO_INFO_ARCH "msp430" -#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR) -# define LZO_ARCH_POWERPC 1 -# define LZO_INFO_ARCH "powerpc" -#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x) -# define LZO_ARCH_S390 1 -# define LZO_INFO_ARCH "s390" -#elif defined(__sh__) || defined(_M_SH) -# define LZO_ARCH_SH 1 -# define LZO_INFO_ARCH "sh" -#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8) -# define LZO_ARCH_SPARC 1 -# define LZO_INFO_ARCH "sparc" -#elif defined(__SPU__) -# define LZO_ARCH_SPU 1 -# define LZO_INFO_ARCH "spu" -#elif (UINT_MAX == LZO_0xffffL) && defined(__z80) -# define LZO_ARCH_Z80 1 -# define LZO_INFO_ARCH "z80" -#elif (LZO_ARCH_CRAY_PVP) -# if defined(_CRAYSV1) -# define LZO_ARCH_CRAY_SV1 1 -# define LZO_INFO_ARCH "cray_sv1" -# elif (_ADDR64) -# define LZO_ARCH_CRAY_T90 1 -# define LZO_INFO_ARCH "cray_t90" -# elif (_ADDR32) -# define LZO_ARCH_CRAY_YMP 1 -# define LZO_INFO_ARCH "cray_ymp" -# else -# define LZO_ARCH_CRAY_XMP 1 -# define LZO_INFO_ARCH "cray_xmp" -# endif -#else -# define LZO_ARCH_UNKNOWN 1 -# define LZO_INFO_ARCH "unknown" -#endif -#endif -#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2) -# error "FIXME - missing define for CPU architecture" -#endif -#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32) -# error "FIXME - missing WIN32 define for CPU architecture" -#endif -#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64) -# error "FIXME - missing WIN64 define for CPU architecture" -#endif -#if (LZO_OS_OS216 || LZO_OS_WIN16) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#elif 1 && (LZO_OS_DOS16 && defined(BLX286)) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#elif 1 && (LZO_OS_DOS16 && defined(DOSX286)) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__)) -# define LZO_ARCH_I086PM 1 -# define LZO_ARCH_IA16PM 1 -#endif -#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM) -# error "this should not happen" -#endif -#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086) -# error "this should not happen" -#endif -#if (LZO_ARCH_I086) -# if (UINT_MAX != LZO_0xffffL) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if (LZO_ARCH_I386) -# if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__) -# error "this should not happen" -# endif -# if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__) -# error "this should not happen" -# endif -# if (ULONG_MAX != LZO_0xffffffffL) -# error "this should not happen" -# endif -#endif -#if !defined(__LZO_MM_OVERRIDE) -#if (LZO_ARCH_I086) -#if (UINT_MAX != LZO_0xffffL) -# error "this should not happen" -#endif -#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM) -# define LZO_MM_TINY 1 -#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM) -# define LZO_MM_HUGE 1 -#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL) -# define LZO_MM_SMALL 1 -#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM) -# define LZO_MM_MEDIUM 1 -#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM) -# define LZO_MM_COMPACT 1 -#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL) -# define LZO_MM_LARGE 1 -#elif (LZO_CC_AZTECC) -# if defined(_LARGE_CODE) && defined(_LARGE_DATA) -# define LZO_MM_LARGE 1 -# elif defined(_LARGE_CODE) -# define LZO_MM_MEDIUM 1 -# elif defined(_LARGE_DATA) -# define LZO_MM_COMPACT 1 -# else -# define LZO_MM_SMALL 1 -# endif -#elif (LZO_CC_ZORTECHC && defined(__VCM__)) -# define LZO_MM_LARGE 1 -#else -# error "unknown memory model" -#endif -#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16) -#define LZO_HAVE_MM_HUGE_PTR 1 -#define LZO_HAVE_MM_HUGE_ARRAY 1 -#if (LZO_MM_TINY) -# undef LZO_HAVE_MM_HUGE_ARRAY -#endif -#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC) -# undef LZO_HAVE_MM_HUGE_PTR -# undef LZO_HAVE_MM_HUGE_ARRAY -#elif (LZO_CC_DMC || LZO_CC_SYMANTECC) -# undef LZO_HAVE_MM_HUGE_ARRAY -#elif (LZO_CC_MSC && defined(_QC)) -# undef LZO_HAVE_MM_HUGE_ARRAY -# if (_MSC_VER < 600) -# undef LZO_HAVE_MM_HUGE_PTR -# endif -#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295)) -# undef LZO_HAVE_MM_HUGE_ARRAY -#endif -#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR) -# if (LZO_OS_DOS16) -# error "this should not happen" -# elif (LZO_CC_ZORTECHC) -# else -# error "this should not happen" -# endif -#endif -#ifdef __cplusplus -extern "C" { -#endif -#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200)) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295)) - extern void __near __cdecl _AHSHIFT(void); -# define LZO_MM_AHSHIFT ((unsigned) _AHSHIFT) -#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16) -# define LZO_MM_AHSHIFT 12 -#elif (LZO_CC_WATCOMC) - extern unsigned char _HShift; -# define LZO_MM_AHSHIFT ((unsigned) _HShift) -#else -# error "FIXME - implement LZO_MM_AHSHIFT" -#endif -#ifdef __cplusplus -} -#endif -#endif -#elif (LZO_ARCH_C166) -#if !defined(__MODEL__) -# error "FIXME - C166 __MODEL__" -#elif ((__MODEL__) == 0) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 1) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 2) -# define LZO_MM_LARGE 1 -#elif ((__MODEL__) == 3) -# define LZO_MM_TINY 1 -#elif ((__MODEL__) == 4) -# define LZO_MM_XTINY 1 -#elif ((__MODEL__) == 5) -# define LZO_MM_XSMALL 1 -#else -# error "FIXME - C166 __MODEL__" -#endif -#elif (LZO_ARCH_MCS251) -#if !defined(__MODEL__) -# error "FIXME - MCS251 __MODEL__" -#elif ((__MODEL__) == 0) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 2) -# define LZO_MM_LARGE 1 -#elif ((__MODEL__) == 3) -# define LZO_MM_TINY 1 -#elif ((__MODEL__) == 4) -# define LZO_MM_XTINY 1 -#elif ((__MODEL__) == 5) -# define LZO_MM_XSMALL 1 -#else -# error "FIXME - MCS251 __MODEL__" -#endif -#elif (LZO_ARCH_MCS51) -#if !defined(__MODEL__) -# error "FIXME - MCS51 __MODEL__" -#elif ((__MODEL__) == 1) -# define LZO_MM_SMALL 1 -#elif ((__MODEL__) == 2) -# define LZO_MM_LARGE 1 -#elif ((__MODEL__) == 3) -# define LZO_MM_TINY 1 -#elif ((__MODEL__) == 4) -# define LZO_MM_XTINY 1 -#elif ((__MODEL__) == 5) -# define LZO_MM_XSMALL 1 -#else -# error "FIXME - MCS51 __MODEL__" -#endif -#elif (LZO_ARCH_CRAY_PVP) -# define LZO_MM_PVP 1 -#else -# define LZO_MM_FLAT 1 -#endif -#if (LZO_MM_COMPACT) -# define LZO_INFO_MM "compact" -#elif (LZO_MM_FLAT) -# define LZO_INFO_MM "flat" -#elif (LZO_MM_HUGE) -# define LZO_INFO_MM "huge" -#elif (LZO_MM_LARGE) -# define LZO_INFO_MM "large" -#elif (LZO_MM_MEDIUM) -# define LZO_INFO_MM "medium" -#elif (LZO_MM_PVP) -# define LZO_INFO_MM "pvp" -#elif (LZO_MM_SMALL) -# define LZO_INFO_MM "small" -#elif (LZO_MM_TINY) -# define LZO_INFO_MM "tiny" -#else -# error "unknown memory model" -#endif -#endif -#if defined(SIZEOF_SHORT) -# define LZO_SIZEOF_SHORT (SIZEOF_SHORT) -#endif -#if defined(SIZEOF_INT) -# define LZO_SIZEOF_INT (SIZEOF_INT) -#endif -#if defined(SIZEOF_LONG) -# define LZO_SIZEOF_LONG (SIZEOF_LONG) -#endif -#if defined(SIZEOF_LONG_LONG) -# define LZO_SIZEOF_LONG_LONG (SIZEOF_LONG_LONG) -#endif -#if defined(SIZEOF___INT16) -# define LZO_SIZEOF___INT16 (SIZEOF___INT16) -#endif -#if defined(SIZEOF___INT32) -# define LZO_SIZEOF___INT32 (SIZEOF___INT32) -#endif -#if defined(SIZEOF___INT64) -# define LZO_SIZEOF___INT64 (SIZEOF___INT64) -#endif -#if defined(SIZEOF_VOID_P) -# define LZO_SIZEOF_VOID_P (SIZEOF_VOID_P) -#endif -#if defined(SIZEOF_SIZE_T) -# define LZO_SIZEOF_SIZE_T (SIZEOF_SIZE_T) -#endif -#if defined(SIZEOF_PTRDIFF_T) -# define LZO_SIZEOF_PTRDIFF_T (SIZEOF_PTRDIFF_T) -#endif -#define __LZO_LSR(x,b) (((x)+0ul) >> (b)) -#if !defined(LZO_SIZEOF_SHORT) -# if (LZO_ARCH_CRAY_PVP) -# define LZO_SIZEOF_SHORT 8 -# elif (USHRT_MAX == LZO_0xffffL) -# define LZO_SIZEOF_SHORT 2 -# elif (__LZO_LSR(USHRT_MAX,7) == 1) -# define LZO_SIZEOF_SHORT 1 -# elif (__LZO_LSR(USHRT_MAX,15) == 1) -# define LZO_SIZEOF_SHORT 2 -# elif (__LZO_LSR(USHRT_MAX,31) == 1) -# define LZO_SIZEOF_SHORT 4 -# elif (__LZO_LSR(USHRT_MAX,63) == 1) -# define LZO_SIZEOF_SHORT 8 -# elif (__LZO_LSR(USHRT_MAX,127) == 1) -# define LZO_SIZEOF_SHORT 16 -# else -# error "LZO_SIZEOF_SHORT" -# endif -#endif -#if !defined(LZO_SIZEOF_INT) -# if (LZO_ARCH_CRAY_PVP) -# define LZO_SIZEOF_INT 8 -# elif (UINT_MAX == LZO_0xffffL) -# define LZO_SIZEOF_INT 2 -# elif (UINT_MAX == LZO_0xffffffffL) -# define LZO_SIZEOF_INT 4 -# elif (__LZO_LSR(UINT_MAX,7) == 1) -# define LZO_SIZEOF_INT 1 -# elif (__LZO_LSR(UINT_MAX,15) == 1) -# define LZO_SIZEOF_INT 2 -# elif (__LZO_LSR(UINT_MAX,31) == 1) -# define LZO_SIZEOF_INT 4 -# elif (__LZO_LSR(UINT_MAX,63) == 1) -# define LZO_SIZEOF_INT 8 -# elif (__LZO_LSR(UINT_MAX,127) == 1) -# define LZO_SIZEOF_INT 16 -# else -# error "LZO_SIZEOF_INT" -# endif -#endif -#if !defined(LZO_SIZEOF_LONG) -# if (ULONG_MAX == LZO_0xffffffffL) -# define LZO_SIZEOF_LONG 4 -# elif (__LZO_LSR(ULONG_MAX,7) == 1) -# define LZO_SIZEOF_LONG 1 -# elif (__LZO_LSR(ULONG_MAX,15) == 1) -# define LZO_SIZEOF_LONG 2 -# elif (__LZO_LSR(ULONG_MAX,31) == 1) -# define LZO_SIZEOF_LONG 4 -# elif (__LZO_LSR(ULONG_MAX,63) == 1) -# define LZO_SIZEOF_LONG 8 -# elif (__LZO_LSR(ULONG_MAX,127) == 1) -# define LZO_SIZEOF_LONG 16 -# else -# error "LZO_SIZEOF_LONG" -# endif -#endif -#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) -#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) -# if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__) -# if (LZO_CC_GNUC >= 0x030300ul) -# if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0) -# define LZO_SIZEOF_LONG_LONG LZO_SIZEOF_LONG -# elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1) -# define LZO_SIZEOF_LONG_LONG 4 -# endif -# endif -# endif -#endif -#endif -#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64) -#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8) -#if (LZO_ARCH_I086 && LZO_CC_DMC) -#elif (LZO_CC_CILLY) && defined(__GNUC__) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define LZO_SIZEOF_LONG_LONG 8 -#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400)) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_OS_WIN64 || defined(_WIN64)) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_ARCH_I386 && (LZO_CC_DMC)) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700))) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__))) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC)) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC)) -# define LZO_SIZEOF___INT64 8 -#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC)) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520))) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100))) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64)) -# define LZO_SIZEOF___INT64 8 -#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) -# define LZO_SIZEOF_LONG_LONG 8 -#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2) -#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -# define LZO_SIZEOF_LONG_LONG 8 -#endif -#endif -#endif -#if defined(__cplusplus) && (LZO_CC_GNUC) -# if (LZO_CC_GNUC < 0x020800ul) -# undef LZO_SIZEOF_LONG_LONG -# endif -#endif -#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG) -# undef LZO_SIZEOF_LONG_LONG -#endif -#if !defined(LZO_SIZEOF_VOID_P) -#if (LZO_ARCH_I086) -# define __LZO_WORDSIZE 2 -# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM) -# define LZO_SIZEOF_VOID_P 2 -# elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE) -# define LZO_SIZEOF_VOID_P 4 -# else -# error "LZO_MM" -# endif -#elif (LZO_ARCH_AVR || LZO_ARCH_Z80) -# define __LZO_WORDSIZE 1 -# define LZO_SIZEOF_VOID_P 2 -#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430) -# define LZO_SIZEOF_VOID_P 2 -#elif (LZO_ARCH_H8300) -# if defined(__NORMAL_MODE__) -# define __LZO_WORDSIZE 4 -# define LZO_SIZEOF_VOID_P 2 -# elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__) -# define __LZO_WORDSIZE 4 -# define LZO_SIZEOF_VOID_P 4 -# else -# define __LZO_WORDSIZE 2 -# define LZO_SIZEOF_VOID_P 2 -# endif -# if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4) -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_INT -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_INT -# endif -#elif (LZO_ARCH_M16C) -# define __LZO_WORDSIZE 2 -# if defined(__m32c_cpu__) || defined(__m32cm_cpu__) -# define LZO_SIZEOF_VOID_P 4 -# else -# define LZO_SIZEOF_VOID_P 2 -# endif -#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__)) -# define __LZO_WORDSIZE 8 -# define LZO_SIZEOF_VOID_P 4 -#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64) -# define __LZO_WORDSIZE 8 -# define LZO_SIZEOF_VOID_P 8 -#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__) -# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG -#elif (LZO_OS_OS400 || defined(__OS400__)) -# define __LZO_WORDSIZE LZO_SIZEOF_LONG -# define LZO_SIZEOF_VOID_P 16 -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG -#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64) -# define LZO_SIZEOF_VOID_P 8 -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_LONG -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_LONG -#elif (LZO_ARCH_SPU) -# if 0 -# define __LZO_WORDSIZE 16 -# endif -# define LZO_SIZEOF_VOID_P 4 -#else -# define LZO_SIZEOF_VOID_P LZO_SIZEOF_LONG -#endif -#endif -#if !defined(LZO_WORDSIZE) -# if defined(__LZO_WORDSIZE) -# define LZO_WORDSIZE __LZO_WORDSIZE -# else -# define LZO_WORDSIZE LZO_SIZEOF_VOID_P -# endif -#endif -#if !defined(LZO_SIZEOF_SIZE_T) -#if (LZO_ARCH_I086 || LZO_ARCH_M16C) -# define LZO_SIZEOF_SIZE_T 2 -#else -# define LZO_SIZEOF_SIZE_T LZO_SIZEOF_VOID_P -#endif -#endif -#if !defined(LZO_SIZEOF_PTRDIFF_T) -#if (LZO_ARCH_I086) -# if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE) -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_VOID_P -# elif (LZO_MM_COMPACT || LZO_MM_LARGE) -# if (LZO_CC_BORLANDC || LZO_CC_TURBOC) -# define LZO_SIZEOF_PTRDIFF_T 4 -# else -# define LZO_SIZEOF_PTRDIFF_T 2 -# endif -# else -# error "LZO_MM" -# endif -#else -# define LZO_SIZEOF_PTRDIFF_T LZO_SIZEOF_SIZE_T -#endif -#endif -#if (LZO_ABI_NEUTRAL_ENDIAN) -# undef LZO_ABI_BIG_ENDIAN -# undef LZO_ABI_LITTLE_ENDIAN -#elif !(LZO_ABI_BIG_ENDIAN) && !(LZO_ABI_LITTLE_ENDIAN) -#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP) -# define LZO_ABI_BIG_ENDIAN 1 -#elif (LZO_ARCH_IA64) && (LZO_OS_POSIX_LINUX || LZO_OS_WIN64) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif (LZO_ARCH_AVR32 || LZO_ARCH_M68K || LZO_ARCH_S390) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__) -# if (__LITTLE_ENDIAN__ == 1) -# define LZO_ABI_LITTLE_ENDIAN 1 -# else -# define LZO_ABI_BIG_ENDIAN 1 -# endif -#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__) -# define LZO_ABI_LITTLE_ENDIAN 1 -#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__) -# define LZO_ABI_BIG_ENDIAN 1 -#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__) -# define LZO_ABI_LITTLE_ENDIAN 1 -#endif -#endif -#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN) -# error "this should not happen" -#endif -#if (LZO_ABI_BIG_ENDIAN) -# define LZO_INFO_ABI_ENDIAN "be" -#elif (LZO_ABI_LITTLE_ENDIAN) -# define LZO_INFO_ABI_ENDIAN "le" -#elif (LZO_ABI_NEUTRAL_ENDIAN) -# define LZO_INFO_ABI_ENDIAN "neutral" -#endif -#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) -# define LZO_ABI_I8LP16 1 -# define LZO_INFO_ABI_PM "i8lp16" -#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2) -# define LZO_ABI_ILP16 1 -# define LZO_INFO_ABI_PM "ilp16" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4) -# define LZO_ABI_ILP32 1 -# define LZO_INFO_ABI_PM "ilp32" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8) -# define LZO_ABI_LLP64 1 -# define LZO_INFO_ABI_PM "llp64" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) -# define LZO_ABI_LP64 1 -# define LZO_INFO_ABI_PM "lp64" -#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8) -# define LZO_ABI_ILP64 1 -# define LZO_INFO_ABI_PM "ilp64" -#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4) -# define LZO_ABI_IP32L64 1 -# define LZO_INFO_ABI_PM "ip32l64" -#endif -#if !defined(__LZO_LIBC_OVERRIDE) -#if (LZO_LIBC_NAKED) -# define LZO_INFO_LIBC "naked" -#elif (LZO_LIBC_FREESTANDING) -# define LZO_INFO_LIBC "freestanding" -#elif (LZO_LIBC_MOSTLY_FREESTANDING) -# define LZO_INFO_LIBC "mfreestanding" -#elif (LZO_LIBC_ISOC90) -# define LZO_INFO_LIBC "isoc90" -#elif (LZO_LIBC_ISOC99) -# define LZO_INFO_LIBC "isoc99" -#elif defined(__dietlibc__) -# define LZO_LIBC_DIETLIBC 1 -# define LZO_INFO_LIBC "dietlibc" -#elif defined(_NEWLIB_VERSION) -# define LZO_LIBC_NEWLIB 1 -# define LZO_INFO_LIBC "newlib" -#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__) -# if defined(__UCLIBC_SUBLEVEL__) -# define LZO_LIBC_UCLIBC (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__) -# else -# define LZO_LIBC_UCLIBC 0x00090bL -# endif -# define LZO_INFO_LIBC "uclibc" -#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__) -# define LZO_LIBC_GLIBC (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100) -# define LZO_INFO_LIBC "glibc" -#elif (LZO_CC_MWERKS) && defined(__MSL__) -# define LZO_LIBC_MSL __MSL__ -# define LZO_INFO_LIBC "msl" -#elif 1 && defined(__IAR_SYSTEMS_ICC__) -# define LZO_LIBC_ISOC90 1 -# define LZO_INFO_LIBC "isoc90" -#else -# define LZO_LIBC_DEFAULT 1 -# define LZO_INFO_LIBC "default" -#endif -#endif -#if !defined(__lzo_gnuc_extension__) -#if (LZO_CC_GNUC >= 0x020800ul) -# define __lzo_gnuc_extension__ __extension__ -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_gnuc_extension__ __extension__ -#else -# define __lzo_gnuc_extension__ /*empty*/ -#endif -#endif -#if !defined(__lzo_ua_volatile) -# define __lzo_ua_volatile volatile -#endif -#if !defined(__lzo_alignof) -#if (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) -# define __lzo_alignof(e) __alignof__(e) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700)) -# define __lzo_alignof(e) __alignof__(e) -#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) -# define __lzo_alignof(e) __alignof(e) -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_alignof(e) __alignof__(e) -#endif -#endif -#if defined(__lzo_alignof) -# define __lzo_HAVE_alignof 1 -#endif -#if !defined(__lzo_constructor) -#if (LZO_CC_GNUC >= 0x030400ul) -# define __lzo_constructor __attribute__((__constructor__,__used__)) -#elif (LZO_CC_GNUC >= 0x020700ul) -# define __lzo_constructor __attribute__((__constructor__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_constructor __attribute__((__constructor__)) -#endif -#endif -#if defined(__lzo_constructor) -# define __lzo_HAVE_constructor 1 -#endif -#if !defined(__lzo_destructor) -#if (LZO_CC_GNUC >= 0x030400ul) -# define __lzo_destructor __attribute__((__destructor__,__used__)) -#elif (LZO_CC_GNUC >= 0x020700ul) -# define __lzo_destructor __attribute__((__destructor__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_destructor __attribute__((__destructor__)) -#endif -#endif -#if defined(__lzo_destructor) -# define __lzo_HAVE_destructor 1 -#endif -#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor) -# error "this should not happen" -#endif -#if !defined(__lzo_inline) -#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295)) -#elif defined(__cplusplus) -# define __lzo_inline inline -#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550)) -# define __lzo_inline __inline -#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI) -# define __lzo_inline __inline__ -#elif (LZO_CC_DMC) -# define __lzo_inline __inline -#elif (LZO_CC_INTELC) -# define __lzo_inline __inline -#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405)) -# define __lzo_inline __inline -#elif (LZO_CC_MSC && (_MSC_VER >= 900)) -# define __lzo_inline __inline -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_inline __inline__ -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) -# define __lzo_inline inline -#endif -#endif -#if defined(__lzo_inline) -# define __lzo_HAVE_inline 1 -#else -# define __lzo_inline /*empty*/ -#endif -#if !defined(__lzo_forceinline) -#if (LZO_CC_GNUC >= 0x030200ul) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) -# define __lzo_forceinline __forceinline -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) -# define __lzo_forceinline __forceinline -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_forceinline __inline__ __attribute__((__always_inline__)) -#endif -#endif -#if defined(__lzo_forceinline) -# define __lzo_HAVE_forceinline 1 -#else -# define __lzo_forceinline /*empty*/ -#endif -#if !defined(__lzo_noinline) -#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul) -# define __lzo_noinline __attribute__((__noinline__,__used__)) -#elif (LZO_CC_GNUC >= 0x030200ul) -# define __lzo_noinline __attribute__((__noinline__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC) -# define __lzo_noinline __declspec(noinline) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC) -# define __lzo_noinline __attribute__((__noinline__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_noinline __attribute__((__noinline__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1300)) -# define __lzo_noinline __declspec(noinline) -#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64)) -# if defined(__cplusplus) -# else -# define __lzo_noinline __declspec(noinline) -# endif -#elif (LZO_CC_SUNPROC && (LZO_CC_SUNPROC >= 0x5100)) -# define __lzo_noinline __attribute__((__noinline__)) -#endif -#endif -#if defined(__lzo_noinline) -# define __lzo_HAVE_noinline 1 -#else -# define __lzo_noinline /*empty*/ -#endif -#if (__lzo_HAVE_forceinline || __lzo_HAVE_noinline) && !(__lzo_HAVE_inline) -# error "this should not happen" -#endif -#if !defined(__lzo_noreturn) -#if (LZO_CC_GNUC >= 0x020700ul) -# define __lzo_noreturn __attribute__((__noreturn__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) -# define __lzo_noreturn __declspec(noreturn) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) -# define __lzo_noreturn __attribute__((__noreturn__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_noreturn __attribute__((__noreturn__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) -# define __lzo_noreturn __declspec(noreturn) -#endif -#endif -#if defined(__lzo_noreturn) -# define __lzo_HAVE_noreturn 1 -#else -# define __lzo_noreturn /*empty*/ -#endif -#if !defined(__lzo_nothrow) -#if (LZO_CC_GNUC >= 0x030300ul) -# define __lzo_nothrow __attribute__((__nothrow__)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus) -# define __lzo_nothrow __declspec(nothrow) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 900) && LZO_CC_SYNTAX_GNUC) -# define __lzo_nothrow __attribute__((__nothrow__)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_nothrow __attribute__((__nothrow__)) -#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus) -# define __lzo_nothrow __declspec(nothrow) -#endif -#endif -#if defined(__lzo_nothrow) -# define __lzo_HAVE_nothrow 1 -#else -# define __lzo_nothrow /*empty*/ -#endif -#if !defined(__lzo_restrict) -#if (LZO_CC_GNUC >= 0x030400ul) -# define __lzo_restrict __restrict__ -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC) -# define __lzo_restrict __restrict__ -#elif (LZO_CC_CLANG || LZO_CC_LLVM) -# define __lzo_restrict __restrict__ -#elif (LZO_CC_MSC && (_MSC_VER >= 1400)) -# define __lzo_restrict __restrict -#endif -#endif -#if defined(__lzo_restrict) -# define __lzo_HAVE_restrict 1 -#else -# define __lzo_restrict /*empty*/ -#endif -#if !defined(__lzo_likely) && !defined(__lzo_unlikely) -#if (LZO_CC_GNUC >= 0x030200ul) -# define __lzo_likely(e) (__builtin_expect(!!(e),1)) -# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) -#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800)) -# define __lzo_likely(e) (__builtin_expect(!!(e),1)) -# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) -#elif (LZO_CC_CLANG || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define __lzo_likely(e) (__builtin_expect(!!(e),1)) -# define __lzo_unlikely(e) (__builtin_expect(!!(e),0)) -#endif -#endif -#if defined(__lzo_likely) -# define __lzo_HAVE_likely 1 -#else -# define __lzo_likely(e) (e) -#endif -#if defined(__lzo_unlikely) -# define __lzo_HAVE_unlikely 1 -#else -# define __lzo_unlikely(e) (e) -#endif -#if !defined(LZO_UNUSED) -# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) -# define LZO_UNUSED(var) ((void) &var) -# elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC) -# define LZO_UNUSED(var) if (&var) ; else -# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define LZO_UNUSED(var) ((void) var) -# elif (LZO_CC_MSC && (_MSC_VER < 900)) -# define LZO_UNUSED(var) if (&var) ; else -# elif (LZO_CC_KEILC) -# define LZO_UNUSED(var) {extern int __lzo_unused[1-2*!(sizeof(var)>0)];} -# elif (LZO_CC_PACIFICC) -# define LZO_UNUSED(var) ((void) sizeof(var)) -# elif (LZO_CC_WATCOMC) && defined(__cplusplus) -# define LZO_UNUSED(var) ((void) var) -# else -# define LZO_UNUSED(var) ((void) &var) -# endif -#endif -#if !defined(LZO_UNUSED_FUNC) -# if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600)) -# define LZO_UNUSED_FUNC(func) ((void) func) -# elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC) -# define LZO_UNUSED_FUNC(func) if (func) ; else -# elif (LZO_CC_CLANG || LZO_CC_LLVM) -# define LZO_UNUSED_FUNC(func) ((void) &func) -# elif (LZO_CC_MSC && (_MSC_VER < 900)) -# define LZO_UNUSED_FUNC(func) if (func) ; else -# elif (LZO_CC_MSC) -# define LZO_UNUSED_FUNC(func) ((void) &func) -# elif (LZO_CC_KEILC || LZO_CC_PELLESC) -# define LZO_UNUSED_FUNC(func) {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];} -# else -# define LZO_UNUSED_FUNC(func) ((void) func) -# endif -#endif -#if !defined(LZO_UNUSED_LABEL) -# if (LZO_CC_WATCOMC) && defined(__cplusplus) -# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l -# elif (LZO_CC_CLANG || LZO_CC_INTELC || LZO_CC_WATCOMC) -# define LZO_UNUSED_LABEL(l) if (0) goto l -# else -# define LZO_UNUSED_LABEL(l) switch(0) case 1:goto l -# endif -#endif -#if !defined(LZO_DEFINE_UNINITIALIZED_VAR) -# if 0 -# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var -# elif 0 && (LZO_CC_GNUC) -# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = var -# else -# define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init) type var = init -# endif -#endif -#if !defined(LZO_UNCONST_CAST) -# if 0 && defined(__cplusplus) -# define LZO_UNCONST_CAST(t,e) (const_cast (e)) -# elif (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE) -# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((lzo_uintptr_t) ((const void *) (e)))))) -# else -# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((const void *) (e))))) -# endif -#endif -#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER) -# if (LZO_CC_AZTECC || LZO_CC_ZORTECHC) -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; -# elif (LZO_CC_DMC || LZO_CC_SYMANTECC) -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1u-2*!(e)]; -# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-!(e)]; -# else -# define LZO_COMPILE_TIME_ASSERT_HEADER(e) extern int __lzo_cta[1-2*!(e)]; -# endif -#endif -#if !defined(LZO_COMPILE_TIME_ASSERT) -# if (LZO_CC_AZTECC) -# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-!(e)];} -# elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) -# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; -# elif (LZO_CC_MSC && (_MSC_VER < 900)) -# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; -# elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295)) -# define LZO_COMPILE_TIME_ASSERT(e) switch(0) case 1:case !(e):break; -# else -# define LZO_COMPILE_TIME_ASSERT(e) {typedef int __lzo_cta_t[1-2*!(e)];} -# endif -#endif -#if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64) -# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC) -# elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC) -# define __lzo_cdecl __cdecl -# define __lzo_cdecl_atexit /*empty*/ -# define __lzo_cdecl_main __cdecl -# if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) -# define __lzo_cdecl_qsort __pascal -# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) -# define __lzo_cdecl_qsort _stdcall -# else -# define __lzo_cdecl_qsort __cdecl -# endif -# elif (LZO_CC_WATCOMC) -# define __lzo_cdecl __cdecl -# else -# define __lzo_cdecl __cdecl -# define __lzo_cdecl_atexit __cdecl -# define __lzo_cdecl_main __cdecl -# define __lzo_cdecl_qsort __cdecl -# endif -# if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC) -# elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC)) -# define __lzo_cdecl_sighandler __pascal -# elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC)) -# define __lzo_cdecl_sighandler _stdcall -# elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE) -# define __lzo_cdecl_sighandler __clrcall -# elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700)) -# if defined(_DLL) -# define __lzo_cdecl_sighandler _far _cdecl _loadds -# elif defined(_MT) -# define __lzo_cdecl_sighandler _far _cdecl -# else -# define __lzo_cdecl_sighandler _cdecl -# endif -# else -# define __lzo_cdecl_sighandler __cdecl -# endif -#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC) -# define __lzo_cdecl __cdecl -#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC)) -# define __lzo_cdecl cdecl -#endif -#if !defined(__lzo_cdecl) -# define __lzo_cdecl /*empty*/ -#endif -#if !defined(__lzo_cdecl_atexit) -# define __lzo_cdecl_atexit /*empty*/ -#endif -#if !defined(__lzo_cdecl_main) -# define __lzo_cdecl_main /*empty*/ -#endif -#if !defined(__lzo_cdecl_qsort) -# define __lzo_cdecl_qsort /*empty*/ -#endif -#if !defined(__lzo_cdecl_sighandler) -# define __lzo_cdecl_sighandler /*empty*/ -#endif -#if !defined(__lzo_cdecl_va) -# define __lzo_cdecl_va __lzo_cdecl -#endif -#if !(LZO_CFG_NO_WINDOWS_H) -#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64) -# if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000)) -# elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__) -# elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul))) -# else -# define LZO_HAVE_WINDOWS_H 1 -# endif -#endif -#endif -#if (LZO_ARCH_ALPHA) -# define LZO_OPT_AVOID_UINT_INDEX 1 -# define LZO_OPT_AVOID_SHORT 1 -# define LZO_OPT_AVOID_USHORT 1 -#elif (LZO_ARCH_AMD64) -# define LZO_OPT_AVOID_INT_INDEX 1 -# define LZO_OPT_AVOID_UINT_INDEX 1 -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# define LZO_OPT_UNALIGNED64 1 -#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB) -#elif (LZO_ARCH_ARM) -# define LZO_OPT_AVOID_SHORT 1 -# define LZO_OPT_AVOID_USHORT 1 -#elif (LZO_ARCH_CRIS) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -#elif (LZO_ARCH_I386) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -#elif (LZO_ARCH_IA64) -# define LZO_OPT_AVOID_INT_INDEX 1 -# define LZO_OPT_AVOID_UINT_INDEX 1 -# define LZO_OPT_PREFER_POSTINC 1 -#elif (LZO_ARCH_M68K) -# define LZO_OPT_PREFER_POSTINC 1 -# define LZO_OPT_PREFER_PREDEC 1 -# if defined(__mc68020__) && !defined(__mcoldfire__) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# endif -#elif (LZO_ARCH_MIPS) -# define LZO_OPT_AVOID_UINT_INDEX 1 -#elif (LZO_ARCH_POWERPC) -# define LZO_OPT_PREFER_PREINC 1 -# define LZO_OPT_PREFER_PREDEC 1 -# if (LZO_ABI_BIG_ENDIAN) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# endif -#elif (LZO_ARCH_S390) -# define LZO_OPT_UNALIGNED16 1 -# define LZO_OPT_UNALIGNED32 1 -# if (LZO_SIZEOF_SIZE_T == 8) -# define LZO_OPT_UNALIGNED64 1 -# endif -#elif (LZO_ARCH_SH) -# define LZO_OPT_PREFER_POSTINC 1 -# define LZO_OPT_PREFER_PREDEC 1 -#endif -#ifndef LZO_CFG_NO_INLINE_ASM -#if (LZO_CC_LLVM) -# define LZO_CFG_NO_INLINE_ASM 1 -#endif -#endif -#ifndef LZO_CFG_NO_UNALIGNED -#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC) -# define LZO_CFG_NO_UNALIGNED 1 -#endif -#endif -#if (LZO_CFG_NO_UNALIGNED) -# undef LZO_OPT_UNALIGNED16 -# undef LZO_OPT_UNALIGNED32 -# undef LZO_OPT_UNALIGNED64 -#endif -#if (LZO_CFG_NO_INLINE_ASM) -#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) -# define LZO_ASM_SYNTAX_MSC 1 -#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC)) -#elif (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC == 0x011f00ul)) -#elif (LZO_ARCH_I386 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) -# define LZO_ASM_SYNTAX_GNUC 1 -#elif (LZO_ARCH_AMD64 && (LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE)) -# define LZO_ASM_SYNTAX_GNUC 1 -#endif -#if (LZO_ASM_SYNTAX_GNUC) -#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul)) -# define __LZO_ASM_CLOBBER "ax" -#elif (LZO_CC_INTELC) -# define __LZO_ASM_CLOBBER "memory" -#else -# define __LZO_ASM_CLOBBER "cc", "memory" -#endif -#endif -#if defined(__LZO_INFOSTR_MM) -#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM)) -# define __LZO_INFOSTR_MM "" -#elif defined(LZO_INFO_MM) -# define __LZO_INFOSTR_MM "." LZO_INFO_MM -#else -# define __LZO_INFOSTR_MM "" -#endif -#if defined(__LZO_INFOSTR_PM) -#elif defined(LZO_INFO_ABI_PM) -# define __LZO_INFOSTR_PM "." LZO_INFO_ABI_PM -#else -# define __LZO_INFOSTR_PM "" -#endif -#if defined(__LZO_INFOSTR_ENDIAN) -#elif defined(LZO_INFO_ABI_ENDIAN) -# define __LZO_INFOSTR_ENDIAN "." LZO_INFO_ABI_ENDIAN -#else -# define __LZO_INFOSTR_ENDIAN "" -#endif -#if defined(__LZO_INFOSTR_OSNAME) -#elif defined(LZO_INFO_OS_CONSOLE) -# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_CONSOLE -#elif defined(LZO_INFO_OS_POSIX) -# define __LZO_INFOSTR_OSNAME LZO_INFO_OS "." LZO_INFO_OS_POSIX -#else -# define __LZO_INFOSTR_OSNAME LZO_INFO_OS -#endif -#if defined(__LZO_INFOSTR_LIBC) -#elif defined(LZO_INFO_LIBC) -# define __LZO_INFOSTR_LIBC "." LZO_INFO_LIBC -#else -# define __LZO_INFOSTR_LIBC "" -#endif -#if defined(__LZO_INFOSTR_CCVER) -#elif defined(LZO_INFO_CCVER) -# define __LZO_INFOSTR_CCVER " " LZO_INFO_CCVER -#else -# define __LZO_INFOSTR_CCVER "" -#endif -#define LZO_INFO_STRING \ - LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \ - " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER - -#endif /* already included */ - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzoutil.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzoutil.h deleted file mode 100644 index eb741ce2dd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/lzo/lzoutil.h +++ /dev/null @@ -1,76 +0,0 @@ -/* lzoutil.h -- utilitiy functions for use by applications [DEPRECATED] - - This file is part of the LZO real-time data compression library. - - Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer - All Rights Reserved. - - The LZO library is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - The LZO library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the LZO library; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - Markus F.X.J. Oberhumer - - http://www.oberhumer.com/opensource/lzo/ - */ - - -#ifndef __LZOUTIL_H_INCLUDED -#define __LZOUTIL_H_INCLUDED 1 - -#ifndef __LZOCONF_H_INCLUDED -#include "lzoconf.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/*********************************************************************** -// LZO-v1 deprecated macros (which were used in the old example programs) -// DO NOT USE -************************************************************************/ - -#define lzo_alloc(a,b) (malloc((a)*(b))) -#define lzo_malloc(a) (malloc(a)) -#define lzo_free(a) (free(a)) - -#define lzo_fread(f,b,s) (fread(b,1,s,f)) -#define lzo_fwrite(f,b,s) (fwrite(b,1,s,f)) - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* already included */ - - -/* vim:set ts=4 et: */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/config_types.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/config_types.h deleted file mode 100644 index 1e7d490989..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/config_types.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef __CONFIG_TYPES_H__ -#define __CONFIG_TYPES_H__ - -/* these are filled in by configure */ -#define INCLUDE_INTTYPES_H 1 -#define INCLUDE_STDINT_H 1 -#define INCLUDE_SYS_TYPES_H 1 - -#if INCLUDE_INTTYPES_H -# include -#endif -#if INCLUDE_STDINT_H -# include -#endif -#if INCLUDE_SYS_TYPES_H -# include -#endif - -typedef short ogg_int16_t; -typedef unsigned short ogg_uint16_t; -typedef int ogg_int32_t; -typedef unsigned int ogg_uint32_t; -typedef long long ogg_int64_t; - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/ogg.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/ogg.h deleted file mode 100644 index cea4ebed75..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/ogg.h +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: toplevel libogg include - last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $ - - ********************************************************************/ -#ifndef _OGG_H -#define _OGG_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef struct { - void *iov_base; - size_t iov_len; -} ogg_iovec_t; - -typedef struct { - long endbyte; - int endbit; - - unsigned char *buffer; - unsigned char *ptr; - long storage; -} oggpack_buffer; - -/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/ - -typedef struct { - unsigned char *header; - long header_len; - unsigned char *body; - long body_len; -} ogg_page; - -/* ogg_stream_state contains the current encode/decode state of a logical - Ogg bitstream **********************************************************/ - -typedef struct { - unsigned char *body_data; /* bytes from packet bodies */ - long body_storage; /* storage elements allocated */ - long body_fill; /* elements stored; fill mark */ - long body_returned; /* elements of fill returned */ - - - int *lacing_vals; /* The values that will go to the segment table */ - ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact - this way, but it is simple coupled to the - lacing fifo */ - long lacing_storage; - long lacing_fill; - long lacing_packet; - long lacing_returned; - - unsigned char header[282]; /* working space for header encode */ - int header_fill; - - int e_o_s; /* set when we have buffered the last packet in the - logical bitstream */ - int b_o_s; /* set after we've written the initial page - of a logical bitstream */ - long serialno; - long pageno; - ogg_int64_t packetno; /* sequence number for decode; the framing - knows where there's a hole in the data, - but we need coupling so that the codec - (which is in a separate abstraction - layer) also knows about the gap */ - ogg_int64_t granulepos; - -} ogg_stream_state; - -/* ogg_packet is used to encapsulate the data and metadata belonging - to a single raw Ogg/Vorbis packet *************************************/ - -typedef struct { - unsigned char *packet; - long bytes; - long b_o_s; - long e_o_s; - - ogg_int64_t granulepos; - - ogg_int64_t packetno; /* sequence number for decode; the framing - knows where there's a hole in the data, - but we need coupling so that the codec - (which is in a separate abstraction - layer) also knows about the gap */ -} ogg_packet; - -typedef struct { - unsigned char *data; - int storage; - int fill; - int returned; - - int unsynced; - int headerbytes; - int bodybytes; -} ogg_sync_state; - -/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/ - -extern void oggpack_writeinit(oggpack_buffer *b); -extern int oggpack_writecheck(oggpack_buffer *b); -extern void oggpack_writetrunc(oggpack_buffer *b,long bits); -extern void oggpack_writealign(oggpack_buffer *b); -extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits); -extern void oggpack_reset(oggpack_buffer *b); -extern void oggpack_writeclear(oggpack_buffer *b); -extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); -extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits); -extern long oggpack_look(oggpack_buffer *b,int bits); -extern long oggpack_look1(oggpack_buffer *b); -extern void oggpack_adv(oggpack_buffer *b,int bits); -extern void oggpack_adv1(oggpack_buffer *b); -extern long oggpack_read(oggpack_buffer *b,int bits); -extern long oggpack_read1(oggpack_buffer *b); -extern long oggpack_bytes(oggpack_buffer *b); -extern long oggpack_bits(oggpack_buffer *b); -extern unsigned char *oggpack_get_buffer(oggpack_buffer *b); - -extern void oggpackB_writeinit(oggpack_buffer *b); -extern int oggpackB_writecheck(oggpack_buffer *b); -extern void oggpackB_writetrunc(oggpack_buffer *b,long bits); -extern void oggpackB_writealign(oggpack_buffer *b); -extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits); -extern void oggpackB_reset(oggpack_buffer *b); -extern void oggpackB_writeclear(oggpack_buffer *b); -extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes); -extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits); -extern long oggpackB_look(oggpack_buffer *b,int bits); -extern long oggpackB_look1(oggpack_buffer *b); -extern void oggpackB_adv(oggpack_buffer *b,int bits); -extern void oggpackB_adv1(oggpack_buffer *b); -extern long oggpackB_read(oggpack_buffer *b,int bits); -extern long oggpackB_read1(oggpack_buffer *b); -extern long oggpackB_bytes(oggpack_buffer *b); -extern long oggpackB_bits(oggpack_buffer *b); -extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b); - -/* Ogg BITSTREAM PRIMITIVES: encoding **************************/ - -extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op); -extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, - int count, long e_o_s, ogg_int64_t granulepos); -extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill); -extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill); - -/* Ogg BITSTREAM PRIMITIVES: decoding **************************/ - -extern int ogg_sync_init(ogg_sync_state *oy); -extern int ogg_sync_clear(ogg_sync_state *oy); -extern int ogg_sync_reset(ogg_sync_state *oy); -extern int ogg_sync_destroy(ogg_sync_state *oy); -extern int ogg_sync_check(ogg_sync_state *oy); - -extern char *ogg_sync_buffer(ogg_sync_state *oy, long size); -extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes); -extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og); -extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og); -extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og); -extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op); -extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op); - -/* Ogg BITSTREAM PRIMITIVES: general ***************************/ - -extern int ogg_stream_init(ogg_stream_state *os,int serialno); -extern int ogg_stream_clear(ogg_stream_state *os); -extern int ogg_stream_reset(ogg_stream_state *os); -extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno); -extern int ogg_stream_destroy(ogg_stream_state *os); -extern int ogg_stream_check(ogg_stream_state *os); -extern int ogg_stream_eos(ogg_stream_state *os); - -extern void ogg_page_checksum_set(ogg_page *og); - -extern int ogg_page_version(const ogg_page *og); -extern int ogg_page_continued(const ogg_page *og); -extern int ogg_page_bos(const ogg_page *og); -extern int ogg_page_eos(const ogg_page *og); -extern ogg_int64_t ogg_page_granulepos(const ogg_page *og); -extern int ogg_page_serialno(const ogg_page *og); -extern long ogg_page_pageno(const ogg_page *og); -extern int ogg_page_packets(const ogg_page *og); - -extern void ogg_packet_clear(ogg_packet *op); - - -#ifdef __cplusplus -} -#endif - -#endif /* _OGG_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/os_types.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/os_types.h deleted file mode 100644 index d6691b703d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/ogg/os_types.h +++ /dev/null @@ -1,147 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os_types.h 17712 2010-12-03 17:10:02Z xiphmont $ - - ********************************************************************/ -#ifndef _OS_TYPES_H -#define _OS_TYPES_H - -/* make it easy on the folks that want to compile the libs with a - different malloc than stdlib */ -#define _ogg_malloc malloc -#define _ogg_calloc calloc -#define _ogg_realloc realloc -#define _ogg_free free - -#if defined(_WIN32) - -# if defined(__CYGWIN__) -# include - typedef int16_t ogg_int16_t; - typedef uint16_t ogg_uint16_t; - typedef int32_t ogg_int32_t; - typedef uint32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - typedef uint64_t ogg_uint64_t; -# elif defined(__MINGW32__) -# include - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - typedef unsigned long long ogg_uint64_t; -# elif defined(__MWERKS__) - typedef long long ogg_int64_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; -# else - /* MSVC/Borland */ - typedef __int64 ogg_int64_t; - typedef __int32 ogg_int32_t; - typedef unsigned __int32 ogg_uint32_t; - typedef __int16 ogg_int16_t; - typedef unsigned __int16 ogg_uint16_t; -# endif - -#elif defined(__MACOS__) - -# include - typedef SInt16 ogg_int16_t; - typedef UInt16 ogg_uint16_t; - typedef SInt32 ogg_int32_t; - typedef UInt32 ogg_uint32_t; - typedef SInt64 ogg_int64_t; - -#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ - -# include - typedef int16_t ogg_int16_t; - typedef uint16_t ogg_uint16_t; - typedef int32_t ogg_int32_t; - typedef uint32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - -#elif defined(__HAIKU__) - - /* Haiku */ -# include - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - -#elif defined(__BEOS__) - - /* Be */ -# include - typedef int16_t ogg_int16_t; - typedef uint16_t ogg_uint16_t; - typedef int32_t ogg_int32_t; - typedef uint32_t ogg_uint32_t; - typedef int64_t ogg_int64_t; - -#elif defined (__EMX__) - - /* OS/2 GCC */ - typedef short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - -#elif defined (DJGPP) - - /* DJGPP */ - typedef short ogg_int16_t; - typedef int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long ogg_int64_t; - -#elif defined(R5900) - - /* PS2 EE */ - typedef long ogg_int64_t; - typedef int ogg_int32_t; - typedef unsigned ogg_uint32_t; - typedef short ogg_int16_t; - -#elif defined(__SYMBIAN32__) - - /* Symbian GCC */ - typedef signed short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef signed int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long int ogg_int64_t; - -#elif defined(__TMS320C6X__) - - /* TI C64x compiler */ - typedef signed short ogg_int16_t; - typedef unsigned short ogg_uint16_t; - typedef signed int ogg_int32_t; - typedef unsigned int ogg_uint32_t; - typedef long long int ogg_int64_t; - -#else - -# include - -#endif - -#endif /* _OS_TYPES_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/BinaryDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/BinaryDict.hpp deleted file mode 100644 index 9d900cedcd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/BinaryDict.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "SerializableDict.hpp" - -namespace opencc { -/** -* Binary dictionary for faster deserialization -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT BinaryDict : public SerializableDict { -public: - BinaryDict(const LexiconPtr& _lexicon) : lexicon(_lexicon) {} - - virtual ~BinaryDict() {} - - virtual void SerializeToFile(FILE* fp) const; - - static BinaryDictPtr NewFromFile(FILE* fp); - - const LexiconPtr& GetLexicon() const { return lexicon; } - - size_t KeyMaxLength() const; - -private: - LexiconPtr lexicon; - string keyBuffer; - string valueBuffer; - - void ConstructBuffer(string& keyBuffer, vector& keyOffset, - size_t& keyTotalLength, string& valueBuffer, - vector& valueOffset, - size_t& valueTotalLength) const; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Common.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Common.hpp deleted file mode 100644 index 9d8d69a0c1..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Common.hpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -// Microsoft Visual C++ specific -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -#pragma warning(disable : 4251 4266 4350 4503 4512 4514 4710 4820) -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "Exception.hpp" -#include "Export.hpp" -#include "Optional.hpp" - -using std::list; -using std::string; -using std::vector; - -// Forward decalarations and alias -namespace opencc { -class BinaryDict; -class Config; -class Conversion; -class ConversionChain; -class Converter; -class DartsDict; -class Dict; -class DictEntry; -class DictGroup; -class Lexicon; -class MultiValueDictEntry; -class NoValueDictEntry; -class Segmentation; -class Segments; -class SerializableDict; -class SingleValueDictEntry; -class TextDict; -typedef std::shared_ptr BinaryDictPtr; -typedef std::shared_ptr ConversionPtr; -typedef std::shared_ptr ConversionChainPtr; -typedef std::shared_ptr ConverterPtr; -typedef std::shared_ptr DartsDictPtr; -typedef std::shared_ptr DictPtr; -typedef std::shared_ptr DictGroupPtr; -typedef std::shared_ptr LexiconPtr; -typedef std::shared_ptr SegmentationPtr; -typedef std::shared_ptr SegmentsPtr; -typedef std::shared_ptr SerializableDictPtr; -typedef std::shared_ptr TextDictPtr; -} - -#ifndef PKGDATADIR -const string PACKAGE_DATA_DIRECTORY = ""; -#else // ifndef PKGDATADIR -const string PACKAGE_DATA_DIRECTORY = PKGDATADIR "/"; -#endif // ifndef PKGDATADIR - -#ifndef VERSION -#define VERSION "1.0.*" -#endif // ifndef VERSION diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Config.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Config.hpp deleted file mode 100644 index a71a00d0ed..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Config.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" - -namespace opencc { -/** -* Configuration loader -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Config { -public: - Config(); - - virtual ~Config(); - - ConverterPtr NewFromString(const string& json, const string& configDirectory); - - ConverterPtr NewFromFile(const string& fileName); - -private: - void* internal; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Conversion.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Conversion.hpp deleted file mode 100644 index 6bfc455fcc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Conversion.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Segmentation.hpp" - -namespace opencc { -/** -* Conversion interface -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Conversion { -public: - Conversion(DictPtr _dict) : dict(_dict) {} - - // Convert single phrase - string Convert(const string& phrase) const; - - // Convert single phrase - string Convert(const char* phrase) const; - - // Convert segmented text - SegmentsPtr Convert(const SegmentsPtr& input) const; - - const DictPtr GetDict() const { return dict; } - -private: - const DictPtr dict; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/ConversionChain.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/ConversionChain.hpp deleted file mode 100644 index db9e62513f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/ConversionChain.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Conversion.hpp" - -namespace opencc { -/** -* Chain of conversions -* Consists of a list of conversions. Converts input in sequence. -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT ConversionChain { -public: - ConversionChain(const list _conversions); - - SegmentsPtr Convert(const SegmentsPtr& input) const; - - const list GetConversions() const { return conversions; } - -private: - const list conversions; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Converter.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Converter.hpp deleted file mode 100644 index 65cdda2a7f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Converter.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Segmentation.hpp" - -namespace opencc { -/** -* Controller of segmentation and conversion -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Converter { -public: - Converter(const string& _name, SegmentationPtr _segmentation, - ConversionChainPtr _conversionChain) - : name(_name), segmentation(_segmentation), - conversionChain(_conversionChain) {} - - string Convert(const string& text) const; - - size_t Convert(const char* input, char* output) const; - - const SegmentationPtr GetSegmentation() const { return segmentation; } - - const ConversionChainPtr GetConversionChain() const { - return conversionChain; - } - -private: - const string name; - const SegmentationPtr segmentation; - const ConversionChainPtr conversionChain; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DartsDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DartsDict.hpp deleted file mode 100644 index 609486db94..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DartsDict.hpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "SerializableDict.hpp" - -namespace opencc { -/** -* Darts dictionary -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT DartsDict : public Dict, public SerializableDict { -public: - virtual ~DartsDict(); - - virtual size_t KeyMaxLength() const; - - virtual Optional Match(const char* word) const; - - virtual Optional MatchPrefix(const char* word) const; - - virtual LexiconPtr GetLexicon() const; - - virtual void SerializeToFile(FILE* fp) const; - - /** - * Constructs a DartsDict from another dictionary. - */ - static DartsDictPtr NewFromDict(const Dict& thatDict); - - static DartsDictPtr NewFromFile(FILE* fp); - -private: - DartsDict(); - - size_t maxLength; - LexiconPtr lexicon; - - class DartsInternal; - DartsInternal* internal; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Dict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Dict.hpp deleted file mode 100644 index f923f378bc..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Dict.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "DictEntry.hpp" - -namespace opencc { -/** -* Abstract class of dictionary -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Dict { -public: - /** - * Matches a word exactly and returns the DictEntry or Optional::Null(). - */ - virtual Optional Match(const char* word) const = 0; - - /** - * Matches a word exactly and returns the DictEntry or Optional::Null(). - */ - Optional Match(const string& word) const { - return Match(word.c_str()); - } - - /** - * Matches the longest matched prefix of a word. - * For example given a dictionary having "a", "an", "b", "ba", "ban", "bana", - * the longest prefix of "banana" matched is "bana". - */ - virtual Optional MatchPrefix(const char* word) const; - - /** - * Matches the longest matched prefix of a word. - */ - Optional MatchPrefix(const string& word) const { - return MatchPrefix(word.c_str()); - } - - /** - * Returns all matched prefixes of a word, sorted by the length (desc). - * For example given a dictionary having "a", "an", "b", "ba", "ban", "bana", - * all the matched prefixes of "banana" are "bana", "ban", "ba", "b". - */ - virtual vector MatchAllPrefixes(const char* word) const; - - /** - * Returns all matched prefixes of a word, sorted by the length (desc). - */ - vector MatchAllPrefixes(const string& word) const { - return MatchAllPrefixes(word.c_str()); - } - - /** - * Returns the length of the longest key in the dictionary. - */ - virtual size_t KeyMaxLength() const = 0; - - /** - * Returns all entries in the dictionary. - */ - virtual LexiconPtr GetLexicon() const = 0; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DictEntry.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DictEntry.hpp deleted file mode 100644 index ecef4891dd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DictEntry.hpp +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "UTF8Util.hpp" -#include "Segments.hpp" - -namespace opencc { -/** -* Key-values pair entry -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT DictEntry { -public: - virtual ~DictEntry() {} - - virtual const char* Key() const = 0; - - virtual vector Values() const = 0; - - virtual const char* GetDefault() const = 0; - - virtual size_t NumValues() const = 0; - - virtual string ToString() const = 0; - - size_t KeyLength() const { return strlen(Key()); } - - bool operator<(const DictEntry& that) const { - return strcmp(Key(), that.Key()) < 0; - } - - bool operator==(const DictEntry& that) const { - return strcmp(Key(), that.Key()) == 0; - } - - static bool PtrLessThan(const DictEntry* a, const DictEntry* b) { - return *a < *b; - } -}; - -class OPENCC_EXPORT NoValueDictEntry : public DictEntry { -public: - NoValueDictEntry(const string& _key) : key(_key) {} - - virtual ~NoValueDictEntry() {} - - virtual const char* Key() const { return key.c_str(); } - - virtual vector Values() const { return vector(); } - - virtual const char* GetDefault() const { return Key(); } - - virtual size_t NumValues() const { return 0; } - - virtual string ToString() const { return key; } - -private: - string key; -}; - -class OPENCC_EXPORT SingleValueDictEntry : public DictEntry { -public: - virtual const char* Value() const = 0; - - virtual vector Values() const { - return vector{Value()}; - } - - virtual const char* GetDefault() const { return Value(); } - - virtual size_t NumValues() const { return 1; } - - virtual string ToString() const { return string(Key()) + "\t" + Value(); } -}; - -class OPENCC_EXPORT StrSingleValueDictEntry : public SingleValueDictEntry { -public: - StrSingleValueDictEntry(const string& _key, const string& _value) - : key(_key), value(_value) {} - - virtual ~StrSingleValueDictEntry() {} - - virtual const char* Key() const { return key.c_str(); } - - virtual const char* Value() const { return value.c_str(); } - -private: - string key; - string value; -}; - -class OPENCC_EXPORT MultiValueDictEntry : public DictEntry { -public: - virtual const char* GetDefault() const { - if (NumValues() > 0) { - return Values().at(0); - } else { - return Key(); - } - } - - virtual string ToString() const; -}; - -class OPENCC_EXPORT StrMultiValueDictEntry : public MultiValueDictEntry { -public: - StrMultiValueDictEntry(const string& _key, const vector& _values) - : key(_key), values(_values) {} - - StrMultiValueDictEntry(const string& _key, const vector& _values) - : key(_key) { - values.reserve(_values.size()); - for (const char* str : _values) { - values.push_back(str); - } - } - - virtual ~StrMultiValueDictEntry() {} - - virtual const char* Key() const { return key.c_str(); } - - size_t NumValues() const { return values.size(); } - - vector Values() const { - vector values; - for (const string& value : this->values) { - values.push_back(value.c_str()); - } - return values; - } - -private: - string key; - vector values; -}; - -class OPENCC_EXPORT PtrDictEntry : public MultiValueDictEntry { -public: - PtrDictEntry(const char* _key, const vector& _values) - : key(_key), values(_values) {} - - virtual ~PtrDictEntry() {} - - virtual const char* Key() const { return key; } - - size_t NumValues() const { return values.size(); } - - vector Values() const { return values; } - -private: - const char* key; - vector values; -}; - -class OPENCC_EXPORT DictEntryFactory { -public: - static DictEntry* New(const string& key) { return new NoValueDictEntry(key); } - - static DictEntry* New(const string& key, const string& value) { - return new StrSingleValueDictEntry(key, value); - } - - static DictEntry* New(const string& key, const vector& values) { - return new StrMultiValueDictEntry(key, values); - } - - static DictEntry* New(const DictEntry* entry) { - if (entry->NumValues() == 0) { - return new NoValueDictEntry(entry->Key()); - } else if (entry->NumValues() == 1) { - const auto svEntry = static_cast(entry); - return new StrSingleValueDictEntry(svEntry->Key(), svEntry->Value()); - } else { - const auto mvEntry = static_cast(entry); - return new StrMultiValueDictEntry(mvEntry->Key(), mvEntry->Values()); - } - } -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DictGroup.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DictGroup.hpp deleted file mode 100644 index 8098addd63..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/DictGroup.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "Dict.hpp" - -namespace opencc { -/** -* Group of dictionaries -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT DictGroup : public Dict { -public: - DictGroup(const list& dicts); - - static DictGroupPtr NewFromDict(const Dict& dict); - - virtual ~DictGroup(); - - virtual size_t KeyMaxLength() const; - - virtual Optional Match(const char* word) const; - - virtual Optional MatchPrefix(const char* word) const; - - virtual vector MatchAllPrefixes(const char* word) const; - - virtual LexiconPtr GetLexicon() const; - - const list GetDicts() const { return dicts; } - -private: - const size_t keyMaxLength; - const list dicts; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Exception.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Exception.hpp deleted file mode 100644 index a1134e850a..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Exception.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include -#include -#include - -#include "Export.hpp" - -#ifdef _MSC_VER - -// Until Visual Studio 2013 (12.0), C++ 11 "noexcept" qualifier is not supported -#define noexcept -#endif // ifdef _MSC_VER - -namespace opencc { - -class OPENCC_EXPORT Exception : public std::exception { -public: - Exception() {} - - virtual ~Exception() throw() {} - - Exception(const std::string& _message) : message(_message) {} - - virtual const char* what() const noexcept { return message.c_str(); } - -protected: - std::string message; -}; - -class OPENCC_EXPORT FileNotFound : public Exception { -public: - FileNotFound(const std::string& fileName) - : Exception(fileName + " not found or not accessible.") {} -}; - -class OPENCC_EXPORT FileNotWritable : public Exception { -public: - FileNotWritable(const std::string& fileName) - : Exception(fileName + " not writable.") {} -}; - -class OPENCC_EXPORT InvalidFormat : public Exception { -public: - InvalidFormat(const std::string& message) - : Exception("Invalid format: " + message) {} -}; - -class OPENCC_EXPORT InvalidTextDictionary : public InvalidFormat { -public: - InvalidTextDictionary(const std::string& _message, size_t lineNum) - : InvalidFormat("") { - std::ostringstream buffer; - buffer << "Invalid text dictionary at line " << lineNum << ": " << _message; - message = buffer.str(); - } -}; - -class OPENCC_EXPORT InvalidUTF8 : public Exception { -public: - InvalidUTF8(const std::string& _message) - : Exception("Invalid UTF8: " + _message) {} -}; - -class OPENCC_EXPORT ShouldNotBeHere : public Exception { -public: - ShouldNotBeHere() : Exception("ShouldNotBeHere! This must be a bug.") {} -}; - -} // namespace opencc diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Export.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Export.hpp deleted file mode 100644 index e511b8a477..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Export.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#if defined(Opencc_BUILT_AS_STATIC) || !defined(_WIN32) -#define OPENCC_EXPORT -#define OPENCC_NO_EXPORT -#else // if defined(Opencc_BUILT_AS_STATIC) || !defined(_WIN32) -#ifndef OPENCC_EXPORT -#ifdef libopencc_EXPORTS - -/* We are building this library */ -#define OPENCC_EXPORT __declspec(dllexport) -#else // ifdef libopencc_EXPORTS - -/* We are using this library */ -#define OPENCC_EXPORT __declspec(dllimport) -#endif // ifdef libopencc_EXPORTS -#endif // ifndef OPENCC_EXPORT - -#ifndef OPENCC_NO_EXPORT -#define OPENCC_NO_EXPORT -#endif // ifndef OPENCC_NO_EXPORT -#endif // if defined(Opencc_BUILT_AS_STATIC) || !defined(_WIN32) diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Lexicon.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Lexicon.hpp deleted file mode 100644 index 1bb6ab6ae6..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Lexicon.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "DictEntry.hpp" - -namespace opencc { -/** -* Storage of all entries -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Lexicon { -public: - Lexicon() {} - - ~Lexicon() { - for (DictEntry* entry : entries) { - delete entry; - } - } - - void Add(DictEntry* entry) { entries.push_back(entry); } - - void Sort() { - std::sort(entries.begin(), entries.end(), DictEntry::PtrLessThan); - } - - const DictEntry* At(size_t index) const { return entries.at(index); } - - size_t Length() const { return entries.size(); } - - vector::const_iterator begin() const { return entries.begin(); } - - vector::const_iterator end() const { return entries.end(); } - -private: - vector entries; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/MaxMatchSegmentation.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/MaxMatchSegmentation.hpp deleted file mode 100644 index ace021e6ba..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/MaxMatchSegmentation.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "DictGroup.hpp" -#include "Segmentation.hpp" - -namespace opencc { -/** -* Implementation of maximal match segmentation -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT MaxMatchSegmentation : public Segmentation { -public: - MaxMatchSegmentation(const DictPtr _dict) : dict(_dict) {} - - virtual ~MaxMatchSegmentation() {} - - virtual SegmentsPtr Segment(const string& text) const; - - const DictPtr GetDict() const { return dict; } - -private: - const DictPtr dict; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Optional.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Optional.hpp deleted file mode 100644 index 9279101b3f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Optional.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -namespace opencc { -/** -* A class that wraps type T into a nullable type. -* @ingroup opencc_cpp_api -*/ -template class Optional { -public: - /** - * The constructor of Optional. - */ - Optional(T actual) : isNull(false), data(actual) {} - - /** - * Returns true if the instance is null. - */ - bool IsNull() const { return isNull; } - - /** - * Returns the containing data of the instance. - */ - const T& Get() const { return data; } - - /** - * Constructs a null instance. - */ - static Optional Null() { return Optional(); } - -private: - Optional() : isNull(true) {} - - bool isNull; - T data; -}; - -/** -* Specialization of Optional for pointers. -* -* Reduce a bool. -*/ -template class Optional { -private: - Optional() : data(nullptr) {} - - typedef T* TPtr; - TPtr data; - -public: - Optional(TPtr actual) : data(actual) {} - - bool IsNull() const { return data == nullptr; } - - const TPtr& Get() const { return data; } - - static Optional Null() { return Optional(); } -}; -} \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Segmentation.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Segmentation.hpp deleted file mode 100644 index 84e7f2169b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Segmentation.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" - -namespace opencc { -/** -* Abstract segmentation -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Segmentation { -public: - virtual SegmentsPtr Segment(const string& text) const = 0; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Segments.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Segments.hpp deleted file mode 100644 index 6225e1a421..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/Segments.hpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" - -namespace opencc { -/** -* Segmented text -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT Segments { -public: - Segments() {} - - Segments(std::initializer_list initList) { - for (const string& item : initList) { - AddSegment(item); - } - } - - Segments(std::initializer_list initList) { - for (const string& item : initList) { - AddSegment(item); - } - } - - void AddSegment(const char* unmanagedString) { - indexes.push_back(std::make_pair(unmanaged.size(), false)); - unmanaged.push_back(unmanagedString); - } - - void AddSegment(const string& str) { - indexes.push_back(std::make_pair(managed.size(), true)); - managed.push_back(str); - } - - class iterator : public std::iterator { - public: - iterator(const Segments* const _segments, size_t _cursor) - : segments(_segments), cursor(_cursor) {} - - iterator& operator++() { - cursor++; - return *this; - } - - bool operator==(const iterator& that) const { - return cursor == that.cursor && segments == that.segments; - } - - bool operator!=(const iterator& that) const { - return !this->operator==(that); - } - - const char* operator*() const { return segments->At(cursor); } - - private: - const Segments* const segments; - size_t cursor; - }; - - const char* At(size_t cursor) const { - const auto& index = indexes[cursor]; - if (index.second) { - return managed[index.first].c_str(); - } else { - return unmanaged[index.first]; - } - } - - size_t Length() const { return indexes.size(); } - - iterator begin() const { return iterator(this, 0); } - - iterator end() const { return iterator(this, indexes.size()); } - - string ToString() const { - // TODO implement a nested structure to reduce concatenation, - // like a purely functional differential list - std::ostringstream buffer; - for (const char* segment : *this) { - buffer << segment; - } - return buffer.str(); - } - -private: - Segments(const Segments&) {} - - vector unmanaged; - vector managed; - // index, managed - vector> indexes; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/SerializableDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/SerializableDict.hpp deleted file mode 100644 index a02e53e62f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/SerializableDict.hpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Dict.hpp" - -namespace opencc { -/** -* Serializable dictionary interface -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT SerializableDict { -public: - /** - * Serializes the dictionary and writes in to a file. - */ - virtual void SerializeToFile(FILE* fp) const = 0; - - /** - * Serializes the dictionary and writes in to a file. - */ - virtual void SerializeToFile(const string& fileName) const { - FILE* fp = fopen(fileName.c_str(), "wb"); - if (fp == NULL) { - throw FileNotWritable(fileName); - } - SerializeToFile(fp); - fclose(fp); - } - - template - static bool TryLoadFromFile(const string& fileName, - std::shared_ptr* dict) { - FILE* fp = -#ifdef _MSC_VER - // well, the 'GetPlatformString' shall return a 'wstring' - _wfopen(UTF8Util::GetPlatformString(fileName).c_str(), L"rb") -#else - fopen(UTF8Util::GetPlatformString(fileName).c_str(), "rb") -#endif // _MSC_VER - ; - - if (fp == NULL) { - return false; - } - std::shared_ptr loadedDict = DICT::NewFromFile(fp); - fclose(fp); - *dict = loadedDict; - return true; - } - - template - static std::shared_ptr NewFromFile(const string& fileName) { - std::shared_ptr dict; - if (!TryLoadFromFile(fileName, &dict)) { - throw FileNotFound(fileName); - } - return dict; - } -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/SimpleConverter.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/SimpleConverter.hpp deleted file mode 100644 index 0dabefbb79..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/SimpleConverter.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __OPENCC_SIMPLECONVERTER_HPP_ -#define __OPENCC_SIMPLECONVERTER_HPP_ - -/** -* @defgroup opencc_simple_api OpenCC C++ Simple API -* -* Simple API in C++ language -*/ - -namespace opencc { -/** -* A high level converter -* This interface does not require C++11 to compile. -* @ingroup opencc_simple_api -*/ -class OPENCC_EXPORT SimpleConverter { -public: - /** - * Constructor of SimpleConverter - * @param configFileName File name of configuration. - */ - SimpleConverter(const std::string& configFileName); - - ~SimpleConverter(); - - /** - * Converts a text - * @param input Text to be converted. - */ - std::string Convert(const std::string& input) const; - - /** - * Converts a text - * @param input A C-Style string (terminated by '\0') to be converted. - */ - std::string Convert(const char* input) const; - - /** - * Converts a text - * @param input A C-Style string limited by a given length to be converted. - * @param length Maximal length in byte of the input string. - */ - std::string Convert(const char* input, size_t length) const; - - /** - * Converts a text and writes to an allocated buffer - * Please make sure the buffer has sufficent space. - * @param input A C-Style string (terminated by '\0') to be converted. - * @param output Buffer to write the converted text. - * @return Length of converted text. - */ - size_t Convert(const char* input, char* output) const; - - /** - * Converts a text and writes to an allocated buffer - * Please make sure the buffer has sufficent space. - * @param input A C-Style string limited by a given length to be converted. - * @param length Maximal length in byte of the input string. - * @param output Buffer to write the converted text. - * @return Length of converted text. - */ - size_t Convert(const char* input, size_t length, char* output) const; - -private: - const void* internalData; -}; - -} // namespace opencc - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/TextDict.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/TextDict.hpp deleted file mode 100644 index 5000b27cae..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/TextDict.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "Common.hpp" -#include "SerializableDict.hpp" - -namespace opencc { -/** -* Text dictionary -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT TextDict : public Dict, public SerializableDict { -public: - /** - * Constructor of TextDict. - * _lexicon must be sorted. - */ - TextDict(const LexiconPtr& _lexicon); - - virtual ~TextDict(); - - virtual size_t KeyMaxLength() const; - - virtual Optional Match(const char* word) const; - - virtual LexiconPtr GetLexicon() const; - - virtual void SerializeToFile(FILE* fp) const; - - /** - * Constructs a TextDict from another dictionary. - */ - static TextDictPtr NewFromDict(const Dict& dict); - - static TextDictPtr NewFromFile(FILE* fp); - - static TextDictPtr NewFromSortedFile(FILE* fp); - -private: - const size_t maxLength; - const LexiconPtr lexicon; -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/UTF8Util.hpp b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/UTF8Util.hpp deleted file mode 100644 index ea03dc015b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/UTF8Util.hpp +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2013 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#ifdef _MSC_VER -#define NOMINMAX -#include -#undef NOMINMAX -#endif // _MSC_VER - -#include "Common.hpp" - -namespace opencc { -/** -* UTF8 string utilities -* @ingroup opencc_cpp_api -*/ -class OPENCC_EXPORT UTF8Util { -public: - /** - * Detect UTF8 BOM and skip it. - */ - static void SkipUtf8Bom(FILE* fp); - - /** - * Returns the length in byte for the next UTF8 character. - * On error returns 0. - */ - static size_t NextCharLengthNoException(const char* str) { - char ch = *str; - if ((ch & 0xF0) == 0xE0) { - return 3; - } else if ((ch & 0x80) == 0x00) { - return 1; - } else if ((ch & 0xE0) == 0xC0) { - return 2; - } else if ((ch & 0xF8) == 0xF0) { - return 4; - } else if ((ch & 0xFC) == 0xF8) { - return 5; - } else if ((ch & 0xFE) == 0xFC) { - return 6; - } - return 0; - } - - /** - * Returns the length in byte for the next UTF8 character. - */ - static size_t NextCharLength(const char* str) { - size_t length = NextCharLengthNoException(str); - if (length == 0) { - throw InvalidUTF8(str); - } - return length; - } - - /** - * Returns the length in byte for the previous UTF8 character. - */ - static size_t PrevCharLength(const char* str) { - { - const size_t length = NextCharLengthNoException(str - 3); - if (length == 3) { - return length; - } - } - { - const size_t length = NextCharLengthNoException(str - 1); - if (length == 1) { - return length; - } - } - { - const size_t length = NextCharLengthNoException(str - 2); - if (length == 2) { - return length; - } - } - for (size_t i = 4; i <= 6; i++) { - const size_t length = NextCharLengthNoException(str - i); - if (length == i) { - return length; - } - } - throw InvalidUTF8(str); - } - - /** - * Returns the char* pointer over the next UTF8 character. - */ - static const char* NextChar(const char* str) { - return str + NextCharLength(str); - } - - /** - * Move the char* pointer before the previous UTF8 character. - */ - static const char* PrevChar(const char* str) { - return str - PrevCharLength(str); - } - - /** - * Returns the UTF8 length of a valid UTF8 string. - */ - static size_t Length(const char* str) { - size_t length = 0; - while (*str != '\0') { - str = NextChar(str); - length++; - } - return length; - } - - /** - * Finds a character in the same line. - * @param str The text to be searched in. - * @param ch The character to find. - * @return The pointer that points to the found chacter in str or EOL/EOF. - */ - static const char* FindNextInline(const char* str, const char ch) { - while (!IsLineEndingOrFileEnding(*str) && *str != ch) { - str = NextChar(str); - } - return str; - } - - /** - * Returns ture if the character is a line ending or end of file. - */ - static bool IsLineEndingOrFileEnding(const char ch) { - return ch == '\0' || ch == '\n' || ch == '\r'; - } - - /** - * Copies a substring with given length to a new std::string. - */ - static string FromSubstr(const char* str, size_t length) { - string newStr; - newStr.resize(length); - strncpy(const_cast(newStr.c_str()), str, length); - return newStr; - } - - /** - * Returns true if the given string is longer or as long as the given length. - */ - static bool NotShorterThan(const char* str, size_t byteLength) { - while (byteLength > 0) { - if (*str == '\0') { - return false; - } - byteLength--; - str++; - } - return true; - } - - /** - * Truncates a string with a maximal length in byte. - * No UTF8 character will be broken. - */ - static string TruncateUTF8(const char* str, size_t maxByteLength) { - string wordTrunc; - if (NotShorterThan(str, maxByteLength)) { - size_t len = 0; - const char* pStr = str; - for (;;) { - const size_t charLength = NextCharLength(pStr); - if (len + charLength > maxByteLength) { - break; - } - pStr += charLength; - len += charLength; - } - wordTrunc = FromSubstr(str, len); - } else { - wordTrunc = str; - } - return wordTrunc; - } - - /** - * Replaces all patterns in a string in place. - */ - static void ReplaceAll(string& str, const char* from, const char* to) { - string::size_type pos = 0; - string::size_type fromLen = strlen(from); - string::size_type toLen = strlen(to); - while ((pos = str.find(from, pos)) != string::npos) { - str.replace(pos, fromLen, to); - pos += toLen; - } - } - - /** - * Joins a string vector in to a string with a separator. - */ - static string Join(const vector& strings, const string& separator) { - std::ostringstream buffer; - bool first = true; - for (const auto& str : strings) { - if (!first) { - buffer << separator; - } - buffer << str; - first = false; - } - return buffer.str(); - } - - /** - * Joins a string vector in to a string. - */ - static string Join(const vector& strings) { - std::ostringstream buffer; - for (const auto& str : strings) { - buffer << str; - } - return buffer.str(); - } - - static void GetByteMap(const char* str, const size_t utf8Length, - vector* byteMap) { - if (byteMap->size() < utf8Length) { - byteMap->resize(utf8Length); - } - const char* pstr = str; - for (size_t i = 0; i < utf8Length; i++) { - (*byteMap)[i] = pstr - str; - pstr = NextChar(pstr); - } - } - -#ifdef _MSC_VER - static std::wstring GetPlatformString(const std::string& str) { - return U8ToU16(str); - } -#else - static std::string GetPlatformString(const std::string& str) { - return str; - } -#endif // _MSC_VER - - -#ifdef _MSC_VER - static std::string U16ToU8(const std::wstring& wstr) { - std::string ret; - int convcnt = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), wstr.length(), NULL, 0, NULL, NULL); - if (convcnt > 0) { - ret.resize(convcnt); - WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), wstr.length(), &ret[0], convcnt, NULL, NULL); - } - return ret; - } - - static std::wstring U8ToU16(const std::string& str) { - std::wstring ret; - int convcnt = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), NULL, 0); - if (convcnt > 0) { - ret.resize(convcnt); - MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), &ret[0], convcnt); - } - return ret; - } -#endif // _MSC_VER -}; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/opencc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/opencc.h deleted file mode 100644 index 21b90469ff..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/opencc/opencc.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Open Chinese Convert - * - * Copyright 2010-2014 BYVoid - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __OPENCC_H_ -#define __OPENCC_H_ - -#ifdef __cplusplus - -#include -#include "Export.hpp" -#include "SimpleConverter.hpp" - -extern "C" { -#else -#include -#endif - -#ifndef OPENCC_EXPORT -#define OPENCC_EXPORT -#endif - -/** -* @defgroup opencc_c_api OpenCC C API -* -* API in C language -*/ - -/** -* Filename of default Simplified to Traditional configuration -* -* @ingroup opencc_c_api -*/ -#define OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD "s2t.json" - -/** -* Filename of default Traditional to Simplified configuration -* -* @ingroup opencc_c_api -*/ -#define OPENCC_DEFAULT_CONFIG_TRAD_TO_SIMP "t2s.json" - -/** -* Type of opencc descriptor -* -* @ingroup opencc_c_api -*/ -typedef void* opencc_t; - -/** -* Makes an instance of opencc -* -* @param configFileName Location of configuration file. If this is set to NULL, -* OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD will be loaded. -* @return A description pointer of the newly allocated instance of -* opencc. On error the return value will be (opencc_t) -1. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT opencc_t opencc_open(const char* configFileName); -#ifdef _MSC_VER -/** -* Makes an instance of opencc (wide char / Unicode) -* -* @param configFileName Location of configuration file. If this is set to NULL, -* OPENCC_DEFAULT_CONFIG_SIMP_TO_TRAD will be loaded. -* @return A description pointer of the newly allocated instance of -* opencc. On error the return value will be (opencc_t) -1. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT opencc_t opencc_open_w(const wchar_t* configFileName); -#endif /* _MSC_VER */ - -/** -* Destroys an instance of opencc -* -* @param opencc The description pointer. -* @return 0 on success or non-zero number on failure. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT int opencc_close(opencc_t opencc); - -/** -* Converts UTF-8 string -* -* @param opencc The opencc description pointer. -* @param input The UTF-8 encoded string. -* @param length The maximum length in byte to convert. If length is (size_t)-1, -* the whole string (terminated by '\0') will be converted. -* @param output The buffer to store converted text. You MUST make sure this -* buffer has sufficient space. -* -* @return The length of converted string or (size_t)-1 on error. -* -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT size_t opencc_convert_utf8_to_buffer(opencc_t opencc, - const char* input, - size_t length, - char* output); - -/** -* Converts UTF-8 string -* This function returns an allocated C-Style string, which stores -* the converted string. -* You MUST call opencc_convert_utf8_free() to release allocated memory. -* -* @param opencc The opencc description pointer. -* @param input The UTF-8 encoded string. -* @param length The maximum length in byte to convert. If length is (size_t)-1, -* the whole string (terminated by '\0') will be converted. -* -* @return The newly allocated UTF-8 string that stores text converted, -* or NULL on error. -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT char* opencc_convert_utf8(opencc_t opencc, - const char* input, - size_t length); - -/** -* Releases allocated buffer by opencc_convert_utf8 -* -* @param str Pointer to the allocated string buffer by opencc_convert_utf8. -* -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT void opencc_convert_utf8_free(char* str); - -/** -* Returns the last error message -* -* Note that this function is the only one which is NOT thread-safe. -* -* @ingroup opencc_c_api -*/ -OPENCC_EXPORT const char* opencc_error(void); - -#ifdef __cplusplus -} // extern "C" -#endif - -/** -* @defgroup opencc_cpp_api OpenCC C++ Comprehensive API -* -* Comprehensive API in C++ language -*/ - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/stdint_msvc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/stdint_msvc.h deleted file mode 100644 index e89d968759..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/stdint_msvc.h +++ /dev/null @@ -1,232 +0,0 @@ -// ISO C9x compliant stdint.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006-2008 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_STDINT_H_ // [ -#define _MSC_STDINT_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include - -// For Visual Studio 6 in C++ mode wrap include with 'extern "C++" {}' -// or compiler give many errors like this: -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed -#if (_MSC_VER < 1300) && defined(__cplusplus) - extern "C++" { -#endif -# include -#if (_MSC_VER < 1300) && defined(__cplusplus) - } -#endif - -// Define _W64 macros to mark types changing their size, like intptr_t. -#ifndef _W64 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - - -// 7.18.1 Integer types - -// 7.18.1.1 Exact-width integer types -typedef __int8 int8_t; -typedef __int16 int16_t; -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; - -// 7.18.1.2 Minimum-width integer types -typedef int8_t int_least8_t; -typedef int16_t int_least16_t; -typedef int32_t int_least32_t; -typedef int64_t int_least64_t; -typedef uint8_t uint_least8_t; -typedef uint16_t uint_least16_t; -typedef uint32_t uint_least32_t; -typedef uint64_t uint_least64_t; - -// 7.18.1.3 Fastest minimum-width integer types -typedef int8_t int_fast8_t; -typedef int16_t int_fast16_t; -typedef int32_t int_fast32_t; -typedef int64_t int_fast64_t; -typedef uint8_t uint_fast8_t; -typedef uint16_t uint_fast16_t; -typedef uint32_t uint_fast32_t; -typedef uint64_t uint_fast64_t; - -// 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ - typedef __int64 intptr_t; - typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ - typedef _W64 int intptr_t; - typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] - -// 7.18.1.5 Greatest-width integer types -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; - - -// 7.18.2 Limits of specified-width integer types - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 - -// 7.18.2.1 Limits of exact-width integer types -#define INT8_MIN ((int8_t)_I8_MIN) -#define INT8_MAX _I8_MAX -#define INT16_MIN ((int16_t)_I16_MIN) -#define INT16_MAX _I16_MAX -#define INT32_MIN ((int32_t)_I32_MIN) -#define INT32_MAX _I32_MAX -#define INT64_MIN ((int64_t)_I64_MIN) -#define INT64_MAX _I64_MAX -#define UINT8_MAX _UI8_MAX -#define UINT16_MAX _UI16_MAX -#define UINT32_MAX _UI32_MAX -#define UINT64_MAX _UI64_MAX - -// 7.18.2.2 Limits of minimum-width integer types -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MIN INT64_MIN -#define INT_LEAST64_MAX INT64_MAX -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -// 7.18.2.3 Limits of fastest minimum-width integer types -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MIN INT64_MIN -#define INT_FAST64_MAX INT64_MAX -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -// 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] - -// 7.18.2.5 Limits of greatest-width integer types -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -// 7.18.3 Limits of other integer types - -#ifdef _WIN64 // [ -# define PTRDIFF_MIN _I64_MIN -# define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ -# define PTRDIFF_MIN _I32_MIN -# define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] - -#define SIG_ATOMIC_MIN INT_MIN -#define SIG_ATOMIC_MAX INT_MAX - -#ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ -# define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ -# define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] -#endif // SIZE_MAX ] - -// WCHAR_MIN and WCHAR_MAX are also defined in -#ifndef WCHAR_MIN // [ -# define WCHAR_MIN 0 -#endif // WCHAR_MIN ] -#ifndef WCHAR_MAX // [ -# define WCHAR_MAX _UI16_MAX -#endif // WCHAR_MAX ] - -#define WINT_MIN 0 -#define WINT_MAX _UI16_MAX - -#endif // __STDC_LIMIT_MACROS ] - - -// 7.18.4 Limits of other integer types - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 - -// 7.18.4.1 Macros for minimum-width integer constants - -#define INT8_C(val) val##i8 -#define INT16_C(val) val##i16 -#define INT32_C(val) val##i32 -#define INT64_C(val) val##i64 - -#define UINT8_C(val) val##ui8 -#define UINT16_C(val) val##ui16 -#define UINT32_C(val) val##ui32 -#define UINT64_C(val) val##ui64 - -// 7.18.4.2 Macros for greatest-width integer constants -#define INTMAX_C INT64_C -#define UINTMAX_C UINT64_C - -#endif // __STDC_CONSTANT_MACROS ] - - -#endif // _MSC_STDINT_H_ ] \ No newline at end of file diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/stub_msvc.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/stub_msvc.h deleted file mode 100644 index bc2b6f4a3f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/stub_msvc.h +++ /dev/null @@ -1,14 +0,0 @@ -#include - -#if !defined(strcasecmp) -# define strcasecmp _strcmpi -#endif -#if !defined(strncasecmp) -# define strncasecmp _strnicmp -#endif - -#ifndef _SSIZE_T -#define _SSIZE_T -#define ssize_t long -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiff.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiff.h deleted file mode 100644 index 19b4e7976d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiff.h +++ /dev/null @@ -1,678 +0,0 @@ -/* $Id: tiff.h,v 1.68 2012-08-19 16:56:35 bfriesen Exp $ */ - -/* - * Copyright (c) 1988-1997 Sam Leffler - * Copyright (c) 1991-1997 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the names of - * Sam Leffler and Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Sam Leffler and Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#ifndef _TIFF_ -#define _TIFF_ - -#include "tiffconf.h" - -/* - * Tag Image File Format (TIFF) - * - * Based on Rev 6.0 from: - * Developer's Desk - * Aldus Corporation - * 411 First Ave. South - * Suite 200 - * Seattle, WA 98104 - * 206-622-5500 - * - * (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf) - * - * For BigTIFF design notes see the following links - * http://www.remotesensing.org/libtiff/bigtiffdesign.html - * http://www.awaresystems.be/imaging/tiff/bigtiff.html - */ - -#define TIFF_VERSION_CLASSIC 42 -#define TIFF_VERSION_BIG 43 - -#define TIFF_BIGENDIAN 0x4d4d -#define TIFF_LITTLEENDIAN 0x4949 -#define MDI_LITTLEENDIAN 0x5045 -#define MDI_BIGENDIAN 0x4550 - -/* - * Intrinsic data types required by the file format: - * - * 8-bit quantities int8/uint8 - * 16-bit quantities int16/uint16 - * 32-bit quantities int32/uint32 - * 64-bit quantities int64/uint64 - * strings unsigned char* - */ - -typedef TIFF_INT8_T int8; -typedef TIFF_UINT8_T uint8; - -typedef TIFF_INT16_T int16; -typedef TIFF_UINT16_T uint16; - -typedef TIFF_INT32_T int32; -typedef TIFF_UINT32_T uint32; - -typedef TIFF_INT64_T int64; -typedef TIFF_UINT64_T uint64; - -/* - * Some types as promoted in a variable argument list - * We use uint16_vap rather then directly using int, because this way - * we document the type we actually want to pass through, conceptually, - * rather then confusing the issue by merely stating the type it gets - * promoted to - */ - -typedef int uint16_vap; - -/* - * TIFF header. - */ -typedef struct { - uint16 tiff_magic; /* magic number (defines byte order) */ - uint16 tiff_version; /* TIFF version number */ -} TIFFHeaderCommon; -typedef struct { - uint16 tiff_magic; /* magic number (defines byte order) */ - uint16 tiff_version; /* TIFF version number */ - uint32 tiff_diroff; /* byte offset to first directory */ -} TIFFHeaderClassic; -typedef struct { - uint16 tiff_magic; /* magic number (defines byte order) */ - uint16 tiff_version; /* TIFF version number */ - uint16 tiff_offsetsize; /* size of offsets, should be 8 */ - uint16 tiff_unused; /* unused word, should be 0 */ - uint64 tiff_diroff; /* byte offset to first directory */ -} TIFFHeaderBig; - - -/* - * NB: In the comments below, - * - items marked with a + are obsoleted by revision 5.0, - * - items marked with a ! are introduced in revision 6.0. - * - items marked with a % are introduced post revision 6.0. - * - items marked with a $ are obsoleted by revision 6.0. - * - items marked with a & are introduced by Adobe DNG specification. - */ - -/* - * Tag data type information. - * - * Note: RATIONALs are the ratio of two 32-bit integer values. - */ -typedef enum { - TIFF_NOTYPE = 0, /* placeholder */ - TIFF_BYTE = 1, /* 8-bit unsigned integer */ - TIFF_ASCII = 2, /* 8-bit bytes w/ last byte null */ - TIFF_SHORT = 3, /* 16-bit unsigned integer */ - TIFF_LONG = 4, /* 32-bit unsigned integer */ - TIFF_RATIONAL = 5, /* 64-bit unsigned fraction */ - TIFF_SBYTE = 6, /* !8-bit signed integer */ - TIFF_UNDEFINED = 7, /* !8-bit untyped data */ - TIFF_SSHORT = 8, /* !16-bit signed integer */ - TIFF_SLONG = 9, /* !32-bit signed integer */ - TIFF_SRATIONAL = 10, /* !64-bit signed fraction */ - TIFF_FLOAT = 11, /* !32-bit IEEE floating point */ - TIFF_DOUBLE = 12, /* !64-bit IEEE floating point */ - TIFF_IFD = 13, /* %32-bit unsigned integer (offset) */ - TIFF_LONG8 = 16, /* BigTIFF 64-bit unsigned integer */ - TIFF_SLONG8 = 17, /* BigTIFF 64-bit signed integer */ - TIFF_IFD8 = 18 /* BigTIFF 64-bit unsigned integer (offset) */ -} TIFFDataType; - -/* - * TIFF Tag Definitions. - */ -#define TIFFTAG_SUBFILETYPE 254 /* subfile data descriptor */ -#define FILETYPE_REDUCEDIMAGE 0x1 /* reduced resolution version */ -#define FILETYPE_PAGE 0x2 /* one page of many */ -#define FILETYPE_MASK 0x4 /* transparency mask */ -#define TIFFTAG_OSUBFILETYPE 255 /* +kind of data in subfile */ -#define OFILETYPE_IMAGE 1 /* full resolution image data */ -#define OFILETYPE_REDUCEDIMAGE 2 /* reduced size image data */ -#define OFILETYPE_PAGE 3 /* one page of many */ -#define TIFFTAG_IMAGEWIDTH 256 /* image width in pixels */ -#define TIFFTAG_IMAGELENGTH 257 /* image height in pixels */ -#define TIFFTAG_BITSPERSAMPLE 258 /* bits per channel (sample) */ -#define TIFFTAG_COMPRESSION 259 /* data compression technique */ -#define COMPRESSION_NONE 1 /* dump mode */ -#define COMPRESSION_CCITTRLE 2 /* CCITT modified Huffman RLE */ -#define COMPRESSION_CCITTFAX3 3 /* CCITT Group 3 fax encoding */ -#define COMPRESSION_CCITT_T4 3 /* CCITT T.4 (TIFF 6 name) */ -#define COMPRESSION_CCITTFAX4 4 /* CCITT Group 4 fax encoding */ -#define COMPRESSION_CCITT_T6 4 /* CCITT T.6 (TIFF 6 name) */ -#define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */ -#define COMPRESSION_OJPEG 6 /* !6.0 JPEG */ -#define COMPRESSION_JPEG 7 /* %JPEG DCT compression */ -#define COMPRESSION_T85 9 /* !TIFF/FX T.85 JBIG compression */ -#define COMPRESSION_T43 10 /* !TIFF/FX T.43 colour by layered JBIG compression */ -#define COMPRESSION_NEXT 32766 /* NeXT 2-bit RLE */ -#define COMPRESSION_CCITTRLEW 32771 /* #1 w/ word alignment */ -#define COMPRESSION_PACKBITS 32773 /* Macintosh RLE */ -#define COMPRESSION_THUNDERSCAN 32809 /* ThunderScan RLE */ -/* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT */ -#define COMPRESSION_DCS 32947 /* Kodak DCS encoding */ -#define COMPRESSION_JBIG 34661 /* ISO JBIG */ -#define COMPRESSION_SGILOG 34676 /* SGI Log Luminance RLE */ -#define COMPRESSION_SGILOG24 34677 /* SGI Log 24-bit packed */ -#define COMPRESSION_JP2000 34712 /* Leadtools JPEG2000 */ -#define COMPRESSION_LZMA 34925 /* LZMA2 */ -#define TIFFTAG_PHOTOMETRIC 262 /* photometric interpretation */ -#define PHOTOMETRIC_MINISWHITE 0 /* min value is white */ -#define PHOTOMETRIC_MINISBLACK 1 /* min value is black */ -#define PHOTOMETRIC_RGB 2 /* RGB color model */ -#define PHOTOMETRIC_PALETTE 3 /* color map indexed */ -#define PHOTOMETRIC_MASK 4 /* $holdout mask */ -#define PHOTOMETRIC_SEPARATED 5 /* !color separations */ -#define PHOTOMETRIC_YCBCR 6 /* !CCIR 601 */ -#define PHOTOMETRIC_CIELAB 8 /* !1976 CIE L*a*b* */ -#define PHOTOMETRIC_ICCLAB 9 /* ICC L*a*b* [Adobe TIFF Technote 4] */ -#define PHOTOMETRIC_ITULAB 10 /* ITU L*a*b* */ -#define PHOTOMETRIC_LOGL 32844 /* CIE Log2(L) */ -#define PHOTOMETRIC_LOGLUV 32845 /* CIE Log2(L) (u',v') */ -#define TIFFTAG_THRESHHOLDING 263 /* +thresholding used on data */ -#define THRESHHOLD_BILEVEL 1 /* b&w art scan */ -#define THRESHHOLD_HALFTONE 2 /* or dithered scan */ -#define THRESHHOLD_ERRORDIFFUSE 3 /* usually floyd-steinberg */ -#define TIFFTAG_CELLWIDTH 264 /* +dithering matrix width */ -#define TIFFTAG_CELLLENGTH 265 /* +dithering matrix height */ -#define TIFFTAG_FILLORDER 266 /* data order within a byte */ -#define FILLORDER_MSB2LSB 1 /* most significant -> least */ -#define FILLORDER_LSB2MSB 2 /* least significant -> most */ -#define TIFFTAG_DOCUMENTNAME 269 /* name of doc. image is from */ -#define TIFFTAG_IMAGEDESCRIPTION 270 /* info about image */ -#define TIFFTAG_MAKE 271 /* scanner manufacturer name */ -#define TIFFTAG_MODEL 272 /* scanner model name/number */ -#define TIFFTAG_STRIPOFFSETS 273 /* offsets to data strips */ -#define TIFFTAG_ORIENTATION 274 /* +image orientation */ -#define ORIENTATION_TOPLEFT 1 /* row 0 top, col 0 lhs */ -#define ORIENTATION_TOPRIGHT 2 /* row 0 top, col 0 rhs */ -#define ORIENTATION_BOTRIGHT 3 /* row 0 bottom, col 0 rhs */ -#define ORIENTATION_BOTLEFT 4 /* row 0 bottom, col 0 lhs */ -#define ORIENTATION_LEFTTOP 5 /* row 0 lhs, col 0 top */ -#define ORIENTATION_RIGHTTOP 6 /* row 0 rhs, col 0 top */ -#define ORIENTATION_RIGHTBOT 7 /* row 0 rhs, col 0 bottom */ -#define ORIENTATION_LEFTBOT 8 /* row 0 lhs, col 0 bottom */ -#define TIFFTAG_SAMPLESPERPIXEL 277 /* samples per pixel */ -#define TIFFTAG_ROWSPERSTRIP 278 /* rows per strip of data */ -#define TIFFTAG_STRIPBYTECOUNTS 279 /* bytes counts for strips */ -#define TIFFTAG_MINSAMPLEVALUE 280 /* +minimum sample value */ -#define TIFFTAG_MAXSAMPLEVALUE 281 /* +maximum sample value */ -#define TIFFTAG_XRESOLUTION 282 /* pixels/resolution in x */ -#define TIFFTAG_YRESOLUTION 283 /* pixels/resolution in y */ -#define TIFFTAG_PLANARCONFIG 284 /* storage organization */ -#define PLANARCONFIG_CONTIG 1 /* single image plane */ -#define PLANARCONFIG_SEPARATE 2 /* separate planes of data */ -#define TIFFTAG_PAGENAME 285 /* page name image is from */ -#define TIFFTAG_XPOSITION 286 /* x page offset of image lhs */ -#define TIFFTAG_YPOSITION 287 /* y page offset of image lhs */ -#define TIFFTAG_FREEOFFSETS 288 /* +byte offset to free block */ -#define TIFFTAG_FREEBYTECOUNTS 289 /* +sizes of free blocks */ -#define TIFFTAG_GRAYRESPONSEUNIT 290 /* $gray scale curve accuracy */ -#define GRAYRESPONSEUNIT_10S 1 /* tenths of a unit */ -#define GRAYRESPONSEUNIT_100S 2 /* hundredths of a unit */ -#define GRAYRESPONSEUNIT_1000S 3 /* thousandths of a unit */ -#define GRAYRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */ -#define GRAYRESPONSEUNIT_100000S 5 /* hundred-thousandths */ -#define TIFFTAG_GRAYRESPONSECURVE 291 /* $gray scale response curve */ -#define TIFFTAG_GROUP3OPTIONS 292 /* 32 flag bits */ -#define TIFFTAG_T4OPTIONS 292 /* TIFF 6.0 proper name alias */ -#define GROUP3OPT_2DENCODING 0x1 /* 2-dimensional coding */ -#define GROUP3OPT_UNCOMPRESSED 0x2 /* data not compressed */ -#define GROUP3OPT_FILLBITS 0x4 /* fill to byte boundary */ -#define TIFFTAG_GROUP4OPTIONS 293 /* 32 flag bits */ -#define TIFFTAG_T6OPTIONS 293 /* TIFF 6.0 proper name */ -#define GROUP4OPT_UNCOMPRESSED 0x2 /* data not compressed */ -#define TIFFTAG_RESOLUTIONUNIT 296 /* units of resolutions */ -#define RESUNIT_NONE 1 /* no meaningful units */ -#define RESUNIT_INCH 2 /* english */ -#define RESUNIT_CENTIMETER 3 /* metric */ -#define TIFFTAG_PAGENUMBER 297 /* page numbers of multi-page */ -#define TIFFTAG_COLORRESPONSEUNIT 300 /* $color curve accuracy */ -#define COLORRESPONSEUNIT_10S 1 /* tenths of a unit */ -#define COLORRESPONSEUNIT_100S 2 /* hundredths of a unit */ -#define COLORRESPONSEUNIT_1000S 3 /* thousandths of a unit */ -#define COLORRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */ -#define COLORRESPONSEUNIT_100000S 5 /* hundred-thousandths */ -#define TIFFTAG_TRANSFERFUNCTION 301 /* !colorimetry info */ -#define TIFFTAG_SOFTWARE 305 /* name & release */ -#define TIFFTAG_DATETIME 306 /* creation date and time */ -#define TIFFTAG_ARTIST 315 /* creator of image */ -#define TIFFTAG_HOSTCOMPUTER 316 /* machine where created */ -#define TIFFTAG_PREDICTOR 317 /* prediction scheme w/ LZW */ -#define PREDICTOR_NONE 1 /* no prediction scheme used */ -#define PREDICTOR_HORIZONTAL 2 /* horizontal differencing */ -#define PREDICTOR_FLOATINGPOINT 3 /* floating point predictor */ -#define TIFFTAG_WHITEPOINT 318 /* image white point */ -#define TIFFTAG_PRIMARYCHROMATICITIES 319 /* !primary chromaticities */ -#define TIFFTAG_COLORMAP 320 /* RGB map for pallette image */ -#define TIFFTAG_HALFTONEHINTS 321 /* !highlight+shadow info */ -#define TIFFTAG_TILEWIDTH 322 /* !tile width in pixels */ -#define TIFFTAG_TILELENGTH 323 /* !tile height in pixels */ -#define TIFFTAG_TILEOFFSETS 324 /* !offsets to data tiles */ -#define TIFFTAG_TILEBYTECOUNTS 325 /* !byte counts for tiles */ -#define TIFFTAG_BADFAXLINES 326 /* lines w/ wrong pixel count */ -#define TIFFTAG_CLEANFAXDATA 327 /* regenerated line info */ -#define CLEANFAXDATA_CLEAN 0 /* no errors detected */ -#define CLEANFAXDATA_REGENERATED 1 /* receiver regenerated lines */ -#define CLEANFAXDATA_UNCLEAN 2 /* uncorrected errors exist */ -#define TIFFTAG_CONSECUTIVEBADFAXLINES 328 /* max consecutive bad lines */ -#define TIFFTAG_SUBIFD 330 /* subimage descriptors */ -#define TIFFTAG_INKSET 332 /* !inks in separated image */ -#define INKSET_CMYK 1 /* !cyan-magenta-yellow-black color */ -#define INKSET_MULTIINK 2 /* !multi-ink or hi-fi color */ -#define TIFFTAG_INKNAMES 333 /* !ascii names of inks */ -#define TIFFTAG_NUMBEROFINKS 334 /* !number of inks */ -#define TIFFTAG_DOTRANGE 336 /* !0% and 100% dot codes */ -#define TIFFTAG_TARGETPRINTER 337 /* !separation target */ -#define TIFFTAG_EXTRASAMPLES 338 /* !info about extra samples */ -#define EXTRASAMPLE_UNSPECIFIED 0 /* !unspecified data */ -#define EXTRASAMPLE_ASSOCALPHA 1 /* !associated alpha data */ -#define EXTRASAMPLE_UNASSALPHA 2 /* !unassociated alpha data */ -#define TIFFTAG_SAMPLEFORMAT 339 /* !data sample format */ -#define SAMPLEFORMAT_UINT 1 /* !unsigned integer data */ -#define SAMPLEFORMAT_INT 2 /* !signed integer data */ -#define SAMPLEFORMAT_IEEEFP 3 /* !IEEE floating point data */ -#define SAMPLEFORMAT_VOID 4 /* !untyped data */ -#define SAMPLEFORMAT_COMPLEXINT 5 /* !complex signed int */ -#define SAMPLEFORMAT_COMPLEXIEEEFP 6 /* !complex ieee floating */ -#define TIFFTAG_SMINSAMPLEVALUE 340 /* !variable MinSampleValue */ -#define TIFFTAG_SMAXSAMPLEVALUE 341 /* !variable MaxSampleValue */ -#define TIFFTAG_CLIPPATH 343 /* %ClipPath - [Adobe TIFF technote 2] */ -#define TIFFTAG_XCLIPPATHUNITS 344 /* %XClipPathUnits - [Adobe TIFF technote 2] */ -#define TIFFTAG_YCLIPPATHUNITS 345 /* %YClipPathUnits - [Adobe TIFF technote 2] */ -#define TIFFTAG_INDEXED 346 /* %Indexed - [Adobe TIFF Technote 3] */ -#define TIFFTAG_JPEGTABLES 347 /* %JPEG table stream */ -#define TIFFTAG_OPIPROXY 351 /* %OPI Proxy [Adobe TIFF technote] */ -/* Tags 400-435 are from the TIFF/FX spec */ -#define TIFFTAG_GLOBALPARAMETERSIFD 400 /* ! */ -#define TIFFTAG_PROFILETYPE 401 /* ! */ -#define PROFILETYPE_UNSPECIFIED 0 /* ! */ -#define PROFILETYPE_G3_FAX 1 /* ! */ -#define TIFFTAG_FAXPROFILE 402 /* ! */ -#define FAXPROFILE_S 1 /* !TIFF/FX FAX profile S */ -#define FAXPROFILE_F 2 /* !TIFF/FX FAX profile F */ -#define FAXPROFILE_J 3 /* !TIFF/FX FAX profile J */ -#define FAXPROFILE_C 4 /* !TIFF/FX FAX profile C */ -#define FAXPROFILE_L 5 /* !TIFF/FX FAX profile L */ -#define FAXPROFILE_M 6 /* !TIFF/FX FAX profile LM */ -#define TIFFTAG_CODINGMETHODS 403 /* !TIFF/FX coding methods */ -#define CODINGMETHODS_T4_1D (1 << 1) /* !T.4 1D */ -#define CODINGMETHODS_T4_2D (1 << 2) /* !T.4 2D */ -#define CODINGMETHODS_T6 (1 << 3) /* !T.6 */ -#define CODINGMETHODS_T85 (1 << 4) /* !T.85 JBIG */ -#define CODINGMETHODS_T42 (1 << 5) /* !T.42 JPEG */ -#define CODINGMETHODS_T43 (1 << 6) /* !T.43 colour by layered JBIG */ -#define TIFFTAG_VERSIONYEAR 404 /* !TIFF/FX version year */ -#define TIFFTAG_MODENUMBER 405 /* !TIFF/FX mode number */ -#define TIFFTAG_DECODE 433 /* !TIFF/FX decode */ -#define TIFFTAG_IMAGEBASECOLOR 434 /* !TIFF/FX image base colour */ -#define TIFFTAG_T82OPTIONS 435 /* !TIFF/FX T.82 options */ -/* - * Tags 512-521 are obsoleted by Technical Note #2 which specifies a - * revised JPEG-in-TIFF scheme. - */ -#define TIFFTAG_JPEGPROC 512 /* !JPEG processing algorithm */ -#define JPEGPROC_BASELINE 1 /* !baseline sequential */ -#define JPEGPROC_LOSSLESS 14 /* !Huffman coded lossless */ -#define TIFFTAG_JPEGIFOFFSET 513 /* !pointer to SOI marker */ -#define TIFFTAG_JPEGIFBYTECOUNT 514 /* !JFIF stream length */ -#define TIFFTAG_JPEGRESTARTINTERVAL 515 /* !restart interval length */ -#define TIFFTAG_JPEGLOSSLESSPREDICTORS 517 /* !lossless proc predictor */ -#define TIFFTAG_JPEGPOINTTRANSFORM 518 /* !lossless point transform */ -#define TIFFTAG_JPEGQTABLES 519 /* !Q matrice offsets */ -#define TIFFTAG_JPEGDCTABLES 520 /* !DCT table offsets */ -#define TIFFTAG_JPEGACTABLES 521 /* !AC coefficient offsets */ -#define TIFFTAG_YCBCRCOEFFICIENTS 529 /* !RGB -> YCbCr transform */ -#define TIFFTAG_YCBCRSUBSAMPLING 530 /* !YCbCr subsampling factors */ -#define TIFFTAG_YCBCRPOSITIONING 531 /* !subsample positioning */ -#define YCBCRPOSITION_CENTERED 1 /* !as in PostScript Level 2 */ -#define YCBCRPOSITION_COSITED 2 /* !as in CCIR 601-1 */ -#define TIFFTAG_REFERENCEBLACKWHITE 532 /* !colorimetry info */ -#define TIFFTAG_STRIPROWCOUNTS 559 /* !TIFF/FX strip row counts */ -#define TIFFTAG_XMLPACKET 700 /* %XML packet - [Adobe XMP Specification, - January 2004 */ -#define TIFFTAG_OPIIMAGEID 32781 /* %OPI ImageID - [Adobe TIFF technote] */ -/* tags 32952-32956 are private tags registered to Island Graphics */ -#define TIFFTAG_REFPTS 32953 /* image reference points */ -#define TIFFTAG_REGIONTACKPOINT 32954 /* region-xform tack point */ -#define TIFFTAG_REGIONWARPCORNERS 32955 /* warp quadrilateral */ -#define TIFFTAG_REGIONAFFINE 32956 /* affine transformation mat */ -/* tags 32995-32999 are private tags registered to SGI */ -#define TIFFTAG_MATTEING 32995 /* $use ExtraSamples */ -#define TIFFTAG_DATATYPE 32996 /* $use SampleFormat */ -#define TIFFTAG_IMAGEDEPTH 32997 /* z depth of image */ -#define TIFFTAG_TILEDEPTH 32998 /* z depth/data tile */ -/* tags 33300-33309 are private tags registered to Pixar */ -/* - * TIFFTAG_PIXAR_IMAGEFULLWIDTH and TIFFTAG_PIXAR_IMAGEFULLLENGTH - * are set when an image has been cropped out of a larger image. - * They reflect the size of the original uncropped image. - * The TIFFTAG_XPOSITION and TIFFTAG_YPOSITION can be used - * to determine the position of the smaller image in the larger one. - */ -#define TIFFTAG_PIXAR_IMAGEFULLWIDTH 33300 /* full image size in x */ -#define TIFFTAG_PIXAR_IMAGEFULLLENGTH 33301 /* full image size in y */ - /* Tags 33302-33306 are used to identify special image modes and data - * used by Pixar's texture formats. - */ -#define TIFFTAG_PIXAR_TEXTUREFORMAT 33302 /* texture map format */ -#define TIFFTAG_PIXAR_WRAPMODES 33303 /* s & t wrap modes */ -#define TIFFTAG_PIXAR_FOVCOT 33304 /* cotan(fov) for env. maps */ -#define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 33305 -#define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 33306 -/* tag 33405 is a private tag registered to Eastman Kodak */ -#define TIFFTAG_WRITERSERIALNUMBER 33405 /* device serial number */ -/* tag 33432 is listed in the 6.0 spec w/ unknown ownership */ -#define TIFFTAG_COPYRIGHT 33432 /* copyright string */ -/* IPTC TAG from RichTIFF specifications */ -#define TIFFTAG_RICHTIFFIPTC 33723 -/* 34016-34029 are reserved for ANSI IT8 TIFF/IT */ -#define TIFFTAG_STONITS 37439 /* Sample value to Nits */ -/* tag 34929 is a private tag registered to FedEx */ -#define TIFFTAG_FEDEX_EDR 34929 /* unknown use */ -#define TIFFTAG_INTEROPERABILITYIFD 40965 /* Pointer to Interoperability private directory */ -/* Adobe Digital Negative (DNG) format tags */ -#define TIFFTAG_DNGVERSION 50706 /* &DNG version number */ -#define TIFFTAG_DNGBACKWARDVERSION 50707 /* &DNG compatibility version */ -#define TIFFTAG_UNIQUECAMERAMODEL 50708 /* &name for the camera model */ -#define TIFFTAG_LOCALIZEDCAMERAMODEL 50709 /* &localized camera model - name */ -#define TIFFTAG_CFAPLANECOLOR 50710 /* &CFAPattern->LinearRaw space - mapping */ -#define TIFFTAG_CFALAYOUT 50711 /* &spatial layout of the CFA */ -#define TIFFTAG_LINEARIZATIONTABLE 50712 /* &lookup table description */ -#define TIFFTAG_BLACKLEVELREPEATDIM 50713 /* &repeat pattern size for - the BlackLevel tag */ -#define TIFFTAG_BLACKLEVEL 50714 /* &zero light encoding level */ -#define TIFFTAG_BLACKLEVELDELTAH 50715 /* &zero light encoding level - differences (columns) */ -#define TIFFTAG_BLACKLEVELDELTAV 50716 /* &zero light encoding level - differences (rows) */ -#define TIFFTAG_WHITELEVEL 50717 /* &fully saturated encoding - level */ -#define TIFFTAG_DEFAULTSCALE 50718 /* &default scale factors */ -#define TIFFTAG_DEFAULTCROPORIGIN 50719 /* &origin of the final image - area */ -#define TIFFTAG_DEFAULTCROPSIZE 50720 /* &size of the final image - area */ -#define TIFFTAG_COLORMATRIX1 50721 /* &XYZ->reference color space - transformation matrix 1 */ -#define TIFFTAG_COLORMATRIX2 50722 /* &XYZ->reference color space - transformation matrix 2 */ -#define TIFFTAG_CAMERACALIBRATION1 50723 /* &calibration matrix 1 */ -#define TIFFTAG_CAMERACALIBRATION2 50724 /* &calibration matrix 2 */ -#define TIFFTAG_REDUCTIONMATRIX1 50725 /* &dimensionality reduction - matrix 1 */ -#define TIFFTAG_REDUCTIONMATRIX2 50726 /* &dimensionality reduction - matrix 2 */ -#define TIFFTAG_ANALOGBALANCE 50727 /* &gain applied the stored raw - values*/ -#define TIFFTAG_ASSHOTNEUTRAL 50728 /* &selected white balance in - linear reference space */ -#define TIFFTAG_ASSHOTWHITEXY 50729 /* &selected white balance in - x-y chromaticity - coordinates */ -#define TIFFTAG_BASELINEEXPOSURE 50730 /* &how much to move the zero - point */ -#define TIFFTAG_BASELINENOISE 50731 /* &relative noise level */ -#define TIFFTAG_BASELINESHARPNESS 50732 /* &relative amount of - sharpening */ -#define TIFFTAG_BAYERGREENSPLIT 50733 /* &how closely the values of - the green pixels in the - blue/green rows track the - values of the green pixels - in the red/green rows */ -#define TIFFTAG_LINEARRESPONSELIMIT 50734 /* &non-linear encoding range */ -#define TIFFTAG_CAMERASERIALNUMBER 50735 /* &camera's serial number */ -#define TIFFTAG_LENSINFO 50736 /* info about the lens */ -#define TIFFTAG_CHROMABLURRADIUS 50737 /* &chroma blur radius */ -#define TIFFTAG_ANTIALIASSTRENGTH 50738 /* &relative strength of the - camera's anti-alias filter */ -#define TIFFTAG_SHADOWSCALE 50739 /* &used by Adobe Camera Raw */ -#define TIFFTAG_DNGPRIVATEDATA 50740 /* &manufacturer's private data */ -#define TIFFTAG_MAKERNOTESAFETY 50741 /* &whether the EXIF MakerNote - tag is safe to preserve - along with the rest of the - EXIF data */ -#define TIFFTAG_CALIBRATIONILLUMINANT1 50778 /* &illuminant 1 */ -#define TIFFTAG_CALIBRATIONILLUMINANT2 50779 /* &illuminant 2 */ -#define TIFFTAG_BESTQUALITYSCALE 50780 /* &best quality multiplier */ -#define TIFFTAG_RAWDATAUNIQUEID 50781 /* &unique identifier for - the raw image data */ -#define TIFFTAG_ORIGINALRAWFILENAME 50827 /* &file name of the original - raw file */ -#define TIFFTAG_ORIGINALRAWFILEDATA 50828 /* &contents of the original - raw file */ -#define TIFFTAG_ACTIVEAREA 50829 /* &active (non-masked) pixels - of the sensor */ -#define TIFFTAG_MASKEDAREAS 50830 /* &list of coordinates - of fully masked pixels */ -#define TIFFTAG_ASSHOTICCPROFILE 50831 /* &these two tags used to */ -#define TIFFTAG_ASSHOTPREPROFILEMATRIX 50832 /* map cameras's color space - into ICC profile space */ -#define TIFFTAG_CURRENTICCPROFILE 50833 /* & */ -#define TIFFTAG_CURRENTPREPROFILEMATRIX 50834 /* & */ -/* tag 65535 is an undefined tag used by Eastman Kodak */ -#define TIFFTAG_DCSHUESHIFTVALUES 65535 /* hue shift correction data */ - -/* - * The following are ``pseudo tags'' that can be used to control - * codec-specific functionality. These tags are not written to file. - * Note that these values start at 0xffff+1 so that they'll never - * collide with Aldus-assigned tags. - * - * If you want your private pseudo tags ``registered'' (i.e. added to - * this file), please post a bug report via the tracking system at - * http://www.remotesensing.org/libtiff/bugs.html with the appropriate - * C definitions to add. - */ -#define TIFFTAG_FAXMODE 65536 /* Group 3/4 format control */ -#define FAXMODE_CLASSIC 0x0000 /* default, include RTC */ -#define FAXMODE_NORTC 0x0001 /* no RTC at end of data */ -#define FAXMODE_NOEOL 0x0002 /* no EOL code at end of row */ -#define FAXMODE_BYTEALIGN 0x0004 /* byte align row */ -#define FAXMODE_WORDALIGN 0x0008 /* word align row */ -#define FAXMODE_CLASSF FAXMODE_NORTC /* TIFF Class F */ -#define TIFFTAG_JPEGQUALITY 65537 /* Compression quality level */ -/* Note: quality level is on the IJG 0-100 scale. Default value is 75 */ -#define TIFFTAG_JPEGCOLORMODE 65538 /* Auto RGB<=>YCbCr convert? */ -#define JPEGCOLORMODE_RAW 0x0000 /* no conversion (default) */ -#define JPEGCOLORMODE_RGB 0x0001 /* do auto conversion */ -#define TIFFTAG_JPEGTABLESMODE 65539 /* What to put in JPEGTables */ -#define JPEGTABLESMODE_QUANT 0x0001 /* include quantization tbls */ -#define JPEGTABLESMODE_HUFF 0x0002 /* include Huffman tbls */ -/* Note: default is JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF */ -#define TIFFTAG_FAXFILLFUNC 65540 /* G3/G4 fill function */ -#define TIFFTAG_PIXARLOGDATAFMT 65549 /* PixarLogCodec I/O data sz */ -#define PIXARLOGDATAFMT_8BIT 0 /* regular u_char samples */ -#define PIXARLOGDATAFMT_8BITABGR 1 /* ABGR-order u_chars */ -#define PIXARLOGDATAFMT_11BITLOG 2 /* 11-bit log-encoded (raw) */ -#define PIXARLOGDATAFMT_12BITPICIO 3 /* as per PICIO (1.0==2048) */ -#define PIXARLOGDATAFMT_16BIT 4 /* signed short samples */ -#define PIXARLOGDATAFMT_FLOAT 5 /* IEEE float samples */ -/* 65550-65556 are allocated to Oceana Matrix */ -#define TIFFTAG_DCSIMAGERTYPE 65550 /* imager model & filter */ -#define DCSIMAGERMODEL_M3 0 /* M3 chip (1280 x 1024) */ -#define DCSIMAGERMODEL_M5 1 /* M5 chip (1536 x 1024) */ -#define DCSIMAGERMODEL_M6 2 /* M6 chip (3072 x 2048) */ -#define DCSIMAGERFILTER_IR 0 /* infrared filter */ -#define DCSIMAGERFILTER_MONO 1 /* monochrome filter */ -#define DCSIMAGERFILTER_CFA 2 /* color filter array */ -#define DCSIMAGERFILTER_OTHER 3 /* other filter */ -#define TIFFTAG_DCSINTERPMODE 65551 /* interpolation mode */ -#define DCSINTERPMODE_NORMAL 0x0 /* whole image, default */ -#define DCSINTERPMODE_PREVIEW 0x1 /* preview of image (384x256) */ -#define TIFFTAG_DCSBALANCEARRAY 65552 /* color balance values */ -#define TIFFTAG_DCSCORRECTMATRIX 65553 /* color correction values */ -#define TIFFTAG_DCSGAMMA 65554 /* gamma value */ -#define TIFFTAG_DCSTOESHOULDERPTS 65555 /* toe & shoulder points */ -#define TIFFTAG_DCSCALIBRATIONFD 65556 /* calibration file desc */ -/* Note: quality level is on the ZLIB 1-9 scale. Default value is -1 */ -#define TIFFTAG_ZIPQUALITY 65557 /* compression quality level */ -#define TIFFTAG_PIXARLOGQUALITY 65558 /* PixarLog uses same scale */ -/* 65559 is allocated to Oceana Matrix */ -#define TIFFTAG_DCSCLIPRECTANGLE 65559 /* area of image to acquire */ -#define TIFFTAG_SGILOGDATAFMT 65560 /* SGILog user data format */ -#define SGILOGDATAFMT_FLOAT 0 /* IEEE float samples */ -#define SGILOGDATAFMT_16BIT 1 /* 16-bit samples */ -#define SGILOGDATAFMT_RAW 2 /* uninterpreted data */ -#define SGILOGDATAFMT_8BIT 3 /* 8-bit RGB monitor values */ -#define TIFFTAG_SGILOGENCODE 65561 /* SGILog data encoding control*/ -#define SGILOGENCODE_NODITHER 0 /* do not dither encoded values*/ -#define SGILOGENCODE_RANDITHER 1 /* randomly dither encd values */ -#define TIFFTAG_LZMAPRESET 65562 /* LZMA2 preset (compression level) */ -#define TIFFTAG_PERSAMPLE 65563 /* interface for per sample tags */ -#define PERSAMPLE_MERGED 0 /* present as a single value */ -#define PERSAMPLE_MULTI 1 /* present as multiple values */ - -/* - * EXIF tags - */ -#define EXIFTAG_EXPOSURETIME 33434 /* Exposure time */ -#define EXIFTAG_FNUMBER 33437 /* F number */ -#define EXIFTAG_EXPOSUREPROGRAM 34850 /* Exposure program */ -#define EXIFTAG_SPECTRALSENSITIVITY 34852 /* Spectral sensitivity */ -#define EXIFTAG_ISOSPEEDRATINGS 34855 /* ISO speed rating */ -#define EXIFTAG_OECF 34856 /* Optoelectric conversion - factor */ -#define EXIFTAG_EXIFVERSION 36864 /* Exif version */ -#define EXIFTAG_DATETIMEORIGINAL 36867 /* Date and time of original - data generation */ -#define EXIFTAG_DATETIMEDIGITIZED 36868 /* Date and time of digital - data generation */ -#define EXIFTAG_COMPONENTSCONFIGURATION 37121 /* Meaning of each component */ -#define EXIFTAG_COMPRESSEDBITSPERPIXEL 37122 /* Image compression mode */ -#define EXIFTAG_SHUTTERSPEEDVALUE 37377 /* Shutter speed */ -#define EXIFTAG_APERTUREVALUE 37378 /* Aperture */ -#define EXIFTAG_BRIGHTNESSVALUE 37379 /* Brightness */ -#define EXIFTAG_EXPOSUREBIASVALUE 37380 /* Exposure bias */ -#define EXIFTAG_MAXAPERTUREVALUE 37381 /* Maximum lens aperture */ -#define EXIFTAG_SUBJECTDISTANCE 37382 /* Subject distance */ -#define EXIFTAG_METERINGMODE 37383 /* Metering mode */ -#define EXIFTAG_LIGHTSOURCE 37384 /* Light source */ -#define EXIFTAG_FLASH 37385 /* Flash */ -#define EXIFTAG_FOCALLENGTH 37386 /* Lens focal length */ -#define EXIFTAG_SUBJECTAREA 37396 /* Subject area */ -#define EXIFTAG_MAKERNOTE 37500 /* Manufacturer notes */ -#define EXIFTAG_USERCOMMENT 37510 /* User comments */ -#define EXIFTAG_SUBSECTIME 37520 /* DateTime subseconds */ -#define EXIFTAG_SUBSECTIMEORIGINAL 37521 /* DateTimeOriginal subseconds */ -#define EXIFTAG_SUBSECTIMEDIGITIZED 37522 /* DateTimeDigitized subseconds */ -#define EXIFTAG_FLASHPIXVERSION 40960 /* Supported Flashpix version */ -#define EXIFTAG_COLORSPACE 40961 /* Color space information */ -#define EXIFTAG_PIXELXDIMENSION 40962 /* Valid image width */ -#define EXIFTAG_PIXELYDIMENSION 40963 /* Valid image height */ -#define EXIFTAG_RELATEDSOUNDFILE 40964 /* Related audio file */ -#define EXIFTAG_FLASHENERGY 41483 /* Flash energy */ -#define EXIFTAG_SPATIALFREQUENCYRESPONSE 41484 /* Spatial frequency response */ -#define EXIFTAG_FOCALPLANEXRESOLUTION 41486 /* Focal plane X resolution */ -#define EXIFTAG_FOCALPLANEYRESOLUTION 41487 /* Focal plane Y resolution */ -#define EXIFTAG_FOCALPLANERESOLUTIONUNIT 41488 /* Focal plane resolution unit */ -#define EXIFTAG_SUBJECTLOCATION 41492 /* Subject location */ -#define EXIFTAG_EXPOSUREINDEX 41493 /* Exposure index */ -#define EXIFTAG_SENSINGMETHOD 41495 /* Sensing method */ -#define EXIFTAG_FILESOURCE 41728 /* File source */ -#define EXIFTAG_SCENETYPE 41729 /* Scene type */ -#define EXIFTAG_CFAPATTERN 41730 /* CFA pattern */ -#define EXIFTAG_CUSTOMRENDERED 41985 /* Custom image processing */ -#define EXIFTAG_EXPOSUREMODE 41986 /* Exposure mode */ -#define EXIFTAG_WHITEBALANCE 41987 /* White balance */ -#define EXIFTAG_DIGITALZOOMRATIO 41988 /* Digital zoom ratio */ -#define EXIFTAG_FOCALLENGTHIN35MMFILM 41989 /* Focal length in 35 mm film */ -#define EXIFTAG_SCENECAPTURETYPE 41990 /* Scene capture type */ -#define EXIFTAG_GAINCONTROL 41991 /* Gain control */ -#define EXIFTAG_CONTRAST 41992 /* Contrast */ -#define EXIFTAG_SATURATION 41993 /* Saturation */ -#define EXIFTAG_SHARPNESS 41994 /* Sharpness */ -#define EXIFTAG_DEVICESETTINGDESCRIPTION 41995 /* Device settings description */ -#define EXIFTAG_SUBJECTDISTANCERANGE 41996 /* Subject distance range */ -#define EXIFTAG_GAINCONTROL 41991 /* Gain control */ -#define EXIFTAG_GAINCONTROL 41991 /* Gain control */ -#define EXIFTAG_IMAGEUNIQUEID 42016 /* Unique image ID */ - -#endif /* _TIFF_ */ - -/* vim: set ts=8 sts=8 sw=8 noet: */ -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffconf.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffconf.h deleted file mode 100644 index 4c48378446..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffconf.h +++ /dev/null @@ -1,128 +0,0 @@ -/* libtiff/tiffconf.h. Generated from tiffconf.h.in by configure. */ -/* - Configuration defines for installed libtiff. - This file maintained for backward compatibility. Do not use definitions - from this file in your programs. -*/ - -#ifndef _TIFFCONF_ -#define _TIFFCONF_ - -/* Signed 16-bit type */ -#define TIFF_INT16_T signed short - -/* Signed 32-bit type */ -#define TIFF_INT32_T signed int - -/* Signed 64-bit type */ -#define TIFF_INT64_T signed long long - -/* Signed 8-bit type */ -#define TIFF_INT8_T signed char - -/* Unsigned 16-bit type */ -#define TIFF_UINT16_T unsigned short - -/* Unsigned 32-bit type */ -#define TIFF_UINT32_T unsigned int - -/* Unsigned 64-bit type */ -#define TIFF_UINT64_T unsigned long long - -/* Unsigned 8-bit type */ -#define TIFF_UINT8_T unsigned char - -/* Signed size type */ -#define TIFF_SSIZE_T signed long - -/* Pointer difference type */ -#define TIFF_PTRDIFF_T ptrdiff_t - -/* Define to 1 if the system has the type `int16'. */ -/* #undef HAVE_INT16 */ - -/* Define to 1 if the system has the type `int32'. */ -/* #undef HAVE_INT32 */ - -/* Define to 1 if the system has the type `int8'. */ -/* #undef HAVE_INT8 */ - -/* Compatibility stuff. */ - -/* Define as 0 or 1 according to the floating point format suported by the - machine */ -#define HAVE_IEEEFP 1 - -/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ -#define HOST_FILLORDER FILLORDER_LSB2MSB - -/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian - (Intel) */ -#define HOST_BIGENDIAN 0 - -/* Support CCITT Group 3 & 4 algorithms */ -#define CCITT_SUPPORT 1 - -/* Support JPEG compression (requires IJG JPEG library) */ -/* #undef JPEG_SUPPORT */ - -/* Support JBIG compression (requires JBIG-KIT library) */ -/* #undef JBIG_SUPPORT */ - -/* Support LogLuv high dynamic range encoding */ -#define LOGLUV_SUPPORT 1 - -/* Support LZW algorithm */ -#define LZW_SUPPORT 1 - -/* Support NeXT 2-bit RLE algorithm */ -#define NEXT_SUPPORT 1 - -/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation - fails with unpatched IJG JPEG library) */ -/* #undef OJPEG_SUPPORT */ - -/* Support Macintosh PackBits algorithm */ -#define PACKBITS_SUPPORT 1 - -/* Support Pixar log-format algorithm (requires Zlib) */ -#define PIXARLOG_SUPPORT 1 - -/* Support ThunderScan 4-bit RLE algorithm */ -#define THUNDER_SUPPORT 1 - -/* Support Deflate compression */ -#define ZIP_SUPPORT 1 - -/* Support strip chopping (whether or not to convert single-strip uncompressed - images to mutiple strips of ~8Kb to reduce memory usage) */ -#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP - -/* Enable SubIFD tag (330) support */ -#define SUBIFD_SUPPORT 1 - -/* Treat extra sample as alpha (default enabled). The RGBA interface will - treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many - packages produce RGBA files but don't mark the alpha properly. */ -#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 - -/* Pick up YCbCr subsampling info from the JPEG data stream to support files - lacking the tag (default enabled). */ -#define CHECK_JPEG_YCBCR_SUBSAMPLING 1 - -/* Support MS MDI magic number files as TIFF */ -#define MDI_SUPPORT 1 - -/* - * Feature support definitions. - * XXX: These macros are obsoleted. Don't use them in your apps! - * Macros stays here for backward compatibility and should be always defined. - */ -#define COLORIMETRY_SUPPORT -#define YCBCR_SUPPORT -#define CMYK_SUPPORT -#define ICC_SUPPORT -#define PHOTOSHOP_SUPPORT -#define IPTC_SUPPORT - -#endif /* _TIFFCONF_ */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffio.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffio.h deleted file mode 100644 index 038b67013f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffio.h +++ /dev/null @@ -1,557 +0,0 @@ -/* $Id: tiffio.h,v 1.91 2012-07-29 15:45:29 tgl Exp $ */ - -/* - * Copyright (c) 1988-1997 Sam Leffler - * Copyright (c) 1991-1997 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the names of - * Sam Leffler and Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Sam Leffler and Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#ifndef _TIFFIO_ -#define _TIFFIO_ - -/* - * TIFF I/O Library Definitions. - */ -#include "tiff.h" -#include "tiffvers.h" - -/* - * TIFF is defined as an incomplete type to hide the - * library's internal data structures from clients. - */ -typedef struct tiff TIFF; - -/* - * The following typedefs define the intrinsic size of - * data types used in the *exported* interfaces. These - * definitions depend on the proper definition of types - * in tiff.h. Note also that the varargs interface used - * to pass tag types and values uses the types defined in - * tiff.h directly. - * - * NB: ttag_t is unsigned int and not unsigned short because - * ANSI C requires that the type before the ellipsis be a - * promoted type (i.e. one of int, unsigned int, pointer, - * or double) and because we defined pseudo-tags that are - * outside the range of legal Aldus-assigned tags. - * NB: tsize_t is int32 and not uint32 because some functions - * return -1. - * NB: toff_t is not off_t for many reasons; TIFFs max out at - * 32-bit file offsets, and BigTIFF maxes out at 64-bit - * offsets being the most important, and to ensure use of - * a consistently unsigned type across architectures. - * Prior to libtiff 4.0, this was an unsigned 32 bit type. - */ -/* - * this is the machine addressing size type, only it's signed, so make it - * int32 on 32bit machines, int64 on 64bit machines - */ -typedef TIFF_SSIZE_T tmsize_t; -typedef uint64 toff_t; /* file offset */ -/* the following are deprecated and should be replaced by their defining - counterparts */ -typedef uint32 ttag_t; /* directory tag */ -typedef uint16 tdir_t; /* directory index */ -typedef uint16 tsample_t; /* sample number */ -typedef uint32 tstrile_t; /* strip or tile number */ -typedef tstrile_t tstrip_t; /* strip number */ -typedef tstrile_t ttile_t; /* tile number */ -typedef tmsize_t tsize_t; /* i/o size in bytes */ -typedef void* tdata_t; /* image data ref */ - -#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32)) -#define __WIN32__ -#endif - -/* - * On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c - * or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c). - * - * By default tif_unix.c is assumed. - */ - -#if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) -# if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO) -# define AVOID_WIN32_FILEIO -# endif -#endif - -#if defined(USE_WIN32_FILEIO) -# define VC_EXTRALEAN -# include -# ifdef __WIN32__ -DECLARE_HANDLE(thandle_t); /* Win32 file handle */ -# else -typedef HFILE thandle_t; /* client data handle */ -# endif /* __WIN32__ */ -#else -typedef void* thandle_t; /* client data handle */ -#endif /* USE_WIN32_FILEIO */ - -/* - * Flags to pass to TIFFPrintDirectory to control - * printing of data structures that are potentially - * very large. Bit-or these flags to enable printing - * multiple items. - */ -#define TIFFPRINT_NONE 0x0 /* no extra info */ -#define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */ -#define TIFFPRINT_CURVES 0x2 /* color/gray response curves */ -#define TIFFPRINT_COLORMAP 0x4 /* colormap */ -#define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */ -#define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */ -#define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */ - -/* - * Colour conversion stuff - */ - -/* reference white */ -#define D65_X0 (95.0470F) -#define D65_Y0 (100.0F) -#define D65_Z0 (108.8827F) - -#define D50_X0 (96.4250F) -#define D50_Y0 (100.0F) -#define D50_Z0 (82.4680F) - -/* Structure for holding information about a display device. */ - -typedef unsigned char TIFFRGBValue; /* 8-bit samples */ - -typedef struct { - float d_mat[3][3]; /* XYZ -> luminance matrix */ - float d_YCR; /* Light o/p for reference white */ - float d_YCG; - float d_YCB; - uint32 d_Vrwr; /* Pixel values for ref. white */ - uint32 d_Vrwg; - uint32 d_Vrwb; - float d_Y0R; /* Residual light for black pixel */ - float d_Y0G; - float d_Y0B; - float d_gammaR; /* Gamma values for the three guns */ - float d_gammaG; - float d_gammaB; -} TIFFDisplay; - -typedef struct { /* YCbCr->RGB support */ - TIFFRGBValue* clamptab; /* range clamping table */ - int* Cr_r_tab; - int* Cb_b_tab; - int32* Cr_g_tab; - int32* Cb_g_tab; - int32* Y_tab; -} TIFFYCbCrToRGB; - -typedef struct { /* CIE Lab 1976->RGB support */ - int range; /* Size of conversion table */ -#define CIELABTORGB_TABLE_RANGE 1500 - float rstep, gstep, bstep; - float X0, Y0, Z0; /* Reference white point */ - TIFFDisplay display; - float Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr to r */ - float Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg to g */ - float Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb to b */ -} TIFFCIELabToRGB; - -/* - * RGBA-style image support. - */ -typedef struct _TIFFRGBAImage TIFFRGBAImage; -/* - * The image reading and conversion routines invoke - * ``put routines'' to copy/image/whatever tiles of - * raw image data. A default set of routines are - * provided to convert/copy raw image data to 8-bit - * packed ABGR format rasters. Applications can supply - * alternate routines that unpack the data into a - * different format or, for example, unpack the data - * and draw the unpacked raster on the display. - */ -typedef void (*tileContigRoutine) - (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32, - unsigned char*); -typedef void (*tileSeparateRoutine) - (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32, - unsigned char*, unsigned char*, unsigned char*, unsigned char*); -/* - * RGBA-reader state. - */ -struct _TIFFRGBAImage { - TIFF* tif; /* image handle */ - int stoponerr; /* stop on read error */ - int isContig; /* data is packed/separate */ - int alpha; /* type of alpha data present */ - uint32 width; /* image width */ - uint32 height; /* image height */ - uint16 bitspersample; /* image bits/sample */ - uint16 samplesperpixel; /* image samples/pixel */ - uint16 orientation; /* image orientation */ - uint16 req_orientation; /* requested orientation */ - uint16 photometric; /* image photometric interp */ - uint16* redcmap; /* colormap pallete */ - uint16* greencmap; - uint16* bluecmap; - /* get image data routine */ - int (*get)(TIFFRGBAImage*, uint32*, uint32, uint32); - /* put decoded strip/tile */ - union { - void (*any)(TIFFRGBAImage*); - tileContigRoutine contig; - tileSeparateRoutine separate; - } put; - TIFFRGBValue* Map; /* sample mapping array */ - uint32** BWmap; /* black&white map */ - uint32** PALmap; /* palette image map */ - TIFFYCbCrToRGB* ycbcr; /* YCbCr conversion state */ - TIFFCIELabToRGB* cielab; /* CIE L*a*b conversion state */ - - uint8* UaToAa; /* Unassociated alpha to associated alpha convertion LUT */ - uint8* Bitdepth16To8; /* LUT for conversion from 16bit to 8bit values */ - - int row_offset; - int col_offset; -}; - -/* - * Macros for extracting components from the - * packed ABGR form returned by TIFFReadRGBAImage. - */ -#define TIFFGetR(abgr) ((abgr) & 0xff) -#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff) -#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff) -#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff) - -/* - * A CODEC is a software package that implements decoding, - * encoding, or decoding+encoding of a compression algorithm. - * The library provides a collection of builtin codecs. - * More codecs may be registered through calls to the library - * and/or the builtin implementations may be overridden. - */ -typedef int (*TIFFInitMethod)(TIFF*, int); -typedef struct { - char* name; - uint16 scheme; - TIFFInitMethod init; -} TIFFCodec; - -#include -#include - -/* share internal LogLuv conversion routines? */ -#ifndef LOGLUV_PUBLIC -#define LOGLUV_PUBLIC 1 -#endif - -#if !defined(__GNUC__) && !defined(__attribute__) -# define __attribute__(x) /*nothing*/ -#endif - -#if defined(c_plusplus) || defined(__cplusplus) -extern "C" { -#endif -typedef void (*TIFFErrorHandler)(const char*, const char*, va_list); -typedef void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list); -typedef tmsize_t (*TIFFReadWriteProc)(thandle_t, void*, tmsize_t); -typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int); -typedef int (*TIFFCloseProc)(thandle_t); -typedef toff_t (*TIFFSizeProc)(thandle_t); -typedef int (*TIFFMapFileProc)(thandle_t, void** base, toff_t* size); -typedef void (*TIFFUnmapFileProc)(thandle_t, void* base, toff_t size); -typedef void (*TIFFExtendProc)(TIFF*); - -extern const char* TIFFGetVersion(void); - -extern const TIFFCodec* TIFFFindCODEC(uint16); -extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod); -extern void TIFFUnRegisterCODEC(TIFFCodec*); -extern int TIFFIsCODECConfigured(uint16); -extern TIFFCodec* TIFFGetConfiguredCODECs(void); - -/* - * Auxiliary functions. - */ - -extern void* _TIFFmalloc(tmsize_t s); -extern void* _TIFFrealloc(void* p, tmsize_t s); -extern void _TIFFmemset(void* p, int v, tmsize_t c); -extern void _TIFFmemcpy(void* d, const void* s, tmsize_t c); -extern int _TIFFmemcmp(const void* p1, const void* p2, tmsize_t c); -extern void _TIFFfree(void* p); - -/* -** Stuff, related to tag handling and creating custom tags. -*/ -extern int TIFFGetTagListCount( TIFF * ); -extern uint32 TIFFGetTagListEntry( TIFF *, int tag_index ); - -#define TIFF_ANY TIFF_NOTYPE /* for field descriptor searching */ -#define TIFF_VARIABLE -1 /* marker for variable length tags */ -#define TIFF_SPP -2 /* marker for SamplesPerPixel tags */ -#define TIFF_VARIABLE2 -3 /* marker for uint32 var-length tags */ - -#define FIELD_CUSTOM 65 - -typedef struct _TIFFField TIFFField; -typedef struct _TIFFFieldArray TIFFFieldArray; - -extern const TIFFField* TIFFFindField(TIFF *, uint32, TIFFDataType); -extern const TIFFField* TIFFFieldWithTag(TIFF*, uint32); -extern const TIFFField* TIFFFieldWithName(TIFF*, const char *); - -extern uint32 TIFFFieldTag(const TIFFField*); -extern const char* TIFFFieldName(const TIFFField*); -extern TIFFDataType TIFFFieldDataType(const TIFFField*); -extern int TIFFFieldPassCount(const TIFFField*); -extern int TIFFFieldReadCount(const TIFFField*); -extern int TIFFFieldWriteCount(const TIFFField*); - -typedef int (*TIFFVSetMethod)(TIFF*, uint32, va_list); -typedef int (*TIFFVGetMethod)(TIFF*, uint32, va_list); -typedef void (*TIFFPrintMethod)(TIFF*, FILE*, long); - -typedef struct { - TIFFVSetMethod vsetfield; /* tag set routine */ - TIFFVGetMethod vgetfield; /* tag get routine */ - TIFFPrintMethod printdir; /* directory print routine */ -} TIFFTagMethods; - -extern TIFFTagMethods *TIFFAccessTagMethods(TIFF *); -extern void *TIFFGetClientInfo(TIFF *, const char *); -extern void TIFFSetClientInfo(TIFF *, void *, const char *); - -extern void TIFFCleanup(TIFF* tif); -extern void TIFFClose(TIFF* tif); -extern int TIFFFlush(TIFF* tif); -extern int TIFFFlushData(TIFF* tif); -extern int TIFFGetField(TIFF* tif, uint32 tag, ...); -extern int TIFFVGetField(TIFF* tif, uint32 tag, va_list ap); -extern int TIFFGetFieldDefaulted(TIFF* tif, uint32 tag, ...); -extern int TIFFVGetFieldDefaulted(TIFF* tif, uint32 tag, va_list ap); -extern int TIFFReadDirectory(TIFF* tif); -extern int TIFFReadCustomDirectory(TIFF* tif, toff_t diroff, const TIFFFieldArray* infoarray); -extern int TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff); -extern uint64 TIFFScanlineSize64(TIFF* tif); -extern tmsize_t TIFFScanlineSize(TIFF* tif); -extern uint64 TIFFRasterScanlineSize64(TIFF* tif); -extern tmsize_t TIFFRasterScanlineSize(TIFF* tif); -extern uint64 TIFFStripSize64(TIFF* tif); -extern tmsize_t TIFFStripSize(TIFF* tif); -extern uint64 TIFFRawStripSize64(TIFF* tif, uint32 strip); -extern tmsize_t TIFFRawStripSize(TIFF* tif, uint32 strip); -extern uint64 TIFFVStripSize64(TIFF* tif, uint32 nrows); -extern tmsize_t TIFFVStripSize(TIFF* tif, uint32 nrows); -extern uint64 TIFFTileRowSize64(TIFF* tif); -extern tmsize_t TIFFTileRowSize(TIFF* tif); -extern uint64 TIFFTileSize64(TIFF* tif); -extern tmsize_t TIFFTileSize(TIFF* tif); -extern uint64 TIFFVTileSize64(TIFF* tif, uint32 nrows); -extern tmsize_t TIFFVTileSize(TIFF* tif, uint32 nrows); -extern uint32 TIFFDefaultStripSize(TIFF* tif, uint32 request); -extern void TIFFDefaultTileSize(TIFF*, uint32*, uint32*); -extern int TIFFFileno(TIFF*); -extern int TIFFSetFileno(TIFF*, int); -extern thandle_t TIFFClientdata(TIFF*); -extern thandle_t TIFFSetClientdata(TIFF*, thandle_t); -extern int TIFFGetMode(TIFF*); -extern int TIFFSetMode(TIFF*, int); -extern int TIFFIsTiled(TIFF*); -extern int TIFFIsByteSwapped(TIFF*); -extern int TIFFIsUpSampled(TIFF*); -extern int TIFFIsMSB2LSB(TIFF*); -extern int TIFFIsBigEndian(TIFF*); -extern TIFFReadWriteProc TIFFGetReadProc(TIFF*); -extern TIFFReadWriteProc TIFFGetWriteProc(TIFF*); -extern TIFFSeekProc TIFFGetSeekProc(TIFF*); -extern TIFFCloseProc TIFFGetCloseProc(TIFF*); -extern TIFFSizeProc TIFFGetSizeProc(TIFF*); -extern TIFFMapFileProc TIFFGetMapFileProc(TIFF*); -extern TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*); -extern uint32 TIFFCurrentRow(TIFF*); -extern uint16 TIFFCurrentDirectory(TIFF*); -extern uint16 TIFFNumberOfDirectories(TIFF*); -extern uint64 TIFFCurrentDirOffset(TIFF*); -extern uint32 TIFFCurrentStrip(TIFF*); -extern uint32 TIFFCurrentTile(TIFF* tif); -extern int TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size); -extern int TIFFWriteBufferSetup(TIFF* tif, void* bp, tmsize_t size); -extern int TIFFSetupStrips(TIFF *); -extern int TIFFWriteCheck(TIFF*, int, const char *); -extern void TIFFFreeDirectory(TIFF*); -extern int TIFFCreateDirectory(TIFF*); -extern int TIFFCreateCustomDirectory(TIFF*,const TIFFFieldArray*); -extern int TIFFCreateEXIFDirectory(TIFF*); -extern int TIFFLastDirectory(TIFF*); -extern int TIFFSetDirectory(TIFF*, uint16); -extern int TIFFSetSubDirectory(TIFF*, uint64); -extern int TIFFUnlinkDirectory(TIFF*, uint16); -extern int TIFFSetField(TIFF*, uint32, ...); -extern int TIFFVSetField(TIFF*, uint32, va_list); -extern int TIFFUnsetField(TIFF*, uint32); -extern int TIFFWriteDirectory(TIFF *); -extern int TIFFWriteCustomDirectory(TIFF *, uint64 *); -extern int TIFFCheckpointDirectory(TIFF *); -extern int TIFFRewriteDirectory(TIFF *); - -#if defined(c_plusplus) || defined(__cplusplus) -extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0); -extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0); -extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0); -extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0); -extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, - int = ORIENTATION_BOTLEFT, int = 0); -#else -extern void TIFFPrintDirectory(TIFF*, FILE*, long); -extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample); -extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample); -extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int); -extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int); -#endif - -extern int TIFFReadRGBAStrip(TIFF*, uint32, uint32 * ); -extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * ); -extern int TIFFRGBAImageOK(TIFF*, char [1024]); -extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]); -extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32); -extern void TIFFRGBAImageEnd(TIFFRGBAImage*); -extern TIFF* TIFFOpen(const char*, const char*); -# ifdef __WIN32__ -extern TIFF* TIFFOpenW(const wchar_t*, const char*); -# endif /* __WIN32__ */ -extern TIFF* TIFFFdOpen(int, const char*, const char*); -extern TIFF* TIFFClientOpen(const char*, const char*, - thandle_t, - TIFFReadWriteProc, TIFFReadWriteProc, - TIFFSeekProc, TIFFCloseProc, - TIFFSizeProc, - TIFFMapFileProc, TIFFUnmapFileProc); -extern const char* TIFFFileName(TIFF*); -extern const char* TIFFSetFileName(TIFF*, const char *); -extern void TIFFError(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3))); -extern void TIFFErrorExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4))); -extern void TIFFWarning(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3))); -extern void TIFFWarningExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4))); -extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler); -extern TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt); -extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler); -extern TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt); -extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc); -extern uint32 TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s); -extern int TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s); -extern uint32 TIFFNumberOfTiles(TIFF*); -extern tmsize_t TIFFReadTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s); -extern tmsize_t TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s); -extern uint32 TIFFComputeStrip(TIFF*, uint32, uint16); -extern uint32 TIFFNumberOfStrips(TIFF*); -extern tmsize_t TIFFReadEncodedStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size); -extern tmsize_t TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size); -extern tmsize_t TIFFReadEncodedTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size); -extern tmsize_t TIFFReadRawTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size); -extern tmsize_t TIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc); -extern tmsize_t TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc); -extern tmsize_t TIFFWriteEncodedTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc); -extern tmsize_t TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc); -extern int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */ -extern void TIFFSetWriteOffset(TIFF* tif, toff_t off); -extern void TIFFSwabShort(uint16*); -extern void TIFFSwabLong(uint32*); -extern void TIFFSwabLong8(uint64*); -extern void TIFFSwabFloat(float*); -extern void TIFFSwabDouble(double*); -extern void TIFFSwabArrayOfShort(uint16* wp, tmsize_t n); -extern void TIFFSwabArrayOfTriples(uint8* tp, tmsize_t n); -extern void TIFFSwabArrayOfLong(uint32* lp, tmsize_t n); -extern void TIFFSwabArrayOfLong8(uint64* lp, tmsize_t n); -extern void TIFFSwabArrayOfFloat(float* fp, tmsize_t n); -extern void TIFFSwabArrayOfDouble(double* dp, tmsize_t n); -extern void TIFFReverseBits(uint8* cp, tmsize_t n); -extern const unsigned char* TIFFGetBitRevTable(int); - -#ifdef LOGLUV_PUBLIC -#define U_NEU 0.210526316 -#define V_NEU 0.473684211 -#define UVSCALE 410. -extern double LogL16toY(int); -extern double LogL10toY(int); -extern void XYZtoRGB24(float*, uint8*); -extern int uv_decode(double*, double*, int); -extern void LogLuv24toXYZ(uint32, float*); -extern void LogLuv32toXYZ(uint32, float*); -#if defined(c_plusplus) || defined(__cplusplus) -extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER); -extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER); -extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER); -extern uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER); -extern uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER); -#else -extern int LogL16fromY(double, int); -extern int LogL10fromY(double, int); -extern int uv_encode(double, double, int); -extern uint32 LogLuv24fromXYZ(float*, int); -extern uint32 LogLuv32fromXYZ(float*, int); -#endif -#endif /* LOGLUV_PUBLIC */ - -extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, const TIFFDisplay *, float*); -extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32, - float *, float *, float *); -extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float, - uint32 *, uint32 *, uint32 *); - -extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*); -extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32, - uint32 *, uint32 *, uint32 *); - -/**************************************************************************** - * O B S O L E T E D I N T E R F A C E S - * - * Don't use this stuff in your applications, it may be removed in the future - * libtiff versions. - ****************************************************************************/ -typedef struct { - ttag_t field_tag; /* field's tag */ - short field_readcount; /* read count/TIFF_VARIABLE/TIFF_SPP */ - short field_writecount; /* write count/TIFF_VARIABLE */ - TIFFDataType field_type; /* type of associated data */ - unsigned short field_bit; /* bit in fieldsset bit vector */ - unsigned char field_oktochange; /* if true, can change while writing */ - unsigned char field_passcount; /* if true, pass dir count on set */ - char *field_name; /* ASCII name */ -} TIFFFieldInfo; - -extern int TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], uint32); - -#if defined(c_plusplus) || defined(__cplusplus) -} -#endif - -#endif /* _TIFFIO_ */ - -/* vim: set ts=8 sts=8 sw=8 noet: */ -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffvers.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffvers.h deleted file mode 100644 index 40edc813d5..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/tiff/tiffvers.h +++ /dev/null @@ -1,9 +0,0 @@ -#define TIFFLIB_VERSION_STR "LIBTIFF, Version 4.0.3\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc." -/* - * This define can be used in code that requires - * compilation-related definitions specific to a - * version or versions of the library. Runtime - * version checking should be done based on the - * string returned by TIFFGetVersion. - */ -#define TIFFLIB_VERSION 20120922 diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/vorbis/codec.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/vorbis/codec.h deleted file mode 100644 index 999aa33510..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/vorbis/codec.h +++ /dev/null @@ -1,243 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - - ******************************************************************** - - function: libvorbis codec headers - last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $ - - ********************************************************************/ - -#ifndef _vorbis_codec_h_ -#define _vorbis_codec_h_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include - -typedef struct vorbis_info{ - int version; - int channels; - long rate; - - /* The below bitrate declarations are *hints*. - Combinations of the three values carry the following implications: - - all three set to the same value: - implies a fixed rate bitstream - only nominal set: - implies a VBR stream that averages the nominal bitrate. No hard - upper/lower limit - upper and or lower set: - implies a VBR bitstream that obeys the bitrate limits. nominal - may also be set to give a nominal rate. - none set: - the coder does not care to speculate. - */ - - long bitrate_upper; - long bitrate_nominal; - long bitrate_lower; - long bitrate_window; - - void *codec_setup; -} vorbis_info; - -/* vorbis_dsp_state buffers the current vorbis audio - analysis/synthesis state. The DSP state belongs to a specific - logical bitstream ****************************************************/ -typedef struct vorbis_dsp_state{ - int analysisp; - vorbis_info *vi; - - float **pcm; - float **pcmret; - int pcm_storage; - int pcm_current; - int pcm_returned; - - int preextrapolate; - int eofflag; - - long lW; - long W; - long nW; - long centerW; - - ogg_int64_t granulepos; - ogg_int64_t sequence; - - ogg_int64_t glue_bits; - ogg_int64_t time_bits; - ogg_int64_t floor_bits; - ogg_int64_t res_bits; - - void *backend_state; -} vorbis_dsp_state; - -typedef struct vorbis_block{ - /* necessary stream state for linking to the framing abstraction */ - float **pcm; /* this is a pointer into local storage */ - oggpack_buffer opb; - - long lW; - long W; - long nW; - int pcmend; - int mode; - - int eofflag; - ogg_int64_t granulepos; - ogg_int64_t sequence; - vorbis_dsp_state *vd; /* For read-only access of configuration */ - - /* local storage to avoid remallocing; it's up to the mapping to - structure it */ - void *localstore; - long localtop; - long localalloc; - long totaluse; - struct alloc_chain *reap; - - /* bitmetrics for the frame */ - long glue_bits; - long time_bits; - long floor_bits; - long res_bits; - - void *internal; - -} vorbis_block; - -/* vorbis_block is a single block of data to be processed as part of -the analysis/synthesis stream; it belongs to a specific logical -bitstream, but is independent from other vorbis_blocks belonging to -that logical bitstream. *************************************************/ - -struct alloc_chain{ - void *ptr; - struct alloc_chain *next; -}; - -/* vorbis_info contains all the setup information specific to the - specific compression/decompression mode in progress (eg, - psychoacoustic settings, channel setup, options, codebook - etc). vorbis_info and substructures are in backends.h. -*********************************************************************/ - -/* the comments are not part of vorbis_info so that vorbis_info can be - static storage */ -typedef struct vorbis_comment{ - /* unlimited user comment fields. libvorbis writes 'libvorbis' - whatever vendor is set to in encode */ - char **user_comments; - int *comment_lengths; - int comments; - char *vendor; - -} vorbis_comment; - - -/* libvorbis encodes in two abstraction layers; first we perform DSP - and produce a packet (see docs/analysis.txt). The packet is then - coded into a framed OggSquish bitstream by the second layer (see - docs/framing.txt). Decode is the reverse process; we sync/frame - the bitstream and extract individual packets, then decode the - packet back into PCM audio. - - The extra framing/packetizing is used in streaming formats, such as - files. Over the net (such as with UDP), the framing and - packetization aren't necessary as they're provided by the transport - and the streaming layer is not used */ - -/* Vorbis PRIMITIVES: general ***************************************/ - -extern void vorbis_info_init(vorbis_info *vi); -extern void vorbis_info_clear(vorbis_info *vi); -extern int vorbis_info_blocksize(vorbis_info *vi,int zo); -extern void vorbis_comment_init(vorbis_comment *vc); -extern void vorbis_comment_add(vorbis_comment *vc, const char *comment); -extern void vorbis_comment_add_tag(vorbis_comment *vc, - const char *tag, const char *contents); -extern char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count); -extern int vorbis_comment_query_count(vorbis_comment *vc, const char *tag); -extern void vorbis_comment_clear(vorbis_comment *vc); - -extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb); -extern int vorbis_block_clear(vorbis_block *vb); -extern void vorbis_dsp_clear(vorbis_dsp_state *v); -extern double vorbis_granule_time(vorbis_dsp_state *v, - ogg_int64_t granulepos); - -extern const char *vorbis_version_string(void); - -/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/ - -extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op); -extern int vorbis_analysis_headerout(vorbis_dsp_state *v, - vorbis_comment *vc, - ogg_packet *op, - ogg_packet *op_comm, - ogg_packet *op_code); -extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals); -extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op); - -extern int vorbis_bitrate_addblock(vorbis_block *vb); -extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd, - ogg_packet *op); - -/* Vorbis PRIMITIVES: synthesis layer *******************************/ -extern int vorbis_synthesis_idheader(ogg_packet *op); -extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc, - ogg_packet *op); - -extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi); -extern int vorbis_synthesis_restart(vorbis_dsp_state *v); -extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op); -extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op); -extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb); -extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm); -extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm); -extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples); -extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op); - -extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag); -extern int vorbis_synthesis_halfrate_p(vorbis_info *v); - -/* Vorbis ERRORS and return codes ***********************************/ - -#define OV_FALSE -1 -#define OV_EOF -2 -#define OV_HOLE -3 - -#define OV_EREAD -128 -#define OV_EFAULT -129 -#define OV_EIMPL -130 -#define OV_EINVAL -131 -#define OV_ENOTVORBIS -132 -#define OV_EBADHEADER -133 -#define OV_EVERSION -134 -#define OV_ENOTAUDIO -135 -#define OV_EBADPACKET -136 -#define OV_EBADLINK -137 -#define OV_ENOSEEK -138 - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/vorbis/vorbisfile.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/vorbis/vorbisfile.h deleted file mode 100644 index 9271331e72..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/vorbis/vorbisfile.h +++ /dev/null @@ -1,206 +0,0 @@ -/******************************************************************** - * * - * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * - * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * - * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * - * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 * - * by the Xiph.Org Foundation http://www.xiph.org/ * - * * - ******************************************************************** - - function: stdio-based convenience library for opening/seeking/decoding - last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ - - ********************************************************************/ - -#ifndef _OV_FILE_H_ -#define _OV_FILE_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include "codec.h" - -/* The function prototypes for the callbacks are basically the same as for - * the stdio functions fread, fseek, fclose, ftell. - * The one difference is that the FILE * arguments have been replaced with - * a void * - this is to be used as a pointer to whatever internal data these - * functions might need. In the stdio case, it's just a FILE * cast to a void * - * - * If you use other functions, check the docs for these functions and return - * the right values. For seek_func(), you *MUST* return -1 if the stream is - * unseekable - */ -typedef struct { - size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); - int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); - int (*close_func) (void *datasource); - long (*tell_func) (void *datasource); -} ov_callbacks; - -#ifndef OV_EXCLUDE_STATIC_CALLBACKS - -/* a few sets of convenient callbacks, especially for use under - * Windows where ov_open_callbacks() should always be used instead of - * ov_open() to avoid problems with incompatible crt.o version linking - * issues. */ - -static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){ - if(f==NULL)return(-1); - -#ifdef __MINGW32__ - return fseeko64(f,off,whence); -#elif defined (_WIN32) - return _fseeki64(f,off,whence); -#else - return fseek(f,off,whence); -#endif -} - -/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as - * static data. That means that every file which includes this header - * will get its own copy of these structs whether it uses them or - * not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS. - * These static symbols are essential on platforms such as Windows on - * which several different versions of stdio support may be linked to - * by different DLLs, and we need to be certain we know which one - * we're using (the same one as the main application). - */ - -static ov_callbacks OV_CALLBACKS_DEFAULT = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, - (int (*)(void *)) fclose, - (long (*)(void *)) ftell -}; - -static ov_callbacks OV_CALLBACKS_NOCLOSE = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap, - (int (*)(void *)) NULL, - (long (*)(void *)) ftell -}; - -static ov_callbacks OV_CALLBACKS_STREAMONLY = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) NULL, - (int (*)(void *)) fclose, - (long (*)(void *)) NULL -}; - -static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = { - (size_t (*)(void *, size_t, size_t, void *)) fread, - (int (*)(void *, ogg_int64_t, int)) NULL, - (int (*)(void *)) NULL, - (long (*)(void *)) NULL -}; - -#endif - -#define NOTOPEN 0 -#define PARTOPEN 1 -#define OPENED 2 -#define STREAMSET 3 -#define INITSET 4 - -typedef struct OggVorbis_File { - void *datasource; /* Pointer to a FILE *, etc. */ - int seekable; - ogg_int64_t offset; - ogg_int64_t end; - ogg_sync_state oy; - - /* If the FILE handle isn't seekable (eg, a pipe), only the current - stream appears */ - int links; - ogg_int64_t *offsets; - ogg_int64_t *dataoffsets; - long *serialnos; - ogg_int64_t *pcmlengths; /* overloaded to maintain binary - compatibility; x2 size, stores both - beginning and end values */ - vorbis_info *vi; - vorbis_comment *vc; - - /* Decoding working state local storage */ - ogg_int64_t pcm_offset; - int ready_state; - long current_serialno; - int current_link; - - double bittrack; - double samptrack; - - ogg_stream_state os; /* take physical pages, weld into a logical - stream of packets */ - vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ - vorbis_block vb; /* local working space for packet->PCM decode */ - - ov_callbacks callbacks; - -} OggVorbis_File; - - -extern int ov_clear(OggVorbis_File *vf); -extern int ov_fopen(const char *path,OggVorbis_File *vf); -extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); -extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf, - const char *initial, long ibytes, ov_callbacks callbacks); - -extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes); -extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf, - const char *initial, long ibytes, ov_callbacks callbacks); -extern int ov_test_open(OggVorbis_File *vf); - -extern long ov_bitrate(OggVorbis_File *vf,int i); -extern long ov_bitrate_instant(OggVorbis_File *vf); -extern long ov_streams(OggVorbis_File *vf); -extern long ov_seekable(OggVorbis_File *vf); -extern long ov_serialnumber(OggVorbis_File *vf,int i); - -extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i); -extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i); -extern double ov_time_total(OggVorbis_File *vf,int i); - -extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_time_seek(OggVorbis_File *vf,double pos); -extern int ov_time_seek_page(OggVorbis_File *vf,double pos); - -extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos); -extern int ov_time_seek_lap(OggVorbis_File *vf,double pos); -extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos); - -extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf); -extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf); -extern double ov_time_tell(OggVorbis_File *vf); - -extern vorbis_info *ov_info(OggVorbis_File *vf,int link); -extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link); - -extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples, - int *bitstream); -extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length, - int bigendianp,int word,int sgned,int *bitstream, - void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param); -extern long ov_read(OggVorbis_File *vf,char *buffer,int length, - int bigendianp,int word,int sgned,int *bitstream); -extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2); - -extern int ov_halfrate(OggVorbis_File *vf,int flag); -extern int ov_halfrate_p(OggVorbis_File *vf); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/zconf.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/zconf.h deleted file mode 100644 index 9987a77553..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/zconf.h +++ /dev/null @@ -1,511 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2013 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzvprintf z_gzvprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetHeader z_inflateGetHeader -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateSetDictionary z_inflateSetDictionary -# define inflateGetDictionary z_inflateGetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateResetKeep z_inflateResetKeep -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 - typedef Z_U4 z_crc_t; -#else - typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) - #pragma map(deflateInit_,"DEIN") - #pragma map(deflateInit2_,"DEIN2") - #pragma map(deflateEnd,"DEEND") - #pragma map(deflateBound,"DEBND") - #pragma map(inflateInit_,"ININ") - #pragma map(inflateInit2_,"ININ2") - #pragma map(inflateEnd,"INEND") - #pragma map(inflateSync,"INSY") - #pragma map(inflateSetDictionary,"INSEDI") - #pragma map(compressBound,"CMBND") - #pragma map(inflate_table,"INTABL") - #pragma map(inflate_fast,"INFA") - #pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/zlib.h b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/zlib.h deleted file mode 100644 index 3e0c7672ac..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/include/zlib.h +++ /dev/null @@ -1,1768 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.8, April 28th, 2013 - - Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.8" -#define ZLIB_VERNUM 0x1280 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 8 -#define ZLIB_VER_SUBREVISION 0 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed data. - This version of the library supports only one compression method (deflation) - but other algorithms will be added later and will have the same stream - interface. - - Compression can be done in a single step if the buffers are large enough, - or can be done by repeated calls of the compression function. In the latter - case, the application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip streams in memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never crash - even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - z_const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - - z_const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has dropped - to zero. It must update next_out and avail_out when avail_out has dropped - to zero. The application must initialize zalloc, zfree and opaque before - calling the init function. All other fields are set by the compression - library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this if - the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers - returned by zalloc for objects of exactly 65536 bytes *must* have their - offset normalized to zero. The default allocation function provided by this - library ensures this (see zutil.c). To reduce memory requirements and avoid - any allocation of 64K objects, at the expense of compression ratio, compile - the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or progress - reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use in the decompressor (particularly - if the decompressor wants to decompress everything in a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is not - compatible with the zlib.h header file used by the application. This check - is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at all - (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - requests a default compromise between speed and compression (currently - equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if level is not a valid compression level, or - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). msg is set to null - if there is no error message. deflateInit does not perform any compression: - this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). Some - output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating avail_in or avail_out accordingly; avail_out should - never be zero before the call. The application can consume the compressed - output when it wants, for example when the output buffer is full (avail_out - == 0), or after each call of deflate(). If deflate returns Z_OK and with - zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumulate before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In - particular avail_in is zero after the call if enough output space has been - provided before the call.) Flushing may degrade compression for some - compression algorithms and so it should be used only when necessary. This - completes the current deflate block and follows it with an empty stored block - that is three bits plus filler bits to the next byte, followed by four bytes - (00 00 ff ff). - - If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the - output buffer, but the output is not aligned to a byte boundary. All of the - input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. - This completes the current deflate block and follows it with an empty fixed - codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed code - block. - - If flush is set to Z_BLOCK, a deflate block is completed and emitted, as - for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to - seven bits of the current block are held to be written as the next byte after - the next deflate block is completed. In this case, the decompressor may not - be provided enough bits at this point in order to complete decompression of - the data provided so far to the compressor. It may need to wait for the next - block to be emitted. This is for advanced applications that need to control - the emission of deflate blocks. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the stream - are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least the - value returned by deflateBound (see below). Then deflate is guaranteed to - return Z_STREAM_END. If not enough output space is provided, deflate will - not return Z_STREAM_END, and it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect the - compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, msg - may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the - exact value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit() does not process any header information -- that is deferred - until inflate() is called. -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing will - resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there is - no more input data or no more space in the output buffer (see below about - the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. The - application can consume the uncompressed output when it wants, for example - when the output buffer is full (avail_out == 0), or after each call of - inflate(). If inflate returns Z_OK and with zero avail_out, it must be - called again after making room in the output buffer because there might be - more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, - Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() - stop if and when it gets to the next deflate block boundary. When decoding - the zlib or gzip format, this will cause inflate() to return immediately - after the header and before the first block. When doing a raw inflate, - inflate() will go ahead and process the first block, and will return when it - gets to the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if - inflate() is currently decoding the last block in the deflate stream, plus - 128 if inflate() returned immediately after decoding an end-of-block code or - decoding the complete header up to just before the first byte of the deflate - stream. The end-of-block will not be indicated until all of the uncompressed - data from that block has been written to strm->next_out. The number of - unused bits may in general be greater than seven, except when bit 7 of - data_type is set, in which case the number of unused bits will be less than - eight. data_type is set as noted here every time inflate() returns for all - flush options, and so can be used to determine the amount of currently - consumed input in bits. - - The Z_TREES option behaves as Z_BLOCK does, but it also returns when the - end of each deflate block header is reached, before any actual data in that - block is decoded. This allows the caller to determine the length of the - deflate block header for later use in random access within a deflate block. - 256 is added to the value of strm->data_type when inflate() returns - immediately after reaching the end of the deflate block header. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step (a - single call of inflate), the parameter flush should be set to Z_FINISH. In - this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all of the uncompressed data for the - operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not - required to perform an inflation in one step. However it may be used to - inform inflate that a faster approach can be used for the single inflate() - call. Z_FINISH also informs inflate to not maintain a sliding window if the - stream completes, which reduces inflate's memory footprint. If the stream - does not complete, either because not all of the stream is provided or not - enough output space is provided, then a sliding window will be allocated and - inflate() can be called again to continue the operation as if Z_NO_FLUSH had - been used. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the effects of the flush parameter in this implementation are - on the return value of inflate() as noted below, when inflate() returns early - when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of - memory for a sliding window when Z_FINISH is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the Adler-32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the Adler-32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() can decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically, if requested when - initializing with inflateInit2(). Any information contained in the gzip - header is not retained, so applications that need that information should - instead use raw inflate, see inflateInit2() below, or inflateBack() and - perform their own processing of the gzip header and trailer. When processing - gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - producted so far. The CRC-32 is checked against the gzip trailer. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may - then call inflateSync() to look for a good compression block if a partial - recovery of the data is desired. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by the - caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but is - slow and reduces compression ratio; memLevel=9 uses maximum memory for - optimal speed. The default value is 8. See zconf.h for total memory usage - as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid - method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is - incompatible with the version assumed by the caller (ZLIB_VERSION). msg is - set to null if there is no error message. deflateInit2 does not perform any - compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. When using the zlib format, this - function must be called immediately after deflateInit, deflateInit2 or - deflateReset, and before any call of deflate. When doing raw deflate, this - function must be called either before any call of deflate, or immediately - after the completion of a deflate block, i.e. after all input has been - consumed and all output has been delivered when using any of the flush - options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The - compressor and decompressor must use exactly the same dictionary (see - inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size - provided in deflateInit or deflateInit2. Thus the strings most likely to be - useful should be put at the end of the dictionary, not at the front. In - addition, the current implementation of deflate will use at most the window - size minus 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if not at a block boundary for raw deflate). deflateSetDictionary does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and can - consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. The - stream will keep the same compression level and any other attributes that - may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression level is changed, the input available so far is - compressed with the old level (and may be flushed); the new level will take - effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to be - compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if - strm->avail_out was zero. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() or - deflateInit2(), and after deflateSetHeader(), if used. This would be used - to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). If that first deflate() call is provided the - sourceLen input bytes, an output buffer allocated to the size returned by - deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed - to return Z_STREAM_END. Note that it is possible for the compressed size to - be larger than the value returned by deflateBound() if flush options other - than Z_FINISH or Z_NO_FLUSH are used. -*/ - -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); -/* - deflatePending() returns the number of bytes and bits of output that have - been generated, but not yet provided in the available output. The bytes not - provided would be due to the available output space having being consumed. - The number of bits of output not provided are between 0 and 7, where they - await more bits to join them in order to fill out a full byte. If pending - or bits are Z_NULL, then those values are not set. - - deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. - */ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the bits - leftover from a previous deflate stream when appending to it. As such, this - function can only be used for raw deflate, and must be used before the first - deflate() call after a deflateInit2() or deflateReset(). bits must be less - than or equal to 16, and that many of the least significant bits of value - will be inserted in the output. - - deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough - room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be zero to request that inflate use the window size in - the zlib header of the compressed stream. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - crc32 instead of an adler32. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit2 does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit2() does not process any header information -- that is - deferred until inflate() is called. -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called at any - time to set the dictionary. If the provided dictionary is smaller than the - window and there is already data in the window, then the provided dictionary - will amend what's there. The application must insure that the dictionary - that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by inflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If inflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a possible full flush point (see above - for the description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync searches for a 00 00 FF FF pattern in the compressed data. - All full flush points have this pattern, but not all occurrences of this - pattern are full flush points. - - inflateSync returns Z_OK if a possible full flush point has been found, - Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point - has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. The - stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); -/* - This function is the same as inflateReset, but it also permits changing - the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. - - inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL), or if - the windowBits parameter is invalid. -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - If bits is negative, then the input stream bit buffer is emptied. Then - inflatePrime() can be called again to put bits in the buffer. This is used - to clear out bits leftover after feeding inflate a block description prior - to feeding inflate codes. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); -/* - This function returns two values, one in the lower 16 bits of the return - value, and the other in the remaining upper bits, obtained by shifting the - return value down 16 bits. If the upper value is -1 and the lower value is - zero, then inflate() is currently decoding information outside of a block. - If the upper value is -1 and the lower value is non-zero, then inflate is in - the middle of a stored block, with the lower value equaling the number of - bytes from the input remaining to copy. If the upper value is not -1, then - it is the number of bits back from the current bit position in the input of - the code (literal or length/distance pair) currently being processed. In - that case the lower value is the number of bytes already emitted for that - code. - - A code is being processed if inflate is waiting for more input to complete - decoding of the code, or if it has completed decoding but is waiting for - more output space to write the literal or match data. - - inflateMark() is used to mark locations in the input data for random - access, which may be at bit positions, and to note those cases where the - output of a code may span boundaries of random access blocks. The current - location in the input stream can be determined from avail_in and data_type - as noted in the description for the Z_BLOCK flush parameter for inflate. - - inflateMark returns the value noted above or -1 << 16 if the provided - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be - used to force inflate() to return immediately after header processing is - complete and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the parameters are invalid, Z_MEM_ERROR if the internal state could not be - allocated, or Z_VERSION_ERROR if the version of the library does not match - the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, - z_const unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is potentially more efficient than - inflate() for file i/o applications, in that it avoids copying between the - output and the sliding window by simply making the window itself the output - buffer. inflate() can be faster on modern CPUs when used with large - buffers. inflateBack() trusts the application to not change the output - buffer passed by the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free the - allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the normal - behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format error - in the deflate stream (in which case strm->msg is set to indicate the nature - of the error), or Z_STREAM_ERROR if the stream was not properly initialized. - In the case of Z_BUF_ERROR, an input or output error can be distinguished - using strm->next_in which will be Z_NULL only if in() returned an error. If - strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning - non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() - cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - -#ifndef Z_SOLO - - /* utility functions */ - -/* - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default options - are assumed (compression level and memory usage, standard memory allocation - functions). The source code of these utility functions can be modified if - you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before a - compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be large enough to hold the entire - uncompressed data. (The size of the uncompressed data must have been saved - previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed buffer. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In - the case where there is not enough room, uncompress() will fill the output - buffer with the uncompressed data up to that point. -*/ - - /* gzip file access functions */ - -/* - This library supports reading and writing files in gzip (.gz) format with - an interface similar to that of stdio, using the functions that start with - "gz". The gzip format is different from the zlib format. gzip is a gzip - wrapper, documented in RFC 1952, wrapped around a deflate stream. -*/ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - - Opens a gzip (.gz) file for reading or writing. The mode parameter is as - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' - for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) 'T' will - request transparent writing or appending with no compression and not using - the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since - reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when - reading or writing will set the flag to close the file on an execve() call. - - These functions, as well as gzip, will read and decode a sequence of gzip - streams in a file. The append function of gzopen() can be used to create - such a file. (Also see gzflush() for another way to do this.) When - appending, gzopen does not test whether the file begins with a gzip stream, - nor does it look for the end of the gzip streams to begin appending. gzopen - will simply append a gzip stream to the existing file. - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. When - reading, this will be detected automatically by looking for the magic two- - byte gzip header. - - gzopen returns NULL if the file could not be opened, if there was - insufficient memory to allocate the gzFile state, or if an invalid mode was - specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). - errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. -*/ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen associates a gzFile with the file descriptor fd. File descriptors - are obtained from calls like open, dup, creat, pipe or fileno (if the file - has been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. If you are using fileno() to get the - file descriptor from a FILE *, then you will have to use dup() to avoid - double-close()ing the file descriptor. Both gzclose() and fclose() will - close the associated file descriptor, so they need to have different file - descriptors. - - gzdopen returns NULL if there was insufficient memory to allocate the - gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not - provided, or '+' was provided), or if fd is -1. The file descriptor is not - used until the next gz* read, write, seek, or close operation, so gzdopen - will not detect if fd is invalid (unless fd is -1). -*/ - -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); -/* - Set the internal buffer size used by this library's functions. The - default buffer size is 8192 bytes. This function must be called after - gzopen() or gzdopen(), and before any other calls that read or write the - file. The buffer memory allocation is always deferred to the first read or - write. Two buffers are allocated, either both of the specified size when - writing, or one of the specified size and the other twice that size when - reading. A larger buffer size of, for example, 64K or 128K bytes will - noticeably increase the speed of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - - gzbuffer() returns 0 on success, or -1 on failure, such as being called - too late. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - - After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream. Any number of gzip streams may be - concatenated in the input file, and will all be decompressed by gzread(). - If something other than a gzip stream is encountered after a gzip stream, - that remaining trailing garbage is ignored (and no error is returned). - - gzread can be used to read a gzip file that is being concurrently written. - Upon reaching the end of the input, gzread will return with the available - data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - gzclearerr can be used to clear the end of file indicator in order to permit - gzread to be tried again. Z_OK indicates that a gzip stream was completed - on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - middle of a gzip stream. Note that gzread does not return -1 in the event - of an incomplete gzip stream. This error is deferred until gzclose(), which - will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - stream. Alternatively, gzerror can be used before gzclose to detect this - case. - - gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. -*/ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes written or 0 in case of - error. -*/ - -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the arguments to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or 0 in case of error. The number of - uncompressed bytes written is limited to 8191, or one less than the buffer - size given to gzbuffer(). The caller should assure that this limit is not - exceeded. If it is exceeded, then gzprintf() will return an error (0) with - nothing written. In this case, there may also be a buffer overflow with - unpredictable consequences, which is possible only if zlib was compiled with - the insecure functions sprintf() or vsprintf() because the secure snprintf() - or vsnprintf() functions were not available. This can be determined using - zlibCompileFlags(). -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or a - newline character is read and transferred to buf, or an end-of-file - condition is encountered. If any characters are read or if len == 1, the - string is terminated with a null character. If no characters are read due - to an end-of-file or len < 1, then the buffer is left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. gzputc - returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read as the first character - on the next read. At least one character of push-back is allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the - output buffer size of pushed characters is allowed. (See gzbuffer above.) - The pushed character will be discarded if the stream is repositioned with - gzseek() or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter flush - is as in the deflate() function. The return value is the zlib error number - (see function gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new - gzip stream will be started in the output. gzread() is able to read such - concatented gzip streams. - - gzflush should be called only when strictly necessary because it will - degrade compression if called too often. -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); - - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - - Returns the starting position for the next gzread or gzwrite on the given - compressed file. This position represents a number of bytes in the - uncompressed data stream, and is zero when starting, even if appending or - reading a gzip stream from the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); - - Returns the current offset in the file being read or written. This offset - includes the count of bytes that precede the gzip stream, for example when - appending or when using gzdopen() for reading. When reading, the offset - does not include as yet unused buffered input. This information can be used - for a progress indicator. On error, gzoffset() returns -1. -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns true (1) if the end-of-file indicator has been set while reading, - false (0) otherwise. Note that the end-of-file indicator is set only if the - read tried to go past the end of the input, but came up short. Therefore, - just like feof(), gzeof() may return false even if there is no more data to - read, in the event that the last read request was for the exact number of - bytes remaining in the input file. This will happen if the input file size - is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file - has grown since the previous end of file was detected. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input - does not contain a gzip stream. - - If gzdirect() is used immediately after gzopen() or gzdopen() it will - cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). - - When writing, gzdirect() returns true (1) if transparent writing was - requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: - gzdirect() is not needed when writing. Transparent writing must be - explicitly requested, so the application already knows the answer. When - linking statically, using gzdirect() will include all of the zlib code for - gzip file reading and decompression, which may not be desired.) -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file and - deallocates the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. - - gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - last read ended in the middle of a gzip stream, or Z_OK on success. -*/ - -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); -/* - Same as gzclose(), but gzclose_r() is only for use when reading, and - gzclose_w() is only for use when writing or appending. The advantage to - using these instead of gzclose() is that they avoid linking in zlib - compression or decompression code that is not used when only reading or only - writing respectively. If gzclose() is used, then both compression and - decompression code will be included the application when linking to a static - zlib library. -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the given - compressed file. errnum is set to zlib error number. If an error occurred - in the file system and not in the compression library, errnum is set to - Z_ERRNO and the application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is - closed, then the string previously returned by gzerror will no longer be - available. - - gzerror() should be used to distinguish errors from end-of-file for those - functions above that do not distinguish those cases in their return values. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - -#endif /* !Z_SOLO */ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the compression - library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is Z_NULL, this function returns the - required initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. - - Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); - - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note - that the z_off_t type (like off_t) is a signed integer. If len2 is - negative, the result has no meaning or utility. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) - -#ifndef Z_SOLO - -/* gzgetc() macro and its supporting function and exposed data structure. Note - * that the real internal state is much larger than the exposed structure. - * This abbreviated structure exposes just enough for the gzgetc() macro. The - * user should not mess with these exposed elements, since their names or - * behavior could change in the future, perhaps even capriciously. They can - * only be used by the gzgetc() macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - z_off64_t pos; -}; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -# define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#else -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : gzgetc(g)) -#endif - -/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or - * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if - * both are true, the application gets the *64 functions, and the regular - * functions are changed to 64 bits) -- in case these are set on systems - * without large file support, _LFS64_LARGEFILE must also be true - */ -#ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); -#endif - -#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -# ifdef Z_PREFIX_SET -# define z_gzopen z_gzopen64 -# define z_gzseek z_gzseek64 -# define z_gztell z_gztell64 -# define z_gzoffset z_gzoffset64 -# define z_adler32_combine z_adler32_combine64 -# define z_crc32_combine z_crc32_combine64 -# else -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# endif -# ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -# endif -#else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -#endif - -#else /* Z_SOLO */ - - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - -#endif /* !Z_SOLO */ - -/* hack for buggy compilers */ -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; -#endif - -/* undocumented functions */ -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if defined(_WIN32) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); -# endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avcodec-gd-57.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avcodec-gd-57.dll deleted file mode 100644 index 50cb845358..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avcodec-gd-57.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avformat-gd-57.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avformat-gd-57.dll deleted file mode 100644 index 519993452f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avformat-gd-57.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avutil-gd-55.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avutil-gd-55.dll deleted file mode 100644 index 7f17cc1c22..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/avutil-gd-55.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libao-4.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libao-4.dll deleted file mode 100644 index 1956bd6dbc..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libao-4.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libao.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libao.dll.a deleted file mode 100644 index 05c757fbe8..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libao.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavcodec-gd.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavcodec-gd.dll.a deleted file mode 100644 index 65707955d2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavcodec-gd.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavformat-gd.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavformat-gd.dll.a deleted file mode 100644 index 2105f2984a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavformat-gd.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavutil-gd.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavutil-gd.dll.a deleted file mode 100644 index 5dcfc0151c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libavutil-gd.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libbz2.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libbz2.a deleted file mode 100644 index 1f91842073..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libbz2.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libeb-16.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libeb-16.dll deleted file mode 100644 index b019358ba8..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libeb-16.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libeb.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libeb.dll.a deleted file mode 100644 index 1b87223286..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libeb.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3-dw2.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3-dw2.a deleted file mode 100644 index c239ea293b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3-dw2.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3-sjlj.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3-sjlj.a deleted file mode 100644 index df72e82546..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3-sjlj.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3.2.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3.2.a deleted file mode 100644 index 382e8f42d0..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libhunspell-1.3.2.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libiconv-2.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libiconv-2.dll deleted file mode 100644 index 37ac51d185..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libiconv-2.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libiconv.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libiconv.dll.a deleted file mode 100644 index ee2d94c510..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libiconv.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/liblzma.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/liblzma.a deleted file mode 100644 index 67dbef881f..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/liblzma.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/liblzo2.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/liblzo2.a deleted file mode 100644 index 66460f768c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/liblzo2.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libogg.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libogg.a deleted file mode 100644 index 4eb337052b..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libogg.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libopencc.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libopencc.dll.a deleted file mode 100644 index 9da2061a2c..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libopencc.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libtiff-5.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libtiff-5.dll deleted file mode 100644 index 1f05cbb39a..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libtiff-5.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libtiff.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libtiff.dll.a deleted file mode 100644 index 0e50041e2e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libtiff.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libvorbis.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libvorbis.a deleted file mode 100644 index 8fd1c2ff8e..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libvorbis.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libvorbisfile.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libvorbisfile.a deleted file mode 100644 index 11cef07db3..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libvorbisfile.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libz.dll.a b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libz.dll.a deleted file mode 100644 index c38ce9bbc5..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/libz.dll.a and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/opencc.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/opencc.dll deleted file mode 100644 index 1835d054f2..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/opencc.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/zlib1.dll b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/zlib1.dll deleted file mode 100644 index 96df270d17..0000000000 Binary files a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/lib/zlib1.dll and /dev/null differ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/readme.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/readme.txt deleted file mode 100644 index 73a9022c67..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/readme.txt +++ /dev/null @@ -1,10 +0,0 @@ -This directory holds precompiled third-party libraries and their header files -used to build GoldenDict under Windows. Those are supplied merely to ease -the build process. No other platform except Windows uses those files, so they -can safely be removed for Linux builds etc. -Due credit goes to those created those libraries. The libraries are -copyrighted by their responsive copyright holders and distributed in -compliance to their respective licenses. No modifications were made except -those needed in order to build the libraries correctly. The source codes -aren't shipped here merely to shrink the size of the distribution, and can -be downloaded from the original libraries' websites separately. diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/00README.txt b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/00README.txt deleted file mode 100644 index 965fc4b599..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/00README.txt +++ /dev/null @@ -1,42 +0,0 @@ -FFmpeg, libao, zLib build instructions ------------------------------------ - -Prerequisites -============= -* MSYS and MinGW ( 4.4 up to 4.6 ) - -Build -===== - -* Get source tarball for libspeex, ffmpeg, libao, zlib and extract them respectively: - * libspeex: http://www.speex.org/downloads/ - * libao: http://www.xiph.org/downloads/ - * ffmpeg: http://ffmpeg.org/download.html - * zlib: http://zlib.net/ - -* Define environment variable: PREFIX, for example: export PREFIX=/usr/local - * NOTE: You may also want to define CPATH and LIBRARY_PATH: - export CPATH=${CPATH}:${PREFIX}/include - export LIBRARY_PATH=${LIBRARY_PATH}:${PREFIX}/lib - -* First, build the libspeex as static library: - * Copy "libspeex-configure-mingw32.sh" to the speex source folder. - * ./libspeex-configure-mingw32.sh - * make && make install - -* Build ffmpeg: - * Copy "ffmpeg-configure-mingw32.sh" to the ffmpeg source folder. - * ./ffmpeg-configure-mingw32.sh - * make && make install - -* Build libao: - * Copy "libao-configure-mingw32.sh" to the libao source folder. - * ./libao-configure-mingw32.sh - * make && make install - -* Build zlib: - * make -f./win32/makefile.gcc && make -f./win32/makefile.gcc install - -binaries (dlls): ${PREFIX}/bin -C headers: ${PREFIX}/include -Linker files: ${PREFIX}/lib diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/ffmpeg-configure-mingw32.sh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/ffmpeg-configure-mingw32.sh deleted file mode 100644 index 4b13854cdb..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/ffmpeg-configure-mingw32.sh +++ /dev/null @@ -1,189 +0,0 @@ -#!/bin/sh - -./configure \ - --prefix=$PREFIX \ - --build-suffix=-gd \ - --enable-memalign-hack \ - --enable-runtime-cpudetect \ - --enable-shared \ - --disable-static \ - --disable-debug \ - --disable-programs \ - --disable-network \ - --disable-avdevice \ - --disable-avfilter \ - --disable-swresample \ - --disable-swscale \ - --disable-network \ - --disable-muxers \ - --disable-demuxers \ - --enable-rdft \ - --enable-demuxer=aac \ - --enable-demuxer=ac3 \ - --enable-demuxer=aiff \ - --enable-demuxer=ape \ - --enable-demuxer=asf \ - --enable-demuxer=flac \ - --enable-demuxer=matroska \ - --enable-demuxer=mp3 \ - --enable-demuxer=mpc \ - --enable-demuxer=mov \ - --enable-demuxer=mpc8 \ - --enable-demuxer=ogg \ - --enable-demuxer=tta \ - --enable-demuxer=wav \ - --enable-demuxer=wv \ - --disable-bsfs \ - --disable-filters \ - --disable-parsers \ - --enable-parser=aac \ - --enable-parser=ac3 \ - --enable-parser=mpegaudio \ - --disable-protocols \ - --disable-indevs \ - --disable-outdevs \ - --disable-encoders \ - --disable-decoders \ - --enable-decoder=eightsvx_exp \ - --enable-decoder=eightsvx_fib \ - --enable-decoder=aac \ - --enable-decoder=aac_latm \ - --enable-decoder=ac3 \ - --enable-decoder=adpcm_4xm \ - --enable-decoder=adpcm_adx \ - --enable-decoder=adpcm_afc \ - --enable-decoder=adpcm_ct \ - --enable-decoder=adpcm_ea \ - --enable-decoder=adpcm_ea_maxis_xa \ - --enable-decoder=adpcm_ea_r1 \ - --enable-decoder=adpcm_ea_r2 \ - --enable-decoder=adpcm_ea_r3 \ - --enable-decoder=adpcm_ea_xas \ - --enable-decoder=adpcm_g722 \ - --enable-decoder=adpcm_g726 \ - --enable-decoder=adpcm_ima_amv \ - --enable-decoder=adpcm_ima_apc \ - --enable-decoder=adpcm_ima_dk3 \ - --enable-decoder=adpcm_ima_dk4 \ - --enable-decoder=adpcm_ima_ea_eacs \ - --enable-decoder=adpcm_ima_ea_sead \ - --enable-decoder=adpcm_ima_iss \ - --enable-decoder=adpcm_ima_oki \ - --enable-decoder=adpcm_ima_qt \ - --enable-decoder=adpcm_ima_smjpeg \ - --enable-decoder=adpcm_ima_wav \ - --enable-decoder=adpcm_ima_ws \ - --enable-decoder=adpcm_ms \ - --enable-decoder=adpcm_sbpro_2 \ - --enable-decoder=adpcm_sbpro_3 \ - --enable-decoder=adpcm_sbpro_4 \ - --enable-decoder=adpcm_swf \ - --enable-decoder=adpcm_thp \ - --enable-decoder=adpcm_xa \ - --enable-decoder=adpcm_yamaha \ - --enable-decoder=alac \ - --enable-decoder=amrnb \ - --enable-decoder=libopencore_amrnb \ - --enable-decoder=amrwb \ - --enable-decoder=libopencore_amrwb \ - --enable-decoder=ape \ - --enable-decoder=atrac1 \ - --enable-decoder=atrac3 \ - --enable-decoder=binkaudio_dct \ - --enable-decoder=binkaudio_rdft \ - --enable-decoder=bmv_audio \ - --enable-decoder=comfortnoise \ - --enable-decoder=cook \ - --enable-decoder=dsicinaudio \ - --enable-decoder=dca \ - --enable-decoder=eac3 \ - --enable-decoder=flac \ - --enable-decoder=g723_1 \ - --enable-decoder=g729 \ - --enable-decoder=gsm \ - --enable-decoder=libgsm \ - --enable-decoder=gsm_ms \ - --enable-decoder=libgsm_ms \ - --enable-decoder=iac \ - --enable-decoder=imc \ - --enable-decoder=interplay_dpcm \ - --enable-decoder=mace3 \ - --enable-decoder=mace6 \ - --enable-decoder=mlp \ - --enable-decoder=mp1 \ - --enable-decoder=mp1float \ - --enable-decoder=mp2 \ - --enable-decoder=mp2float \ - --enable-decoder=mp3 \ - --enable-decoder=mp3float \ - --enable-decoder=mp3adu \ - --enable-decoder=mp3adufloat \ - --enable-decoder=mp3on4 \ - --enable-decoder=mp3on4float \ - --enable-decoder=als \ - --enable-decoder=mpc7 \ - --enable-decoder=mpc8 \ - --enable-decoder=nellymoser \ - --enable-decoder=libopus \ - --enable-decoder=paf_audio \ - --enable-decoder=pcm_alaw \ - --enable-decoder=pcm_bluray \ - --enable-decoder=pcm_dvd \ - --enable-decoder=pcm_f32be \ - --enable-decoder=pcm_f32le \ - --enable-decoder=pcm_f64be \ - --enable-decoder=pcm_f64le \ - --enable-decoder=pcm_lxf \ - --enable-decoder=pcm_mulaw \ - --enable-decoder=pcm_s16be \ - --enable-decoder=pcm_s16be_planar \ - --enable-decoder=pcm_s16le \ - --enable-decoder=pcm_s16le_planar \ - --enable-decoder=pcm_s24be \ - --enable-decoder=pcm_s24daud \ - --enable-decoder=pcm_s24le \ - --enable-decoder=pcm_s24le_planar \ - --enable-decoder=pcm_s32be \ - --enable-decoder=pcm_s32le \ - --enable-decoder=pcm_s32le_planar \ - --enable-decoder=pcm_s8 \ - --enable-decoder=pcm_s8_planar \ - --enable-decoder=pcm_u16be \ - --enable-decoder=pcm_u16le \ - --enable-decoder=pcm_u24be \ - --enable-decoder=pcm_u24le \ - --enable-decoder=pcm_u32be \ - --enable-decoder=pcm_u32le \ - --enable-decoder=pcm_u8 \ - --enable-decoder=pcm_zork \ - --enable-decoder=qcelp \ - --enable-decoder=qdm2 \ - --enable-decoder=ra_144 \ - --enable-decoder=ra_288 \ - --enable-decoder=ralf \ - --enable-decoder=roq_dpcm \ - --enable-decoder=s302m \ - --enable-decoder=shorten \ - --enable-decoder=sipr \ - --enable-decoder=smackaud \ - --enable-decoder=sol_dpcm \ - --enable-decoder=sonic \ - --enable-decoder=libspeex \ - --enable-decoder=tak \ - --enable-decoder=truehd \ - --enable-decoder=truespeech \ - --enable-decoder=tta \ - --enable-decoder=twinvq \ - --enable-decoder=vima \ - --enable-decoder=vmdaudio \ - --enable-decoder=vorbis \ - --enable-decoder=ffwavesynth \ - --enable-decoder=wavpack \ - --enable-decoder=ws_snd1 \ - --enable-decoder=wmalossless \ - --enable-decoder=wmapro \ - --enable-decoder=wmav1 \ - --enable-decoder=wmav2 \ - --enable-decoder=wmavoice \ - --enable-decoder=xan_dpcm \ - --enable-libspeex diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/libao-configure-mingw32.sh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/libao-configure-mingw32.sh deleted file mode 100644 index 8f975d1fb3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/libao-configure-mingw32.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -./configure \ - --prefix=$PREFIX \ - --enable-shared diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/libspeex-configure-mingw32.sh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/libspeex-configure-mingw32.sh deleted file mode 100644 index d22b073303..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/winlibs/scripts/libspeex-configure-mingw32.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -./configure \ - --prefix=$PREFIX \ - --enable-static \ - --disable-shared diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordbyauto.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordbyauto.cc deleted file mode 100644 index a3a20372e9..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordbyauto.cc +++ /dev/null @@ -1,114 +0,0 @@ -#include -#include -#include "wordbyauto.hh" -#include "uiauto.hh" - -#include -#include "gddebug.hh" - -class GDAutomationClient { -public: - GDAutomationClient(); - ~GDAutomationClient(); - bool getWordAtPoint( POINT pt ); - WCHAR *getText() { return buffer; } -private: - WCHAR buffer[256]; - IUIAutomation *pGDAutomation; - IUIAutomationTreeWalker *pTree; -}; - -GDAutomationClient gdAuto; - -GDAutomationClient::GDAutomationClient() -{ -HRESULT hr; - CoInitializeEx( NULL, COINIT_APARTMENTTHREADED ); - hr = CoCreateInstance( CLSID_CUIAutomation , NULL, CLSCTX_INPROC_SERVER, IID_IUIAutomation, (void**)&pGDAutomation ); - if( hr != S_OK ) pGDAutomation = NULL; - pTree = NULL; - if( pGDAutomation != NULL ) - hr = pGDAutomation->get_RawViewWalker( &pTree ); - memset( buffer, 0, sizeof(buffer) ); -} - -GDAutomationClient::~GDAutomationClient() -{ - if( pTree != NULL ) pTree->Release(); - if( pGDAutomation != NULL ) pGDAutomation->Release(); - CoUninitialize(); -} - -bool GDAutomationClient::getWordAtPoint( POINT pt ) -{ -HRESULT hr; -IUIAutomationTextPattern *pTextPattern; -IUIAutomationTextRange *pTextRange; -IUIAutomationElement *pElement, *pParent; -BSTR bstr; -RECT r = { 0, 0, 0, 0 }; -bool bGoUp; - - GD_DPRINTF("\nEntering getWordAtPoint\n"); - - if( pGDAutomation == NULL ) return false; - - buffer[0] = 0; - pElement = NULL; - hr = pGDAutomation->ElementFromPoint( pt, &pElement ); - GD_DPRINTF("ElementFromPoint return hr=%08lX, ptr=%p\n", hr, pElement); - if( hr != S_OK || pElement == NULL ) - return false; - - pTextPattern = NULL; - bGoUp = false; - while( pElement != NULL ) { - hr = pElement->GetCurrentPatternAs( UIA_TextPatternId, IID_IUIAutomationTextPattern, (void**)&pTextPattern ); - if( hr == S_OK && pTextPattern != NULL ) - break; - if( pTree == NULL ) { - pElement->Release(); - return false; - } - pParent = NULL; - hr = pTree->GetParentElement( pElement, &pParent ); - pElement->Release(); - pElement = pParent; - bGoUp = TRUE; - } - if( pElement == NULL ) - return false; - - if( !bGoUp ) { - hr = pElement->get_CurrentBoundingRectangle( &r ); - if( hr == S_OK) { - pt.x -= r.left; - pt.y -= r.top; - } - } - pElement->Release(); - - pTextRange = NULL; - hr = pTextPattern->RangeFromPoint( pt, &pTextRange ); - pTextPattern->Release(); - if( hr != S_OK || pTextRange == NULL ) - return false; - - hr = pTextRange->ExpandToEnclosingUnit( TextUnit_Word ); - if( hr == S_OK) { - hr = pTextRange->GetText( 255, &bstr ); - if (hr == S_OK) { - wsprintfW( buffer, L"%s", (LPCWSTR)bstr ); - SysFreeString( bstr ); - } - } - pTextRange->Release(); - - return ( buffer[0] != 0 ); -} - -WCHAR *gdGetWordAtPointByAutomation( POINT pt ) -{ - if( gdAuto.getWordAtPoint( pt ) ) return gdAuto.getText(); - else return NULL; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordbyauto.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordbyauto.hh deleted file mode 100644 index 6a4cebbf50..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordbyauto.hh +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __WORD_BY_AUTO_HH_INCLUDED -#define __WORD_BY_AUTO_HH_INCLUDED - -WCHAR *gdGetWordAtPointByAutomation( POINT pt ); - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordfinder.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordfinder.cc deleted file mode 100644 index 768de598f3..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordfinder.cc +++ /dev/null @@ -1,524 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "wordfinder.hh" -#include "folding.hh" -#include "wstring_qt.hh" -#include -#include -#include "gddebug.hh" - -using std::vector; -using std::list; -using gd::wstring; -using gd::wchar; -using std::map; -using std::pair; - -WordFinder::WordFinder( QObject * parent ): - QObject( parent ), searchInProgress( false ), - updateResultsTimer( this ), - searchQueued( false ) -{ - updateResultsTimer.setInterval( 1000 ); // We use a one second update timer - updateResultsTimer.setSingleShot( true ); - - connect( &updateResultsTimer, SIGNAL( timeout() ), - this, SLOT( updateResults() ), Qt::QueuedConnection ); -} - -WordFinder::~WordFinder() -{ - clear(); -} - -void WordFinder::prefixMatch( QString const & str, - std::vector< sptr< Dictionary::Class > > const & dicts, - unsigned long maxResults, - Dictionary::Features features ) -{ - cancel(); - - searchQueued = true; - searchType = PrefixMatch; - inputWord = str; - inputDicts = &dicts; - requestedMaxResults = maxResults; - requestedFeatures = features; - - resultsArray.clear(); - resultsIndex.clear(); - searchResults.clear(); - - if ( queuedRequests.empty() ) - { - // No requests are queued, no need to wait for them to finish. - startSearch(); - } - - // Else some requests are still queued, last one to finish would trigger - // new search. This shouldn't take a lot of time, since they were all - // cancelled, but still it could take some time. -} -void WordFinder::stemmedMatch( QString const & str, - std::vector< sptr< Dictionary::Class > > const & dicts, - unsigned minLength, - unsigned maxSuffixVariation, - unsigned long maxResults, - Dictionary::Features features ) -{ - cancel(); - - searchQueued = true; - searchType = StemmedMatch; - inputWord = str; - inputDicts = &dicts; - requestedMaxResults = maxResults; - requestedFeatures = features; - stemmedMinLength = minLength; - stemmedMaxSuffixVariation = maxSuffixVariation; - - resultsArray.clear(); - resultsIndex.clear(); - searchResults.clear(); - - if ( queuedRequests.empty() ) - startSearch(); -} - -void WordFinder::expressionMatch( QString const & str, - std::vector< sptr< Dictionary::Class > > const & dicts, - unsigned long maxResults, - Dictionary::Features features ) -{ - cancel(); - - searchQueued = true; - searchType = ExpressionMatch; - inputWord = str; - inputDicts = &dicts; - requestedMaxResults = maxResults; - requestedFeatures = features; - - resultsArray.clear(); - resultsIndex.clear(); - searchResults.clear(); - - if ( queuedRequests.empty() ) - { - // No requests are queued, no need to wait for them to finish. - startSearch(); - } -} - -void WordFinder::startSearch() -{ - if ( !searchQueued ) - return; // Search was probably cancelled - - // Clear the requests just in case - queuedRequests.clear(); - finishedRequests.clear(); - - searchErrorString.clear(); - searchResultsUncertain = false; - - searchQueued = false; - searchInProgress = true; - - // Gather all writings of the word - - if ( allWordWritings.size() != 1 ) - allWordWritings.resize( 1 ); - - allWordWritings[ 0 ] = gd::toWString( inputWord ); - - for( size_t x = 0; x < inputDicts->size(); ++x ) - { - vector< wstring > writings = (*inputDicts)[ x ]->getAlternateWritings( allWordWritings[ 0 ] ); - - allWordWritings.insert( allWordWritings.end(), writings.begin(), writings.end() ); - } - - // Query each dictionary for all word writings - - for( size_t x = 0; x < inputDicts->size(); ++x ) - { - if ( ( (*inputDicts)[ x ]->getFeatures() & requestedFeatures ) != requestedFeatures ) - continue; - - for( size_t y = 0; y < allWordWritings.size(); ++y ) - { - try - { - sptr< Dictionary::WordSearchRequest > sr = - ( searchType == PrefixMatch || searchType == ExpressionMatch ) ? - (*inputDicts)[ x ]->prefixMatch( allWordWritings[ y ], requestedMaxResults ) : - (*inputDicts)[ x ]->stemmedMatch( allWordWritings[ y ], stemmedMinLength, stemmedMaxSuffixVariation, requestedMaxResults ); - - connect( sr.get(), SIGNAL( finished() ), - this, SLOT( requestFinished() ), Qt::QueuedConnection ); - - queuedRequests.push_back( sr ); - } - catch( std::exception & e ) - { - gdWarning( "Word \"%s\" search error (%s) in \"%s\"\n", - inputWord.toUtf8().data(), e.what(), (*inputDicts)[ x ]->getName().c_str() ); - } - } - } - - // Handle any requests finished already - - requestFinished(); -} - -void WordFinder::cancel() -{ - searchQueued = false; - searchInProgress = false; - - cancelSearches(); -} - -void WordFinder::clear() -{ - cancel(); - queuedRequests.clear(); - finishedRequests.clear(); -} - -void WordFinder::requestFinished() -{ - bool newResults = false; - - // See how many new requests have finished, and if we have any new results - for( list< sptr< Dictionary::WordSearchRequest > >::iterator i = - queuedRequests.begin(); i != queuedRequests.end(); ) - { - if ( (*i)->isFinished() ) - { - if ( searchInProgress && !(*i)->getErrorString().isEmpty() ) - searchErrorString = tr( "Failed to query some dictionaries." ); - - if ( (*i)->isUncertain() ) - searchResultsUncertain = true; - - if ( (*i)->matchesCount() ) - { - newResults = true; - - // This list is handled by updateResults() - finishedRequests.splice( finishedRequests.end(), queuedRequests, i++ ); - } - else // We won't do anything with it anymore, so we erase it - queuedRequests.erase( i++ ); - } - else - ++i; - } - - if ( !searchInProgress ) - { - // There is no search in progress, so we just wait until there's - // no requests left - - if ( queuedRequests.empty() ) - { - // We got rid of all queries, queued search can now start - finishedRequests.clear(); - - if ( searchQueued ) - startSearch(); - } - - return; - } - - if ( newResults && queuedRequests.size() && !updateResultsTimer.isActive() ) - { - // If we have got some new results, but not all of them, we would start a - // timer to update a user some time in the future - updateResultsTimer.start(); - } - - if ( queuedRequests.empty() ) - { - // Search is finished. - updateResults(); - } -} - -namespace { - - -unsigned saturated( unsigned x ) -{ - return x < 255 ? x : 255; -} - -/// Checks whether the first string has the second one inside, surrounded from -/// both sides by either whitespace, punctuation or begin/end of string. -/// If true is returned, pos holds the offset in the haystack. If the offset -/// is larger than 255, it is set to 255. -bool hasSurroundedWithWs( wstring const & haystack, wstring const & needle, - wstring::size_type & pos ) -{ - if ( haystack.size() < needle.size() ) - return false; // Needle won't even fit into a haystack - - for( pos = 0; ; ++pos ) - { - pos = haystack.find( needle, pos ); - - if ( pos == wstring::npos ) - return false; // Not found - - if ( ( !pos || Folding::isWhitespace( haystack[ pos - 1 ] ) || - Folding::isPunct( haystack[ pos - 1 ] ) ) && - ( ( pos + needle.size() == haystack.size() ) || - Folding::isWhitespace( haystack[ pos + needle.size() ] ) || - Folding::isPunct( haystack[ pos + needle.size() ] ) ) ) - { - pos = saturated( pos ); - - return true; - } - } -} - -} - -void WordFinder::updateResults() -{ - if ( !searchInProgress ) - return; // Old queued signal - - if ( updateResultsTimer.isActive() ) - updateResultsTimer.stop(); // Can happen when we were done before it'd expire - - wstring original = Folding::applySimpleCaseOnly( allWordWritings[ 0 ] ); - - for( list< sptr< Dictionary::WordSearchRequest > >::iterator i = - finishedRequests.begin(); i != finishedRequests.end(); ) - { - for( size_t count = (*i)->matchesCount(), x = 0; x < count; ++x ) - { - wstring match = (**i)[ x ].word; - int weight = (**i)[ x ].weight; - wstring lowerCased = Folding::applySimpleCaseOnly( match ); - - if( searchType == ExpressionMatch ) - { - unsigned ws; - - for( ws = 0; ws < allWordWritings.size(); ws++ ) - { - if( ws == 0 ) - { - // Check for prefix match with original expression - if( lowerCased.compare( 0, original.size(), original ) == 0 ) - break; - } - else - if( lowerCased == Folding::applySimpleCaseOnly( allWordWritings[ ws ] ) ) - break; - } - - if( ws >= allWordWritings.size() ) - { - // No exact matches found - continue; - } - weight = ws; - } - pair< ResultsIndex::iterator, bool > insertResult = - resultsIndex.insert( pair< wstring, ResultsArray::iterator >( lowerCased, - resultsArray.end() ) ); - - if ( !insertResult.second ) - { - // Wasn't inserted since there was already an item -- check the case - if ( insertResult.first->second->word != match ) - { - // The case is different -- agree on a lowercase version - insertResult.first->second->word = lowerCased; - } - if ( !weight && insertResult.first->second->wasSuggested ) - insertResult.first->second->wasSuggested = false; - } - else - { - resultsArray.push_back( OneResult() ); - - resultsArray.back().word = match; - resultsArray.back().rank = INT_MAX; - resultsArray.back().wasSuggested = ( weight != 0 ); - - insertResult.first->second = --resultsArray.end(); - } - } - finishedRequests.erase( i++ ); - } - - size_t maxSearchResults = 500; - - if ( resultsArray.size() ) - { - if ( searchType == PrefixMatch ) - { - /// Assign each result a category, storing it in the rank's field - - enum Category - { - ExactMatch, - ExactNoFullCaseMatch, - ExactNoDiaMatch, - ExactNoPunctMatch, - ExactNoWsMatch, - ExactInsideMatch, - ExactNoDiaInsideMatch, - ExactNoPunctInsideMatch, - PrefixMatch, - PrefixNoDiaMatch, - PrefixNoPunctMatch, - PrefixNoWsMatch, - WorstMatch, - Multiplier = 256 // Categories should be multiplied by Multiplier - }; - - for( unsigned wr = 0; wr < allWordWritings.size(); ++wr ) - { - wstring target = Folding::applySimpleCaseOnly( allWordWritings[ wr ] ); - wstring targetNoFullCase = Folding::applyFullCaseOnly( target ); - wstring targetNoDia = Folding::applyDiacriticsOnly( targetNoFullCase ); - wstring targetNoPunct = Folding::applyPunctOnly( targetNoDia ); - wstring targetNoWs = Folding::applyWhitespaceOnly( targetNoPunct ); - - wstring::size_type matchPos = 0; - - for( ResultsIndex::const_iterator i = resultsIndex.begin(), j = resultsIndex.end(); - i != j; ++i ) - { - wstring resultNoFullCase, resultNoDia, resultNoPunct, resultNoWs; - - int rank; - - if ( i->first == target ) - rank = ExactMatch * Multiplier; - else - if ( ( resultNoFullCase = Folding::applyFullCaseOnly( i->first ) ) == targetNoFullCase ) - rank = ExactNoFullCaseMatch * Multiplier; - else - if ( ( resultNoDia = Folding::applyDiacriticsOnly( resultNoFullCase ) ) == targetNoDia ) - rank = ExactNoDiaMatch * Multiplier; - else - if ( ( resultNoPunct = Folding::applyPunctOnly( resultNoDia ) ) == targetNoPunct ) - rank = ExactNoPunctMatch * Multiplier; - else - if ( ( resultNoWs = Folding::applyWhitespaceOnly( resultNoPunct ) ) == targetNoWs ) - rank = ExactNoWsMatch * Multiplier; - else - if ( hasSurroundedWithWs( i->first, target, matchPos ) ) - rank = ExactInsideMatch * Multiplier + matchPos; - else - if ( hasSurroundedWithWs( resultNoDia, targetNoDia, matchPos ) ) - rank = ExactNoDiaInsideMatch * Multiplier + matchPos; - else - if ( hasSurroundedWithWs( resultNoPunct, targetNoPunct, matchPos ) ) - rank = ExactNoPunctInsideMatch * Multiplier + matchPos; - else - if ( i->first.size() > target.size() && i->first.compare( 0, target.size(), target ) == 0 ) - rank = PrefixMatch * Multiplier + saturated( i->first.size() ); - else - if ( resultNoDia.size() > targetNoDia.size() && resultNoDia.compare( 0, targetNoDia.size(), targetNoDia ) == 0 ) - rank = PrefixNoDiaMatch * Multiplier + saturated( i->first.size() ); - else - if ( resultNoPunct.size() > targetNoPunct.size() && resultNoPunct.compare( 0, targetNoPunct.size(), targetNoPunct ) == 0 ) - rank = PrefixNoPunctMatch * Multiplier + saturated( i->first.size() ); - else - if ( resultNoWs.size() > targetNoWs.size() && resultNoWs.compare( 0, targetNoWs.size(), targetNoWs ) == 0 ) - rank = PrefixNoWsMatch * Multiplier + saturated( i->first.size() ); - else - rank = WorstMatch * Multiplier; - - if ( i->second->rank > rank ) - i->second->rank = rank; // We store the best rank of any writing - } - } - - resultsArray.sort( SortByRank() ); - } - else - if( searchType == StemmedMatch ) - { - // Handling stemmed matches - - // We use two factors -- first is the number of characters strings share - // in their beginnings, and second, the length of the strings. Here we assign - // only the first one, storing it in rank. Then we sort the results using - // SortByRankAndLength. - for( unsigned wr = 0; wr < allWordWritings.size(); ++wr ) - { - wstring target = Folding::apply( allWordWritings[ wr ] ); - - for( ResultsIndex::const_iterator i = resultsIndex.begin(), j = resultsIndex.end(); - i != j; ++i ) - { - wstring resultFolded = Folding::apply( i->first ); - - int charsInCommon = 0; - - for( wchar const * t = target.c_str(), * r = resultFolded.c_str(); - *t && *t == *r; ++t, ++r, ++charsInCommon ) ; - - int rank = -charsInCommon; // Negated so the lesser-than - // comparison would yield right - // results. - - if ( i->second->rank > rank ) - i->second->rank = rank; // We store the best rank of any writing - } - } - - resultsArray.sort( SortByRankAndLength() ); - - maxSearchResults = 15; - } - } - - searchResults.clear(); - searchResults.reserve( resultsArray.size() < maxSearchResults ? resultsArray.size() : maxSearchResults ); - - for( ResultsArray::const_iterator i = resultsArray.begin(), j = resultsArray.end(); - i != j; ++i ) - { - //DPRINTF( "%d: %ls\n", i->second, i->first.c_str() ); - - if ( searchResults.size() < maxSearchResults ) - searchResults.push_back( std::pair< QString, bool >( gd::toQString( i->word ), i->wasSuggested ) ); - else - break; - } - - if ( queuedRequests.size() ) - { - // There are still some unhandled results. - emit updated(); - } - else - { - // That were all of them. - searchInProgress = false; - emit finished(); - } -} - -void WordFinder::cancelSearches() -{ - for( list< sptr< Dictionary::WordSearchRequest > >::iterator i = - queuedRequests.begin(); i != queuedRequests.end(); ++i ) - (*i)->cancel(); -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordfinder.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordfinder.hh deleted file mode 100644 index 581dedb702..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordfinder.hh +++ /dev/null @@ -1,197 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __WORDFINDER_HH_INCLUDED__ -#define __WORDFINDER_HH_INCLUDED__ - -#include -#include -#include -#include -#include -#include -#include -#include "dictionary.hh" - -/// This component takes care of finding words. The search is asyncronous. -/// This means the GUI doesn't get blocked during the sometimes lenghtly -/// process of finding words. -class WordFinder: public QObject -{ - Q_OBJECT - -public: - - typedef std::vector< std::pair< QString, bool > > SearchResults; // bool is a "was suggested" flag - -private: - - SearchResults searchResults; - QString searchErrorString; - bool searchResultsUncertain; - std::list< sptr< Dictionary::WordSearchRequest > > queuedRequests, - finishedRequests; - bool searchInProgress; - - QTimer updateResultsTimer; - - // Saved search params - bool searchQueued; - QString inputWord; - enum SearchType - { - PrefixMatch, - StemmedMatch, - ExpressionMatch - } searchType; - unsigned long requestedMaxResults; - Dictionary::Features requestedFeatures; - unsigned stemmedMinLength; - unsigned stemmedMaxSuffixVariation; - - std::vector< sptr< Dictionary::Class > > const * inputDicts; - - std::vector< gd::wstring > allWordWritings; // All writings of the inputWord - - struct OneResult - { - gd::wstring word; - int rank; - bool wasSuggested; - }; - - // Maps lowercased string to the original one. This catches all duplicates - // without case sensitivity. Made as an array and a map indexing that array. - typedef std::list< OneResult > ResultsArray; - typedef std::map< gd::wstring, ResultsArray::iterator > ResultsIndex; - ResultsArray resultsArray; - ResultsIndex resultsIndex; - -public: - - WordFinder( QObject * parent ); - ~WordFinder(); - - /// Do the standard prefix-match search in the given list of dictionaries. - /// Some dictionaries might only support exact matches -- for them, only - /// the exact matches would be found. All search results are put into a single - /// list containing the exact matches first, then the prefix ones. Duplicate - /// matches from different dictionaries are merged together. - /// If a list of features is specified, the search will only be performed in - /// the dictionaries which possess all the features requested. - /// If there already was a prefixMatch operation underway, it gets cancelled - /// and the new one replaces it. - void prefixMatch( QString const &, - std::vector< sptr< Dictionary::Class > > const &, - unsigned long maxResults = 40, - Dictionary::Features = Dictionary::NoFeatures ); - - /// Do a stemmed-match search in the given list of dictionaries. All comments - /// from prefixMatch() generally apply as well. - void stemmedMatch( QString const &, - std::vector< sptr< Dictionary::Class > > const &, - unsigned minLength = 3, - unsigned maxSuffixVariation = 3, - unsigned long maxResults = 30, - Dictionary::Features = Dictionary::NoFeatures ); - - /// Do the expression-match search in the given list of dictionaries. - /// Function find exact matches for one of spelling suggestions. - void expressionMatch( QString const &, - std::vector< sptr< Dictionary::Class > > const &, - unsigned long maxResults = 40, - Dictionary::Features = Dictionary::NoFeatures ); - - /// Returns the vector containing search results from the last operation. - /// If it didn't finish yet, the result is not final and may be changing - /// over time. - SearchResults const & getResults() const - { return searchResults; } - - /// Returns a human-readable error string for the last finished request. Empty - /// string means it finished without any error. - QString const & getErrorString() - { return searchErrorString; } - - /// Returns true if the search was inconclusive -- that is, there may be more - /// results than the ones returned. - bool wasSearchUncertain() const - { return searchResultsUncertain; } - - /// Cancels any pending search operation, if any. - void cancel(); - - /// Cancels any pending search operation, if any, and makes sure no pending - /// requests exist, and hence no dictionaries are used anymore. Unlike - /// cancel(), this may take some time to finish. - void clear(); - -signals: - - /// Indicates that the search has got some more results, and continues - /// searching. - void updated(); - - /// Indicates that the search has finished. - void finished(); - -private slots: - - /// Called each time one of the requests gets finished - void requestFinished(); - - /// Called by updateResultsTimer to update searchResults and signal updated() - void updateResults(); - -private: - - // Starts the previously queued search. - void startSearch(); - - // Cancels all searches. Useful to do before destroying them all, since they - // would cancel in parallel. - void cancelSearches(); - - /// Compares results based on their ranks - struct SortByRank - { - bool operator () ( OneResult const & first, OneResult const & second ) - { - if ( first.rank < second.rank ) - return true; - - if ( first.rank > second.rank ) - return false; - - // Do any sort of collation here in the future. For now we just put the - // strings sorted lexicographically. - return first.word < second.word; - } - }; - - /// Compares results based on their ranks and lengths - struct SortByRankAndLength - { - bool operator () ( OneResult const & first, OneResult const & second ) - { - if ( first.rank < second.rank ) - return true; - - if ( first.rank > second.rank ) - return false; - - if ( first.word.size() < second.word.size() ) - return true; - - if ( first.word.size() > second.word.size() ) - return false; - - // Do any sort of collation here in the future. For now we just put the - // strings sorted lexicographically. - return first.word < second.word; - } - }; -}; - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordlist.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordlist.cc deleted file mode 100644 index 43e2e5c47f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordlist.cc +++ /dev/null @@ -1,156 +0,0 @@ -/* This file is (c) 2013 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include - -#include "wordlist.hh" - -WordList::WordList( QWidget * parent ) : QListWidget( parent ) -, listItemDelegate( itemDelegate() ) -{ - wordFinder = 0; - translateLine = 0; - setItemDelegate( &listItemDelegate ); -} - -void WordList::attachFinder( WordFinder * finder ) -{ - // qDebug() << "Attaching the word finder..." << finder; - - if ( wordFinder == finder ) - return; - - if ( wordFinder ) - { - disconnect( wordFinder, SIGNAL( updated() ), - this, SLOT( prefixMatchUpdated() ) ); - disconnect( wordFinder, SIGNAL( finished() ), - this, SLOT( prefixMatchFinished() ) ); - } - - wordFinder = finder; - - connect( wordFinder, SIGNAL( updated() ), - this, SLOT( prefixMatchUpdated() ) ); - connect( wordFinder, SIGNAL( finished() ), - this, SLOT( prefixMatchFinished() ) ); -} - -void WordList::prefixMatchUpdated() -{ - updateMatchResults( false ); -} - -void WordList::prefixMatchFinished() -{ - updateMatchResults( true ); -} - -void WordList::updateMatchResults( bool finished ) -{ - WordFinder::SearchResults const & results = wordFinder->getResults(); - - setUpdatesEnabled( false ); - - for( unsigned x = 0; x < results.size(); ++x ) - { - QListWidgetItem * i = item( x ); - - if ( !i ) - { - i = new QListWidgetItem( results[ x ].first, this ); - - if ( results[ x ].second ) - { - QFont f = i->font(); - f.setItalic( true ); - i->setFont( f ); - } - addItem( i ); - } - else - { - if ( i->text() != results[ x ].first ) - i->setText( results[ x ].first ); - - QFont f = i->font(); - if ( f.italic() != results[ x ].second ) - { - f.setItalic( results[ x ].second ); - i->setFont( f ); - } - } - - i->setTextAlignment(Qt::AlignLeft); - } - - while ( count() > (int) results.size() ) - { - // Chop off any extra items that were there - QListWidgetItem * i = takeItem( count() - 1 ); - - if ( i ) - delete i; - else - break; - } - - if ( count() ) - { - scrollToItem( item( 0 ), QAbstractItemView::PositionAtTop ); - setCurrentItem( 0, QItemSelectionModel::Clear ); - } - - setUpdatesEnabled( true ); - - if ( finished ) - { - unsetCursor(); - - refreshTranslateLine(); - - if ( !wordFinder->getErrorString().isEmpty() ) - emit statusBarMessage( tr( "WARNING: %1" ).arg( wordFinder->getErrorString() ), - 20000 , QPixmap( ":/icons/error.png" ) ); - } - - if( !results.empty() && results.front().first.isRightToLeft() ) - setLayoutDirection( Qt::RightToLeft ); - else - setLayoutDirection( Qt::LeftToRight ); - - emit contentChanged(); -} - -void WordList::refreshTranslateLine() -{ - if ( !translateLine ) - return; - - // Visually mark the input line to mark if there's no results - bool setMark = wordFinder->getResults().empty() && !wordFinder->wasSearchUncertain(); - - if ( translateLine->property( "noResults" ).toBool() != setMark ) - { - translateLine->setProperty( "noResults", setMark ); - translateLine->setStyleSheet( translateLine->styleSheet() ); - } - -} - -void WordList::resizeEvent( QResizeEvent * ev ) -{ - // In some rare cases Qt start send QResizeEvent recursively - // up to full stack depletion (tested on Qt 4.8.5, 4.8.6). - // We use this trick to break such suicidal process. - - for( int x = 0; x < resizedSizes.size(); x++ ) - if( resizedSizes.at( x ) == ev->size() ) - return; - - resizedSizes.push_back( ev->size() ); - - QListWidget::resizeEvent( ev ); - - resizedSizes.pop_back(); -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordlist.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordlist.hh deleted file mode 100644 index 71b0131f28..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wordlist.hh +++ /dev/null @@ -1,46 +0,0 @@ -/* This file is (c) 2013 Tvangeste - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef WORDLIST_HH -#define WORDLIST_HH - -#include -#include - -#include "wordfinder.hh" -#include "delegate.hh" - -class WordList : public QListWidget -{ - Q_OBJECT -public: - explicit WordList(QWidget * parent = 0); - void attachFinder(WordFinder * finder); - virtual void setTranslateLine(QLineEdit * line) - { translateLine = line; } - -protected: - virtual void resizeEvent( QResizeEvent * ev ); - -signals: - void statusBarMessage(QString const & message, int timeout = 0, QPixmap const & pixmap = QPixmap()); - void contentChanged(); - -public slots: - -private slots: - void prefixMatchUpdated(); - void prefixMatchFinished(); - void updateMatchResults( bool finished ); - -private: - void refreshTranslateLine(); - - WordFinder * wordFinder; - QLineEdit * translateLine; - WordListItemDelegate listItemDelegate; - - QVector< QSize > resizedSizes; -}; - -#endif // WORDLIST_HH diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring.cc deleted file mode 100644 index 1bde0f891e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring.cc +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __WIN32 - -#include "wstring.hh" -#include "iconv.hh" -#include - -namespace gd -{ - wstring __nativeToWs( wchar_t const * str ) - { - return Iconv::toWstring( "WCHAR_T", str, wcslen( str ) * sizeof( wchar_t ) ); - } -} - -#endif - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring.hh deleted file mode 100644 index 3abfd22ae2..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring.hh +++ /dev/null @@ -1,64 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __WSTRING_HH_INCLUDED__ -#define __WSTRING_HH_INCLUDED__ - -#include - -/// While most systems feature a 4-byte wchar_t and an UCS-4 Unicode -/// characters representation for it, Windows uses 2-byte wchar_t and an UTF-16 -/// encoding. The use of UTF-16 on Windows is most probably a homeage to an -/// ancient history dating back to when there was nothing but a BMP, and -/// all Unicode chars were 2 bytes long. After the Unicode got expanded past -/// two-byte representation, the guys at Microsoft had probably decided that -/// the least painful way to go is to just switch to UTF-16. Or so's the theory. -/// -/// Now, the UTF family is an encoding, made for transit purposes -- is not a -/// representation. While it's good for passthrough, it's not directly -/// applicable for manipulation on Unicode symbols. It must be decoded first to -/// a normal UCS. Think like this: UTF to UCS is something like Base64 to ASCII. -/// -/// The distinction between Microsoft platform and all other ones is that while -/// the latters are stuck in an 8-bit era and use UTF-8 to pass unicode around -/// through its venerable interfaces, the former one is stuck in a 16-bit era, -/// and uses UTF-16 instead. Neither solution allows for direct processing of -/// the symbols in those strings without decoding them first. And the 16-bit -/// solution is even more ugly than the 8-bit one, because it doesn't have a -/// benefit of ASCII compatibility, having a much more useless UCS-2 -/// compatibility instead. It's stuck in the middle of nowhere, really. -/// -/// The question is, what are we going to do with all this? When we do Unicode -/// processing in GoldenDict, we want to use real Unicode charaters, not some -/// UTF-16 encoded ones. To that end, we have two options under Windows: first, -/// use QString, and second, use basic_string< unsigned int >. -/// While we use QStrings for the GUI and other non-critical code, there is a -/// serious doubt on the efficiency of QStrings for bulk text processing. And -/// since a lot of code uses wstring already, it would be much easier to convert -/// it to use basic_string< unsigned int > instead, since it shares the same -/// template, and therefore the interface too, with wstring. That's why we -/// introduce our own gd::wstring and gd::wchar types here. On all systems but -/// Windows, they are equivalent to std::wstring and wchar_t. On Windows, they -/// are basic_string< unsigned int > and unsigned int. - -namespace gd -{ - #ifdef __WIN32 - - typedef unsigned int wchar; - typedef std::basic_string< wchar > wstring; - - // GD_NATIVE_TO_WS is used to convert L"" strings to a const pointer to - // wchar. - wstring __nativeToWs( wchar_t const * ); - #define GD_NATIVE_TO_WS( str ) ( gd::__nativeToWs( ( str ) ).c_str() ) - - #else - - typedef wchar_t wchar; - using std::wstring; - #define GD_NATIVE_TO_WS( str ) ( str ) - #endif -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring_qt.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring_qt.cc deleted file mode 100644 index 2dfdb9c5fd..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring_qt.cc +++ /dev/null @@ -1,42 +0,0 @@ -#include "wstring_qt.hh" -#include - -namespace gd -{ - #ifdef __WIN32 - - QString toQString( wstring const & in ) - { - return QString::fromUcs4( in.c_str() ); - } - - #else - - QString toQString( wstring const & in ) - { - return QString::fromStdWString( in ); - } - - #endif - - wstring toWString( QString const & in ) - { - QVector< unsigned int > v = in.toUcs4(); - - // Fix for QString instance which contains non-BMP characters - // Qt will created unexpected null characters may confuse btree indexer. - // Related: https://bugreports.qt-project.org/browse/QTBUG-25536 - int n = v.size(); - while ( n > 0 && v[ n - 1 ] == 0 ) n--; - if ( n != v.size() ) - v.resize( n ); - - return wstring( ( const wchar * ) v.constData(), v.size() ); - } - - wstring normalize( const wstring & str ) - { - return gd::toWString( gd::toQString( str ).normalized( QString::NormalizationForm_C ) ); - } - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring_qt.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring_qt.hh deleted file mode 100644 index 96b6160d53..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/wstring_qt.hh +++ /dev/null @@ -1,20 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __WSTRING_QT_HH_INCLUDED__ -#define __WSTRING_QT_HH_INCLUDED__ - -/// This file adds conversions between gd::wstring and QString. See wstring.hh -/// for more details on gd::wstring. - -#include "wstring.hh" -#include - -namespace gd -{ - QString toQString( wstring const & ); - wstring toWString( QString const & ); - wstring normalize( wstring const & ); -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/x64.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/x64.cc deleted file mode 100644 index f0f9d7e466..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/x64.cc +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include - -#ifndef _UNICODE -#define _UNICODE -#endif - -#include "x64.hh" -#include -#include - -typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); -PROCESS_INFORMATION pInfo; - -#ifndef Q_OS_WIN64 -bool isWow64() -{ - static LPFN_ISWOW64PROCESS fnIsWow64Process; - BOOL bIsWow64 = FALSE; - - if( NULL == fnIsWow64Process ) - fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle( _T("kernel32") ), "IsWow64Process" ); - if( NULL != fnIsWow64Process ) - { - if ( !fnIsWow64Process( GetCurrentProcess(), &bIsWow64 ) ) - return false; - } - return bIsWow64; -} -#endif - -bool installx64Hooks() -{ -STARTUPINFO startup; -#ifndef Q_OS_WIN64 - if( !isWow64() ) - return false; -#endif - if( pInfo.hProcess != NULL ) - removex64Hooks(); - QDir dir = QCoreApplication::applicationDirPath(); -#ifdef Q_OS_WIN64 - if( !dir.cd("x86") ) - return false; - QString starterProc = QDir::toNativeSeparators( dir.filePath( "x86helper.exe" ) ); -#else - if( !dir.cd("x64") ) - return false; - QString starterProc = QDir::toNativeSeparators( dir.filePath( "x64helper.exe" ) ); -#endif - - memset( &startup, 0, sizeof(startup) ); - startup.cb = sizeof(startup); - - BOOL b = CreateProcess( starterProc.toStdWString().c_str(), NULL, NULL, NULL, FALSE, CREATE_NO_WINDOW | DETACHED_PROCESS, NULL, NULL, &startup, &pInfo ); - if( !b ) - pInfo.hProcess = NULL; - - return b; -} - -void removex64Hooks() -{ - if( pInfo.hProcess == NULL ) - return; - PostThreadMessage( pInfo.dwThreadId, WM_QUIT, 0, 0 ); - DWORD res = WaitForSingleObject( pInfo.hProcess, 3000 ); - if( res == WAIT_TIMEOUT ) - TerminateProcess( pInfo.hProcess, 1 ); - CloseHandle( pInfo.hProcess ); - CloseHandle( pInfo.hThread ); - pInfo.hProcess = NULL; -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/x64.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/x64.hh deleted file mode 100644 index f8c223aa1b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/x64.hh +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef __X64_HH_INCLUDED__ -#define __X64_HH_INCLUDED__ - -bool isWow64(); -bool installx64Hooks(); -void removex64Hooks(); - -#endif // __X64_HH_INCLUDED__ diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf.cc deleted file mode 100644 index 4672de9df8..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf.cc +++ /dev/null @@ -1,1457 +0,0 @@ -/* This file is (c) 2008-2009 Konstantin Isakov - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "xdxf.hh" -#include "btreeidx.hh" -#include "folding.hh" -#include "utf8.hh" -#include "chunkedstorage.hh" -#include "dictzip.h" -#include "htmlescape.hh" -#include "fsencoding.hh" -#include -#include -#include -#include -#include -#include -#include -#include "gddebug.hh" -#include "wstring_qt.hh" -#include "xdxf2html.hh" -#include "ufile.hh" -#include "dictzip.h" -#include "langcoder.hh" -#include "indexedzip.hh" -#include "filetype.hh" -#include "tiff.hh" -#include "ftshelpers.hh" - -#ifdef _MSC_VER -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "qt4x5.hh" - -namespace Xdxf { - -using std::map; -using std::multimap; -using std::pair; -using std::set; -using std::string; -using gd::wstring; -using std::vector; -using std::list; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX_STR( exNotXdxfFile, "The file is not an XDXF file:", Dictionary::Ex ) -DEF_EX( exCorruptedIndex, "The index file is corrupted", Dictionary::Ex ) -DEF_EX_STR( exDictzipError, "DICTZIP error", Dictionary::Ex ) - -enum -{ - Signature = 0x46584458, // XDXF on little-endian, FXDX on big-endian - CurrentFormatVersion = 4 + BtreeIndexing::FormatVersion + Folding::Version -}; - -enum ArticleFormat -{ - Default = 0, - Visual = 1, - Logical = 2 -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, XDXF - uint32_t formatVersion; // File format version (CurrentFormatVersion) - uint32_t articleFormat; // ArticleFormat value, except that 0 = bad file - uint32_t langFrom; // Source language - uint32_t langTo; // Target language - uint32_t articleCount; // Total number of articles - uint32_t wordCount; // Total number of words - uint32_t nameAddress; // Address of an utf8 name string, in chunks - uint32_t nameSize; // And its size - uint32_t descriptionAddress; // Address of an utf8 description string, in chunks - uint32_t descriptionSize; // And its size - uint32_t hasAbrv; // Non-zero means file has abrvs at abrvAddress - uint32_t abrvAddress; // Address of abrv map in the chunked storage - uint32_t chunksOffset; // The offset to chunks' storage - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t hasZipFile; // Non-zero means there's a zip file with resources - // present - uint32_t zipIndexBtreeMaxElements; // Two fields from IndexInfo of the zip - // resource index. - uint32_t zipIndexRootOffset; - uint32_t revisionNumber; // Format revision -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion || - !header.articleFormat; -} - - - -class XdxfDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - sptr< ChunkedStorage::Reader > chunks; - Mutex dzMutex; - dictData * dz; - Mutex resourceZipMutex; - IndexedZip resourceZip; - string dictionaryName; - map< string, string > abrv; - -public: - - XdxfDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - ~XdxfDictionary(); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - - virtual QString const& getDescription(); - - virtual QString getMainFilename(); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "XDXF", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } - -protected: - - void loadIcon() throw(); - -private: - - // Loads the article, storing its headword and formatting article's data into an html. - void loadArticle( uint32_t address, - string & articleText, QString * headword = 0 ); - - friend class XdxfArticleRequest; - friend class XdxfResourceRequest; -}; - -XdxfDictionary::XdxfDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ) -{ - // Read the dictionary name - - chunks = new ChunkedStorage::Reader( idx, idxHeader.chunksOffset ); - - if ( idxHeader.nameSize ) - { - vector< char > chunk; - - dictionaryName = string( chunks->getBlock( idxHeader.nameAddress, chunk ), - idxHeader.nameSize ); - } - - // Open the file - - DZ_ERRORS error; - dz = dict_data_open( dictionaryFiles[ 0 ].c_str(), &error, 0 ); - - if ( !dz ) - throw exDictzipError( string( dz_error_str( error ) ) - + "(" + dictionaryFiles[ 0 ] + ")" ); - - // Read the abrv, if any - - if ( idxHeader.hasAbrv ) - { - vector< char > chunk; - - char * abrvBlock = chunks->getBlock( idxHeader.abrvAddress, chunk ); - - uint32_t total; - memcpy( &total, abrvBlock, sizeof( uint32_t ) ); - abrvBlock += sizeof( uint32_t ); - - while( total-- ) - { - uint32_t keySz; - memcpy( &keySz, abrvBlock, sizeof( uint32_t ) ); - abrvBlock += sizeof( uint32_t ); - - char * key = abrvBlock; - - abrvBlock += keySz; - - uint32_t valueSz; - memcpy( &valueSz, abrvBlock, sizeof( uint32_t ) ); - abrvBlock += sizeof( uint32_t ); - - abrv[ string( key, keySz ) ] = string( abrvBlock, valueSz ); - - abrvBlock += valueSz; - } - - // Open a resource zip file, if there's one - - if ( idxHeader.hasZipFile && - ( idxHeader.zipIndexBtreeMaxElements || - idxHeader.zipIndexRootOffset ) ) - { - resourceZip.openIndex( IndexInfo( idxHeader.zipIndexBtreeMaxElements, - idxHeader.zipIndexRootOffset ), - idx, idxMutex ); - - QString zipName = QDir::fromNativeSeparators( - FsEncoding::decode( getDictionaryFilenames().back().c_str() ) ); - - if ( zipName.endsWith( ".zip", Qt::CaseInsensitive ) ) // Sanity check - resourceZip.openZipFile( zipName ); - } - } - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -XdxfDictionary::~XdxfDictionary() -{ - if ( dz ) - dict_data_close( dz ); -} - -void XdxfDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - QFileInfo baseInfo( fileName ); - - fileName = baseInfo.absoluteDir().absoluteFilePath( "icon32.png" ); - QFileInfo info( fileName ); - - if( !info.isFile() ) - { - fileName = baseInfo.absoluteDir().absoluteFilePath( "icon16.png" ); - info = QFileInfo( fileName ); - } - - if ( info.isFile() ) - loadIconFromFile( fileName, true ); - - if ( dictionaryIcon.isNull() ) - { - // Load failed -- use default icons - - dictionaryIcon = QIcon(":/icons/icon32_xdxf.png"); - dictionaryNativeIcon = QIcon(":/icons/icon32_xdxf.png"); - } - - dictionaryIconLoaded = true; -} - -QString const& XdxfDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() ) - return dictionaryDescription; - - if( idxHeader.descriptionAddress == 0 ) - dictionaryDescription = "NONE"; - else - { - try - { - vector< char > chunk; - char * descr; - { - Mutex::Lock _( idxMutex ); - descr = chunks->getBlock( idxHeader.descriptionAddress, chunk ); - } - dictionaryDescription = QString::fromUtf8( descr, idxHeader.descriptionSize ); - } - catch(...) - { - } - } - return dictionaryDescription; -} - -QString XdxfDictionary::getMainFilename() -{ - return FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ); -} - -void XdxfDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration && getArticleCount() > FTS::MaxDictionarySizeForFastSearch ) - return; - - gdDebug( "Xdxf: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - FtsHelpers::makeFTSIndex( this, isCancelled ); - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "Xdxf: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void XdxfDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - string articleStr; - loadArticle( articleAddress, articleStr, &headword ); - - wstring wstr = Utf8::decode( articleStr ); - - text = Html::unescape( gd::toQString( wstr ) ); - } - catch( std::exception &ex ) - { - gdWarning( "Xdxf: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - -sptr< Dictionary::DataRequest > XdxfDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -/// XdxfDictionary::getArticle() - -class XdxfArticleRequest; - -class XdxfArticleRequestRunnable: public QRunnable -{ - XdxfArticleRequest & r; - QSemaphore & hasExited; - -public: - - XdxfArticleRequestRunnable( XdxfArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~XdxfArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class XdxfArticleRequest: public Dictionary::DataRequest -{ - friend class XdxfArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - XdxfDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - XdxfArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - XdxfDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new XdxfArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by XdxfArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~XdxfArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void XdxfArticleRequestRunnable::run() -{ - r.run(); -} - -void XdxfArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Now grab that article - - string headword, articleText; - - headword = chain[ x ].word; - - try - { - dict.loadArticle( chain[ x ].articleOffset, articleText ); - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ); - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - catch( std::exception &ex ) - { - gdWarning( "XDXF: Failed loading article from \"%s\", reason: %s\n", dict.getName().c_str(), ex.what() ); - } - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result; - - multimap< wstring, pair< string, string > >::const_iterator i; - - string cleaner = """""""""""" - """""""""""" - "" - ""; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { -// result += "

"; -// result += i->second.first; -// result += "

"; - result += i->second.second; - result += cleaner; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { -// result += "

"; -// result += i->second.first; -// result += "

"; - result += i->second.second; - result += cleaner; - } - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - - finish(); -} - -sptr< Dictionary::DataRequest > XdxfDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new XdxfArticleRequest( word, alts, *this ); -} - -void XdxfDictionary::loadArticle( uint32_t address, - string & articleText, - QString * headword ) -{ - // Read the properties - - vector< char > chunk; - - char * propertiesData; - - { - Mutex::Lock _( idxMutex ); - - propertiesData = chunks->getBlock( address, chunk ); - } - - if ( &chunk.front() + chunk.size() - propertiesData < 9 ) - { - articleText = string( "
Index seems corrupted
" ); - return; - } - - unsigned char fType = (unsigned char) *propertiesData; - - uint32_t articleOffset, articleSize; - - memcpy( &articleOffset, propertiesData + 1, sizeof( uint32_t ) ); - memcpy( &articleSize, propertiesData + 5, sizeof( uint32_t ) ); - - // Load the article - - char * articleBody; - - { - Mutex::Lock _( dzMutex ); - - // Note that the function always zero-pads the result. - articleBody = dict_data_read_( dz, articleOffset, articleSize, 0, 0 ); - } - - if ( !articleBody ) - { -// throw exCantReadFile( getDictionaryFilenames()[ 0 ] ); - articleText = string( "
DICTZIP error: " ) + dict_error_str( dz ) + "
"; - return; - } - - articleText = Xdxf2Html::convert( string( articleBody ), Xdxf2Html::XDXF, idxHeader.hasAbrv ? &abrv : NULL, this, - &resourceZip, fType == Logical, idxHeader.revisionNumber, headword ); - - free( articleBody ); -} - -class GzippedFile: public QIODevice -{ - gzFile gz; - -public: - - GzippedFile( char const * fileName ) throw( exCantReadFile ); - - ~GzippedFile(); - - size_t gzTell(); - - char * readDataArray( unsigned long startPos, unsigned long size ); - -protected: - - dictData *dz; - - virtual bool isSequential () const - { return false; } // Which is a lie, but else pos() won't work - - bool waitForReadyRead ( int ) - { return !gzeof( gz ); } - - qint64 bytesAvailable() const - { - return ( gzeof( gz ) ? 0 : 1 ) + QIODevice::bytesAvailable(); - } - - virtual qint64 readData( char * data, qint64 maxSize ); - - virtual bool atEnd() const; - - virtual qint64 writeData ( const char * /*data*/, qint64 /*maxSize*/ ) - { return -1; } -}; - -GzippedFile::GzippedFile( char const * fileName ) throw( exCantReadFile ) -{ - gz = gd_gzopen( fileName ); - if ( !gz ) - throw exCantReadFile( fileName ); - - DZ_ERRORS error; - dz = dict_data_open( fileName, &error, 0 ); -} - -GzippedFile::~GzippedFile() -{ - gzclose( gz ); - if( dz ) - dict_data_close( dz ); -} - -bool GzippedFile::atEnd() const -{ - return gzeof( gz ); -} - -size_t GzippedFile::gzTell() -{ - return gztell( gz ); -} - -qint64 GzippedFile::readData( char * data, qint64 maxSize ) -{ - if ( maxSize > 1 ) - maxSize = 1; - - // The returning value translates directly to QIODevice semantics - return gzread( gz, data, maxSize ); -} - -char * GzippedFile::readDataArray( unsigned long startPos, unsigned long size ) -{ - if( dz == NULL ) - return NULL; - return dict_data_read_( dz, startPos, size, 0, 0 ); -} - -QString readXhtmlData( QXmlStreamReader & stream ) -{ - QString result; - - while( !stream.atEnd() ) - { - stream.readNext(); - - if ( stream.isStartElement() ) - { - QString name = stream.name().toString(); - - result += "<" + Qt4x5::escape( name ) + " "; - - QXmlStreamAttributes attrs = stream.attributes(); - - for( int x = 0; x < attrs.size(); ++x ) - { - result += Qt4x5::escape( attrs[ x ].name().toString() ); - result += "=\"" + Qt4x5::escape( attrs[ x ].value().toString() ) + "\""; - } - - result += ">"; - - result += readXhtmlData( stream ); - - result += ""; - } - else - if ( stream.isCharacters() || stream.isWhitespace() || stream.isCDATA() ) - { - result += stream.text(); - } - else - if ( stream.isEndElement() ) - break; - } - - return result; -} - -namespace { - -/// Deal with Qt 4.5 incompatibility -QString readElementText( QXmlStreamReader & stream ) -{ -#if QT_VERSION >= 0x040600 - return stream.readElementText( QXmlStreamReader::SkipChildElements ); -#else - return stream.readElementText(); -#endif -} - -} - - -void addAllKeyTags( QXmlStreamReader & stream, list< QString > & words ) -{ - // todo implement support for tag , that overrides the article sorting order - if ( stream.name() == "k" ) - { - words.push_back( readElementText( stream ) ); - return; - } - - while( !stream.atEnd() ) - { - stream.readNext(); - - if ( stream.isStartElement() ) - addAllKeyTags( stream, words ); - else - if ( stream.isEndElement() ) - return; - } -} - -void checkArticlePosition( GzippedFile & gzFile, - uint32_t *pOffset, - uint32_t *pSize ) -{ - char * data = gzFile.readDataArray( *pOffset, *pSize ); - if( data == NULL ) - return; - QString s = QString::fromUtf8( data ); - free( data ); - int n = s.lastIndexOf( " 0 ) - *pSize -= s.size() - n; - if( s.at( 0 ) == '>') - { - *pOffset += 1; - *pSize -= 1; - } -} - -void indexArticle( GzippedFile & gzFile, - QXmlStreamReader & stream, - IndexedWords & indexedWords, - ChunkedStorage::Writer & chunks, - unsigned & articleCount, - unsigned & wordCount, - ArticleFormat defaultFormat ) -{ - ArticleFormat format( Default ); - - QStringRef formatValue = stream.attributes().value( "f" ); - - if ( formatValue == "v" ) - format = Visual; - else - if ( formatValue == "l" ) - format = Logical; - if( format == Default ) - format = defaultFormat; - size_t articleOffset = gzFile.pos() - 1; // stream.characterOffset() is loony - - // uint32_t lineNumber = stream.lineNumber(); - // uint32_t columnNumber = stream.columnNumber(); - - list< QString > words; - - while( !stream.atEnd() ) - { - stream.readNext(); - - // Find any tags and index them - if ( stream.isEndElement() ) - { - // End of the tag - - if ( words.empty() ) - { - // Nothing to index, this article didn't have any tags - qWarning( "Warning: no tags found in an article at offset 0x%x, article skipped.\n", - (unsigned) articleOffset ); - } - else - { - // Add an entry - - uint32_t offset = chunks.startNewBlock(); - - uint32_t offs = articleOffset; - uint32_t size = gzFile.pos() - 1 - articleOffset; - - checkArticlePosition( gzFile, &offs, &size ); - - unsigned char f = format; - chunks.addToBlock( &f, 1 ); - chunks.addToBlock( &offs, sizeof( offs ) ); - chunks.addToBlock( &size, sizeof( size ) ); - - // Add also first header - it's needed for full-text search - chunks.addToBlock( words.begin()->toUtf8().data(), words.begin()->toUtf8().length() + 1 ); - -// DPRINTF( "%x: %s\n", articleOffset, words.begin()->toUtf8().data() ); - - // Add words to index - - for( list< QString >::const_iterator i = words.begin(); i != words.end(); - ++i ) - indexedWords.addWord( gd::toWString( *i ), offset ); - - ++articleCount; - - wordCount += words.size(); - } - - return; - } - else - if ( stream.isStartElement() ) - { - addAllKeyTags( stream, words ); - } - } -} - -//// XdxfDictionary::getResource() - -class XdxfResourceRequest; - -class XdxfResourceRequestRunnable: public QRunnable -{ - XdxfResourceRequest & r; - QSemaphore & hasExited; - -public: - - XdxfResourceRequestRunnable( XdxfResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~XdxfResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class XdxfResourceRequest: public Dictionary::DataRequest -{ - friend class XdxfResourceRequestRunnable; - - XdxfDictionary & dict; - - string resourceName; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - XdxfResourceRequest( XdxfDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( resourceName_ ) - { - QThreadPool::globalInstance()->start( - new XdxfResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by XdxfResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~XdxfResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void XdxfResourceRequestRunnable::run() -{ - r.run(); -} - -void XdxfResourceRequest::run() -{ - // Some runnables linger enough that they are cancelled before they start - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - if ( dict.ensureInitDone().size() ) - { - setErrorString( QString::fromUtf8( dict.ensureInitDone().c_str() ) ); - finish(); - return; - } - - string n = - FsEncoding::dirname( dict.getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + - FsEncoding::encode( resourceName ); - - GD_DPRINTF( "n is %s\n", n.c_str() ); - - try - { - try - { - Mutex::Lock _( dataMutex ); - - File::loadFromFile( n, data ); - } - catch( File::exCantOpen & ) - { - n = dict.getDictionaryFilenames()[ 0 ] + ".files" + - FsEncoding::separator() + - FsEncoding::encode( resourceName ); - - try - { - Mutex::Lock _( dataMutex ); - - File::loadFromFile( n, data ); - } - catch( File::exCantOpen & ) - { - // Try reading from zip file - - if ( dict.resourceZip.isOpen() ) - { - Mutex::Lock _( dict.resourceZipMutex ); - - Mutex::Lock __( dataMutex ); - - if ( !dict.resourceZip.loadFile( Utf8::decode( resourceName ), data ) ) - throw; // Make it fail since we couldn't read the archive - } - else - throw; - } - } - - if ( Filetype::isNameOfTiff( resourceName ) ) - { - // Convert it - - dataMutex.lock(); - - QImage img = QImage::fromData( (unsigned char *) &data.front(), - data.size() ); - -#ifdef MAKE_EXTRA_TIFF_HANDLER - if( img.isNull() ) - GdTiff::tiffToQImage( &data.front(), data.size(), img ); -#endif - - dataMutex.unlock(); - - if ( !img.isNull() ) - { - // Managed to load -- now store it back as BMP - - QByteArray ba; - QBuffer buffer( &ba ); - buffer.open( QIODevice::WriteOnly ); - img.save( &buffer, "BMP" ); - - Mutex::Lock _( dataMutex ); - - data.resize( buffer.size() ); - - memcpy( &data.front(), buffer.data(), data.size() ); - } - } - - Mutex::Lock _( dataMutex ); - - hasAnyData = true; - } - catch( std::exception &ex ) - { - gdWarning( "XDXF: Failed loading resource \"%s\" for \"%s\", reason: %s\n", - resourceName.c_str(), dict.getName().c_str(), ex.what() ); - // Resource not loaded -- we don't set the hasAnyData flag then - } - - finish(); -} - -sptr< Dictionary::DataRequest > XdxfDictionary::getResource( string const & name ) - throw( std::exception ) -{ - return new XdxfResourceRequest( *this, name ); -} - -} -// anonymous namespace - this section of file is devoted to rebuilding of dictionary articles index - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Only allow .xdxf and .xdxf.dz suffixes - - if ( ( i->size() < 5 || strcasecmp( i->c_str() + ( i->size() - 5 ), ".xdxf" ) != 0 ) && - ( i->size() < 8 || - strcasecmp( i->c_str() + ( i->size() - 8 ), ".xdxf.dz" ) != 0 ) ) - continue; - - try - { - vector< string > dictFiles( 1, *i ); - - string baseName = ( (*i)[ i->size() - 5 ] == '.' ) ? - string( *i, 0, i->size() - 5 ) : string( *i, 0, i->size() - 8 ); - - // See if there's a zip file with resources present. If so, include it. - - string zipFileName; - - if ( File::tryPossibleName( baseName + ".xdxf.files.zip", zipFileName ) || - File::tryPossibleName( baseName + ".xdxf.dz.files.zip", zipFileName ) || - File::tryPossibleName( baseName + ".XDXF.FILES.ZIP", zipFileName ) || - File::tryPossibleName( baseName + ".XDXF.DZ.FILES.ZIP", zipFileName ) ) - dictFiles.push_back( zipFileName ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - // Building the index - - gdDebug( "Xdxf: Building the index for dictionary: %s\n", i->c_str() ); - - //initializing.indexingDictionary( nameFromFileName( dictFiles[ 0 ] ) ); - - File::Class idx( indexFile, "wb" ); - - IdxHeader idxHeader; - map< string, string > abrv; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - IndexedWords indexedWords; - - GzippedFile gzFile( dictFiles[ 0 ].c_str() ); - - if ( !gzFile.open( QIODevice::ReadOnly ) ) - throw exCantReadFile( dictFiles[ 0 ] ); - - QXmlStreamReader stream( &gzFile ); - - QString dictionaryName, dictionaryDescription; - - ChunkedStorage::Writer chunks( idx ); - - // Wait for the first element, which must be xdxf - - bool hadXdxf = false; - - while( !stream.atEnd() ) - { - stream.readNext(); - - if ( stream.isStartElement() ) - { - if ( stream.name() != "xdxf" ) - throw exNotXdxfFile( dictFiles[ 0 ] ); - else - { - // Read the xdxf - - string str = stream.attributes().value( "lang_from" ).toString().toLatin1().data(); - - if ( str.size() > 3 ) - str.resize( 3 ); - - idxHeader.langFrom = LangCoder::findIdForLanguageCode3( str.c_str() ); - - str = stream.attributes().value( "lang_to" ).toString().toLatin1().data(); - - if ( str.size() > 3 ) - str.resize( 3 ); - - idxHeader.langTo = LangCoder::findIdForLanguageCode3( str.c_str() ); - - bool isLogical = ( stream.attributes().value( "format" ) == "logical" ); - - QRegExp regNum( "\\d+" ); - regNum.indexIn( stream.attributes().value( "revision" ).toString() ); - idxHeader.revisionNumber = regNum.cap().toUInt(); - - idxHeader.articleFormat = isLogical ? Logical : Visual; - - unsigned articleCount = 0, wordCount = 0; - - while( !stream.atEnd() ) - { - stream.readNext(); - - if ( stream.isStartElement() ) - { - // todo implement using short for denoting the dictionary in settings or dict list toolbar - if ( stream.name() == "full_name" || stream.name() == "full_title" ) - { - // That's our name - - QString name = stream.readElementText(); - - if ( dictionaryName.isEmpty() ) - { - dictionaryName = name; - - initializing.indexingDictionary( dictionaryName.toUtf8().data() ); - - idxHeader.nameAddress = chunks.startNewBlock(); - - QByteArray n = dictionaryName.toUtf8(); - - idxHeader.nameSize = n.size(); - - chunks.addToBlock( n.data(), n.size() ); - } - else - { - GD_DPRINTF( "Warning: duplicate full_name in %s\n", dictFiles[ 0 ].c_str() ); - } - } - else - if ( stream.name() == "description" ) - { - // todo implement adding other information to the description like <publisher>, <authors>, <file_ver>, <creation_date>, <last_edited_date>, <dict_edition>, <publishing_date>, <dict_src_url> - QString desc = readXhtmlData( stream ); - - if ( dictionaryDescription.isEmpty() ) - { - dictionaryDescription = desc; - idxHeader.descriptionAddress = chunks.startNewBlock(); - - QByteArray n = dictionaryDescription.toUtf8(); - - idxHeader.descriptionSize = n.size(); - - chunks.addToBlock( n.data(), n.size() ); - } - else - { - GD_DPRINTF( "Warning: duplicate description in %s\n", dictFiles[ 0 ].c_str() ); - } - } - else - if ( stream.name() == "abbreviations" ) - { - QString s; - string value; - list < wstring > keys; - while( !( stream.isEndElement() && stream.name() == "abbreviations" ) && !stream.atEnd() ) - { - stream.readNext(); - // abbreviations tag set switch at format revision = 30 - if( idxHeader.revisionNumber >= 30 ) - { - while ( !( stream.isEndElement() && stream.name() == "abbr_def" ) || !stream.atEnd() ) - { - stream.readNext(); - if ( stream.isStartElement() && stream.name() == "abbr_k" ) - { - s = readElementText( stream ); - keys.push_back( gd::toWString( s ) ); - } - else if ( stream.isStartElement() && stream.name() == "abbr_v" ) - { - s = readElementText( stream ); - value = Utf8::encode( Folding::trimWhitespace( gd::toWString( s ) ) ); - for( list< wstring >::iterator i = keys.begin(); i != keys.end(); ++i ) - { - abrv[ Utf8::encode( Folding::trimWhitespace( *i ) ) ] = value; - } - keys.clear(); - } - else if ( stream.isEndElement() && stream.name() == "abbreviations" ) - break; - } - } - else - { - while ( !( stream.isEndElement() && stream.name() == "abr_def" ) || !stream.atEnd() ) - { - stream.readNext(); - if ( stream.isStartElement() && stream.name() == "k" ) - { - s = readElementText( stream ); - keys.push_back( gd::toWString( s ) ); - } - else if ( stream.isStartElement() && stream.name() == "v" ) - { - s = readElementText( stream ); - value = Utf8::encode( Folding::trimWhitespace( gd::toWString( s ) ) ); - for( list< wstring >::iterator i = keys.begin(); i != keys.end(); ++i ) - { - abrv[ Utf8::encode( Folding::trimWhitespace( *i ) ) ] = value; - } - keys.clear(); - } - else if ( stream.isEndElement() && stream.name() == "abbreviations" ) - break; - } - } - } - } - else - if ( stream.name() == "ar" ) - { - indexArticle( gzFile, stream, indexedWords, chunks, - articleCount, wordCount, isLogical ? Logical : Visual ); - } - } - } - - // Write abbreviations if presented - - if( !abrv.empty() ) - { - idxHeader.hasAbrv = 1; - idxHeader.abrvAddress = chunks.startNewBlock(); - - uint32_t sz = abrv.size(); - - chunks.addToBlock( &sz, sizeof( uint32_t ) ); - - for( map< string, string >::const_iterator i = abrv.begin(); i != abrv.end(); ++i ) - { - sz = i->first.size(); - chunks.addToBlock( &sz, sizeof( uint32_t ) ); - chunks.addToBlock( i->first.data(), sz ); - sz = i->second.size(); - chunks.addToBlock( &sz, sizeof( uint32_t ) ); - chunks.addToBlock( i->second.data(), sz ); - } - } - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - indexedWords.clear(); // Release memory -- no need for this data - - // If there was a zip file, index it too - - if ( zipFileName.size() ) - { - GD_DPRINTF( "Indexing zip file\n" ); - - idxHeader.hasZipFile = 1; - - IndexedWords zipFileNames; - IndexedZip zipFile; - if( zipFile.openZipFile( QDir::fromNativeSeparators( - FsEncoding::decode( zipFileName.c_str() ) ) ) ) - zipFile.indexFile( zipFileNames ); - - if( !zipFileNames.empty() ) - { - // Build the resulting zip file index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( zipFileNames, idx ); - - idxHeader.zipIndexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.zipIndexRootOffset = idxInfo.rootOffset; - } - else - { - // Bad zip file -- no index (though the mark that we have one - // remains) - idxHeader.zipIndexBtreeMaxElements = 0; - idxHeader.zipIndexRootOffset = 0; - } - } - else - idxHeader.hasZipFile = 0; - // That concludes it. Update the header. - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.articleCount = articleCount; - idxHeader.wordCount = wordCount; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - - hadXdxf = true; - } - break; - } - } - - if ( !hadXdxf ) - throw exNotXdxfFile( dictFiles[ 0 ] ); - - if ( stream.hasError() ) - { - gdWarning( "Warning: %s had a parse error %s at line %lu, and therefore was indexed only up to the point of error.", - dictFiles[ 0 ].c_str(), stream.errorString().toUtf8().data(), - (unsigned long) stream.lineNumber() ); - } - } - - dictionaries.push_back( new XdxfDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Xdxf dictionary initializing failed: %s, error: %s\n", - i->c_str(), e.what() ); - } - } - - return dictionaries; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf.hh deleted file mode 100644 index f65a44b02b..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf.hh +++ /dev/null @@ -1,23 +0,0 @@ -/* This file is (c) 2008-2009 Konstantin Isakov <ikm@goldendict.org> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __XDXF_HH_INCLUDED__ -#define __XDXF_HH_INCLUDED__ - -#include "dictionary.hh" - -/// Support for the XDXF (.xdxf(.dz)) files. -namespace Xdxf { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf2html.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf2html.cc deleted file mode 100644 index b7bd1fa602..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf2html.cc +++ /dev/null @@ -1,588 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov <ikm@goldendict.org> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "xdxf2html.hh" -#include <QtXml> -#include "gddebug.hh" -#include "utf8.hh" -#include "wstring_qt.hh" -#include "folding.hh" -#include "fsencoding.hh" -#include "audiolink.hh" -#include "file.hh" -#include "filetype.hh" -#include "htmlescape.hh" -#include "qt4x5.hh" -#include <QDebug> - -namespace Xdxf2Html { - -static void fixLink( QDomElement & el, string const & dictId, const char *attrName ) -{ - QUrl url; - url.setScheme( "bres" ); - url.setHost( QString::fromStdString(dictId) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( el.attribute(attrName) ) ); - - el.setAttribute( attrName, url.toEncoded().data() ); -} - -// converting a number into roman representation -string convertToRoman( int input, int lower_case ) -{ - string romanvalue = ""; - if( input >= 4000 ) - { - int x = ( input - input % 4000 ) / 1000; - romanvalue = "(" + convertToRoman( x, lower_case ) + ")" ; - input %= 4000; - } - - const string roman[26] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I", - "m", "cm", "d", "cd", "c", "xc", "l", "xl", "x", "ix", "v", "iv", "i"}; - const int decimal[13] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; - - for( int i = 0; i < 13; i++ ) - { - while( input >= decimal[ i ] ) - { - input -= decimal[ i ]; - if ( lower_case == 1 ) - romanvalue += roman[ i + 13 ]; - else - romanvalue += roman[ i ]; - } - } - return romanvalue; -} - -string convert( string const & in, DICT_TYPE type, map < string, string > const * pAbrv, - Dictionary::Class *dictPtr, IndexedZip * resourceZip, - bool isLogicalFormat, unsigned revisionNumber, QString * headword ) -{ -// DPRINTF( "Source>>>>>>>>>>: %s\n\n\n", in.c_str() ); - - // Convert spaces after each end of line to  s, and then each end of - // line to a <br> - - string inConverted; - - inConverted.reserve( in.size() ); - - bool afterEol = false; - - for( string::const_iterator i = in.begin(), j = in.end(); i != j; ++i ) - { - switch( *i ) - { - case '\n': - afterEol = true; - if( !isLogicalFormat ) - inConverted.append( "<br/>" ); - break; - - case '\r': - break; - - case ' ': - if ( afterEol ) - { - if( !isLogicalFormat ) - inConverted.append( " " ); - break; - } - // Fall-through - - default: - inConverted.push_back( *i ); - afterEol = false; - } - } - - // Strip "<nu />" tags - QDomDocument don't handle it correctly - string::size_type n; - while( ( n = inConverted.find( "<nu />" ) ) != string::npos ) - inConverted.erase( n, 6 ); - - // We build a dom representation of the given xml, then do some transforms - QDomDocument dd; - - QString errorStr; - int errorLine, errorColumn; - - string in_data; - if( type == XDXF ) - { - in_data = "<div class=\"xdxf\""; - if( dictPtr->isToLanguageRTL() ) - in_data += " dir=\"rtl\""; - in_data += ">"; - } - else - in_data = "<div class=\"sdct_x\">"; - in_data += inConverted + "</div>"; - - if( !dd.setContent( QByteArray( in_data.c_str() ), false, &errorStr, &errorLine, &errorColumn ) ) - { - qWarning( "Xdxf2html error, xml parse failed: %s at %d,%d\n", errorStr.toLocal8Bit().constData(), errorLine, errorColumn ); - gdWarning( "The input was: %s\n", in.c_str() ); - - return in; - } - - QDomNodeList nodes = dd.elementsByTagName( "ex" ); // Example - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - if( isLogicalFormat ) - el.setAttribute( "class", "xdxf_ex" ); - else - el.setAttribute( "class", "xdxf_ex_old" ); - } - - nodes = dd.elementsByTagName( "mrkd" ); // marked out words in tranlations/examples of usage - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - el.setAttribute( "class", "xdxf_ex_markd" ); - } - - nodes = dd.elementsByTagName( "k" ); // Key - - if( headword ) - headword->clear(); - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - if( type == STARDICT ) - { - el.setTagName( "span" ); - el.setAttribute( "class", "xdxf_k" ); - } - else - { - if( headword && headword->isEmpty() ) - *headword = el.text(); - - el.setTagName( "div" ); - el.setAttribute( "class", "xdxf_headwords" ); - if( dictPtr->isFromLanguageRTL() != dictPtr->isToLanguageRTL() ) - el.setAttribute( "dir", dictPtr->isFromLanguageRTL() ? "rtl" : "ltr" ); - } - } - - // processing of nested <def>s - if( isLogicalFormat ) // in articles with visual format <def> tags do not effect the formatting. - { - nodes = dd.elementsByTagName( "def" ); - - // this is a logical type of XDXF, so we need to render proper numbering - // we will do it this way: - - // 1. we compute the maximum nesting depth of the article - int maxNestingDepth = 1; // maximum nesting depth of the article - for( int i = 0; i < nodes.size(); i++ ) - { - QDomElement el = nodes.at( i ).toElement(); - QDomElement nestingNode = el; - int nestingCount = 0; - while ( nestingNode.parentNode().toElement().tagName() == "def" ) - { - nestingCount++; - nestingNode = nestingNode.parentNode().toElement(); - } - if ( nestingCount > maxNestingDepth ) - maxNestingDepth = nestingCount; - } - // 2. in this loop we go layer-by-layer through all <def> and insert proper numbers according to its structure - for( int j = maxNestingDepth; j > 0; j-- ) // j symbolizes special depth to be processed at this iteration - { - int siblingCount = 0; // this that counts the number of among all siblings of this depth - QString numberText = ""; // the number to be inserted into the beginning of <def> (I,II,IV,1,2,3,a),b),c)...) - for( int i = 0; i < nodes.size(); i++ ) - { - QDomElement el = nodes.at( i ).toElement(); - QDomElement nestingNode = el; - // computing the depth @nestingDepth of a current node @el - int nestingDepth = 0; - while( nestingNode.parentNode().toElement().tagName() == "def" ) - { - nestingDepth++; - nestingNode=nestingNode.parentNode().toElement(); - } - // we process nodes on of current depth @j - // we do this in order not to break the numbering at this depth level - if (nestingDepth == j) - { - siblingCount++; - if( maxNestingDepth == 1 ) - { - numberText = numberText.setNum( siblingCount ) + ". "; - } - else if( maxNestingDepth == 2 ) - { - if( nestingDepth == 1 ) - numberText = numberText.setNum( siblingCount ) + ". "; - if( nestingDepth == 2 ) - numberText = numberText.setNum( siblingCount ) + ") "; - } - else - { - if( nestingDepth == 1 ) - numberText = QString::fromStdString( convertToRoman(siblingCount,0) + ". " ); - if( nestingDepth == 2 ) - numberText = numberText.setNum( siblingCount ) + ". "; - if( nestingDepth == 3 ) - numberText = numberText.setNum( siblingCount ) + ") "; - if( nestingDepth == 4 ) - numberText = QString::fromStdString( convertToRoman(siblingCount,1) + ") " ); - } - QDomElement numberNode = dd.createElement( "span" ); - numberNode.setAttribute( "class", "xdxf_num" ); - QDomText text_num = dd.createTextNode( numberText ); - numberNode.appendChild( text_num ); - el.insertBefore( numberNode, el.firstChild() ); - - if ( el.hasAttribute( "cmt" ) ) - { - QDomElement cmtNode = dd.createElement( "span" ); - cmtNode.setAttribute( "class", "xdxf_co" ); - QDomText text_num = dd.createTextNode( el.attribute( "cmt" ) ); - cmtNode.appendChild( text_num ); - el.insertAfter( cmtNode, el.firstChild() ); - } - } - else if( nestingDepth < j ) // if it goes one level up @siblingCount needs to be reset - siblingCount = 0; - } - } - // we finally change all <def> tags into 'xdxf_def' <span>s - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - el.setTagName( "span" ); - el.setAttribute( "class", "xdxf_def" ); - } - } - - nodes = dd.elementsByTagName( "opt" ); // Optional headword part - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - el.setAttribute( "class", "xdxf_opt" ); - } - - nodes = dd.elementsByTagName( "kref" ); // Reference to another word - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "a" ); - el.setAttribute( "href", QString( "bword:" ) + el.text() ); - el.setAttribute( "class", "xdxf_kref" ); - if ( el.hasAttribute( "idref" ) ) - { - // todo implement support for referencing only specific parts of the article - el.setAttribute( "href", QString( "bword:" ) + el.text() + "#" + el.attribute( "idref" )); - } - if ( el.hasAttribute( "kcmt" ) ) - { - QDomText kcmtText = dd.createTextNode( " " + el.attribute( "kcmt" ) ); - el.parentNode().insertAfter( kcmtText, el ); - } - } - - nodes = dd.elementsByTagName( "iref" ); // Reference to internet site - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - QString ref = el.attribute( "href" ); - if( ref.isEmpty() ) - ref = el.text(); - - el.setAttribute( "href", ref ); - el.setTagName( "a" ); - } - - // Abbreviations - if( revisionNumber < 29 ) - nodes = dd.elementsByTagName( "abr" ); - else - nodes = dd.elementsByTagName( "abbr" ); - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - el.setAttribute( "class", "xdxf_abbr" ); - if( type == XDXF && pAbrv != NULL ) - { - string val = Utf8::encode( Folding::trimWhitespace( gd::toWString( el.text() ) ) ); - - // If we have such a key, display a title - - map< string, string >::const_iterator i = pAbrv->find( val ); - - if ( i != pAbrv->end() ) - { - string title; - - if ( Utf8::decode( i->second ).size() < 70 ) - { - // Replace all spaces with non-breakable ones, since that's how Lingvo shows tooltips - title.reserve( i->second.size() ); - - for( char const * c = i->second.c_str(); *c; ++c ) - if ( *c == ' ' || *c == '\t' ) - { - // u00A0 in utf8 - title.push_back( 0xC2 ); - title.push_back( 0xA0 ); - } - else - title.push_back( *c ); - } - else - title = i->second; - el.setAttribute( "title", gd::toQString( Utf8::decode( title ) ) ); - } - } - } - - nodes = dd.elementsByTagName( "dtrn" ); // Direct translation - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - el.setAttribute( "class", "xdxf_dtrn" ); - } - - nodes = dd.elementsByTagName( "c" ); // Color - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - - if ( el.hasAttribute( "c" ) ) - { - el.setAttribute( "style", "color:" + el.attribute( "c" ) ); - el.removeAttribute( "c" ); - } - else - el.setAttribute( "style", "color:blue" ); - } - - nodes = dd.elementsByTagName( "co" ); // Editorial comment - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - if( isLogicalFormat ) - el.setAttribute( "class", "xdxf_co" ); - else - el.setAttribute( "class", "xdxf_co_old" ); - } - - /* grammar information */ - nodes = dd.elementsByTagName( "gr" ); // proper grammar tag - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - if( isLogicalFormat ) - el.setAttribute( "class", "xdxf_gr" ); - else - el.setAttribute( "class", "xdxf_gr_old" ); - } - nodes = dd.elementsByTagName( "pos" ); // deprecated grammar tag - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - if( isLogicalFormat ) - el.setAttribute( "class", "xdxf_gr" ); - else - el.setAttribute( "class", "xdxf_gr_old" ); - } - nodes = dd.elementsByTagName( "tense" ); // deprecated grammar tag - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - if( isLogicalFormat ) - el.setAttribute( "class", "xdxf_gr" ); - else - el.setAttribute( "class", "xdxf_gr_old" ); - } - /* end of grammar generation */ - - nodes = dd.elementsByTagName( "tr" ); // Transcription - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - - el.setTagName( "span" ); - if( isLogicalFormat ) - el.setAttribute( "class", "xdxf_tr" ); - else - el.setAttribute( "class", "xdxf_tr_old" ); - } - - // Ensure that ArticleNetworkAccessManager can deal with XDXF images. - // We modify the URL by using the dictionary ID as the hostname. - // This is necessary to determine from which dictionary a requested - // image originates. - nodes = dd.elementsByTagName( "img" ); - - for( int i = 0; i < nodes.size(); i++ ) - { - QDomElement el = nodes.at( i ).toElement(); - - if ( el.hasAttribute( "src" ) ) - { - fixLink( el, dictPtr->getId(), "src" ); - } - - if ( el.hasAttribute( "losrc" ) ) - { - fixLink( el, dictPtr->getId(), "losrc" ); - } - - if ( el.hasAttribute( "hisrc" ) ) - { - fixLink( el, dictPtr->getId(), "hisrc" ); - } - } - - nodes = dd.elementsByTagName( "rref" ); // Resource reference - - while( nodes.size() ) - { - QDomElement el = nodes.at( 0 ).toElement(); - -// if( type == XDXF && dictPtr != NULL && !el.hasAttribute( "start" ) ) - if( dictPtr != NULL && !el.hasAttribute( "start" ) ) - { - string filename = Utf8::encode( gd::toWString( el.text() ) ); - - if ( Filetype::isNameOfPicture( filename ) ) - { - QUrl url; - url.setScheme( "bres" ); - url.setHost( QString::fromUtf8( dictPtr->getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( filename.c_str() ) ) ); - - QDomElement newEl = dd.createElement( "img" ); - newEl.setAttribute( "src", url.toEncoded().data() ); - newEl.setAttribute( "alt", Html::escape( filename ).c_str() ); - - QDomNode parent = el.parentNode(); - if( !parent.isNull() ) - { - parent.replaceChild( newEl, el ); - continue; - } - } - else if( Filetype::isNameOfSound( filename ) ) - { - - QDomElement el_script = dd.createElement( "script" ); - QDomNode parent = el.parentNode(); - if( !parent.isNull() ) - { - bool search = false; - if( type == STARDICT ) - { - string n = FsEncoding::dirname( dictPtr->getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + string( "res" ) + FsEncoding::separator() + - FsEncoding::encode( filename ); - search = !File::exists( n ) && - ( !resourceZip || - !resourceZip->isOpen() || - !resourceZip->hasFile( Utf8::decode( filename ) ) ); - } - else - { - string n = dictPtr->getDictionaryFilenames()[ 0 ] + ".files" + - FsEncoding::separator() + - FsEncoding::encode( filename ); - search = !File::exists( n ) && !File::exists( FsEncoding::dirname( dictPtr->getDictionaryFilenames()[ 0 ] ) + - FsEncoding::separator() + - FsEncoding::encode( filename ) ) && - ( !resourceZip || - !resourceZip->isOpen() || - !resourceZip->hasFile( Utf8::decode( filename ) ) ); - } - - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( search ? "search" : dictPtr->getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( filename.c_str() ) ) ); - - el_script.setAttribute( "type", "text/javascript" ); - parent.replaceChild( el_script, el ); - - QDomText el_txt = dd.createTextNode( makeAudioLinkScript( string( "\"" ) + url.toEncoded().data() + "\"", - dictPtr->getId() ).c_str() ); - el_script.appendChild( el_txt ); - - QDomElement el_span = dd.createElement( "span" ); - el_span.setAttribute( "class", "xdxf_wav" ); - parent.insertAfter( el_span, el_script ); - - QDomElement el_a = dd.createElement( "a" ); - el_a.setAttribute( "href", url.toEncoded().data() ); - el_span.appendChild( el_a ); - - QDomElement el_img = dd.createElement( "img"); - el_img.setAttribute( "src", "qrcx://localhost/icons/playsound.png" ); - el_img.setAttribute( "border", "0" ); - el_img.setAttribute( "align", "absmiddle" ); - el_img.setAttribute( "alt", "Play" ); - el_a.appendChild( el_img ); - - continue; - } - } - } - - // We don't really know how to handle this at the moment, so we'll just - // convert it to a span and leave it as is for now. - - el.setTagName( "span" ); - el.setAttribute( "class", "xdxf_rref" ); - } - -// DPRINTF( "Result>>>>>>>>>>: %s\n\n\n", dd.toByteArray().data() ); - - return dd.toString().remove('\n').remove( QRegExp( "<(b|i)/>" ) ).toUtf8().data(); -} - -} - diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf2html.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf2html.hh deleted file mode 100644 index 21854b2068..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/xdxf2html.hh +++ /dev/null @@ -1,29 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov <ikm@goldendict.org> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __XDXF2HTML_HH_INCLUDED__ -#define __XDXF2HTML_HH_INCLUDED__ - -#include <string> -#include <map> -#include "dictionary.hh" -#include "indexedzip.hh" - -/// Xdxf is an xml file format. Since we display html, we'd like to be able -/// to convert articles with such a markup to an html. -namespace Xdxf2Html { - -enum DICT_TYPE { STARDICT, XDXF }; - -using std::string; -using std::map; - -/// Converts the given xdxf markup to an html one. This is currently used -/// for Stardict's 'x' records. -string convert( string const &, DICT_TYPE type, map < string, string > const * pAbrv, - Dictionary::Class *dictPtr, IndexedZip * resourceZip, bool isLogicalFormat = false, - unsigned revisionNumber = 0, QString * headword = 0 ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zim.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/zim.cc deleted file mode 100644 index 5175f63a4d..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zim.cc +++ /dev/null @@ -1,1514 +0,0 @@ -/* This file is (c) 2012 Abs62 - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifdef MAKE_ZIM_SUPPORT - -#include "zim.hh" -#include "btreeidx.hh" -#include "fsencoding.hh" -#include "folding.hh" -#include "gddebug.hh" -#include "utf8.hh" -#include "decompress.hh" -#include "langcoder.hh" -#include "wstring_qt.hh" -#include "filetype.hh" -#include "file.hh" -#include "qt4x5.hh" -#include "tiff.hh" -#include "ftshelpers.hh" -#include "htmlescape.hh" - -#ifdef _MSC_VER -#include <stub_msvc.h> -#endif - -#include <QByteArray> -#include <QFile> -#include <QFileInfo> -#include <QString> -#include <QRunnable> -#include <QSemaphore> -#include <QAtomicInt> -#include <QImage> -#include <QDir> -#include <QDebug> - -#include <string> -#include <set> -#include <map> - -namespace Zim { - -using std::string; -using std::map; -using std::vector; -using std::multimap; -using std::pair; -using std::set; -using gd::wstring; - -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -DEF_EX_STR( exNotZimFile, "Not an Zim file", Dictionary::Ex ) -DEF_EX_STR( exCantReadFile, "Can't read file", Dictionary::Ex ) -DEF_EX( exUserAbort, "User abort", Dictionary::Ex ) - - -//namespace { - -class ZimFile; - -#pragma pack( push, 1 ) - -enum CompressionType -{ - Default = 0, None, Zlib, Bzip2, Lzma2 -}; - -/// Zim file header -struct ZIM_header -{ - quint32 magicNumber; - quint32 version; - quint8 uuid[ 16 ]; - quint32 articleCount; - quint32 clusterCount; - quint64 urlPtrPos; - quint64 titlePtrPos; - quint64 clusterPtrPos; - quint64 mimeListPos; - quint32 mainPage; - quint32 layoutPage; - quint64 checksumPos; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct ArticleEntry -{ - quint16 mimetype; - quint8 parameterLen; - char nameSpace; - quint32 revision; - quint32 clusterNumber; - quint32 blobNumber; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct RedirectEntry -{ - quint16 mimetype; - quint8 parameterLen; - char nameSpace; - quint32 revision; - quint32 redirectIndex; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -enum -{ - Signature = 0x584D495A, // ZIMX on little-endian, XMIZ on big-endian - CurrentFormatVersion = 1 + BtreeIndexing::FormatVersion + Folding::Version -}; - -struct IdxHeader -{ - quint32 signature; // First comes the signature, ZIMX - quint32 formatVersion; // File format version (CurrentFormatVersion) - quint32 indexBtreeMaxElements; // Two fields from IndexInfo - quint32 indexRootOffset; - quint32 resourceIndexBtreeMaxElements; // Two fields from IndexInfo - quint32 resourceIndexRootOffset; - quint32 wordCount; - quint32 articleCount; - quint32 namePtr; - quint32 descriptionPtr; - quint32 langFrom; // Source language - quint32 langTo; // Target language -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -#pragma pack( pop ) - -// Class for support of split zim files - -class ZimFile -{ - QVector< QFile * > files; - QVector< quint64 > offsets; - int currentFile; - -public: - - ZimFile(); - ZimFile( const QString & name ); - ~ZimFile(); - - void setFileName( const QString & name ); - void getFilenames( vector< string > & names ); - bool open( QFile::OpenMode mode ); - void close(); - bool seek( quint64 pos ); - qint64 read( char * data, qint64 maxSize ); - QByteArray read( qint64 maxSize ); - bool getChar( char * c ); - qint64 size() - { return files.isEmpty() ? 0 : offsets.last() + files.last()->size(); } -}; - -ZimFile::ZimFile() : - currentFile( 0 ) -{ -} - -ZimFile::ZimFile( const QString & name ) : - currentFile( 0 ) -{ - setFileName( name ); -} - -ZimFile::~ZimFile() -{ - close(); -} - -void ZimFile::setFileName( const QString & name ) -{ - close(); - - files.append( new QFile( name ) ); - offsets.append( 0 ); - - if( name.endsWith( ".zimaa", Qt::CaseInsensitive ) ) - { - QString fname = name; - - for( int i = 0; i < 26; i++ ) - { - fname[ fname.size() - 2 ] = (char)( 'a' + i ); - - int j; - for( j = 1; j < 26; j++ ) - { - fname[ fname.size() - 1 ] = (char)( 'a' + j ); - if( !QFileInfo( fname ).isFile() ) - break; - - quint64 offset = offsets.last() + files.last()->size(); - - files.append( new QFile( fname ) ); - offsets.append( offset ); - } - - if( j < 26 ) - break; - } - } -} - -void ZimFile::close() -{ - for( QVector< QFile * >::const_iterator i = files.begin(); i != files.end(); ++i ) - { - (*i)->close(); - delete (*i); - } - - files.clear(); - offsets.clear(); - - currentFile = 0; -} - -void ZimFile::getFilenames( vector< string > &names ) -{ - for( QVector< QFile const * >::const_iterator i = files.begin(); i != files.end(); ++i ) - names.push_back( FsEncoding::encode( (*i)->fileName() ) ); -} - -bool ZimFile::open( QFile::OpenMode mode ) -{ - for( QVector< QFile * >::iterator i = files.begin(); i != files.end(); ++i ) - if( !(*i)->open( mode ) ) - { - close(); - return false; - } - - return true; -} - -bool ZimFile::seek( quint64 pos ) -{ - int fileNom; - - for( fileNom = 0; fileNom < offsets.size() - 1; fileNom++ ) - if( pos < offsets.at( fileNom + 1 ) ) - break; - - pos -= offsets.at( fileNom ); - - currentFile = fileNom; - return files.at( fileNom )->seek( pos ); -} - -qint64 ZimFile::read( char *data, qint64 maxSize ) -{ - quint64 bytesReaded = 0; - for( int i = currentFile; i < files.size(); i++ ) - { - if( i != currentFile ) - files.at( i )->seek( 0 ); - - qint64 ret = files.at( i )->read( data + bytesReaded, maxSize ); - if( ret < 0 ) - break; - - bytesReaded += ret; - maxSize -= ret; - - if( maxSize <= 0 ) - break; - } - return bytesReaded; -} - -QByteArray ZimFile::read( qint64 maxSize ) -{ - QByteArray data; - data.resize( maxSize ); - - qint64 ret = read( data.data(), maxSize ); - - if( ret != maxSize ) - data.resize( ret ); - - return data; -} - -bool ZimFile::getChar( char *c ) -{ - char ch; - return read( c ? c : &ch, 1 ) == 1; -} - -// Some supporting functions - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -quint32 readArticle( ZimFile & file, ZIM_header & header, quint32 articleNumber, string & result, - set< quint32 > * loadedArticles = NULL ) -{ - result.clear(); - - while( 1 ) - { - if( articleNumber >= header.articleCount ) - break; - - file.seek( header.urlPtrPos + (quint64)articleNumber * 8 ); - quint64 pos; - if( file.read( reinterpret_cast< char * >( &pos ), sizeof(pos) ) != sizeof(pos) ) - break; - - // Read article info - - quint16 mimetype; - - file.seek( pos ); - if( file.read( reinterpret_cast< char * >( &mimetype ), sizeof(mimetype) ) != sizeof(mimetype) ) - break; - - if( mimetype == 0xFFFF ) // Redirect to other article - { - RedirectEntry redEntry; - if( file.read( reinterpret_cast< char * >( &redEntry ) + 2, sizeof(redEntry) - 2 ) != sizeof(redEntry) - 2 ) - break; - if( articleNumber == redEntry.redirectIndex ) - break; - articleNumber = redEntry.redirectIndex; - continue; - } - - if( loadedArticles && loadedArticles->find( articleNumber ) != loadedArticles->end() ) - break; - - ArticleEntry artEntry; - artEntry.mimetype = mimetype; - if( file.read( reinterpret_cast< char * >( &artEntry ) + 2, sizeof(artEntry) - 2 ) != sizeof(artEntry) - 2 ) - break; - - // Read cluster pointers - - quint64 clusters[ 2 ]; - file.seek( header.clusterPtrPos + (quint64)artEntry.clusterNumber * 8 ); - if( file.read( reinterpret_cast< char * >( clusters ), sizeof(clusters) ) != sizeof(clusters) ) - break; - - // Calculate cluster size - - quint64 clusterSize; - if( artEntry.clusterNumber < header.clusterCount - 1 ) - clusterSize = clusters[ 1 ] - clusters[ 0 ]; - else - clusterSize = file.size() - clusters[ 0 ]; - - // Read cluster data - - file.seek( clusters[ 0 ] ); - - char compressionType; - if( !file.getChar( &compressionType ) ) - break; - - string decompressedData; - - QByteArray data = file.read( clusterSize ); - if( compressionType == Default || compressionType == None ) - decompressedData = string( data.data(), data.size() ); - else - if( compressionType == Zlib ) - decompressedData = decompressZlib( data.constData(), data.size() ); - else - if( compressionType == Bzip2 ) - decompressedData = decompressBzip2( data.constData(), data.size() ); - else - if( compressionType == Lzma2 ) - decompressedData = decompressLzma2( data.constData(), data.size() ); - else - break; - - // Take article data from cluster - - quint32 blobCount; - memcpy( &blobCount, decompressedData.data(), sizeof(blobCount) ); - if( artEntry.blobNumber > blobCount ) - break; - - quint32 offsets[ 2 ]; - memcpy( offsets, decompressedData.data() + artEntry.blobNumber * 4, sizeof(offsets) ); - quint32 size = offsets[ 1 ] - offsets[ 0 ]; - - result.append( decompressedData, offsets[ 0 ], size ); - - return articleNumber; - } - return 0xFFFFFFFF; -} - -// ZimDictionary - -class ZimDictionary: public BtreeIndexing::BtreeDictionary -{ - enum LINKS_TYPE { UNKNOWN, SLASH, NO_SLASH }; - - Mutex idxMutex; - Mutex zimMutex, idxResourceMutex; - File::Class idx; - BtreeIndex resourceIndex; - IdxHeader idxHeader; - string dictionaryName; - ZimFile df; - ZIM_header zimHeader; - set< quint32 > articlesIndexedForFTS; - LINKS_TYPE linksType; - - public: - - ZimDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - ~ZimDictionary(); - - virtual string getName() throw() - { return dictionaryName; } - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.articleCount; } - - virtual unsigned long getWordCount() throw() - { return idxHeader.wordCount; } - - inline virtual quint32 getLangFrom() const - { return idxHeader.langFrom; } - - inline virtual quint32 getLangTo() const - { return idxHeader.langTo; } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - - virtual QString const& getDescription(); - - /// Loads the resource. - void loadResource( std::string &resourceName, string & data ); - - virtual sptr< Dictionary::DataRequest > getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ); - virtual void getArticleText( uint32_t articleAddress, QString & headword, QString & text ); - - quint32 getArticleText( uint32_t articleAddress, QString & headword, QString & text, - set< quint32 > * loadedArticles ); - - virtual void makeFTSIndex(QAtomicInt & isCancelled, bool firstIteration ); - - virtual void setFTSParameters( Config::FullTextSearch const & fts ) - { - can_FTS = fts.enabled - && !fts.disabledTypes.contains( "ZIM", Qt::CaseInsensitive ) - && ( fts.maxDictionarySize == 0 || getArticleCount() <= fts.maxDictionarySize ); - } - -protected: - - virtual void loadIcon() throw(); - -private: - - /// Loads the article. - quint32 loadArticle( quint32 address, - string & articleText, - set< quint32 > * loadedArticles, - bool rawText = false ); - - string convert( string const & in_data ); - friend class ZimArticleRequest; - friend class ZimResourceRequest; -}; - -ZimDictionary::ZimDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ), - df( FsEncoding::decode( dictionaryFiles[ 0 ].c_str() ) ), - linksType( UNKNOWN ) -{ - // Open data file - - df.open( QFile::ReadOnly ); - memset( &zimHeader, 0, sizeof(zimHeader) ); - df.read( reinterpret_cast< char * >( &zimHeader ), sizeof( zimHeader ) ); - - // Initialize the indexes - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - resourceIndex.openIndex( IndexInfo( idxHeader.resourceIndexBtreeMaxElements, - idxHeader.resourceIndexRootOffset ), - idx, idxResourceMutex ); - - // Read dictionary name - - if( idxHeader.namePtr == 0xFFFFFFFF ) - { - QString name = QDir::fromNativeSeparators( FsEncoding::decode( dictionaryFiles[ 0 ].c_str() ) ); - int n = name.lastIndexOf( '/' ); - dictionaryName = string( name.mid( n + 1 ).toUtf8().constData() ); - } - else - { - readArticle( df, zimHeader, idxHeader.namePtr, dictionaryName ); - } - - // Full-text search parameters - - can_FTS = true; - - ftsIdxName = indexFile + "_FTS"; - - if( !Dictionary::needToRebuildIndex( dictionaryFiles, ftsIdxName ) - && !FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) - FTS_index_completed.ref(); -} - -ZimDictionary::~ZimDictionary() -{ - df.close(); -} - -void ZimDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 3 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/icon32_zim.png"); - } - - dictionaryIconLoaded = true; -} - -quint32 ZimDictionary::loadArticle( quint32 address, - string & articleText, - set< quint32 > * loadedArticles, - bool rawText ) -{ -quint32 ret; - { - Mutex::Lock _( zimMutex ); - ret = readArticle( df, zimHeader, address, articleText, loadedArticles ); - } - if( !rawText ) - articleText = convert( articleText ); - return ret; -} - -string ZimDictionary::convert( const string & in ) -{ - QString text = QString::fromUtf8( in.c_str() ); - - // replace background - text.replace( QRegExp( "<\\s*body\\s*([^>]*)(background(|-color)):([^;\"]*(|;))" ), - QString( "<body \\1" ) ); - - // pattern of img and script - text.replace( QRegExp( "<\\s*(img|script)\\s*([^>]*)src=(\"|)(\\.\\.|)/" ), - QString( "<\\1 \\2src=\\3bres://%1/").arg( getId().c_str() ) ); - - // Fix links without '"' - text.replace( QRegExp( "href=(\\.\\.|)/([^\\s>]+)" ), QString( "href=\"\\1/\\2\"" ) ); - - // pattern <link... href="..." ...> - text.replace( QRegExp( "<\\s*link\\s*([^>]*)href=\"(\\.\\.|)/" ), - QString( "<link \\1href=\"bres://%1/").arg( getId().c_str() ) ); - - // localize the http://en.wiki***.com|org/wiki/<key> series links - // excluding those keywords that have ":" in it - QString urlWiki = "\"http(s|)://en\\.(wiki(pedia|books|news|quote|source|voyage|versity)|wiktionary)\\.(org|com)/wiki/([^:\"]*)\""; - text.replace( QRegExp( "<\\s*a\\s+(class=\"external\"\\s+|)href=" + urlWiki ), - QString( "<a href=\"gdlookup://localhost/\\6\"" ) ); - - // pattern <a href="..." ...>, excluding any known protocols such as http://, mailto:, #(comment) - // these links will be translated into local definitions - QRegExp rxLink( "<\\s*a\\s+([^>]*)href=\"(?!(\\w+://|#|mailto:|tel:))(/|)([^\"]*)\"\\s*(title=\"[^\"]*\")?[^>]*>", - Qt::CaseSensitive, - QRegExp::RegExp2 ); - int pos = 0; - while( (pos = rxLink.indexIn( text, pos )) >= 0 ) - { - QStringList list = rxLink.capturedTexts(); - QString tag = list[3]; // a url, ex: Precambrian_Chaotian.html - if ( !list[4].isEmpty() ) // a title, ex: title="Precambrian/Chaotian" - tag = list[4].split("\"")[1]; - - - // Check type of links inside articles - if( linksType == UNKNOWN && tag.indexOf( '/' ) >= 0 ) - { - QString word = QUrl::fromPercentEncoding( tag.toLatin1() ); - word.remove( QRegExp( "\\.(s|)htm(l|)$", Qt::CaseInsensitive ) ). - replace( "_", " " ); - - vector< WordArticleLink > links; - links = findArticles( gd::toWString( word ) ); - - if( !links.empty() ) - { - linksType = SLASH; - } - else - { - word.remove( QRegExp(".*/") ); - links = findArticles( gd::toWString( word ) ); - if( !links.empty() ) - { - linksType = NO_SLASH; - links.clear(); - } - } - } - - if( linksType == SLASH || linksType == UNKNOWN ) - { - tag.remove( QRegExp( "\\.(s|)htm(l|)$", Qt::CaseInsensitive ) ). - replace( "_", "%20" ). - prepend( "<a href=\"gdlookup://localhost/" ). - append( "\" " + list[4] + ">" ); - } - else - { - tag.remove( QRegExp(".*/") ). - remove( QRegExp( "\\.(s|)htm(l|)$", Qt::CaseInsensitive ) ). - replace( "_", "%20" ). - prepend( "<a href=\"gdlookup://localhost/" ). - append( "\" " + list[4] + ">" ); - } - - text.replace( pos, list[0].length(), tag ); - pos += tag.length() + 1; - } - - // Occassionally words needs to be displayed in vertical, but <br/> were changed to <br\> somewhere - // proper style: <a href="gdlookup://localhost/Neoptera" ... >N<br/>e<br/>o<br/>p<br/>t<br/>e<br/>r<br/>a</a> - QRegExp rxBR( "(<a href=\"gdlookup://localhost/[^\"]*\"\\s*[^>]*>)\\s*((\\w\\s*<br(\\\\|/|)>\\s*)+\\w)\\s*</a>", - Qt::CaseSensitive, - QRegExp::RegExp2 ); - pos = 0; - while( (pos = rxBR.indexIn( text, pos )) >= 0 ) - { - QStringList list = rxBR.capturedTexts(); - QString tag = list[2]; - tag.replace( QRegExp( "<br( |)(\\\\|/|)>", Qt::CaseInsensitive ) , "<br/>" ). - prepend( list[1] ). - append( "</a>" ); - - text.replace( pos, list[0].length(), tag ); - pos += tag.length() + 1; - } - - // // output all links in the page - only for analysis - // QRegExp rxPrintAllLinks( "<\\s*a\\s+[^>]*href=\"[^\"]*\"[^>]*>", - // Qt::CaseSensitive, - // QRegExp::RegExp2 ); - // pos = 0; - // while( (pos = rxPrintAllLinks.indexIn( text, pos )) >= 0 ) - // { - // QStringList list = rxPrintAllLinks.capturedTexts(); - // qDebug() << "\n--Alllinks--" << list[0]; - // pos += list[0].length() + 1; - // } - - // Fix outstanding elements - text += "<br style=\"clear:both;\" />"; - - return text.toUtf8().data(); -} - -void ZimDictionary::loadResource( std::string & resourceName, string & data ) -{ - vector< WordArticleLink > link; - string resData; - - link = resourceIndex.findArticles( Utf8::decode( resourceName ) ); - - if( link.empty() ) - return; - - { - Mutex::Lock _( zimMutex ); - readArticle( df, zimHeader, link[ 0 ].articleOffset, data ); - } -} - -QString const& ZimDictionary::getDescription() -{ - if( !dictionaryDescription.isEmpty() || idxHeader.descriptionPtr == 0xFFFFFFFF ) - return dictionaryDescription; - - string str; - { - Mutex::Lock _( zimMutex ); - readArticle( df, zimHeader, idxHeader.descriptionPtr, str ); - } - - if( !str.empty() ) - dictionaryDescription = QString::fromUtf8( str.c_str(), str.size() ); - - return dictionaryDescription; -} - -void ZimDictionary::makeFTSIndex( QAtomicInt & isCancelled, bool firstIteration ) -{ - if( !( Dictionary::needToRebuildIndex( getDictionaryFilenames(), ftsIdxName ) - || FtsHelpers::ftsIndexIsOldOrBad( ftsIdxName, this ) ) ) - FTS_index_completed.ref(); - - if( haveFTSIndex() ) - return; - - if( ensureInitDone().size() ) - return; - - if( firstIteration ) - return; - - gdDebug( "Zim: Building the full-text index for dictionary: %s\n", - getName().c_str() ); - - try - { - Mutex::Lock _( getFtsMutex() ); - - File::Class ftsIdx( ftsIndexName(), "wb" ); - - FtsHelpers::FtsIdxHeader ftsIdxHeader; - memset( &ftsIdxHeader, 0, sizeof( ftsIdxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - ftsIdx.write( ftsIdxHeader ); - - ChunkedStorage::Writer chunks( ftsIdx ); - - BtreeIndexing::IndexedWords indexedWords; - - QSet< uint32_t > setOfOffsets; - - findArticleLinks( 0, &setOfOffsets, 0, &isCancelled ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QVector< uint32_t > offsets; - offsets.resize( setOfOffsets.size() ); - uint32_t * ptr = &offsets.front(); - - for( QSet< uint32_t >::ConstIterator it = setOfOffsets.constBegin(); - it != setOfOffsets.constEnd(); ++it ) - { - *ptr = *it; - ptr++; - } - - // Free memory - setOfOffsets.clear(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - qSort( offsets ); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QMap< QString, QVector< uint32_t > > ftsWords; - - set< quint32 > indexedArticles; - quint32 articleNumber; - - // index articles for full-text search - for( int i = 0; i < offsets.size(); i++ ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - QString headword, articleStr; - - articleNumber = getArticleText( offsets.at( i ), headword, articleStr, - &indexedArticles ); - if( articleNumber == 0xFFFFFFFF ) - continue; - - indexedArticles.insert( articleNumber ); - - FtsHelpers::parseArticleForFts( offsets.at( i ), articleStr, ftsWords ); - } - - // Free memory - offsets.clear(); - - QMap< QString, QVector< uint32_t > >::iterator it = ftsWords.begin(); - while( it != ftsWords.end() ) - { - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - uint32_t offset = chunks.startNewBlock(); - uint32_t size = it.value().size(); - - chunks.addToBlock( &size, sizeof(uint32_t) ); - chunks.addToBlock( it.value().data(), size * sizeof(uint32_t) ); - - indexedWords.addSingleWord( gd::toWString( it.key() ), offset ); - - it = ftsWords.erase( it ); - } - - // Free memory - ftsWords.clear(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - ftsIdxHeader.chunksOffset = chunks.finish(); - ftsIdxHeader.wordCount = indexedWords.size(); - - if( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - throw exUserAbort(); - - BtreeIndexing::IndexInfo ftsIdxInfo = BtreeIndexing::buildIndex( indexedWords, ftsIdx ); - - // Free memory - indexedWords.clear(); - - ftsIdxHeader.indexBtreeMaxElements = ftsIdxInfo.btreeMaxElements; - ftsIdxHeader.indexRootOffset = ftsIdxInfo.rootOffset; - - ftsIdxHeader.signature = FtsHelpers::FtsSignature; - ftsIdxHeader.formatVersion = FtsHelpers::CurrentFtsFormatVersion + getFtsIndexVersion(); - - ftsIdx.rewind(); - ftsIdx.writeRecords( &ftsIdxHeader, sizeof(ftsIdxHeader), 1 ); - - FTS_index_completed.ref(); - } - catch( std::exception &ex ) - { - gdWarning( "Zim: Failed building full-text search index for \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - QFile::remove( FsEncoding::decode( ftsIdxName.c_str() ) ); - } -} - -void ZimDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text ) -{ - try - { - headword.clear(); - string articleText; - - loadArticle( articleAddress, articleText, 0, true ); - text = Html::unescape( QString::fromUtf8( articleText.data(), articleText.size() ) ); - } - catch( std::exception &ex ) - { - gdWarning( "Zim: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } -} - -quint32 ZimDictionary::getArticleText( uint32_t articleAddress, QString & headword, QString & text, - set< quint32 > * loadedArticles ) -{ - quint32 articleNumber = 0xFFFFFFFF; - try - { - headword.clear(); - string articleText; - - articleNumber = loadArticle( articleAddress, articleText, loadedArticles, true ); - text = Html::unescape( QString::fromUtf8( articleText.data(), articleText.size() ) ); - } - catch( std::exception &ex ) - { - gdWarning( "Zim: Failed retrieving article from \"%s\", reason: %s\n", getName().c_str(), ex.what() ); - } - return articleNumber; -} - -sptr< Dictionary::DataRequest > ZimDictionary::getSearchResults( QString const & searchString, - int searchMode, bool matchCase, - int distanceBetweenWords, - int maxResults ) -{ - return new FtsHelpers::FTSResultsRequest( *this, searchString,searchMode, matchCase, distanceBetweenWords, maxResults ); -} - -/// ZimDictionary::getArticle() - -class ZimArticleRequest; - -class ZimArticleRequestRunnable: public QRunnable -{ - ZimArticleRequest & r; - QSemaphore & hasExited; - -public: - - ZimArticleRequestRunnable( ZimArticleRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~ZimArticleRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class ZimArticleRequest: public Dictionary::DataRequest -{ - friend class ZimArticleRequestRunnable; - - wstring word; - vector< wstring > alts; - ZimDictionary & dict; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - ZimArticleRequest( wstring const & word_, - vector< wstring > const & alts_, - ZimDictionary & dict_ ): - word( word_ ), alts( alts_ ), dict( dict_ ) - { - QThreadPool::globalInstance()->start( - new ZimArticleRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by ZimArticleRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~ZimArticleRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void ZimArticleRequestRunnable::run() -{ - r.run(); -} - -void ZimArticleRequest::run() -{ - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - vector< WordArticleLink > chain = dict.findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = dict.findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, pair< string, string > > mainArticles, alternateArticles; - - set< quint32 > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - // Now grab that article - - string headword, articleText; - - headword = chain[ x ].word; - - quint32 articleNumber = 0xFFFFFFFF; - try - { - articleNumber = dict.loadArticle( chain[ x ].articleOffset, articleText, &articlesIncluded ); - } - catch(...) - { - } - - if( articleNumber == 0xFFFFFFFF ) - continue; // No article loaded - - if ( articlesIncluded.find( articleNumber ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ); - - multimap< wstring, pair< string, string > > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( pair< wstring, pair< string, string > >( - Folding::applySimpleCaseOnly( Utf8::decode( headword ) ), - pair< string, string >( headword, articleText ) ) ); - - articlesIncluded.insert( articleNumber ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - { - // No such word - finish(); - return; - } - - string result; - - // See Issue #271: A mechanism to clean-up invalid HTML cards. - string cleaner = "</font>""</font>""</font>""</font>""</font>""</font>" - "</font>""</font>""</font>""</font>""</font>""</font>" - "</b></b></b></b></b></b></b></b>" - "</i></i></i></i></i></i></i></i>" - "</a></a></a></a></a></a></a></a>"; - - multimap< wstring, pair< string, string > >::const_iterator i; - - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - result += "<div class=\"zimdict\">"; - result += "<h2 class=\"zimdict_headword\">"; - result += i->second.first; - result += "</h2>"; - result += i->second.second; - result += cleaner + "</div>"; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - result += "<div class=\"zimdict\">"; - result += "<h2 class=\"zimdict_headword\">"; - result += i->second.first; - result += "</h2>"; - result += i->second.second; - result += cleaner + "</div>"; - } - - Mutex::Lock _( dataMutex ); - - data.resize( result.size() ); - - memcpy( &data.front(), result.data(), result.size() ); - - hasAnyData = true; - - finish(); -} - -sptr< Dictionary::DataRequest > ZimDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - return new ZimArticleRequest( word, alts, *this ); -} - -//// ZimDictionary::getResource() - -class ZimResourceRequest; - -class ZimResourceRequestRunnable: public QRunnable -{ - ZimResourceRequest & r; - QSemaphore & hasExited; - -public: - - ZimResourceRequestRunnable( ZimResourceRequest & r_, - QSemaphore & hasExited_ ): r( r_ ), - hasExited( hasExited_ ) - {} - - ~ZimResourceRequestRunnable() - { - hasExited.release(); - } - - virtual void run(); -}; - -class ZimResourceRequest: public Dictionary::DataRequest -{ - friend class ZimResourceRequestRunnable; - - ZimDictionary & dict; - - string resourceName; - - QAtomicInt isCancelled; - QSemaphore hasExited; - -public: - - ZimResourceRequest( ZimDictionary & dict_, - string const & resourceName_ ): - dict( dict_ ), - resourceName( resourceName_ ) - { - QThreadPool::globalInstance()->start( - new ZimResourceRequestRunnable( *this, hasExited ) ); - } - - void run(); // Run from another thread by ZimResourceRequestRunnable - - virtual void cancel() - { - isCancelled.ref(); - } - - ~ZimResourceRequest() - { - isCancelled.ref(); - hasExited.acquire(); - } -}; - -void ZimResourceRequestRunnable::run() -{ - r.run(); -} - -void ZimResourceRequest::run() -{ - // Some runnables linger enough that they are cancelled before they start - if ( Qt4x5::AtomicInt::loadAcquire( isCancelled ) ) - { - finish(); - return; - } - - try - { - string resource; - dict.loadResource( resourceName, resource ); - if( resource.empty() ) - throw File::Ex(); - - if( Filetype::isNameOfCSS( resourceName ) ) - { - QString css = QString::fromUtf8( resource.data(), resource.size() ); - dict.isolateCSS( css, ".zimdict" ); - QByteArray bytes = css.toUtf8(); - data.resize( bytes.size() ); - memcpy( &data.front(), bytes.constData(), bytes.size() ); - } - else - if ( Filetype::isNameOfTiff( resourceName ) ) - { - // Convert it - - dataMutex.lock(); - - QImage img = QImage::fromData( reinterpret_cast< const uchar * >( resource.data() ), resource.size() ); - -#ifdef MAKE_EXTRA_TIFF_HANDLER - if( img.isNull() ) - GdTiff::tiffToQImage( &data.front(), data.size(), img ); -#endif - - dataMutex.unlock(); - - if ( !img.isNull() ) - { - // Managed to load -- now store it back as BMP - - QByteArray ba; - QBuffer buffer( &ba ); - buffer.open( QIODevice::WriteOnly ); - img.save( &buffer, "BMP" ); - - Mutex::Lock _( dataMutex ); - - data.resize( buffer.size() ); - - memcpy( &data.front(), buffer.data(), data.size() ); - } - } - else - { - Mutex::Lock _( dataMutex ); - data.resize( resource.size() ); - memcpy( &data.front(), resource.data(), data.size() ); - } - - hasAnyData = true; - } - catch( std::exception &ex ) - { - gdWarning( "ZIM: Failed loading resource \"%s\" from \"%s\", reason: %s\n", - resourceName.c_str(), dict.getName().c_str(), ex.what() ); - // Resource not loaded -- we don't set the hasAnyData flag then - } - - finish(); -} - -sptr< Dictionary::DataRequest > ZimDictionary::getResource( string const & name ) - throw( std::exception ) -{ - return new ZimResourceRequest( *this, name ); -} - -//} // anonymous namespace - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - // Skip files with the extensions different to .zim to speed up the - // scanning - - QString firstName = QDir::fromNativeSeparators( FsEncoding::decode( i->c_str() ) ); - if( !firstName.endsWith( ".zim") && !firstName.endsWith( ".zimaa" ) ) - continue; - - // Got the file -- check if we need to rebuid the index - - ZimFile df( firstName ); - - vector< string > dictFiles; - df.getFilenames( dictFiles ); - - string dictId = Dictionary::makeDictionaryId( dictFiles ); - - string indexFile = indicesDir + dictId; - - try - { - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - gdDebug( "Zim: Building the index for dictionary: %s\n", i->c_str() ); - - ZIM_header zh; - - unsigned articleCount = 0; - unsigned wordCount = 0; - - df.open( QFile::ReadOnly ); - - qint64 ret = df.read( reinterpret_cast< char * >( &zh ), sizeof( zh ) ); - if( ret != sizeof( zh ) ) - throw exCantReadFile( i->c_str() ); - - if( zh.magicNumber != 0x44D495A ) - throw exNotZimFile( i->c_str() ); - - { - int n = firstName.lastIndexOf( '/' ); - initializing.indexingDictionary( firstName.mid( n + 1 ).toUtf8().constData() ); - } - - File::Class idx( indexFile, "wb" ); - IdxHeader idxHeader; - memset( &idxHeader, 0, sizeof( idxHeader ) ); - idxHeader.namePtr = 0xFFFFFFFF; - idxHeader.descriptionPtr = 0xFFFFFFFF; - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - IndexedWords indexedWords, indexedResources; - - QByteArray artEntries; - df.seek( zh.urlPtrPos ); - artEntries = df.read( (quint64)zh.articleCount * 8 ); - - QVector< quint64 > clusters; - clusters.reserve( zh.clusterCount ); - df.seek( zh.clusterPtrPos ); - { - QByteArray data = df.read( (quint64)zh.clusterCount * 8 ); - for( unsigned n = 0; n < zh.clusterCount; n++ ) - clusters.append( *( reinterpret_cast< const quint64 * >( data.constData() ) + n ) ); - } - - const quint64 * ptr; - quint16 mimetype; - ArticleEntry artEntry; - RedirectEntry redEntry; - string url, title; - char nameSpace; - for( unsigned n = 0; n < zh.articleCount; n++ ) - { - ptr = reinterpret_cast< const quint64 * >( artEntries.constData() ) + n; - df.seek( *ptr ); - df.read( reinterpret_cast< char * >( &mimetype ), sizeof(mimetype) ); - if( mimetype == 0xFFFF ) - { - redEntry.mimetype = mimetype; - ret = df.read( reinterpret_cast< char * >( &redEntry ) + 2, sizeof(RedirectEntry) - 2 ); - if( ret != sizeof(RedirectEntry) - 2 ) - throw exCantReadFile( i->c_str() ); - - nameSpace = redEntry.nameSpace; - } - else - { - artEntry.mimetype = mimetype; - ret = df.read( reinterpret_cast< char * >( &artEntry ) + 2, sizeof(ArticleEntry) - 2 ); - if( ret != sizeof(ArticleEntry) - 2 ) - throw exCantReadFile( i->c_str() ); - - nameSpace = artEntry.nameSpace; - - if( nameSpace == 'A' ) - articleCount++; - } - - // Read article url and title - char ch; - - url.clear(); - while( df.getChar( &ch ) ) - { - if( ch == 0 ) - break; - url.push_back( ch ); - } - - title.clear(); - while( df.getChar( &ch ) ) - { - if( ch == 0 ) - break; - title.push_back( ch ); - } - - if( nameSpace == 'A' ) - { - if( !title.empty() ) - indexedWords.addWord( Utf8::decode( title ), n ); - else - indexedWords.addWord( Utf8::decode( url ), n ); - wordCount++; - } - else - if( nameSpace == 'M' ) - { - if( url.compare( "Title") == 0 ) - { - idxHeader.namePtr = n; - string name; - readArticle( df, zh, n, name ); - initializing.indexingDictionary( name ); - } - else - if( url.compare( "Description") == 0 ) - idxHeader.descriptionPtr = n; - else - if( url.compare( "Language") == 0 ) - { - string lang; - readArticle( df, zh, n, lang ); - if( lang.size() == 2 ) - idxHeader.langFrom = LangCoder::code2toInt( lang.c_str() ); - else - if( lang.size() == 3 ) - idxHeader.langFrom = LangCoder::code3toInt( lang.c_str() ); - idxHeader.langTo = idxHeader.langFrom; - } - } - else - { - url.insert( url.begin(), '/' ); - url.insert( url.begin(), nameSpace ); - indexedResources.addSingleWord( Utf8::decode( url ), n ); - } - } - - // Build index - - { - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedWords, idx ); - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - indexedWords.clear(); // Release memory -- no need for this data - } - - { - IndexInfo idxInfo = BtreeIndexing::buildIndex( indexedResources, idx ); - - idxHeader.resourceIndexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.resourceIndexRootOffset = idxInfo.rootOffset; - - indexedResources.clear(); // Release memory -- no need for this data - } - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.articleCount = articleCount; - idxHeader.wordCount = wordCount; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - - dictionaries.push_back( new ZimDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Zim dictionary initializing failed: %s, error: %s\n", - i->c_str(), e.what() ); - continue; - } - catch( ... ) - { - qWarning( "Zim dictionary initializing failed\n" ); - continue; - } - } - return dictionaries; -} - -} // namespace Zim - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zim.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/zim.hh deleted file mode 100644 index 2717cd0625..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zim.hh +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef __ZIM_HH_INCLUDED__ -#define __ZIM_HH_INCLUDED__ - -#ifdef MAKE_ZIM_SUPPORT - -#include "dictionary.hh" - -/// Support for the Zim dictionaries. -namespace Zim { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipfile.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipfile.cc deleted file mode 100644 index 3b3ede5f63..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipfile.cc +++ /dev/null @@ -1,189 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov <ikm@goldendict.org> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "zipfile.hh" -#include <QtEndian> -#include <QByteArray> - -namespace ZipFile { - -#pragma pack( push, 1 ) - -/// End-of-central-directory record, as is -struct EndOfCdirRecord -{ - quint32 signature; - quint16 numDisk, numDiskCd, totalEntriesDisk, totalEntries; - quint32 size, offset; - quint16 commentLength; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct CentralFileHeaderRecord -{ - quint32 signature; - quint16 verMadeBy, verNeeded, gpBits, compressionMethod, fileTime, fileDate; - quint32 crc32, compressedSize, uncompressedSize; - quint16 fileNameLength, extraFieldLength, fileCommentLength, diskNumberStart, - intFileAttrs; - quint32 externalFileAttrs, offsetOfLocalHeader; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -struct LocalFileHeaderRecord -{ - quint32 signature; - quint16 verNeeded, gpBits, compressionMethod, fileTime, fileDate; - quint32 crc32, compressedSize, uncompressedSize; - quint16 fileNameLength, extraFieldLength; -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -#pragma pack( pop ) - -static quint32 const endOfCdirRecordSignatureValue = qToLittleEndian( 0x06054b50 ); -static quint32 const centralFileHeaderSignature = qToLittleEndian( 0x02014b50 ); -static quint32 const localFileHeaderSignature = qToLittleEndian( 0x04034b50 ); - -static CompressionMethod getCompressionMethod( quint16 compressionMethod ) -{ - switch( qFromLittleEndian( compressionMethod ) ) - { - case 0: - return Uncompressed; - case 8: - return Deflated; - default: - return Unsupported; - } -} - -bool positionAtCentralDir( QFile & zip ) -{ - // Find the end-of-central-directory record - - int maxEofBufferSize = 65535 + sizeof( EndOfCdirRecord ); - - if ( zip.size() > maxEofBufferSize ) - zip.seek( zip.size() - maxEofBufferSize ); - else - if ( (size_t) zip.size() < sizeof( EndOfCdirRecord ) ) - return false; - else - zip.seek( 0 ); - - QByteArray eocBuffer = zip.read( maxEofBufferSize ); - - if ( eocBuffer.size() < (int)sizeof( EndOfCdirRecord ) ) - return false; - - int lastIndex = eocBuffer.size() - sizeof( EndOfCdirRecord ); - - QByteArray endOfCdirRecordSignature( (char const *)&endOfCdirRecordSignatureValue, - sizeof( endOfCdirRecordSignatureValue ) ); - - EndOfCdirRecord endOfCdirRecord; - - for( ; ; --lastIndex ) - { - lastIndex = eocBuffer.lastIndexOf( endOfCdirRecordSignature, lastIndex ); - - if ( lastIndex == -1 ) - return false; - - /// We need to copy it due to possible alignment issues on ARM etc - memcpy( &endOfCdirRecord, eocBuffer.data() + lastIndex, - sizeof( endOfCdirRecord ) ); - - /// Sanitize the record by checking the offset - - if ( !zip.seek( qFromLittleEndian( endOfCdirRecord.offset ) ) ) - continue; - - quint32 signature; - - if ( zip.read( (char *)&signature, sizeof( signature ) ) != sizeof( signature ) ) - continue; - - if ( signature == centralFileHeaderSignature ) - break; - } - - // Found cdir -- position the file on the first header - - return zip.seek( qFromLittleEndian( endOfCdirRecord.offset ) ); -} - -bool readNextEntry( QFile & zip, CentralDirEntry & entry ) -{ - CentralFileHeaderRecord record; - - if ( zip.read( (char *)&record, sizeof( record ) ) != sizeof( record ) ) - return false; - - if ( record.signature != centralFileHeaderSignature ) - return false; - - // Read file name - - int fileNameLength = qFromLittleEndian( record.fileNameLength ); - entry.fileName = zip.read( fileNameLength ); - - if ( entry.fileName.size() != fileNameLength ) - return false; - - // Skip extra fields - - if ( !zip.seek( ( zip.pos() + qFromLittleEndian( record.extraFieldLength ) ) + - qFromLittleEndian( record.fileCommentLength ) ) ) - return false; - - entry.localHeaderOffset = qFromLittleEndian( record.offsetOfLocalHeader ); - entry.compressedSize = qFromLittleEndian( record.compressedSize ); - entry.uncompressedSize = qFromLittleEndian( record.uncompressedSize ); - entry.compressionMethod = getCompressionMethod( record.compressionMethod ); - entry.fileNameInUTF8 = ( qFromLittleEndian( record.gpBits ) & 0x800 ) != 0; - - return true; -} - -bool readLocalHeader( QFile & zip, LocalFileHeader & entry ) -{ - LocalFileHeaderRecord record; - - if ( zip.read( (char *)&record, sizeof( record ) ) != sizeof( record ) ) - return false; - - if ( record.signature != localFileHeaderSignature ) - return false; - - // Read file name - - int fileNameLength = qFromLittleEndian( record.fileNameLength ); - entry.fileName = zip.read( fileNameLength ); - - if ( entry.fileName.size() != fileNameLength ) - return false; - - // Skip extra field - - if ( !zip.seek( zip.pos() + qFromLittleEndian( record.extraFieldLength ) ) ) - return false; - - entry.compressedSize = qFromLittleEndian( record.compressedSize ); - entry.uncompressedSize = qFromLittleEndian( record.uncompressedSize ); - entry.compressionMethod = getCompressionMethod( record.compressionMethod ); - - return true; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipfile.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipfile.hh deleted file mode 100644 index 627bb8196f..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipfile.hh +++ /dev/null @@ -1,59 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov <ikm@goldendict.org> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef __ZIPFILE_HH_INCLUDED__ -#define __ZIPFILE_HH_INCLUDED__ - -#include <QFile> - -/// Support for zip files in GoldenDict. Note that the implementation is -/// strictly tailored to GoldenDict needs only. -namespace ZipFile { - -enum CompressionMethod -{ - Uncompressed, - Deflated, - Unsupported -}; - -/// Entry from central dir -struct CentralDirEntry -{ - QByteArray fileName; - - quint32 localHeaderOffset, compressedSize, uncompressedSize; - CompressionMethod compressionMethod; - bool fileNameInUTF8; -}; - -/// Represents contents of the local file header -- that what CentralDirEntry:: -/// localHeaderOffset points at. -struct LocalFileHeader -{ - QByteArray fileName; - - quint32 compressedSize, uncompressedSize; - CompressionMethod compressionMethod; -}; - -/// Finds the central directory in the given file and positions it at its -/// beginning. Returns true if the file is positioned, false otherwise (not a -/// zip file or other error). -/// Once the file is positioned, entries may be read by constructing Entry -/// objects. -bool positionAtCentralDir( QFile & ); - -/// Reads entry from the zip at its current offset. The file gets advanced -/// by the size of entry, so it points to the next entry. -/// Returns true on success, false otherwise. -bool readNextEntry( QFile &, CentralDirEntry & ); - -/// Reads loca file header from the zip at its current offset. The file gets -/// advanced by the size of entry and starts pointing to file data. -/// Returns true on success, false otherwise. -bool readLocalHeader( QFile &, LocalFileHeader & ); - -} - -#endif diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipsounds.cc b/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipsounds.cc deleted file mode 100644 index 2cc511383e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipsounds.cc +++ /dev/null @@ -1,517 +0,0 @@ -/* This file is (c) 2008-2012 Konstantin Isakov <ikm@goldendict.org> - * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#include "zipsounds.hh" -#include "file.hh" -#include "folding.hh" -#include "utf8.hh" -#include "btreeidx.hh" -#include "fsencoding.hh" -#include "audiolink.hh" -#include "indexedzip.hh" -#include "filetype.hh" -#include "gddebug.hh" -#include "chunkedstorage.hh" -#include "htmlescape.hh" - -#include <set> -#include <string> -#include <QFile> -#include <QDir> -#include <QDebug> - -#ifdef _MSC_VER -#include <stub_msvc.h> -#endif - -#include "qt4x5.hh" - -namespace ZipSounds { - -using std::string; -using gd::wstring; -using std::map; -using std::multimap; -using std::set; -using BtreeIndexing::WordArticleLink; -using BtreeIndexing::IndexedWords; -using BtreeIndexing::IndexInfo; - -namespace { - -DEF_EX( exInvalidData, "Invalid data encountered", Dictionary::Ex ) - -enum -{ - Signature = 0x5350495a, // ZIPS on little-endian, SPIZ on big-endian - CurrentFormatVersion = 5 + BtreeIndexing::FormatVersion -}; - -struct IdxHeader -{ - uint32_t signature; // First comes the signature, ZIPS - uint32_t formatVersion; // File format version, currently 1. - uint32_t soundsCount; // Total number of sounds, for informative purposes only - uint32_t indexBtreeMaxElements; // Two fields from IndexInfo - uint32_t indexRootOffset; - uint32_t chunksOffset; // The offset to chunks' storage -} -#ifndef _MSC_VER -__attribute__((packed)) -#endif -; - -bool indexIsOldOrBad( string const & indexFile ) -{ - File::Class idx( indexFile, "rb" ); - - IdxHeader header; - - return idx.readRecords( &header, sizeof( header ), 1 ) != 1 || - header.signature != Signature || - header.formatVersion != CurrentFormatVersion; -} - -wstring stripExtension( string const & str ) -{ - wstring name; - try - { - name = Utf8::decode( str ); - } - catch( Utf8::exCantDecode ) - { - return name; - } - - if( Filetype::isNameOfSound( str ) ) - { - wstring::size_type pos = name.rfind( L'.' ); - if ( pos != wstring::npos ) - name.erase( pos ); - - // Strip spaces at the end of name - string::size_type n = name.length(); - while( n && name.at( n - 1 ) == L' ' ) - n--; - - if( n != name.length() ) - name.erase( n ); - } - return name; -} - -class ZipSoundsDictionary: public BtreeIndexing::BtreeDictionary -{ - Mutex idxMutex; - File::Class idx; - IdxHeader idxHeader; - sptr< ChunkedStorage::Reader > chunks; - IndexedZip zipsFile; - -public: - - ZipSoundsDictionary( string const & id, string const & indexFile, - vector< string > const & dictionaryFiles ); - - virtual string getName() throw(); - - virtual map< Dictionary::Property, string > getProperties() throw() - { return map< Dictionary::Property, string >(); } - - virtual unsigned long getArticleCount() throw() - { return idxHeader.soundsCount; } - - virtual unsigned long getWordCount() throw() - { return getArticleCount(); } - - virtual sptr< Dictionary::DataRequest > getArticle( wstring const &, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ); - - virtual sptr< Dictionary::DataRequest > getResource( string const & name ) - throw( std::exception ); - -protected: - - virtual void loadIcon() throw(); -}; - -ZipSoundsDictionary::ZipSoundsDictionary( string const & id, - string const & indexFile, - vector< string > const & dictionaryFiles ): - BtreeDictionary( id, dictionaryFiles ), - idx( indexFile, "rb" ), - idxHeader( idx.read< IdxHeader >() ) -{ - chunks = new ChunkedStorage::Reader( idx, idxHeader.chunksOffset ); - - // Initialize the index - - openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - - QString zipName = QDir::fromNativeSeparators( - FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - zipsFile.openZipFile( zipName ); - zipsFile.openIndex( IndexInfo( idxHeader.indexBtreeMaxElements, - idxHeader.indexRootOffset ), - idx, idxMutex ); - -} - -string ZipSoundsDictionary::getName() throw() -{ - string result = FsEncoding::basename( getDictionaryFilenames()[ 0 ] ); - - // Strip the extension - result.erase( result.rfind( '.' ) ); - - return result; -} - -sptr< Dictionary::DataRequest > ZipSoundsDictionary::getArticle( wstring const & word, - vector< wstring > const & alts, - wstring const & ) - throw( std::exception ) -{ - vector< WordArticleLink > chain = findArticles( word ); - - for( unsigned x = 0; x < alts.size(); ++x ) - { - /// Make an additional query for each alt - - vector< WordArticleLink > altChain = findArticles( alts[ x ] ); - - chain.insert( chain.end(), altChain.begin(), altChain.end() ); - } - - multimap< wstring, uint32_t > mainArticles, alternateArticles; - - set< uint32_t > articlesIncluded; // Some synonims make it that the articles - // appear several times. We combat this - // by only allowing them to appear once. - - wstring wordCaseFolded = Folding::applySimpleCaseOnly( word ); - - for( unsigned x = 0; x < chain.size(); ++x ) - { - if ( articlesIncluded.find( chain[ x ].articleOffset ) != articlesIncluded.end() ) - continue; // We already have this article in the body. - - // Ok. Now, does it go to main articles, or to alternate ones? We list - // main ones first, and alternates after. - - // We do the case-folded comparison here. - - wstring headwordStripped = - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ); - - multimap< wstring, uint32_t > & mapToUse = - ( wordCaseFolded == headwordStripped ) ? - mainArticles : alternateArticles; - - mapToUse.insert( std::pair< wstring, uint32_t >( - Folding::applySimpleCaseOnly( Utf8::decode( chain[ x ].word ) ), chain[ x ].articleOffset ) ); - - articlesIncluded.insert( chain[ x ].articleOffset ); - } - - if ( mainArticles.empty() && alternateArticles.empty() ) - return new Dictionary::DataRequestInstant( false ); // No such word - - string result; - - multimap< wstring, uint32_t >::const_iterator i; - - result += "<table class=\"lsa_play\">"; - - vector< char > chunk; - char * nameBlock; - - for( i = mainArticles.begin(); i != mainArticles.end(); ++i ) - { - try - { - Mutex::Lock _( idxMutex ); - nameBlock = chunks->getBlock( i->second, chunk ); - - if ( nameBlock >= &chunk.front() + chunk.size() ) - { - // chunks reader thinks it's okay since zero-sized records can exist, - // but we don't allow that. - throw ChunkedStorage::exAddressOutOfRange(); - } - } - catch( ChunkedStorage::exAddressOutOfRange & ) - { - // Bad address - continue; - } - - uint16_t sz; - memcpy( &sz, nameBlock, sizeof( uint16_t ) ); - nameBlock += sizeof( uint16_t ); - - string name( nameBlock, sz ); - nameBlock += sz; - - string displayedName = mainArticles.size() + alternateArticles.size() > 1 ? - name : Utf8::encode( stripExtension( name ) ); - - result += "<tr>"; - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( name.c_str() ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += "<td><a href=" + ref + "><img src=\"qrcx://localhost/icons/playsound.png\" border=\"0\" alt=\"Play\"/></a></td>"; - result += "<td><a href=" + ref + ">" + Html::escape( displayedName ) + "</a></td>"; - result += "</tr>"; - } - - for( i = alternateArticles.begin(); i != alternateArticles.end(); ++i ) - { - try - { - Mutex::Lock _( idxMutex ); - nameBlock = chunks->getBlock( i->second, chunk ); - - if ( nameBlock >= &chunk.front() + chunk.size() ) - { - // chunks reader thinks it's okay since zero-sized records can exist, - // but we don't allow that. - throw ChunkedStorage::exAddressOutOfRange(); - } - } - catch( ChunkedStorage::exAddressOutOfRange & ) - { - // Bad address - continue; - } - - uint16_t sz; - memcpy( &sz, nameBlock, sizeof( uint16_t ) ); - nameBlock += sizeof( uint16_t ); - - string name( nameBlock, sz ); - nameBlock += sz; - - string displayedName = mainArticles.size() + alternateArticles.size() > 1 ? - name : Utf8::encode( stripExtension( name ) ); - - result += "<tr>"; - - QUrl url; - url.setScheme( "gdau" ); - url.setHost( QString::fromUtf8( getId().c_str() ) ); - url.setPath( Qt4x5::Url::ensureLeadingSlash( QString::fromUtf8( name.c_str() ) ) ); - - string ref = string( "\"" ) + url.toEncoded().data() + "\""; - - result += addAudioLink( ref, getId() ); - - result += "<td><a href=" + ref + "><img src=\"qrcx://localhost/icons/playsound.png\" border=\"0\" alt=\"Play\"/></a></td>"; - result += "<td><a href=" + ref + ">" + Html::escape( displayedName ) + "</a></td>"; - result += "</tr>"; - } - - result += "</table>"; - - Dictionary::DataRequestInstant * ret = - new Dictionary::DataRequestInstant( true ); - - ret->getData().resize( result.size() ); - - memcpy( &(ret->getData().front()), result.data(), result.size() ); - - return ret; -} - -sptr< Dictionary::DataRequest > ZipSoundsDictionary::getResource( string const & name ) - throw( std::exception ) -{ - // Remove extension for sound files (like in sound dirs) - - wstring strippedName = stripExtension( name ); - - vector< WordArticleLink > chain = findArticles( strippedName ); - - if ( chain.empty() ) - return new Dictionary::DataRequestInstant( false ); // No such resource - - // Find sound - - uint32_t dataOffset = 0; - for( int x = chain.size() - 1; x >= 0 ; x-- ) - { - vector< char > chunk; - char * nameBlock = chunks->getBlock( chain[ x ].articleOffset, chunk ); - - uint16_t sz; - memcpy( &sz, nameBlock, sizeof( uint16_t ) ); - nameBlock += sizeof( uint16_t ); - - string fileName( nameBlock, sz ); - nameBlock += sz; - - memcpy( &dataOffset, nameBlock, sizeof( uint32_t ) ); - - if( name.compare( fileName ) == 0 ) - break; - } - - sptr< Dictionary::DataRequestInstant > dr = new - Dictionary::DataRequestInstant( true ); - - if ( zipsFile.loadFile( dataOffset, dr->getData() ) ) - return dr; - - return new Dictionary::DataRequestInstant( false ); -} - -void ZipSoundsDictionary::loadIcon() throw() -{ - if ( dictionaryIconLoaded ) - return; - - QString fileName = - QDir::fromNativeSeparators( FsEncoding::decode( getDictionaryFilenames()[ 0 ].c_str() ) ); - - // Remove the extension - fileName.chop( 4 ); - - if( !loadIconFromFile( fileName ) ) - { - // Load failed -- use default icons - dictionaryNativeIcon = dictionaryIcon = QIcon(":/icons/playsound.png"); - } - - dictionaryIconLoaded = true; -} - -} - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & initializing ) - throw( std::exception ) -{ - (void) initializing; - vector< sptr< Dictionary::Class > > dictionaries; - - for( vector< string >::const_iterator i = fileNames.begin(); i != fileNames.end(); - ++i ) - { - /// Only allow .zips extension - if ( i->size() < 5 || strcasecmp( i->c_str() + ( i->size() - 5 ), ".zips" ) != 0 ) - continue; - - try - { - vector< string > dictFiles( 1, *i ); - string dictId = Dictionary::makeDictionaryId( dictFiles ); - string indexFile = indicesDir + dictId; - - if ( Dictionary::needToRebuildIndex( dictFiles, indexFile ) || - indexIsOldOrBad( indexFile ) ) - { - gdDebug( "Zips: Building the index for dictionary: %s\n", i->c_str() ); - - File::Class idx( indexFile, "wb" ); - IdxHeader idxHeader; - - memset( &idxHeader, 0, sizeof( idxHeader ) ); - - // We write a dummy header first. At the end of the process the header - // will be rewritten with the right values. - - idx.write( idxHeader ); - - IndexedWords names, zipFileNames; - ChunkedStorage::Writer chunks( idx ); - quint32 namesCount; - - IndexedZip zipFile; - if( zipFile.openZipFile( QDir::fromNativeSeparators( - FsEncoding::decode( i->c_str() ) ) ) ) - zipFile.indexFile( zipFileNames, &namesCount ); - - if( !zipFileNames.empty() ) - { - for( IndexedWords::iterator i = zipFileNames.begin(); i != zipFileNames.end(); ++i ) - { - vector< WordArticleLink > links = i->second; - for( unsigned x = 0; x < links.size(); x++ ) - { - // Save original name - - uint32_t offset = chunks.startNewBlock(); - uint16_t sz = links[ x ].word.size(); - chunks.addToBlock( &sz, sizeof(uint16_t) ); - chunks.addToBlock( links[ x ].word.c_str(), sz ); - chunks.addToBlock( &links[ x ].articleOffset, sizeof( uint32_t ) ); - - // Remove extension for sound files (like in sound dirs) - - wstring word = stripExtension( links[ x ].word ); - if( !word.empty() ) - names.addSingleWord( word, offset ); - } - } - - // Finish with the chunks - - idxHeader.chunksOffset = chunks.finish(); - - // Build the resulting zip file index - - IndexInfo idxInfo = BtreeIndexing::buildIndex( names, idx ); - - // That concludes it. Update the header. - - idxHeader.indexBtreeMaxElements = idxInfo.btreeMaxElements; - idxHeader.indexRootOffset = idxInfo.rootOffset; - - idxHeader.signature = Signature; - idxHeader.formatVersion = CurrentFormatVersion; - - idxHeader.soundsCount = namesCount; - - idx.rewind(); - - idx.write( &idxHeader, sizeof( idxHeader ) ); - } - else - { - idx.close(); - QFile::remove( QDir::fromNativeSeparators( - FsEncoding::decode( indexFile.c_str() ) ) ); - throw exInvalidData(); - } - } - - dictionaries.push_back( new ZipSoundsDictionary( dictId, - indexFile, - dictFiles ) ); - } - catch( std::exception & e ) - { - gdWarning( "Zipped sounds pack reading failed: %s, error: %s\n", - i->c_str(), e.what() ); - } - } - - return dictionaries; -} - -} diff --git a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipsounds.hh b/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipsounds.hh deleted file mode 100644 index e407ca7b1e..0000000000 --- a/office/misc/goldendict/files/goldendict-1.5.0-RC2/zipsounds.hh +++ /dev/null @@ -1,22 +0,0 @@ -/* This file is part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ - -#ifndef ZIPSOUNDS_HH -#define ZIPSOUNDS_HH - -#include "dictionary.hh" - -/// Support for compresses audio packs (.zips). -namespace ZipSounds { - -using std::vector; -using std::string; - -vector< sptr< Dictionary::Class > > makeDictionaries( - vector< string > const & fileNames, - string const & indicesDir, - Dictionary::Initializing & ) - throw( std::exception ); - -} - -#endif // ZIPSOUNDS_HH